ÎÌÌÌ̈ˆˆ¬ªªª¬ˆˆˆ¬ÌÌ̬ÌÀ̬ÌÀ̬ÌÀÌÌÌìÌÀÀî̬ÀÌÀ¬ÀÀÀ¬ÀÀÀ¬ÀÀÎÌÌÌ̈ˆˆ¬ªªª¬ˆˆˆ¬ÌÌ̬ÌÌ̬ÌÀ̬ÌÀÌÌÌìÌÀÀî̬ÀÌ̬ÀÀÀ¬ÀÀÀ¬ÀÀ¬ÌÌ̬ªªª¬ª¬ª¬ªÊ̬ªªªŒˆˆˆÌÀÌÎÌÌÎ̬̪ªÀ쬪ÀÀÀÌîÀìîÌÌîî¬ÌÌ̬ªªª¬ª¬ª¬ªÊ̬ªªªŒˆˆˆÌÀÌÎÌÌÎ̬̪ªÀ쬪ÀÀÀÌîÀìîÌÌîîà """DD BDD D$B D$" D$"""DD"DD$DD4BD4"B4 """DD BDD D$B D$" D$" D$"""DD"DD$DD4BD4"B4""4 "  D$" D$" D$" D$B BDD "33""" """"4"B4BD4DD3D4#33"""""" D$" D$" D$B BDD "33 """""" """B4BD4DD3D4#33"""""""""ÌüÌÌÌÏÌÌÌÌÌÌüÿÏÌÏüÏÌÏüÏÌüÿÏÌÌÌÌÌÌÏÌÌÌüÌÌÌÌÌÌüÿÏÌÏüÏÌÏüÏÌüÿÏÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌüÿÏÌÿÏÌÌÿÏÌÌüÿÏÌÌüÌÌÌÏÌÌüÌÌÌÌÌÌÌüÿÌÌÿüÏÌÿÏÌÌüÿÌÌÌÌÌÌüÌÌÌÌÏÌÌÌÌÌÌüÿÌÌÿüÏÌÿÏÌÌüÿÌÌÌÌÌÌÌÌÌÌüüÌÌÌÌÌÌüÿÌÌÿüÏÌÿÏÌÌüÿÌÌÌÌÌÌÌÌÌÌÌÏÌÌüÌÌÌÌÌÌÌüÏÌÌüÏÌÌüÏÌÌÌÌÌÌüüÌÌÏÏÌÌÌÌÌÌÿÿÌÌÿÌÏÌÿÌÏÌÿÌÏÌÌÌÌÌüÌÌÌÌÏÌÌÌÌÌÌüÿÌÌÿÌÏÌÿÌÏÌüÿÌÌÌÌÌÌÌÏÌÌüüÌÌÌÌÌÌüÿÌÌÿÌÏÌÿÌÏÌüÿÌÌÌÌÌÌÌÏÌÌüüÌÌÌÌÌÌÿÌÏÌÿÌÏÌÿÌÏÌüÿÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌüÏÌÌÌÌÌÌüÏÌÌüÏÌÌüÏÌÌÌÌÌÌÌÌÌÌÿÿÏÌÏÌÏÌÏÌÏÌÏÌÏÌÿÿÏÌÌÌÌÌÌÌÌÌÌÌÌÌÿÿÏÌÿÿÏÌÿÿÏÌÿÿÏÌÿÿÏÌÌÌÌÌÌÌÌÌÌÌÌÌÿÌÌÌÏÿÌÌÏÌÏÌÏÿÌÌÿÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÿÌÌÌÿÿÌÌÿÿÏÌÿÿÌÌÿÌÌÌÌÌÌÌüÌÌÌÏÌÌÌÌÌÌÌÿÌÌÌüÏÌÌÏÏÌÌÿÏÌÌÌÌÌÌÏÌÌÌüÌÌÌÌÌÌÌÿÌÌÌüÏÌÌÏÏÌÌÿÏÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌüÏÌÌÏÌÌÌÏÌÌÌüÏÌÌüÌÌÌÌÏÌÌüÌÌÌÌÌÌÌüÏÌÌÏÏÌÌÿÌÌÌüÏÌÌÌÌÌÌÏÌÌÌüÌÌÌÌÌÌÌüÏÌÌÏÏÌÌÿÌÌÌüÏÌÌÌÌÌÌÌÌÌÌÏÏÌÌÌÌÌÌüÏÌÌÏÏÌÌÿÌÌÌüÏÌÌÌÌÌÌÌÌÌÌÌÏÌÌüÌÌÌÌÌÌÌüÌÌÌüÌÌÌüÌÌÌÌÌÌÌüÏÌÌÿÌÌÌÌÌÌÌÿÌÌÌÏÏÌÌÏÏÌÌÏÏÌÌÌÌÌÌÏÌÌÌüÌÌÌÌÌÌÌüÌÌÌÏÏÌÌÏÏÌÌüÌÌÌÌÌÌÌüÌÌÌÏÏÌÌÌÌÌÌüÌÌÌÏÏÌÌÏÏÌÌüÌÌÌÌÌÌÌÌÌÌÌüÌÌÌÏÏÌÌÌÌÌÌÏÏÌÌÏÏÌÌüÏÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌüÌÌÌÌÌÌÌüÌÌÌüÌÌÌüÌÌÌÌÌÌÌÌÌÌÌÿÿÏÌÏÌÏÌÏÌÏÌÏÌÏÌÿÿÏÌÌÌÌÌÌÌÌÌÌÌÌÌÿÿÏÌÿÿÏÌÿÿÏÌÿÿÏÌÿÿÏÌÌÌÌÌÌÌÌÌÌÌÌÌÿÌÌÌÏÿÌÌÏÌÏÌÏÿÌÌÿÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÿÌÌÌÿÿÌÌÿÿÏÌÿÿÌÌÿÌÌÌÌÌÌÌÌ,ÌÌÌÂÌÌÌÌÌÌ,"ÂÌÂ,ÂÌÂ,ÂÌ,"ÂÌÌÌÌÌÌÂÌÌÌ,ÌÌÌÌÌÌ,"ÂÌÂ,ÂÌÂ,ÂÌ,"ÂÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ,"ÂÌ"ÂÌÌ"ÂÌÌ,"ÂÌÌ,ÌÌÌÂÌÌ,ÌÌÌÌÌÌÌ,"ÌÌ",ÂÌ"ÂÌÌ,"ÌÌÌÌÌÌ,ÌÌÌÌÂÌÌÌÌÌÌ,"ÌÌ",ÂÌ"ÂÌÌ,"ÌÌÌÌÌÌÌÌÌÌ,,ÌÌÌÌÌÌ,"ÌÌ",ÂÌ"ÂÌÌ,"ÌÌÌÌÌÌÌÌÌÌÌÂÌÌ,ÌÌÌÌÌÌÌ,ÂÌÌ,ÂÌÌ,ÂÌÌÌÌÌÌ,,ÌÌÂÂÌÌÌÌÌÌ""ÌÌ"ÌÂÌ"ÌÂÌ"ÌÂÌÌÌÌÌ,ÌÌÌÌÂÌÌÌÌÌÌ,"ÌÌ"ÌÂÌ"ÌÂÌ,"ÌÌÌÌÌÌÌÂÌÌ,,ÌÌÌÌÌÌ,"ÌÌ"ÌÂÌ"ÌÂÌ,"ÌÌÌÌÌÌÌÂÌÌ,,ÌÌÌÌÌÌ"ÌÂÌ"ÌÂÌ"ÌÂÌ,"ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ,ÂÌÌÌÌÌÌ,ÂÌÌ,ÂÌÌ,ÂÌÌÌÌÌÌÌÌÌÌ""ÂÌÂÌÂÌÂÌÂÌÂÌÂÌ""ÂÌÌÌÌÌÌÌÌÌÌÌÌÌ""ÂÌ""ÂÌ""ÂÌ""ÂÌ""ÂÌÌÌÌÌÌÌÌÌÌÌÌÌ"ÌÌÌÂ"ÌÌÂÌÂÌÂ"ÌÌ"ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ"ÌÌÌ""ÌÌ""ÂÌ""ÌÌ"ÌÌÌÌÌÌÌ,ÌÌÌÂÌÌÌÌÌÌÌ"ÌÌÌ,ÂÌÌÂÂÌÌ"ÂÌÌÌÌÌÌÂÌÌÌ,ÌÌÌÌÌÌÌ"ÌÌÌ,ÂÌÌÂÂÌÌ"ÂÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ,ÂÌÌÂÌÌÌÂÌÌÌ,ÂÌÌ,ÌÌÌÌÂÌÌ,ÌÌÌÌÌÌÌ,ÂÌÌÂÂÌÌ"ÌÌÌ,ÂÌÌÌÌÌÌÂÌÌÌ,ÌÌÌÌÌÌÌ,ÂÌÌÂÂÌÌ"ÌÌÌ,ÂÌÌÌÌÌÌÌÌÌÌÂÂÌÌÌÌÌÌ,ÂÌÌÂÂÌÌ"ÌÌÌ,ÂÌÌÌÌÌÌÌÌÌÌÌÂÌÌ,ÌÌÌÌÌÌÌ,ÌÌÌ,ÌÌÌ,ÌÌÌÌÌÌÌ,ÂÌÌ"ÌÌÌÌÌÌÌ"ÌÌÌÂÂÌÌÂÂÌÌÂÂÌÌÌÌÌÌÂÌÌÌ,ÌÌÌÌÌÌÌ,ÌÌÌÂÂÌÌÂÂÌÌ,ÌÌÌÌÌÌÌ,ÌÌÌÂÂÌÌÌÌÌÌ,ÌÌÌÂÂÌÌÂÂÌÌ,ÌÌÌÌÌÌÌÌÌÌÌ,ÌÌÌÂÂÌÌÌÌÌÌÂÂÌÌÂÂÌÌ,ÂÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ,ÌÌÌÌÌÌÌ,ÌÌÌ,ÌÌÌ,ÌÌÌÌÌÌÌÌÌÌÌ""ÂÌÂÌÂÌÂÌÂÌÂÌÂÌ""ÂÌÌÌÌÌÌÌÌÌÌÌÌÌ""ÂÌ""ÂÌ""ÂÌ""ÂÌ""ÂÌÌÌÌÌÌÌÌÌÌÌÌÌ"ÌÌÌÂ"ÌÌÂÌÂÌÂ"ÌÌ"ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ"ÌÌÌ""ÌÌ""ÂÌ""ÌÌ"ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ >À?DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD""""DDDDDDDDDDDDDDDDDDDDDDDDD""DDDDDDDDDD""DDD""DDDDDDDDDDDDDDDDDD""DDDDDDDDDDDDDDD""DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDô""""DDDDDDDDDDDDDDDDDDDDDDDDô""DDDDDDDDDô""DDô""DDDDDDDDDDDDDDDDDô""DDDDDDDDDDDDDDô""DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDôÿ""OD""""DDD""""D""""DDD""""ô""DDDD""""D"""""ôÿODD"""DD""""DDDDDD"""""DD"""DDD"""Dô""DDDD""""DDDDDDDDDDDDDDDDDDDDDDDDDDDô""Dô""""DDô""""ô""""DDô""""ô""DDDô""""ô"""""DDDDô"""Dô""""DDDDDô"""""Dô"""DDô"""Dô""DDDô""""DDDDDDDDDDDDDDDDDDDDDDDDDDDô""Dô""ÿO"D"ÿÿ""ô""ÿO"D"""ÿOô""DDD"ÿÿ""ôÿ""ÿOD""D""ÿO"ô""ÿO"DDDDôÿ""ÿOD""ÿO"D""ÿO"ô""DDD"""ÿODDDDDDDDDDDDDDDDDDDDDDDDDDDô""Dô""Dô"ô"Dô""ô""Dô"ô"""DDô""DDô"Dô""Dô""DDô""ô""Dô"ô""Dô"DDDDDô""DDô""Dô"ô""Dô"ô""DDô"""DDDDDDDDDDDDDDDDDDDDDDDDDDDDDô""Dô""DôOô"Dô""ô""Dô"ôÿÿ"""ô""DDô"Dô""Dô""DDô""ô""Dô"ô""Dô"DDDDDô""DDô""Dô"ô""Dô"ô""DDôÿÿ"""DDDDDDDDDDDDDDDDDDDDDDDDDDDô""Dô""DDDô"Dô""ô""Dô"DDô"""ô""DDô"Dô""Dô""DDô""ô""Dô"ô""Dô"DDDDDô""DDô""Dô"ô""Dô"ô""DDDDô"""DDDDDDDDDDDDDDDDDDDDDDDDDDDô""Dô""DDDôO""""ô""Dô"D""""Oôÿ"""ôO""""Dôÿ"""ô""ôÿ"""Oô""Dô"DDDDDôÿ"""ôÿ"""Oôÿ"""Oôÿ"""D""""ODDDDDDDDDDDDDDDDDDDDDDDDDDDô""Dô""DDDDô""""ô""Dô"ô""""DDô"""Dô""""DDô"""ô""Dô"""Dô""Dô"DDDDDDô"""Dô"""DDô"""DDô"""ô""""DDDDDDDDDDDDDDDDDDDDDDDDDDDDôÿODôÿODDDDôÿÿÿOôÿODôOôÿÿÿODDôÿÿODôÿÿÿODDôÿÿOôÿODôÿÿODôÿODôODDDDDDôÿÿODôÿÿODDôÿÿODDôÿÿOôÿÿÿODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD""""""""""""""""""""""""""""""""""""""""""""""""""DDDDDDDDDD""""""""""""""""""""""""""""""""""""""""""""""""""DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDÿODDDDÿDDDDDDDDDDDÿDôODDDDDDÿDôODDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDÿÿDDDôODôODDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDôOôôOôôÿÿDÿOôOODÿÿôÿÿDDôÿOôÿOÿDôODOôODDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDôÿDDÿÿôODÿÿOôÿODDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDôOôôOôDÿDôOôôÿÿôDÿDÿDôOÿODOôOÿDôODOôODDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDÿOôDÿôODôODOôODDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDôÿÿôOôDÿDôOôôôôôDÿDÿDôOÿODOôOÿDôODôÿODDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDôÿôDÿôODôODOôODDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDôOôDÿODôÿDÿOôôôDÿÿDôÿôOôÿOôÿOôÿDÿODôODDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDôÿODÿÿDÿODÿOôÿODDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDôÿDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDODDBDDDDDDDDDDDDDDDDDDôDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDôDDBDDDDDDDDDDDDDDDDDDODDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDôODDDDDDDDDDDDDDôODDDDDDôODÿDDDDDDDDDDDD$DDDDDDDDODBDDDDDDDDôODDDDDDDDDDôODÿDDDDDDDDDDDDDDDDÿDDDDDDD$DDDDDDDDDDBDDDDDDDDDDÿDOÿôDÿÿDôÿODDÿÿOôÿDDDÿÿOÿÿDôÿDDDDDDDD$DDDDDDDDôDBDDôÿOÿDOÿÿOôÿDÿôDôÿOÿÿODDÿÿDÿÿôOODÿOôÿOôÿÿDÿODDD$DDDDDDDDDDBDDDDDDDDôOÿDOÿÿOÿDOÿODDDôODÿDODDôODÿDOÿôODDDDDDD$DÿÿÿÿÿÿÿÿOBDDOôOÿDOôODÿDOÿÿOOôOôODÿôÿDôDÿôÿÿôOÿôOôDÿDôOÿDDD$DDDDDDDDDDBDDDDDDDDôOÿDOOOOÿDODÿODDôODÿDODDôODÿDOÿODDDDDDDD$DDDDDDDDôDBDDOôOÿDOôODÿDOOOOOôOôODÿôÿDôDÿôôôôÿDôOôDÿDôÿDDDD$DDDDDDDDDDBDDDDDDDOôOôÿDOOOÿÿDÿÿDDDDÿOôÿDDDDÿOÿDOôÿDDDDDDDD$DDDDDDDDODBDDôÿOôÿDDÿOôÿDOOOôÿODÿOÿDÿÿDÿÿôôôDÿOôOôDôÿDÿODDD$DDDDDDDDDDBDDDDDDDôÿDDDDDDDÿDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDôDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDODDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDôDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDÿDôODDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDÿDDDDDDôODODDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDÿDDDÿÿDôÿDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDôÿODDÿDDÿÿDDôODDDÿÿDôÿDôÿODDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDÿDôOÿDOÿôODDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDOôODDÿDôDÿDDôODÿDÿDOÿôOOôODDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDÿDôOÿDOÿODÿDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDOôODDÿDôDÿDDôODÿDÿDOÿODOôOÿDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDôÿôOÿDOôÿDÿDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDôÿODDôÿDÿÿDDDÿOÿDÿDOôÿDôÿOÿDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$DDDDDDDDDD""""""""""""""""""""""""""""""""""""""""""""""""""DDDDDDDDDD""""""""""""""""""""""""""""""""""""""""""""""""""DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDôODDDDDDDDôODDDDDDDDDDDDDDDDDDDDDDDDDDDôOôODDDDDDôODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDôODDDDDDDDôODDDDDDDDDDDDDDDDDDDDDDDDDDDôOôODDDDDDôODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDôODDDDDDôOôODDDDDDDDDDDDDDDDôOôODDDDDôOôODDDDDDDDôODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDôODDDDDDôOôODDDDDDDDDDDDDDDDôOôODDDDDôOôODDDDDDDDôODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDôÿODDDDDôÿÿÿODDDDôÿODôODDDDDôÿÿÿODDDDDôÿÿODDDDDôÿÿÿODDDDDDôÿÿODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDôÿODDDDDôÿÿÿODDDDôÿODôODDDDDôÿÿÿODDDDDôÿÿODDDDDôÿÿÿODDDDDDôÿÿODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDôODôÿODDDDôÿODôODDDDôÿÿODDDDDDôÿOôÿODDDDôÿODôODDDDôÿODôODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDôODôÿODDDDôÿODôODDDDôÿÿODDDDDDôÿOôÿODDDDôÿODôODDDDôÿODôODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDôÿODDDDôODôÿODDDDôÿODôODDDDôÿÿODDDDDDôÿÿODDDDDDôÿODôODDDDôÿODôODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDôÿODDDDôODôÿODDDDôÿODôODDDDôÿÿODDDDDDôÿÿODDDDDDôÿODôODDDDôÿODôODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDôÿODDDDDôÿÿÿODDDDDôÿÿODDDDDDôÿÿÿODDDDDôÿÿODDDDDôÿODôODDDDDôÿÿODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDôÿODDDDDôÿÿÿODDDDDôÿÿODDDDDDôÿÿÿODDDDDôÿÿODDDDDôÿODôODDDDDôÿÿODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDôÿODDDDDDDDDDDDDDDDDDDDDDDDDDDôODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDôÿODDDDDDDDDDDDDDDDDDDDDDDDDDDôODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD%|-- title: Translation tools -- author: Skeptim -- desc: Open source tools to translate to any language, use special characters like accentuated letters, automatically go to line and align translated text. -- site: https://tic80.com/play?cart=2967 -- license: GNU General Public License v3.0 (GPL) -- version: 1.0 -- script: lua t=0 bg_col=4 txt_col=2 example_col=15 normal_char_height=5 --TODO I could make an update to add possibility of capital letters with accents, ie have a different height for each special character --TODO Change when `font()` is updated to allow color option --TODO Make the possibility to print shadow (that's helpfull for centered text) ----------------------------- --TRANSLATION ----------------------------- --This section is independent. It does not need the others to work. --Usage: --Set the languages you need in `languages`. --Write the translations in `translations` in the same order than `languages`. --Use `translate` like e.g. `translate("text", 'fr')` to get the french translation of the reference string "text". --NB I don't think chinese is doable, or you will have to write all sentences as sprites languages={'ref',--The reference strings used in the code (it can be the same than the english one but does not have to be) 'en', 'sp', 'fr', 'de', 'eo', 'it', 'ma', 'zl', 'af', } language='en'--init -- ref, en, sp, fr, de, ... translations={{"text","That is a text","Es un texto","Ce{{c_cedilla}}i est un t{{e_acute}}xte","Dies ist ein text"}, {"other text","That is an other text that is completely different, really","Spanish stuff","C'est un autre texte qui est compl{{e_grave}}tement diff{{e_acute}}rent, r{{e_acute}}ellement !","German"}, {"Cover image","Translation tools","Herramientas de traducci{{o_acute}}n","Outils de traduction","","Tradukaj iloj","Strumenti di traduzione","Alat terjemahan","Amathuluzi okuhumusha","Vertaalgereedskap"}, {"Cover image bis","Automatically jumps to the line.","Salta autom{{a_acute}}ticamente a la l{{i_acute}}nea."}, {"Text_menu_1","Here is an example text.","Este es un texto de ejemplo.","Voil{{a_grave}} un texte d'exemple.","Hier ist ein Beispieltext.","Jen ekzempla teksto."}, {"Usage_menu_1","translate(\"Text_menu_1\",'en')","translate(\"Text_menu_1\",'sp')","translate(\"Text_menu_1\",'fr')","translate(\"Text_menu_1\",'de')","translate(\"Text_menu_1\",'eo')"}, {"Text_menu_2","Example: {{e_acute}} {{n_tilde}} {{o_circumflex}}","{{!_inverted}}Pap{{a_acute}} no es una papa!","Le jeune n'est pas le je{{u_circumflex}}ne."}, {"Usage_menu_2","\"Example: {{e_acute}} {{n_tilde}} {{o_circumflex}}\"","\"{{!_inverted}}Pap{{a_acute}} no es una papa!\"","\"Le jeune n'est pas le je{{u_circumflex}}ne.\""}, {"Text_menu_3","This text is too wide for this box.","Este texto es demasiado ancho para esta caja.","Ce texte est trop large pour cette case."}, {"Usage_menu_3","eprint(\"This text is too wide for this box.\", {x_min,x_max}...)","eprint(\"Este texto es demasiado ancho para esta caja.\", {x_min,x_max}...)","eprint(\"Ce texte est trop large pour cette case.\", {x_min,x_max}...)"}, {"Text_menu_4","The `allow_smallfont` argument allows to automatically switch to small font if the text does not fit.","El argumento `allow_smallfont` permite cambiar autom{{a_acute}}ticamente a una fuente pequea{{n_tilde}}a si el texto no cabe.","L'argument `allow_smallfont` permet de passer automatiquement en petite police si le texte ne tient pas."}, {"Text_menu_5","Text aligned on a frame.","Texto alineado con un marco.","Text align{{e_acute}} par rapport {{a_grave}} un cadre."}, {"Text_menu_6","Text aligned on a point.","Texto alineado a un punto.","Text align{{e_acute}} par rapport {{a_grave}} un point."}, {"Text_menu_7","Text aligned on the screen borders.","Texto alineado con los bordes de la pantalla.","Text align{{e_acute}} par rapport aux bords de l'{{e_acute}}cran."}, } function get_lang_id(language) for id=1,#languages,1 do if language==languages[id] then return id end end error("Language "..language.." is not supported.") end function translate(text,language) --return the translation of `text` in `language`. `text` should be in the first column of `translations`. lang_id=get_lang_id(language) for ii=1,#translations,1 do if text==translations[ii][1] then text=translations[ii][lang_id] return text end end error('Cannot translate "'..text..'" : no corresponding reference string in the first column of `tranlations` table.') end ---------------------- --SPECIAL CHARACTERS ---------------------- --This section is independent. It does not need the others to work. --Note: The use of special characters is based on the font() function github.com/nesbox/TIC-80/wiki/font That is the reason why they cannot change colors (up to now) you have to draw them several times to have several colors. --Usage: --Draw the special characters you need in the sprite editor between the slots 288 and 382 (that is because of the font() function) --Set their background color and height in the corresponding variables below --Fill the special_chars table with the sprite slot, name, width, color and smallfont for each character --the sprite slot should be between 288 and 382. --the name should be within {{}} and without spaces. --the width should be a number, if you want the same width than an already existing character you can use the get_width() function. --the color should be the color of the character sprite. --smallfont is a boolean, true if the font is small like in `print` function. --Instead of `print` use `print_special` replacing special characters by their names within {{}}. spec_char_bkgd_col=12 --This is the color of the characters sprite background color1=15 color2=2 spec_char_height=7 --Height of special characters function get_width(text,fixed,scale,smallfont)--Get width of normal text from print fixed=fixed or false scale=scale or 1 smallfont=smallfont or false return print(text,0,10000,0,fixed,scale,smallfont) end --NB There should be no spaces within {{}} special_chars={ --{sprite_slot,'{{name}}',width,color,smallfont}, --288 is the first possible sprite (see font() function for detail) {288,'{{a_acute}}',get_width('a',false,1,false),color1,false}, {289,'{{a_grave}}',get_width('a',false,1,false),color1,false}, {290,'{{c_cedilla}}',get_width('c',false,1,false),color1,false}, {291,'{{e_acute}}',get_width('e',false,1,false),color1,false}, {292,'{{e_grave}}',get_width('e',false,1,false),color1,false}, {293,'{{e_diaeresis}}',get_width('e',false,1,false),color1,false}, {294,'{{i_acute}}',4,color1,false}, {295,'{{n_tilde}}',get_width('n',false,1,false),color1,false}, {296,'{{o_acute}}',get_width('o',false,1,false),color1,false}, {297,'{{o_circumflex}}',get_width('o',false,1,false),color1,false}, {298,'{{u_circumflex}}',get_width('u',false,1,false),color1,false}, {299,'{{!_inverted}}',3,color1,false}, {300,'{{case}}',6,color1,false}, {301,'{{case_full}}',6,color1,false}, {302,'{{arrow}}',6,color1,false}, {303,'{{arrow_full}}',6,color1,false}, --smallfont: fifth column is true {304,'{{a_acute}}',get_width('a',false,1,true),color1,true}, {305,'{{a_grave}}',get_width('a',false,1,true),color1,true}, {306,'{{c_cedilla}}',get_width('c',false,1,true),color1,true}, {307,'{{e_acute}}',get_width('e',false,1,true),color1,true}, {308,'{{e_grave}}',get_width('e',false,1,true),color1,true}, {309,'{{e_diaeresis}}',get_width('e',false,1,true),color1,true}, {310,'{{i_acute}}',4,color1,true}, {311,'{{n_tilde}}',get_width('n',false,1,true),color1,true}, {312,'{{o_acute}}',get_width('o',false,1,true),color1,true}, {313,'{{o_circumflex}}',get_width('o',false,1,true),color1,true}, {314,'{{u_circumflex}}',get_width('u',false,1,true),color1,true}, {315,'{{!_inverted}}',3,color1,true}, {316,'{{case}}',6,color1,true}, {317,'{{case_full}}',6,color1,true}, {318,'{{arrow}}',6,color1,true}, {319,'{{arrow_full}}',6,color1,true}, --different color {320,'{{a_acute}}',get_width('a',false,1,false),color2,false}, {321,'{{a_grave}}',get_width('a',false,1,false),color2,false}, {322,'{{c_cedilla}}',get_width('c',false,1,false),color2,false}, {323,'{{e_acute}}',get_width('e',false,1,false),color2,false}, {324,'{{e_grave}}',get_width('e',false,1,false),color2,false}, {325,'{{e_diaeresis}}',get_width('e',false,1,false),color2,false}, {326,'{{i_acute}}',4,color2,false}, {327,'{{n_tilde}}',get_width('n',false,1,false),color2,false}, {328,'{{o_acute}}',get_width('o',false,1,false),color2,false}, {329,'{{o_circumflex}}',get_width('o',false,1,false),color2,false}, {330,'{{u_circumflex}}',get_width('u',false,1,false),color2,false}, {331,'{{!_inverted}}',3,color2,false}, {332,'{{case}}',6,color2,false}, {333,'{{case_full}}',6,color2,false}, {334,'{{arrow}}',6,color2,false}, {335,'{{arrow_full}}',6,color2,false}, --smallfont: fifth column is true {336,'{{a_acute}}',get_width('a',false,1,true),color2,true}, {337,'{{a_grave}}',get_width('a',false,1,true),color2,true}, {338,'{{c_cedilla}}',get_width('c',false,1,true),color2,true}, {339,'{{e_acute}}',get_width('e',false,1,true),color2,true}, {340,'{{e_grave}}',get_width('e',false,1,true),color2,true}, {341,'{{e_diaeresis}}',get_width('e',false,1,true),color2,true}, {342,'{{i_acute}}',4,color2,true}, {343,'{{n_tilde}}',get_width('n',false,1,true),color2,true}, {344,'{{o_acute}}',get_width('o',false,1,true),color2,true}, {345,'{{o_circumflex}}',get_width('o',false,1,true),color2,true}, {346,'{{u_circumflex}}',get_width('u',false,1,true),color2,true}, {347,'{{!_inverted}}',3,color2,true}, {348,'{{case}}',6,color2,true}, {349,'{{case_full}}',6,color2,true}, {350,'{{arrow}}',6,color2,true}, {351,'{{arrow_full}}',6,color2,true}, --... --382 is the last possible sprite (see font() function for detail) } function check_special_chars() --This will check if there is no mistake in special_chars for ii=1,#special_chars,1 do if special_chars[ii][1]<288 or special_chars[ii][1]>382 then error('Incorrect sprite slot in special_chars. '..special_chars[ii][1]..' It should be between 288 and 382.') end for jj=1,#special_chars[ii][2],1 do if special_chars[ii][2]:sub(jj,jj)==' ' then error('Incorrect naming of special char. '..special_chars[ii][2]..' It should not contain spaces.') end end end end check_special_chars() function split_str_spec_char(text)--Split text into a table with special characters and normal text local split_string={} while string.match(text,'{{') and string.match(text,'}}') do local start_id=string.find(text,'{{') table.insert(split_string,text:sub(1,start_id-1)) local _,end_id=string.find(text,'}}') table.insert(split_string,text:sub(start_id,end_id)) text=text:sub(end_id+1,#text) end table.insert(split_string,text) return split_string end function spec_str_to_ascii(string,color,fixed,scale,smallfont)--Get the ascii corresponding to the special character sprite position used by the font() function. fixed=fixed or false scale=scale or 1 smallfont=smallfont or false scale=math.floor(scale) local ascii_chars=' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~' for ii=1,#special_chars,1 do if string==special_chars[ii][2] and color==special_chars[ii][4] and smallfont==special_chars[ii][5] then local spr_slot=special_chars[ii][1] local ascii_char=ascii_chars:sub(spr_slot-287,spr_slot-287) local char_width=special_chars[ii][3]*scale if fixed and (char_width<=get_width('a',true,scale,smallfont)) then char_width=get_width('a',true,scale,smallfont) end return ascii_char,char_width end end error(string..' misspelled or wrong color/smallfont option : it does not match any character from special_chars') end --Print text replacing special character name within {{}} by the character` itself. function print_special(text,x,y,color,fixed,scale,smallfont) scale=math.floor(scale) local split_string=split_str_spec_char(text) local width_sum=0 for ii=1,#split_string,1 do local string=split_string[ii] if string.match(string,'{{') then local ascii,width=spec_str_to_ascii(string,color,fixed,scale,smallfont) local height_diff=(spec_char_height-normal_char_height)*scale font(ascii,x+width_sum,y-height_diff,spec_char_bkgd_col,width,spec_char_height*scale,fixed,scale) width_sum=width_sum+width elseif string~='' then print(string,x+width_sum,y,color,fixed,scale,smallfont) width_sum=width_sum+get_width(string,fixed,scale,smallfont) end end return width_sum end ------------------- --EXTENDED PRINT ------------------- --This section can be made independent by replacing each `print_special` by `print`, or by uncommenting the following function: --[[function print_special(text,x,y,color,fixed,scale,smallfont) return print(text,x,y,color,fixed,scale,smallfont) end --]] --Usage: --eprint(text,x,align_x,y,align_y,color,fixed,scale,smallfont,interline,allow_smallfont) --x and y can be: --an integer: it will align from this position --a table with two values: it will limit the text between these two positions, going to line if it is too long or switching to smallfont if `allow_smallfont` is true --an empty table: it will limit the text to stay on screen, going to line if it is too long or switching to smallfont if `allow_smallfont` is true --align_x and align_y can be: --`-1` to align to the left/top --`0` to center --`1` to align to the right/bottom --interline: vertical space between two lines --allow_smallfont: if true it will switch to smallfont when the text does not fit horizontally or vertically --shadow_col: add shadow if it is set to a number corresponding to the shadow color. Set to false to not have shadow. normal_char_height=5 function get_spaces(text)--return a table of the position of each space. It also marks the end of the string as a space. local spaces={} for char_id=1,#text,1 do if text:sub(char_id,char_id)==" " then --look for spaces table.insert(spaces,char_id) end end if text~='' then table.insert(spaces,#text+1) --mark end of line as a space end return spaces end function get_text_width(text,fixed,scale,smallfont)--get the width of the text with or without special characters fixed=fixed or false scale=scale or 1 smallfont=smallfont or false return print_special(text,0,10000,15,fixed,scale,smallfont) end function split_text(text,width_max,fixed,scale,smallfont)--split text to fit in `width_max` local split_txt={} local spaces=get_spaces(text) local width=get_text_width(text,fixed,scale,smallfont) local l_widths={} while #spaces>0 do for ii=#spaces,1,-1 do local line_=text:sub(1,spaces[ii]-1) local l_width=get_text_width(line_,fixed,scale,smallfont) if l_width<=width_max or ii==1 then table.insert(split_txt,line_) table.insert(l_widths,l_width) text=text:sub(spaces[ii]+1,#text) width=get_text_width(text,fixed,scale,smallfont) spaces=get_spaces(text) break end end end return split_txt,l_widths end function too_wide(l_widths,max_width)--return true if a line is longer than `max_width` for ii=1,#l_widths,1 do if l_widths[ii]>max_width then return true end end return false end function get_ref_pos(pos,align,x_or_y)--return reference x or y integer from pos which can be a table local ref_pos=0 if type(pos)=='table' then if #pos==0 then --if empty table we align on screen local max=240 if x_or_y=='y' then max=136 end if align==-1 then ref_pos=0 elseif align==0 then ref_pos=max/2 elseif align==1 then ref_pos=max end elseif #pos==1 then --if table of one value we change that to a number ref_pos=pos[1] elseif #pos==2 then if align==-1 then ref_pos=pos[1] elseif align==0 then ref_pos=(pos[1]+pos[2])/2 elseif align==1 then ref_pos=pos[2] end end else ref_pos=pos end return ref_pos end function get_pos(align,ref_pos,width)--Get position used to print local pos=0 if align==-1 then --left/up align x/y pos=ref_pos elseif align==0 then --center x/y pos=ref_pos-width/2 elseif align==1 then --right/low align x/y pos=ref_pos-width end return pos end --Extended print function. --x and y can be: --an integer: it will align from this position --a table with two values: it will limit the text between these two positions, going to line if it is too long or switching to smallfont if `allow_smallfont` is true --an empty table: it will limit the text to stay on screen, going to line if it is too long or switching to smallfont if `allow_smallfont` is true --align_x and align_y can be: --`-1` to align to the left/top --`0` to center --`1` to align to the right/bottom --interline: vertical space between two lines --allow_smallfont: if true it will switch to smallfont if the text does not fit horizontally or vertically --shadow_col: add shadow if it is set to a number corresponding to the shadow color. Set to false to not have shadow. function eprint(text,x,align_x,y,align_y,color,fixed,scale,smallfont,interline,allow_smallfont,shadow_col) color=color or 15 fixed=fixed or false scale=scale or 1 scale=math.floor(scale) smallfont=smallfont or false interline=interline or 2*scale allow_smallfont=allow_smallfont or false shadow_col=shadow_col or false if type(x)=='table' and #x==0 then local offset=5 --we don't want the text to touch the border of the screen x={offset,240-offset} end local l_widths={} local l_height=math.floor(math.max(normal_char_height,spec_char_height or 0)*scale) if type(x)=='table' and #x==2 then local splitted_text={} splitted_text,l_widths=split_text(text,x[2]-x[1],fixed,scale,smallfont) if not smallfont and allow_smallfont and (too_wide(l_widths,x[2]-x[1]) or (type(y)=='table' and #y==2 and (#splitted_text*(l_height+interline)-interline>y[2]-y[1]))) then smallfont=true splitted_text,l_widths=split_text(text,x[2]-x[1],fixed,scale,smallfont) end text=splitted_text end local x_ref=get_ref_pos(x,align_x,'x') local y_ref=get_ref_pos(y,align_y,'y') if type(text)=="string" then --if text is not splitted in lines local width=get_text_width(text,fixed,scale,smallfont) x=get_pos(align_x,x_ref,width) y=get_pos(align_y,y_ref,l_height) if shadow_col then print_special(text,x-1,y+1,shadow_col,fixed,scale,smallfont) end print_special(text,x,y,color,fixed,scale,smallfont) elseif type(text)=="table" then --if text is splitted in lines local y_high=get_pos(align_y,y_ref,(l_height+interline)*#text-interline) if spec_char_height then local height_diff=(spec_char_height-normal_char_height)*scale y_high=y_high+height_diff/2 end for line_=1,#text,1 do local x_line=get_pos(align_x,x_ref,l_widths[line_]) local y_line=y_high+(line_-1)*(l_height+interline) if shadow_col then print_special(text[line_],x_line-1,y_line+1,shadow_col,fixed,scale,smallfont) end print_special(text[line_],x_line,y_line,color,fixed,scale,smallfont) end end end ------------------------------ ------------------------------ ------------------------------ --MENUS DISPLAYED IN THIS CART ------------------------------ --The rest of the code is just the tutorial displayed when running the game function init() menu='menu_1' rect_x=160 rect_y_min=47 rect_height=40 horiz_align=0 vertic_align=0 end init() hspace=15 xl_en=20 xu_en=xl_en+get_text_width("{{arrow}} English") xl_de=xu_en+hspace xu_de=xl_de+get_text_width("{{arrow}} Deutsch") xl_eo=xu_de+hspace xu_eo=xl_eo+get_text_width("{{arrow}} Esperanto") xl_next=200 xu_next=xl_next+get_text_width("{{arrow}} Next") ymin_0=35 ymax_0=ymin_0+spec_char_height --{text, x, align_x, y, align_y menu_1={{"{{arrow}} English",{xl_en,xu_en},-1,{ymin_0,ymax_0},-1}, {"{{arrow}} Deutsch",{xl_de,xu_de},-1,{ymin_0,ymax_0},-1}, {"{{arrow}} Esperanto",{xl_eo,xu_eo},-1,{ymin_0,ymax_0},-1}, {"{{arrow}} Next",{xl_next,xu_next},-1,{120,127},-1}, } ymin_1=25 ymax_1=ymin_1+spec_char_height hspace=15 xl_en=20 xu_en=xl_en+get_text_width("{{arrow}} English") xl_es=xu_en+hspace xu_es=xl_es+get_text_width("{{arrow}} Espa{{n_tilde}}ol") xl_fr=xu_es+hspace xu_fr=xl_fr+get_text_width("{{arrow}} Fran{{c_cedilla}}ais") xl_next=200 xu_next=200+get_text_width("{{arrow}} Next") menu_2={{"{{arrow}} English",{xl_en,xu_en},-1,{ymin_1,ymax_1},-1}, {"{{arrow}} Espa{{n_tilde}}ol",{xl_es,xu_es},-1,{ymin_1,ymax_1},-1}, {"{{arrow}} Fran{{c_cedilla}}ais",{xl_fr,xu_fr},-1,{ymin_1,ymax_1},-1}, {"{{arrow}} Next",{xl_next,xu_next},-1,{120,127},-1}, } ymin_2=ymin_1+14 ymax_2=ymin_2+spec_char_height xl_left=20 xu_left=xl_left+get_text_width("{{arrow}} Align left") xl_hcenter=xu_left+hspace xu_hcenter=xl_hcenter+get_text_width("{{arrow}} Center") xl_right=xu_hcenter+hspace xu_right=xl_right+get_text_width("{{arrow}} Align right") ymin_3=ymin_2+14 ymax_3=ymin_3+spec_char_height xl_up=20 xu_up=xl_up+get_text_width("{{arrow}} Align up") xl_vcenter=xu_up+hspace xu_vcenter=xl_vcenter+get_text_width("{{arrow}} Center") xl_low=xu_vcenter+hspace xu_low=xl_low+get_text_width("{{arrow}} Align low") menu_5={{"{{arrow}} English",{xl_en,xu_en},-1,{ymin_1,ymax_1},-1}, {"{{arrow}} Espa{{n_tilde}}ol",{xl_es,xu_es},-1,{ymin_1,ymax_1},-1}, {"{{arrow}} Fran{{c_cedilla}}ais",{xl_fr,xu_fr},-1,{ymin_1,ymax_1},-1}, {"{{arrow}} Align left",{xl_left,xu_left},-1,{ymin_2,ymax_2},-1}, {"{{arrow}} Center",{xl_hcenter,xu_hcenter},-1,{ymin_2,ymax_2},-1}, {"{{arrow}} Align right",{xl_right,xu_right},-1,{ymin_2,ymax_2},-1}, {"{{arrow}} Align up",{xl_up,xu_up},-1,{ymin_3,ymax_3},-1}, {"{{arrow}} Center",{xl_vcenter,xu_vcenter},-1,{ymin_3,ymax_3},-1}, {"{{arrow}} Align low",{xl_low,xu_low},-1,{ymin_3,ymax_3},-1}, {"{{arrow}} Next",{xl_next,xu_next},-1,{120,127},-1}, } menus={menu_1=menu_1,menu_2=menu_2,menu_3=menu_2,menu_4=menu_2,menu_5=menu_5,menu_6=menu_5,menu_7=menu_5} function mouse_press() local mp=false if mx>0 and my>0 and mx<240 and my<136 and not md_prev and md then mp=true end return mp end function display_buttons(buttons) for ii=1,#buttons,1 do local text=buttons[ii][1] local x=buttons[ii][2] local align_x=buttons[ii][3] local y=buttons[ii][4] local align_y=buttons[ii][5] eprint(text,x,align_x,y,align_y,txt_col) end end function select_button(buttons) for ii=1,#buttons,1 do local x_min,x_max=buttons[ii][2][1],buttons[ii][2][2] local y_min,y_max=buttons[ii][4][1],buttons[ii][4][2] if mx>x_min and mxy_min-5 and myrect_y_min and my