From 5b86c49447606dded98207255c5cf07e6513ac28 Mon Sep 17 00:00:00 2001 From: bakatrouble Date: Fri, 24 Jan 2020 13:12:46 +0300 Subject: [PATCH] add shepherd --- image_text.py | 105 ++++++++++++++++++++++++++++++++++++++++++++ lobster.ttf | Bin 0 -> 140856 bytes main.py | 10 ++++- morj.py | 112 +---------------------------------------------- requirements.txt | 1 + shepherd.jpg | Bin 0 -> 21393 bytes shepherd.py | 11 +++++ 7 files changed, 127 insertions(+), 112 deletions(-) create mode 100644 image_text.py create mode 100644 lobster.ttf create mode 100644 shepherd.jpg create mode 100644 shepherd.py diff --git a/image_text.py b/image_text.py new file mode 100644 index 0000000..09adfd5 --- /dev/null +++ b/image_text.py @@ -0,0 +1,105 @@ +from PIL import Image, ImageDraw, ImageFont + + +class ImageText(object): + def __init__(self, filename_or_size, mode='RGBA', background=(0, 0, 0, 0), + encoding='utf8'): + if isinstance(filename_or_size, str): + self.filename = filename_or_size + self.image = Image.open(self.filename) + self.size = self.image.size + elif isinstance(filename_or_size, (list, tuple)): + self.size = filename_or_size + self.image = Image.new(mode, self.size, color=background) + self.filename = None + self.draw = ImageDraw.Draw(self.image) + self.encoding = encoding + + def save(self, filename=None): + self.image.save(filename or self.filename) + + def get_font_size(self, text, font, max_width=None, max_height=None): + if max_width is None and max_height is None: + raise ValueError('You need to pass max_width or max_height') + font_size = 1 + text_size = self.get_text_size(font, font_size, text) + if (max_width is not None and text_size[0] > max_width) or \ + (max_height is not None and text_size[1] > max_height): + raise ValueError("Text can't be filled in only (%dpx, %dpx)" % text_size) + while True: + if (max_width is not None and text_size[0] >= max_width) or \ + (max_height is not None and text_size[1] >= max_height): + return font_size - 1 + font_size += 1 + text_size = self.get_text_size(font, font_size, text) + + def write_text(self, position, text, font_filename, font_size=11, color=(0, 0, 0), max_width=None, max_height=None): + x, y = position + if font_size == 'fill' and \ + (max_width is not None or max_height is not None): + font_size = self.get_font_size(text, font_filename, max_width, max_height) + text_size = self.get_text_size(font_filename, font_size, text) + font = ImageFont.truetype(font_filename, font_size) + if x == 'center': + x = (self.size[0] - text_size[0]) / 2 + if y == 'center': + y = (self.size[1] - text_size[1]) / 2 + self.draw.text((x, y), text, font=font, fill=color) + return text_size + + def get_text_size(self, font_filename, font_size, text): + font = ImageFont.truetype(font_filename, font_size) + return font.getsize(text) + + def write_text_box(self, position, text, box_width, font_filename, font_size=11, color=(0, 0, 0), place='left', + justify_last_line=False): + x, y = position + lines = [] + line = [] + text_height = 0 + text_lines = text.split('\n') + for text_line in text_lines: + words = text_line.split(' ') + for word in words: + new_line = ' '.join(line + [word]) + size = self.get_text_size(font_filename, font_size, new_line) + text_height = size[1] + if size[0] <= box_width: + line.append(word) + else: + lines.append(line) + line = [word] + if line: + lines.append(line) + line = [] + lines = [' '.join(line) for line in lines if line] + height = y + for index, line in enumerate(lines): + height += text_height + if place == 'left': + self.write_text((x, height), line, font_filename, font_size, color) + elif place == 'right': + total_size = self.get_text_size(font_filename, font_size, line) + x_left = x + box_width - total_size[0] + self.write_text((x_left, height), line, font_filename, font_size, color) + elif place == 'center': + total_size = self.get_text_size(font_filename, font_size, line) + x_left = int(x + ((box_width - total_size[0]) / 2)) + self.write_text((x_left, height), line, font_filename, font_size, color) + elif place == 'justify': + words = line.split() + if (index == len(lines) - 1 and not justify_last_line) or len(words) == 1: + self.write_text((x, height), line, font_filename, font_size, color) + continue + line_without_spaces = ''.join(words) + total_size = self.get_text_size(font_filename, font_size, line_without_spaces) + space_width = (box_width - total_size[0]) / (len(words) - 1.0) + start_x = x + for word in words[:-1]: + self.write_text((start_x, height), word, font_filename, font_size, color) + word_size = self.get_text_size(font_filename, font_size, word) + start_x += word_size[0] + space_width + last_word_size = self.get_text_size(font_filename, font_size, words[-1]) + last_word_x = x + box_width - last_word_size[0] + self.write_text((last_word_x, height), words[-1], font_filename, font_size, color) + return box_width, height - y \ No newline at end of file diff --git a/lobster.ttf b/lobster.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e1d7effea4041db2d1f0e28f310ef4bb9f428d4e GIT binary patch literal 140856 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 literal 0 HcmV?d00001 diff --git a/main.py b/main.py index 54c7fb3..673015c 100755 --- a/main.py +++ b/main.py @@ -22,7 +22,7 @@ from config import BOT_TOKEN, SENTRY_DSN, MANAGEMENT_CHAT, DEBUG from db import get_conn, Subscriber, PersistentMapping, commit from morj import draw_morj from send_users_list import send_users_list - +from shepherd import draw_shepherd logging.basicConfig(level=logging.WARNING) queue = Queue() @@ -246,6 +246,14 @@ def morj(bot: Bot, update: Update): os.unlink(fname) +def shepherd(bot: Bot, update: Update): + text = update.effective_message.text[10:] + fname = '/tmp/shepherd{}.png'.format(uuid4()) + draw_shepherd(text, fname) + update.effective_message.reply_photo(open(fname, 'rb')) + os.unlink(fname) + + def _process_message(bot: Bot, m: Message): if m.sticker or m.animation: delta = datetime.now() - conn.root.last_media diff --git a/morj.py b/morj.py index 5021cf4..f5c9ea9 100644 --- a/morj.py +++ b/morj.py @@ -1,119 +1,9 @@ -#!/usr/bin/env python -# coding: utf-8 - -# Copyright 2011 Álvaro Justen [alvarojusten at gmail dot com] -# License: GPL - -from PIL import Image, ImageDraw, ImageFont +from image_text import ImageText FONT_FILE = 'CenturyGothicBold.ttf' BG = 'MORJ.png' -class ImageText(object): - def __init__(self, filename_or_size, mode='RGBA', background=(0, 0, 0, 0), - encoding='utf8'): - if isinstance(filename_or_size, str): - self.filename = filename_or_size - self.image = Image.open(self.filename) - self.size = self.image.size - elif isinstance(filename_or_size, (list, tuple)): - self.size = filename_or_size - self.image = Image.new(mode, self.size, color=background) - self.filename = None - self.draw = ImageDraw.Draw(self.image) - self.encoding = encoding - - def save(self, filename=None): - self.image.save(filename or self.filename) - - def get_font_size(self, text, font, max_width=None, max_height=None): - if max_width is None and max_height is None: - raise ValueError('You need to pass max_width or max_height') - font_size = 1 - text_size = self.get_text_size(font, font_size, text) - if (max_width is not None and text_size[0] > max_width) or \ - (max_height is not None and text_size[1] > max_height): - raise ValueError("Text can't be filled in only (%dpx, %dpx)" % text_size) - while True: - if (max_width is not None and text_size[0] >= max_width) or \ - (max_height is not None and text_size[1] >= max_height): - return font_size - 1 - font_size += 1 - text_size = self.get_text_size(font, font_size, text) - - def write_text(self, position, text, font_filename, font_size=11, color=(0, 0, 0), max_width=None, max_height=None): - x, y = position - if font_size == 'fill' and \ - (max_width is not None or max_height is not None): - font_size = self.get_font_size(text, font_filename, max_width, max_height) - text_size = self.get_text_size(font_filename, font_size, text) - font = ImageFont.truetype(font_filename, font_size) - if x == 'center': - x = (self.size[0] - text_size[0]) / 2 - if y == 'center': - y = (self.size[1] - text_size[1]) / 2 - self.draw.text((x, y), text, font=font, fill=color) - return text_size - - def get_text_size(self, font_filename, font_size, text): - font = ImageFont.truetype(font_filename, font_size) - return font.getsize(text) - - def write_text_box(self, position, text, box_width, font_filename, font_size=11, color=(0, 0, 0), place='left', - justify_last_line=False): - x, y = position - lines = [] - line = [] - text_height = 0 - text_lines = text.split('\n') - for text_line in text_lines: - words = text_line.split(' ') - for word in words: - new_line = ' '.join(line + [word]) - size = self.get_text_size(font_filename, font_size, new_line) - text_height = size[1] - if size[0] <= box_width: - line.append(word) - else: - lines.append(line) - line = [word] - if line: - lines.append(line) - line = [] - lines = [' '.join(line) for line in lines if line] - height = y - for index, line in enumerate(lines): - height += text_height - if place == 'left': - self.write_text((x, height), line, font_filename, font_size, color) - elif place == 'right': - total_size = self.get_text_size(font_filename, font_size, line) - x_left = x + box_width - total_size[0] - self.write_text((x_left, height), line, font_filename, font_size, color) - elif place == 'center': - total_size = self.get_text_size(font_filename, font_size, line) - x_left = int(x + ((box_width - total_size[0]) / 2)) - self.write_text((x_left, height), line, font_filename, font_size, color) - elif place == 'justify': - words = line.split() - if (index == len(lines) - 1 and not justify_last_line) or len(words) == 1: - self.write_text((x, height), line, font_filename, font_size, color) - continue - line_without_spaces = ''.join(words) - total_size = self.get_text_size(font_filename, font_size, line_without_spaces) - space_width = (box_width - total_size[0]) / (len(words) - 1.0) - start_x = x - for word in words[:-1]: - self.write_text((start_x, height), word, font_filename, font_size, color) - word_size = self.get_text_size(font_filename, font_size, word) - start_x += word_size[0] + space_width - last_word_size = self.get_text_size(font_filename, font_size, words[-1]) - last_word_x = x + box_width - last_word_size[0] - self.write_text((last_word_x, height), words[-1], font_filename, font_size, color) - return box_width, height - y - - def draw_morj(text, filename): img = ImageText(BG) img.write_text_box((67, 70), text, box_width=800, font_filename=FONT_FILE, font_size=40, color=(255, 255, 255)) diff --git a/requirements.txt b/requirements.txt index 2d2ed91..f2c53ba 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,6 +6,7 @@ cryptography==2.6.1 future==0.17.1 idna==2.8 persistent==4.4.3 +Pillow==7.0.0 pyaes==1.6.1 pycparser==2.19 Pyrogram==0.11.0 diff --git a/shepherd.jpg b/shepherd.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aa009befac1681c4b6e34a44b05582210eea6a71 GIT binary patch literal 21393 zcmex=$<%PwSRFvdYWaQ-KK!z}~va+(XvGZ|o z@X3h?ipY@+{vTivovIz$!vMUve7&T5@$f4}C@t|nX z#SbdRNkvVZTw>x9l2WQ_>Kd9_CZ=ZQ7M51dF0O9w9-dyoA)#U65s^{JDXD4c8JStd zC8cHM6_r)ZEv;?s9i3g1CQq3GGAU*RJ2VdF$b$$4{OPfBE|D`;VW$K>lK6U=!0ld(M2vX z6_bamA3ENU3VqhTj)Y`qyRu&D?p8QY<~GPbSQ3;NiQe!Wf;n;i{pjs8#jf zdu#V~3R2FN&huIs zCe>NhuTe<9wQIgucG*3-59b!Hjolz{^T4NsZRQg!9N+mdd^hdd&or{aYz1&-38lu^+vU z*Rr!JR`1xVolqrcC9EiSpr=ms#nnUEpLn$&%eSwud-YmO+^VE~+m91-jo%e3h~7-^YfF{-#l}iBFIx&*uzvXQ$fyOX>V0zNoMf39o=j7 zQ}^!P*J-^re(Ge)rBUxL{{B^e(Ac+a{YU+{4{&%42)%*O!jhEB+PWktY z!{?m)cLtUDCxVXd+R+vATr|V%lJ~C7b!+ctUq5x^(8b)i_iq0gztLY$~1W_UfKt(+ayECm;0dY%8cxW}o$CHs^zV+nRpeJu=~}#3W00rxqrT zUrpMN;#=)Z=AD1^DO+kWr|#C>)0;zje|jpM7SxzJBqi&qqx&baHjP|EJ&A zpH#7m1jY+h9ds25U>x*VIZSQ;qq*!ZQxmS3a{RmYpW)S8MYiZp{sbk5n12y#GcK%* z{B+rOzmlq{XxZ5{IdN9u%pc_=uH>(ueW*(H{f!WZJkz~C=2ErmI1l`1Sk}jQynxZ} z;jZ;vHtxlFpB!_uAM)zw#Rp$kakR6Z@%Hn<{|xI|YOTZD{>1)RzS#BQ>GNzAa@pNG z@?*BGUgPIE?PH%2qk<40gE~V(0#EprCzZUBNy3wM|GxA&KYLx*_x#f2X5p@u#MS>9 z%wPUXzYx!n|3|s@!3_Q;;k2nD{d`=a6HXXTR;yHL;`0x1zfi`YagvKsU7dO5`dR-O zlFlam@n4sbn_8^e$XTSv@b^v-ABXzYgA%fJ&Od5(|5G5S1#@9yV>QrwxyrV z4qpAXW%Aa3rN3)T&U%ObNX*V$8tGrIc~wDQMkD6Ik_H*R+o$@Egr|NK(|q(JeEo3= zwUmo_>@ssYIxN;LUuyJ-<9VBhnxjgPqI-}Lhcb)&q0LKYt#E2Jm(|?%H$VTA%nI$3 z_e=B7|2f}LpT3{%ctb6j8L5#wXYp;1z9R@(n`*W0eWah$z5WM$Fbd(WjG)Jx5cdh){R>B@_L zd~@dS-#B^6g8I`Q{_f6A6)OFOC*KtQye8jMqrK$Eyt9f|k}IA!?l~R3BR=Qb`J0am zPgpYdwKFSRw_a2+KlH=1mF#VM%5_rC{EM5rPARA9^F|7!#7NnHRftjlRh_ zHV+4*0`}nJUOPj+R!ipwd+oWLchDf#;ll~`pgs}Oxv+DWYUa8N2u~K|4hlEwze951xE#)@u z6O4*lN)^ISUH$c+fiEG$YtC%Xn=f{$rdsQ#P*Ej!@>pwJYp87|-`D`m|SE$csF;0BcqzLgob-pv16+gBs&Rk*Thwf~i0zx_6DzWjFDZU4>Nw`}*{DI(Z$p_YMxtL=68 zr3Ke?x6FM1pzq&XIS&OrmPw3P8sDCOQp=n0L;sO|vrV*=Uhn#-J@43m=^Q^bN8Y!c z<*%Fj-s1bRCcAftdwzV@pP{!^p4TsR5}*6*y!vZAeHE|YaGL())nSc%^mm%3#rE1S z<=dw3cl)yQi{F+I%Z00AcgxM_+3nTD$&QOAUE!0~U(t|N=cZis$~!Bpu~OUk z%$K>r!9QwOIzIf*ARK$L^5Nmt`*h^L{V4^U@XnzJ^}i^4mAu zZ{DF__pG}kFC141;%R69^Yu;TIx|`6<8mUKe)G32-*CNT#m=VlK@%VCY_)cq)YHzq z?E{B|q{aF$uW6RWv2N?5U(BDM^83xaUpWaoSH9f!C;aE!N58j9hJhM$@;@TBM-@Fj zYRB=BZ&FC=(>BHOyyklzC;x?RUGU>S!@*sT`rqsqe7V{9OXm~86ZH@Hn}3Dd`fL{V zjXk*aZq~l9B|)p%-qzMVUbd)9yLH)ib1scV6Iew89R?egx!zZ!&)$*Pl%W^zcXdt7 z$>bGB*k|VboA;th#6~dQuEyg>rg?Yrm9MqJK7GfJ?uvdKeM#{@LwJ$Li5=U&O<*d# zKk-V@n>r0F3G(LP=W8;|rXg>GZv{_5SmR);v>!nB6E1q_SiKi?SCKOaX_!#dy z;dy95uhX|}*Kc3^X@BtM%asSa4jo%{wLbQ5_|t_SyjLqvDb+aepvl1T%aZjgY^pze zs8}B}IpW$snb%dhx1ac{b+3v#Eqm}k!@L#?7Wo>U?JKjL`_I7jCrJ7CLEUU`w;#SA_WyP}cRA$p zpUh>Rl?H9Me@CD0vV5X2QKI4?!vsD?Wm|TObvoCjrzdAvl?G3`8>zkCB)5HG$5QR1 zOJ8ric&|ok*JYbT@$P>zugzwa9GI!RZI{zW-Um(0J%3t+8=L!%FS9z|a!b9xWaZZC ze(Bd2U-=e&oL#Ya!Y22gCk+l9d=3XB9_`MxyC$v8p`*Lt(}QijO0DL?Ees4sl@<)8 ztL4oTIdK2|r%TUd*z7oFZqs;U6a3J@^4!GLGasnm(=0N4qkXwX|D#DygFN7{)f}Mhilz-W@i@cP1t*O%Yt7yQ<&!; z+9z_c#&O+?$(6gzHr6iRSLD0(^zr%YIL?+!)gSxMAnTr|TN?T0ZQbRC+poM?JeA|S z0#m(kylLlyihS;x+40TK_TTG!Rk^(M*MElTPioh*OgJkrO;X6?#EBAxCfkmc+K+v$ zAMJ1ZcOh-(2kFf1`qv&iT}|C|d`C~J_PUF8MnAGt7;B;*zgE8gHt^QH1%EuwR!se& zEh^u-e`j6q{)4gsXI9$&XIQ`Q_~q=kU3U5J!&`3DgkF9(qqh6exmo?UWW5i+mw&D# zV6XM6WWH3zzLNXN{~0*^yVx_n%uP6~DeuY1@H=hKsyXI8EqQPD2FG`M)~P!kb&9U* z|CICPmv)!G+{vtirtjG+ru!(QKJoV7>ahQVMfZOO#qcfb<$vgh~R^V4^~-8N&-R_!Y`>FRP%@|o{+y<4%aM^E+P>SL?! zn*4jLdC*JOZh7Ayi60l2{g|aK%N}z-d!1FsktO_EPZ|%hZ=UaD;O~4w^bPN)FYEj3 z>?@4wS$=%TniWxD^7T)VKc(jrYZJ{$z4x{F)(l>rdd* z0}_1?_}1-f-znem*y2~sd-df(UB?ryKDc`8?SBU5#cv88Zshg7v~t%U|Iig-60Rrb zxXmkcXx(^@QHAGM%H-g{c!ed8s>-Drsa%U{l#`^VwovO_NXJ6N8} z2WVgTC;Q{M)5m=i)fO-ERxq^at59R`6jWAL5aO_T(BydV9mkrDk$T3w{lJVL!igY_qK({-wyKJZJNGy{?gX2!)shDBYz%T5qbAUoOgPCuI}0+?kN+_w8ru;WS@{F z_51j7d7c{S$JRI2fBma`W=}8Enu|UkEtwan2+q&>WF7RQ{9$^7jm^O?=eckETs+_C zf#iL=1t|3|eA6`f!L5z5y+>x1-0E_jU7_ZY zQqw1Uc!J^e3H?9AZ~SN2vb@>kzF>{n-Yb7P9$zV`@I52k%J4>JPs(?el*Sv4@8c!f z5?YxBmNdD&!jxfXE*%2HEXlqS=*ZLmrH-liI`)2_}tk$UK)$`E}o;Y zsLNN4?O*%jda)Nf{+;@0wmPGENp{I^dy#YePh(@`rEAhvoMcN)@&yhUc5Jn^vSfe8 zVBeR0He;RF4lPmHr!4oYwg3K}<+Ru1#cbPl_aB=dy3U;U_@H@|&iiZ69j`v!c6>*- zwSCmvFZx}-r1vEI{+PSw#(##(@&YeCOE|w69c^OYY5Lh#^kB5&p=)7RYu^87SgQU* z`nY76{nh>2^0_bUY(BC+Vr%xlP~**Uva-g0mEt7BSBcZv?GE6h3_djXX`xqGkgNxHLJva_?K@Pr?JCS%)iaC^%A$zf&hbA#hDx9r+{WqEh2Ysr6x z^{@B#o$At9&vrav5Db?wp84bTp?7+(jb`b>dx=tx&!YXW9Mm``|MDbDIZM~i-4Dd( zo44E9-hT1xN!qnl|znYogaJmnWK|NLuxy`{$X?;^2RuTJ}Z44WyFtIV-vf13}3KjS?k z3)z$GeFfHG_urPTJe&F9+iAbHFxUNi<Fy2SHLdRqFNsuebj@9G&`>n1I3K4tLx)A6gj_v?QB zVw3hNDgExe&`j2&S1(0JIjem3aOg92@}7Kw!BTDC*1xlD7*|y2AKpHF*QuZ3zb5u< z-By&~!p`t}?vshP8?T$*s8Bv2C;Fj;vBX!;WWGf8%KA#{Ur*0F)UvT}Ej9h{^SelG z+3dp?!n*J7y}MtfYDNtIrkYFTiLN5y$LGzsccsM3GsRUt?(^{eylf4uZGw@$EPTGAa^+sA+6Iqc`w$j4{?yJ}va`a^f+F+Sci*FN*ztRmaiyoxveX4JA@1AXa)%)~Ukh5;ji$G7{;ng4hGd#*$x*+mDL*nbQjX#d5mMCtevIt9s@R4)C%^a zL3dsz{XTfB`^S1$zm&^*shlfcKE5DSs37yelD&a>*84rCkLC&=Vaq7_dC&TEP3@vf z6=%W)=6_pU!14O}^1U@nAH+B97g^eOKj!kp63Y!LO`dswW`3xCz~p}6@yoc~5C7U9 zzcu%blzpE`rEckOi!-zAyL19P7#ZeH&Uu{pM8JXF;+Ti&&%XT057afSLMLZeo0h(s z)^|5*^Q+6YckGnbPMQ++Xa9qmFSgsdp8pYEzi;>Qv!ZWzY`MB7&Foh13d>JVnJpz> zOZNy=H^0eVu)gic!{_ZQ9@<`fbtud0g~p<;6B`zFX)p{FUN&Lf600VTgDfe6ev4Y( zZjcxKQ}H44LwvuU!nXdjnbosr3*S(*S^l8NZiema*&q44zP_zH?Z5e&sph+fmlqpG zEt&E6hQ)b>lzHsx>W%SHHT547KDIaLiQTjPHEj;>*@euL8$Tca(Rld^*N-Emx32zr z&j0vv|Dj{S*9tCvzg<7;{WBT2ID?P&9h1{`u8+UxI;Z35j2Q>Na$cwl`LQSSQN1{rvyUGX3YtX^*8&w zc#p?DxgUvj(?08zS2cb^qvHe7|*lN0jNjxssLpuFACZ zOapSaenj(g8``?ry9<^A{n z8I&g*@4qI$h)ZM9z9kP(8vNTAWtRUsw>E$2%d$za_hRgBB=)52{Lf%B`2yptX|mkW z^8|IIZ2wH0IN{^1o$N0h*01=_kb1stx}EeTwU1`o(>`Q_HwjP0zOn zFnm?oQ}ftj@$|&GX_u>2Yw!Qmy?MFq(77#_ZkDFct|Z;-B`J z!p>tsn`*`8_x)$+e1GZmi%aER@6Tu~>iW5R^97stk9hWf=&0E3@o|a!>C5k8P44FR z*=(vW)qG>Kd4hk8fc8ag_D6DU^He_gZCqrNLBfC7jP|Dh}F*C`^7m>+5Uh*Ab$T`Mx)Q*#`f)zI5VA@soka_w9dH{w2`0 zk{zRXMlY^u%@03#U+ByHH})M-_ohw!S$O;23FVk%!Re~@OdR&TwU6Uie+U1uogBDb z&g_z+zUeNG_m5pqW*qmd{a|5t!~!Z*<#TSb5~zB9Z+CC?qwjsD{hZs|zH+~ay5}I2*^=O|#XLt` zCb@AEgZfTO%Wtm=_J;OE%<#3%d%rw-cYg6CiyxmXOmlVm?H6@vzxKEIa{lJ`O$@u&Vi8ma-<@Vd#=y`n9n{oO|oO}PekMTJ*ksld9 z>_2=rJ2G%)QuFDSba|T=H~t4P@`v_`cYT<+vTMa&EIzKOgq2syZW!|SN=0>>JfDQFvq6i%=b$t{xbwN{%Kf0ar2~z@I^J^ zKc=qwVIH%2U5UJ z$`&WquF+h7e$$)#vXibBMyap%&G_^7*W#;d+n07m{eAK0ZfQzU4~GJDq;F46;D^lz z;#Buf`p*#Y;q0F6MlyRYda9_NUuigT^1I?V???GJcPT%fYnIP{Lj3R~kM@AJ%=0sa znm>1(Gjf#SnbUmb(SDZ$AD1x;zPqwVcKzD5%U#}okJX-M8?$arX;}JMk?_ioj}LtO zA$@%F%WIzY-%?(vZOXK?=6I66k3;#o#QCTPuU{41=t#<4PADQX*cx&sY z_P625YSTZ4$wu9rWvQR5G&jY$Nu_7XgI^6D^@8z%heaNC%#Bg`HmklW>-^K5&mYGt z1;pA_pI*}ZLsiD&c!Iz3jjmVzXX7n97FvnMYHFLj z`R5*^wrp~=VaB4a6IVcP8z`)~Ny($lQpCzYp~;BD)=}h@hToyA=cn$={o_Boz~8*n z#xyVO;+*O8?io%_tDaze{Qd2Pk7s?%e{}bsYh8!Hx)uQrWfs8+t~F0TzJ9Q!Y(q@N z@5cI-sr@S`mvMWKl$_L*E~IA=InFwg`e+T zTOL$%>b_}J`Oy;VFgI@0uv!O4GX?^yA<7cfumYu~@LwoYqH!Ih<9 zQA^e@d>*{)xvA)t^&j{T>{{QsCp~$^)+G~PTodOuJ@RgcQ$Uk|+>;56%nMXzedE7% zKW_Wx52nl89~XXG>-WO$&L^e*N%ckzb#_zVOmNN5=P8IjEEDL);PKdjfq4N#0c*|9 zkMRfMMQdUodG8mB{gLOtdH%FpH}w`(DmDmj$l>#}dGgq1^3fVIVWYO(8OQdPEtINO zyS9GWx83{JUsS%j((~a9i=$>YAKlk~93-JG_UP%_C!b^{Y!b0hDP{O_*1J5rc-bqq z%Yj>FNiMAM&DRnwsBYp{+IQ$j@gsfq8t)G&zkJvAC~e&A(pGC1alqpsyEKQbg@rPU z;5_YDpM5Sq{c<(WUE^!!oBa>|9%qy1TeWR{TFuMfwh^z*<3+z@ZmD>dx_$PUT@#pF znpy1p9Vd9mE$RC0ytndwYe_v%jlzegukL4UbWAR;N$IM*@UulkqGtkUk=Z^2E4hYe zJL3iaUA!l;Y5wVpCA0sA7B_1fYB4KeP+QdfPGgK2MAN;K|G|`Q`n!HE%u$_e4#b?04<;_4uj#h1Z65 zZ;rNG_HN~}%w0>j-`uLr?ft@dvg{Ehmp>g!J7xVJd_SD)c-sG=w1EGg-!m2eDl09y zvQMkV@^XrH;iJ{!%Ihc2Zv1(SHz~fR?niO%e64@K-pel9QaJzjd(qo%hn{_ToW+%W z>GhwUSANYuX4P%8s%QOU`=P#h*`#{@7Xgvy6%J0>eOk?y`GhC)6(-|ot8W{Zyr}Z| zwQg;>?9w^R`pWZc8)Q9g8=iby&-YRPt!~D|Ep@UV{!B7_Y5S*v@vF&MeKnyZ`*h+Z#{Yq-uFx zxqf$%?Jxhns(CwhO_AgNptpLZH&c>y<4l&6C+rgi`Pe0yZ62>JGXA6dW8!0d{yVS# zsa{?7@5Z^@9KHL~{r-Lw-*C+0x#-h-d>^-W{!z&bKRj#8G^h7+1%gW&Pn_eEk&*LP z+IRX#vVN!P2f68mkCsQ8RxUR3tJx^YFeyNQf#Hp^GV`44b=mT7B#IwA7MUHjd#AN- z`OWex=b9syXZ7x`nfUS8+7JI3j@=5F{Pv&t)nu2~3R}y2>JKz1e_hinAADttY?!RO z@2*+rKHdE^$*sWgo$c`?e)fgyFX+$O881^~`(b+bgNdbcwe+_Lw(f2hJlB4`K;|!> z`_|Of$5F*KGrG$BtLrEKXE0hmZO3c&mCxgO>N9w?gZpIdk1=F!-@{n4V1|m_lG2`k z$@|>BzU|IjI8S7jr1C6HhLTA}90gSZ?kv^UkHw4c6VJNGuvciO`7M|C9r~h%&3{j_ zC;yTuyu&Ns_@6=a{U7mqx!Ehvs$OqjTH`64GCRrt*NOiOGi86i_cnZZ#?EN^wN2j_ zU%M;6Jmk;(2O@=&m)oaD)|}t4VujASwd-{i_iUMEnJ|}S;)!;}gOV)rJ|SN}1of;u zJ3u z)%$n!WAx$R=hEvJciX@JGymHDumg`$XQX`Ey=Tqkuik&w)O?N5ikOOKQhk-rFKQS=gvygYr=cvQqIxmS=B;D;dJfOn!?c{;8HMt+9AGP=WasIYe zJ$jd!fl6!I#x{8kCVq{-=Qv(?zI+|eIr+&{W6OPElfw3XzrN`|Lz`_(m})@O>N|UX zdsH0v`dHqpY-Qy3?N&`1|5nDc2T!Uz-^JJb(e`!m1MwsEoIm&v-J0}j(Wh9aPcH;{ z_bANQ6-b!m!93~j@9@5es5|j-hm$jcQKrdp^(ixG?!w z_OSv98bm85;gG7%z*g zd1ZYr>X$rMrku#fGfVz6q`r{)C*PE~bqbU135m6<^_%YteKq6%&%p8ZQ2Oea^D^ll z`5gahzqPqsIP27M$!k@YmrY-L|EIXjCfR7a$V>KV@5N&tZsiU4+8F%3p?vD`2MqFS zOJ~);IlsiM`RzZAy|etDNr&{*ExEpzp*HjC^RP#24y`||U8VZ#?ra@a(M!)y+?TB5 zzVk!fD>mO}|Kz~S<{i&JE8kXO`M`OcMfh07L51X5XMfm!SRC-9Ik&LJ)WhVi-7QDq z6Ujy%@eB_Xlp8pnOuXLnxqtoFT&we;m)@1Ue&KR$yWxx_J^vX5l-Xa@{tiF&pCR|7 z{egb@*oZ^(Z%O$+W_O+3va3V5iQ}chN%jlh6uN%JthPDw_`~GIlKOdDeQ$?eKlS?8 ztHSWZ!Anim_TJm)zUGh355b4~d9pfJ-n-|&=I)V$3x$p;cXGTaV=8jbnZxh%;QE?B zSD)|W`f>C@y|BBK-ileN4-c4KztQvjg5^*CZG5$@Ra^!od~0MmPAEJPd>t=6JLHUd z@ZW9UKZpI^ReOA)W03dvvJE?aZV$`v*m~F4;ZoYwt+Q{u)p;myGf8gw28JTfH|%O# zx^vfae_YmE{89gL&p)aC^E_&-AD&R2RPos2vz!AT`$EfO)hrfIKF^D6S>Czg@8&H* zyK8gSZ26qKq-%Zf&84YjU);jG?38}&epI^mdwUJMA|WA3_1OuRA4qtEzG z%H#tIT_5ku{NO%n$7A;P5wH21k7xL&D|x6mxd%@0V83zwj+NW&)TJ*cy!=(V#%$UJ z9(NHB2IfDt{=qTz$L9*^7C*GxnHM0bt6*LzyHg|i$;7V?hhO;C+JzqpdGScGeW9g_{$4?SWzRg@6E^Zm zp7udM%#Yra`sQF2Ehfk6dn+N;# z8;@-_$1`_5d{ZX&=R&UD>d?IZ3?H7a_ZRmn+iY%A_~0$`v8c?A*WL&vFbdw$WBDi_ zQn&c!3EP9~6+hTStv?tqB`X|1G0`KrO{3?0FzUW8# zQ90R&N25-_I`3z9!XhE;mnkM)Kcw_Fv)m z;8k=S=t7}&bw+v$u zoZwysw(17>=o5sChikTI}XI~OktRRWTAaf_AC3gTV1c^7%yzqy=ipgNX&nR zZ366n9oNsb&ym>n$NlmgK6$U6e@c<=Kf-4px>!=|HRXQV{FCcHnIFFuBK$@1@8myb zyY}}#y{6V-BV{9(G|9;3`U(Hbg})l(BQzfEssHAC@w)$yoL{rmZkk$eulcp4emC=H zp}NvHwy)1W>Iq)kKk3Dmc-{XD(z73AehP}K>UI?gKR0(FbWt@^?W<>X$`!_*ANRLC zxm0R;J*Ro#z~u_?JD@(onN>yezOq$WyWu{aL&VfVq2%Wt$lLeZO@;5kB_ZvpC^@7cvboJ zzWJ(^;T_Wd1m5>;i~4e3ZTh3`!o*_Dm$HWv-29h0I2gZrzP0#21M@z!xoPj@`G4&5 zxb(|O?Aq@Z;dv(&WSFW28>$MbejV?xF;0B+pMf{_MODKgFJqpCMM)ECkIOyymoV|( zzR*OiREzEILVItj&5jLzwO4lji7%FqJ6a#^y8f(0bn2rY*Wx)}3yPkomb}=$v8U_l zKB0lxpra|KF2jyfhCCQ6FDFH28}d1{ z`Rn;qFMd$RFzd7R?bztUQJ0pU-Fk24idz;FSvry@8SyzXe7=$*^?UQtsGeE&tzT=S zZi&u{*4BI%WPI_In}!MJdaF6IoH%Zhf^c=xW9X45ub8xepQuz@IK@9 z9KTQ6yH)RWDJa)a=rK@M=z3`5`eFXTTSxETe!J!Q#jPs27w=_ml8}|Y&fN2SpYi(` z^F#Z)Z?$gQ{-1%P{YXo-uA8~w@lqp>bJZ$~8;p<16jYpFTfI{E_S(Ymg*_)%-Fh3J zHm|pC#SW{|t8eS$+Sxx$K4P`@&aLaMdt4RfM_ou4I9b4EcUib8dAi&ZzPbhTe9M~~ zyFS;Z@bmvEzqnOl)wF#o8z!AfzJ0!%ujTi|279S5rL`w_Z9bdGpDA_WqObb0>o@;t zzKE54arwpDfAI~!G#2gIJfMrjo8Gc)n{>p@d7=D__2K`3+Am#@prf+cBPxc%pjzm5RKBcI)3wq3%6jGOM>X%1`P4XL|A9 z`D>mFYtlYmYvlO!uxGMVAA`$u&f}LHBkpfgQHvL?s1!(DvMuBI^)vq&USBVhGFU#} z(mhlA@2mG8jb=YPbo1So-!tFN=PWsTX`f_8*-Not5e#D>e>_dI2tT?&yasRr&oR3eBch_i}&0ghkDJ#nD#J%8?)0FrQ`4<^Dem$T*InMHTxOcAl(XuWf zo{cvTOiteX$*rDA`$c@qJl0D!f)5|&Cd5_mo+vZDT>qLAJ3|%YYZv;Oki9SvGL z<G%9;q2Qx6h5Z6b#@=QrIxx)%lKPIoA&{S zR~+ZqS1R{Rj%9DC@y>p9p7Z6ex2xVnZ~6IHUCo@O-Ty#y^PPn6tLlaJq^3T2%l>u} z|CU$c>L)L+nXcyD>CeDmc|axQcjJ|Ygddg{dgI=^mcq)`#C$MuKd>da{KN~oWCjh z?%!nsi~pu>naRSxKxckne9Vp5+wnIXtJ96n<`+s#vJ`n@B{;$TLH3FN3|aYXX1gDJ zx&G$S{rbgEPOyh>x3B+XVRzV6{!Qkrh3hl!{4v}1;rO9= zfs87hPadvUX02To{Ji(Erb>q8lYR}J?`Ny}??o;8wQRoJV!3|ZD^9;6d`{;1$zG5V zVlUuaKlk*6=cKo~fw3k-J7cAK2 z*T$_Ae(>@)+w@gGLO<_zypp=LLwHi|ou3nhzlI-w7<)Ihf5D3IDau>Fe5qQ0=xA_x zQ_h2b1~rzK{!}gznHqFGe7o~E>jRd-*OPxOwC{Lj-Tc^|f1m!3_5)Sj72e0T1>JK@ zSD!qozCMTX7~@N&3`&740c{W8nsFYE66?rjdZyf*)B-w(Zqo{Q~PJP@c?jtl<4f84O*`yugplGko{ zu86udBTeOVVV>LB=XXl%1FEk*KVZG{Kf^=rT&}<0<9^hAi?z!6s>m1c*T6yE>)G)K zt1ce)>bbUM{y%Tk{Y$Su%63~c=gPFRb=trF@VhMP(tghOV4zlEEb7u=oMf~l^}GY; zdX>MEDt{yv)RubIf8lt2xyHL_+dSDT@46ElGj(QuVdOmjGA{YI3Y$E)n)<%wn)2U| zl)inKczSC1^m6$tPv-2e7k%=d!6}yCW4iy}<)*JU%;*lh5LEi*;lrMPmOb;2?L2=g z?rL70Y6YM0rOH2>f1H;1xAk3bW>%?UO@jZ{C2E5D1uac(wMLA8w2#}_yY7Cp|FGfB zuLk^o|F-|hzI1Bi#v_kc>{})Fd(oNf%TJbEFR$Ob__oHPuAi29=UrJv0zD9YfV0<2 zdyO3~J-zaE_Kh`fm0zp$HqJZ1w`AUdlv$r$kKW~&PeGT%NXyf5a@`{M}(wG1yG?K8S) z|4{y8=)aD9<=tk*GiGI6XFT!X<85|@{=oRy$puIGvuj)~PYT~ue);Ub_PHI${H`}` zdiS5f>D|oqNBSLc=C^jgH??&u`sCrxY#Z}<5#vt=hBw-;^`(Ej_WuytJFk}|DC^df zjZ4hJ1U{=Qmtg%khq-^{8$Ldp@`tuhuUJK1uoKTrdmXvU@$c$K+&jLx=Fcm0STrZGR@UHONYmZ#f z#dZ0cF1zj)6BFM2^zOS~`hM>}X#QY6DAk=E|6$gTXBqi_JT;C8@+Dlpyrr{@x=-eua!GVevU5stxOF2Rl>FI9>bdGv8v8Jtk)5pXYzV|^H{ z|0Bd+YT4yHZ}*4m1$(zmwtQsHuEF`0Ws2Q7&h-oUOr&J7U#8FIEi+xYJyZAE{imPJi*{!}slU~Hq-yH? z;}Ur$ua|G#aY;8p?2_UW;hDzo=l-x;+#Gjy!RvXZAM8x*MKhwNcYL|AFWNWRr~TZ- z2_-_u_#Bz{e|{aZCpPoL{iD0~MBQ8XV83A2tvLz$)5T^MOM9?8{N$88zS7o0T_$|z zgy70Fz0g#-3X@A&XR~wPUEQ)P^XBR~JC?qE`DuB2-LmhEd2-K>*Wc#kXsPHvJgutd z<1epv`BSd)tyQu`ay*x}W^TQGUpU*$**`P)@#f2KnA^;*o$&m5;&JulNo)=bJafY1 z(n*9nOnClD*nXVg_0Vt)IWwxf86ZtoBS}nBUeJx@RscP&B5XZ*N6a-KdvKi5lv*}cU_vc8pV=sV%2I$_=cMVsHx7nn*0+uC2M ztGV75S%0&6{!qRx_0oDfnTme@h9ywnckAf< zJKI0X&6RzVynQa`tq0W;JWX#^c)R;DANrNoE8Q+ucJWXIPrd?!pY1vS$1(NCSfhE1 z55}p+Pkpm>%GM%l*8(ojKkd)s?tkn5)@D?4Z{@P-^VWHPiECF{`sTs>wD}Jv+lqB* zte;Y4d=Nb!>a(e+Ic(xhu|0Dt$6XhL7LE zmXGn^ab2~&AJ@HNx^|EK!j}(^pZs=xG4Vomqr&qKf3zj<`;^uIQ~yKzw_79wRg5P*O)zW2;_Joe89!= z3geYe)z79M;lHJJ+JEPy(}%(WU+J~9?cH^vWBxaRgo*DwehHqf{?8CFHOJ~e!rtH3 zC)cju6kaRz`&@j^Li4C)bA?`2U%Oh$m3?BLp3AKD$NJl&a+frD@3x+q_f9#^r?6SN zsh086`KRx+&zt;bxW#=$`{7>4^+KFmXD$(Z`C5iCdApCy&gXhXZtN?bJZ^q{pXHCJ zdi$14)7;E?kB{tH@p=6_)n_j36XpDU3g-vEVNI0Tw#>W6wQT*WuGr|X{EP9=j=!Cz zbg}RDe%<=uiyDi%euh;!LI)T?ySLdV{HeL1c%}3_Pu4yK@uD9=r##tKOnc?ot&lUJ z@!XjPPMO9zMcI2kJX`tTg~^S#d+b-f*ciF!q4L&w2F)MX*RQKw*U;0n)RDc3zv|TF zL-(XAdDcI?EBi!U_3V_C`Nu_Huc@`#k#S*d$>Qqh+}N+NU+?{vSv5JhsCTPo_B_iE zZ4)J@{XP;^B>0~}=kW|r#a~J(^ACh~yMI{5-(hDl`v~Xan2O}XDou-Gy1TERRC8#V zuOsu-CV_{^^Z5RonNgvAQs;d)ZB<^_#^O`wv@X5iXV!z5QoW*#6o3 zCz@(hM;E`@zxK>uX7|e`yjrrxo}2qFT~qwzF7?&+q^+mz$tTyQiiG!vt$B6!%8GY4 zuS%>~t+1#|%L|%S=H39+k!;)Vt~aj@_u2g8d)2O|XUr!3XGnIHoAsSf*@>s+1fxyL z9R482FY7)3NiAHRam#K~hiR_Xu|Mu}=Vxy7ES&Gt-1Y82Qs#vzQ$yaWT${ai|LJ#@ zuN+Tmm!$NsxUt5~ZU5GYLr-?jVC-L)eSS~r+DtpW>ot}Sb%g`BUs)@|xRQT}8qt-MxEm!T>d%94g%#^i5>7AFb~! znH#hJk81gLf1U7f38m^J=HoK%8#o(+cglJ&@P`KPEDxVi@%`YhE%Cxz&UaLq&1Bn> ztMDoP^1MWmIZP}QCm&QWcYb+1&UF97)XcJ1!J!}Cca~rvVU)? zLXLKRd8(=Uv2Od?s6BF$AIdh1eBx1kw^m~7_I~9~1J82ibqvq1gr;shQ(!vPWmZ?! z-JAB&w}0ITovO8R`TAvRKJee{KRExx#EK_b-zPph?0Mw<#KWiO-(CK|QT+vb)vxD& zS3UbD{ln?-!Fi(1E*tF4OERGb#e?b?q-p>bkXDV zoT7?f^3PqT{<<-3z9ZYa-