From 821af43e167279d83ed432b57a58632fe6d934d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sondre=20Gr=C3=B8n=C3=A5s?= <44143748+sondregronas@users.noreply.github.com> Date: Thu, 29 Aug 2024 15:53:52 +0200 Subject: [PATCH] feat: add auto-gen thumbnails Resolves #5 --- piggy/api.py | 57 +++++++++++++++++++ piggy/app.py | 2 + piggy/resources/fonts/Lato-Bold.ttf | Bin 0 -> 73332 bytes piggy/resources/fonts/Lato-Light.ttf | Bin 0 -> 77208 bytes piggy/resources/fonts/Lato-Regular.ttf | Bin 0 -> 75152 bytes piggy/templates/objects/card-assignment.html | 50 ++++++++-------- piggy/thumbnails.py | 45 +++++++++++++++ piggy/utils.py | 9 +++ pyproject.toml | 1 + 9 files changed, 140 insertions(+), 24 deletions(-) create mode 100644 piggy/api.py create mode 100644 piggy/resources/fonts/Lato-Bold.ttf create mode 100644 piggy/resources/fonts/Lato-Light.ttf create mode 100644 piggy/resources/fonts/Lato-Regular.ttf create mode 100644 piggy/thumbnails.py create mode 100644 piggy/utils.py diff --git a/piggy/api.py b/piggy/api.py new file mode 100644 index 0000000..0e2a130 --- /dev/null +++ b/piggy/api.py @@ -0,0 +1,57 @@ +from flask import Blueprint, request +from piggy.thumbnails import create_thumbnail +from piggy.utils import serve_pil_image + +api_routes = Blueprint("api", __name__, url_prefix="/api") + + +@api_routes.route("/generate_thumbnail/") +def generate_thumbnail(text: str): + """ + Generate a thumbnail from the given heading. + + :param heading: The heading to generate a thumbnail for + :return: A thumbnail image + """ + # get query parameters from the request + bg_color = request.args.get("bg_color", "") + text_color = request.args.get("text_color", "") + width = request.args.get("width", 500) + height = request.args.get("height", 200) + + # c is a hash of the text to get a color combination + gibberish = request.args.get("c", "") + + # Text, Background combinations + color_palettes = [ + ("ffffff", "85144b"), + ("aaaaaa", "000000"), + ("001f3f", "39cccc"), + ("ff851b", "001f3f"), + ("2ecc40", "001f3f"), + ("39cccc", "001f3f"), + ("7fdbff", "85144b"), + ("ff851b", "001f3f"), + ] + + if gibberish and not bg_color and not text_color: + # use a simple hashing function to get a color combination from the gibberish + text_color, bg_color = color_palettes[hash(gibberish) % len(color_palettes)] + + if not bg_color: + bg_color = "111111" + if not text_color: + text_color = "fefefe" + + # sanitize the query parameters, text is max 50ch + _text = text[:50] + if len(_text) < len(text): + _text += "..." + bg_color = bg_color.lstrip("#") + text_color = text_color.lstrip("#") + width = min(int(width), 1000) + height = min(int(height), 1000) + + # create the thumbnail + img = create_thumbnail(_text, bg_color, text_color, (width, height)).convert("RGB") + return serve_pil_image(img) diff --git a/piggy/app.py b/piggy/app.py index 00fb8cb..b7fde98 100644 --- a/piggy/app.py +++ b/piggy/app.py @@ -8,6 +8,7 @@ from piggy.caching import lru_cache_wrapper, _render_assignment, cache_directory, _render_assignment_wildcard from piggy.piggybank import PIGGYMAP from piggy.exceptions import PiggyHTTPException +from piggy.api import api_routes # Ensure the working directory is the root of the project os.chdir(os.path.dirname(Path(__file__).parent.absolute())) @@ -92,5 +93,6 @@ def get_assignment_media_wildcard(wildcard, filename): app.register_blueprint(assignment_routes) app.register_blueprint(media_routes) + app.register_blueprint(api_routes) return app diff --git a/piggy/resources/fonts/Lato-Bold.ttf b/piggy/resources/fonts/Lato-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..016068b486e1bd1d73743185c2752b7b1b843701 GIT binary patch literal 73332 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 literal 0 HcmV?d00001 diff --git a/piggy/resources/fonts/Lato-Regular.ttf b/piggy/resources/fonts/Lato-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bb2e8875a993f9c7d9e45d0eeffa839550cc6287 GIT binary patch literal 75152 zcmdSC33!y%**|>F^URiQlGzfnO=dFL$VN7@5yE5-Nle0?uqF`pKq3hk5fv2?5qDJF z5CIhw=?JJutrbM2zDQfN{;gV@(rVTEYOAldDop;r`#keZCV<;}eb@J0AK}ikoc-R; zec$JtCyX=3BJfMYSY2z&6n#bPHpU$P!stnK3o4|iODB$TZyNMmf&rNKL_Fl%cN93;<^X}E| z9r~yCh(r z&=2wNIRi7W1r85)RXaSgtJh<#aX36_9g7^Br?q*cT%QkzCaWgMwu#<6uYx z{WeA7cl!ZNnyzMYHQs5Y44_40=C?5|`Z%DqqC2CMt9*nF@c%K$Qn*%lyon zn{_lOePFEr^42EiX6!pj*Wg{tZ__`+A9pZzC#B0@(Wse2U=HMC#jKY})wNAinZ3KS ze#|1k#4%fNz+_J^NAT0H3%boMP|dCKqZrHeaRrt-UQb#EU_QGTNeq9OejxWt{z znpq0)qdXgs8j5#Uuzt20?__3WHWn#b<04lK-YU6tT#wu>T!-IHc+1&D0M$+DaV&%z zcn}ZfAv~0aaU&1s5!}ShNDpCEY#FYEI(;y2Z0Wg6ar z>r`M)izmjy*i~$Z>v=TK<<)!&pT#@*Rs0U=Rp~du8czW=+gQo^xAAD`_=-_jMp23NKe)G@2fB)X3jEKo5gE_e+LmSeG;((2 z?NP?4C!;-n!2xW{%DwiNz%(NjgA6+c~)TG}?wF>d*|-Q$jr=i{B@H;n(Je8q&g z2~F-a_kHfyD`r=`R+&-RQ*}@Em$gsSEvW0MyQ1!fx;yJ0s(Ye-S%ak^p&_H8sG+K% zrD0aX;)cG)xW=@`f<|{^Q)63WSL2OMJxy0M-OzMr(?d;9T#|Ijx#pl|TeGt{tGT4P zruCjlznJvPNv}?NW73}|{bSOZehcs zv5R{b?_bio^z&uW%iPP>EZ^SUx*}}Fn=7+d?&t~a$?VzI+t&NXOP^llUUki?V||9c z!v2KS39GAC?^%6f_2+A{*YvJAyyhR56$RC7X?5IV_juv3yp*#TU9HUS!lDZRI?gZ%j#G?^icz5 zttNH}bX*H-Ws}%sHU+w58k^2$ur}7tX0lmqHk-rdvU#k7b#j^QVjI}?>{sk=_7U62 zZo!Q7Alu7!a}C?f-eK24Uw^^AWH+;W*e3Q8bl1PwcJ?^?iv17!n(bsyvfr>**?!E4 z3)pR}i~Sc{$WE}=*l*cM_BuPoK4y#98|-)N_v{yJG5aUGoxR20WPe~w*gx2Rvm2om zm$Kz-1?y%j*$&nN9ofrPu|DYHerU_f*eAgLT6Q_~^ObBJ=F5lK)zF9Q*){A__8B|E zwa~`rm>2rd!2S>ERMNoA!=557%>KqcV82v#G5e7HojuClW`E%(p@;tjE&NC5;``YF zc91>8o@K|`A@($T8MFK`b_08Yy~18#zh=)vhi_pIv2AP*yN}(=K4*`xJJU32Gx)%^=~E0xO><|h;8>*9OZTPA@%%iVKVti(MeMXZz{<3f*)ffV?bqiZ4exbjY_{eVc8soC1JaUMspbI|r#-}W zpiYDSYi88ym{IcyGr%gHj&a-~eKzzdt~1g8b{TU#>Q0frMm=-cHu+K3fNQ;G6l;)n zvKZOR@-%Ji4vDdA`Prcpc)tzzkLs4OJLo;2Uek&z%E&3~4!Mh!OP{bzyk85G$*eug zjPgHO9PW+s1FRP9W&%D0w4wce75BK`3@89>0Ej&DXKWSvX2jU4rG0F+yj|qkO1KyA z7BMSmR*U>y(l$03FctZaQ`_27mM$f-b$H%@_XE1|dDpeym~8Xx>lyPvfMNvvKPV4DGVgBI0D zOVsXQZtYuaI__s{dojK?Rt}ho=dGHxEF1TwvSWy3&jX+<$>L{#^_XqFntm3e+09~5 z-2k(yZgY5ATicu-cYCbEQ%rZo?d=XvP)%o-CygG1Y8;*%y2+s&FSfQh;2v%6ba;YW z+dA;ZL21EsS4ek-9kCtl?d`E1meJnsYa5MAnI65X(xU?~f+~-$YEqj=UzKqH_G?u~ zr6+P>9P-JTNOPb`sb&GZulXI-Ssso0j%B!>(rJ=A95tI=oirHHHjAbHc^t7AgW94; zPIh%xqpUX5!#m*A1ywZ=9&qETZ1)7y(_}ma<0;FdqXyvbRr>n!R1of;3dS!Fk95H` zOh*04p-HaXyxD=aJ=%1q%fma>dyH0;7d|7>+Ra z02vt`EdmHyDvNTE7ceerm+>2N66wPb`|WDSQCo1Klmz z9wTTU_dW09GoNDIYVm|4k3G|4!o`*8F=wcikLXuQrpJ=88T>+wu^IAkLEk~DY)=q| zkRldzXNx<^IwsQ->Cc)&4xTCCj;*PTBXL_RiSqtbv zWF0H+C~Kj(qpU@l_*I)0s60pGozbr>f5?hP!*km$P)Vs?YZcOR@hEH(M=Ls*U! z=erMu?S0sHAI3MpLsj}|#2tfg*N>lG_^M;@(+AIR6}-G&yz7Hs+lTvZTzl|#G16OD zEj-pLJom!SqnwLH4G#Fj3*Zqu-~*E?=@amgz-;b0;)J?sj))yilm8E{J7X77qXcS9CsVVT^ zoABI%o>1Pvx<}T4sTCeQl_qRb`wn0z8*t$We;WQrqx49+{Wxa2&;x3JG1^!9GG+w+ z=UssRF+aNv6^{{(!tsJ9UJodVAeakm1g-GWa>_LT6yRN!nF z^Q%EQq8-sgzt5Qf~)DYx7YnwR%}Vn_Xz9551((l6Dv#snX}g zNM9+&N%*3EP|pc_-`_UXMS4o%4C3~+xFrEILHFVNEp5IjSU6 z@2CZZzewtdQ)!-2xwi{%l%A}_9koKZBN^&JD++E1M?|w#_!;h}a^E$ABZxYreX@{~ zTB5mWSYz~~*QA-K=RIg=c(j4Eqts#Q4v(2M;3CvUR3Z)`$y90~Y^*}NG(H+JaW%CQ z$Q^x1r9LU;l&94g6|H{JNL0>MsX@JR+5*(#s^XFLw)LVt4vc&wp7`W&bbzXdq&4HCO4tSX%Myp8LO2q90 z^)%5$nZ-#95pGG6)OHj*Vz{02@ew$SoNvRB#{Ir}C{4AICZoOK7Ss~|Z`oP@|FM{| zVX<;RFf7b!-x_qxd27(L){6kDSdXT>((;9?utu%?#xuR690=OsN^8qsi~MWMUi|c% zy`~pT4$}+atBfbZz6d*EJQ@0R=%J9$f^ipYG@cB4-q0L+D14PZE#x!pwVD^r{b65d z)@sr;Y4ZD;wel9+D^Js<|GZon&q^oE}XdTvs zuEh!!tzT`#dd-bkm7(>RyRlZa4XZj2U?poi)@^oRooW}`ja8dRv1YRet5;93eOS3V zC{}xD-RCeotrxN8^Ac8oUd4*mNvvGGfpx04*xOh^qIIK>u#)u&)~r6o>JP1lea*gs ztZA`27z_vlL=3HGB|~#r>Ci@2HnfCIzf0qOyh0aF3j;{A1i4S?$b8v!=}HUah`{c*q(fPH``0S5qw08ay+0Xz#h3^)Qf zhB7bX`YPZQ;A6D?Dc~Et2Uq!eQ$6$!;==E+U4Y$yM*xok9s}$FyaZ57TG8j@=<{*( z`8fJ~9DP2HejP`@j-y}4(XZp^*Kza<>wkc!0nY%Q1snz(0lW-&6>th*2A5ZZ&#Td+ zYV_$UVCX9FXEk`U8r<0h{_FyOc7a2y!8_I9o@(^xDsWIWc&Hj9x(Xar&8*;{-Qb|z zEOclPT(lb;v;`bA2=3X!+_<&_2eZ)TY+O6=+>Jb|0P6sM2Ydwh1n>{Q*8mf0Jd7F- zqqf5+J;-JviauMEJdBcu!Fz|ndxybyhf&L6)N&ZL97ZjNQOjY}au}L0V(190a;#1d zy~0ue>3}>y0iYJxtpn5pCIhAdrVsrMt-Xzw-Ug>10jD1UcOL;)A7MA5%vQi%fV%|c{YoOoZ11(C_Uir*%+w@BlWPXp<;~IgVB0e zHDs+8<>~20B{iPAHwx%z%zhn0fzxc0KY`q^MGFg zUH}|J`!Auc<7n$;q`wL{iTAJL`4sLy0DK7eJI3)5;A7zV6I}lR_!Re_Bkc>omw>PF z?iV0aK1&H;vVfZ;)4cqcHt6BynJ4DSSncLKvZf#IFN z;vQge53slgSlk0F?g19}0E>Ho#X(?k5Lg@p76*aFL11wZ7#su!2Z6ysU~mu^90Udj zfw7&y*dAbO5ZD?7mIi^PL11YRSjqvGa)70cz)}vdlmjen1eOMYr9oh65Ln6qmUd#t zMiBTYe5eVSX#!@NfSGmR-wyC^2PAYmFtiT5yB)l{-N(Dz!ModmF&!|L4UA<2W7)u1 zHF&oJyxRfHWrKG+fW2(+ZU-5?un@zxC z6R@}rSX>7zt^*d=0gLN^#dW~qI`HXs@acB&DOP*|_W-s5?gQ*ZpLPLu10Df93U~~# z2e21?c^vQrU?1Q~zyZKPw0j8Grvc9Zo&_8R90B|iY0m?G1$Y5)4DG*!x{jl*my!M| z;3VF^j^|Uj{{Vge5b!bJQ^4ndF92TxzCl?lFnSu;JPmA~h88#tOrB;%Lnm4B&|4VU zX^iYNMs^w_JB^W@#>h@%WT)BvNPhtEAYeP-INrSu$Oiq^fPMzh&H&o20ln6MP7R>X zDbVK(=yL}2IRl!U0X@zDw`+jgHNfo};C2mgy9T&j1Kh3w{!RgZr+~jxz~3q0?-cNN z3ivw({G9>*&H#UBfWI@q-x=WV3~+Y_xH|*fodNF70C#7AyEDMm8sO>_@N@=vIs^Qi z0bUHiivhS;L-Of;p9KTL0O8n$6fsnaIi`>$qLd4guWC$HTNXh(mSAM1kodBpOw3~q z7~y*u;d>b2dl=z+7~y;1vaR4U4>)Wq>qgxxP;U=l74G|o3Nb?!g40SdOBJ$pcy}f4 ze@Od1gtqpg-p2t?0QLc%1RMYy0z3_P2JkH4FyIJ4(PZyoomw>PFE*Dri25g)GHqL-+&VXyqfNRc-82LnSkUIJq zux8qaUH}HjK70YAKZemC!-$Vzq{lGQGvKl_;IcE|vNPbaGvKl_;IcFSi&35debrGC zjo-rvk70zzFp^^!$uW%N7>fXxo&cAg0+*fwm!1HZo&YDF04JURC!PQ&o&YDF04JUR zC!PTJoB+3+0=Jw3x14}itm>&@9d#T!>Ns?`UFfJRV5}Cia~+@_(2BH4fXTR@g6mXV zr{UTLxD4<^I%Y5OJ`Q*Sun+Jg-~iwt${oV>X}~jpX90%+M*zP>+Vg;40bT%*u6P;m zUj>}R^C?_ay+FDk7?fQG>MR3wmVr9UK%Hg4-ZEfs8L+nu*jondEdy6*!Rf((FhB%o zod}G$paoI@=>S^2$iuY&P=vaRkzO)107=;gNtq2v830f02S4nGmDhk)PomY6u-O_Q z5%rLWdi3BVB%&U6TLXG>5`6L&_~b3{$y?x)x4z4^Ujs&U5~DhaQJsV>*Z|K>3mq1OQo*=} z!oCZ`H5@gX0A{>T0u({JmY~EqaA+CidOR>W0ncva?*Me8%qqY-z_rMK9bg0Cdca1& z4S-F6hfwwyu5aM_ChB+#@HXJ@DEATIW3>4RuKxghiui+jL}IiSl)^m+iaISJaFgf3nJ+MEP!PC_Sd0grA0k8S~vZebHKq6Xw` zMcGM!$#^#f*QvNp!*%-5-E0PW(1!c=q2FQNJP8{94)Z4Hh_+Us4?O_IA}NJMQVQPQ z16tk&tEALtmD~ob3;-(wz{&uyG61X$04oE)$^htm5_CQZI-dlcPlC?a6$iKvuoL~* z1=tOE1n?-}F~Ada@GHOzfMaO? zCA>e5wqC~dRlrHSe;v=KaQ^|u@gZQ?qHzaUG;Z+IZQ!Tdz)!dNESdqt1GGcU;Hi_~ zsb=s~Gx%u$lo|k~h%zU^Pfg&b+k`JP4%(>5EadmUf{;CjGD zzzu*+fQN)Na1y-K0bV){UOEk4It^ZG1}`;(mj=K~&ETbG@X`QysTsTkZb0wi(6c!7 zEDk(00Dd_EUO53?IRQR_rUNKFY(fuJf4>RzUk9Cj4D?@zUdDm;1EBo?dK(9N51_|! zkXxeX3DENd=y?M4JOO&106kBDo+PJBfa?>$?+NsrVgUod?*MuohhE2_$8qR!9Pl~- zybb`b)N|}&L@(b)FW*Kl-$pOrMlat6ClA}ps;zt@-fsom1-Kh<4`3VMKEThlagU>n zYTv$&d$MsGLD>dSlyKJ!s>Xq;4d~rzP__X*9BEmVKt@UdWtbx-;95QOB6__W^0yoE zw;S@d8?v?=xNHV4n}Nq>;E*Wa0LnLj@(rMT11R4B$~S=W4Z!dBTWJrWot#{hc(d(qb8fF}U^08auA01g4320R0J7H}AF1aJ)Py@YaP?Y)fWR{>=8ox=4E zwDke{`XS(B;Neri=eYj@@Fn0Il+}RWnEV~i!z5#$cM0}(d)<-a%f^+K6c-g1=O ziu&dZYH#-xXIRSR{5-p4vl=zw+?ASAt{Gd9;z~41uEbPJL7^`VPbu7Kauxx;jV`Hf z$)2!y;%IwTVU9~csqvwCvKf{4#T-Ir8jxW85bD=%}bPyJ>=E_qU4+ zwV8Xbw~;Y>oYjn{FuhKzQYlu%f?1LV8{&X{38Vt{W!a3qTR!YZ zBMnre=yA$$2Ak}VW8H}((qzyY*itK@x||w;EpD_m$tk*-dQ_TF>Hv!>6ORZuW%#`G+y?At#e)oMj*Y!>Cp!YH@N_e$$A z%3z#`y5DUM3Bj2;TZqjRjyJ(Njm|$(YiJPHV3(7fhJyb|T3I7w)C>b@^n3(9OZ8_F zNg|g^$%O(*C`Ug|O{_ah^w$0fwX>mv9^>Yesp@B8;VTrS7`JaPCAB!K~h#+W1>fyBf`UigJf<}$Dd^kl{67yGKiwV=u?8YULTSW9wKS6@tY+D z8zi01m_WD*We%;6_8G{f(-%-8<<#K3laz8^MN}l533eeQ7Ar*rvc_Imkb?%yMO9EQ zl0=8-&Z&!acQAdB9`?B|sDStl`Xdiamye~2@DKyex}<=lA==;&jyoL_y#Y%aaf*$E zG&F*T$)RDyrPvw7L0d{RQY#GS+|WcQw#GtqxePLlEhsFqxMU;G;1=a^0?)U&ipu#o zZlPatz9l~|(q`4m`JfgGi6>n+PewL5a_Xcg2j_MFt}|rCw@kYuDu#2z$%>D{v`MMk z>vb9S)~WxV+7j*L6Wmh7PxQ{@kJ?8WwB83B<72%?qT;n7x{~X7EuFzzHe}W$=@zqM>_uwk)7-{l zsG6k2xR|I&gHG^z5NJ?8igT$U%@GeIOe`NA27F8im1PZ_9}rOsr3~!Kgk7K>N*PBZ ziCr}sa{|+9!Mwm2H)$PuumS1v|8;$~3+p3=Uh^~i$C(yqXfXBoJ8IK7z%VU8w;q`W z2MxtES{iZ+hKYKUlX*X7 zSQ(rb(3^6ZTd9Om=3iX?YW-M!jM0))+gY7ld&BaIk`+6a1WPfImByvp$}+4m#?hrs zxz746y)|Whk1Y?CVr`XtTe5q4Zeqp48rQi$B$l;~u~*C+Zx0RWY@8foOv%kQNEX}J zY1ed4ys5iJbDPEfO4#JmN_(`^srSZ37EHck_RQ@AjXIAdUb;T7z91#SYt&`c&XInX zQ&*T4!C%s)l{MmcEUcB!weM;l!-=m{!~|+sJD=^2oIbUwq0(Jkm^&sjJt;9}RD{tt zlgEKtIp8~{CoPvk=f{Hd2D+0Z;uBJJrUcC3ghn0LYD2XkOrs|erfuJM=E zLKSIsKUN2_1QA!MAA)sjQeu8D~PGCgV)_fOape<3{dwTRE$(9+Q=plISpn2kF@a zKEXgUksW+d1tFA*IaE`9MsloHC(Cx|dd!@19=HkwOVUGIgR7vi@Sx=y4XCWs`5!be z=oH0N@$;&Jh7&a@GOsmjMMb2MCVYQI)EV%P!a|})s0Li4)A_2gk)m|h{!IpY6~syRkg7>Z&Bkn{uuBwpMa)k|93&K$1Q`?xYZYa4;xN)c`FVv! zU?^#8%eC{0G(B2PSd>{^bKlZE=nRU@tIc|A!ZjdsR9it6xir} zSK_*GoYK*|HCCK}&)`;blpWjNF{>+jzDPXkbrN^3T%yw$Ls}Y_R@m(oOB-84jKND+ zNUPuSu6Q;i!eBJ(bNbHw?eA+Z|LCu0`g8SWW4PrRZ#PqpbLvUU)>s%P+dbnV znSfHtF*h2XX^yeKL%Dw~hz`LL17`2BRkwN-4V@RwC?@Ug!*=fQ{a~wYFFz;ncVnnocL1ULqmO?@o zHg;JZ=49(DFON3Ttw<&t|=ii#y%z? zA||IU%N}M7PH@EP!eY`BOjksWPB2HN=G(J6=gmxs4~+;jh9u{dI?YZv`@paiDovJl zK~*KYb>!Hf?{50+NFa+KA909GE-?_&#Xs|!rCs+>`8N2UlQ4D*o8s1yMd2Si>~*Sz z#%<;f$v0;QytUC=Ut6Rt)$CNtDT|3UaJ)3kw)36GmFN44eCU6M9+ke<9!1`yiisVER%g6s)HnwTTw!a|fA z!@#h~hw&8&mw-}t!H?t?hP%sOiV8b*imj>yv?M(YjeKVwRJfCLJ}-w4q*$$L+@f5T z+GlO=tIV0ayv%z;+T;{I7@v5yI^4wnt7L9fQd;fY!ot~gxxofUj5b6+$JlzsL)yKt z59YRRx^ne+?^PjTiLu?|EomnHdg=1+o(U7?l_xk#n#aV$NsgF*&!Vw}&+egrYO;aP z28uOuR#h>sBsXVFc1lugw8g|4ctemXUsbgTQv`F3Hj3jDKX!&$K&RJ&nv{ z^1$y^j4f201P4a3FNc+o>Nr&Va8*=Nr)MzXQUYp4P=zEGC+Iktf(`$xIyfw1G7Non z(S^JSnt4^akgcM)6PSb%kASrjWk+D595N3AjlC$Lx@X>(0w0o9DtZ!72J#{Z1KUTJ!O04sz#h++NnD)r4S%#) z4?KA8dTYGKEIs$=gR=JAzajG4MG=wS8~Ei>rdjfX-e1O)InIq!_+0h^H`#2^9g&?i zIyE6a2Jt%sO_(Z&kD~xcW`-ndBRRMl5gf#EWDU8d=qLt9)(XY(;7-6t)J&?NrK{1whN{7(dmWurkI43gq-$umsE8(rJJozX*m^6xOU@()4)nLjX#L(R3mrSx*)Bve3FY1;G0t={8Od0_UmZemA zVYZ72{YYi3czC3RVSeD3;^O%v9-g7JdHQ|*)%Djrv!eSK>#C;C;>(SBj_uy?{B_>9 z(k|(#tM8wZmD$=`Ro_1;Lta_3;-N(g9>1!-=IW<==f1g?e{7CEcatmC+f=h^a#r@_ z-pblbTheomkBl^7C4jC7rEr2rD8SK=Y?b|F^dxuz`KaPAjj*{N4cGs9v{ z=d7k!?Y*sunc?3}iAmOMk50G5nl8uW-T~^SV7^Ge3|z;KyJN-{I31i#7++8~wk~6| zBj1^iRe=Pa;GZ|LM;Rnc!FB@(E<>!Sv%~Sv1U)*49wV+LY&D8&(bzJ5rI3V4g=8ElT={~C zl4bYI-Fz@5{jvU*&5KG)7j16oe=I%a;O4paEGxMswQfOK!_vxxgvzB2Wee(3B~M1( z?A*Mz%9NDKw!GZgb@&>egdOfoQ|P0`gCuD=n75;&AZft=u%yKcjgL?WSOqc%^!o(| zwvaG_R7p$p<%J&C&`gQBVYrke!SMS60+swSURtJp&a{nd4KvyTWo3cJo7#DW;;$JUXLk>4eG^ zm!zjoTv}1z)08GP6)wGZ!Q9zlEPYlzB6|I^ZCx19CW_7228+r zCQR7jJnV4?kI71Qkq0gG4`ISCT;hvj1Ku?84Phfrz3=zN7fJc>C)Nr@x~#0pUC%VW^#M%8yzj&VDPs!f(IY6dnAxkZ_$gBKWVtF%j$e9mJD& z^JnFM$v1U>F`I~&058z%#4%)v5c_~*z%CRSAXn;cdDhuS2&D2G z_**w1{WJ9SOSP{N41Fykmm?XvA3>yKiZ5~7XA#uHjOgeL>T!gu{bYSa4Eh(L#j51r zf}>4WdwcLfPYJu({w4hfS|<(rG+uEVONz#1r6wmjXkUU~=j4+`XT`h=4-A3?G4bzB zP_#X|58b07?Sh3N3KG*Y7%BeT?=OnhA#y@1sRa=hhUHZHlgenxJ0bm~G)fnr#dO|2 z155+hXrMS_VyA(!s-U_Bi3yGEi_2PWm|vV#Gr2BbV_qAYRnt`{d3kopm+iO0XIYeIFNN3fF7dBt9vO?AR)xu+_qYr8YQe!9^UA ze><(?G96qs16(wNVr$`3Q&KQc85#uQgh)(B{xK$IJyuMCB&`-<2J8@_i<8{8S5fZ_ zU%f#;SZ|P0FAtKLSh4xh>Vsn4Z9lJObTtTKfQbwr6#Ai_E89qt5#b+>;*(1!>(r$o zmCiP+*^bpn1dQ|Z61Yy|N=!yIPFn`tQ@(Gp-5{DGx^ zSq@S6DX0ou&4e8t1;aTZkAXWA(tI^hCL~e356hS2976C=Gc*=mD0q||kd?$5DkBei zA^+k9e6b@ZE!W6Sv8RCN!wn?T>a`Q^j&T?^p1X3RJ~8@kY5dFHJEW+;L}H6daEui@ z03J2RY41IIg;ZBKX>?5tqB{6aCDZHxPOPwG)7f+GNSlqZ^t42WEx~3V6^Zv2nTypl zn%^=*DT)OA=%Lb76BdI@LVx|Mr8+Jm%&G;O?kfZ2V;7dtTEnFkqnt`$_JjSJ|AU!f z%9Bv~3kg$R@n8@=Q*A0=-~wA;gpr!!N>*>2`}uD+{Q8P<&Z>pg5ALYC=9dHBS9#%- z%PvWJ@FDMiaW;9NC1u+V?>E|e3p#F^F?RmcN?XG2jkE6V9w*)G4NIw+SJHFM<|Oy5 z!mHNMw1abG+91pT+3a<*ulZy&9J0ilG+P-`0{<8<>FMWXr?b!Z7`vkq&6c(RW*f8JS_v_7{XEOCxFOUoUnuibe1_NH)0ZX$hU7Cfol z1fC4V*I^Oij_mMPeJJ%dp^lJTv=li@*@M(R|Z>X0}KJ5L^^NY3jF8-DGKM!yC-EB?Z zJ=}CFK2XkuoH;S35Vpf@CTY1~1&QP<896Zz!C@sw7Ar|&n}Zl6RL6OdY!@vfF#_Zs zE=OB$L{T7Z zh7mBLAa;{G0(}T#{uMF5{eysfz<8)%w7@RL6FR)GH)OVeeL(vLGSib?@v#p-M>v#a>2LcuT&g3Jq)!jR@-c zD+{OqdmSOeRX?k&20p^8;sqhwN-P#E24)t_?VHAxs(e|Iz-SRRL#SXeA7jRa z9wjph4uR(&5L^HmaRTQeA|HRo!0$qG-kZ3-iZ#{NQk-oB_ ze@ef>Z4`Ub9UO&O#~A9ynT1&j(((t~M^dB+g_rr%ke2*<^8(R57tM1)7-r*tJB&5tDbu94OH z3XowUg8RNoxz?Z8w{WH`3keNJnK9{$GXCH`ZKM%VSH*GW6xm3{P7x9D&*#@oOo8kC zr^wNcN6x)(OSZ+OM@gl7EHRb{gVz*diFS@^J9<=3Mz|*~+IH@qC`WKmQtY{QU2sH@ zR1#_m)t>7G&cr+v9{!_66qO6=MNu1&?B+WKJMxp^6=n5Ol`SeM!nbfjHk= z!L5WCC6z9|2x~G;BKf>m>OOn=*sfh@Sm}fA8r-_ri|$Z|Jw7hdLYBDS3Xh{15cE^j zV;;#St>%gjsnoMym~tl{jX_p2ZPjHwvj2(NL_V4- zX+owV_(dgDx*^5^UKW&tZlDzztkEQaJll7F)!rK%b@mn? z=7j!?WOukjv0vB{ift$`CRNT42k$D#60EK&8k2ZUT!%ptZ&L!TTg6cV{ZpC6SFe)c6v zdb~?}ZLN6etN@(-`{@8CAa^c#tpruxf&=i!s-gkz#pZHK3b?zhWy%YL(FYJ1Bpz6NNmX(z^ z-Y2N)eOpKS72>dq>^pa8R))(N9TgsCP)>)?KJt_h=uDD8^lPlIC*VyH9`g+oo)LMK zw!qx}knD(zG}A^fk(*|_pI$eG-jYW21jxp^{s?sY*4e%<8z;mIKVMLXh$QrdI{%3c zm8o#u1Ff-(a@gqR-df(fBdIv*Y{?Z>KhA0kpLuZo7;m37nw!nmA7MF#<30e#jY4Pt zOkN4TDIATbD2s`B&hNn{8(~p_FfdwWVi_=%>NSG%NHqkU;&AyglZ&gY6%QAqtO2Jt zvX!iOD+_M)7Z7`K34v$}9uT?Dz#w*;`07UZ6Ek}rXp8{sa61<*=8Knzb#paB06hg8 z1iI=xe!gqdE7z3g%(`w$QXJp8Z)~)8izzMb&i|Tr&5X>wkG&~PKlixy-l8RU&T87Q zw83IaJNN2niH)+|Ji2kog!R`F-ATm%$CHM*|Yw4vwsmu?op)2u1 zpWBaUAz5!J>WKwK8D#5}^+JRbw**-uOj$LZH5FY|iQ_u2xaNw^aqcS)uDa=iNyUaJ zqpfgK-;|o}#41ZrFe8^(bTo=b01k-yKwsK zknpU+tdyFLaTQaFQ%4t0zh++3Eh{UV>M`Cp=*z3Xy?XW_oj1ePw^ZPt4Q<44n7U!n z3G;TOMT3_}2S+P58LS3%R>a0A#>XOEl*Y^m{|dDrH(kkjz~KLq#MAHa3vs#RydL4`A(ZeGkdxk7m zH0I|A)h4qc5!=@S5*$+Wg_zti1~?fqta*qMRdLZ=zKNZDNSf7s z+kwQbU6S5y-_n_XwB^n>H*9!wYs=C6&YSNm>%M!Yy!h)yP-t?m9d*Wv!YnRj=O zC)qH-Zm+{=&4}q3u!qkGq^Wj`#ULy`bXf@_!c133Ih-WXi6XLI)G?a;rIe%$m@GED z6C1lZa^seYWcU^m>5Nqr%o4xF#$AT{5ijL;8L?PwGx9qTHGSaR;a_O)jj^5$OKi=^ zXib#AG{t|r82ty2>Hm)Yr?ETTp=qh)cbG5+Kdqu%kp^xxQL4_PfVN;Bmd15 z56r|BR5{D=V2*>WT9Yu^njHS!FBJ@Fz6OS3*-m$GY_usnECe=)N@JT*FqvH;G8v)) zRE`QrBu@9)sVb$N!^sMxQYF58DnF+o511YyC&)F;zYs&P7%9bzS*t-<&aq=uv(tKT(b|!l5PDB%=c8EhHVMe-!hd@J7mXi?& z75nbMF7f;p-WwaacW-2@_s@EJZDjN}uSZAKq8j`~mPe(}wZ7fnXo2>xH+q!a-ZYz_ zE&PE&vD+K{f*^Bcw>O>iBx@uk)!O9D36t6zx7KRp9Z?y!%na`iqZPF??_Xu> z&@7B9L!3Xs_=GgMqiOh*!A0!@#RziIMVt`Of=6WQ*-sxC7{JRE%}x9uEVCfmQ-H-% z4OUKr{G$v*4n7v+1`dcwA-D~sk|i%PLFxT(oetw&i)=B*Pqce&QD20GW4z?E{!?D7 z(c{Z7B|Og^nUS8GlU|ZhlI*g_MMqgJA^5XEVjmctNJCgyBahL-Boy1Su_sJ~m2nOT zfizlh^jU$}Gs|^4bR&s|1`As~AUpmiR{&Imids+uxry+f)UC&eZ(rC8Y(>RJPazL5 zrj-7`Vh^kWt`9aH*I%qOHY%gLv;q2pS}+pE5%PA?kd)5QMI2ldkyYB!O3`WG0W<&S z4e(ky9BbpW?mX6rldyJ4UfUAm&|1@)rp_xJx40>*^3KopEnHC1UNI)h9BXh)J+@}r zhMC#kyfMu+6YN*)>&}hIEQ^Sln^cl&byhB{DeIYDq-j}mxpTDBVl0`|THJNZv~wR= zTzQT+Gzodt>1n0OCgR|2LtkhjA=8m8na^`aj>2)2g!riBQOS6NGykMV#CidFuNkp1 z77SbXuPh8J0)F4zN=th*S0T13?0NOb>Q5~qEO{l0Jmv>lfuAJfz@gF>6d8)CD-l`4 z#c-Mr8$Mw0Q9LUwfePVxVPGNZ9_g*jix#2-P8bZ1Iw?jm)gp_XhZoN-OJHYcCgk@` z#%fzsjp7!QcF2c)>7%sI$H0k1o~YBC#C8PQp0MrUgk4M9Zs{s4yL8v0`8VbV8B+M9 z8P^r%tggRho2#-zd-UASiS3ow9lfge=*^Rws%NLjm$gpxMphQS_R9sg%pzmGVdx9_ zYK@kqbIEN?OR>j|ilo@F&p#tN=BL9Ai=hBWfPV&UBL(*mbP31g#=}#&n{6U)6Kys`f(uG!rghC$S+ld3hwC6*4>v!pD3=!esuEI-- z8&+MCn%=acx?*Z^k~u0Qukw|Z^L7o?Ot}0&-?H5k-`bgv4bi5G zNsYDFA6s|ni#I_GNuKI~{g-|6G>+tn`{c=H6|3fvJW|LLo#)QBAcP(p1D9S)>*jJ; z0FzpUcnQs@gQ*SGNIXk%9;}!DKq=Z<8yYB@LYXPst#U?`gjtV69Ev(7At5CgAkrwO zO39dumqTU-DHDRC_@FcfMuJlMgC!sj00mZ;P@kv3X>cA9>Mw9WdkH9Z)Ce@1r1`K7tzk&2S5936ww*? z(+d5N?1)ej&KD>rVualIr>`ieEhiL~s=E7p2eU9;6Jr6yL+(`d){?d?vF>$qj!82nLWQ$^ai6ieNWuU)t7@C}z-ch`pU z#f_uMxWT3!X{&ZWv-4!JkHF5bei9pFGgIt9MC|fFjSQG2u!z9KSkNFNiDrKhR)W5U zbA`XM2(I>jK!HSO^l%YM2jQ_EuYP$!l=c-+7Y0*@3!q=HqoL1J0*X@haIIKwqku&I zaCW3xvGbHj>0qirl$ zo-s-|ZHBPSkzQNuj@()6TdPYo+!3FU-B=jUlf8eD=Y(l()`|0H+%PA{+HN(BDr~Em zbIsWuut4*?cj625I#zqV?2t$?Fnkd+nbL_D;(5Lc~uwjsd#lOWMQuzwOL{wIP zer3pyGKRd1SNenX5#2B7+z;2MLlhWuNOE9D4P+9wd|$t4EcliceaGYCUBtRInTGz+ zQvIrBNNY;)zrr~dyTrn=5xa}+zBnZ5KlQkR@6-amj-tUvICWPe8I8i06iSi*y|Ql% zx1{$amMpw!O5Fs9v$SLF)oVLSA&5OakF6}4HzgxK!kOb}oK~{vW`0|G{oEzpxg~Y3 z`V|fJt6I{%#|x(v$6eaJ{L=X1$r@dJT%|K8qN26o^6A+oYj$K(a)c%*GOw++V(q+= z%!bafjY|`(RmG8GveP5dZ<^C^`LyisUP{T14%O-mvCV~v<1(USaw?@}dtqbNoRur* zWHlDjewjNkU;GKPq>X(g_SM*!%^VRHO4g=7itMz)mLzpcHXLRapM+ZzAn_v(G9;)O z;nG1d6T?vvkD@sz8lWgb}C-Ew0oOucF?d`laI&`~sD133(m;%^Rkgo}&`9-c9J zB);7xG9fxk*{Kq`h=UKpLIVOUYSh(t>VdZ%c*o|#C(E*2R;w!upDuIR?kTy{}PUVMJ-;@}(Zvg|lPYTCg1i_A)6-~~Uhih&EXc z0R_<|UpsWA={fJhHfXD)rMP{^^AxbDMB7b_7SiwBwyVpG5ivuOfLzK;m8A~!txIa(CZ%vJNX>4X~Egzn0fzFi^XP!6J3SVAh1okYT@e^*d z4SQ*0qpdER3#TqE+~S{E@b^)Pi=dpyqNQoVhaSWtRRn%-9{AamhvwWEs=yaQ3aAA+ zFr|vxhZBXGat-IACe_1)>gNqq@7aPWK>3y`*^E+V&%rCJs;)fP({u2u>guZw_T0U7 z>)lPgjmgQ4y&7%9rlXe)ytrxN#7!>_Ty}I*!`Xq~9D4e-g88@3oOw$pExg>}-Kz;l z9GD`8tIvxVib#|1ECtQE*|9NN9IUrN+e+AEsmQy+VZ-q_vxv||(4OE%5AE#yNu_Lo zrD(>^3v5fMjN#A%7Bh+cdxc7d7!1E>N*OK+&rng#Ov0a8WBkZ|9kh!FZ(FH<~&ND9~&MS z%L)hvD}gLkAOiL*2}+NM6MbJPeDu=4(@9VorDQd3MnPJrBsJnHjc89T>8EsH$sZ~M zJw$kyjmnY)Nhd|Y{H;O`pd!hoCF&4)SaJa8KxBPUFnrdPOCA}3I9iCFuRFGAlADh)Mcfs6-ti1WR%vrXtEZq=k zHm8+L8eh;{5S`U9Z^68VEcyy&*F&Xpb7W*JKBzr5A+;bS-kDZ5V|?vpGxBN*tHX?O ziE**nWr^uUsqv1{<+CbEmru%>P(+x{#0h{S+H&UPEp(D4J{D^k^l7XxtZh2EQ$*4! z7MPDCqH+TEhfyq0#?BG4@No(jvPI%aez4FH@aRR579R>zRYLCf6h+95bI=sR2}Kc5 zP-WPkR}kk2s32LNr9Y)bY$PIG;cuCG;6w<@jc;y`7%8V%6+Wp-=WTG>4x1OjX5^B< zzqv>i>St87_+qoNXkH|~&MZzsS;bieWr2jhJaEn0h{#7rOOd9T^xf?8+_=$po52`T zkbP~$#;c@mi}n9D_a*RgmF3>&J!j7BGnqA$WhRr!B$GXvtdl*HG)dE@d((8MrA=2X z7Ft?pOJyl-L7)m%WKp3YP(-MRR}h!0xa)VXir4R6QE|bAtDgdLl_i;e|K~mD%$7+P z@caEf5hioyeV_9#&-=X3{>=5V&OCSG!Rx2*kN4%d@|-Jb5z;Lj!1?&5^grM_-_*EH zmxH{xWhupV+7ZnFaU4`s)lQHArFzV0bR?A32!bMA1w@>&qe!W)asT1;hKeL6!sM51 zihv_(N~>R^HU*Q(S$`S;{^Xk7WCwZ$4|Sl%VEef>5!4z~OzDML=Iq1oXmSK_(pth= zL4M*%ONNux?YwN!EnQFHcD4^bv=a`+wbK7gAJ}tv{-F4$DNDt!d8=cSw@-*i0pEqu z{~xU4d3?!$*BM?$|8ITCTz7c=FnQP=2BXUk)GPLUFtPao5Xrphz2&3f@MyVstHV2G z!T6z>lK(3G1CgVjk6Rn+%1VQQOkc7}Uz#r&=>al*$qfh5^jLl>7rGaEisTA5A=STao!!MzbuNjlZ>&997qB zPFdNUa`8iX9#7u%?(k43G#XS^uuOc?*XZ*_ebdXzFjRPgN`+?c zKylAAI~*f3aH25dXYHV+c^QV&8_eo`R>NCewEvkKiQ!2HqWGVI1aQX~_JPEwKb`L} zzG-s)%lS<g5NQwfU`{ zg{$o@dwz8+6pB^n+`4)5CJg-diPLO1<|_$3Y0-~_b)a`NJ=zrq zBNf_gnOzm);tc=(mRscMHy@{7tFVf7+A8+<_4Xide6`b#%nh`P0aydEir8MPD_=X@ z?C@|=))V^)6%;KhqzC#4(JE3_Gg>X4Wf%*UT+f)2m>CKIEGi;qwKPpw&lWGdW*@}r z)GRyq5-zJjBU)~D8jG}#+( z(lGb3Pv~4g=wjdv@(L8>yWmP|HbNa&%!*;-jn@lc;ot%+>e`@MQ*}g;pkQ3Y#PJA+ z5;LZ=sm>VJZHsD1Abviq8WY5S49sI6su2vU6rU}I_1Ps2b+I)G&`UMvSM1<=GPOhZb#u0Bw4rIV+4m+tamX+h0 zRxd+Q2T*woXpza4NvWA3dBC37C9!GUy;t-P9)4y&uYuuMcBH+*h`{MkeSb}B|BCL2 z!{U;oJFs;`G%lsxo z|LAsTxY0K8w-7iWM}(En zmWU5oJbu?yPg!3y@Vt0`Q8|+@`P9L=l|yS<8}zcpUf3A+)-1YwDDl>)tK@HEyXs}b z0(-H~zQtSD zGKT06GN#0QJc*;;;4^?BCxxh?67CW)UcQ0+BN`CXWfxxx1@2yZSKaom&aJg~uf8i- z77Bc9?Z@i2cXn>6!}pT1BjLWKjg8BD%gcM0H#RQq3yb&DPisDgrX_cy={D+m*Se3D zpsVt|VJWp<+R(VHFC6Y$hN;%!Tr7vLc^PxX3(6>ZpWK%U3w#vK>;ffa0{5FCDpm_e zZLmm~E2Uc|atZ^n3>RWpu7OXOE(N~w)1V2vY8P4wp4dBQM|8mn(1hNY@)o5F+@1|c z8k+G!)Xcyggg5irRd_vp65`KC&rI%@dSfrmI^>!H)dJ;5-dy?%#a*~f)g&18CVm(c zXi!ZMFtdvKp_%M5cux8Ux=wJNZJ|3@b7K2Pih^e5v3m@t(!kutP~k@t+gMBDaW3mOQ8 z4I@0$xNF!Ua6yOCf5J^q7qr%dTH<~t6ohn758GVZrNa}WQ!1>>Hu{{ds;(9N&5PUp&C9l5zI|Eq#QNrb zRV_IEg^^uH`r4x1?cRh|OKsyYvH*icP~QWntJ~Sl<_^ zA8e_qYZ+M|UvzCavSY04vL(^J*z`j!b35CDMPrTS9SxCi*i$l(cEhf_N1Tuk@@RY5 z$up`6lmZVNSQD%{XjGf4e1}s8xX=~@!yD%qpJvutu#Ux zYNJGiWV^P=Du=50>XnFpb(L28@~eU_SFkGIS6%92+bFf1ue!wLq6&m4C?T6rhY;VY ze7+iLS3`9P)4zjSqJHM<@>{rzQSDvW#MZ>~H>_X2ba+mzjWRO(i@b=>(22a3Byn|f zeGIv<87xf@E8v>MOP49>y1>#wT~D(C5*ZaF(h4!@aX+IBB;g{CrBY9lh}b^^oHtdT za(MR9p+u#qhhq#kwa*x5a%=#G5|xYIH5`n3*&y4696pyMhpH-c zr4Usrp&(Ly}-4>#0>o{_yF|^~?6$ z`rxV~zkh5K`*+!(*T)Cv4IOxNa?9y!<_yIK^i~|KdL*S>c+Ij}E0hqXEzdo8)5g}; zjW<2`+?L7bPAPxmC95AgffU!1pLylz>W5G4Ti&qc$v@F4S||03Fkw`D764$8(TP%2 zsj)i%Byd=naBy>tod*PD$?QNN6K zvg*T^b#+FXD*_I?N6v4(W?uVvS4ra6E%VDqF6}95l}0VDCU2<^3|&uk*_^hpSkd3( zf|=D^)6`JbGv1Q;X(YTubQXhkE93H;a6LT8PQlNuS}?`+zG~4UA~S89TPe8&Jsa0o zl4EJkhqt`dWw)C@X}9OuJ}JxouEwnIqTa`D@*DDPPDkRM0-HTQ@s81D^xORGrdfU< z!grE&ORtK*1@Tyxk$Z=zP5`&9$l&4)4I^EsGz*Xt#g`JQS!DDODT*-X&-}jSEW$}? z-Cfh&;%^hH7>Ka&-m2>8l9aO;i5BJw6YTbQQEMyJ?`xgcIyyAi8EbEgHk6lmk#R}vekzQFRu%);@ zvv_Vuf0UKea^m>&CM(K z%^AFEWlPJ-s|N5i7^GJ7W5Hl-K1MhxEJ59|r;sf&4>^J0J4m|k%-oS&lR$Xd0LBEo zn8LF|e?Yn@&=7>dK-ead0=b7)IF6remwCZw);4{daB|WQNLx<5pk)03u=2`M>+bbS|hJmRL|_PHfjtn&Gw4&hg&byjY$+V9~ouYDqFxnax6$OwTbZ%8AQ z)lP}UXWaNk@}0Qi6??IF=Sh30R6dLc?pLPkk=RNPyx1@dvpf`UOh*#-*de% z$<7gOM)v^U#1fprY#ToLwm8U9XY9;Ew602PjiG?rE2e&G2HY=KASmtWjMS;^AzD%V zhq~V|{&Nq2%s!ewMnifZ9fkjvrMl(?`77wffC0;=rW&GEl>XMzR2q zosYtZThJIT_&8(KOCe75p{8tQ-Z0(U_*aYYl=ENwc;ZhV-~RAb{ry)xyj{Ng?zdy| zci)al>w9553f&On(om{{)m*_v@W zM%RGSoIW_VfuQ-gB8S`mDq}54!UiQz`{Q~?eyO*nHov+jQoFlg&C=4&CDH2nL8ty7 zC>$Ruau>O*@@-2z!|kOlC2MCkL<`;&3K!^51JMV_(9p%m!w=O} z;d}25edbQxWmdb-RQb#I-H_NJ{TF+tc9qHA@s;TVE3k{gsMI5V7PQrkOz|6&9^XN4 zFwNtePEjH3KAEf)_DgVb-s-{}wUajuMf@oSY|Tv@mhOCZc;t#Db#+Uw7@2$J(z?2( zSI!+@zI=S;^5ydB+9i8XgKBAQ?b5xYbN4K%ou1w?Ik|oN{*n3KJJe;)K*6-6m2-!ds7wbcr^=J z*Lab~4Z*b>H6L&ezzTpNXeK_-1nn|(%uq&yZei&`m#qjdf@)lGg#`#OF^147N4m#n} zdf-z%xXQWg_wf=Y%pD$#_x5ymb#}D1G&ZF3+DUvGi#0{b=TPOisXU5;Q@F1f96S}= zk~nTzae`GQ+@hcsFb&rUvi%ThY2x;1Hb^wq(Cge#vCbMiU>U(9EL-{>;Bi@jGylps z34X|=A>0ZM8RfDSaf8@v3y=;;3bCGLNiXuAcHl_ML z8|E{s1t;yqo_CugS{;bmd(R;wQ6SWx=b+)nYQotMX)voM&myo*BRh z7OM=mipY5Fz8SZ7;dD`aMzUfVG21PW+=#tK7z>=tV0|EyEBwl!sno|Nk2qWbYsXCi~zI|-61D#^*5VY+_S z;)5~{HL4WbEVssHi8zuN99y-0_L5~0WO6hluE;K0_7kdER<~^5*n*u4+M`XOdmgdY z^))y4Ea|Qr<~7T#7M&xzXxUj*@dkaHr~f;s46T%b8QEomkmI=}Nfr(IwV^Jy|4&9Z!79QwY1$Yt_SWf}~82 z5AbSHW8$HB0dZ)(Jss^$jg=LpC51l7&|_>YX@eev_^j(fBBMUL4RsLbF;uK0YqVY` zrNUVh3X5X_6N*-+&fpC)Bpak`E9EfJI*g@YdCu6drSBf3D;G!-;NLySoTDW2vuwu1 z*^G(fHa9RtmxFt!yM>finJWMkP0e4s#TQ=`Wb(iRjEY%ak+R1xyeP0K2ZH1aQai`( z@+;pZJQ=a{RHP8+(`Zz=Mr9Fb9^62$*o@?Kl?QTEwYBmB2eVZ8QsSNRsFnkF&LGW* zcw?Gsr2K=w`Q*fTYkxUVCv5pEryRMpDEq8eeU%A!pQ|dEZTY3U^|5qi3+U(*(1V0H zeXYV#C;E!OxE#+d8PAEnD($UoFs(h&QRTTwd4Bc>IJRHn@Zq%v>$>qxd;mTbG`J=0 zxkY(?_OEz;P*3oc_Eu0%v_Jbgo?ope_{wuSpm;qBz2#TD{#$ zh|MGTh#I4Q4c;ypAnIX%q2VQ@SAE~q0|0habAclrAM}_|x@7hZeWv%M>eq4 zY?bu)#G{E%Ze*Jh_ibd8Z1u*(!)z5ce%;wSQ5EH9z?6ES1HO~?ww9Wz62H%Dv#9lE zDPKjb5IWT6rbtB)SESttMLZ->+~ibG1IbP@=_P)kYdkI9GiP^bETL;980YFv(o0*e zx2L*;_#smTktmAXmeSg}N`0r02dtsh*V@)m9 zc{%*u(WxUNROtm+%JcqnZ0u06@#7r3vY%U6`g6iYrM;Csn%17MPI+!ppBq6JU*_<8 zID8B1#Am9)j02G+_r+ZZFe!99L4ACjUs904EA&Z>E+JR7(j|3uKxOb-SDvCR&3Ow^9FsM5Jz_z7UtIgS;p?83pXgbCc}vg4U~{ykw6e9n zab)YFMF&>Yr^49d6&)ijHC@XG+ZOk?_sor!4zz}9#t)BAMWkPCf9${@oeiEzTRsh( z9s)iXggL@5RLYAC+iB1DWjwz-+5W|h=Qk&x|0d)4!Q}Iu8P9*2eEuupmv}$X-B
    z1!uI5s@g-`mmN($s)z@quDBE9x9J$3Yq@6Yykopj$K= zfhj1Os)KRW^w{ASpObhU?FZUELc$alz(cgMV}#(Pbg@6GWSc& zA_|l@=bQ!f!-P9w%m!7=F(cfp;yK?%YDUtlZ#~z$VAa)L7lBp806i)}&havfj?|At z*0qaW(QpdTSYl?-`EAR3kDoGC^-lP5H!~R+S(bxcb-;JIi^3Hp&poGx+LmUv}HJZb#wtZMueq zI|hc=^+p_am%cHya`VpCtG*g5Ub%CB_wbd=XJnxN{1sQ<5o-TT;$JBH{N&Qk>y5 zmwGo2R~y(=uxF)Cjvsh(cXeRxu{Cvp@_@LC&rU;Zv&rAg=p1D&qqC~2^o zqkEf=Wf3cA4NS?O((Lv_Jc6Jg=4s zzVdu0wFk9XaQ1JAkUt6+kWq?3Zf}eCwT-rqHq@1uaZd}n6l%JnxO7=bYfGWql?OjM zDv1at7wl4m5@6C517J!C+tzb8#yf!ssb16>9wbC;Q0@{Q1ITot`~ff97)7#SyLlkK z=DtA6Xf!goL6Hz-u7yId2XwM;Tm6cC>Hr zr?yXicEEGhCC_Y_yJu;Gcu7<6ns%o4U1q*QefJyR^TedFB40r5~86$FAG~ zHs=>IaY_h22gmgrXl-e?kgZ>5=exCxKc6GKlk@q$jOVnAO8XZxo)diK`EN3w)9xzI zchYlkT$93=;q!VO{_+X6!hlkzf#*!cE>O&WEl@zx0>n94;c5|Xp3s!Sq|L=9$>in& z1p~`61Zd%e|mY=1DZqp?9;k>-8>q_jOC2AL!kOF0Qj8#iyWfFyVqxU?vVhbzrSrfuH}UhZN<9z%!_PzZ^L;}4b2<-7`xi5w6W%M&cdE~M))o$b9f!Y9cp0B+ zPD%M|h-C@0!}0uluYg=%C>IyT6J9qXtqM(ZVF4nBbZ(wg61{U5q5;dB%qvNJI#t!Wt|lPL?8*QI)r1Ws9bqv>zWnISTjHc+il z)0xplV5FVJ^-eC{PM9oOn#W1G?f$p^-gK_M_^m@-iMc?R7crsG}=XvPy10B0eu# zhwwzw6O+^lQep(XB(<9*h+IH$ZU`Dk2aVrJkBqb&w5o&!F|{8`Q^Cq2!jsp~oErc* z!BltJP9j9D=k5-{$CCi{%ChDJND0W==#ow4}trLJ}{}C{JQz{3YvKR&80_Q&?&|I(_X?)TI2V*!xYfx586X zmfuw4EAiN-`bFQb^Su_Y`30jq=nE_!?Aj7R5x+Hwhh2X8?zgvDf|ZR$ky?1ch<_00 zwlA$7roth@y2NABAGtPTIs09_Xn1IB{?PK_`tEA_wTn5ZI-|f)Hk5Nl7~JATZsCyqNfcBy>S6Eq7=K#c_z-6iHaN z;+#-%F46x&pyT|4B_NXqfNOTXWfuvYmIY7?_i znqS!#EHLLT!&YR1LgCI!=%cQWXL6MA#-V}k=>62KyxMzBev}byW zSU>%OcxG)1vC~Lt(u*U7t{BXGP*19e)guhEFU3pxdKtu%-r>IC&KSJ6%S(~yg=10= z>#=GSbhsYc7EGFMVkEyo9@1tg)pU9jbbk>`idJTFONLCWB5WYSxj+R*l_OPPw1mnv zeSWAJceX|^=Uos?oFwJ$o^8kqbtf`8_gnxG+-EdN&<2reQC)>3Y>;4;o+EWHkY(vb zLjnhfJhucr=cTO0&1PbZl0{0fHl^teDUE?4Nj)X4rq?S;L>g?}_L;*d_H*X)oMpb6 z?_B1o40)6b`^#FLFAd4s)>nw5w|wV%D({t5`KxEH-4aBdAbx%8R-|fwJq$v&3ejhh zusROkGJKLkgD{PlFJ8QYr*uR?JguTd9z2L~2ZO9|YutH?SCB>nVMnN4p;VLs-Gs-2 zj%t)Ug_}?t)Wq1k5EllL8FEfci=pIWNkr6$a6YGUxnVt;(kA@Ktwm%u3wCqllM~xJM|dU5LQr z1oMn+ST#K|pTL;`5d(_33c1dSFQ+1o{pae6cw{Fk%hDxHfdmw=k_Cn?(>j2GpV{mq zm<4xa404nrD%X9ImsGmuxNBj z$~^@|`OV62**2cog^{O)Vnk_^)Ldek6RxpRyJx2!8c#fM`+q;WZr!8*eftB6abJA@ z>FwK3Up+8zHGS@nC$HRBuReO&*O=`A?o4s)npdY=j=XSk@#2#&969pBor@OT`2xlW z-K731Zl#C|W8!4Id~l$-2|kr017m|@T^&vF=6GFAS!uFTWt2tjnoYK^ftigZ`HD$a zHO0bJmq{?j!Zc_Sm6CaS3-H_%w1QDdnmW~Duaw2*JwQ>bR}$8YoqH_I1g;DbsLD`) zo@w7Q1_qGCBXG>g0n)~hbBwl^Lo%9qF}~ECvq2HlM`prB?+z5V!i3X-(gK3}Q-i(6 zFCHv-9BxBJxEj*_Vj>jarVg%2rch0oQ2BPl z#e&1-Vmv3!+?^tmKY${i#P)P8KkSG~K3PS_pPw=%zL8-{>|GtNcX_QX+>*HetFiX4 z-8}iwRq^=#N4DPhmA2;RrXTs>@v@=q!*jO}m)$IFf$6Yjrs*(QD0I*M-3PRyG}m0d z<1iJbS#x4jE0v~s`n!^xG#28%=t2hi7xjO~OmQc2$qDxYp7Y8L{Jxmr#BZPQ2!F1$ zC+{Pry^T52+LL}$Y5#Mw?*NVw9K*}p+fng8GO;249IbRG`90OEzIPFSK7xA+G5dhC zUVZP=srCjpo-6J1;0H(WmG)muwtq?Ze5yV7zEs-VGTPHP75G0F03QcwXX1Y8b@&E_ zg}34!JP8Y7r6!l#g^bw}_r4^iyAH-^J*ByaOQfD5GbvUMA{Sj0R6!6d1N@tazd|@C zU3_$|t8?_hO-C)cyry>6CF6Ztlnz9GkqruHnDIL5O2k=v6~Upn-!8Qmf;v!e1%`F4 zH@N~szs|>+v$N(S1ef-3TPqpLV{WBTDy2UF4?^gh2QPT>fz^e7{b^7A(*8Q*>U+K3 z|L_+4>1Y06!_s)YDW45W!gS<+J$p%KQP;X5@rQY0p?lt=-}>sNfUl@){m`lFY084` z!{Q`3NSm-WZbZBRs9r|;cwpmI z;vU2{dZ~pNI7I?>DnId|A}hYg$Af2-!y8cHA}J!31fDD7f%h654^YXBDd}mY@Ih<7 z{yK|ZHptiMeU|+%JuKgCmajFLWwY*Dy(#e~;kKIf21s@V$I(*Vt>O^Y&MO>1AGS=Oj#X!E23H4~hWFT3}(x41LI(sSF8BA0dxo^Hdv$z;~D7&cl$op$T_g zjz+R_<5LWFix9lBd<=WU9GI+2L4sxuVZG_RIc z@1CqR#ngIC@t-nS6ww4E1hg_tdGU&8{6e@%}{f3ar013^-#39I672a*U?c|-$6MV zjwT*sui+&4h2wEJB^COhxA!wYA2I1$i%Ct-rSg5B+nZd;m)1T%E$ zo)A~dH=|DV3*>R>^U?|9xyy@K5x06aU=qmu55GrM@tX3mw9w`#o@o_mfdv5KQkq58 zaF1t%rpO||y8?;F&g=#_c$muM8BD&BN+&3`va+FTeXu|+T64{MMUl}A09Mx8xSUdi59*f>xX?ro3yM#cA|ux};)Zj|e5>KYe!1OsJ(Rnf(r z^oc15mmp8gA0UIFR-SNU++~I|Z+4qeRUJ>XN-+F%3gYX?%bNbMv>SX2{CDw^90rr`1TLa$tx7b1< zcII#PV$a0Wj*<|i!*N)V4u@yO$=Xca$Cq3nid|s28*b6vaR@ugcvPZK#8K`$CCMH!iWg5v4sq5_lBo z=0XyKOqAYQ%lV7QQW}YX@NXR=95Z|238-W^*^%Bxw{4%=N!BBIOAS^P&bu{fAh67O z%naN?E&ycT=6od28o(30&@D^(WZ|fWI<&Zl;YFl-vLtZ)sl=XZt}h!58bqU`$TQga zWs|eWDgDo=uYBru>B{LF_TOxEj+x+O*Ec90idzcY@R<|t6K&F$#1miwE<9t}eNySv zuf!8K&@Q6C{BIZAUv7RIeR%&a=?zvXzaifNB2ITtxyA>SCom4V{b zOJYXZ>?kR)yM2aY>5b^6(KVkME|aZ#yV+CM)Lv3L6tP$fa4ZlvC%wc*0b2^F2G5$rpV^4;S{mGn3x)gI ztYCoySO;+>Uxy~jG7>C=er(pYfLG83Ez$EAzGii^E~ZFpDemKI$;VcRl=2wcEbDo} z%fUW=;R|0k>(XI#i9d_`_>QEHZkA!p@^~f^%pBdU+c*2*fG_(J_vl>m*M%UvJZ=w` z6c^^Bnv2z}qiQZ=XL><{YN0$37{YEO!C!!20*bvsjbRXC3H^yUQ<*=VE??pM={B#P z(FLv0L5E`uN;rl!dp-jm)RBNdHy7>y zETfnef}UK&IjgO}AcPpsJqiq(`;*TKi{xOyLYiTIA*vX%APG%OUl$Ep3QcH=98I#O zm_@LCzvE~Nf~$puYOrcmx`^z2Vs_Xq7=L7`QzMF~k7UIpcp|E9rYkQf5Pb$7+-mq_iJ) zPaa#a@c5SQ?k&d`E;u&XEiTu-EyOqc3bL~5>}&Fb@MpZcQs@>wPL-+1bC&!P)ks3l zdBTN8c_DH?@F*tDq~yx{#Y>}9MC1Vdq6{{pjWXb3IBpUzO;f=(A;C0LHj&ce;jfJ8 zLGq*t#Kqj|7v_zeuS@KlQ1l-7Iq2OvlrtfhY#(&a_9Dqmr#!6!8pbD*VSli%Qes>mqO-- z;*E#|EWidUETWWBoivYhR*6A(2BEg(W&yJvnQ4$*K{KgzTtHu#I;h{k)`a&h9o}Ux^i#-(4L8CbYjoYoU2we zebC=DP*H(A>BUj{Z1RgYnfwLUz4MCM?>-{8wXWQgYQA?OdP{b5Y5RF0>iWlTS{se7 zy=i>n=(;Espcq`&T~yS)Zg602XJKLIT6V3?`SuZ;gDo3BLJg0MPaLC$$0i2XcNIa~ zH#o3{8m<{Q&+pioTX0tXi)Uwtq#$}oQplB=Jv#~etV!2FIViUu`yJ2i2beA-cSB~j z8A<%u?=sT%iKv*ED?=YU3yrlDhThF2494{)*d9d9%8p1iDmuf%U^R+J(Q8noX%=?a zl9aE=DoaER76LT`Tv~3QHZ=k=~bRtCi_NUQi~FpHIlwoDaa! zHX;u@{x+Lk=A_wZ{_HR@9aaA_EA%8pubF$4(*a-p-XNOIpovH>rH++8$jY<%LZD(R zY*eBSCq2awAaAz8YN2O(WCv4L#hB|Y7Uk}7x9}=rsh}RcfwKuAJM;RPPx-q9wO}X* zJ1;iIGa`rES|Y6^(}m0K^lZ58nfD$2%1E!#VRu&aT{?Eh*Gk23aY2G;JbS@kkl5+} z*E`ym_0*OYT8&oY*vJo0?ET{Lm5$qw;`d|HjfcN~V!`C9A(JiA5c$r(##{kUmDf>{ z*WnEO+rN2BD@wfv!^qYv7T@{8ja&0d9G+?qnCZAQPp$^;mSCoTh!+Hd!ALMtQ4Zq< z?4gAP9w+JGIaf=#)aJ|2vr95~c;J$ZytEA35GB4I&Yhs@@YLmsBVdgBKyeqQEpDCJ znYRH1_~Brwl^&3L$_WS%i6o2og0yZ1Bm6E=H&2G%hEm%gr36ytf}EoI}^g=P>2}KH=MV{E02s{q&xRiF4&HZ@0Gvln&n5Kc9{1GMwzt;y z)%8_H;L*uB*ksle=-VYB>IY_lOs0yg5S}Rn5&KANwlhcwuTn>Fvs!FId#?W2M~G?E zAId%jQf6-mz3~h0$f$T#I0b=*p=E(4>O-u(m~CKA1+P|S$CItAoVRGAWzEU$o%8Pe z#mR{eZ|_=g{7bvH-xC$tEr)96cGTD`Zp+n!`!~+@m?M2FyT)%=RbSe(LhdZC@!RL$ z`n~JEmw57T$2u?j*oHmdJ2|m>qGC?bx4!Qw^jKZ*+#K8e*q*xO@krmUkE|TnI#K}~ z6=2GdH-Xkjf>qd;QPYI*zYw%qL4Jj|oZ%XlY@k{(lm?1dSee$D|E6Fzamc(4eQ2ud z78a@qQ3xJo=i2zBxcu$MA%QPUTxar_Ol}i-!`~-;)z?*4)=jdM(3dzZ7h=p7;a~XK zwFqe`(D>OUN!`aK7*HN1|2L{ebH7}zR5FVAf&R2*HWHG?!jSSa&J`92M~ufh0T#8# zcY(}r@NkE!8Z|?4)=7~JMmm)q9Ohg>%#j|P6T4)7@Nk=4_}nuI%QMd*CHPyX^(*P$ zyD`Uc%u&J|UBc~g?$Slnms^==ZipA8d>7QE`+as8z=_dgNk{X&bdMgXLMZNrt7!>z%B z#?fdLWhk`IU@JXu!znuZ(Znff9r%H;a58QV`tvUrbsra*` zq(k6#Cs=&hKJU|aM21U^qR~}SF!}zx8*BrcuOAD~FEL9dPibM-%H9g2Zq5_W*c}rl zyIJ0~@13`|-m#(H=2&30=~;32`a#?TXV_usKc#OXvrvq=<3#~KTq2suE8ZUq#CY9g zBUP_XW;k5r!O4@{dYrXr2usyihKrhV5#aRE$hn6pd>v_Oz$Eyj(%cNVbg6PIJtBq$ zUY+!T+>c7U(wy8-fp_FL$(Jb|gwneL*NV!Wp{@)r@PG2yl(SCw>{G6C@~tsc(w>xv z{07hQTyh868_Gd*0;w8ri&uw2>L5UL8X-Dy9=zBq7+#%F-Kw$&OZ6QNAhU%%Y&_~%TS6+YRYl$Cj zU?&pI`>)@hc!P~?NK8n#z4qF%?;M+&I`$o4^GRWebdT;s@Ot+O^>Gv(aJ!%ZhzFex zppp#t4Z}Agux~JZj z^!V4ut~uZ+w*EURN#vP-WG!|aU|QNL=>LHn%S43#l*tMzrf`(6XVg1*Ri9A z*wMs+L$5QBF;AB5CRUL6qsuJk8O1M4ZByT$`hnCs{hTl2az%XNusBj1c16g;;A|ps z8Y1G?KpmiuA@acWF~rMQF>Tn$ICDn&81lyF`j|HQK_Cq}w<1%y5LF)|p(?EiO#RxM zf28e$2fXxs`Kv;R?NYrL)T+b&O_&460(bdcZ%WGA(YDkqVB4$?Aq02Bn) zJyc$V)4AdSPb@`kS|@4&tVL^0)r&D9LR;-ZHvn-M7uqFHu_Ases|$gXbyUMR$IFx~ zk#zUBr43B&g0%nxhsBMcGoKVTkn^t~vovgSf*4TyLHNP;6X&Y9PpA>0I{4OTP*B(o zCO)7jLedFE!I1(+(iGF;R2&X7lBYy)L6LEf>fd~Ex3~EIuDzex6ImS4iypV7An&se zh?7qx#-;T(+3T6tvHsrOeP;7|n}OYVvSlhLZJfGa+tJtMr(vl*MK#kf@G2NCt`+Pj;?yJw>>rUbjs$84o^m#2Y^Bod zGdt0(#F0ShL=frZDEkjRTw4G1_Ye})&+L-cnl3C1k#_>$NrQU`ooZ%wLiRE25og>} z{T0OF9H2HGk_U*G5R-?SmNJK?ja7RY0U{(AL z(DwFfxkl7~1i7%j0S{-B5QsxZJF z(o)Y0AM_SD6aS_EyUp``gZ00VFZ)$}zPL~SI=AvnWYrL))qAfskZA~6#(?Y+$UmS$ z$KFaRX{x$8ekFaYM2TdjFml#+OnFFODVFI!4ElND zzClCmmkIRQNhj)*-YnjM6}8Zc0?{pknb%dzD4~YwFkbD1I7{)4#Lt{X-dkQUJ6-us z{onu7YW%+0ihy}g^FIUH)%u^qVY)w#ghzHOhzOlXT2r{$f&&DBO?Uf6FkcS0UwR*Q zuMw9ELZ(Q`9%~V=K4$fsZZPVMx*JS>>#@I_(VGqW4LZ~e*q}H3IQ{J|db?6_KJ|8> zixL8+YVgVF7|-bK7y|rzmH0I{`SQ0TGbK=nUvi3@FT3T;U-$?l18fEoAA{cfV}t$@ zQ7=h)@e(S&$OOOq4{<(Lz$R=Uzg~-(JkFuHw{gE-T8Dp%_b!bQc?Vh)ztt9xp0(V3 z`<_J;6N~nokpHpg%I@CY?j46Po@ewy_PD_fOb33XYKMUcfG%dqu2efL+s4Hn_mtHa z7SvJ7oVtR-`ZACHWBBIr(6>6Wp4MUM_R0T?y=JJ#TY^GMhQDq+1f-(71f&OxO_vaq zed--c9|~`kW&KU}$K4lf8H$iJM$%ejs3o{s^T*X6tQ>4CDry|8jKs;{8;{g>cGfEX zxJ7!SIHCVBq?R+}txA=bRBu(tDqI(|7JKpkpD!wHL53@;KIM!0>2L+xlwZ?V6^?he z7L--6NndS$WjNl|s{cTBMeS%?peR^WTV6Y_wFG|s -{# Card Title #} -
    - {{ data.meta.name }} -
    + {# Card Title #} +
    + {{ data.meta.name }} +
    -{# Card Thumbnail #} -
    - Header image for {{ item }} + {# Card Thumbnail #} +
    + Header image for {{ item }} - {# TEMP -
    - {{ data.meta.description }} -
    - #} -
    +
    + Level {{ data.level }} - {{ data.level_name }} +
    +
    -{# Card Description #} -
    - {{ data.meta.description }} -
    - \ No newline at end of file + {# Card Description #} +
    + {{ data.meta.description }} +
    + diff --git a/piggy/thumbnails.py b/piggy/thumbnails.py new file mode 100644 index 0000000..0ef0c26 --- /dev/null +++ b/piggy/thumbnails.py @@ -0,0 +1,45 @@ +from pathlib import Path + +import PIL.Image +import PIL.ImageDraw +import PIL.ImageFont +import textwrap + + +# TODO: this is a mess. + + +def create_thumbnail( + title: str, bg_color: str = "111111", text_color: str = "fefefe", size: tuple[int, int] = (700, 300) +) -> PIL.Image: + """Returns the image data for a thumbnail of the given image.""" + im = PIL.Image.new("RGB", size, "#" + bg_color) + box = (0, 0, size[0], size[1]) + draw = PIL.ImageDraw.Draw(im) + + margin = 40 + + # Plays better with the text overlay + y_offset = 10 + + text = textwrap.fill(title, width=30) + font_size = 180 + size = None + + # Get the font path relative to this file + font_path = Path(__file__).parent / "resources/fonts/Lato-Bold.ttf" + font = PIL.ImageFont.truetype(font_path.as_posix(), font_size) + recursions = 0 + while ( + (size is None or size[2] > box[2] - margin or size[3] > box[3] - margin) and font_size > 0 and recursions < 50 + ): + font = font.font_variant(size=font_size) + size = draw.multiline_textbbox((0, 0), text, font=font, align="center") + font_size -= 5 + recursions += 1 + + box = (box[2] / 2, box[3] / 2 - y_offset) + + draw.multiline_text(box, text, font=font, fill="#" + text_color, align="center", anchor="mm") + + return im diff --git a/piggy/utils.py b/piggy/utils.py new file mode 100644 index 0000000..fbcf7c2 --- /dev/null +++ b/piggy/utils.py @@ -0,0 +1,9 @@ +from flask import send_file +from io import BytesIO + + +def serve_pil_image(pil_img): + img_io = BytesIO() + pil_img.save(img_io, "webp", quality=100) + img_io.seek(0) + return send_file(img_io, mimetype="image/webp") diff --git a/pyproject.toml b/pyproject.toml index 73782dd..82757f3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,6 +8,7 @@ dependencies = [ "flask", "turtleconverter@git+https://github.com/sondregronas/turtleconverter@main", "gunicorn", + "pillow", ] [build-system]