From c3e6ed4a50e917212902b6d33e45a56e454116d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Rafael=20Siqueira?= Date: Tue, 3 Jun 2025 20:13:07 -0300 Subject: [PATCH] wip --- certs/cert.pdf | Bin 66681 -> 68468 bytes certs/hello.py | 21 +++ certs/nr10_complementar_sep.html | 73 +++++++--- certs/pyproject.toml | 1 + certs/uv.lock | 26 +++- http-api/app/routes/enrollments/enroll.py | 18 ++- http-api/app/rules/course.py | 1 + http-api/app/rules/enrollment.py | 136 +++++++++++++----- http-api/app/rules/user.py | 13 +- http-api/tests/routes/test_enrollments.py | 81 ++++++++++- http-api/tests/routes/test_users.py | 10 +- http-api/tests/seeds.jsonl | 3 +- .../app/events/assign_tenant_cnpj.py | 4 +- 13 files changed, 312 insertions(+), 75 deletions(-) diff --git a/certs/cert.pdf b/certs/cert.pdf index 23056b78e7e61b7f4cc99592fc56cdd12bb76838..8a1d57ef57a672b681371bd30ef3c3526bf4addc 100644 GIT binary patch delta 66755 zcmV)BK*PWJhy?VO1duj=I5#jpJ_>Vma%Ev{3V7PJS<8+b#}T~mSIpS}TlIbb!X9K9 zkY&h*U>brT_^>|2BK7=j%URplY9=GaTZT0li+neuyZvKfjpWXS*oqqfe zMk_gW7cg4u$@_-RKmGWEF+SYl;pSWXC{2uIEBseaSi=^5!IRUwoA%t}$K&JT_Q%Ij zj?cgQ4Mf=&BXvOhXGaOyol@O$&z+0)Hl)v8xQn{Re0S?JuJw&Qe;aNCa5zW1 zPTU^sn(lRt{?7V`w}#7E7!!CiUs<7d~g@Xpl;l(zM=PV zb9en}muXFnmD^40S0f+VKz%4@tW zFkik4x4Dgf=X#$s`SE?_)%Wo{U0!RoMf$q>E!yTwp<_do>pj)}LQCX3f2q0QGfU&a zU-(jVrupR~!`CKWzI3Je)qk|3C8><*gHPHI3r?SZ&O$lmEml|IfiJU=yT2Ref4I`@ z(EQM_8;cZOrZUnYfaH9kj1`#1`-Q2zG-!PcMEUN2Vjj^snPcjj+D_9+@2kbvnzzD&%plfA_(p><`rzGtCHREuIoD2xCn6Ny3gujw2R@F8N3&yBbYnHm%3y~%fQ*2 ztCjrJ#Y(&TK%`F@$?OF&?LmrKikXUVmsu&E+XWfk7ptCA+|eMHiaLY`ZyuG)-R1M( zuAbk2Uxt;1AD)%t|1-~fb>72Pmd=0JL-h(kS1Dm7{i*h;wiqt?Jo{anWdx$@fGD5L zd+NA;Kh^MI9^=~ITn4}ySl{@c5deRtI&Ogz;3#9UY5!OZgBWuel4LXtkxWM=poLeJTf>|mpdmvUcw)06o{ zFU|kE*Q-eH9>F(9hw^`?tPf8ApKcobi9ZyE9#WHbr2KRG?yN&6-C zGX3j@fARdYzn^{SXYYHg^*)z3vA#Xu^>BBe&-Xc=?;rf>%YR9xDc3=m#>qT4Q6YtY z`4kmQj=r_D3;FR*HEr0r_!{23vS&vaJHgpzY!2NPLJ2;NUE=|)og=}!8=u2QIgkoU z;2td^Jz@N^RnNVd-%8hX8Tqr$Ocd{6o`l`H-+WoZ3^=9nv2I;|njNjL z@ofGnMT+QHmqdo9K)Iqw+2_B4v+bvm2D{wYuw=iX6x(sABsU*Nuq?nQ^{nIpK(GLF zrS%T%3f3(wWP`Hlz{z@8N7M2g)ezc_DaYF>p7p#C_WbKK@HFT?ucxW0kkVG^bqOFs zJQoc;PL!|`84(3fYuC`nLfx=`b&%^`<60o`q5TyOh(X=&vt8o|?!?IUCg>G3NiQ_k zYe|(J-AgN=6mDE^?xX%4OBlh4sz@*{s4^x_HR#?6IRB`Z-mWcUJq5;C2fJx7){gtjG; zt?O;sLbjd&RprGRwtzWtO$xSWTN<@6k;Fw?!(%bUH#yn`k{a>>)4ZqRi&h5xL9Ajr zmU2nc0^ZP5hU(#ISw;apbLVlpOlHy|dNshh1?D?1R|KuOzo8EDL}&`0_qN_9xq^CP znRLkGut#EiBC?f#YV4Y9D+LwGVp~BV@{4YTm6Ts}!-NXeMz?}UoZ6(@M3Zg<`(F4K zdgrz|J;AbJJmSovvUC-!vOZB}{1Z1gbXVbNyeTkC8I+2r>Oj>t(fOvrLBip!IWIcK z4m1Lmjaso}HwcHOK&?-47Lu^mme?h7>2YEYS)2{bY94BTf-xlm@*x=0yhOqcDugCQ zbD=85Wt4)jf{W*tm@&9eo5YbZxRge3$F>GlEKpQ&0w?m!9EF|-$WpxI$jMk*2inxJ z;$m4`#OqYJD31$j5*Z4kf{3v#ge2a=G$V+a=n{_;A_UX^g#|9ZD>N|$b0A(PnTRyv zBFSnojCH4fmPqdj1-5&IU4+b-bxUPO=3qS!a!oYH2=EOQQDdMA z@oUu_1vNMHSH|qsmOUk_kSsU*8gi=eO*fV^?ro)LXV3=`XqdP?!PG%Gz{FCnGWmFV zy*S20;2|Xmh^X6WdJ%*5Kp4EO1CZfh&_H6lSD$Kso{-mga+9LDs6VljBBTW*-uY%g z@5cskVgvzlFwu}KU3)c$s;Wwx6b6zS+7Q98 z;*bn~GccnRT4VNN0jwD_ilUpF5{+?RPl-+Hm#(`!j-{9r^h;#{8CEp;P4^Q!|f5O_nqtq*LPj;QT)~iH+>0VV}^nsM^@JtU=Frw1~J4n%3Syh&t z9X9n$M~WyDp*9aqZG{nY3Qv1%*qQ)7_E>XDsFc!Fn~oKSJHTSBu?$xkS#BWGyq2nBQ_h02bs zhFEU_vD2gdij|#Pr}Zvti(tXBXH~pwL>9FpR(3=vexOpUoM6Pt0f%`X7j90cI~s-c ze^@gxxOmyrre_U7)|g~O2p&W1fw(|_t!cg0a@8|UUF_phQN?CuTj_8LG|*z>z)>mm zQTkyGeuX`I+o{m7;PnIfW!Y`^1jBQNiHqW>ofCFdATe;0I_8QzR54pc7Ap*YqI0#{ zw{bf1Tvf9Wc^_CA&9|65m`r#mw;pw}Ot!mu{#2pEyDS^qrjywA>xLf+j)&tDJ49) zv>jD?)M#ti1$(QMOI2!I7Ms~3o^TTOdYg4(mDGlaPR*iRO_O3t8Un_F1OjCjU`xaS z9w-w&F389-aAJjejTxHL)TzIJz)5QtHm&IxrVULv#n3o(+E`nT(%fYQL!KW4z!woM zkhgWVOxPte1F|bRAfcAxjw&k>wKd#UTNDDYg|vim;0VE4DI)BR0lNg?sFQx1*rF0- zSPGOzVWC-J3x@GH_+Y!3#Ptof@H|CW2=z-);c7^2L!PGUY8#vJPEAvP9wbZyjix*o zN!q9pMGaI(M-!p7*%k{2CP`!#Op=WZy~s-jTXjA}oa`-EnTOV#KA@H*1vQ`@Qi#p`wwj#)W z0}mUZlH`Y(YThyqe*27pIvR~uV>)C5FU>fvE~z5IU?o{pQR-oT&gW{AS|RCYwJj6} z{nLs-PE~+~OGlF?XT=Odb{%N2y0!hS0{rR;i4Mb>=g&!*%$Gbxo8(_y!#3kc*voB$GI6NoyqlPQ`T;{cbn&Nsl zzRqba{?zmxV=S|OY6@wf*wK_}2UYJ@W>`^BnmQeoizz(KceF(teaud4I5VP6MDxZe zf!Tf+kIV>5c#&qV%NVt<+W1DDsHt($DIr}jb#ND(gd=qcy^hxfsNFiq8Aoo+X5gr_ z)2mS&(X=!20Pskr+PRMw;`t?1!3s-6F=|1XpEUT9Ar8WSRvoZfh(pOwCMauJf#J70 z9g~HHy-~s+U5e_}H5}_PKc_0n21ACT0$|Bkr0^j+wiJFXs(OZteZBlVA!SfC+{DJE zC__6(2hJ8c)sYolSfla-nYHAM(5!J%vPA7Hr=YRfKHXL!CstKcbXJAJKF76set=&z z?fPgiGigjoWBV}`YDk)wvgg}W$39Ly%}D#WX23D2nU(^@Y4%-Oqr_ZGRCbX5jYdlW z#xZIqo+cZI-VW6KmB$1x`%d^NTRr>xA6uVbhLaTzIe#@XGd?~Fb98cLVQmU{+U;6N zuiQ2azR$1lAE+W~vjjX0&=duV-X1zd5fnZ6&AiDe1(N=Mpq4GlA}!7G7N>{CNE~k> z`EeCF(8=-m0mgr9utN3L2I!7oc3*c=^mclh|1;gjBi;Z|N>~Wa+pZ5<^iuY|@4h|n z{@DFJzJK#!03o~2|LmZP$G6Wne0BMa^X_px^12gyaovxH9iS-Q2^atL9mpWSYZF{| z__F)(`=`Tik3V(_gw|S0-yP1oKOdyj{T|GN)arQ;HlATV_ouy*4^j;*qW}7 zKC>~MgPG4ZJs;UoNlca4RAzlYileGE7>t;F=pEY&3AcFGB`>2lZi9AOL*YgzVjO+=Db!w6Y zBgVhM8k7w5UKct>ED_`E5((3cae6;Xz;uSTu+q&aNp|&80<;~pm4qmNkJzB8NT|RI zlU*qV8^QtV3atsPA?Zl#^n9S!pCv^On16&BF}7}&0I!FzH>Kok{k$GNXS!c`CGr{H zlk@t-%26(&xf*gtiJn;f^Lg#}HC=NFvcxV)U@6kqzDM0NZ;CfKbGZld@4+xN=6U<$f0e%f*1!LgZB;d0EFgO*Q>e&9yYy(pYka zc)tw%JT+No>c*|X3R{MW|Bd@z_|xwKY2)R6FAXp+UZvaR<< z3i)l+Z|k}zRI~q#a0NL7;})2B<>+!#p_n}MPuC@=XjjjIAt{}Mx&kZ zRj)&xrhQTqDPCFeonvEH(Lxd{&Q-EYlHD2?TZm;}V7sN-?xwWuTYaRo2!FCG!(xY7 zm>qytv^<*eXvcTj)m;_GrKWiY0?H_}P$e*i*r+U?J?_Qnjlwr4u zBST3htB|-$j zG!0v(UI}rWlDQ+DhViLddOj5nsc6>4y3veEddn2fv8fnbn3gp`Q==~|rDAio<;>+B z0`qR}wY*oo$_NIQq$64+cX+uNDQ6|?2sejaGgQh(D(X(1H$675MQyOPwt z&>o4MO?>`**nLgR!pN=?V4bq~tA_IT19!~8t#`aW80o~HC|sa*`PU1Tk?-cz$yj!4 z>U3nfIdw92+?=|*sh)T*>SW5bHFY}4*_=8Vf^1Hm3=B4>PMY*vQ>TsY&8d^7@#fS? zyKrmjv_-Z#br#ar*_=ArxNl9JZpQDYo{xV4yOKYI6giK zb98cLVQmU{+U&duxFc1SI9|znubbU&ng(RE>1Gk5q>@yU3Mg1>s!~;{JsZ$a*{V{N zq*B?c5(Jt>mS$_&7m=j_6$KSR&>3|U9Y+yo)ZgIf%rNew z-}nDh=R5D7y6d^;o_p>&f4A~IC7RwkOTwuYY3|f{xz?K^xv~HH>=XP2D$wy8i+&Wr2+S zcJ6aJXnzoRKgQ||gMB`9B&ZvD6oL-Eq3zZT@&e{t5Of3#LHkM_e)4EOSPEy`3MMFduY!c440pP0#J_3>JR&dvu0aZhoHe< zgZE`(;m;#-LssfcS5IvRx-dBmWRRn;@)Iv2ebrUwufiZ<5ttq zRwxL!_pH2aHu4@1CP_T>W@yu<&8s}DeMjg=XF;LcXJw1YrJb{xLW^J~_2-5=1^OR7 zOErju{zA{vo1sTulJ{Zgyx-a8?_b*H#n0knzrW7^=CgS1f1h`}zr?dBK>DB5Zu=iD zn>D-sbUChx{BFJZi|P1=7tU!3{ln(CbSTvSqsCbWodLb_yz;#Ayz;#AJb(UJP<7Ar z<;wm)JNNHF?|DgH06Bk9-uGUb_p)Q`c)s3@-t+y>@r1txrJo!BsXu(|#SgwzHh<_7 zdK$WCo?iTNfBApb`7i$I^Z30!)z6_jf2;i7{oBiaYnw;+&=o-M`TiH*D_?(pKD+g3 zVV^&KjxXEyiIDw2Ugz&ZC;w4nz8kvnFDg$BBK~4y=b=kqIr(0BUU^=5UU~k=`-;6+ zeVT=bp$k`R>6f7!mKLBZmX3vnEAKynZd^L#g?BCBe|_8kU*)y1AM_J|otHhc-9Mqf zPea%K$-I0zwDHg8cb)-_0NxKl&)&Cu@A5s*uAcU@Tl7VM2d&~2457HA?ap^9QMptoZ=1;+^2(%A^Vyn3HYLLbO zB7i;|f22u(DL}slq?uJ*ItHZJ95(>O=QwLe%yAY|kaIj0AT>t@AU(&~9ei$%w*lnm zIP=GaIerMBILA)|l;-#YfXWG`!T=+YX zeq$BGGdX^16~i-m{rf70uLJ4#0saS|?*-`(R}py15cIQET$rutFII5@=*OmYt2ooE ze@*LGafRNzic1$mi=iV{^l%f<KZ_zyK8@cUVGiF_Ostw0{;Bs59aH>dk5!3?T{O~ zKlIVi)8SLYZ-k)l)aT!qW;^Ai6-^~qf4HfkAcR=K2e}PG|r)e-2mv$#C-@1^@H{c;>gk61)O$Tw?xL;NlhdG=T5?epnO#y-@ru zaPI#QuKORsdtZT9;Qv|pE`Vp&e>}4mS$oOa2Lb$YulyX|`4@#J_WJ4buy^>k!mEBK zz<&~)vbVOkvG-{2yZ8PAh=4(SxpdUhPG||*8#(}lN}N_@M3R zauGqpSD^56Ne&;hwDbGFrbD;geDiW`@gv`V=8Rdy{mAT=2K4c|S(I!fe~*r*l1b#a z%En&5X-a71uyOY~XcXq?vMV0;6?YH&%GsEXTY%J}ZaS?*f zd-ka%a_Q61@gPv%d`uXOe|z9D2{7s*YquPKVtC8uHM3z4JU9_grPArd#sk9PU7uS1 z#;v!8j{4M1Pv5l>c%O&%ch#;@P{P)zUQ-C|$o&8UnC> z%la)FLO`{)tbgQ-p&zXa{pgGDDt&I(U){9puRmK_+WBjKfAOJb&REQc-tf#@m(E`P z@~z*7ApSu75=x;Cm2jBmPOLu+!q42^TcU~2~`i?t> z|8QCOvM-Hy?ON5()n1l^GNvk%m2QA%cY_GmzN(8 zuL&=|GgQ0$#&=w?e9zKO=Wi|u-|#PyUGEN`yzA59e}BIEqVV~%pR7XtXP;WU2gnMY zN$R-co?F+IE{{L{xZ{$^Q^G6T;gH#OSi5=68ZbI|oA1W(j(7avvVFn2uQhgB)tgHf zU4O?{KOH*%JJ;`c>cX|5hr;`4S8T29(6?QC$BmEb7yZ{}^Wo9H`!cPQPVKRw%GpP6 zfj@g&e<*m=G9PFku>YHDCxy@!A1aJD9dopOvlY7JQ_hUXGiG1Cfdtk9E3qC(6XVL7@Ky6diIo&|NP&;D@XiA831uQrd3Xvb!>&^~h|+*RI`?UY*g# z^;?o#4hV-n+uXVJ^!J?;x?=gVsdx6)@^*1De=**&F?4@ufA68eMUR~Mz`D)GbVGhe zHGI}(`L%~$e(2hg6jn~lPKA(IZ&9Z%tkKWQ7VhZnI_ma}bOQA3v#Z>!Icm*uEB9Y( zmv)8|&~y1qKYcF$o>@LvvT+MgmBgIWnWT?@&LYg$;Nb9w zf4Ob-qt`v~z`COv7v?T|yw`jD1GOtS?uuIVDxSY;!-@JE-@EjUUH6@&MK62i-Qjor zdiyQL!{>z0{h(3(;5p&9JX{5GbHK<)0=XT#hun5A_Z~w50iGIO3v6HI#;2x}r*6FP zWBqkNKnGnlG_DfzSDn?_epL9q;e&gRe{R_RoA-p@^{Y!yzxAv&3sSH8;57V}N9tQE zYeM@PHx_0xaF#dBMg%grdPN5JhAS&Fm~rx^J!SAbFF+8hYxOcRh+g`6Fz?H97dDTa zN#f}Gwk<2OuU4<*xGOho|Mk1V?|$a8sCH7g@XTx8`$ql5TdEJgC49~YtHuYBcWtS#^t7mJrkKuOp( zeZb-a;RCY0n>Sqg^t(gv{LPh@{OnHh^7E+k?v}KBC)8kP@wKOH+Iz3Gsm5mVn2o-o zD?8`9BCqJmi}UZEr=fBgVDbY=~$V>mXP2s8-H*KTzb=kzy4bApb-|%xZ4Rk_io*K zFG%iQIiKGHcK;DTFAiQkF%t8&0S5!J%EbEjJh1MBTl~qpN)McUe&JjSsQiP4GtYQ% z+pcW*>T9mdUAlGG1)!gMe?VvIVsdtSKkMh72NsjRejG^QVvs*t`US{;)oRJY=HtMu z!60DQ-Sa>pM$@r4P0wmCEoEn9JeCFP1NsXex3WH8UtKq77c}QLR0jOc$9c~KOW%0r zH6Z^^aJHSXs%0R5V`8^lpEE}5cT06o^3Dg=9do_S4z*XWJFbj)`ieLEa>u0OSjET#`b4sMr1oMBD;PR`tgble|_kz-8OW#k8WB#b@$lV z`j_20FCBZ~ZR?J#UnpD#%-82HW6y7G-tU3s!;Gu)d0@J(;`l3+(Z!Xo}*|^}8)`$Au`<(sWvwm8AbN!^_q*L#`>H7X-8`z7=gc9Lm;k0n*YY!DX zAym0a&R$S@vvfih4j+TQZry8--98MTb*(a+*~!oTe=2;@5e((cEJLKp?4vp`1@h#yicZ3dE{{D_#?>JKlhp$^)1A4jw~W_^vbQ zulTNOUh2DsFS_H~)9JVGxZ~SrpZ)DStZPN_e_G4DE}y>+gdpno=6>q~fLOl&(c7*G z?e}Q-(a^qcd)x9a0I~e@6(8_IFz~~>{i`jZB=EY!;dRSz3vGLF@t>D}`LWPJtC7+T zVBT54+p#NiIVJqOKCeCg_&v7U+E9Aq@kejGBlP{#t=HjGy>KBDdT%&1{mS-pKR3$k zf4FdY`x{;#{_0!8>*^QUr-u1}&Yq`-L!oV-@me1mg_WB=e97{8s(RE)L~zBk-&@?a z^jEXrkiFDD-2yaX&waIrZ?_sU?pDytuYccRY5%HxF$-f7st|pKSY0_=pd`_3E22j|uZOnz7k^_8Gsw zdgeR3;qvy=H!SY|SGRp$py%zz+)8YDfd?DDz4po5wqEq~`zDWF zc<92ziwDaC_M*GRHK9oH`qNIkuBcwK^^6;eCvQ32zSX$&$+Iu~_GbRR&>^1>|1xyO zhs(D+`|tavB7F0%8}~o_fd4x4mea~NodI~(wQIMALW?IiPdWE%mxp(JfBk&G@3!ap z#lYCBJ7>!aB$!Si$>U$_*d>8|+0%H3C$&!iet!k{z2MbzelNURS_1rDdwS)%l6K7* zTdxEB9_HL!z2wQaT=<=(PxJRJe;+Wsyz|55JM8`UePao}dHIF|4&Q%;;TyN^W_bBG zGlu_pdw9n;w#`=hC&1X>e-3;GV8gNF!eJoa1Jem$lx7?J;6uXu8|S|1jptUcNu5C+ zcN}>}YWb$~Lz_d)M?M_NhPIqfeQDS7PcOJ|`6s)+NP)gOps&MM`%<@@5+e9>{m=d~fAoIn>6uNX_VCq0(WD?GQyjO?%HLE{fI`pSxA=JIgf&O4^s{9{ z0>9}4UjR8O6k5I)q!myCtRA)@v0=;cTh=b$`;#yI_Nx8fA(_otUc((FCnkp@9>SB zu(&WE$95JrIt(2Ee^ux70(278o70PX)LDWyL-)<;HPB(u=U3^F3+)4acTV@fiTYo2+Jp8B z?KP+SfIetW51`kDHqGfFbW|uer$^AHkTs{r&@rJ)=d=%P4!w6y2hee$FU;u)X#4Xy zJ%u)f51i9y13EsZ-vYfhtjy_ipd-T5Iejj4)QX{Z{Cph5nqr7}{&$;yHZ@w9mp-bNbTfE$rrV2Xw^Zx;gzeXw%~B z=kztue^HD4oW2&?ylBtq>!8CHub9)OyDth_Zq+5qVo{H=qUDnx^P3FNqt0`g2~ z1lk$keb17U=VPA;unstYLCx56xidcA0Ma!0e;b2Pprf-924G|t@bhvlXML~s{Dv2e zS_G}?fLjX^!K{Yht+w)OmrbBe3z~wuMS#2K!~&d^&T0{$w+?8tI>*7v{5C;4C>?^l z)mp2qUcROV%36TmmoMdiPwN-X;^pfID`^YV>im`(Do8t^MirE{LC(w9!hdHe15yL5 zfA8eCwx01=gPfJ}F34+uzrRmjFRr(zv|e1s|IU^#mDG!CyjV^zE`K>Gy|@nkJIY=t zp_jJYEuWW@#qN1OKgT_}eKBXdxp;oW=X{-w2cbMVp<{&%!`q10bm zzUM4nTKeL7y|f1YTT7mw`^&Z3EsgpAe=Au2-0XiZy!=l?q1S?1`#|f!skR9UEqxZ8 znE+6Ko=#_fH$$_p6VLtcgxP@`uD06sRXPkAz25B84xpn4^{5|x_qvB~j(_5$lb_iB zsb^2WYMt}gm#CBWzTm6>7#~BQ-1hpL_TjcpXi2Bouf&=6+Gnr1Z@ay2-|wWhf4#f6 zvjctNxSPMfY0dlJzW-+yuH3MUGv3puo){Zc!pHsN1-ria_SYz1%TR~D`bzViCwzbW z4Xpe2lS|*+dh^qN*I>KK2mf6>;?gs}`^{?(PwsV3=4ZvPuKiwezrVZf_|fR-e?Il~ zpFX_)um5rK53m336X-v_@A17Je|UVaLyzQtT)gL}`~rF42QN5e|IO{cS^udo{-3}3 z!n+Q7?8f2KwGY1f$w$1;UUL4{)86vY&mVcnC&l$||IL$^KXoX3?+H6Ee$UR$gP$%` zzj^9cgMYj5l(#;1o|?T@I^xLBcz36s`m3A&^J^dc>VGeP{*%AF_Q|ymfByS9{K3Ea z$p`q4-_U>jdo7o;~8mkN?YMpIooMYs&%ub?4iDc1f*@ z@ALJKz4If781J~}llOi0Ywq@M+}OY7n4j(}WYdHDV0kZV`yTkue;=RliODaU!~eo>|LkuL`@sA5{^qBL>8tMHKXAj^{dXpB zzw?=6yYY|y@Z)u%vhOc$`vvr7=qm@t^#Ajlr3a3A{ItVU+rpnZ>8qoCrWF3`;n}4( zpLpKzN%zZd-SN|p@R`$3yW>-zRl?jaPP_R>Pe-e-{oE(M^Rw5tf8tN&&bzI12{~Nk z_NSkC7W=|$){alO^`VdM){{eLf9`@F3Z++Wtsv1ETIHfpB^8v&J8%)R^99@&2$96f z5>@W!O?jHb5k*MU1c^YqAbTuLbgNmakBf;xC9Mg(SX4y2UFoRb;A}9FaY?)%TLIKv!VeDFq70Ozax1 zH2cX2#idP`lVrY2XtjQVG>f^B>u_p2s#Yyt8N&<`welI!e{q>nELCUQF@y5^l9p)1 za5s)%K8iOI6&^Enwlt_wB-X|VwkRsjgi~`|U&jk>$7+wW8AUh5j%>P!lo{)&1d|dr z_L6nY5JZzAr)-ju%Y4$Wbp#a=ctS`MkwT%U=bKVi$*FBctiZ{lO6aLzs5b=FWWkys zxGK|(iPrKHe}0gTjynv=M3~5UNRhCVB+DwO$BWLWqs3K^C+b2Wjt?3gy+;KW4*O+> zY7J_L>?6GGXOTv_&SP-EnNg2#P!*hjaY40GhEu1CEta2HC8=TMW2H{u(seCQXz8?w znL<`Bjd4s*GIqb4F2c!tvzg0HoT4bFkz}OXDJCM(f4)a`B(&CJi^+~{RLYuAMgq&P z(Ks?llYWsR(GsboQ!EL`^Q|;OPNq==tCcX788J1)YX-fnM=3^QQnRO1xmPF+W6gHk zC5Uv6Rb44N;a#AMTD+#)RA4p<3vCmvn(E6@B-x;3%14Z#;Rkr4kQnK`N;Xo)R01Dh z=Ac3be{2?qGp<~)j6SK0Ox>LdQ3qvY%t_;Bj+hD>t_V>gpz^q1X4#3|qHMOpHgvaC z2)ez3DT@{*6AfG}6zge~^f7+okO_>+;W8ReswP;K=7^ZO9TvlEzTx+9l5vt#eayG? zNRb{!JULnPvOTKasfnCg3-GK`sFwy*L8nWue}@f)mg}e@RUrIsJn7pu+p57?MRz&E z?h*z!s%70#!3e6VCw53-;7dWnVNF)bl7hgEU}X|<5!#~L{r+%(XF0o4h;-|TVvojX zgRrSiZi>}KvTEh6{s^~FD>g(4((jr{KQWeqK>_joI<90YZX(H+YTbSo_j%UTd7_iy zf9l0T+AwHQrYI2(>_P%(xfElT7+J3{3T876JD!^iL^8lQ92E#$(>ZGFR&YFzG^tEo zwFj_Zvy)P{(5Vy^ypTxNWviSgr*I}WhNpOh$_X|aMJ&XtkEbPW>dH}k&_fiqnN-+u zAr;iC*-5(+t7~p&I8suUQ%IydrR9@3e@*Z)!kLgQf5hZ9Bc-81x`lAQSw<+uZ_^6Q z3vwYP5OJ`EAe85B{Mb6N$Pvk_`OXF;t_l33~f4WkW zi^U7NoZ%WWk7ENdtGG!Q>{E@)r43Kv+?tDXcEZR;Srd^9wMM3~?nA zGzm>mu&CDOre;3RSis2Uth~>rsSdR)HX)dnd}1A7OrO|eO>T(o74RG3kE z9IeHyV33h@1&?$~z^nyiEY+#OIdqtgQ3mVv4W`%k;=PKW5rlle+MFefnP4yxNh(Pw zRG%2S1U8l#x@D5-psdoEf867{?OK^kxz%p0SuPZ6l{VV07lODES1r{aAixBMOmjS3Y{Aph8e3HIlEfSXJoWl#Bj5P z<486|Y7SX<0!##_f8aQ+aSbU-5t@t!J`T=jiBw{6v8eRas+tfK+pMUSU#syX#GDWRQasUQ}|k(N4h|#*6J>H0VSKf2ShZW;)%Dxtf6^O}$-I zQ#CcFz-3@Y7<_6rxKXJ>TI?ik*DCBJ(Goku1~TxI*%1{@%et6v)yuA4NEDSaDs<~& z4OXyXJSa6`Uxf#7Tfhh9tXM`l)lbJrzkyHrlteIH$)}nb)3gLjm(Z5NOYIDz(YZd@ z^ZiPySM%UPf2FUJR7_?I{1_`?6J$urLRuW5oJ1l?*n;WoR4z+a8A0+wLR5LLNEPs= zqex{YZdsjrSvGLHShVtW7$=H0BF37eCD$-DDvn1|WPnb6cSP8kNRP>Yb&VmFc);`u zt#NHA;Fu5BC=n|okpZwmLcmPT0#Qe760c!I+f7CMe||!kq!X!DJEs>koCK8v@wtgnRjBtvYfWf7Ta>BT(gWPEGk1! zr^A#vf3SNg-1I0qr}7k9Y*+9i7c2Ftp-yB6xkP|XA`PU8X{8=MNxO{ME3x%jk96Qc z7R;To2O7|Qk0=$Ya;cpt=$%BPLldQLg~{t9p~h>_25_0Tfd>)k_c=_?!6exO=X_ionzd*P*0Up~!#5m~5p#}5 z$Kpme*VM9^u2C9#y==YToYuKO6Re1YOerloBrTu7?dcfP(uI8BXz8XeWgEOnSyWDH zf8|pOU1|2rR#0>zoqoyiBBfqTHDV1WH5f4(=B8+KNXT-EP7Ks&#KCiRIg%u4mx)c< zq?76PyFJW>E5bx}2+FcyepHsQDO!!&&Pa;d9$YtJ&bGT*Gwnu5SRjEPomH)9y;~Pt z6ya-Ad5|{cG;jCVdI7hav1F{2Dr5<8f3PM@O2S9c7S?d1?1bv2N0b%K0~b${(zuNQ zJEM;y0hXmiB406 z&zM6>!^DW{8}W#bMlHfIs<jT0t+C1hETTFQnQ-MM1MFYvmg4xGPVQK95gbWgxI@ zfJCUVK5ewjf(S&7DF{zt!?BwddkULNmyAl^ZO3hV7^Nv+sATOan7j|pZAzq~8L3%-FChO7wSa{_~2b+kU*<-QLRoe z(`Ql<2g}=LlqJxnR0rpp;vgvkVQ8SQLZB1LD4hYJk*73)jaN*JA}9TFJKphPZO=`y zEL@XSNkz)60;7awGF+_R#(fyXb!a-GnZW0A9HOC5cq?l*3VE;CX#+n+f6*FN1~&>x z5X!hxfa~!}w3ed+!~pRn&rjG?x+$ymi9SdMW|=Oy7L7S38RR;}c%xg7;ap6)m+ce?QwA^h(8?uonfK8Q^n&KClY9g5>i|ur)kYU_ZucW|&mN2ojs8SrR zI4Q{*l*9m48Zwp7O_2nLX-HyRrs#>QvY5{rv5cT5GETFP=X4H7e_R^o`!SmHIAU07 znX)9i3}rU^oLTNNs+~#F0|Qa*k*Jk%p@T#!3?f#IR98+^%4*h@Fcl$y%c)|T)GJ|d zPl#X=>i3&jQ|I{U*u*19lh$F3R^ddX9q(z`dL1Li7T6~>qE#BDx-Czero2)|iIx(u zMUn_ESi&IdoAH#We`%~*7PApwBZe#)Rn1{ibB&BRK$6jPJU^~CEA39VG^Xl=8JoGz z`FdjLD4iNg;yTS(x=GnF758P|mLdaJpFB9#;%R(9NrdAgQ&VbAdxVmx_o;TKqI7$_ z>;(efayvBE&v2qZOH*Bj?esus)+j+9772OWCrmcUO&p1rV4t%KQZKD~hB6HzI9lXn z*(@b=y%B4Ge>k8qa#1(~&g;B@jYov(FK?U;`MnDTTHUW+EgOgHaS5&K44L{h1TGfFQYBL93f1Z6#Ffj z$cV*s%JkBil0mgdmm3Z1%|NOaE7`i%42Mov7BJ<-R$24{2A0nG=A9v(N`TD&bt z7K@4#2V-p$^%8|rAs(x{PMa2RKMfC~V3`ID$xqnXjE)c_sAoAM>my25HbrDw>T&I| z1Z*(UfAEND-LcIa=I1C_?dU}dRXeRw-}d{QKvo$N$z`#Gmu`$pyxkw98UvlJ!%f;Y zD`-S0hz*v_w1%EmPqE28#+sH&whM8Zpc0x2;qIHK*jToX0Gxm7bI{z=i<_+pH5d zJR$=pnVU9gTs65|MDU0}824g5r>;{G5R2Cc-*mHyL9eLOMUS>BGSyD>FpL$3)f%Jd z8fRiKKY#QE5}$UEiJ4_I1SSL5ood)P1>)13O-cFeumSWT!;&?hX$e3_lAhuutCEK^ zGEpi{Y`X&DfhdV#9vf%{CerP(Ho_4NC&vs)UmRhH96rqudIndz6|BnRB@bywOHQHN z2T_k;Pnm3M9La%Miex1X{G=4nH;tG30&Yh~S%1>Zq(vE}6+4E+M_#>c(PP-+%T%oD z#^nOg45!ex#A-`-B^%A@W*N>!be^=Z4&tZB=>RFFvw>b}_c}r;;}t!kRitCIpn(mZ z7aF)NG_oUy&6DM+h*5>SPrB%?JCX_~2Y*Nvw!I1n2YIOvK&UBj)C zl_^z>is(&zHLK~k)YQwO=#MGV>G2U*Vr;69`M!$~SPS?$h$zBFCSrCqii2ej%ciil zR2AVE31Z4>yW)FBYgq3ZgK98{=knbmYx@jK4*Jv-)&;CKA|N*fPd8x z7SnL1S;$bO#3ZAF7^~LKwEK<_sh4~no(|GfRCm+Cpbm~NMN*I{(xUm;aL@uaj>|+G zg;%h&>K7;t9M52JBLk+D*Qk8AFjdl)XNeWKCkZGu&B??S#$dMXTDwQ3_>74v0BHT-eOi z`dPXSwl6|WaD!+i4Wb+AwJ4wv#aPW?(z%2n1mbw0rBxuq$W+e<0~DOsy?92iMI-^7 z$v#b)vO|((NypnA;2QLLqSQg;OxI2H#HjBa)+)}?_XzhB&YY*Ec9nVzovdcJ3gPpo%QjweN1d}8Z z4cIB!V6~bcD1r`b2u!JrN#S+6nC_J|Gd3B-RLUqchLxxiR8zA%j&_VA;am=cD1qfm znLxp%PQ}i$L9!8KIz1}Z2!Avwi)RPfoLc5d8Hr>k{!kL(KBvkF+VowHph$9ziL{KA zfsK#3R)%R%gT82%hk0F5>e(UPjQf$Iq05xzm;&z7qJ{JbxvO#wp@E3~Ag3@bF2J0~ zNN1!#Xi=I%m*bOBKb8amn8j7%ZA>lH(`vhBN)rT0$W0Uv22HFq=zmJM&oG!Haq1u; zHexhBE_Ya5hVf?Ft90r@Ne`4^oM@N5N>(vkw&xN9*_aHAeu9qq1F{ydz?Xts#YA$d zMpL;S-KJLVI0U@~`mSK=z`&A9Mk_~B5~jyVtVa>PNH(ZZ)?#H^ON>d~5}I7T zK+Uv<2do>l%Vms! zi#9SyXMFi8lqq zv;4N`mrGo;2J9*&Gk$-PiN*Tk6lR%DzFabdNCCufyx_QToXxVdGe9Pko*1!pnoMh? zMMf|)0B$6#Vh#+PR@op*ilgfV6!=#~5F`1t-?b#FE!LR|V^EDwlNpHdf{S5My^zGa z?Gi3j*ndWMB#vMgpZIdlGUJrxjyM~EQ&<_NCRVaSXXqx5W$-CE?NbEf(!F-0==Gaw zEhYiqFQN`4CWe$7)2SwnoIyU2%R-}xq8gGHBeG0Qz&YThyqZqK!>pQUmN-^1l9fKw z?rK7}DGkvn)pYH&S&s3F>k|`~V^y>;CCnsn$ba)0*(t|HwFx#gX5SiPaf6{DDFF42JTR4-N#6+&*XIu*+_ zeGJ4isg&Z@3nm{himN0iP607p4^fe}G%01ckzbXWfa>W!!A7SxBD#oFjCjqgH}n$8 zhJRw9Db@m~CGe4x;s7{u6rR9Yizmws-1I#j8^9Dw;lQsjQiM)qo2`z_=TjwdDA^(vbc<0%sT#3JG26q5nvl(EonfHLG&OKbS zB56+tQGcLo z%}#GvNagA-9BY>FGRs@lTEwnltjKpIvZQiktxraCIBBEljOfym4OYjh=>(3ZcqWMt z49?7I%|4-9oaqHoxfF|6;vkA2)G*T0dx-3lI0zU?8Ed8^;Ji`EG2Jvp2AnTKqG>aD z(edEC=T@z0FBLFqsm@mDVMd)|f`6DL%UK2ZmMZW`LEOvR`Y1m(bCgx}1+aHW(!qI~ z%JA(vY3K?fCo+B4!3oI&At;@nmf#p_bR5yofE|~u)e#v@Q!zIxV7e(Py2~UY-72g* zrBY$#jzf037>)XEhU6z4@Ue2hk0O16Wo)dKAJN0;q|Ex3+a}CzJ8#3Zlz*rjMYzpp z3DZKOawk72^~e-4tQI1jKF4*Nu$~4UJd91@Di4mj>=e<&h%}Zag8^r;T*OCuB<)6X zq#tL;-543*VyT+L8k&#f0*g=+jiG1IB{{Ab9BHORaK2|%Q!cg4NrEtm)Cg`;Q-n=V z%d*t+n?OzzQFcwO-6JGt$bZXJB~|Y2ncR#Ot*T*nf?T zFSn9W-jP~ni@^10p+)+9Oo_?e(O}>Yk)9LjHWKYT7svEwH(5|pQ#~h_IXvD}fS(C$ zvM*vx1K3?NU-jC259Z7&1!5a3tS;i_m98rnq6(q;o zLX`E*9v*W7(xx$zQhzc!Q{W80;5OoQt6ZcliOltzrC6j1*F*}_y8`1DY2cNlR7Vk7 zteFbjmTSyPI2XqqoA0G=*uzEb_l7#fH?UGY`#0Pdta~iN~uzZqqGDfU{Ym~)#)Uc@>4i#l3hYi%akT8PP_$hfQ%p32xpLBWTrjpL zjrtZr3R596o_`=xEykNsCl=v*Y@>|>8=I}ihQgT6L@UK1UYypabt6_P7TR@95ypho zmN>keCHyj%j35NBIaR71q>JsrpjOCKDka12d1H~Dlr(l6MezySO4_hTO)!@8nb~)w zv;_8q6=Vvrl2(j0gMcbAM7f$0Bc@tX%70BK)v0i~D37@VLSZe@GKs8Q z8^;x9EELQVVF@*%3Bo|Xn&p9h5N0&RgL72Pw&1?)i`hnLA`}aSIy~z4y_8!lCD{0& z7Ujk)hpBEqDGFV&fzU~HfC{!bh!9Q(ll6q;O9M%(bk#z>?+YQ&^6sqW8 zSP!YAa<`svH7An=(T$=G)41i5cp_c;Ytq#^n9Z@+(&wnJ!c5+w*w$-CuI8VSVY|8^G67AtW z*30^Ggck?nd`og7s>w-H*5eh{jB2rn$KX_*sjIclP%RZJQLtB&#iEmn4a!l$s_~6T zIg81OdR*q6tXUrARi~3Dc!XJ3%1@$r1MI;CrrUvL*gk3$0qes0dJ^a+Z5wn*%|gcRE~;-R6yCN7#Vk*c!;1eYx@9-nw#rO+q^LVuZ4 zJD#VZu2YZpn9;DII^*0#ry7C_e5f+aHGz+2!y{yb#CzUw>ctBqPwzQ(1J5=|yGbc> z6o*ljjnwjK5>fIPV)1#mpN}F*8go-@)Ggy!Ezelk*o_A@jl;^hhGU=&w!_FxPv(+R z50;yfXLU-N?h=GPLV>Xs$mW>CoPQYJh_;2PnW0D_jrqcuk_Raq1UrPJCr~Qrl{;1h zvr#&m=;aD)lk8_PG>58zni$D8uPSLb zU8xl*dcf%PKx+?yk2Z2$rKxeGuK_zgNsXL5YwIbzflyL__3#o^B55r3;4PC+o# z!dLD%8cxphvfS*BqZOU~aZ?}^iI|QZMAl0AmRy!dt(q7i^=w3tri9=V(Q%6cvX$Tf4StW~A%6LrF!NJRPNfJd;q^U;7 zLO0t{Qe_&13Ah}`u~GJR1_s;J)N7H6Ca%Z&@PKHs z)0`!_r0N$NPCHYIDPFCV?WjzFDW>qUhG*RAgy-m%1m`1u8W)`kjemjY%JKu&bo+=r zU?Nkb)RtG=*u?On=E{MebAvT5*2IL7GW^s!vfY-NSLej>FWLw6Gi%=njjyeQ8tx zv0=>z{wYi~)5CnHP*mU~o+kT!5Cm}5RIlK9-at0e7_aneu#eTmsmWzQAG|#!Ei2nT_!1lY-FfCUssjeH7j`V@_?{*I&0S$+w|HGNXgm`>cTZ^j6$ z!c1YcXnzBpm7;?PPLYJJpar;B;(Ty^v?iVs%a@AY$gME(v7dJ*Ao4*X4OvUt{+LiH zEY}d~5zQ5upz9~(!6=olP18VzrIg?lfIqMH+XXjE7b{9;=w_8(kVi8ThyXZz+NaH= zK@3rfpv@r-@@YaIQd-%=Nq0cmutm}>r|badynk3wj842W`yB^L<_h&xK)Z!RsiBtP ztie#iXn;tH%n6u7Wv4<*1bzXCBnnCw#4ApLZniB%>1a&6WvekvhykPLNf;X8Rn*Op zLX3}3tS>F5crmUg;w3w+ zpqUg0j$nP053p zt@Q-P#o(ebC$y$M&CRHm>4#k@CsFYqEw8xAf-*d|2oBs%P@Dw3vkZBMW`FDP zdMk$mUUIbtD=HS=^xM3>4(pM!VmCFX(o)V$R-lYBqnf>8xav20hN?A79yTe#-U>p^ z6NH#=SWcxQDz55{84=E`g;>;OYv5>(=~@1SAIXcTS7(BeIeV5NCvNR&gHt{V^fcul z&fVX0vFB3MA(Y9TqEF}mGEx-dA%E!2tk!MNBhWjb$7qknNPp_Qn?1BY$ymA{X3W^n zGv?|Pq49FZs(ncQl3(N-`Aj~Lx8x0ZMP8G4+_ zQ2ssnNUk8N6Lb$EKT5HqyW}Gt(daScAEN{Ceod~(Pjmx4Kvih3h@PNRun47s{sYlr zrwNmx6BCo-R7Zacxb#?ACR%&{|KHtQrLmivP1`pcw17&gQc0>Cf!veI{hkzZNmWuw zC84)ai5{)p>tW=UhjV8H2k?YtD5#-||S1 z`!v<;^_P$M<+jr~^1%HIXUm{`;*HF@)A@!!0(n}T@8`dI)9c^Y={!N|bS}IsiGuLk z{_W~@pziO3h$bN8k>7mP6x6*2+~1NcH!bouKdx9kL`4>>VWcl&VQ4pRvCYOHDMJY=nhu7|FNu7|FF_;o($pbuH$A7Hn8I{5!oz3OZA?koRO zUB@5meA9p5j{n|&+VPM6vh&>kubhE?Qd0OS3v#Q^4$|^6%6E=-WUS(HJogNcR+r2yv8$Pdr* ztIPS9{t)b&Pl8_d$FDzrFX;K2qj#TL=9;tExlj7(&KHm0aD4ai2aZ2@&O6oTq3i$8 zSMPs8!iygY4~755!+-c+HymB{Ab~#();~DxPs2z5f#H+?ufyN`V}#?U|09GPgjfBe zhF<{w{`kZnpa1fOyE~8VT-WK;SKruw+~cmj_L?iMJi77drkifQ`D&1Z4u{CCH{aME zTW|T(?|fBz1YP{8i=R7p)%ia>x=`KmlJbAzr3-hj{?8vge)S*pzWQs&kNE26k3X|d zkCVg6TY2KrpPv8dgC2=SAXHhf8ukmxblDK z;vXJe#nz%+-oE*+H@yD+&%5j5m!BBD`=yV01g<~*=_Yn0nAct3{m9)%FZtDF@}BSc z#z&6yr#)Rkj%e$N-+X=g=IZFK4;Lp|qL)5>{``5i16|hgR443PuDx(sms54G1{S#K ziYu?Y5qsA0iMrQbedF-vM;{;kX!cT;=T3j=rAKeMc&Ft}BqF|j;utS{#PP+?A6->{ z^i_9#q`LU~S6u&s_GOV9ho=RCLnS^3q$QSd5Rde!tOc(s#wS|ERK z{fj&9_|rGN>5sqrE3Z2K#9g<=G`+a}_LcNZ4}bXa(Id}2l5O7cxR-zF9Y^o@^7p^= zvu~OFo1ZS9f5&skJHDgxzlXZ@w(GBW#O-bP%nm?*r{iC^c*U)!$n?r{cOH``gz1DY z9>4j*zwJEXWR>1L9GvO(_-juUy7qtC!L>JE{WGt54fikZc&hQlZ+Pl8JpEh0e$M)R zXYmU1$_wv1cl^xT#NYqQPoG-%;w#U;0L<_yol&PloUO{!*$ht%d-K=ZdwAp3*IaSM zxd&ML*m~`M{@zC)9bI?svFqnnJ7DYYRbKXiMRw0Cr0;pbiT&^R^SATq?YDnt9G~BI zTYmAC`kl_hu6)Wf^T}IrORs$4(F^Yq#XEze z7rs(D(G#%Lqt{;eBtXjFaJncW!>b^99p<$^)k<-uf6slCoAsMQoxcYhrzRshxhKmqmS&~<{sTL zo5Cu7{pB6^+&dl@yz76vkKgsx?_X?gdbW!kCtv=JpZoR+)H%BJedmAj=$RKTo;(%v z=5M@_yXRjYoda3U8G=2&?S$!_e;AORQ%-jx9|6|qoXN+XM|Y-Y^104!o$^dRf1f%R zIyZHG>P)_(^Q6v4F3U$n=i!|{Ig?8;qtBelRp*gMSDndgAYWl~CfA*BJG$Xa-gK@% z8lTDA&J9P&nY`=Va`cKbx#`?=^wVc@+qw1V*U#iVX!}=Z@}YCX@ng^A?*wxHO#ZIU zQ;&@^`MW#U9Uso*@9A8B{KIGR9i5ww-*qOx2((5JP@@qRcolno?AL=~m{43Ao*MYWgKa+nL$nWp`OTd=T^GcAf9E8Ccv5;&ivqnZL7U5StWW26 zL&pZC8<2Oo*5y_YUef|)3!v|VmrDPG)?Yu12d^WarVCJO`FGSXLAnGrrl2$jIS*co z{Ci7zkOtuS?*Go#CpykL*=hL-#Xmdw&d`JZDWUUJQ0w8H z#{jQ(L+9wihk(xn0dLOI!^!7O9e{W`fBT)Ef2W?bn=bP3vV7bL$}$HjkbBpZ%%}e3 zhkoG={rBB=`$zA*=hAn)`Z3uD{u6WC!(RNc-|Fu=?|;$Le&pfe^Y^S~Gs5rm`JYa| z^NOFkGkwe>{uq7Hzbx-wcHVdE8$NNv760mukNWrLUiFO^Nxu5xv!4OiljB=|>&0LF zfA|}}+4#K?^Moh9D*lOY{lxCS5vw=e?tT3EZ}{S`MZ(JX`9D>!d&LX>1PU-ixpU-g71OP_Y% z_F3s1{n(#>@#7zLQ~vL+zUM#w=D+*(f1kYO1FzqFarX01{Ow)juD z^5fsHUj4?e{Ptac@C4!Q-+K4U-f{O$^=HpbKmP2Gwg30`J?o_(xWnXLt6lfxe_y>7 z{exeA!(aT~&wuQ1E`H?wfBo9uzViS0)9;oZ_l5uG=cM=k@cP5=ed6k8ZvR5}e;I#M zee|XuX`#peGM}OwcKlr(q&!*(V|Lc2x;+GyD{OH@>|5G3O zz2eUQ_WJc}ZuzSp_?2(7f9V%~=H@TB&%5jSpS$?#-+2kvtj@pn!^9W9^S$+VeC)sc z)I0y;)8G2O{a?>FpCNzjLtlB)f6x8w!#@728|>9@lYZ`puYAn1i95?)|jt{T}H&> zLez9=MOm};fR5eqw#Y;?@0rs?GIkJ;^b%#HW(B{6(NM_YfN9p6e>I3;vgjj3gOkzV zgag}xSI-!l$O%etRU_Mr=2%?Yq*E-De8-IpJ5ZN;Tp-$LXX6?~Ys9V^hE^b}F+(4O zA+P(=u$e7o6OkoK#;C62xVAFaIAd()hB|?Uu1VQwyRjqLj0Nya5Yp6HKE`LtUaGO) zZpqVpm+$U23=L^Rf7&-eJxR^BORH~I5*5l$pRA*$T{3M#LXFQei+YCW4I-rtheTK? z5l}0}y-JFh2}wbuY$j-sg^arpq=8%3Ui^M zGM|sf`^;5!3>kJ;OLx%itt)1!;j>b3hs!jW_?GM=ZPLtGe-f!Nx^WpA_hwP^KccFMHz zoJ#PVTFlHw?;*p8(U}Gb+Nf#Cfiu|J<%H|{gh`P#5!VyC6*v+a6}poIYuZ-%usF!Q z4Ci$s!^n6{e;s6tG~^!DG78!Fg0N2)Oe#!-$SypmU6oF(s|ll15ve+Eh?#UlNc)T) z5X_j=@&3?^!Bd%UsY9_82qKlDrX*=T8y@VPw6MD_yXjW?(5<+V370cfG-oZz8BXZc zjAOH2Q4t$?QDmmdI8?Lh51TX<7Bh%5>_Vi{6%~lve;HS7ouHkXmAa(my3yJw6JkN* zXjvAwkg@L;2%E6^dcCPhPE03GcNGrYk|o%HN}1*OK!hqiO_XH4B@;Y>H#kK%t9aN9 zc3N9INYjL*F`5*Eq2SF{YmRIrA+{xIITAzH!GeHQb%s%)HgyK1AfkNi@wz?X4I<^E zv_Ib0e=6M)B8kfsY1tyPD*%mGkU297&9sK(RM>kfXE|{V(isdxJ@FO#0FA~w=sb2pgoxhGoPhUA2)5 zF>Yp(PEb6BZN@awWsG>!OZX@rR#3xsE#-$duCD5UB0L127H#lbY}cE?Nn4L}+aS9u4;*VP4Wr8$G{!d=%mhNU4)}6i^~*^!l4Ye8QZbQt zd|U5Tni*0Cv!*r$MeKB*UBooj`X)>0rL@XtK8+UB6+HJHXEw?4JapQA&^HsasS$7l z6?SU(Me2}HaYOMq6jH3;!(ekee}m_JE67JiP|kuu9Y_b9BNmN?wz!7GF>YG+itQpC z?f5XRH~N8)T9tv^u{ERkY=q78O~r2QjcOnoO%}tT&nhOWCZw0{^Vh1`N5bQJPZ|-N2izwlwP@Itc|}lw}_rLSViDK2LDka=uD5imP2bJiZN2PL*+ffY49nrd3P@yb=dOv)OxS>Y zaE$QeA&$hYH=z?@kEOGTupcbcvIzacb_TBDf8+8hRA-Puxc%0f zLyZa5P%e|TDxnhgfiO++3fRHOKn)-dx?94B&OYxu&Dw0wkE?060K{Ca|xvkG!1 zYnx_ZU2vow;SqaeL+di8ZgEkgks*{oEO*d-E%6aVkq4?NRW9R@^UTnEzMmw^(ANVp zb=^b>A(C=aM1|*cf1=L_v#0L1TDQgzO|hlYQMcqr;JL!cq~G$Tv)IixGD$Shj8O?6 z>DJ&Bl3V@|J5-3IG&v)vyg<9ndLZwy0lLV?rnB)YihxE<1CbUqoxn~QRILhR4 zNm%+$>a8;}j!E9q2TT{MWRj`Wt+nsP6RTY`6Us!q=|Wy9e?d2|Ge>0`93zdPH*s?% za-#xZM@Jd;WUg63y{OhHUCQ8%uVZPv5Ej`%ocrV;VMgrXutDQGEm1PA7bF9*?* zrM%UISM04kf9LabZ8b6zHXfEsy3^u?Bko7@`OuBnauV9`z#~C5T`;?ZuXAaQ2v)II zTc$^+lG7)=?#QT1-s~Y784FY@r1&Zq^>#D~;@w6G#w*7rR|YC>OB;u%8uFzSAc*dI zEfV?|qUjR&`M$b|XT1evb6b8XMH$VjQL4NimZ!V{M_J20NLT@uGFJ?sDw~Ro5$FGk_x=t+%{I z6et^SC|yU{L2dTB897euG7WGvXC}RH70LyUNV9`pW3i4&X(@ybna<%M?4b@v0mnLs8I9cb z7DQC^ggsMYTPEo#0ODyHMy3QfXY5_KB{)V!+BIYJOa8DUDPqm{>%CJ=Mmz+w^MUQl z1|$xe!=8(fN+o&$!0x7W&|qa0Zy1YEyJi#gf4dFdOQQhaICNUXWu2mva+t zP0&W1_1zhdrRjp8WlL(ZEw3_TRkmAdAy23|I9Fr7L{gk~+@vkxA>b}h=%D$=FmTQk zl5v#x3;lqsCGt=hwJZoN(q(q`AzH+a3QSEHh{O<^U4f~kA&fCEn5>JupOTv%%QW(Y ze@hQw@(u9YjLP(UXF%63Z6YHw9su;Gds0tplw`4*x<+lxoK{JN4c3cgew8Z=$O&Br zVDJ@E5AbQIn$tZIH$2+S2qles0)@}D5coACLr@CgS+HK^)~1F%b_A$VWz4}DZ^Q&c z@7I3bUsiBl6{sLUGu_lo#1{+*r;?Z#f8ljbHW1)-IM%gdfVr}aitN3VaB<`)mAlLV zPBE+~8IgfA1XQNbTGH-Mdb2UpA_3r+lC&34Y_6N(-mZsj?6XdhutXNq?Re?-qg4o# zRp^Y^FwbEgig+JQf`D5Y)V`L)fjw3L<~R9-*EQL$mLb3}qrQ2V`b6S)70RBIe@!fE zNjx2H@l2v5ON(}UCc&z`I)^mUp0h;3jNOSe%Qh63>MZ_<1>48FlGgUWcM&r!Q!H}cf99uXezCcUQfMjbB6PRi; zB57o(meiiw;zp!1%J_f`M8ZM_e>i*&K|r`I;QtB8e0%B&}gqtVC)v zS;V@g7d#Ws*JA9icrzUh**ZYXbgNoEDKC-kgh$kAfUfkx#5cKABTR$>kkceAt@H?} zl)Hq6H|seU+oE*X#bg(mvo=JqCN${g{nFyXkf3%6*e5e;;cd~?qOuNXf8{NWo;QFJ znnp-Dk!!Ar`>1MJg6XSVx3Q>=K=;geGqj3eq}Ir=hxL_RIG^OpmA7L;Duz#>vl0$A znX#PVG-;-dhs*2l=2(WtCJ4zV^rl$0?D*GxW|7^_m!t5%j4#gZk~ zBTo1{rS#pJiiM%L&ooJc8ZmXW5;Lp7IJ8|7e|JS)kG+9yM{opq zK(sAzXaxMVA``nU6=!42(j!8}7xDt3gb13@a~%dgO@UOqOLP@9l5!Zp&d7zgn?Ey)mj4FV$Zp=gGLECy+wpJ&!9!4jg`VR2M_z3LAL=v!Dxc zy9wv5HgzXlXy?;`e^uwo-jKCa*zsH0;sN=drTUD44a$KK#b*-0kjg6Hipj6w)2 zKFR!Xs?DH?UMbDW64YLg-P^myg1GUaW~FvelKr5V^>bNE1YF%`gpkH~HE=wq4~IpT zvohIW(543-Qypo|Amv6jLeZdJlBq(27@Quf$iXYc+}FSve~d&GbqKRG9uv)&fy|}t zCb+p=Y}aYC7G-+M)5w@31{D_VJSkn*XjI!m2+i3vp5R^CQ6oVZEjE?q7-hvJfNGBW zepVHMH_T1j<9MC-A)^@3mR7S{Xkr?%0(gT;0;A(P;*KdfkoQO`=veNtL)q-RBcGkv zso3&Uu9-S3e=;@uhPO@!GT7gevzN``4%(8yc@AS_JJ#eGrI!PefK-EF=O#H(12_rR zd4fiGe4sbJLL|%r+xsJMh5>*bhg1q}={6gV4|A3@V{zP-E2@=uC0u5q&2#}5pHWR* zaD%#ZZPu;WWTG?qpd<)E-b`n_VOwHMK+>j>Y4Wf{fA%rQTL?tAMRBl*9SZpAIAt`2 z+eBbJj0Aet@CzBNkzr+I!>Lx0yiR%UK20Zp5AiXow~vY1)?0vXf$90Si| zJf9&$x~prdAu9;%B&@h7Ja0r*T%kjB?ez(Kf9-DLnPRSdLTAL`9@kZwSd-SgQCfRX z)3w5zP|sY#121w-);KFucSPFw&jdYvfwOUyxg){8UDr6p`*sADb1k|b# ze*+wy+lCgIc*)3{1QWH|HzsG7 z#fXqz5gbb7+Ej&L8gR;KK5438u?bf}J#Fj$SXsG3+VBEhubBg6%fxI;YeFfjNQJg~ zAW={&ScpJaBtLgXj5pYiOu(^b`6yp!e{whU8VNeo7}K*0tgS=fz6{Mk4#% zXPh|dW`<-CnAtdt1>7@uxZRpxC>EovoP&WSRiaLyQj>A!FxEFydc{bjj%B^>bf+W& zixcd6?S{NC7>%k7;3uz&59xr=_V^CWi68DKfjVj;f~fOBDky3)ElHfg`E3R`e<$FD z^U-Y0u{qej2(u>xYB3C`RkvI)U_rR>Ea0*6K$cr|S6i3~Y}h^6N?YT=Uzh!nJ?m;R z@W~C!#Ck^4zGjp85}dpeSw9XrtC3 zwdEw`gmxIUqh-m!QEO=&$<^H0^d(wHy4=3mXezW8O?|+|O(9YYP45Vmf7KBmobhmx zjQEJD*J|u<6x%RDZo|&|P1g-e;Gj`lm%7m!G7a50~T&-de#a6OF;{FFg%z&bX>AIbNY@$ zwilr931QX&dB~=c;rDpU@1h!E_i3VJs79qDX3Hgl&RT;VZ71?vR2-W18`>C73x5pu zP&qY|(VC&>@;Di;n0Bxe(p?Jc4JtY5x~nif)UvySlwY8Vyuc{jf1dU?S(U?ZC{56r ztGFiW^a?M}Nekcrz2MZyi&awZ!f`CH#v#>gc7V(am>Drc#E3UC&8VmY4|HdPP5PnX z_J^nMID~BMlvN%W48W};VmEg6q`S{tI>pxHUfQbqYy)`Qn%0wXxtfe8?g+6m5_2Ik z7Ze16X@=>f7>`jR3dFM*&-Bvhf_)`6us2<2?}zFgzT-S!!CdyD1ax98p}bn zG{IpBT5fHp{1+fZRKLL+S@_W&i;0bSh}O+yiLZg02BAr?k(wIPFW zC0e#jb|JA4jkW6<2$)kC%66n4AeiqXC>Eznt>JBi7G%P(e^=;8-tOVV~Bkx(jB zLuoo_$NF+O2wZj=R#gK0D4|$*CWaa$5`;xZSOyNk0Nn$89n1ZhX(w8UwU{1b4A_sP zoj5Z{(WV|+`Cjh1)ea8WXtNH6u9-@Fe=Y}A(&TF6d*XZs&Q(U|oArJK!|NSNBypzr zULbcJz~Ll0e=GW=zzJ+tBYVakY=w}eF^f*)Ps0p%H)Z96!?S1#a4 z4cn{|jmg!JpYQ<_E$4i#_ML(tdbTqpSGh;Z6Cqk{)h$$z`$iupai2+wt(YPZO86wR zPlgkA#Lh`#L>}nFnxXiDE%V5&)^l?PYXJLo&06DOf5eXt2TR*#wbJUo9L;guLKL;D z>&zbbfeNi=HVbVyb1?Tr!3c(vHJ`66c{SHI_<@-hDHi*%WE2gxFGRt_odXpQ0U%dK zdgjC1*`7EACx2^%bvNqT+=B4n30Z2JW`crq%1Ja%hXgiO%*LJ{ICHl^X(_^J+%Qp? z;d|pje*}?e2|KDm>5*VF@Mzu;fX|?)QG`w`wY*Un!+qu;aZw>Al52Z!ByO9j&bLfy zHa!)&R&cD# ze=SZ-tMTP`95x<{)Y{j2nJ1DB%6H|lY3QL!5{%j+bJ{?XwtGN5t=Q9ZA;Z~jG7GjT zeTY>$J=8t0*5=D{O{qMX-32^R%=V0md2w97Q*>z^BAQ*|MA7-WQsr$fIB;R$6n8M~-8?hrR(w@}G&HUj%E8a4W2 z*po7C5icmx?l}v(kzfPXSKGR7Hb|LuSJ5C>#6DrqS3}1@5B6C1MY2CPe*n$|XL6$w zd<4$jSeaJ2R6=4rWdOHHFpKR8fWKw}39#v)UB`@xOFSv%-9_!QhP3TjD@fw7E@Mqb zUf+?UIK!w$>Do(UP@!DyEEQG`iImz9Rxgb!l!Su5g71diRV9VRT4?!$)bjy9lNEq( z*wEW_jip_Oe4bA2%}`&(f3}f@gUBKlM2gfL-I`ij2z=saA~oqN1~QgXxhFJnNy1r6 zrz}A;#>nO!F=(73>W7K%vWZ5I*K-f<&Y_vg5cW#u3zr3`1T`~5UI;PT7K9oxL~V4KPBTi2c)-(Eb4J%wbU_ScJ&uPavx*Ki&6+yKe_MrQ@TH+w$c82f zPD<&47LCbS-a2c0nTLS_xOk3@&Gms@$f#;&KDQ|ni2_S@#LtAq8b=KQ7fE47AIPoL zrl^%gP!R~ykj_Q{9FZ22h!wLb4ZJq^*d8;Qpb}f0MHPL3Z0!->!+Cn^gMAN~G-jO9XjBk$NzZ{lu9_YfY!0QOub4=qF9QAw_eq|Z@}FAlp1C0W^&$y?0L z>w4ylCKE46%W9{xd(RSfJ)GPNi(v{?%$^X$hClf`5~hJYf1x#aPql1C*(dGDfdGC$ zfxkV=h39R{cs%7#QMDVJp5f0kbU6{nJ&7o4$`BGYi78H>?fM44lbzV35_u-i0S#=X zoCMYf757jH_)(KvKniP1m zpg=P3XZoB zJSTI@jCp%B@YCVO1!rr;7LYbbO zTc)UX=jg}?nScE{fMC+&{dwpE%#12MkM_yIPEPH`083KD?FtGELW5P$^v4$eF`Y z?Of;BVW8u(ijL3#CB+aTg%Y*_jX8Lt>6@5|;KR1?`mMZoRewww>&2KPnh_<8WtE8m z9xDuXGtl9oWeql%zl1k#u-&YAeF`OrI7kST*9i}xj-jmQ1F%2#gGN}XB;QwKh(bf5 zMo2xW`hWd>RZX18Yh_ zA4ge$N5YcV=anuFwGz_jT9qt4%PuI&-s0e}mVfE_P9!pzjC#3zh(`=9V?-nG7`;YG zKz1n29^gz{`pcwCq&UkB%CQ4EjOX?X7qVT6u7iG3Ze==N4aovy)U3q}TNuamnj`Qr zZnoxNtEZA_UC8`4oI)Q2blYllSPNyJafcY-SU)$?rXF)9c+=1>&n`Jk{hbGTQI=38q|(< zmE!HyjG%M~tPo*u^vjlqHkrvT%2J+sEq^r;yOd7=l#$YDY!Zo=2!>C>stp`3zoKaz zLFw4+?c^1=G*F)fG=bFnBms9VzD>Q#sjOfk1AcITO&q6n8yg?u32Co(@*Z;deNhPw zR8tG#Fiy0BHXAp}@{tD{)y(6TChzbrO8OQ#Dh_)|WEUEwbQ_FRvk6N8c9k@(5PuhI zM6dbo0r8>(V^dpUBe(E!m%-5%4xq?#=Ao-7jLjMVCl+B4>)gJ!7*_CQ3tE!VOd$3) zKW>7&Ae>O>E9o2xu_-f|%PpP|WU`_n0qBhc>Or5WO%p5DIs??-Me%7&nHDUQI*rW7 z0-zI1qs`{>VIHG;Jkghv+H%j{aevV9P&(KLoWM$wY(f%Zc636Fnbyt(qF8HN2XMn# z1Mn%t%(0EKbX)@(k{G>S0}>!k(bB1^s@4OHkc{;VYKWP7h(!+cA*FRptAjy*kCRiH zV7ps@AHf+!(@LnjV?S7xy2ZorqB7R&RgM}izT;;EB^lY6pn3^U08SSH4u1sCQgtD? zy)H8#O(Y`wF~Gg^7;KA7hbt^v?z5QR^d@AlTL{Jp_pjFNl!WJgRvKV^n?-{qMa-%; ztPu5t?6RZ6RaSC8_w?0p9t2dzQt}**YnvvqjmU!s6yh*F_w)WdGA z&@rA zC*v*AG9t5W7--%wEP45R9HE#r9zW)%x6vX)4z#4trn_yc6RDOj^wukMlzP1y$S zK&2-(z<(_El>sZBTYqhf3E$r}O0fsb2kAz-HB6fwWirG#lEbc5sC>I>270|kmDvFU zHuO+Aa{!(<*SS-0tUEDAn}RdSR>4OaU;rX{ShMjkpf)%|vGIll`7EVx7|X9nx~Q2H zN@#YG`56G`u44qt{_^B|95_98LbPQIXW&Jq4{-s{$lDsx41ZmeiHzY6@QH+kA`c`sd&f|1fB8w3t1n=gf;}{Cbs}OM|BA7VvL&E zh|w`wH)2pdC}?b z8J+ysA%CcIbaUr7J6C{=lmB9TIEarpYxO7)AAR<#HIM0B{%?$HPJapJ@)zx|JNqS@ zTR`lC_#6J%TYW{ne#UUiz<~{zoqTr#wr42DG}a^CY18qdQlg{TIlpLw1nP zQ$hY?I#+<+|LW48UHVk#eCMVP4#tB!-`2Sql%0gme+RRjdEAqs6BCmlh&X>RK0XR_ zbaG{3Z3=kW?Y#-O>sECrEc@Ic2?^we3^b&W#=k~C!ukP<>^(n1SODU>o(`hW-IF}2V_{|AqjN6Vu;XvDXy2TlH8$2jyI=nc@R^dCMQIsPAi9}o9_cnybN@PD_a!#;mBJ|zLC(y4SRol5@? zzQFH8&M7YZ6#4s6=*g$J@NbujUFg?-T4NubL%07}|77RK*Zo*o`PRQ*Svg#K@OpOE z|ME5dw9<|U;ishiR63PTrBmrt`l;E$HFVRSt-b)d@h95zKZTxt_yy1nhqIsD_CIUd z8AG1|(D_#z?=OF$yZ^)Zo*#tXdg{cSN~hAl&vY8Sr^~lbwhjR}7uwlAZ7OKcncLdJ zH3!Xp2HHMV+J_wgkJ*PKw}SGq03HXdLLZb**ax8PA?V6|IQ*NSg!kd_1)xOs;qZ1$ z3_t_mmx7WyfbBKr0C)h(0lX7{b^w11z&L=f0x%EYUI2gYJ`_bz`ukAa>dVnS>}=^D z@59c8pq%W(&LyBs_F-pB`*a_6Y*5bjVW$hq#Xjsj1F+-leb}z|;$!;&@I!mFUbcM> z2lB;$Q;!3jK)^~Vuqp+tzyuWfVDuTZxcJz~lY5+f4B+Gw0GF_TYGv%T8tt_@`{c=! zpFiRszIuPps{ZZCZ-IRnZR7gFmy6ee6@GE&bm#|93Lmw%Q}?Au?0ufU_j%!#!o$CL z_yWNHuR{0k?Ce~)bIHz?J2tqQ{Tm42bw4pX|3ApHpL%}zLH@{tbK%ja@~QmqJO}^5 z@@xKs=ePZf^0)7wi;wuRS^HPbxBXLoR6dpeC3)vzARm8FuJ8QX&bR+9 z^P!6lQU6z2|Ec8QRQ^wuKMW$P$;rPs{G7udg029e>7|zyYc=$o%c_+_=U;H%C0ATo zJbvksBj=rW?)m3eEA={tU2^oukwZJ@er)%@zv@+m^2c6RIQw@Vy8Gvahdt%iR{E-L z_f>zh)~(&Mi-pSzXaDx@Hy-o$g7xL%mkZ|GpYxSF&pcvmn9XN@t@x{-+gvx7Pe1cl z{^}RN>~8>3Uv&6x=phg^KX%D^mmI(wcHVVjRve!AmEvuO@4k2Ux4yLdl6&`CA6|mi zXKhT;;o;7PrSeQ zuoGV|eq|jOhc|2^-to!5IP@K`FZgy}F2DSWD=xXII*_Mn$#kag}_x95Zh2wvPBl0blzG3Fix%0Chz3n@%c+Jg(Jedd{{@`OT3 z#R_cu!iygry<%GUrH{=4mCnhp9x5I3ws%3cRPND)J?6Z_`?Tzldkk>k(j$LIk6waZ zTilX+-myz+#~)fOyk~g#Q~LKjukfq8FMirno-WbRwLjlg`^O5q-zYrf`j6fE;*Z3; zpFQWIr(S2)7=+o?N_f(9D8w9xMIt- zC!hS%p&6j3v`5dLH1F}~yz_s+W*-HdyZk{C{m`A_^3`9zlgiJQOvWSzI^I4*~_cv z9XSI{dr#a_u)TM2&*86c?5WFKa!7vtQv;;?q$fVP z3Xb53vx={!I*+eC^_mk;DZc$`^YM89x)b64{D*D;^PhMB`S<7g!Bm&OV)gd-?tZ!# zQf}>#{JY)olOH^R7oUH%%%397F6C!`{$}NQ9~#FW zdcO1v?nUQ(M@g=^W-80+6R%Bo?>PL<-@V#;!t-|DRDAR9bIYx3PJF&7t1tG7gWDD5 zcE9MqSl#E?jsWI<`29I{!Fl)Jnn(Up{HVtHmypNJHF-#WUAKSq=bHNqsvSFC+v=?9dB>0Koeu20BS(te554KNuPt2h`Oj0$iym{{BjrOc zcx93Qbm8dky`MhuJ&`UJKXv%%mJ>GtjqqKd5e_*216{qx`9nW~^X~>cy%osqTi>!} z^6tsE*!gwW<+hVucU|_FcNDBI6~9z4-|>#!*8^ntb?<-p>J4AKyLk5(ufKk;*waEc z0uEdZbQ~bSJ$C%?u>#PN-#E7W^1`z4ghS8%hr-!~9iR&f(9?lz4fos43pH@o&MSPZ z7@oM|(CH^$b?7&beeIjy)4++i;pArzpMCiKfc_f9?XBTJW7O`a&h~WZc?U}D!HatE zUKju14ZDBec}eTe-c2um?$=)a@~=Jj*Kh3I*?P(DKfYewF!V;#HVnH_nds_kh71#3 zb4_${e9tqAPrK89_>o8d?y{J^(f8k&7MH*K=pzsJ?|fSE8TZ7WZumrz@UOaRuV@rs zR(bN(#j88jY6lcgu59^o^3%YgdU~$9luXk z7GHhi|GfLjx9@)Y9WVIH7oT4&Tyf|a@zkrrXVZrZPhhhqpL6s|6f^Fc;}`Z{(tp7x zvKImg=)QgTi}w`2zWbWD`)^K9KmGB{<KONt_;|5^K^>@Fgpcfvq;XZz1_wS$moZYYPew^Qq*4e!S80Y=bF1faNP7N)B z)n9V{Ip+XY6bpmhZ{jZZ*vE1%UO3DD#V3C~=@)nJ;6J`wIQE=p7tT5Hac;Bw7rSqK z&%1ZuxcjN?Xm=OhzjICTkG5J9obh9K7w;;(e|rM9b#FcSh2l8{a_b{(&k(w&w$43L z=t=#)r1W|};|XHFFA5%X7@U#6J^I1JZwF`O(R)%x0qQP&fN*Vf)Sg|wbZ=jPfvkV- z{G>LY7~W-?cMYSv4CAhdc*u{aDZa4(`!^JBd|R*gwi^pK{C@ux zH!lm>jW=e6<;~y!AHaLy`@jE;!ZWtjpx9Qg3acA$1Rpo=-#soDui8GbIJCX@?d(09 z*y07~Oz>?VFG3H6dI$IpbQLr`zz=`jugziTQs}h@_z~zr=p*}hA%V_-{^kImLXUvH zc7UhQnT691@EO3*J;3MC&lN5{z!%V?3e5w230+(W5AYRqS>d?{cm`csc-;Y>Lzfr+ zs@Y|t_4?X?>e=&dbs6)~Leg|~vq38gA33TD17aZWf4Ep}|0sc~ezYqEy z=whe>d@%$_{uB1F3WS1d1dxv@G=hA93(y4WLs#xy9f5o?G=qjv0EN&3n(uw{LFt2X z1wK8{(u7!WT?1DV$N<*@XbJkc;QRe+u0ELiN&p_900u3Qf4aJ*WB-3C&=bH_9LVT) zhB=ry0rdQ+p4+kaM}EQsW^I999-uaaRIsWA_|^y4w<|FLz5#7p0Pb6p0AO3YZAF36 z#(U4Fwria4t?y#U2DJ-tZNJriuOHpg0(C<`?~ksPenRgbUd4}YBkz?%&}#f+TA0xG z{g@$;$^?w${g_tdKU;sxgVF{2yZ*7gw>0*lc&~l}uKD2eC-Lin?e5R52i8gdY|jUC z>VYjD$fpO^|0pg!unqao)cr7r9^CUj{`@Fj+_&x@tnvQTK9I8esQAH*KNy{XaUAGCcJ__q?iaW3 zzW(T+#d3McUtIV24?fcSUthlZ?|y&zZ$66u=^Ov}v^V_mX^;3> z>8q_*eM8!z&w1-D7o2tJ=)WENz{fuE-~Qw^=f3|}7Wekw`ZIs_U(ydh=NF##lC{=J-Ru_R8D8`J8@_Jma(PdG$LlaDV+(?|bcs|2(<% zfB(wt#g~2SMeq7K`<-ul{qgU#p8EW!eRKD=PdyL@=Tz}8}DWCdZuYJQ; zzWTWLuK!`M_!{{eAO8M@Z+_$HpZnkfyX{rdn_qhLth;N!@yhQ$W>R_g-`(TM-G_Yp z<==*$1by-x#Qwzh55M8EKYsEf>o*raaMh=lXKWbqdyDJaPrCA^#h)er<5@5I#yh3P zQ=WhPiVu9)D2m^H@?C#_Z@Kr_KYH(9fAjIf%4eE4y?p!}dT~fRi~ZN+@lSgQewD8M2bUZGNsZ)M`JoOCD1ob5;f#% zU)Csm0xqw#wH*%H-l|odcQH$r)Rv(}qwaq=>1QduNGxX4UJ-c$GeLrJk-+gA7^VG5 zO%4XJM%Xc`!-7cQ^~ShCH@T2v&0ua;M;l`@ZAy(G)u^PWZdOCpw>iSVb2zHvO}``3 zo0_YT|U3t+<9^yXsgE5>#ufY+QqBjaa2M&vIoo0MVOJ-oa=Wit@Ko}i?uvwVQ}m9;d-%BwL? z^CiBtS}-)M)##21+DU4>99tDLl_*bkD&*WB+fybFNjU59%y8aE^$eAwj6;3QlL$B$ zgK{eQOqZl!QZ~c78+%M^C`jwDt@)vXw8weEdX_?27^V_|%<1hFN!T?$noWPO7F<&X zgJyFbw^SWNYo*D!RV|fgDKpma{#0ny#*y3YSaJu=!>rGe=p3W77DMB0+Q8}p4Of&Q zhSKXz872B{!sM5HA591OluH@I_1FDqv(cwcdw~o_qlBWcreG!-x0Vthi&mv?M@$|J zs1P4f!@im6WwhoqI+LMp?q`2FS#_#Qd)nnn9m1r@IT6gebS`it+(>jMbZ4}!@?Nr$ z%Q4RDM2wL^liJ7@X~<47`DE$@x*9S%<&&z@@-UOm2x%SD zRf1`fI$o)n0oawnlG-F=fgmEu&!!~J$F+^Ul7@Dv#V$&zUTdY?l<|MYeN{C3ImsE0 z*Pb(u&9;-2SjfX9HdV%(>KaS0piQi8G}JDSZFbCMIIu2Y(L)z*|HSeJ^JadSg>D%}f}aJD2vJVX{aMQ4+s zmQ`0;K6lV8^GKu7O{#x2q1~U%I5Lxjz?P_SL-bk>=DMt^GmHx7ky9lFvCao=Ubnlv zK}5VCRhsL$O6P<~;xa{Aw#clKE=elrfN6MUG>7F#Shpw6xZ5&Fr&{y$u%pl$xY1m} z8?wYShsj0ZX#()Mcsy4mg>(%y_#Wi>c_0rX(^7DwQNn z4VEL&5~nU_YkxH_M?g2NqeR;TEF0;BS0CB_8j*YAh)Sv>Hqa>EiC$fU) zO3s%xLvOHfMm2xcB*jQ!BxUkQRugR?A{EEh8=|jEBr#VxBdI0eoLXWNb5lc1`UxpU zRhKIZ0jfKFztK0ikm)rEbW{bWUDyl)%90JDY|X??peTF@lx#CpG9e*Li0udqG>L0d zp9@QBCMRN$^(CF4cnVuIX`;j!!J-u9f=p#=gqV}!VxE6vL2S3GE^LlQ(|I-arX6qM zxAIz2&wXVL_d0Yu;6qfZN7156REMOl1D)O(pyhA? zW?o&_O}~ExXRJjAa%9NdW;4wL3nL=jQK@KFN*&b^n`GHcQo6*K^-*)svulm1s5ohV zUKcHJcF6vQSob@vNVjN%Ut+6r9|`k$L$?jGG-(61meWXm+=rX^0z(*ANM|lTou!p& zH*3hUk_(X-$}2vfuT`332u? z$aC_FTQNg3o1;JlC3a+2L~0XKK}PX7>``o|j3MT-j|?i7J8Bs2wC`5uuC&29VwhR= z9M{kwz)j1ZuqBkEoeqNQnZ6;UTxH-^)9O=v+`tB-ManMig=(N0O(r$B!YXE6Q4H7< zT(f^{TeaL!U>r%ID3P6W(a({ZP4R#7r1rc^bN31p$_HrqAW=E`*g z#B-Zbucb6}e9$7uU`UcESEsF*_TrpSffavTVV3A?WrnhJJkLmApEcS*;8x3+nmx0= zKo(1FY*c0|$L)`mMT=i}a)>7Cu*<3&0>-t@639TA&daufLCvfZUaVU0!ouCT5S)$zhd=UI(gGG$D+Rb}XP z65FY^j1DeOJhcxSM5~gw2XJP>b9f|^^A4wWaM8>#gwA|&Bh@vEpJ*8~Xaqqhhqi_f z4M`g{P>XHOz?q+Q>(hP;JKdR0Gl+jKIMRw}6Kixq>oTS;aZ#hu8XUqbx6wOV*g;W6 zuBxV#wit&T#D>=4D`7bHI=V|ntyZXbFiEu{R7D1KsP_r8tgePX!D9csH{zf} zRzs%2ZZ?a0Fps8nGDsP=X-a<#-WqkumWZ@x%)+L)d9#`m>ynQS2&+9M*I2>_)3)IC zr*sU@Ik0vyLs^!BLg*yE}{W~uh1%PaO$9`K`RW@R$tWo>LE=}wL(j<{|N z2DO&YPP?9sRNEwIrVD0?=;&NDM+GZct2tAqBgv@{?NY;-PkFP9YGi*PP>~SflaZ+B zjjkK47K+=PI5s&k>f&;0<1jUcJ5mHZh|+8(5_%J+=_#=D6?GBx%R|`ami$=qW13f+ zampeUchVeKTw~(47wMGqW`m6<=9V0mG<3sQPxWn2>2| zL#1x8-N7^%=B>Cip0$77wA7v=ri=J|eZJ%^BB`^%g3|RmTb-NbQcO0ZPN_z-36HEt zbljNCCQ~ATyYgC(DJG0yY1z?;4c@Cn@lq>CDeMKX7)28*RT%QWz#IWsJK6HiWX zRO)Z^ITq-c6io%sA)^6OL)vwRqkv(p28>27%R|CX%EFqNVoQG}EGxjp(=?2X2%u-| zRVgPpMn&@(V^pU6W<^rOjIYesPTFnoFv1S1c1Jc~v6^kxoR6j|QFejvZb};sQ5wO5 zu?V$fW^SdF;pLEu-5wd~ZF93?l(6lNu!I|NU2aCuMi5t8eIARVAwkQQl*LP4WtysN z=hRT{QUjn@1Ac#sMmX)X!hDLwKlm55xFStgUaT(kj;&w$-#RHocEb!j9KsfDeB@LFZMx=c#6IO#~TVFU5os z1!aN42bu@$nh~RQ3guZKuX1ivwKCfPp;2lKfQ~l;f}z*5&Zsg@kx`n|1p)5sre>lY z!GLip40sWljmQiJaUG78tN{32aZLI4S_-+qca*d>9sxhau>7z=x=sy*GKrRxcBNbH zH<=uDL41EHNo%2w4Rq66+w)o;bXX?|St1VTyg6=F{E3H?q zL9OSKShbr9@cB(XVC)3yQ2Ry80n)nr7{i0fK7Z>u?O_&TFB zH)vHPEVR1nFzh-p1tJq%q#>KtMm(62ON7bHNpXk+Y$K)c7Fi{G)oF-vu(>4K5T&AE!y19T!aGGLP_rG~SpQj^iRU0r{W zPGt`B9*u&)M*&u?f{}AZqv8zR1lnLTrHraKV@8dxF_}twn#?wGqS#DQTl2|1wu_+$C{+UnHV|R6f;xT*yJS=Z;84dw5zu5BR+@&{AGf}4PdVo znOH5UAZ}uo?h`6Ll!quK_;8mV=m>wXX$q{`C8DI%eQAUMx6^MS%f&EO##4LRFw&U> zVv9A`>Tfhk7}0Aqm2v?WhIk(yW;#C1IwdO5X>~SasfOCZ>OqP%+AcGs6LGol2D#R2 zbve%-^{Uov+a!!a2orxkj62Op z>%%@hQL>38sO2)dwpW=2bIr}1mGbJ8thhGtW0JY zyeNZhn)_N-jkt!5QZ#56#;TB^2B!xqx@k|vQAYzh81++X;E1ft^ z+;(kb+HH>4`3`I(Roc?#>=N#pMxcPWK_vmxaUE?nDcP0RXe8*^sLj@7v(jpG*sdLk zIp5>5o--jMvtqPoQB?-#TXNR2SzEzN5*W`~fG(Sw+^6(ul_X%*VAy|wNp@8i3EkN! ztowMdp%)#62$>L5OCMvSI# z3m?csL!kQ^Ka_!t)KY&VuJyE(9KJM}3K1$&e%$02bfzwe zYLnbFD7!%#lP=Md$aad3%I(;h%s|v5M;o3Su1Za?N|o+nz)z|Jd9x&aCX-Ql$#%o4AM&~x&tI5c1EGv8`_B$;Y~Z}z|DV>Ezuz{Ml)=MaKn?roUkZ@BO_AP#hHtF>U z1N+e&^wAn!(lynP6%=toRvaenc7sZ}M2G2lyF%cz)-vcT=A=XDj96Rax+)Vh(i&t+ zZm(&2uJ9&YHphQRwdIcSWvc}9b!KvwO=<(XqpI18q2qt4RDv}=VrE2^B`8Gmk3L`X#DSM-Cmb$}*H*x2^d|qiPla>%=yg<)q%m%h)qQ9gy zVJfR=TF-S?qTpPxP=T;We&95ic6Hq_L5$TOHAb^oE_v-tf;V%FDccE_&plwi49!3{ z=#Z6=#e9DVbez~I#fD@Mn3*|@1#B{+Cy4o|8VQOT_NFAx z;QTTMF(-%%2aW!WV@KflqRg6fsbS5fCZ*|+0Rn%~Li#R`HLJ3mtE;(%nSh6-jjiN! z9N6n=rD69=nhb1m#xj8(({x9($;pk8NSojujy5Ibt%d<1e~pBk$F>_c%s~ zNW;x02vPDd(;B%!YU6Ii33<)W8{;X1__?KVBsb@pW=EoRw8X8mg{HzY(bTJKkR>9; z(DaH>Ssm>F9gieogZG*FObt2<#WoC&Td;qFN>*yQw$6lcAd?BJhUk>iC#LAjKB~_0 zroj)zoQO+Ho7ZxA$XEv3sjQbXqy_@8Q0!Jlgz0#gIqC=68bz!604MYLfN0Mr8kzAt z5o@A3uc|)6lB>>GAa$4=U}<;k$!$9~78PpLNxPikCc-qK=DNFHw6ZFTWOKTo3&4Mu zf`_eYZDW?}%_%!#_U>`W_7IHSCCs@?ZsML~bjrNdDb+Q?uF%Akp)!^BnI#trI%`!| zv>nO=QE_OtlhH=4mvoxo3{87x*qAZ&KyHS$36ob>LbQqyJ*!JjG%G1gxo+8|YQzug ziaf+9-0oEtaXLZ}PwLkDEv04FopOKD9*sx~_yKytseU_9Nxg&wfxsG@NVC~0I!F+v z!PHPASjaS^)*Ym(I}5B^@r+ibws((1h?~wd9k~Vr{MH7sYPR&Sw2oVJgw4pcv{d!} z0>p7MS`VAkNw?W;HBc)iu@+2@1O-JAnjy;iV1Q*6><_d039=0mgvyNZO&(hZU{YuBV;$sNG6eh|BtmnOkd_k;GR9vYUq4 zNXlsdPnvLIBubeTGDl94eUT#Py03tFF3P0Xp4g3*19u(G_mB# zKwID&W{^Z!&_N_4$*6TA3MTGssGtTMa;2fi9c0;G6B~E?tP#;$e#z#BL>uXnQ*DuT z>p)LAp~mU3zy^w$*@F#du7-75@-Z4W%sRsGBq?g5BW>Moh|8>}^EorMGfF6LB2-OKtyM|~T)IfBHQ#XYx)1_u z34G+5ItPv%Lsm&4l<1C623aZ*bC|&y68IHvow6xzFdXZWQf~)Bj4i|2RLB*}rItoD z@2Z3#AVXMVRegViW&LR-n~eAFapYY=9q7{@8543q;DiY`Qm2Ks#p&9Ghf{mv^;~`# znqtN(89`Mng0K5>t!`Ai{1Q(|s)``%c-Zub5Z=JFXq02k46NCvrli$1W>*ca#pIJ# z*)V!8QfhHilIqJGXN?!Rsk6))9yQ1qtV(Ig^~Iu{<3xWiZSLRWu<<~oW*w~@w?#6m z^Ch`y8oH;F1f%BYfHu%DFKy~=Em_k8A;#HK*msu^y$Mu0+RV#9)&}G0!l^gC1V#pJ zvLi@guV0G#grG_jjc%JF-Jj9rCP_y))=(2xi@@%LeVZcjy2RJWxhn>oHJDL$C z*4s#>TLFJj{Jc-lp*=N4l6UX&ERL3y}Ny;)|2daNzCw#Ru>A`l~ZaaJTIP`czuy{7& zX=yD2AFB!cC_0k`J|c$7l3kS79U%*o5fw~EN(8f7)pJ|$NaCm<#LN0vS+}Qjom%vq z(s(9{lL2gFz=Ma04cwD}spB@NrIxgnww}+$P!LNQI;Gj9+@!OLu$mxrPO9x*lklw! zZRUR=Wmf$~>auOUVz?q5)Ky^LIWy4P!(d&d0;;}*2h0W)uuVtThS>n{X|3u>V2!4f z7B3{7>DIlmKb*NuvNb}wl$pisaISHiAQMZ8N_zbUIDdX4(}%UP6l=p^NRf8g8Pb`A z7>GVu&ga7^rS3X4IH z0kKVpS!`JV@oOxQz&EYtvw$&ii6^B|X*ln&hO{hO6IkM~5@U56?TRD&L5xwEQnJTJ zHLY`VXRNTYM?}}rQl#H=G_xOKN z)Uy{geG=G4>{We>7!naW=jhzjqD0`sPApR0iejKmDU!=V7EDPb&gqCHXvS#Ryd%1q zllT=c?6lZWqnooq8z~LozRD2xMCOwg3%ruL85{CY2vqq-IQaN-J5 zjgA{G;*%B=iYc?08u;Ac1G~v+f=VoLwyx+^bZIyEGS1V>4mkI)Nt0HquJ?a|f&xK{ zIE*dZ>Gn22@3f5A;ucOTN=U*8@CK3SwJ1)&+^M#lg%mAstI$SW!wX(HL-sH`K_N+=~+agQ10SZg$&_nk(! z+jgUAx>DJ7+Y(k~oLmdTS_FTm%$g9yjNd*-!ZdIuvIvLSMVAcXgVQC?tj4T4ytR`5UE@xse zNy=8eF;{^uP+RP@W>&h)YUC%OXfUmqAf~8?>l3e=cB@+kXSLR9#dT!fDa&DB@=G0#(5qfWmtrpHEEO{zE0lkPiUVub%wb$D2bL+S zr9r)6c+7g{!U);sI|Hu+eCE1RZqpsIx{@P%Sj7|ro5~wtYiP2rk;K|-JEU)dW7Dck z^ms8%alNcknuAA^l^Dhhww6mo7Hjo>&>hd z;DfrAyBbR`d8+Er%iXKb~Q^W>g%%&}x9TPKAyp|{JN-nQkYNtsVvtg4YvIZqIWt9nl zKb9EmqN*b`%c?H0&KOy=+~s1%>peI`#cD{@d7WqjucLn^>!T_-AM0u+OjMGur~ypX zJzon~;emj>tqB%}e3r}LNJmr@Q-;7tywaxf)0(__rEDnH=7Qst&iB_iR zVv|;!Wol1j&n3A59Ss;mFOx8C3Z=e+(Ws#iXecSkOev!^mPqPCIq8r@U*SVyl~nS+ zB@&&cAG?3JFN}G8km_Pho5K1)OT%&7vJ;B3mpD+?GCf#{M2wJrc_eRw21Cmjk;yAY zpVvtc>`hdyivS-u~o^T~yj^vd&0Hq3Ru&0&Z=MNZJxH z5Xq8WC(|(LwrtWC5r4)nMq1i&MV$;}%Fw9IDn@mytqk>!Mq9n=67{%}tZgVcqsprx z19*R{!FgkqD($rz6O;}E2@%#tWt#KwA~xCKbSn4SIn@##MZLGNox}-f> z$!pl**GVd5@SGY7n`Wpbw3)U1c+_YkM%sUGb7PZt_*R|lSY#vFtR;~hYOqquFj9@X zECHgcFw2D?nW6feFKy7azhP`@DJg$m4;$83c7b=<4I{+-e=%6Nnrb zLyG1BtyZg*HBRo_u!x4JW z8CBM@B@T%mX3f_W8O*e`4ZNr>)v9*e19LuUECZV$`f|ITx83oGNvdGXaNsuAQA;6g za5l0PLCH9}wpA}=c$J6~I$&m^k85?Zua}M97_S&WXN*|ZghLWGgl>IG`_=AZ*6vR< zBW|e1d{I}0vKDEcq!Xs90~LRrW8-op&sg8t2*JDw9D1U~ddU>yfS==WVVVYhy@n<* z!zckx!*tf?EvD9_ViXRm;3VTYkuxH*%ouo(F)X?NI}T3_vo=gx_S$O%@p$AfJ-$&m7`F`6p@ zLJ?hl1DmY~$gEbLmq>=DYy)@TX7f|BZ+2kL zRtiWg=#{jXYF=UjQNr$C!Y4C3e`sC`661#aD)ri4ZaZlwPV4cu6wxq(RGw zgmeTqlM=pUqZ%nJ*>W#zz`!pQM`XYYW;8_m_#ml~?e)@bDOHB1M+7$wBQqqRJ{dI;6T$YiaRXs&f@Mai#vAsxt2qZQvnq8X(3Xt~01 zl(A1+xu(oE&9I1SRwBT{7enEN8~sL4N(d)1;GhrMsnIX^F{U+P31mI;`r~Ve06TFE zf)iRw^sbdpVbJ#SnXR7^+RgR}A~BmEmEC>hQyZrd!ROi`tKCf=_%9GH5IRd;gC0kW|omXJVX!S!5~V9)dHP5HUCXHI;ycQN9v;JdrG8Nd@u0^Wun33I^rT$!LR z@T@uYK}Pu%R2Jb^7Lf}Ny8msxtGXkF0vR@M%DDHwK99`c&OYmHXQVp>=|_q%SL!!^ zUnCx+lO~)O!8)b@t^Wf44!XI%0AB)d&Mr=-hPH4XE9V{XPj_mXjOm}BpZC_(=vuiA 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

