0,•']‰ï}WÿÍu§Þp8•dºH‘)6o;]ÉA¦ösï÷ôôô”°ÂVl†3?   345  678!""""""#:;<!""""""""""# > ? Ý Ý °š˜º«‰© ÝÝÐÐÝÝ Ì Ì °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© Ü ÌÌÀ ÍÌÌ Ü Ü °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© Ì Ü Ü Ü ÌÜÐ Ì °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© Ì ÀÜ ÀÀ °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© Ü Í ÜÜ Ü ÀÍÜ Ü °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© À ÜÝÐ ÜÜÌ Ì Ì Ì °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© ÌÌÀÀܰš˜ºàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîî© °š˜º«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» À °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª Ì °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š™™™™™™™™™™™™™™™™™™™™™™™™™™™™© À °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °šˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ© À °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜™™™™™™™™™™™™™™™™™™™™™™™™™™‰© Ḭ̀š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ªªªªªªªªªªªªªªªªªªªªªªªªªª‰© °š˜ºàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîî© °š˜º»»»»»»»»»»»»»»»»»»»»»»»»«‰© °š˜º«‰© °š˜º«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîî© °š˜ºàîîîàîîîàîîîàîîîàîîîàîî© Ý ÝÝÝ°š˜º«‰© °š˜ºwwwwwwwww«‰© Ì Ü ÌÌÐÌ °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝí«‰© ÀÌ Ü À °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝí«‰© À Ì Ü°š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝí«‰© À Ü ÐÀ °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝí«‰© Ü Í À ÜÝÀÝ °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝí«‰© Ì Ì ÌḬ̀š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîî© °š˜ºàîîîàîîîàîî© °š˜º«‰© °š˜ºwww«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© À̰š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© ÌÀ °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© Ì °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© Ì °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© À̰š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîî© °š˜ºàîîîàîîîàîîîàîîîàîî© °š˜ºÌÌÌLÌÌÌL«‰© °š˜º«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíLDDLDDÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíLDDLDDÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíLDDLDDÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíLDDLDDÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíLDDLDDÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíLDDLDDÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîî© °š˜ºàîîîàîîîàîîîàîîîàîîîàîî© Ð Ý Ð ÐÝÝݰš˜ºÌÌÌLÌÌÌL«‰© °š˜º»»»»»»»»»»»»»»»»»»»»»»»»«‰© ÍÜÐÌ ÍÜÀÌ Ḭ̀š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíLDDLDDÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ªªªªªªªªªªªªªªªªªªªªªªªªªª‰© ÜÀÀ ÀÀ Ü °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíLDDLDDÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜™™™™™™™™™™™™™™™™™™™™™™™™™™‰© À À ÀÀÝ Ì °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíLDDLDDÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °šˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ© ÜÀ ÀÀÌ °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíLDDLDDÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š™™™™™™™™™™™™™™™™™™™™™™™™™™™™© ÜÍÀÝ ÜÍÀ Üݰš˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíLDDLDDÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª À Ì À À Ḭ̀š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíLDDLDDÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» °š˜ºàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîî© °š˜º«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© À̰š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© ÌÀ °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© Ì °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© Ì °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© À̰š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîî© °š˜º«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîî© °š˜º«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîî© °š˜º«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîî© °š˜º«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîî© °š˜º«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîî© °š˜º«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«‰© °š˜ºàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîîîàîî© °š˜º»»»«»»»«»»»«»»»««‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«ªª «ªª «ªª «ªª «‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«ªª «ªª «ªª «ªª «‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«ªª «ªª «ªª «ªª «‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«ªª «ªª «ªª «ªª «‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«ªª «ªª «ªª «ªª «‰© °š˜ºÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝíÐÝÝí«ªª «ªª «ªª «ªª «‰© °š˜ºàîîîàîîîàîîîàîîîàîîîàîîî «‰© °š˜º»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»«‰© °š˜ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª‰© °š˜™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™‰© °šˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ© °š™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™© °ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª °»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» 4%-- title: T-tris -- author: CreaLisa -- desc: --[[ A classic tetris in development Version 1 : - Normal mode - Grid display Version 2 : - Display update - Improved scoring system (single,double,triple,tetris) --]] -- version: 2 -- script: lua --------------------------------- -------- VARIABLES -------------- --------------------------------- G_BG=18 T_COLOR=3 --T_SHADOW=8 Tetros={} Tetros[1]= -- I tetromino {{ {0,0,0,0}, {0,0,0,0}, {1,1,1,1}, {0,0,0,0} }, { {0,0,1,0}, {0,0,1,0}, {0,0,1,0}, {0,0,1,0} }} Tetros[2]= -- O tetromino {{ {0,0,0,0}, {0,1,1,0}, {0,1,1,0}, {0,0,0,0} }} Tetros[3]= -- P tetromino {{ {0,0,0}, {1,1,1}, {0,0,1} }, { {0,1,0}, {0,1,0}, {1,1,0} }, { {1,0,0}, {1,1,1}, {0,0,0} }, { {0,1,1}, {0,1,0}, {0,1,0} }} Tetros[4]= -- L tetromino {{ {0,0,0}, {1,1,1}, {1,0,0} }, { {1,1,0}, {0,1,0}, {0,1,0} }, { {0,0,1}, {1,1,1}, {0,0,0} }, { {0,1,0}, {0,1,0}, {0,1,1} }} Tetros[5]= -- S tetromino {{ {0,0,0}, {0,1,1}, {1,1,0} }, { {0,1,0}, {0,1,1}, {0,0,1} }, { {0,0,0}, {0,1,1}, {1,1,0} }, { {0,1,0}, {0,1,1}, {0,0,1} }} Tetros[6]= -- T tetromino {{ {0,0,0}, {1,1,1}, {0,1,0} }, { {0,1,0}, {1,1,0}, {0,1,0} }, { {0,1,0}, {1,1,1}, {0,0,0} }, { {0,1,0}, {0,1,1}, {0,1,0} }} Tetros[7]= -- Z tetromino {{ {0,0,0}, {1,1,0}, {0,1,1} }, { {0,0,1}, {0,1,1}, {0,1,0} }, { {0,0,0}, {1,1,0}, {0,1,1} }, { {0,0,1}, {0,1,1}, {0,1,0} }} Grid={ width=10, height=15, Offset={x=10,y=0}, cellSize=8, cells={} } currentTetros= { shape_id=1, rotation=1, position={x=0,y=0}, myShape={}, canMove=true } nextTetros= { shape_id=1, rotation=1, } dropSpeed=0.01 level=1 nb_lines=0 remain_lines=10 score=0 game_over=false Scores={[1]=100,[2]=300,[3]=500,[4]=800} -- menu mode="menu" menu={} menu_xpos=80 currentMenu=1 submenu="" -- scores topScores={} function NewTetros() id=math.random(1,7) --id=1 currentTetros={} currentTetros.shape_id=id currentTetros.rotation=1 t_width=#Tetros[id][1] currentTetros.position={} currentTetros.position.x=math.floor((Grid.width-t_width)/2)+1 currentTetros.position.y=0 currentTetros.canMove=true timeDrop=0 end function NextTetros() id=math.random(1,7) --id=1 nextTetros={} nextTetros.shape_id=id nextTetros.rotation=1 nextTetros.canMove=true end function TransfertInGrid(myTetros) local shape=Tetros[myTetros.shape_id][myTetros.rotation] for l=1, #shape do for c=1, #shape[l] do local x=(c-1) local y=(l-1) --add init position of tetros x=x+myTetros.position.x y=y+myTetros.position.y if shape[l][c]==1 then Grid.cells[x][y]=T_COLOR+myTetros.shape_id end if y==0 then game_over=true end end end end function InitMenu() n=3 for i=1,n do menu[i]={} end menu[1].name="Play" menu[2].name="Settings" menu[3].name="Commands" for i=1,n do menu[i].len=string.len(menu[i].name) menu[i].x=menu_xpos menu[i].y=50+15*i end end function NavigateMenu() for i=1,#menu do menu[i].x=menu_xpos PrintMenu(menu[i].name, menu[i].x, menu[i].y,currentMenu==i) end end function PrintMenu(text,x,y,isSelected) if isSelected then text="> "..text end print(text,x,y,isSelected and 4 or 12) end function InitGame() if new_game then dropSpeed=0.015 timeDrop=0 level=1 nb_lines=0 remain_lines=10-nb_lines score=0 best=pmem(1) game_over=false InitGrid() NewTetros() NextTetros() new_game=false bstop=false end end function InitGrid() Grid.Offset.x=8 Grid.Offset.y=0 for c=1,Grid.width do Grid.cells[c]={} for l=1,Grid.height do Grid.cells[c][l]=G_BG end end end function DrawGrid() local x,y for c=1,Grid.width do x=(Grid.Offset.x+c)*Grid.cellSize for l=1,Grid.height do y=(Grid.Offset.y+l)*Grid.cellSize spr(Grid.cells[c][l],x,y) end end end function DrawShape(myTetros) if Collide(myTetros)==false then --print("not collide",10,10,13) local shape=Tetros[myTetros.shape_id][myTetros.rotation] for l=1, #shape do for c=1, #shape[l] do local x=(c-1) local y=(l-1) --add init position of tetros if myTetros.position.x~=nil then x=x+myTetros.position.x end if myTetros.position.y~=nil then y=y+myTetros.position.y end --add grid position x=x+Grid.Offset.x y=y+Grid.Offset.y if shape[l][c]==1 then spr(myTetros.shape_id+T_COLOR,x*Grid.cellSize,y*Grid.cellSize) end end end else print("collide",10,10,13) end end function DrawNextShape(myTetros) local shape=Tetros[myTetros.shape_id][myTetros.rotation] for l=1, #shape do for c=1, #shape[l] do local x=(c-1) local y=(l-1) x=x+23 y=y+3 if shape[l][c]==1 then spr(myTetros.shape_id+T_COLOR,x*Grid.cellSize,y*Grid.cellSize) end end end end function Collide(myTetros) local shape=Tetros[myTetros.shape_id][myTetros.rotation] for l=1, #shape do for c=1, #shape[l] do local x=(c-1) local y=(l-1) --add init position of tetros if myTetros.position.x~=nil then x=x+myTetros.position.x end if myTetros.position.y~=nil then y=y+myTetros.position.y end if shape[l][c]==1 then if x<=0 or x>Grid.width then return true end if y>Grid.height then return true end if Grid.cells[x][y]==nil then return true end if Grid.cells[x][y]>=4 and Grid.cells[x][y]<=10 then return true end end end end return false end function input() if mode=="menu" then if btnp(0) then -- up if currentMenu>1 then currentMenu=currentMenu-1 submenu=menu[currentMenu].name end end if btnp(1) then -- down if currentMenu<#menu then currentMenu=currentMenu+1 submenu=menu[currentMenu].name end end if btnp(5) and currentMenu==1 then mode="Play" end end if mode=="Play" then local oldX=currentTetros.position.x local oldY=currentTetros.position.y local oldRotation=currentTetros.rotation if btnp(2) then -- left currentTetros.position.x=currentTetros.position.x-1 end if btnp(3) then -- right currentTetros.position.x=currentTetros.position.x+1 end if Collide(currentTetros) then currentTetros.position.x=oldX end if btnp(0) then -- up = rotation currentTetros.rotation=currentTetros.rotation+1 if currentTetros.rotation>#Tetros[currentTetros.shape_id] then currentTetros.rotation=1 end if Collide(currentTetros) then currentTetros.rotation=oldRotation end end if btn(1) then -- down = fall SoftDrop() end end end function AutoDrop() local oldY=currentTetros.position.y timeDrop=timeDrop+dropSpeed if timeDrop>=1 then currentTetros.position.y=currentTetros.position.y+1 if Collide(currentTetros) then currentTetros.position.y=oldY currentTetros.canMove=false print("autodrop",10,10,13) end timeDrop=0 end end function SoftDrop() local oldY=currentTetros.position.y timeDrop=timeDrop+dropSpeed*20 if timeDrop>=1 then currentTetros.position.y=currentTetros.position.y+1 if Collide(currentTetros) then currentTetros.position.y=oldY currentTetros.canMove=false print("softdrop",20,20,13) end timeDrop=0 end end function init() InitMenu() new_game=true end init() function TIC() input() if mode=="menu" then map(30,1) NavigateMenu() end if(submenu=="Commands") then map(30,1) NavigateMenu() print("left right",menu_xpos+65,65,12) print("up : rotate",menu_xpos+65,75,12) print("down : soft drop",menu_xpos+65,85,12) print("x : validate",menu_xpos+65,95,12) print("w : menu",menu_xpos+65,105,12) end if mode=="Play" then map(0,0) InitGame() if game_over then if score>pmem(1) then pmem(1,score) best=score end DrawGameOver() else DrawGUI() if currentTetros~=nil then if currentTetros.canMove==true then AutoDrop() DrawNextShape(nextTetros) DrawShape(currentTetros) CheckLines() else TransfertInGrid(currentTetros) currentTetros=nextTetros currentTetros.position={} currentTetros.position.x=math.floor((Grid.width-t_width)/2)+1 currentTetros.position.y=0 NextTetros() end end end end end function DrawGUI() DrawGrid() DrawDatas() end function DrawDatas() print(level,20,18,12) print(nb_lines,20,42,12) print(score,20,66,12) print(best,20,90,12) end -- draw game over screen function DrawGameOver() print("Game Over",(240/2)-40,136/2-20,12) print("Press x to restart",240/2-50,136/2,12) print("Press w to return to menu",240/2-50,136/2+10,12) if btnp(4) then -- if the player pressed A mode="menu" end if btnp(5) then -- if the player pressed A new_game=true InitGame() end end function CheckLines() myLines={} for l=1,Grid.height do lineCompleted=true for c=1,Grid.width do -- if the line contain a empty cell -- then the line is not completed if Grid.cells[c][l]==G_BG then lineCompleted=false end end -- is line is completed the add -- the line to drop if lineCompleted then myLines[#myLines+1]=l end end -- drop all the lines to drop for i=1,#myLines do RemoveLineGrid(myLines[i]) end nb_lines=nb_lines+#myLines remain_lines=remain_lines-#myLines if remain_lines<=0 then level=level+1 dropSpeed=dropSpeed+0.001 remain_lines=10 end local nb=#myLines if nb>0 then score=score+Scores[nb] end DrawDatas() end function RemoveLineGrid(pLine) for l=pLine,2,-1 do for c=1,Grid.width do Grid.cells[c][l]=Grid.cells[c][l-1] end end end