""""""""""""""""""""""""""""""""ðÿðÿÿðÿÿÿ3 43C33C333330333333C33C33C33333033333 DDC3333333303333333CDD333333333033333 43C33C33C33C33333333C33 43 43 43C3333333 DDC33C33C33C33333333C33 43 43 43C3333333CD433333333333333333CDD3333333333333330C"B3D4333333333303333333333333D4C"B3033CD333333333333333333333C33$33$33$33C33330C"B3D4333333333333333333333333333333333™ ”™I™™ I™™ ™™™ ™™™ ™™™ I™™ I™™ I™™ ™™™ ™™™ ™™ DD I™™ ™™™ ™™™ ™™ ™™ ™™™ IDD ™™™ ™™™ ™™™ ™™ ™™ ™ ”™I™™ I™™ I™™ I™™ ™™™ ™™™ I™™ ”™”™”™I™™ ™™™ ™™ DD I™™ I™™ I™™ I™™ ™™™ ™™™ I™™ ”™ ”™ ”™ I™™ ™™™ ™™ ID”™™™ ™™™ ™™™ ™™™™™ ™™™ IDD ™™™ ™™™ ™™™ ™™™™™ ™ I™I ™D” ™™™ ™™™ ™™™ ™ ™™™ ™™™ ™™™ ™™™ ™D” I™I ™ ™™ ID™™™™ ™™™ ™™™ ™™™ ™™™ ™™™ ™™I ™™”™™”™™”™™I ™™™ ™ I™I ™D” ™™™ ™™™ ™™™ ™™™ ™™™ ™™™ ™™™ ™™™ ™™™ ™™™ ™™™ îàäîNîîNîîîîîàîîîîîîNîîNîîNîîîîîàîîîîîàDDNîîîîîîîîàîîîîîîîNDDîîîîîîîîîàîîîîîàäîNîîNîîNîîNîîîîîîîîNîîàäîàäîàäîNîîîîîîîàDDNîîNîîNîîNîîîîîîîîNîîàäîàäîàäîNîîîîîîîNDäîîîîîîîîîîîîîîîîîNDDîîîîîîîîîîîîîîîàNîNîDäîîîîîîîîîîàîîîîîîîîîîîîîDäNîNîàîîNDîîîîîîîîîîîîîîîîîîîîîNîîäîîäîîäîîNîîîîàNîNîDäîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîf`dfFffFfffff`ffffffFffFffFfffff`fffff`DDFffffffff`fffffffFDDfffffffff`fffff`dfFffFffFffFffffffffFff`df`df`dfFfffffff`DDFffFffFffFffffffffFff`df`df`dfFfffffffFDdfffffffffffffffffFDDfffffffffffffff`FfFfDdffffffffff`fffffffffffffDdFfFf`ffFDfffffffffffffffffffffFffdffdffdffFffff`FfFfDdfffffffffffffffffffffffffffffffffAAAAADDAADDAAAAAADDAAAAAAADADDAADDAAADAAAADÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÀÌÌÌÌÌÀÌÌ ÀÌÌ ÀÌ ÌÌÌÌ ÌÌ ÌÌ ÌÌ ÌÌÌÌÌÌÌÌÌ ÌÌÌÌ ÌÌÌÌÌÌÌÌÌÌÌÌÌÀÌÀÌÀÌÌÌÌÌÌÌÌ ÌÌÌ ÌÌÌ Ì Ì ÌÌÀÌÌÀÌÌÌÌÌÌ ÌÀÌ ÌÌ ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ ÌÌÌÌÌÌÌÌÌÌÌ ÀÌ ÀÌÌÀÀÀÀÀÌÌÌ ÀÌÌ ÀÌÌ ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÀÌÌÌÌÌÌÌÌÌÀÌÌ ÀÌÌ ÀÌÌ ÀÌÌ ÀÌÌ ÌÌÌÌÌÌÌÌÌÌÌÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÀÌÌ ÌÌÌ ÀÌÀÌÌÌÌÌÌÌÌÌÌÌÀÌÌÌÌÌÀ À À À À ÌÌÌÌÌÌÌÌÌÌÌÀÌ ÀÌ ÀÌ ÀÌ ÀÌ ÌÌÌÌÌÌÌÌÌÀÌ ÀÌ ÀÌ ÀÌ ÀÌ ÌÌÌÌÌÌÌÌÌÌÌÌ Ì Ì Ì Ì ÌÌÌÌÀÌÀÌÀÌÀÌÀÌÌÌÌÌÌÌÌÌÌÌÌÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÀÌÌ ÀÌ ÀÌ ÌÌÌÌÌÌÌÌÌÌÀÌÌÌÌÌÌÌÌÌÌ ÀÌÌÀÌ ÀÌ ÀÌ ÀÌ ÌÌ ÀÌÌÀÌÌÌÌ ÌÌÌÌÌÌÌÌÀÌÌÌÌÌÌÀÌÀÌÀÌÀÌÌ ÀÌÌ ÀÌÌ ÀÌÌ ÀÌÌ ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÀÌÌ ÀÌ ÀÌ ÀÌ ÌÌÌÌÌÌÀÌÌÀÌ ÀÌ ÀÌ ÀÌ ÀÌ ÀÌ ÀÌ ÌÌ ÌÌÌÌÌÌÌÌÀÌÌÀÌÌÀÌÌÀÌÌÌÌÌÌÌ ÌÌ ÌÌ ÌÌÌÌÀÌÀÌÀÌÀÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÀÌ ÀÌ ÀÌ ÀÌÌÌÌÌÌ ÌÌÌÌÌÌÌÌÀÌÌÀÌ ÀÌ ÀÌ ÀÌ ÀÌ ÀÌ ÀÌ ÌÌ ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÀÌÌÀÌ ÀÌ ÀÌ ÀÌ ÀÌ ÀÌ ÀÌ ÌÌ ÌÌÌÌÌÌÀÌÌÌÌÌÌÌÌÌÌÌÀÌÌÀÌÌÌÌÌÌÀÌÌ ÀÌÌ ÀÌÌ ÀÌÌ ÀÌÌ ÌÌÌÌÌ ÀÌ ÌÌ ÌÌÌÌÌÌÌÌÀÌÌÀÌ ÌÌ ÀÌÌÀÌÌÀÌÌÀÌÌÌÌÌÌÌÌÌÌÌÌÌ ÌÌÌ Ì Ì Ì Ì ÌÌ ÀÌÌ ÀÌÌÀÌÌÀÌÌÀÌÌÌÌÌÌÌ ÀÌÌÌÌÌÌÌÌÌÌÌÀÌÌÀÌ ÀÌÌÌÌÌÌÌÌÌÌÌÀÌÌÀÌ ÀÌ ÌÌ ÌÌÌÌÌÌÌÌÀÌÌÀÌ ÌÌÀÌÌÀÌ ÀÌ ÀÌ ÀÌ ÌÌ ÀÌÌÀÀÌ ÌÌ ÀÌÌÀÌÌÀÌÌÀÌÌÀÌÌÌÌ ÌÌÌÌÌÀÌ ÀÌ ÀÌ ÀÌ ÀÌ ÌÌÌÀÌÌÀÌÌÀÌÌÌÌÌÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÀÌÌ ÀÌÌÀÌÌÀÌÌÀÌÌÀÌ ÀÌ ÀÌ ÌÌ ÌÌÌÌÌÌÌÌÀÀÀÀÀÌÌ ÌÌ ÌÌ ÌÌ ÌÌÌÌÌÌÌÌÀÌ ÀÌ ÀÌ ÌÌ ÌÌÌÌÌÌÌÌÌÌÌÌÀÌÌÀÌ ÀÌ ÀÌ ÌÌ ÌÌÌÌÌÌÌÌÀÌÌÀÌ ÀÌ ÀÌ ÌÌ ÌÌÌÌÌÌÌÌÀÀÀÀÀÌÌÀÌÌÀÌÌÀÌÌÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÀÌÌÀÌÌÀÌÌÀÌÌÀÌÌÌÌÌÌÌÌÀÌ ÀÌ ÀÌ ÀÌ ÀÌÀÌÌ ÀÌÌÀÌÌÀÌÌÀÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÀÌÌ ÀÌÌ ÀÌÌ ÀÌÌ ÀÌÌÌÌ Ì ÌÌÌÌ Ì Ì Ì Ì ÌÌÀÌÌÌÀÌÌÌ ÌÌÌÌÌÀÌÀÌÀÌÌÌÌ Ì Ì Ì Ì ÌÌÀÌÌÀÌ ÀÌ ÀÌ ÀÌÌÌÀÌÌÌÀÌÌÌÀÌÌÀÌÌÀÌ ÀÌ ÌÌ ÌÌ ÌÌÌ ÌÀÌÌÀÌ ÀÌ ÀÌ ÀÌ ÀÌÌÌÀÌÌÌÀÌÌÌÌÌÌÀÌÌ ÀÌÌ ÀÌÌ ÀÌÌ ÀÌÌÌÌÌÌÌ ÌÌÌÌ Ì Ì Ì Ì ÌÌÌÌÌÌÌÌÌÌ ÀÌÌÀÌÌÀÌÌÀÌÌÌÌÌÌÌÌÌÌÌ ÌÌ ÌÌÌ ÌÌ ÌÌ ÌÌ ÌÌÀÌÌÀÌ ÀÌ ÌÌÌÌÌÌÌÌÌÌÀÌÌÀÌ ÀÌ ÌÌ ÀÌÌÌÌÌÌÌÌ ÀÌÌÌ ÌÌÌ ÀÌ ÀÌ ÀÌÌÌÀÌÌÌÌÌ ÌÌÌÌÌÌÌÀÌ ÀÌ ÀÌ ÀÌ ÌÌ ÀÌÌÀÌÌÀÌÌÀÌÌÀÌÌÀÌÌÀÌÌÀÌÌÌÌ ÌÌ ÌÌ ÌÌ ÀÌ ÀÌ ÀÌ ÀÌ ÌÌÌÌÌÌÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÀÌÌÀÌÌÀÌÌÀÌÌÀÌÌÀÌÌÀÌÌÀÌÌÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÀÌÌÀÌ ÀÌ ÀÌ ÌÀÌÌÀÌÌÀÌÌÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÀÌÌÀÌ ÀÌ ÀÌ ÀÌ ÌÌÌÌÌÌÀÌÌÀÌ ÀÌ ÀÌ ÀÌ ÀÌ ÀÌ ÀÌ ÌÌ ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ ÌÌÌÌÌÌÌÌÀÌÌÌÌÌÌÌÌÀÌÌÀÌ ÀÌ ÀÌ ÀÌ ÌÌ ÀÀÌ ÀÌ ÌÌ ÌÌÌÌÌÌÌÌÌÌÀÀÌÌÌÀÌÌÌÌÌ ÀÌÌÀÌÌÀÌÌÀÌÌÀÌÌÌÌÌÀÌÌÀÌÌÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÀÌÌÌÌÌÌÌÌÌÌ ÀÌÌÀÌÌÀÌÌÀÌÌÀÌÌÌÌÌÌÀÌÌÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÀÌÌÀÌÌ ÌÌ ÀÌÌÀÌÌÀÌÌÀÌÌÀÌÌÌÌ ÌÌÌÌÌÀÌ ÀÌ ÀÌ ÀÌ ÀÌ ÌÌÌÌÌÀÌÌÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÀÌÌÀÌ ÌÌ ÀÌÌÀÌ ÀÌ ÀÌ ÀÌ ÌÌ ÌÌÀÌ ÌÌ ÌÌÌÌÌÌÌÌÀÌÌÀÌ ÀÌÌÀÌ ÀÌ ÀÌ ÀÌ ÌÌ ÌÌÌÌÌÌ ÌÌÌÌÌÌÌÌÀÌÌÀÌ ÀÌ ÌÌ ÌÌÌÌÌÌÌÌÀÌÌÀÌ ÀÌ ÀÌÌÀÌ ÀÌ ÀÌ ÀÌ ÌÌ ÌÌÌ̈™™ˆ™™ˆ™™ˆ™™ˆ™™ˆ™™ˆ™™ˆ™™ªªªªªªªª™™™™™™™™™™™™™™™™™™ª™™ª™™ªª™™ªª™™™™™™™™™™™™™™™™™™ª™™ª™™ª™™ª™™ª™™ª™™ª™™ª™™™™™™™™™™™™™™™™™™ˆˆ™™Šˆ™™ª™™ªÀ0 Ì0 ˆ™™ˆ™™ªŠ™™ªª™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ˆˆˆˆˆˆˆˆ à à™™™™™™™™™™™™™™™™ˆˆ™™ˆˆ™™ˆ™™ˆ™™™ª™ˆˆ¨™ˆŠˆ™ˆª™™ˆª™™ˆªª™ˆªª™ˆ™ª™ˆ©ˆˆ˜©Šˆ˜¨š‰ˆˆš‰ˆ™™™™™™™™ˆˆˆˆˆˆˆˆˆ™ˆ™ˆ™ˆ™ˆ™ˆˆˆ™ˆˆˆ™™™ˆ™™™ˆˆˆˆˆˆˆˆˆ™ˆ™ˆ™ˆˆˆ™ˆˆˆ™™ˆˆ™™ˆˆ™ªŠˆ™¨ªˆ™ˆ™ˆˆˆˆˆˆˆˆˆ™™™ˆ™™™ˆ™ªªˆ™¨ªˆ™ˆ™ˆ™ˆ™ ÀÌ À Ì À À ÀÀ Ì™ª™ˆ™ª™ˆˆ¨™ˆˆˆ™ˆ™™™ˆ™™™ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ™™™™™™™™ªš‰ªªš‰¨©ªŠ˜©ªª˜ à àˆˆˆˆˆˆˆˆ™™™ˆ™™™ˆªª™ˆªª™ˆ™ª™ˆ™ª™ˆabcfghijklmnoÀÁÂÃÄÅeöúúúúúúúúúúúúúúúúúúúúúúúúúúúúüDöúúúúúúúúüpqrsvwxyz{|}~ÐÑÒÓÔÕuõæêêêêêêêêêêêêêêêêêêêêêêêêêêìñ%5õæêêêêêêìñ€‚†‡ˆ‰Š‹ŒŽÆÇÈÉÊËõåáñ*:H5B:*%õåáñ‘’•–—˜™š›œžŸÖרÙÚÛõåáñAõåáñ ¡¢¥¦§¨©ª«¬­®¯ÌÍÎσ„õåáñ,6F<&Lõåáñ°±²³µ¶·¸¹º»¼½¾¿ÜÝÞß“”õåáñ3IC)#9õåáñõåáñD6Hõåáñõåáñ*<%3*%õåáñõåáñAB9õåáñõåáñ,Dõåáñõåáñ&:H5B:)5õåáñõåáñA#õåáñõåáñ4$õåáñõåáñ(CF8Lõåáñõåáñ2I!"1÷øçëõåáñõãââââââââââââââââââââââââââéñD4÷øçûõãââââââéñóòòòòòòòòòòòòòòòòòòòòòòòòòòòòù.8B-2+'H÷øçûèóòòòòòòòòùA1D,6)B<&93HA#A,h!hAoamah!hAmaoahahaddm!mal!lAladh!hAh!hAm!mAham!mAm!mAoah!hAfhfdhAm!mAmamAm!mAfdlal!lAoaoadmahahladoalah!lamam!mahoamAoaoamafhmam!mAmao!dAfAffAikfdmahoadlal!lAh!hAh!hAm!mAm!mAmaf!mafmhim!mAm!mAmafmAoaladfhdhahafAf!if!fAf!fAhdm!mAm!mal!lAoamaoaoamamam!mAm!mAoah!mafhfh!oamam!dhfmAoalamaoahm!mAham!mAm!dAhladh!hAdlahamamadm!mal!lAl!dh!hAoamamamah!hAoahAoalamahAm!mAhamAm!mAoadlaoalAfh!hAdm!mAhao!mAf!maimkim!mAm!mamafmAl!lAoamah!hAh!hAm!mAmam!mAm!mAfAfAf!fAf!fAhfAhdhm!dlal!lAoahmahamaffif!fdmAm!mAoamaoaladfoadm!mAhadamAl!hAl!hAl!hAl!hAmAm!hAm!hAl!hAl!hAl!hAl!hAhadafalAm!hAm!hAmAlAm!hAm!hAm!hAm!hAlAoAdadadal!hAl!hAl!hAl!hAm!hAdam!hAm!hAhahamAfalAmAm!hAhalam!hAm!hAm!hAm!hAlAoAdahamal!hAl!hAl!hAl!hAoaladh!hfdhAm!mAhamAm!mAoadoalalAfh!hAmahamah!hAh!hAoahAmaoamamadhm!mAl!lAoamaoaoadmahahoamaflah!laham!madfmalal!dh!hAhm!mAm!mAm!mAm!mAo!dAf!fAf!fAmhfAm!mAm!mamaoamaoal!lAh!hAhdm!mAm!mAm!mAfAmaiikiddhm!mAlalamaoaoam!mAmamafff!fAf!fhmAm!mAfdl!lAoadfh!hAmahahahoamah!lamaoam!mAm!mAhfmAoaoadh!hAoam!mAmam!mAo!dAoaladfhfh!hAmahadm!mAoadlalalAfhdm!mAhah!hAh!hAoahAdlahamamadm!mal!lAl!maoah!hAmahamam!mAfAmaif!fAhfAm!mAm!mAhoadl!lAlalAfhm!mAmam!mAm!mAf!fAf!fikfdmamam!mAoal!doaoamahahaffAmf!ihdm!mAfmalaoamah!hAh!hAdm!mAmahoamafhfmaoamam!mam!mAfdlaoadfoadm!mAmaoaladh!hAdhAm!mAmamAdoamAoal!maoahm!mAhahah!hAh!hAoalah!lahahadhm!mal!lAlalAh!hAh!hAmamam!mAm!dAo!mAfAfAf!fmkidmAm!mAfmAl!lAlamah!hAoam!mAmam!mAm!mAf!ffAf!fAhfAm!mAm!mahoadlaoadoah!hAmahahamaiif!fhdmam!maoal!lAfhdm!mAmahamAl!hAl!hAl!hAl!hAm!hAm!hAm!hAm!hAl!hAl!hAl!hAl!hAdam!hAm!hAlAlAmAmAlAm!hAm!hAdafaoAdam!hAm!hAdal!hAl!hAoAm!hAdam!hAm!hAlaham!hAm!hAfal!hAl!hAmAhamahadamAlAlAdam!hAhal!hAl!hAl!hAl!hAh!hAladfhAdhAm!mAhadm!mAm!doaoadoah!hAmam!mAhahh!hAh!lamaoamamamahoamAl!lAl!lAh!hAoadham!mAm!mAoaoamaoahfh!laham!mAdfmalalamafhm!mAmamao!dAf!maimhidmahoamaoalalAfhdm!mAm!mAm!mAfAffikfm!mAm!mAmam!mAl!lAoamah!hAoam!mAmamafAf!fAf!fAf!fAhdm!mAfdlal!doah!hAmahaha10…qH¢,LãÒD•ua™¶\ç}`(#Yš'šêÊ­ûp,ÏtmöÀ?ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ˆˆ™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ˆˆ™ªªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªš‰ªªª™ˆˆ™¨ªªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªš‰¨ªª™ˆˆ™ˆ™©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜©ªŠ˜™ª™ˆˆ™ˆ™©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜©ªª˜™ª™ˆˆ™ˆ™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ª™ˆˆ™ˆˆ™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ˆ¨™ˆˆ™ˆˆ™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™Šˆ™ˆˆ™™ˆ™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ª™™ˆˆ™™ˆ™™ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ™™ª™™ˆˆ™ªŠ™™Šˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ™™ªª™ˆˆ™¨ª™™ªNîîNî™ªª™ˆˆ™ˆ™™™ªîîîîî™™ª™ˆˆ™ˆ™™™ªÌÌÌÌÌ ÌÌÌÌÌÌÌÀ̈™™™ª™ˆˆ™ˆˆ™™ªÌÌÌÌÌÌfffîîîÌÌÌÌÌÌ ÌÌ ˆ™™ˆ¨™ˆˆ™ˆˆ™™ªÌÌÌÌÌÌ FffNîîÌÌÌÌÌÌ Ì̈™™Šˆ™ˆˆ™™ˆ™™ªÌÌÌÌÌÌ `dfNîîÌÌÌÌÌÌ Ì ˆ™™ª™™ˆˆ™™ˆ™™ªÀÌÌÌÌ `dfNîîÌÌ ÀÌ ˆ™™ª™™ˆˆ™ªŠ™™ªÌÌÌÀÌÌ `dfîîîÀÌÌ ÌÌ ˆ™™ªª™ˆˆ™¨ª™™ªÌÌ ÀÌÌÌÌÌÌlféîîÀÌÌÀÌÌÌÌÌÌÌÌÌÌÌÌÌ ÌÌÌÀÌ ÌÌ ÀÌÌÀÌ ÀÌÌÌÌÌÌ̈™™ªª™ˆˆ™ˆ™™™ªÌÌ ÀÌÌÌÌÌÌÌf™îÀÌÌÀÌÌÌÌ ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ ÀÌÌÌÌÌÌÌÌ ÀÌ ÀÌÌÌÌ ÌÌÌÌ ˆ™™™ª™ˆˆ™ˆ™™™ªÌÌ ÀÌÌÌÌÌÌÌÀÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ ÀÌÌÌÌÌÀÌÌÌÌÌÌÌÌÌÀÌ ÀÌÌÌÌÌÀÌÌÌÌ̈™™™ª™ˆˆ™ˆˆ™™ªÌÌ ÀÌÌÌÌÌÌÌ3ÀÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ ÀÌÌÌÌÌÀÌÌÌÌÌÌÌÌÌÀÌ ÀÌÌÌÌÌÀÌÌÌÌ̈™™ˆ¨™ˆˆ™ˆˆ™™ªÀÌÌ ÌÌÌÀÌÌÌÌ3ÌÌÌÀÌÌÀÌÌÀÌÌÀÌÌÌÌ ÌÌ ÀÌÌÌÌ ÌÌ ÀÌÌÌÌ ÌÌ ÀÌÌÌÌ ÀÌ̈™™Šˆ™ˆˆ™™ˆ™™ªÀÌÌÌÌ ÀÌ ÌÌ3ÌÌ ÀÌ ÀÌ ÀÌ ÀÌ ÌÌÌÌÀÌ ÌÌÌÌÀÌ ÌÌÌÌÀÌ ÌÌÀÌ ˆ™™ª™™ˆˆ™™ˆ™™ªÀÌÌÌÌ ÀÌ ÌÌ3ÌÌ ÀÌ ÀÌ ÀÌ ÀÌ ÌÌÌÌÀÌ ÌÌÌÌÀÌ ÌÌÌÌÀÌ ÌÌÀÌ ˆ™™ª™™ˆˆ™ªŠ™™ªÀÌÌÌÌ ÀÌ ÌÌ3ÌÌ ÀÌ ÀÌ ÀÌ ÀÌ ÌÌÌÌÀÌ ÌÌÌÌÀÌ ÌÌÌÌÀÌ ÌÌÀÌ ˆ™™ªª™ˆˆ™¨ª™™ªÀÌÌÌÌ ÀÌ ÌÌ3ÌÌ ÀÌ ÀÌ ÀÌ ÀÌ ÌÌÌÌÀÌ ÌÌÌÌÀÌ ÌÌÌÌÀÌ ÌÌÀÌ ˆ™™ªª™ˆˆ™ˆ™™™ªÌÌÌÀÌÌ ÌÌ ÀÌÌÀÌÌ ÌÌ ÌÌ ÌÌ ÌÌ ÀÌÌÀÌÌÌÌ ÀÌÌÀÌÌÌÌ ÀÌÌÀÌÌÌÌ ÀÌÌÌÌ ˆ™™™ª™ˆˆ™ˆ™™™ªÌÌ ÀÌÌÌÌÀÌÌÌÌÌÌÌÌÌÌÀÌ ÌÌÀÌ ÀÌ ÌÌÀÌ ÀÌ ÌÌÀÌ Ì̈™™™ª™ˆˆ™ˆˆ™™ªÌÌ ÀÌÌÌÌÀÌÌÌÌÌÌÌÌÌÌÀÌ ÌÌÀÌ ÀÌ ÌÌÀÌ ÀÌ ÌÌÀÌ Ì̈™™ˆ¨™ˆˆ™ˆˆ™™ªÌÌ ÀÌÌÌÌÀÌÌÌÌÌÌÌÌÌÌÀÌ ÌÌÀÌ ÀÌ ÌÌÀÌ ÀÌ ÌÌÀÌ Ì̈™™Šˆ™ˆˆ™™ˆ™™ªÌÌ ÀÌÌÌÌÀÌÌÌÌÌÌÌÌÌÌÀÌ ÌÌÀÌ ÀÌ ÌÌÀÌ ÀÌ ÌÌÀÌ Ì̈™™ª™™ˆˆ™™ˆ™™ªÀÌÌ ÌÌÌÀÌÌÌÌÌÀÌÌÌÌÌÌÀÌÌÀÌÌÌÌ ÀÌÌÌÌ ÌÌ ÀÌÌÌÌ ÌÌ ÀÌÌÌÌ ÀÌ̈™™ª™™ˆˆ™ªŠ™™ªÀÌÌÌÌ ÀÌ ÌÌ ÀÌÌÌÌÌ ÀÌ ÀÌ ÌÌÀÌ ÌÌÌÌÀÌ ÌÌÌÌÀÌ ÌÌÀÌ ˆ™™ªª™ˆˆ™¨ª™™ªÀÌÌÌÌ ÀÌ ÌÌ ÀÌÌÌÌÌ ÀÌ ÀÌ ÌÌÀÌ ÌÌÌÌÀÌ ÌÌÌÌÀÌ ÌÌÀÌ ˆ™™ªª™ˆˆ™ˆ™™™ªÀÌÌÌÌ ÀÌ ÌÌ ÀÌÌÌÌÌ ÀÌ ÀÌ ÌÌÀÌ ÌÌÌÌÀÌ ÌÌÌÌÀÌ ÌÌÀÌ ˆ™™™ª™ˆˆ™ˆ™™™ªÀÌÌÌÌ ÀÌ ÌÌ ÀÌ ÀÌ ÀÌ ÌÌÀÌ ÌÌÌÌÀÌ ÌÌÌÌÀÌ ÌÌÀÌ ˆ™™™ª™ˆˆ™ˆˆ™™ªÌÌÌÀÌÌ ÌÌ ÀÌÌ ÌÌ ÌÌ ÌÌ ÀÌÌÌÌ ÀÌÌÀÌÌÌÌ ÀÌÌÀÌÌÌÌ ÀÌÌÌÌ ˆ™™ˆ¨™ˆˆ™ˆˆ™™ªÌÌ ÀÌÌÌÌÀÌÌÌÌÌÌÌÌÀÌ ÌÌÀÌ ÀÌ ÌÌÀÌ ÀÌ ÌÌÀÌ Ì̈™™Šˆ™ˆˆ™™ˆ™™ªÌÌ ÀÌÌÌÌÀÌÌÌÌÌÌÌÌÀÌ ÌÌÀÌ ÀÌ ÌÌÀÌ ÀÌ ÌÌÀÌ Ì̈™™ª™™ˆˆ™™ˆ™™ªÌÌ ÀÌÌÌÌÀÌÌÌÌÌÌÌÌÀÌ ÌÌÀÌ ÀÌ ÌÌÀÌ ÀÌ ÌÌÀÌ Ì̈™™ª™™ˆˆ™ªŠ™™ªÌÌ ÀÌÌÌÌÀÌÌÌÌÌÌÌÌÀÌ ÌÌÀÌ ÀÌ ÌÌÀÌ ÀÌ ÌÌÀÌ Ì̈™™ªª™ˆˆ™¨ª™™ªÀÌÌ ÌÌÌÀÌÌÌÌÌÀÌÌÀÌÌÀÌÌÌÌ ÀÌÌÌÌ ÌÌ ÀÌÌÌÌ ÌÌ ÀÌÌÌÌ ÀÌ̈™™ªª™ˆˆ™ˆ™™™ªÀÌÌÌÌ ÀÌ ÌÌ ÀÌ ÀÌ ÀÌ ÌÌÀÌ ÌÌÌÌÀÌ ÌÌÌÌÀÌ ÌÌÀÌ ˆ™™™ª™ˆˆ™ˆ™™™ªÀÌÌÌÌ ÀÌ ÌÌ ÀÌ ÀÌ ÀÌ ÌÌÀÌ ÌÌÌÌÀÌ ÌÌÌÌÀÌ ÌÌÀÌ ˆ™™™ª™ˆˆ™ˆˆ™™ªÀÌÌÌÌ ÀÌ ÌÌ ÀÌ ÀÌ ÀÌ ÌÌÀÌ ÌÌ fÌÌÀÌ ÌÌÌÌÀÌ ÌÌÀÌ ˆ™™ˆ¨™ˆˆ™ˆˆ™™ªÀÌÌÌÌ ÀÌ ÌÌ ÀÌ ÀÌ ÀÌ ÌÌÀÌ ÌÌ FÌÌÀÌ ÌÌÌÌÀÌ ÌÌÀÌ ˆ™™Šˆ™ˆˆ™™ˆ™™ªÌÌÌÀÌÌ ÌÌ ÀÌÌ ÌÌ ÌÌ ÌÌ ÀÌÌÌÌ ÉÌÌ ÆÌÌÌÌ ÀÌÌÀÌÌÌÌ ÀÌÌÌÌ ˆ™™ª™™ˆˆ™™ˆ™™ªÌÌ ÀÌÌÌÌÀÌÌÌÌÌÌÌÌÀÌ ÌÌÉÌœ ÆÌlÌÌÀÌ ÀÌ ÌÌÀÌ Ì̈™™ª™™ˆˆ™ªŠ™™ªÌÌ ÀÌÌÌÌÀÌÌÌÌÌÌÌÌÌÌÀÌ ÌÌÉÌœ ÆÌlÌÌÀÌ ÀÌ ÌÌÀÌ Ì̈™™ªª™ˆˆ™¨ª™™ªÌÌ ÀÌÌÌÌÀÌÌÌÌÌÌÌÌÌÌÀÌ ÌÌÉÌœ ÆÌlÌÌÀÌ ÀÌ ÌÌÀÌ Ì̈™™ªª™ˆˆ™ˆ™™™ªÌÌ ÀÌÌÌÌÀÌÌÌÌÀÌÌÌÌÀÌÌÌÌÀÌ ÌÌÉÌœ ÆÌ ÌÌÀÌ ÀÌ ÌÌÀÌ Ì̈™™™ª™ˆˆ™ˆ™™™ªÀÌÌ ÌÌÌÀÌÌÌÌÌÀÌÌÀÌÌÀÌÌÌÌÌÀÌÌÌÌ ÀÌÌÌÌ ÌÌ ÀÌÌÌÌ ÌÌ ÀÌÌÌÌ ÀÌ̈™™™ª™ˆˆ™ˆˆ™™ªÀÌÌÌÌ ÀÌ ÌÌ ÀÌ ÀÌ ÀÌ ÌÌ ÀÌ ÌÌÀÌÌÌfÌÌÀÌ ÌÌÌÌÀÌ ÌÌÀÌ ˆ™™ˆ¨™ˆˆ™ˆˆ™™ªÀÌÌÌÌ ÀÌ ÌÌ ÀÌ ÀÌ ÀÌ ÌÌ ÀÌ ÌÌÀÌLÌÌDÌÌÀÌ ÌÌÌÌÀÌ ÌÌÀÌ ˆ™™Šˆ™ˆˆ™™ˆ™™ªÀÌÌÌÌ ÀÌ ÌÌ ÀÌ ÌÌ ÀÌ ÌÌ ÀÌ ÌÌÁÌÌÌfÌÌÀÌ ÌÌÌÌÀÌ ÌÌÀÌ ˆ™™ª™™ˆˆ™™ˆ™™ªÀÌÌÌÌÌ ÀÌ ÀÌÌÌ ÀÌÌÌÌÌ ÀÌ ÌÌ ÀÌ ÌÌÌÌÌÌfÌÌÀÌ ÌÌÌÌÀÌ ÌÌÌÌ ˆ™™ª™™ˆˆ™ªŠ™™ªÌÌÌÌÌÌÌÌ ÌÌÀÌÌ ÀÌÌÌÌÌÀÌÌÌÌÌÌÌ ÌÌÌÌÌÁÌÌfÆÌÌÌÌ ÀÌÌÀÌÌÌÌ ÌÌÌÌ̈™™ªª™ˆˆ™¨ª™™ªÌÌÌÌÌ ÌÌÀÌÌÀÌÌÀÌÌÌÌ ÀÌÌÌÌÌÌÌÌÌÌÌÁÌlfÀÌ ÌÌÀÌ ÀÌ ÌÌÌÌÌÌ ˆ™™ªª™ˆˆ™ˆ™™™ªÌÌÌÌ ÌÌÌ ÀÌÌÀÌÌÌÀÌÌÌÌ ÌÌÌÌ ÁÌlÀÌ ÌÌÀÌ ÀÌ ÌÌÌÌ ˆ™™™ª™ˆˆ™ˆ™™™ªˆ™™™ª™ˆˆ™ˆˆ™™ªˆ™™ˆ¨™ˆˆ™ˆˆ™™ªˆ™™Šˆ™ˆˆ™™ˆ™™ªˆ™™ª™™ˆˆ™™ˆ™™ªˆ™™ª™™ˆˆ™ªŠ™™ªˆ™™ªª™ˆˆ™¨ª™™ªˆ™™ªª™ˆˆ™ˆ™™™ªˆ™™™ª™ˆˆ™ˆ™™™ªˆ™™™ª™ˆˆ™ˆˆ™™ªf™™ 33ˆ™™ˆ¨™ˆˆ™ˆˆ™™ª`dfDD CD3ˆ™™Šˆ™ˆˆ™™ˆ™™ªFffI™™ 333ˆ™™ª™™ˆˆ™™ˆ™™ªFffI™™ 333ˆ™™ª™™ˆˆ™ªŠ™™ªFffI™™ 333ˆ™™ªª™ˆˆ™¨ª™™ªFffI™™ 333ˆ™™ªª™ˆˆ™ˆ™™™ªfff™™™ 333ˆ™™™ª™ˆˆ™ˆ™™™ªˆ™™™ª™ˆˆ™ˆˆ™™ªîîffîî333™™™ ˆ™™ˆ¨™ˆˆ™ˆˆ™™ªàDDA`DDNDäCDDIDD ˆ™™Šˆ™ˆˆ™™ˆ™™ªNîîFffîîî333™™™ ˆ™™ª™™ˆˆ™™ˆ™™ªîîîFffîîî333™™™ ˆ™™ª™™ˆˆ™ªŠ™™ªîîîFffîîî333™™™ ˆ™™ªª™ˆˆ™¨ª™™ªàîîAFffîîî033™™™ˆ™™ªª™ˆˆ™ˆ™™™ªîîfffîî33™™ ˆ™™™ª™ˆˆ™ˆ™™™ªˆ™™™ª™ˆˆ™ˆˆ™™ªîîîî™ˆ¨™ˆˆ™ˆˆ™™ªNîîàDDADDˆ™™Šˆ™ˆˆ™™ˆ™™ªNîîNî™ª™™ˆˆ™™ˆ™™ªNîîîî™ª™™ˆˆ™ªŠ™™ªîîîîî™ªª™ˆˆ™¨ª™™ªàîîàî™ªª™ˆˆ™ˆ™™™ªîî™™ª™ˆˆ™ˆ™™™ª"""""" " " """ "  """"  " """"" """  ˆ™™™ª™ˆˆ™ˆˆ™™ª""""""""   "   " """""  " ˆ™™ˆ¨™ˆˆ™ˆˆ™™ª"""" " """""" "  "   """""""""   ""ˆ™™Šˆ™ˆˆ™™ˆ™™ª""""""""""     "   """"""  "ˆ™™ª™™ˆˆ™™ˆ™™ª""""""""""  """ "  " """"" """  ˆ™™ª™™ˆˆ™ªŠ™™ªˆ™™ªª™ˆˆ™¨ª™™ªˆ™™ªª™ˆˆ™ˆ™™™ªˆ™™™ª™ˆˆ™ˆ™™™ªˆ™™™ª™ˆˆ™ˆˆ™™ªˆ™™ˆ¨™ˆˆ™ˆˆ™™ªˆ™™Šˆ™ˆˆ™™ˆ™™ªˆ™™ª™™ˆˆ™™ˆ™™ªˆ™™ª™™ˆˆ™ªŠ™™ªˆ™™ªª™ˆˆ™¨ª™™ªˆ™™ªª™ˆˆ™ˆ™™™ªˆ™™™ª™ˆˆ™ˆ™™™ª@@@D@DDD@DD@D@DDˆ™™™ª™ˆˆ™ˆˆ™™ªDD@D@DDDD@D@@DDD™™DFdDDDˆ™™ˆ¨™ˆˆ™ˆˆ™™ª@DDDD@DD@D@D@@@D@@@DDDDFDFD@ˆ™™Šˆ™ˆˆ™™ˆ™™ª@DDDD@DD@D@D@@@@@@DDII” FdFF@Dˆ™™ª™™ˆˆ™™ˆ™™ª@DD@D@@D@@DDDDD@@DD@DD@D™IDDfDdFDDDˆ™™ª™™ˆˆ™ªŠ™™ª@DD™™™ fffˆ™™ªª™ˆˆ™¨ª™™ª™™ fffˆ™™ªª™ˆˆ™ˆ™™™ª™™ fffˆ™™™ª™ˆˆ™ˆ™™™ªˆ™™™ª™ˆˆ™ˆˆ™™ªffîà30ff™™™ ffˆ™™ˆ¨™ˆˆ™ˆˆ™™ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªŠ™™Šˆ™ˆˆ™™ˆ™™ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª™™ª™™ˆˆ™™ˆ™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ª™™ˆˆ™ªŠ™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ªª™ˆˆ™¨ª™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ªª™ˆˆ™ˆ™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ª™ˆˆ™ˆ™©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜©ˆˆ˜™ª™ˆˆ™ˆ™©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜©Šˆ˜™ª™ˆˆ™ˆˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆ¨š‰ˆˆ¨™ˆˆ™ˆˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆš‰ˆˆˆ™ˆˆ™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ˆˆ™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ/C,m!hAhAhAhAm!hAhAhAhAhm!dAl!hAhAhAhAdAl!fAdAm!dAm!hAhAhAhAfl!fAdAdfAoam!hAoaiAdl!hAhAhAhAm!dAm!oam!iAiAiAoaddAdfAdAiAlahAmaiAflahAhAmahAfdmam!oafAl!fAhhAdfAm!fAmalahAhAlaoam!hAhAhAhAfl!fAm!hAhAhAhAm!dAm!mamamaaadAl!hAhAhAhAdAl!fAmajadAhdhaaaaahAhAdAm!aahafAoadlahAm!maoal!hAhAhAhAhmaaahAm!iAiAiAoamadAiaaaiAhafAl!fAmamahAdfafAm!dm!hAoaiAdflahAhAoaffAmadfAhaaaaam!dAm!dAfaaaaaiAmaladAjaaahAm!hAhAmdAohAfAm!hAhAfAmaaahAdAmhAhAfAl!hahaaahAhAm!hAhAlaoamm!lml!hAlhAhAdAl!aam!dAhm!hAhAiAiAl!hAhAhAhAmod¡hAhfiiAmd¡dAdhm!hAhAodAm!iAiAomffAl!fAdAm!mhAfAm!fAm!fAmiAm!hAihAdmammmdAolhAhAhhAfoahAm!hAhAhAhAm!hAhAhAml!hAhAfAdAhfAdAm!dAdAm!lhAfAhl!l!d¡dAm!fAhm!hAhAhAhm!iAiAiAmm!hAhAiAiAl!hAhAhAhAmod¡odAfiomffAl!fAdAm!mhAfAm!fAdmiAhifoahAm!hAhAhAhAm!hAoomhAm!iAiAiAmm!hAhAhAdmahmhAhAhfifAdAhfAdAm!dAdAd¡dAfAm!ol!m!miAm!hAihAdmam!hAhAhAhAl!hAhAhAhAhhAfoahAm!hAhAhAhAhdfAoadAhfAdAm!dAdAm!dAfl!fAl!m!laoamadl!hAhAhAhAm!hAhAmadm!iAiAiAoaddAdfAfAl!fAhhAhAfAm!dhAhAiAiAfladAm!oaffAmam!oadAiAmalahAhAlahAmadAdhAhAhAhAm!hAhAhAhAm!dAjadAhm!aahAhafAl!fAdAl!fAmam!mam!hAhAhAl!haaaaahAoamaaadAfoam!lahAiaiAfAflahAhAmaaahAm!iAiAiAoamamadoahafAl!aahAm!dAm!dAfddhAoamaiAl!hAhAhAmamahAdfafAm!fAdAm!aadhaaafAhoafaaaaaiAm!hAhAhAhAm!hAhAhAhAm!hAhAmdAl!hAlhAhAhadAl!aadAjaaaoammhAmohAfAmalamaaaladAm!lhAfAl!haaafAm!dAhm!hAhAiAiAhm!hAom!mhm!iAiiAmd¡dAm!fhAhAhAhAmhAhAhAfiAomfAl!fAl!fAdAd¡odAfAm!fAdmiAa.10qH¢,Lã<MTe]X¦m\ç}`(Ždiž¨š®lë¾p,Ïtmßx®ï<üoV-- title: Dr. Tetromino -- author: Wojciech Graj -- desc: A tile-matching block-dropping game -- site: https://github.com/wojciech-graj/dr-tetromino -- license: AGPL-3.0-or-later -- version: 0.0 -- script: lua --[[ Dr. Tetromino - A tile-matching block-dropping game Copyright (C) 2023 Wojciech Graj This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero 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 Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . --]] --- Conventions -- VARIABLE delta: time since last frame (ms) -- VARIABLE g_*: global variable -- VARIABLE c_*: constant variable -- VARIABLE p_*: co-ordinate relative to piece --- Map usage -- xE[210,225] yE[0,20]: piece patterns -- x=209 yE[21,135]: piece row allocation data -- xE[210,239] yE[21,135]: allocated pieces gc_directions = { {x = 0, y = -1}, -- Up {x = 1, y = 0}, -- Right {x = 0, y = 1}, -- Down {x = -1, y = 0}, -- Left } gc_colors = { 3, 9, 14, 6, 1 } ---------------------------------------- -- utility functions ------------------- ---------------------------------------- function set_state(state) g_state = state if state == 1 then g_colors = 5 g_drop_timer = 0 g_dropping_pieces = {} g_stats_pcs = nil g_stats_color = nil elseif state == 3 then g_active_opt_idx = 1 elseif state == 4 then for y = 0, 16 do for x = 0, 9 do mset(x, y, 0) end end g_min_seq_len = g_options[1]:get() g_colors = g_options[2]:get() g_level = g_options[3]:get() g_stats_pcs = Stats.new(7, 24, 112, 88, {12, 12, 12, 12, 12, 12, 12}) g_stats_color = Stats.new(g_colors, 45, 112, 88, gc_colors) g_dropping_pieces = {} g_piece_nxt = Piece.new_random() next_piece() g_drop_timer = 0 g_clears = 0 g_drop_timer_max = calc_drop_timer() g_score = 0 local mus = g_options[4]:get() if mus ~= "OFF" then if mus == "KOROBEINIKI" then sync(16, 0) elseif mus == "TROIKA" then sync(16, 1) end music(0, 0, 0, true, true) end g_inputs = { Input.new(1), Input.new(2), } elseif state == 5 then music() end end function draw_game() poke(0x03FF8, 8) -- Set border color map(0, 0, 10, 17, 80, 0) -- Draw board -- Draw left pane map(230, 0, 10, 17) map(225, 11 + g_colors, 5, 1, 24, 112) print("STATS", 24, 16, 15, true) g_stats_color:draw() g_stats_pcs:draw() -- Draw right pane local string_format = string.format map(230, 0, 10, 17, 160, 0) print("NEXT", 188, 16, 15, true) local piece_nxt = g_piece_nxt map(piece_nxt.rot_map_x + piece_nxt.variant * piece_nxt.size, piece_nxt.rot_map_y, piece_nxt.size, piece_nxt.size, 200 - piece_nxt.size * 4, 24 - g_piece_nxt_offset * 8, 0) print(string.format("LEVEL\n %02d", g_level), 180, 48, 15, true) print(string.format("CLEARS\n %03d", g_clears), 180, 72, 15, true) print(string.format("SCORE\n%07d", g_score), 180, 100, 15, true) end --- Remove lines of matching tiles and generate pieces for floating/connected tiles function resolve_tiles(tiles) local table_insert = table.insert local phys_tiles = {} local c_directions = gc_directions for _, tile in ipairs(tiles) do local tile_data = mget(tile.x, tile.y) if tile_data ~= 0 then -- If tile hasn't been resolved local color_idx = tile_data // 16 for i_dir = 1, 2 do -- Find sequence length local dir = c_directions[i_dir] local seq_start = 0 while (mget(tile.x + dir.x * (seq_start - 1), tile.y + dir.y * (seq_start - 1)) // 16 == color_idx) do seq_start = seq_start - 1 end local seq_end = 0 while (mget(tile.x + dir.x * (seq_end + 1), tile.y + dir.y * (seq_end + 1)) // 16 == color_idx) do seq_end = seq_end + 1 end local seq_len = seq_end - seq_start + 1 if seq_len >= g_min_seq_len then g_clears = g_clears + 1 if g_clears % 10 == 0 then g_level = g_level + 1 end g_score = g_score + (g_level + 1) * (seq_len * (seq_len + 1) // 2) * (g_colors - 2) g_drop_timer_max = calc_drop_timer() -- Clear tiles in sequence for i = seq_start, seq_end do local x = tile.x + dir.x * i local y = tile.y + dir.y * i local tile_data_seq = mget(x, y) -- Unlink tiles local p2bit = 1 for j = 1, 4 do if tile_data_seq & p2bit ~= 0 then local direction = c_directions[j] local nbor_x = x + direction.x local nbor_y = y + direction.y mset(nbor_x, nbor_y, mget(nbor_x, nbor_y) & ((~(2 ^ ((j + 1) % 4))) | 0xF0)) table_insert(phys_tiles, {x = nbor_x, y = nbor_y}) end p2bit = p2bit * 2 end table_insert(phys_tiles, {x = x, y = y - 1}) mset(x, y, 0) end end end end end if next(phys_tiles) == nil then return false end local math_max = math.max local math_min = math.min -- Transform potentially-floating tiles into pieces local phys_tile_idx = 1 while phys_tile_idx <= #phys_tiles do local tile = phys_tiles[phys_tile_idx] local tile_data = mget(tile.x, tile.y) if tile_data ~= 0 then -- If not already converted into piece -- Piece extents local l = 1e9 local r = -1e9 local t = 1e9 local b = -1e9 local linked = {{x = tile.x, y = tile.y}} -- Get all linked tiles constituting the piece local linked_idx = 1 while linked_idx <= #linked do local tile_linked = linked[linked_idx] local x = tile_linked.x local y = tile_linked.y tile_linked.data = mget(x, y) local p2bit = 1 for j = 1, 4 do if tile_linked.data & p2bit ~= 0 then local direction = c_directions[j] local nbor_x = x + direction.x local nbor_y = y + direction.y -- Check for duplicates in case of loop for i = 1, #linked do local t = linked[i] if t.y == nbor_y and t.x == nbor_x then goto continue end end table_insert(linked, {x = nbor_x, y = nbor_y}) ::continue:: end p2bit = p2bit * 2 end l = math_min(l, x) r = math_max(r, x) b = math_max(b, y) t = math_min(t, y) mset(x, y, 0) table_insert(phys_tiles, {x = x, y = y - 1}) linked_idx = linked_idx + 1 end pc = Piece.new(l, t, math_max(r - l, b - t) + 1, 0, 0) pc:calloc() for _, tile_linked in ipairs(linked) do mset(pc.rot_map_x + tile_linked.x - l, pc.rot_map_y + tile_linked.y - t, tile_linked.data) end table_insert(g_dropping_pieces, pc) end phys_tile_idx = phys_tile_idx + 1 end return true end --- Get new piece after placing current one function next_piece() local piece = g_piece_nxt g_piece = piece if not piece:validate() then piece:free() set_state(2) end local piece_nxt = Piece.new_random() g_piece_nxt = piece_nxt g_piece_nxt_offset = 0 for y = 0, piece_nxt.size - 1 do for x = 0, piece_nxt.size - 1 do if mget(x + piece_nxt.rot_map_x, y + piece_nxt.rot_map_y) ~= 0 then g_piece_nxt_offset = y return end end end end function calc_drop_timer() local level = g_level if level == 0 then return 800 elseif level == 1 then return 717 elseif level == 2 then return 633 elseif level == 3 then return 550 elseif level == 4 then return 467 elseif level == 5 then return 383 elseif level == 6 then return 300 elseif level == 7 then return 217 elseif level == 8 then return 133 elseif level == 9 then return 100 elseif level <= 12 then return 83 elseif level <= 15 then return 67 elseif level <= 18 then return 50 elseif level <= 28 then return 33 else return 17 end end ---------------------------------------- -- Piece ------------------------------- ---------------------------------------- Piece = { x = 0, y = 0, variant = 0, size = 0, rot_map_x = 0, rot_map_y = 0, } Piece.__index = Piece function Piece.new(x, y, size, rot_map_x, rot_map_y) local self = setmetatable({}, Piece) self.x = x self.y = y self.size = size self.rot_map_x = rot_map_x self.rot_map_y = rot_map_y return self end function Piece.new_from_template(piece) local self = setmetatable({}, Piece) self.x = piece.x self.y = piece.y self.size = piece.size local math_random = math.random local stats_color = g_stats_color local colors = g_colors local color_map = {} for i = 1, 4 do local color_idx = math_random(colors) color_map[i] = color_idx * 16 if stats_color ~= nil then stats_color:inc(color_idx) end end self:calloc() for y = 0, self.size - 1 do for x = 0, self.size * 4 - 1 do local tile_data = mget(piece.rot_map_x + x, piece.rot_map_y + y) if tile_data ~= 0 then mset(self.rot_map_x + x, self.rot_map_y + y, tile_data % 16 + color_map[tile_data // 16]) end end end return self end function Piece.new_random() local idx = math.random(#gc_pieces) local stats_pcs = g_stats_pcs if stats_pcs ~= nil then stats_pcs:inc(idx) end return Piece.new_from_template(gc_pieces[idx]) end --- Allocate map space function Piece:alloc() for i = 21, 135 do -- Find consecutive empty rows for j = i, i + self.size - 1 do if mget(209, j) ~= 0 then i = j goto continue end end -- Claim rows for j = i, i + self.size - 1 do mset(209, j, 1) end self.rot_map_x = 210 self.rot_map_y = i do return end ::continue:: end trace("Error: OOM") exit() end --- Allocate map space and clear it function Piece:calloc() self:alloc() for y = self.rot_map_y, self.rot_map_y + self.size - 1 do for x = self.rot_map_x, self.rot_map_x + self.size * 4 - 1 do mset(x, y, 0) end end end --- Free map space function Piece:free() for i = self.rot_map_y, self.rot_map_y + self.size - 1 do mset(209, i, 0) end end function Piece:draw() map(self.rot_map_x + self.variant * self.size, self.rot_map_y, self.size, self.size, 80 + self.x * 8, self.y * 8, 0) end function Piece:can_drop() self.y = self.y + 1 local can_drop = self:validate() self.y = self.y - 1 return can_drop end --- Drop a piece without checking validity of destination position function Piece:drop_unchecked() self.y = self.y + 1 end --- Place a piece and delete it -- @param new_tiles table: newly placed tiles are appended to this table function Piece:place(new_tiles) local table_insert = table.insert for p_y = 0, self.size - 1 do for p_x = 0, self.size - 1 do local tile_data = mget(self.rot_map_x + self.variant * self.size + p_x, self.rot_map_y + p_y) if tile_data ~= 0 then local x = self.x + p_x local y = self.y + p_y table_insert(new_tiles, {x = x, y = y}) mset(x, y, tile_data) end end end self:free() end function Piece:validate() for y = 0, self.size - 1 do for x = 0, self.size - 1 do if mget(x + self.rot_map_x + self.variant * self.size, y + self.rot_map_y) ~= 0 and (mget(self.x + x, self.y + y) ~= 0 or self.x + x < 0 or self.x + x >= 10 or self.y + y >= 17 ) then return false end end end return true end function Piece:rotate_cw() local variant = self.variant self.variant = (self.variant + 1) % 4 if not self:validate() then self.variant = variant end end function Piece:rotate_ccw() local variant = self.variant self.variant = (self.variant + 3) % 4 if not self:validate() then self.variant = variant end end function Piece:move_left() self.x = self.x - 1 if not self:validate() then self.x = self.x + 1 end end function Piece:move_right() self.x = self.x + 1 if not self:validate() then self.x = self.x - 1 end end gc_pieces = { Piece.new(3, -2, 4, 210, 0, 2), -- I Piece.new(4, -1, 3, 210, 15, 4), -- T Piece.new(4, 0, 2, 210, 4, 1), -- O Piece.new(4, -1, 3, 210, 6, 4), -- J Piece.new(4, -1, 3, 210, 9, 4), -- L Piece.new(4, -1, 3, 210, 12, 2), -- S Piece.new(4, -1, 3, 210, 18, 2), -- Z } ---------------------------------------- -- Input ------------------------------- ---------------------------------------- --- action_idx: -- 1: move R -- 2: rotate CW --- Input handler with DAS Input = { action_idx = 0, dir = 0, btn = 0, btn_reverse = 0, cnt = 0, stage_rem_t = 0, } Input.__index = Input function Input.new(action_idx) local self = setmetatable({}, Input) self.action_idx = action_idx if self.action_idx == 1 then self.btn = 3 self.btn_reverse = 2 else -- if self.action_idx == 2 then self.btn = 5 self.btn_reverse = 4 end return self end function Input:process(delta) local dir = (btn(self.btn) and 1 or 0) - (btn(self.btn_reverse) and 1 or 0) if dir == 0 then self.stage_rem_t = 0 self.cnt = 0 elseif dir == self.dir then self.stage_rem_t = self.stage_rem_t - delta else self.stage_rem_t = -1 self.cnt = 0 self.dir = dir end if self.stage_rem_t < 0 then if self.cnt == 0 then self.stage_rem_t = 267 else self.stage_rem_t = 133 end self.cnt = self.cnt + 1 if self.action_idx == 1 then if dir == 1 then g_piece:move_right() else g_piece:move_left() end else -- if self.action_idx == 2 then if dir == 1 then g_piece:rotate_cw() else g_piece:rotate_ccw() end end end end ---------------------------------------- -- Option ------------------------------ ---------------------------------------- Option = { name = nil, idx = 0, vals = nil, } Option.__index = Option function Option.new(name, vals, idx) local self = setmetatable({}, Option) self.name = name self.vals = vals self.idx = idx return self end function Option:draw(y, active) print(self.name, 24, y, 15, true) local width = print(self.vals[self.idx], 144, y, 15, true) if active then spr(2, 135, y) spr(3, 144 + width, y) end end function Option:change(dir) self.idx = (self.idx - 1 + dir) % #(self.vals) + 1 end function Option:get() return self.vals[self.idx] end ---------------------------------------- -- Start ------------------------------- ---------------------------------------- Start = { } Start.__index = Start function Start.new() local self = setmetatable({}, Start) return self end function Start:draw(y, active) local width = print("START", 24, y, 15, true) if active then spr(3, 15, y) spr(2, 24 + width, y) end end function Start:change(dir) set_state(4) end ---------------------------------------- -- Stats ------------------------------- ---------------------------------------- Stats = { vals = nil, max = 0, x = 0, y = 0, height = 0, } Stats.__index = Stats function Stats.new(n, x, y, height, colors) local self = setmetatable({}, Stats) self.vals = {} self.colors = colors for i = 1, n do self.vals[i] = 0 end self.x = x - 3 self.y = y self.height = height return self end function Stats:draw() local sf = self.height / self.max for i, v in ipairs(self.vals) do rect(self.x + i * 3, self.y - v * sf // 1, 2, v * sf // 1, self.colors[i]) end end function Stats:inc(idx) local v = self.vals[idx] + 1 self.vals[idx] = v self.max = math.max(self.max, v) end ---------------------------------------- -- process ----------------------------- ---------------------------------------- function curtain_process(delta) draw_game() local drop_timer = g_drop_timer + delta g_drop_timer = drop_timer local colors = gc_colors for y = 0, math.min(drop_timer * 34 // 2000, 134) do rect(80, y * 4, 80, 4, colors[y % #colors]) end if drop_timer > 2000 then print("PRESS ANY\nBUTTON\nTO CONTINUE", 92, 112, 12) if btnp() ~= 0 then set_state(5) end return end end function game_process(delta) local drop_timer = g_drop_timer + delta g_drop_timer = drop_timer if next(g_dropping_pieces) ~= nil then if drop_timer >= g_drop_timer_max // 2 then g_drop_timer = 0 local table_insert = table.insert repeat local new_tiles = {} repeat local placed = false local g_dropping_pieces_old = g_dropping_pieces g_dropping_pieces = {} for k, pc in ipairs(g_dropping_pieces_old) do if pc:can_drop() then table_insert(g_dropping_pieces, pc) else placed = true pc:place(new_tiles) end end until not placed until not resolve_tiles(new_tiles) for k, pc in pairs(g_dropping_pieces) do pc:drop_unchecked() end end draw_game() else if g_piece == nil then next_piece() end if btn(1) then drop_timer = drop_timer + delta g_drop_timer = drop_timer end for _, inp in ipairs(g_inputs) do inp:process(delta) end if drop_timer >= g_drop_timer_max then g_drop_timer = 0 if g_piece:can_drop() then g_piece:drop_unchecked() else local new_tiles = {} g_piece:place(new_tiles) resolve_tiles(new_tiles) g_piece = nil end end draw_game() if g_piece ~= nil then g_piece:draw() end end for k, pc in pairs(g_dropping_pieces) do pc:draw() end end function options_process(delta) map(180, 0) if btnp(0) then g_active_opt_idx = (g_active_opt_idx + #g_options - 2) % #g_options + 1 end if btnp(1) then g_active_opt_idx = (g_active_opt_idx) % #g_options + 1 end if btnp(2) then g_options[g_active_opt_idx]:change(-1) end if btnp(3) then g_options[g_active_opt_idx]:change(1) end local y = 32 for i, opt in ipairs(g_options) do opt:draw(y, i == g_active_opt_idx) y = y + 16 end end function end_screen_process(delta) set_state(1) end function title_process(delta) local dropping_pieces_old = g_dropping_pieces local table_insert = table.insert if math.random() < .15 then local math_random = math.random local pc = Piece.new_random() pc.variant = math_random(1, 3) pc.x = math_random(-8, 18 - pc.size) table_insert(dropping_pieces_old, pc) end for _, pc in ipairs(dropping_pieces_old) do pc:draw() end g_drop_timer = g_drop_timer + delta if g_drop_timer >= 50 then g_drop_timer = 0 local dropping_pieces = {} g_dropping_pieces = dropping_pieces for _, pc in ipairs(dropping_pieces_old) do pc:drop_unchecked() if pc.y > 16 then pc:free() else table_insert(dropping_pieces, pc) end end end map(180, 0, 30, 17, 0, 0, 0) map(150, 0, 23, 6, 28, 16, 0) if (g_t // 500) % 2 == 0 then print("PRESS ANY BUTTON TO BEGIN", 52, 96, 2) end print("(c) Wojciech Graj 2023", 62, 112, 4) if btnp() ~= 0 then for _, pc in ipairs(g_dropping_pieces) do pc:free() end set_state(3) end end gc_processes = { [1] = title_process, [2] = curtain_process, [3] = options_process, [4] = game_process, [5] = end_screen_process, } ---------------------------------------- -- main -------------------------------- ---------------------------------------- function BOOT() set_state(1) g_prev_time = 0 g_options = { Option.new("LINE LENGTH", {2, 3, 4, 5}, 2), Option.new("COLORS", {3, 4, 5}, 2), Option.new("LEVEL", {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, 3), Option.new("MUSIC", {"KOROBEINIKI", "TROIKA", "OFF"}, 1), Start.new(), } end function TIC() local t = time() g_t = t local delta = t - g_prev_time g_prev_time = t cls() gc_processes[g_state](delta) end