PjF|hGwOtQ>&(a&4c63NQ~6GeDrSh|JwMH43I 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 Za|&f{WS3A20T~N6GdVa4B_%~qMhZ2-FlGP% diff --git a/certs/hello.py b/certs/hello.py index 18ffce1..5aa4204 100644 --- a/certs/hello.py +++ b/certs/hello.py @@ -1,8 +1,12 @@ +import base64 +import io import locale from datetime import date from uuid import uuid4 +import qrcode from jinja2 import Template +from PIL import Image from weasyprint import HTML locale.setlocale(locale.LC_TIME, 'pt_BR') @@ -17,6 +21,22 @@ def cpf_fmt(s: str) -> str: return '{}.{}.{}-{}'.format(s[:3], s[3:6], s[6:9], s[9:]) +qr = qrcode.QRCode( + version=1, + error_correction=qrcode.constants.ERROR_CORRECT_H, + box_size=10, + border=3, +) +qr.add_data('https://eduseg.com.br') +qr.make(fit=True) +img = qr.make_image(fill_color='black', back_color='white') +img = img.resize((120, 120), Image.NEAREST) +buffer = io.BytesIO() +img.save(buffer, format='PNG') +img_str = base64.b64encode(buffer.getvalue()).decode('utf-8') +qrcode_base64 = f'data:image/png;base64,{img_str}' + + template = Template(html) html_rendered = template.render( id=uuid4(), @@ -27,6 +47,7 @@ html_rendered = template.render( today=today.strftime('%-d de %B de %Y'), started_date=today.strftime('%d/%m/%Y'), finished_date=today.strftime('%d/%m/%Y'), + qrcode=qrcode_base64, ) HTML(string=html_rendered, base_url='').write_pdf('cert.pdf') diff --git a/certs/nr10_complementar_sep.html b/certs/nr10_complementar_sep.html index 8025c41..65d1ef3 100644 --- a/certs/nr10_complementar_sep.html +++ b/certs/nr10_complementar_sep.html @@ -3,14 +3,14 @@ NR-10 Complementar (SEP) - - @@ -156,12 +181,24 @@ de {{ progress }}%

-

Realizado entre {{ start_date }} e {{ finish_date }}

+

Realizado entre {{ started_date }} e {{ finished_date }}

Florianópolis, SC, {{ today }}

+ +
+
+
+

Tiago Maciel do Santos

+

CEO/Diretor

+
+
+ +
+ +
-
+

Conteúdo programático ministrado

  • Organização do sistema elétrico de potência
  • @@ -193,18 +230,20 @@
-
-
+
+

Carga horária

40 horas

-
+

Instrutor e responsável técnico

-

Francis Ricardo Baretta

-

CPF 039.539.409-02

-

Eng. de Segurança no Trabalho Eng. Eletricista

-

CREA/SC 126693-0

+
+

Francis Ricardo Baretta

+

CPF 039.539.409-02

+

Eng. de Segurança no Trabalho Eng. Eletricista

+

CREA/SC 126693-0

+
diff --git a/certs/pyproject.toml b/certs/pyproject.toml index 75388cd..0bdf59f 100644 --- a/certs/pyproject.toml +++ b/certs/pyproject.toml @@ -7,6 +7,7 @@ requires-python = ">=3.13" dependencies = [ "jinja2>=3.1.6", "layercake", + "qrcode>=8.2", ] [tool.uv.sources] diff --git a/certs/uv.lock b/certs/uv.lock index bb3c7d2..c5c5307 100644 --- a/certs/uv.lock +++ b/certs/uv.lock @@ -184,6 +184,7 @@ source = { virtual = "." } dependencies = [ { name = "jinja2" }, { name = "layercake" }, + { name = "qrcode" }, ] [package.dev-dependencies] @@ -195,6 +196,7 @@ dev = [ requires-dist = [ { name = "jinja2", specifier = ">=3.1.6" }, { name = "layercake", directory = "../layercake" }, + { name = "qrcode", specifier = ">=8.2" }, ] [package.metadata.requires-dev] @@ -244,6 +246,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, ] +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + [[package]] name = "cryptography" version = "44.0.3" @@ -471,7 +482,7 @@ wheels = [ [[package]] name = "layercake" -version = "0.2.15" +version = "0.6.5" source = { directory = "../layercake" } dependencies = [ { name = "arnparse" }, @@ -517,7 +528,6 @@ dev = [ { name = "jsonlines", specifier = ">=4.0.0" }, { name = "pytest", specifier = ">=8.3.5" }, { name = "pytest-cov", specifier = ">=6.0.0" }, - { name = "pytest-env", specifier = ">=1.1.5" }, { name = "ruff", specifier = ">=0.11.1" }, ] @@ -765,6 +775,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, ] +[[package]] +name = "qrcode" +version = "8.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8f/b2/7fc2931bfae0af02d5f53b174e9cf701adbb35f39d69c2af63d4a39f81a9/qrcode-8.2.tar.gz", hash = "sha256:35c3f2a4172b33136ab9f6b3ef1c00260dd2f66f858f24d88418a015f446506c", size = 43317, upload-time = "2025-05-01T15:44:24.726Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dd/b8/d2d6d731733f51684bbf76bf34dab3b70a9148e8f2cef2bb544fccec681a/qrcode-8.2-py3-none-any.whl", hash = "sha256:16e64e0716c14960108e85d853062c9e8bba5ca8252c0b4d0231b9df4060ff4f", size = 45986, upload-time = "2025-05-01T15:44:22.781Z" }, +] + [[package]] name = "requests" version = "2.32.3" diff --git a/http-api/app/routes/enrollments/enroll.py b/http-api/app/routes/enrollments/enroll.py index b3b27fa..7dd30f6 100644 --- a/http-api/app/routes/enrollments/enroll.py +++ b/http-api/app/routes/enrollments/enroll.py @@ -1,3 +1,4 @@ +import uuid from datetime import datetime from http import HTTPStatus @@ -17,7 +18,7 @@ from config import ( ) from middlewares import Tenant, TenantMiddleware from models import Course, Enrollment, User -from rules.enrollment import enroll +from rules.enrollment import DeduplicationWindow, Vacancy, enroll router = Router() @@ -31,9 +32,18 @@ processor = BatchProcessor() class Item(BaseModel): user: User course: Course - deduplication_window: dict = {} + vacancy: Vacancy | None = None + deduplication_window: DeduplicationWindow | None = None schedule_date: datetime | None = None + @property + def id(self) -> str: + if not self.vacancy: + return str(uuid.uuid4()) + + _, idx = self.vacancy.sk.split('#') + return idx + class Payload(BaseModel): items: tuple[Item, ...] @@ -59,6 +69,7 @@ def enroll_(payload: Payload): def handler(record: Item, context: dict): tenant: Tenant = context['tenant'] enrollment = Enrollment( + id=record.id, user=record.user, course=record.course, ) @@ -69,7 +80,8 @@ def handler(record: Item, context: dict): 'id': str(tenant.id), 'name': tenant.name, }, - deduplication_window=record.deduplication_window, # type: ignore + deduplication_window=record.deduplication_window, + vacancy=record.vacancy, persistence_layer=enrollment_layer, ) diff --git a/http-api/app/rules/course.py b/http-api/app/rules/course.py index 6d965e7..0e3dcb6 100644 --- a/http-api/app/rules/course.py +++ b/http-api/app/rules/course.py @@ -40,6 +40,7 @@ def update_course( persistence_layer: DynamoDBPersistenceLayer, ): now_ = now() + with persistence_layer.transact_writer() as transact: transact.update( key=KeyPair(id, '0'), diff --git a/http-api/app/rules/enrollment.py b/http-api/app/rules/enrollment.py index 4a9ca34..c19780a 100644 --- a/http-api/app/rules/enrollment.py +++ b/http-api/app/rules/enrollment.py @@ -1,6 +1,7 @@ +from dataclasses import asdict, dataclass from datetime import timedelta from enum import Enum -from typing import TypedDict +from typing import Self, TypedDict from uuid import uuid4 from layercake.dateutils import now, ttl @@ -10,22 +11,31 @@ from layercake.strutils import md5_hash from config import ORDER_TABLE from models import Course, Enrollment +Tenant = TypedDict('Tenant', {'id': str, 'name': str}) +Author = TypedDict('Author', {'id': str, 'name': str}) +DeduplicationWindow = TypedDict('DeduplicationWindow', {'offset_days': int}) -class Tenant(TypedDict): + +class RelatedId(str): + def __new__(cls, id: str, kind: str) -> Self: + return super().__new__(cls, id) + + def __init__(self, id: str, kind: str) -> None: + # __init__ is used to store the parameters for later reference. + # For immutable types like str, __init__ cannot change the instance's value. + self.id = id + self.kind = kind + + +@dataclass(frozen=True) +class Vacancy: id: str - name: str + sk: str - -class Author(TypedDict): - id: str - name: str - - -class Vacancy(TypedDict): ... - - -class DeduplicationWindow(TypedDict): - offset_days: int + @property + def order_id(self) -> RelatedId: + idx, _ = self.sk.split('#') + return RelatedId(idx, 'order') class LifecycleEvents(str, Enum): @@ -55,6 +65,8 @@ def enroll( *, tenant: Tenant, vacancy: Vacancy | None = None, + author: Author | None = None, + related_ids: frozenset[RelatedId] = frozenset(), deduplication_window: DeduplicationWindow | None = None, persistence_layer: DynamoDBPersistenceLayer, ) -> bool: @@ -66,12 +78,15 @@ def enroll( lock_hash = md5_hash('%s%s' % (user.id, course.id)) with persistence_layer.transact_writer() as transact: + if vacancy: + related_ids = frozenset({vacancy.order_id}) | related_ids + transact.put( item={ 'sk': '0', 'create_date': now_, 'metadata__tenant_id': tenant_id, - 'metadata__related_ids': {tenant_id, user.id}, + 'metadata__related_ids': {tenant_id, user.id} | related_ids, **enrollment.model_dump(), }, ) @@ -95,17 +110,9 @@ def enroll( 'ttl': ttl(days=3, start_dt=now_), }, ) - transact.put( - item={ - 'id': enrollment.id, - 'sk': LifecycleEvents.ACCESS_PERIOD_REMINDER_30_DAYS, - 'name': user.name, - 'email': user.email, - 'course': course.name, - 'create_date': now_, - 'ttl': ttl(start_dt=now_ + timedelta(days=course.access_period - 30)), - }, - ) + # Enrollment expires by default when the access period ends. + # When the course is finished, it is automatically removed, + # and the `schedules#course_archived` event is created. transact.put( item={ 'id': enrollment.id, @@ -117,25 +124,78 @@ def enroll( 'ttl': ttl(start_dt=now_ + timedelta(days=course.access_period)), }, ) + transact.put( + item={ + 'id': enrollment.id, + 'sk': LifecycleEvents.ACCESS_PERIOD_REMINDER_30_DAYS, + 'name': user.name, + 'email': user.email, + 'course': course.name, + 'create_date': now_, + 'ttl': ttl(start_dt=now_ + timedelta(days=course.access_period - 30)), + }, + ) + + for related_id in related_ids: + kind = related_id.kind.lower() + transact.put( + item={ + 'id': enrollment.id, + 'sk': f'related_ids#{kind}', + 'create_date': now_, + f'{kind}_id': related_id, + } + ) + + if vacancy: + transact.put( + item={ + 'id': enrollment.id, + 'sk': 'parent_vacancy', + 'vacancy': asdict(vacancy), + 'create_date': now_, + } + ) + + class VacancyDoesNotExistError(Exception): + def __init__(self, *args): + super().__init__('Vacancy does not exist') + + transact.delete( + key=KeyPair(vacancy.id, vacancy.sk), + cond_expr='attribute_exists(sk)', + exc_cls=VacancyDoesNotExistError, + ) + transact.put( + item={ + 'id': enrollment.id, + 'sk': 'metadata#cancel_policy', + 'create_date': now_, + } + ) + + if author: + transact.put( + item={ + 'id': enrollment.id, + 'sk': 'metadata#author', + 'user_id': author['id'], + 'name': author['name'], + 'create_date': now_, + }, + ) class DeduplicationConflictError(Exception): def __init__(self, *args): super().__init__('Enrollment already exists') # Prevents the user from enrolling in the same course again until - # the deduplication window expires or is removed - transact.condition( - key=KeyPair('lock', lock_hash), - cond_expr='attribute_not_exists(sk)', - exc_cls=DeduplicationConflictError, - ) - + # the deduplication window expires or is removed. if deduplication_window: offset_days = deduplication_window['offset_days'] ttl_expiration = ttl( start_dt=now_ + timedelta(days=course.access_period - offset_days) ) - transact.put( item={ 'id': 'lock', @@ -144,6 +204,8 @@ def enroll( 'create_date': now_, 'ttl': ttl_expiration, }, + cond_expr='attribute_not_exists(sk)', + exc_cls=DeduplicationConflictError, ) transact.put( item={ @@ -163,6 +225,12 @@ def enroll( 'create_date': now_, }, ) + else: + transact.condition( + key=KeyPair('lock', lock_hash), + cond_expr='attribute_not_exists(sk)', + exc_cls=DeduplicationConflictError, + ) return True diff --git a/http-api/app/rules/user.py b/http-api/app/rules/user.py index 4a5e530..56b0080 100644 --- a/http-api/app/rules/user.py +++ b/http-api/app/rules/user.py @@ -1,3 +1,4 @@ +from datetime import timedelta from types import SimpleNamespace from typing import TypedDict @@ -9,6 +10,7 @@ from layercake.dynamodb import ( ComposeKey, DynamoDBPersistenceLayer, KeyPair, + SortKey, ) User = TypedDict('User', {'id': str, 'name': str, 'cpf': str}) @@ -23,7 +25,12 @@ def update_user( now_ = now() user = SimpleNamespace(**data) # Get the user's CPF, if it exists. - old_cpf = persistence_layer.get_item(KeyPair(user.id, '0')).get('cpf', None) + old_cpf = persistence_layer.collection.get_item( + KeyPair( + pk=user.id, + sk=SortKey('0', path_spec='cpf'), + ) + ) with persistence_layer.transact_writer() as transact: transact.update( @@ -128,9 +135,7 @@ def del_email( ) -> bool: """Delete any email except the primary email.""" with persistence_layer.transact_writer() as transact: - transact.delete( - key=KeyPair('email', email), - ) + transact.delete(key=KeyPair('email', email)) transact.delete( key=KeyPair(id, ComposeKey(email, prefix='emails')), cond_expr='email_primary <> :primary', diff --git a/http-api/tests/routes/test_enrollments.py b/http-api/tests/routes/test_enrollments.py index 5f8ee18..fd6b6e4 100644 --- a/http-api/tests/routes/test_enrollments.py +++ b/http-api/tests/routes/test_enrollments.py @@ -3,10 +3,11 @@ from http import HTTPMethod, HTTPStatus from layercake.dynamodb import ( ComposeKey, - DynamoDBCollection, DynamoDBPersistenceLayer, KeyPair, PartitionKey, + SortKey, + TransactKey, ) from ..conftest import HttpApiProxy, LambdaContext @@ -53,6 +54,10 @@ def test_enroll( 'deduplication_window': { 'offset_days': 60, }, + 'vacancy': { + 'id': 'vacancies#cJtK9SsnJhKPyxESe7g3DG', + 'sk': '3CNrFB9dy2RLit2pdeUWy4#8c9b55ef-e988-43ee-b2da-8594850605d7', + }, }, ], }, @@ -62,12 +67,75 @@ def test_enroll( assert r['statusCode'] == HTTPStatus.OK - fail, _ = json.loads(r['body']) + fail, succ = json.loads(r['body']) assert fail['cause'] == { 'type': 'DeduplicationConflictError', 'message': 'Enrollment already exists', } + enrollment = dynamodb_persistence_layer.collection.get_items( + TransactKey( + '8c9b55ef-e988-43ee-b2da-8594850605d7', + ) + + SortKey('0') + + SortKey('parent_vacancy', path_spec='vacancy') + + SortKey('related_ids#order', path_spec='order_id'), + ) + + assert succ['output']['id'] == '8c9b55ef-e988-43ee-b2da-8594850605d7' + assert enrollment['related_ids#order'] == '3CNrFB9dy2RLit2pdeUWy4' + assert enrollment['parent_vacancy'] == { + 'sk': '3CNrFB9dy2RLit2pdeUWy4#8c9b55ef-e988-43ee-b2da-8594850605d7', + 'id': 'vacancies#cJtK9SsnJhKPyxESe7g3DG', + } + + +def test_enroll_vacancy( + mock_app, + dynamodb_seeds, + dynamodb_persistence_layer: DynamoDBPersistenceLayer, + http_api_proxy: HttpApiProxy, + lambda_context: LambdaContext, +): + r = mock_app.lambda_handler( + http_api_proxy( + raw_path='/enrollments', + method=HTTPMethod.POST, + headers={'X-Tenant': 'cJtK9SsnJhKPyxESe7g3DG'}, + body={ + 'items': [ + { + 'user': { + 'id': '9a41e867-55e1-4573-bd27-7b5d1d1bcfde', + 'name': 'Tiago Maciel', + 'email': 'tiago@somosbeta.com.br', + 'cpf': '08679004901', + }, + 'course': { + 'id': '6d69a34a-cefd-40aa-a89b-dceb694c3e61', + 'name': 'pytest', + }, + 'deduplication_window': { + 'offset_days': 60, + }, + 'vacancy': { + 'id': 'vacancies#cJtK9SsnJhKPyxESe7g3DG', + 'sk': '3CNrFB9dy2RLit2pdeUWy4#does_not_exist', + }, + }, + ], + }, + ), + lambda_context, + ) + + assert r['statusCode'] == HTTPStatus.OK + fail, *_ = json.loads(r['body']) + assert fail['cause'] == { + 'type': 'VacancyDoesNotExistError', + 'message': 'Vacancy does not exist', + } + def test_vacancies( mock_app, @@ -119,11 +187,12 @@ def test_cancel_enrollment( assert r['statusCode'] == HTTPStatus.OK - collect = DynamoDBCollection(dynamodb_persistence_layer) - enrollment = collect.get_item(KeyPair('43ea4475-c369-4f90-b576-135b7df5106b', '0')) + enrollment = dynamodb_persistence_layer.collection.get_item( + KeyPair('43ea4475-c369-4f90-b576-135b7df5106b', '0') + ) assert enrollment['status'] == 'CANCELED' - vacancies = collect.query( + vacancies = dynamodb_persistence_layer.collection.query( PartitionKey(ComposeKey('cJtK9SsnJhKPyxESe7g3DG', 'vacancies')) ) - assert len(vacancies['items']) == 1 + assert len(vacancies['items']) == 2 diff --git a/http-api/tests/routes/test_users.py b/http-api/tests/routes/test_users.py index e1cd36f..5d11df6 100644 --- a/http-api/tests/routes/test_users.py +++ b/http-api/tests/routes/test_users.py @@ -247,12 +247,10 @@ def test_patch_email( assert r['statusCode'] == HTTPStatus.OK - collect = DynamoDBCollection(dynamodb_persistence_layer) - user = collect.get_item(KeyPair('5OxmMjL-ujoR5IMGegQz', '0')) - print(user) - # assert user['emails'] == { - # 'sergio@somosbeta.com.br', - # } + user = dynamodb_persistence_layer.collection.get_item( + KeyPair('5OxmMjL-ujoR5IMGegQz', '0') + ) + assert user['email'] == 'osergiosiqueira@gmail.com' def test_delete_email( diff --git a/http-api/tests/seeds.jsonl b/http-api/tests/seeds.jsonl index 54284fa..c03f26d 100644 --- a/http-api/tests/seeds.jsonl +++ b/http-api/tests/seeds.jsonl @@ -21,4 +21,5 @@ {"id": {"S": "email"}, "sk": {"S": "sergio@somosbeta.com.br"}} {"id": {"S": "cpf"}, "sk": {"S": "07879819908"}} {"id": {"S": "cpf"}, "sk": {"S": "08679004901"}} -{"id": {"S": "lock"}, "sk": {"S": "c2116a43f8f1aed659a10c83dab17ed3"}} \ No newline at end of file +{"id": {"S": "lock"}, "sk": {"S": "c2116a43f8f1aed659a10c83dab17ed3"}} +{"id": {"S": "vacancies#cJtK9SsnJhKPyxESe7g3DG"}, "sk": {"S": "3CNrFB9dy2RLit2pdeUWy4#8c9b55ef-e988-43ee-b2da-8594850605d7"}} \ No newline at end of file diff --git a/order-management/app/events/assign_tenant_cnpj.py b/order-management/app/events/assign_tenant_cnpj.py index 9cd7ca0..d3fbe44 100644 --- a/order-management/app/events/assign_tenant_cnpj.py +++ b/order-management/app/events/assign_tenant_cnpj.py @@ -65,11 +65,11 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool: ) for k, v in ids.items(): + kind = k.removesuffix('_id') transact.put( item={ 'id': new_image['id'], - 'sk': 'related_ids#%s' - % k.removesuffix('_id'), # e.g. related_ids#user + 'sk': f'related_ids#{kind}', # e.g. related_ids#user 'create_date': now_, k: v, }