From 47e6b22a223082c9cfcdc98ca9b897afcf67f26a Mon Sep 17 00:00:00 2001 From: roberto Date: Wed, 7 Aug 2024 13:46:47 +0000 Subject: [PATCH] Version 2.3.1 Firma digital de presupuesto y facturas git-svn-id: https://192.168.0.254/svn/Proyectos.AlonsoYSal_FactuGES2/trunk@39 40301925-124e-1c4e-b97d-170ad7a8785b --- Build/Build.fbl6 | Bin 5308416 -> 5308416 bytes Source/Base/Base.dproj | 105 ++-- Source/Base/Base.res | Bin 384 -> 4748 bytes Source/Base/Utiles/uSistemaFunc.pas | 51 ++ Source/Cliente/FactuGES.dproj | 3 +- Source/Cliente/FactuGES.res | Bin 25576 -> 25576 bytes Source/GUIBase/GUIBase.dproj | 56 +- Source/Informes/1/firma_contrato.bat | 44 ++ Source/Informes/1/firma_factura.bat | 44 ++ Source/Informes/1/sello.jpg | Bin 0 -> 20556 bytes .../uContratosClienteController.pas | 61 ++ .../uContratosClienteReportController.pas | 11 +- .../Data/uDataModuleContratosCliente.pas | 8 +- .../uIDataModuleContratosClienteReport.pas | 2 +- .../Model/schContratosClienteClient_Intf.pas | 28 +- .../Model/schContratosClienteServer_Intf.pas | 28 +- .../Reports/uRptContratosCliente_Server.dfm | 1 + .../Reports/uRptContratosCliente_Server.pas | 52 +- .../Servidor/srvContratosCliente_Impl.pas | 7 +- .../Views/uEditorContratosCliente.dfm | 48 +- .../Views/uEditorContratosCliente.pas | 52 ++ .../FacturasCliente_controller.dproj | 18 +- .../Controller/uFacturasClienteController.pas | 75 ++- .../uFacturasClienteReportController.pas | 25 +- .../Data/uDataModuleFacturasCliente.pas | 16 +- .../uIDataModuleFacturasClienteReport.pas | 4 +- .../Model/FacturasCliente_model.dproj | 8 +- .../Model/schFacturasClienteClient_Intf.pas | 12 +- .../Model/schFacturasClienteServer_Intf.pas | 12 +- .../Reports/uRptFacturasCliente_Server.dfm | 1 + .../Reports/uRptFacturasCliente_Server.pas | 46 +- .../Servidor/srvFacturasCliente_Impl.pas | 12 +- .../Views/uEditorFacturasCliente.dfm | 39 +- .../Views/uEditorFacturasCliente.pas | 56 ++ Source/Servicios/FactuGES.RODL | 10 +- Source/Servicios/FactuGES_Intf.pas | 24 +- Source/Servicios/FactuGES_Invk.pas | 24 +- Source/Servicios/RODLFile.res | Bin 45567 -> 45707 bytes Source/Servidor/FactuGES_Server.dproj | 592 +++++++++--------- Source/Servidor/FactuGES_Server.res | Bin 23344 -> 23356 bytes Source/Servidor/uDataModuleServer.pas | 6 + 41 files changed, 1033 insertions(+), 548 deletions(-) create mode 100644 Source/Informes/1/firma_contrato.bat create mode 100644 Source/Informes/1/firma_factura.bat create mode 100644 Source/Informes/1/sello.jpg diff --git a/Build/Build.fbl6 b/Build/Build.fbl6 index 10d86ef8450595cee0c44d338fbc11153cdb0d63..0e325ea7b885695f2e51806220456b55d954e551 100644 GIT binary patch delta 316040 zcmeFa3w#aN_xFD$iF+c6YYw3aajR&>iHcV1(x}iN?zB{>wpu|bMJ3Kb5Q;{NLDPzs z)+JhTJ8`M|wSp*$R*TYBTUuIeRgZW+Yi6(QTxR-v{?GsWmDlTeK;H%GJ7AEQkComS9LaVjJjhvBXTi za!0*#M+q;xF%csCeLrSiXt^rO>ihXw>0ran+1k%<|82jGiR#Xtk$-Mf{LdA|o~`3= znN{6lsRUH>hb!c+{|jZ6!whFan>(c>ipk#>r(Puks9F_7*O6(%3_Ix-KVi-`K#CO zl&&fp>E-w5g_f!^-#;*1n!KV$9d|>wD$HpWfK1A`XHvHGoif}Gp;JQ3Z3qqg>rNm` z8lsuhklt}))y8FlDsEUDG%-&--#Dm}y1Y_cl=Eh@xKKrDsSb+>+U(4!61PWjUYQ*< z)8Cnu6gQ&0@}RT)khoJJidEg#B<|S~Xqhytam#u&^nV!}Pqnu63qPa2_gm0|_P=NB zoH21m#~GDpl$ddK`r+vtrq7$6KE2=cw$tlO51M{8^XtsRnHw_aWu|BL%M8l=W7^4S zbEZw4)@WMgX@5-pZtBUY3#U$;I$&yzsozamF=gSDiBkql=`yADlm=7EOu3$MEMsRz zUdFhL))@^l%4GaK`Nzq}Cg)8aJ-PYh29rZ4U!Qbl(kA<)6_XZDnmB2|r1p~mQ9#7 zVd#W96Mjrzo&Ik6tn~Esq3Qk78>I)O|B?1}+TpZM)80*+o;EsdKw8JN=4o}(DyNl5 zyFUKR_&(#?j&CqNX#C%=D?d8-{~pv$d9L)Co2Pf2&OM!dI^}fY=@zG>Pggp9)i_U#$Nk`-`+MqQ9v0#f_88PiCD=JsEy7;N+zf1t)S(%snycMD&SD zCvF^Hemv`V>Tz_z<5xb<{ygLJL7#X3+&T7-pzcbu+XD{|%p3Ub!07|W4Qx6va$xAd z!vo$OFmb@p0euFvA5dn%ndDECS0v9%o|4=)IVL$WIW$>G{;~fir~h9;)fIcI&+C6) z`tzm7W*$p9R{Ger!otGAg@J`Pj-EK0adgnph@+Q}tT~c%BUe-bN}W2C-!gMpIv=_#{NP3!}ka7&)=7`&#^CVU;TY2 z_HNyqy|?>bXa3Ege7`z9tWB*othd89ge?o}64pG-8g{Je&ZeVV=SJ_!* zMV0C5ynll3*yH!s-y5>`+McC*X6{MZ(|1qeo`5}9b{Fi<+?~2RX}4wf^V@LdskR7MDAK1QTd)D@` z+k0Ft-d6>eLzEoa+7|2+RW{uBL2_&4wm^}p`7+HaoUXumpkzaYP>%1LE| zvP_w$bX3YH*Dc2^vn-=6JuGc4O)YgSl`UD@#%}Aqt<|=OZH1raf4bn)?w`hgdTs0J zt@&G*Z(Xpp@7DOOQCrV%S-vG@OW!T=TcWm9+7htk%I1R2>o?EcoUwV-<`$a+HecCP zuxab2+)Z;gjoK8q$(4U4|3v=!{Oo*tT7F7?-~9OesQkeEE6!|ZhI5cJ!WrVcx$*SI z9UF5tW^Nq3F==DtjbR&aZn(VR^oAW9ayDdc7`!2AL*or$8*Z*YzkbL1HS2TMC$EoM zAGrR?x)bZxughMSwk~B|?{x|5;?_m1v#h(k_Q2ZZYZt6_tnIxvc5TGkz_qTtJ$Y;L za`IB0p+!O8DFOMdhnJXk>rRk*>rVOdVQa-;9fNW9?q9H<+NGpl>v@f>(JF2M4d>+t zr-l8|)nfS#Ta8D1R9QH(N{6LQGg|)sOUOxez-u8*qWm4-4X<6R?BOX6tMh&`Kp z9p=UvnT#w$MYK3a>P0;Ns$Rq}QQaD%s5Ql&?M;QPDMt3Lx6)4M4;h*r$Fym>y?Vl4 z6Jf`usK1oLS@;q*&KTJl(LrlE)uwlg>rM4;aZ)tZHqkw{i#?Ys6}E;N*$YhwX;RPM z5}B-*YsNsmT!EroK>$XNO*KM^HHXac++i13q zm7^}w9(EFpY^7JxdTmY}&4y*UzE@U=^S4s$S6Q5Gf`VW73!{Ev*!?HQgfyw@+x_>G z0d-+WO!csDk@TEV8Im3jj;*uuDXoPq=i2KneO|QmA<@DGw0Euu2_EAY_BpH^HL^6| zL9I4Z>*!~#X9L~VI$`60uzAp5om~-Ue-CWzHnNk~Ry+GYl+nvnEl{_UBkbe}J8Q+B z&we&+y<=c+{)yn&TD#WkO+0O*e!5;4iMxx_)YdT$6n=Gtk zcv(9DOZ$ziy}LncxtBxr)A?IP{d6u9HOv=wH;FyBoC;g>jO<0Or z9YuLsVo!tNt7Ol4xH?^cG$Ntz&dwXUrJ$R-CF&S-0zVLzmTH!)wSw(RKN>~b z8Ca@2zIC%WTeH}>m_|*WYTl$#tS$DDMy*@NHft2utZB10@lBp;(kAYybXcW77_|6V zc+{O&If|Yc?krbZmkJE8?y^{}BZprMa#585+8MbpSntZ`Q}nLp!C8F50V8 zqHspOf*HeGTtrihO5(<5iHg$=?GT2(5Qa|qtFPC=s6>w{hW+>YTJ756=M`~NQXUgc z*BES$yQ&t>%JnJ6AT#a_vW4YIRI>^EDS z&ol@wsf2xJR;=3-w5O+9U9`^NsQ8TDDZUd0IVuYHy}$FwgY+~&qoZ-J=oZrC0e{E# zmHJr}_dcyxP>G(Vc2e_Z#8eEUUVhc6QpzZ;W33#dmBGS2{SQ%=FGX4Y6wHlu47LoP z4T8pL_M&R*_9p1h2nyZ9sSE5AcJ_POI|6%$49izv>k=nx==Kgp=xw!2q+c!Uek}G} zK6(N&>=Gj;Yol7-HkuuWI0p)qi^_La*roCXsVg4FmHh@x8D2vpqC%Qf^0&mjsrS~+ z`dmVJSW&Ae9cwys8waQOg(V?%XQPTu>}A-SwuxS}UF>&Q)TuU%40Pi#>;utJF}SmR zBA)Ddl&&r=k*e5JSD;bb{SurFb2QlajMQ`9)hcyBpAcCZWb2o7OGVxGVN6YD>84bv zKatY#;c1N{I5tvD?ku^}^m7#;9(78HeM$8~GYl$UzzAKrK1Fcs!BxAXp?-qm9@32z ziWB1$CyJgX+$)p|ONO(v$E#~Y`HRQ(Yh>I>y+Ut@2FVh3=g?m5(;O$fFHAjaR4{E~ zR`W4T%*Kl`KGaNu$*VekX7&$GQhv=oNC{7#gsg{+zP9GI7 z(Wr=dO|)M1swkh>E9XRc&Wrs8i~7`K=vCBWMkjK9Z``lNqpyW0v@=ChO&5ikr8QaW z7HG25uw!^GlS1gZ>!BF^WbzPvTv*zSJymau*mHCJ1#{HLe7Z*Dcx`my9=3V3-Z?Ic z^rb`(E6qI)wrQ&UBWxLt2Cb4}ViUypYxzJQ1C=YHbSH$>tAe?7t69KKX{$(t3qst=?yOT<;j%f9_6z9mc!GHRN{R~6YV|`BJ^%u2*W%ShwW+~BMuj4ggh#n@X?M{h37wiYv zqGu5wdwEN>Hrw1yuV}-by1gHTy<@`8=d^eBXpiUeu&uCT_=K-4(uP^_Z0~4yORwZI zQMnI=&5vmBZ2L5MUY>`ofkx$u@z)wGBwFwO0ZnvUe^J-Mc2n&Cwm3iTNDo?*V8m`@ zDB{)N*a|l$=w{A4bTbVV_4NTUHPyzQ(LKLLGQ-FAV~N@&v-MHEt#?16x6N+RCTB!_ z==q4s#BF`n%-*$)xT%T9e~YlHoEE8f3aj)~LuZh!9fq|-MipD~v^LCNudbI)JRK=y zhe|^iHrdJbS1WYEFh3bK3>!%C)9i?*aa5SBH&GPM8rg{!XRndsEZa4Bk`lHYh76zF zlZV9Es;~>eGD?4dS7uOo)H#h~syj<}55A^^bwPTw5yi-@yAy?=g6tCe-4^GIJ*gnQ zVW<~2-#*=2>xbSqz%PV>Q(}Lb_G+Kr7zgO|8{Qm}I^pKPu1WF0sB9HYOE(89*{6c} zlu_+y^6FEtoT8Z6%6|$6AU`*()r!%+IsA70%@Xc>L8}oza`b4ZpQE2eO|FRjRoXk- zKNI{_iLe>4W%$UN{cDV^mPO3=_{mj?lc!m)(?jZ>NFaTnrOo z$FM6ec}}x+GfltR#Z|A6^MndTHrZB?^T!v+!TCFE8T#xdrt6o5KJB*%-<@(!RP2tZ zs3pL8WH1dt$uLCc&!>XdOKF7?=ghH7oV#D>Tw(iF?61+@+4dD073p!zr~}P!?(V@F zQC{<9DCEH+OXRtty}zg?cgKyeMmHv(k{xTVjc*%%)SHWMN{dC+7707=c-eanwhS-e zB`ZC8DR=P8qJ}?;{ZF)at{58pvwzqH*g9uaHsvv`Y-8i~(d`4>XRUlDn*SS7Mmil- zXRhl4*fM;aYP3naZwd#ZrND_9!%J%7M(Vl_v0A~d z0i~U&YjfqW81|K#2+7Q>vOw?F4xOl+;n`Fi0t>3gNOD2!cLarmoi$D@+NVP&XMCG(tG zCHp?7H@;XJQ)nrSN>N7GE9+HBs-R)#Z;_qJFESYEtR` z683J2J(rGL-}L8WZ)cFT37i66E^Xx_a%opr*K`UFP*T;r=Yp;3(e#kUYR^f*ABQc3 zF~f23!ZPg~^wY;fi81frUj4m4_ggGMy`PQ^U)&0 z)#Ol4>sDrp)NcuEZ~LnszkwE61|xO1Ps*uEG0A1uzF z-lm~)6O0(%hj&JkZ`Tp{t9~oUy{`AC_x;r`k6}WbG7l5txkyY87e1}L)2h|R`@!N- z(aP;b>vmAop7T+gj<8`^8)ceyb;f(GqHLgAsQohFH|ne6Y-b=n4LCmK$SFb?gP5qw z!G;zisVyE7rFfY3&b|LI2!9NZVRuewGuX{-;hn}H*wD9i)dms z26hY|B^(WcvF>_usNS;Ti9)F?Opq6zx(>zL1gTSU@UTRV52MF?bxDTS&g}eXk)WTX z8`M77{t){=EzZ}M(AgdVLxvaYny>NrFhh@k;T2&eNR)*3WUjp8{N;TLxcV4oj7Bmw zxe7-I^_O?CPB29Dal6yOAuIIo zMU~!5d*`@3s_dt*VmPS84Ae>{9DWw@kgw3gINA76G~7pG&n0ufp5gU9v7B}y#N&iT z%;yyv&8cj3BFHYCh&c7@^|+LF!qj%7N-CALKC(SPyRkUJO6fP4)xs359g-DP#T9_`gG8&S0PVao79V?dH->cCd*JX%CVkCGvZ z(pMC*AMKs(opc6H!It3~%g(WyEwNJOsH-owC=_QyEk5SbHrn;Y+SMo?A|0Fb;4bBTQ84m)P{Eec-g)~dxi;xeWH=EhdhsVzcZprUyA)#7UyRtX};6}h77Np z)*;$6stD6{hyh>8B?D?u0hTikoT500o-oh@o6lLBSX1j!&wAbd3q=WziT&racP{&q zyrFcPFdVBQ3UR9zBa~&I9+s-4i{|YmntOuQ%*wgoiveM;z>?wRd+i1;-xm61%dwCO zjdgUQ=uv{2+t1nMQt;7IVei7qJJ@{cR-=;E$|As4j-5S4`thPp5bGC>%Q7K5FxdWPI@q_Lct4Ur?#*g zr8uAXlRE2*Fl6}fk@tXBFfng&h+C>c4;xfLdH^SbG>;+Xg582W!zYHkIhwsFJ?_Dw zI`n7LK=I7*gJ`(RV$b&0!k*!MCp1{AC_66w^!typNHqN0qM~yZXWhT4q6IK?2%Ar@ z&H8|5vb?q-R+ts?%~QR$3wsp68t1hBLl340VP?O9srkR-1}&n%9l}|!P{hEAsq8%w;+3QiMGy z6j??kp(dx2UG`Uhxf5J1hF|s^KHXw@yiA*&cf{XJymE{8ZY@PVO$Xa5qg8Sox{so8o?Qp*x+`s5?zdzjX z5BK}S|KMi%?>d2eT}Z8Bf}2#cP_!a_tjAYBry+buPnxO`OKG#xqNlM33a>E0dcLUx zYvLi|>ZcqzzcU2LYt3yUb)cr&$ny%AE=Tbjm2L(q-Q zN=|0OiqD@<#t)gPRlMR4J$)s~Fu5A}Fs%QKx4A@ldm z^z)7(HNBK)oHwGeY}RI`HKRzDn$Y5P60;0c9AmTQnX2){8k;r3RE_UB*{t}GpGnhc z1<;(|Lre>aWj~uW-&BoPVr|xOra2(G&Ss@(VdHa$7g*7}^g#(@JwhU(ryy5jJ>CGZ zS!w0bSbZS{YWj?m@#(=gdtg1%G&w$S06jh%X<{BPe%h?lOw~KzfV#bD?g;gUby^rS zE<8e|p{EFPV?Dk)WwYWdlO}4!N7}3uv1gq6d<(MP)-?H=0i>se7vuC;=CWCDn3_lM zzs*X^HO8s2<^bzKaP%AN9WRmo3sduWeZpp?Hx`YPBbLQxone|9K~Og9C{s1wkVodD zOs(VP9-H;Nsd{1-)VpEbxYOZVIk5hiY4XOOke)(-jO&KicWhRA(Z^Vgl`oqWpJg#q z2SPo`)HuG|hRn;DTF1xOY}PfzGZ41?}Nj--84Dke4wZ3N8`F7TEk|gkT+vB zf);JoL8fYaam;3|YMMDBUy(Tl+!|ZQdb7=X-BgVgLYq}FZFj_o+pH8vYiu0Lg2=pt zX>vr)qwJ>15o>F+((0|Tbp%}4tXs|0_^=o9e$cdG@HIM{l?)pj$G2{5*3PDCgd^Fk z6m)K!8j+I7e5k1&FE`n&6nkcz{MZ7hY5X_7)|QNbnj+YY)mKTKguIQ_cvIbGon@Lg z-pRIE7n!Q@u@2O1q^TaSbwD3tT627@$7aP+t69xQLOtCqHC|_g@pGoB@mUk-hnVW| z?KqpYfvFndyf*6#W|^yvk5KM=OdA$4E;j2ArpXaLXtUDm9LDDy-%znxQ%uW-uvDA% zHPh6o4XNfAP0NOF9NMfEOs(&H4{G`noN<@I_kN%@O^w&ok@+%HJzm?gSxcCf9YJ9> zE3L#EH%v$~s#>OL;nGJV`50twTy}gd(q;`cEgRk@wpr-|pvIZw8;mwjAUO)xtEoEb0DhV!Z~EcQ;Lr zub0`ZFPp0IE+_6$re&iKY1Kryl^%FyTz-Vm+N`@wP2}~4dV^^J@D8ZWN)e34#F z*TF(}8{=c}ttp#zf~gt-fi~+M(;Vikf%;vjjhh$W7D4knO|73DLVB9v8K=jqp*Cxz zY3^Opp#IA=HNL$B>oZJqPZ~=4KBnmrRcW*SW12fYR%x?#GPREHAz`>MRpXldImY1mpwKGifizA|F79y3+r!yz{7DN{ARkPB~{ zsTv<|McG=K>hZBSn{}+I8lQf!St)+sxaN3Y0@mL%Z8&^|!e+f{njD`*wOKous_~ft z%<4^zXT3mGyA8c@v*TNecziOoj+e}A)>lof;|*Y&wV|mR-~Yhlk*V<|bwX_F%%YGo z1`(UjBPC7GjGGj13ggygnlHZdX|wh+O^w%|(I)jxljDL%&AQAqHNMCM z>$#@M@d;z-TbSzc*&&;Clc{>dR;c5lHa?$9eW;U7Q{$u9HftkOH9mA^v(7VB<9o?) zCYY-6;wx%KUoS8|Yk^j)&AQJtIl}F68JVWWdo(udDpNIHMzASY)zF@yVd~(ggPW+^ z+tx4POnfjTWuCKdQAn;*gX4+^e?W1?MWr~d_&Gns6{~sa9mmU`ta1B|n*X8MCO{DYo^44;NV%@n*Y=~Jw#W+`|@PNtCa zj|j6Qk!Ff|W(r;?mYMJzhl2{-6k`6tD-v!RePY6H3m*l?==mtvm+7NmSD=SNn}4ta z(?dfO6AsJqQLrb+N5PH~A4N;!*24Uwjj<-=Bu8WU*y4pN9|e01eH4jidDz)=?31Lk zS&}Yh3XV?jF~uQsK8o(9^AC39`6S`hCm#hbv->Feo0T^i3gh|50J9|QH1)}ZS7&?_ z98}?>NYV1Z{l`Z$(kyq5LGww$D|SALF=nRNvF$tm;NVRkTO9A}qewT)gx7O?QqWyj zAL_j49}cPUnwan^fsZW?xb#tQ5Ur1bmtsiaIsah)uTPR$X2s%_6`vIBQ1wyp;=QhL zpMNYe%Ve>c;(ap(M=$u~&cP%}HL|^0D=oS&F~S6t~P2uDc_F*Y$qeEJ=}>g4e@*%F8j;J_>|Znan@< zwG5vm9DnVj;7^J8D9VY|3m=6RXG8V((Qp)?kAfHZeH6U-?xWx!Q6GhfKr)zr@Itpw zk~(HJ;edRf6ujK#qu}L3-}whG@cAU+*mWO8W3yuM+b=#TIK~JHuk{apIm0Ij2Lk&j zILy{Z!C_E7ibVJFdaQr&Dw$c#8Y#3VT1#nd~9)? zu8)Ejk9`yzWiJ(S{=p%dQp1ymF=oZ$Kr){c99re0;6Qgbg_wVEO{nvjzmTJNLa z1z8_Ou34jSET&HiJHJZgqoG(V!|5=GDfy&0WR~I!GsO=I#$Ursel|;T)l9)bmp;Yf zmjrwiwCrs>|F~h62}hv$*y6V=d=wlw-Bq~HKREQ#rzSDzj(3x|In16kQzV%wI98tXxI6!# z+mB%;9P-IYyv^*1n(+%{=t!-cQs=EvD+*YexJc7#aXiy7Y!6~+S56W zHimWQ7gc>SxvkC_7#ilRo)miZ6R#kbUq9s_m&U;ea&fly^ZUX7zZlW7=3?!86FPH0 zqyOV}E)23(a$b9}!dJcQ2jSRT%VWU32fE?h`&{p4YS%BcVk?5Z7~7s&!Ct(lpBB7| zt?jAl`)K3rf1?Phb6bT-`)6q1;e2@&0O-+I%k!Q9U0(MjBa?i@L&>0|C43Yr) ziVj^*T|jw!9Q~r2bi;K6M6jkiAc%oJR4C5$U*4hg|&$?Q%djq6XoIbTLr^EDv zYw+p`|KzhExiHfgK=TyM0{xJc^ng7FxWF3vVFKwSPX^GuLrX(HTd<0YKp)_iE~)1M zi}^76Z4kS3fY6T(Np}-{xtm|dDWcEcOBcpqfOHtqZ(B$o27M`C&cx~a=I1yg`VhPH zr_j$U$#vIZc93*04hKjtZz`YyTNnY5-m{T_maL(VvP(zCC_oq1j0W&BSP^}{UCz44 z0EGJvx2v%r{&YnVefL~0>Aen+>-pmW(z%ufkW0bzy>vMZp8$|6zEryqJ`waIJ<>lm z5pWD8)%^pLKys~TGC;1$&@XpM-{cg4^juE`(An0`_%uL6&L|TgS3ITzI`d&O0CM@{ z4Z!p0|GI^lpiT_40A(0v1N6mATq|z^q)RjlP?Zmx1CYz+^gAQcRrNMNE;h^sNdN4- zuE<}m_|kXmrJq9u#IfxK0J-$B5TNXy0BFj#>1SD@8I}R0gZ)E5He34$AY&Jn19B-1 zwSUnH5dPCo#7g|1T#8)(g(Q-AieXO0n%}}1t8-dwsyt% zw}{Ps3YBy$Zv)8XrtJW^47>xt-ld|Q0O?uY1^Ag;VK+c74DA6l;C%K1}31sa) z=+DP}4yea)93cIJCjc_+;v_(NpT7XeK!Q^M=`KGFNM~zj08S|NN_+_lWz|=JM252f zxv2a#KrTIh11Q1GeGV{y)0_uLkNX9HT+jR#5XpyK1lXh5!X=PghW`%Gi;w#rAiah^ z0OS(;Wx#bd@FRdOC+)2K1duCAKLh5m<_bWriC(1<`Y%@f0+3-QzXHm#?P~z(0KN|B zz-fL1)ZxQ^2b^Nf4L~D?KLCCVe*#A8fcwv1AQ?$<6ChU@{szq8M7IFabNdfKy0lyX z=_|VpkWRQFzy&0W!B%t!K#vF-Q0F0km0cqR^ewCW05MQ$8h=0mYXSh$_f`TR{j4Pc zWB9OA0O`yv4UlfRGJq%9bXmY|>YQ3eENvl72RGnRTY4A0agXjbE&2Y1Ds>90)}v!YJk-i z=Y=0D)T`pSDZop#~mv{PI6pkEli?^(Ow2JBqLi-Rw#A+O^7#us0#_(Ct|wT%@o zm#k0@eTxRPJJ>8`FoFa-_wK1USf4jhm()hP1a#wS?jR>bq>+;Z0_wRkO`@=_O}ylc ziVl;{`vh|0MW9~?7-+Rb@_Heaybuxra&|-z!MPHQa|bymBTb&W=7KxODG(io8J@Ur z5mByMjR@rYsw2Q-^7k^E>jI6(49{ay=P{4-n7U!Mrswl44A^P3({k+(qG46SDn4!? zG>ch7Ag5OZa^gkcG1p3A11~`%r&k1br&n~}ie}qG03+Q&K0lI%Mmw!=1oBysU?yio zaL66xa|UVT?IZY1jpPpaw2G_d6S$=(zKA8O=~)WhTM*sfX=KTknybq zawa$vP=*g9NO1>`=^oGU>_s&B^O)kf&Fb8yZu4-MoS+fNc^rY9#}UZ6-#Y*~btCYY zx@i+H)ZbD>6FE6`Bal-!0y$eFkn=d2t;uN^0shlljv&_^S*fL zfO92~vo!*JvWE6AqS;zAK8}E%1+}w6AZKfb0LiQ&kaIEuIa{MSnVf48^yf4La(;Fk zfX6&>{~_wd#}N#02kN9+c}U}ApsAajpb^M98G#&F2;`*h3?P&Z5ZDvlNzTbgC1+~{ z9uu@kPIC?#IoBeP6EuQoJ}U%r9!FC$Iq~|=4w5r3QppJ#O~d45i$G4c2;`jXDnQP) z2;?M+W?^!AMIdKk1Y#D3`wz{$@Ia)uFoB$G5u9QTO}6Cpia^e&2;^LgKu)g+qOK(q$=Mp& zmh&qDIaMN%b07jak0X#1G=kkY{nE6YM3Ls=T@8i^x_ISra)L(3$$1>js5~Z7=eXE3 zZ^BgR>&q1zR`r@HWry-qDYC5g5swk~r%M0V&lC~BP|?|~U!};W)aO5_6ng)k|4kyG2-sWTN)!TiIk-AP zKtjyYb)%gC5ZdK@+|^ke!jpej5(FgVNxG|xI3kY=(iH*{^32`UO&k%yM|6jPggl*h z^$In%+d6MtyB@P+FW$g_C33=x4>LZR|$Aaq_2uR5802jFfsJ`shaP{2=|D3wKnPZGQOR#WNfKG`Jb;9Y zImsX)&|MA4-}Qo!JkM!f6ascYxL$&Qtg-{hH5fp`6i)K85U^*$^@mTKX+qGDnU;nR*<;~Sg&>ZPSRe%K?Qkt5mkp(1mxpVSIE1|; zF7k9}1>t7RhJb_*vekEmfc+sZa&6Gnc8HTK29S{5BCZ@EsLHQGxRwYByF^^?3jsS! zTptL5=4nCRE^>fSHql&=WdIVgi^TPz5U`uX^^p*;uf?^TdMc&KWg{zu06V>3k(Y$B zVfUqL6@Y{eJ|b5L*yZ9{Ed=aoaeXWV>}_#gOI(|TfE_EY%|ejN zNwx?9yJ%cngkdQq$uDwFQ-W$7XpOEM-9Q3RG5RegefVmC;NZ5>Pb5ID_o8$US2yXEa zhaeyuS6EO0AR&8pT!(dmT{?bTN5mn?oaQJ5WQ6@_u0j9_+3({zCItOC$>&1AJ|ow0 z2&h}J@7#3)KtfD)spH}K<0Ocr?ALL9Aq4CXa-9+ab_2Oi3jsTcTxTF4t4=P+mjDum zvfwKrNMylTO@RK-t|8ag;t+NmxxNts_7}O%K|t9IU?b-NBxHw>>w*yc#7BH91d%Mb zC*!|@C5dyLyFYuoLBxGlk z>t_85mFrgk3E3Uxx+Vm|C1r747lICK<2MM% zhUVL%;<;2-vmd`V#^w*+@?E7l4H9)pFew0(NG({uY86oa7b+ zc1pu8F4sTe5cX`jTtdKpFV}4dC|_RwaTNhbcmZZ&u(|FC0X?H?0_y5?1Urgc6j(q4 z@?>c)GZ#e{kc53!E{ZT9K>-_~C<79(hss5f1|(qTnv0?hNHB(zP{aWV$TO!EgrW{e zz>X~!A`k4E3CdL)Zv~FKB)_=i#p^Jr?EVmixOCyXDGi zZn@U8?z`pwZ+6QS_Kf^dEesDV;e4cD<(2Vvaw@Pxfo|ZIdn?dpFU62AJuy*XD`Lq0JwYI+Y|290Lb4%#kYFIT zM9P|Td5Ju$(pyi5(4_60d%o_0&05La4sK#I-(CYxw1lnXR(cQx6uy*xokp5JcsQ9A3??J zM4r{|ETM8HVSAYcRL-v0JQj|+L*TJa)Dr@aRiWMxcq{@v1A)hyPhSXV2CBWpp)KGf zLqc<5t$K9k24Gvo^`$fSJhsJr1PKOV)0bz^X-Mz_w&&fGya<8E>dasWQuqj*eap+_ z*^sL-BzXm!$7)Op1T#4e^^f!yjD6Cs8mC-$weR%yo!y(JzXRihiwSkAOTfZu7PNRDUitJ z3X)`ElZz1~n2Aj;ERY}zTUB?fZ$t3AyI>v!{oDob&=K5bRPJHeXuV2bSs}@AY;wVh z1gY36un`iBz$O>0NH7vxOFn`sKMGqHcfn`~G6oX4K1GL&#pba- z^*RLQ*(x>Zcx-YtiUeuc9(O+?9Rj%;MMq4))`pLuv*5sn#V4_{LXwHtj=3K)34-_C z1(P9=i%*m!1DnU<(^Lqk2Wh>CPVF>o4Y}dz)K16NnUBb%>wg9$a%qVUc>|lr($Xvl z%5WO$4zsbPxC`Edz+)w84g?(Vsx2+O1%b!9(Od|c%9R!BG4rv>Wg!x%*yOSh2^L_J z%R(erh)u2vkzf%vk5!>;2;?FVb;EbD-CYEtR$PotF8a{borA3^HyR0+V3TV;BzPa2 zT=OBp2iQE;e3n5Vmw0G|_z;_1;vvCD*dC$lUprYOS&l8&U9bWI{HGs5qsl654tGH= z1ad`(j#!ONuIP~9V{CFohXkKs3uGI18k+L3$pst|II+p477}d7CYL-&up66PzaYVW zY;rAv1c$I);cQ576q{Tmpe)y7v&(fNlB~lf*NI559-CYzBEbf1a-E0-8?l||Y^dD% z*yO4Z2{vJqt3o8$j4fB3Ub~AVTd>JxArfrGw#eP;rx3_xAv$6kHjh=I9T3PxAZo9j z*yJJ*33g%onY$G=;2s)(;9JzsFG==d<3%4A3HD*5=O(R>P#Yh>*34aS5CXZxLq~ju zjhv`j5;_Y7*yM^12@YfXP(K3CA0#<~Et%8Mi7Lb<7jQ^$3|oKqBR+?~V*%#`1aO1u z`5p(H!RB-qoP%J1yWl$-e|ot~e#9a2njniOvB@2In_RCU!8O{r@Fcj7&11dhcL+{#eaYYrY;tvm1b<+I zH%9Lxe*)}(;UBpgLz0`=CO(V@Pldn_P?`!9UpKVhjmf*gO_viXgavR594J z)tNgG(DSCgvT_?lefJ`&Cl7Idvr|js{&uG(aDT&76S%+SsR?NPMXtS2F79u8(h+ux z`zxPX8u!;eHG%u9pPE2>{nNdu?r(r(rBB}{!{l#PL#r@?_EVYDLEbcFbx@b0~y$kAm>dVTz>Ub@r?6>hk zihoJ%RnQgp7gCC0AqDSS#_Q`F%@e9z?CJAEDdof{K{qao_pdnq=au@0%K!6rweJu9 zZ$2Cp9qxaZA4KNND$Gj+>TU*9aAwx^$sb^D>TVrd4Rd>7Y4kiB>>fBvE9VrhGN z(x&I1;%a+pde0BF-}`334>jETOx^ON_AkyZc=to`#nTL^KlvJqtqcCYKK~5=x3*V1 zEw1vc^Tx+jmd0rxjP<@vwa1y$JjDrc0eLH{{hQKbvE4hR$HKc%-tDL7{>^Tp@E&NZ z>)v)fmi)by9!vS&%B^y($*88(44UW9NGW55jg&*!5tnGtfF4WuKK(R;o53il$5Os` zWjw+Oyp?$-W_3Tw1rx0{zx4^OXLx*QN!C$QkBb_V$cj8 zfgRp9n z1uhWH2;YP}a+#50tQg-H)MoJk(qbt4qBr@h^rh(luY}ZJc z@^4CyFdUBtBtMBqOpb>ZN{{#)Z>7g8-QG%%C>?Jl$K%+wx52%&9`QWhN{`qcZ>5YC zqOcxsrAN$z&s~nd_$X^^!jrs}T4WN&Ka0yKsYmRSchW0dT%(j8AyD2aJtC-}^z@T>ghF{IJmP2Nh6@F;KPA}+2`N*N`ky~XdH)FU#> zTj>#T<*oDx^72;ZazEOBw=Q?*pB`aZ-bsHpNGg9=PeyoAaF%z<2HXrr$^#VFq}^nU zwB$U|loY|`ZMWIKDR2FoQU-<{f?1#WXEG-xt#_s(KunJh^H$1mG71gzR?4U_FQq>J z?9Z8cX|?&M3^_Y)U>BhwdK(!jd;ObofTl$IYhN1hE-#G>TH71hb+VEo%e+&1#G!dB z)4fxA%s=JLz{su)cspZ|X(-z@QYQY3(tgq-pv}9y9^r4^N{`4lZ)GHBdd{G@GP>=Y z(Q}zcyqve)XucAS?8?wPiiz`1=@Br;N;&_O(Q`&gW$+yZ&T&$nVtPc?c`Idvol!~z z=!yB~RRg3&r!c>k*dct&{!L=&kgK2lQ5oP(aK-y^BPd%E&-D3yhUfI`zm>=%c+|V1^iXj( z*3?@ozlvd0BKc7bdKb+*#JjW-7qAF`V8cd7DcYnKnwYpINb9p~Y<6rp2 zw>I7l*qWZ3u0C}qY|UfI{`AqAIq1fnddDYNvEL}VHFa(Nn~wJ}Ig(iJ)ty1sh8y}? zuXRy3C?Sj{C}~W_eVzKk@0@J{7bu_bC0H< zj0$y@cT}$#q$W73hpIWPI|eA$`wu(!ht>b&aD}e+tlIdY`T=vpOPArNk&W|06Cc~S zFg!d$J>M%T!I={sej-HeJLTb6XVRwdtXgWI64g?Dv*yF0>a`c*DygX@ng%%2hJ|N_ zId^;&o={dDoZTu`ZTwnn_WbG(=cwV+5+8GZk{LdwteP8LFTt7gefXXrbw`INhg#S) zHcA##%fr{*g(HWV$`}FV`r=9Lr|7hPe;{P#~s0;`NLX7s9A4Eg{UhY zuNUadtlO@eqMlk28|*Bb6uVkcn?KPmQ2lC8y?50!pX2ZylX3Xcz4b!W1NEZ<)zSkW zM!W5;ch#?XQ}yV+dK=W#*E*%CN$bL+)U`HiNv)oU$cWBi&mRX-V* z*vOgmcx;@awrcqB9%tjmi8uY!YoSqn)yoN;GgL=|_?Aw4Tqi|QveZa5zP38>omi`C zEfdvCJ+U%8Q9ZvWJXTHps9u~idw6^`MLn}Vv7CCaWWC{PgEP{L}f!$*c!R+C$G9;`a*hUcjD+ddqmHmVoCT}}PDURm|S4e^uIi0IhU&NUV5 z?Lp$o?e-|~>V-|=ZSmmyv>IBaQ$p#7UL0w|9r{sq&WxxA>YW<(%Bea1gG#AuQWN9+ z&bPQfzWtw#Z#~R zeAd#eL0NtlwbRX@SbKQZsZ^pj4boSWUakC?4yJlUPRWK`hR_R&SW){rc zIx}r%-8&4`$BV|wBA1=Gh)?>+r==7G%RnS(Q1WQJ!hoi=z{(zNJl z;nVV`=1h&6dU?v$DUGMNG72+tGg2~cPF^#4)Z{^vEt3l-4W1M~DRxq&NtY+Cu}^F@ zF>vA@M~-8Zqmm=Qk#ApaPqbIECr`MRUXVUFJt@6adO-TjwC-uA$M+q7_VpdFXTF~F z`iXJb;|7nrHg@aS%&{qBlg7r5T|dS#CUH#cm@BUxcrE+2O0S(Aoj*EfblT{o(U(T; z8MRG0Iyy@y8+ zzd7vku=T^Thm9SUJgn8Q`ol^OJ3BOgXwJ~yL*s@93@uDqpRypOe#)95^@rrX67@>% z%MmXx9h@;ZcJP&#vR~@{QpiiL7YkqP{d{tAUXVo6nqhX6|FpjC$ropXGfP^tsvlbnpD$$-NVL*YAC;SAMU!UID$X^epI^ z(KEScY)@B@9X;mu=-Z=lkHYS2x+iq6-~E^J>Z7-sj#by*YUffv{wKDA{aUyDZZo?D zbSvmOx9g=Yd%7&>64K>#Qg%{w(xuLWI)`_5b=ul#X(vagR-GDmy4mq`$E6+Tb{y3) zwqxmzmlM|~W+!$}Y@8U8c>3wAr&FJ9{B+pUH#(f{Ft|r`;aaw+m@k_*Am}sf4HMKjmtBw(Z=uscn0=jcps=_Huk- zeBb!`@geb7o;>m7%qQcYJl`g_O?I2KHc4%w+gRG1Z@r`S+}3?tS883*YI&=yR+n2A zw#;bRqUHG~0-i{FJmK;1$1kZ1XVW;9Q1Ua7gI zc|qKQxIuB}o253hw`f-I$bv@(J<|A*N{=jPTB&JfY)I@}+bCPKt&%OFi7VznOnyv8 zOjL{|W>4e3jW0i(^RVOLxQD|YzWLCehcX^=HM-O&w^3%JghrJc-HtvO{ciNj(J|3M z(SI~t-EdaJp$&U9Y}&9)!yg~q@Zhos`#t#hgEb!fuEDYfF%2fxuUvmqy(RVfJXx=K zy`Xv%>xS0-yG~x6Id$6CIUF@Fs$W!O)E~7^)?QM3PVEM@|ETqKtxdI7)EZE$b*-RU zwGpOhb!pX;3I zyt(nj#)OUG8<%fL*>HCK-1Vc@hp!JE4k})Gjm(z zu2~he>Y9D!>6HssmR^~)qW6lZ6*rfkULL=E{YP^@O8Y3_BgcoyA0~Vl^HPysmM_U%(sxPYCD(E;KalW1-~+Cj zr)%!0nN!nIGqvXF8u>Nm)@V^9q(*jla(H3&?COK7*RNi>`i^SZ)n-<+r&Q}(Ew0)g z>w0U7HPISoEp6QqmJ`-HEG{e{ETd{d)wrt5tBk7Bw@UpgAyv*+-cvcYa_P#KE9F#* ztyHPf`HE2$Z&paD(5ga2g}I@lLR*CH30WG_I3ysXAUH92NBPY1^~;BqzY%mcXlc-( zptzv?z`20|fv3wwmn&WFTG_&~xn&*pvI%9w%dRg|zs&m5iKW9zmo8mcDy39nsTQTe zOI<6OU(!)BzGPueR!&MzK+gHag^SlL&R9HXark1_duQLvelPXC`1f|aoAGYKyW#J; zvd?DcWM^fkWXEL(WM6rw?>kZNTv{}0(V#`G7S&%=deM%B84D8@HePsn!I}jb3sM#& zE(lq0Nww#y4mDnlR!gfn^Lx*an;$m+?7ZlbmrCp@kyawUMClTR0hs}%1G4=y{0I5R z`^Wl+_*?wX`*rs_tz;>wN|JKfQfOIYNy8U#5-pW1=L731m;EV(pi}Sm2{o|iXS~m_ zhVn*Yw}laq(Tw=#fSf=-#iFiD?>O#1`GEQV?nDod)^=yit`4?G?amthma?VvZ~YYI z14=P$0{m7|Xf^|`Gi(7|EFm;o0pBuw3V4%Y8(=oWcEBu#9e|!%K3Ll*+6n5;x$XjV zW7rMo%CHBJ#IP68iD4h0Bg1|`BEtbd2Zn=yb_|~Z#+Ja^A_Y7Z9RiKv(iH%n=i?3o z1~ME03}844c$%RQ(4OHKAc5g?KskovfB=RQ0Q(JY)RUm!8NL9_;PRXTOlLR^$YeMJ zn8xrWAcNs6z+{HAfJqEr1I9CaV+Xy?bPkZrr8^Jk&u{_o9K*MOk_;CCB^WLN=<|D8 zn|=rQgDdnsU<&8+10Y=o{HWq(P#UX#1dL<&31DS&KLg4$Tmb|zTm=L&`~oP$@GGD+ z!!>|E!*zfkz^)bbH;}@r-vLEj?i+yH41WMz41WUtVfYJhi{U09jII3*sKjs!5W?^e zAlT020{z7nZUg>gC<096CbKr7B#jVc1RFjN9;VyF!Gn4t}O~Q_>>{KroY{?k*N_>8yFq}e8=!G;1WY)z_$!BfC~&w z0JPGpRmcYTiXj&8B|}rdX$Jcvpi@lE0G~6&0SXzK1HR$*c@z-A@ED*o_rMkaS`^lb z@HpTnh9>|&GPDFxDC>h1TUOKx^gXLu1HNHs1NfTZNx&I~c)%}QgtmaI3{O!ShIW8P z3<-c}hW3EErTG5S0aS-oPXiucNCfoe>U9KkW9S6v%Fr3mg&_%$#Lxv0&(Ia{BttiV zor2)C*6I$Tw+1xm0l3W26L6lP7vLO2Z$NK`K7bos>}LSKGdv5p#?Tk=D?>j!s245vsOQ71U8VrbJ zcp1=(i|`6y0^1$}7|oCZpomK?*P)b#VHlt%!*Dn@H#^V-G9b1O@V3*!&JaXhG~Ei44HsbhUtLe3^M@3 z7~TL-SfthpGXW_Kvj9T`*o$U^=v5l+xHkb5=AuCsU?#&Hz!ZkJ02D~09riY0GQ(T| zg%WF;d4P!w^8x7$DjmxB z)L<3ee=?bJp_<098ZedNW58~PPXN0Z)&SNpjsSugjsi+C6aq>z90QbK_#9vlU^)(3$8Z9$g5e~f9>W)a+6<=vwHQtV9$+{F zsKM|hAe`YVKp4YW8p0|weGRC{@C~2>!#O}G!+Ah+h6{ighHn9l87=}IX1D}+h~YcH zgF4{;^F62mt9}5~XSfWAWcU#f!SEBHCd1Ew#~H2wS}N4B_)M5Ao5XJB(pd-UyfOv+RfF~LL2DFj)pIe~TtojGgiopeF z$#5Icl%WU^%WwzKh{5sz9<>-0Kz9Z|KsN^e2XO!C$`k-q7lsmmB!-fJP7I|0PcW1Q zJjzf8@CZX$KoCPYKp;aPfZki6E6-jO1nSGG@_=UkKsk z*BBlE{K^mk_=TRoHFJ?5iUZf67T`yQ+JHe^gebuC40Qkl8R`Q38R`N280rJ)B~i_E z1HeBF4?ckV4@Kc>s)kTqVu%J@WM~ASFkkJkhX5BC9tK!AqsD+ctcd~8J8xQ=CIAWr z*1!h%lffPf`h%${fZprVj(Y^~6GJn=WrjGw4-Cx#-!nW4_>SQ*fWn1q0l31N#{uUx zp!?4gpmVHh3HXMg72s=z)_}7NZ2(^}JPDu(YOUDufYS_Z0rYaTrg;i*gP|SZbM${* zl>j=%s`h|Fh7N$E3{L|NGb92E7&-zDF?0fa#?TqCiy;Xx1Mi5|grKMkz@EX>6*QTl z8-S(@+Hu_hG-J`A2jEMFo`8j%rWarVLvMh}&<8M|;Tga@hG*@dxlDZla~S#ovKXEN zyvfiXFq`dc8yBS^w>|z)X*vXIv*ujtv*vc>gu!Vt6>m~*VAfI6(z{xP_ z0lU9tBhzH4)-z-PRx?ZitYnx9c$;AwU=KqkU<1Q+z{dyvXo2;01=cfI$rN0M8R({IL|x2MuJE3K+n!0FcbE z5YV4t5#Tw7cL4nuvH`sr-UUo#cn{!USPZb2LH=3~%mGbc)e=BD!~1|Vh7SPa8I}TG zXIKUp$M7LwEW<~DF$~KAuQ9Bk`_Ck%l~CQ{k!2O&Z-!jJO@`HgzZgCS{K@bMfE*rL zh1LMb8>2xUfV?pptObxuK?D0b5cy^_S`X;V<=FsGN(;?KfQ7*cxWj4k0Ywa(0Jj-7 z16&MS0RJ#-1$?Ig-G4p>U1HTXz(t1bfHMp`0H+yt0!}gP0(`-+8*r3i58w#HUI6** zw5sj{z-MRIX+P)+s}2BuW;h7=iQzNAj|_(Zml+BGKQJ5ye9v$MaERe3;4_9ofc+rT zG0*{q&jI@xjsx~FoB-@)I0@Lp@C9HqpS)9mR~b$NMlzfMj9~bZ2C7$>z5=|=a27C_ z;cLK44Br6yGMocE%WxiWn9FkkP{8mlAe9fh2pFyd?mw46!&vnlU?{`)fFTS&0J<|= z26SWi5zv+4CqNg5p8-h>R{)(Dt^%F`==YyrKz&&CE1(y{H9${>>wq2%zX3Wj{0>ND zxB+;Y;SWFuhCc!A8U6w!$otPtP&-!r4S0&-7N9M|KY(}!7vM>T+kiF~MDN&(^+N&}iPlmRqiC<}-dU@s~M zdW2PhfTj#VfLMm|02@Ovpb0|=Aci3n(3qhD;9-V}fQJ|=0qD6@zyDMQ9VDWgQ58TW zA6FGno`=0KKoEl!5XevsP>!KGAb=qp;LlJ4;KxuCaFpghTCNX(c5@LT0QAVJX(9nT z8EOG`Fw_QYXNUr9W2gft$r;rJlwha_peK6Gbo~h2f9R23qXtkNV0aL)pP?aOA44=? zFGC~19)^biPKJj88yOk{HZa5hMsWk%n}Eu4>1=>946%UH3{3&07#;zfVsp&^UogZ0 zPBJtHoM3nqKvM^;s*eF^>QIx~zo-R><_?JcjmwH4Gg9pD;WP_?RIPu$rMG zAeW&N-~n#N&H#H&rX)}ehAw~*hOU5MhHii}Y_2xI}Q5SLHSJ20BUj1coy&&=h_!gm!Th^4#RVRD2D!k+6>8nS_}gKkqiR?uj6?J zMZo>%dC)kWEJcF=0~lTa)aOJm0_rim1c+c545-fVGN2m6D*!9Q5I`713ZN=LzyAyc zRbkaIzzi@~g-k*J*N6+1V!Ee7_$GPv% z`s`<|^{lmrv(K?NaEY&TAu!(IBH&Dii-A+v|K~Ct1r0}hV^_dCo7^p#Iydjgo_umHHv;Ypy_A^Q|` zuhY}OJq`|6nNa>6+qt-CLLb}=v%@BmIL}8C4pA~eespR3SgGL|4HaIXr>pv4!r8H z5?Jo=2C&TGP2d%Ww}7P%Zv*<`D+#>{(DynCyaVWquLRx&vQIg!hV+GIQuH41ki+}H zCk|_Xj~zY$K63aF_|V}a;C+XWf%hCf0aiPFs@>7MPM-nqID8JQa`*yx+u=*#Er+jw zHyyqP-f&n8taMlhyza0bcr6DUe>OlXyyzR?C5LZ;7ahI>{^#&L@R!3z;7^AifIl35 z1b%ba1pMmo6YwLDJN|5je(<87fsGDZfbShjfbSf(0-rkk0({``E3n4lH$dO8B*XeU zu!nEre*iW0jQOPKPpF2&UqE$-ZGi5_l-T|T^ib{u{sAgG{0mfa*beAkONs4&Kt+cg zzz%Ousg6H=obsCHet40rR1VOWK?#%x^kq;26##wTl0Zd3-wY+N3oy{35}rfrgH!+EAH$dMRC9pf7?~D@22lSm$0yO}A zXOuuq;CP2Ufa3)0|MPb22_5T2dja}xDOsr&ps&sns14|=vjpk@XFJpd&T^;+oas;> zIK!a|02>^-17A7x0B(2a30%4J_|prz!i#zXmpk+UE_3J$TDP6KXm7!6$SFb3%5a5~V#;S69`hckh0K<@Z+7Szd$ z&IS&0I0rb;;as4N!&soT!+F2~4(9{S9L51n9WDSGJ6s6V-MLj>1l94Pi-Fn>iSR8x|z_SzS1n9k;80YZ--)_p~HPZeTO+fJ%_n~egct%z8}y}AQE^0&`%%| zn5W~9e)W*hgA{FYcnGNJ;T{HRI6MMWad;G{J_~L+~TkdxXNKUFt(C^ z{&^KT*NavF=Qz9u40m`PIN4z(aFW9tKm%{-o4_~Tp0|KWZhITJ*u>43~=}eILqN!5C4v>qsO*Z}DF;7Rws0rY$D1il51 zbodVF@9;g)&tW6b)8Pl8i^Gq=VLZW!0#UIe>(pB>a>HRpB+kp?;Y}*aZcw@4p{F{9{8U_1>kRo zioiC9U4XwFDgl2QWOr1C{_vtIz*dJ{ff9$Rzz+`9fQ=5-fpreM0eg90cL%CDNqRLP6>0CsWM6R7C07f`{W7Es=yHc-x?4p8dtsSE6Is0aM!P#^eZ7eD?q zfVOy1L!haL+Z(9k&(B4@Lhv>-~fkSKr4sd!2S+>fW0010u3Dw2k!7D^aJ!i29vG7 zKX9nq1_0SZoQ{AFb{Gg8xKhY0oiP z=n1D|fd?Fp1MYV?9+>NJ0x-wnL|}%)Nx*c6lYyxYrvOtNh5@(afa6aQr2k);G-x<5 z-(dvsxWh=`F^5sWJcm<(`y5UKiXBD+vmM3&vm8zb?g4VgpEIDlz35EfE{C&#mmSUq zUUE1Gc+ufp;01@V!1E600na*|4?N>A4p^xFKALp=0_bUn3xTH`E&?8OxEOfPVLY(f z;S%6&hf9IC94-UibhsRN!{Lf%9Di0iT}jcS4p#w>IB1qU>@Wd%$l+?>YlmxquN)=< zUpib1eBf{$u*M*}<9g_QFS-GE*WpIsb%&dP*BovJmN-lT7CYPmEONLNc+TNAV3WgS z;5$Kb{J9vxp+~DvqaJ|DLfc}qp((Fe8{crdL9s?#iJPzo8!zU%#`Owad;0fR=FIoUx z>F^|Qg~L<8Hx5q&(;OB8y8l5E`x!v@KSu$)f#-l@6VUNz5p;|fEd~ZVECB{M zJP-7DcmX)v;YDDq!%M(f4le^^9F_v39bN%W(ftpS1}%e5_M+v$Ne-_9CpxSEPH=b) zINsrP;5dhsz<7r@fD0Vn1jaeM1!T{6dK)^=VHI$u!#ltk4(|e|JFEsqI=lyraCjdW z?yv^9*x>`IFtZA9kv2J9DV`1@7(l$g)(0B8*rM#@4%@J ze*gm={sj6u`~~!O*aq}+_#5cx@DI?=;a?qp+B$8g=un6M0f#v30QPez1zI}fHRq$O zLph+6LwVp}hYG+!4i$j{gY1r7paZ?A641t>GSJ$g3UGkKu0TVFsz3vWYCtQ8>cIXE zy8-(;><;WBNRB`GPzx`r0W@={2{d)s18Cx~C(y`YFJNznTEMOjwSndib%4eWb%FXj zk3aRGdR|l?sO!)GsN>KOsOhjbP{W}SP|cw+P}QLcu)U(~d7A>Yy`))ljz6`Wnp3ow zLknO}hkbxO9QFnB9a;j_9rgpNIP4Epc4!6s&zo=n@P|XTHMG0?+5o#b90*i$C;)bG zI0&fda4=Bb;Sivl!=XT)LtCKKYi$SYNI=J*_Rz0h)B*U#p(F6KLnokuhwBXd>m`Q) z|2T93wmEbK{&MIB{OM2#{9e(IKN;vZFX|3_>CglC$e}0jwnH!AZ-?H%R);=7i9=st zv%}%QPY(Tn>?WuF&<_p+fQ=4E0AD!_1Xem62`q9L1bpK#7}(%21X%BI6tK?W=q$9> zX(;fu!!f`bhhu^F9gYLub2uJYu?3|y2F*gYYtZd%N#U+UU8TJyyS2-@S?*tzzYr& zf#(gfJFbPE_M+>6`yH+a?sB*RSmAIZ@SMXQ7F9?}BD}(cQp3 z4)*|eJKPIQcbExGbC?B8ahMID0LRWjyE5HPYWxyp4%Ylm=UIi|6SOJW6cnuit@H#NeVI^>i!y7>MWT!Ww zlN{axPIP!180@eL7~t>@uyYUgE^w8XtOhQ2cn`S1;eBA7!y4^B&Ug9%813*OFw)^8 zV1&cRz)=pL07D!;1qL~M1{~?|IWW-S3*d+xaQyia>hDEg0X-eQ2HHBT1x|BV2b}7# z9vJ1Y0Vs0#1~|dtTi|$y?||cg-0|mo=ol~B2n==j0XW*>N1(gICZLPMPrzXgn}LoF zKLZ^cwgBxNN`Q7dM{g_C%!_^jj&=AI=;!boka74OD0KJ(=-cl9(?1j)0~|_$Rt|YB`0(LS4%pA3JkZi0yQ2cMuNPGW z_Hoz+XyH%^XzoxMsN+xtsO_*TP|Kkzu$MzMpsz!9ppPIq{_FO0f|>N(T~>h3)L)PeT&qPoBy4)uT<4)uX54h?{&4h?}O z4toQQ9U1|R92x_AJ2Yv*@u#6vQ;HfmGy^I+GzV%rv;guQ_5pTx*caH%p(Rk=VLzan z!~Q^3hiofoSEmDj$_}l8N)By+T^tSsDmWAXIVJhMTNkx z4jJGVhwi{uhaNzQLr-9fLoeWGhu*+uhd#hh4t;^_Ca1%pA07GuKREOUHaZLdzIQkR z_|9P<@U6pp6!Bz_Sil1J4*_cU%K4^rDHt(+<}HPdQu%Jn3*f zu)yI4;0cEtf%y(M0gpS}3_RvA33ybH9DidG+>Uybl^URJAh*L|GDA66PoQsGk{qRcL6gU?gs94xCgk$;a=cwhnc`#4zqw6 z4zqzf9g21Qxx?u`il#fv0j4?31*SUO4@_}*0Jz;@9x&PALEturhk#oh9tLi4$UXv1 za(WcF$>A~JMu*3N8yw~X*E>7`T<5R=xYprGV4}lQz%>p}16L=YCTg3kA%mx1#fmI7lPUIET^ zSO%QqupBts;Z@)ahZVr-4zB@Y99{>qr#Y>JPIY(#80GLLFw)^IV7SBEK#{{LV3@-@ zfbJKY9PZx*bW7F*Rs&x;yr;dyolfrqcQ~v8ra627OmX-SxZU9+V6wx}Z3b@YUYv5XkwZKG&b-*w&8sHUJYGz5%WR za>t)NS31{yj13>4`8 z*GbV9XskmCaG}Fi;39`#fSC@z0<#=`11@&>9T@NM2XKkQpTMOKf9d$MvkBWMy2XqB z25xou2bk*cFEGPlJ22njf504v9l(7KrNG<%Kb!OR;h1ia-BAu&=|$y%*BvSVuQ^l% zmOAVLyyQ>`nC(y*DE3;bsKjAc;3KzH1>O}T$De9YfByS%2Y$1=?^FRBf6bEpG!b*Kw;ai|CAe~2dm z>I0n}8UURf8Uh_1_69mQG}?#bPkX1v6t#0`0H0IdHH;3*aD!eSiXo zeSrfVS^{kxvim`;o%RO~aA*bS-V;gp4ghqAi3C~$x@STHZ2;XfA%O#d-5A#d3V`Yk z2LaU_4hE_upySUWP-QPV6wrT^Pa?Dh^xxbQXb0%t0SUARbnAcwIsm$LKmr|sh7O$o z{nz-Uq%)xZ4WGba0RJ04o1-p}ZZVJ)bp@Jud%6LQ9SVU)4jEu?hweZ_haNy3hn_%f zhh9J}hu%PTFQ-0G4Tru!zQf_b?hgHclf9+=fs-5t07p9<0UYHp5NPFaB(T53pe&?Y z3?v;N4CuxN2@C;rV}k^a0(4`81daxDV}k^S0^=Qy0WNkp7P!daIN(Bu&uT$#^DiQsKcW`#^EvG zQ-{ZaPaNh0A3Hn&eB`hI_|V}=;DZEo{CNsm<3&#c?>j66MmanKjC6Pw7~$|7P}g(6 z2-xB!i-C;}OMveko(I0$dHi_+`qqnH1io>23E1H9GO*rZDX`Ar72pepWx(eS%Yogh z+BAC=sNk>y$d-3{4JzmGI*{kE5-9cVy#X|EcoV4a@D@=M7!hHtlh>^hOfQ}dmd;#bfk-(RLjuAcoe?63wM_t}MBU7b%#pz8ecGbrk zf23I}{??-5m|nG8C4bO&X}P+Ip8T^dQ5$bB&2PAE#*j+oo0osJbjGsX>NT%i?uTDW z|1DiB@s!TlUQLpZO#iK@zq;iOHzA`qm&@NGF*vaAO^OpyuKmADHsZ>VmJ{|Rp|d1w+)727>Z;Vj;IJ*QjILaFj=4Q-hpAP40jSCG4LK6IRitn40oA9cL9j0z8k}88SXKI zZjTWs%)J;&WteG(x~VqsS#(B04Ggo)psx#JFJ=>=NQPoFoNZNrNviL|FjC=BNzr@$UbU@ zGgFNm*o4yzcFekwM~r-g>AI&!oL~b?-$A^VytHiP)!+1W_%jk&r1#6|+2k%Qnnqew zaJa3Y{~fMCte5D0OFgAAEy&X;GZsrt5wqv7rZ{-%7_WMenPPSBq9C2nBJ4 z15N+ZDt7+~=u-*AjZeyCs2932r@N!HkeNmCdz!wTzjtOx_4lCQHdatdW2(EGu89^W zSU1yk8S*`FlE9`6$e>b%i=J9tgURqQ^6VrS0 zcT9C-({-GSnQMctR7+RKcuV56HvK{EJXL`g9AE{~Vg;>C{|7xbbbr&?Xv<`%7P>mt zBNeABx-!k|w~mp2^{k5(XtKm1ILvh2N=Rer4ee~YHm}%$z0g(h13N3o#cyQ#=LE=5 zrbYE0uUnQ)VTHqi*yH0&*W`*RJ=XM6{4o>9n9k0pOeQ*^tH-@l@jIHH{VLU>4pyK; zvG$8v)YA5*>s~d=gcj*T(ba+1`8!U!qfOWTLml8P@nZ&grf{bh8r`lv0p^wWy`KBZ?|mfF4tK6sh0NnCiRLIPEqtreo_e=(-g2FNRA~ zhEe4?bCBUrqH9(ZVuApB|*mMUP>8tR^`K9}~D2_e~MZa!egFl;hDl1TbvZ&%SC|JM>nvgNj zW#~_%>kK#sx(uXU5E;hZ0zm-vn6a6C7@3i=?Ux=Pni&PL>s(Toz2OpuwS*05tNq-7GHb^(U(avtR z#o;ZfxY+!otUsj4* zM-~5zlEJJ+4Z0Ownb>Z+uW*a$Z{pD;a{WAXZ8a~V74XucIAcv8#@{hR=bE0aO9Zu4 zi&i+t3f@PLnV62Q20e)$$Np^dD??GAWPS~0%+NH`l{w~IZu?WkGp*ni{*FDEYWmWY zKE?F6(3J@-igUB+FY|YdbCc;K(ErN>_1|a(%PEMH>nwDo^gUXtOz@Uea09xAY(}mJ zs5$+5(;J}2j9z8>GJG-qmC~~WdWnMA(laSg#V?rd6`z9s1iFrZvBxKy{wT&c1Xrj6 zYiJyT(=ERI*|>RJPJuSF;Z*Qnit_Tt*b2HQVcbvTq0hrV0DtURDd$(xcf+qt@Rnq* z8vX~-b-y;tP&O&3Y6Y6T>Y1;wtLeWWWP)DBbTvL!T-o#m=rN;}OuwHvvBSIQzDH`& zTnb|9Dzbula0`0uaRt+Llesv?<%2(_x}526;g4IB?uL6m@#kbIP>Xm=GEtiq9-`nW z>w)XFOxLWA8QRNq-4-r3Xiw80u=uQ&#NWeoor|ku$@Ztsrlu7<$=@+`HPDqIE}xc} z6Zxk9N}vp7S`=q@(>1BpP%YATGhG#j3}y4GTY<(V4#7U?4^y#D>ca|oElfXwpmCBm zH+>;`>_9Wqf3t@2mNckoqSODHC`z3dG_e(wy4aw`rYmi6(ls(&AN1l}+1vEv@yCWX zMAr~&ht?~}KYu7i4Xj`uf#NK!Z~D`CV$bTCu8L!Z>YDyGdYp81Odm)b??6@+A4b7r zwCF_sjxFtMIz>BIkiV1Z&+&I`P)E~s`9hiCE$LVX)2CQNU2m`Z9;)I!Q8WZvR6#pi zVHtnNNz~T#2l2-Y9cucs_+x_(L4Sn!f8x(jrbY1&HhqZZzo$Y42U&rJAdY=s^v4Ob z7*DLAkLf3&$ISIMUAG909qVQKLmpq_uZnwG!Bh%j>I%@+gH`BpEDtnYsg7gc#`M9& zRL3Yz;uj#*|XINj0;`Bh*Tv^25${fXsKEmSv9sR2RL@QXq-!Y}bO+N-bX6OWT z^=xQLKi>4!R1oLNai*)sajQ8NJ*z;|DTrf#jIAI&4nYyRPC#m-E7iOuJ=5b7W}@pO zc&tFrRFJM+a_pF%GEj`p?Mt&|#%zTZXvY#)&=U)^g07jx$*4y-r~=*kG>*NV^C119 zlwS{nkgk)`7L+B&KaJUZE6`^)^?{KFjpjAUzU7y7r7Q&QjB} zx?Yn@MJ~|GR?vqP;-u3fC=}?rRK+>?4dN|nkRE0sU2{V5UDv}N)G^&Pnug}K zKlR`pE8wf$GCPV@=<2aPT*ij#*%_)pH;L8IXi=OcrfbI)d#tB$cnAK=5cMyz0*!sF z;5l?n7G3|0nRwRpP53jEX;H<`n6ABC+|w;I{dN3tPJD|#H%kRoQ$5hLALgRJky_zx zbYx56 zX1U(WcJ@-KcN?RP`&uj%9@8cx;)bwHk#kukcx@PsR=y5WBY`VTG ziy8XJ^q+P9pP^8TQlw{Q=!3z{sg~-&8q#$q?^wZy7DzpdWB-Batm3Io;_I;~YUpOG zSM?_adbo-T^!-LmsUGj4iszfoTjHOBeiyo~9mS!!-Smm*G1b?Z{+(59ad_^673i!~ zW2Qx!=+41Lhta>vu8=p_4o=%r`XJNaMUR`=k)|&pX6)F&L}&Ydm=)q|&rqO>A3~2k zD>QvMf#RI#X1dO9V~RqI?bR@}vOojv>HP0s&^QlRsI=Lw_~X;HMS!rRYucIF>(}u9U`952FJ*G12wD zIFxz_j^dP9eBP3ZH=16o=Z+|)UZCgcXa!A{IL1d?hE7J0sXoGVU1W~_0j5tQa2$gE zrfbe6L#gpsD*9Q$I~2qoe`gKSmwa&twF6xjC??@oCU{HY+>5S^>iR)!&^@MKgE2NJ zd$$$ndYn?HMGd;k^d9^jE1qHc)fUJr*28twAYHVI6>m3vPAdMtIX#;^tuRh5JaE~W#UO|kT-Oj`Ku$ewDXUo$A4LYQW{fqhXs0o zK(V3IP2Y$=Lzxz3Zkp-3Fd2vPPm6yn`p!9|@&CgLwE4x<{cgIB1!@p)Nd;4_g6?n} znupQ->^5fNA@qC5gknekgXmcmJV-(8**sf8Y2MjV{(iu8?b~C9?l-+6dP{s-l!>{f z&*N{!_YTZ4ojI2+v-#ajfp$1*y(;z^PVt_zki6ZfI3!%y$@ zbGE6L7F$72{*Eb{ZMwcSjbo`joW3>Ff4z*8@h>h5FKx^BZY|2^zANm@yLzHU75#&u z1Vi?EYoadX$HUvg3V3Nz z%dWOS6H*mVFkQJ+?zPCTPcCX`A%Cku6es#srq6*D-}UBXLMa=E);9T}o2^i;9KY>q zPtHc**oLDMNsTof%J-{)Jkl_dnzhNLTWg;AjVXX{GkTQ7=4U4Hh z97BF542NLQch_nxZ^@!w9F3t+hCvjlih@)dj=?ZihGWg}6z_3948~9_!|@cT7adX& zhGJMP!vGA*!yzfd2^dOcIN2g7530ha`zaU-I%61ShSMpG-7LaTB*SnsjKz@QrA6Hw zf?=`@BQYpZho!3Mk720{Ct^^dWQe1ADuxmnMq|*78bjFFhT||aJ`BScGcbe7r1}gD zgJd{~0_CBtwZR*C7KW@0XPZIOA78Sl7w2GDAj7$4Sjc-!)L0B_WjN0a2c>#(K8E}* z7%Eb*k=XZG1l6G`&cskC!$%bSieVID?B+!n#>&u!2tQ(&nTjwTLvfczwe=KJm22ms z06v%(Q@&aO)V56+4#3D;vZx7{VJMa13Twhh#Mp!@F%)#ga5)A=7@9I%g`r4>(=ljL zv&TuQ@HR}qFjAC-FD=T$fgBUEGTdlYwBbD_>S`h^kl|J{%;h~cax#XsGTd$keesmx zrA1Xt!jNBxVJZeSl0$fzMoz;}D8qC!s23StS`^_93}a=uGepR!ltqRa7>Z?>fGFB8Va^jqDICDk7CHm@VG@NNJW^BVSx-!m_c9bWqA3t=g%2y zWmsT_`+1KOhJE{t{2mw{qd;xYdo-}anNcXiGiGSVd+f!t7{>O7b#A5uV0S&=bRL7_{}DnTqfvh9VhW z!LR{Cg^Fb(EW{HJWQN6v?p8 z41c8}tj91}h7D%8fcH4u-(XlO!?$J_moj{Zp+tu7%}|=^#YPN``(pUP440)M{D@(Y z44cfLd%DF;{)8bb!>)w>o>cc@9HQYWjwcIb*g}NwF!aO_6IDWlwK8lqgEpYp%@c`` ze>jF;DfpHMI`BlpZ$v1R;b#ie27U7ptM~)MSQ-8_gW3=q`4@&_8Ggs0D!QZ$n=!1G z;U5f|QHP}r|6(YWVY?Yrzg}82?f-|NpdW@EX3!Bj_M#L+kqmicQdP8PtqdAU>GDr zRSc>^2jJL-Y8bLIl*6E2=vIHR4b?F$kYRU=fG01*ON+Xhk72D0HO!#PNHIc94EX~v z>|utxQf=51L!k`2SsQ-mJwp^Ns$wq;V`Zpq5p*Fp!^;m@bubjmP}dAP5sBTbg<-V} z^{tBEQdKm-P%1+`i=fMYszQs}us4Q+BQP{Fg9aT*Al3LIPB}wYmsVZ7xXgmIR22tf$UhQ;KHD>hPnXjV(9{L#euSu|?3A0P*^n?wD4Q zk8=6wx|F9yk#$=&>1U$H9O>R`(odnn80S>tPp7N8b{TcuxD9_c`JI;z@mf@YZttc* z`r0(+M)!b|K8y;qXVW6T?i45eWUH9f68&;2)`WTjj`4MyIr(?T*ihH{eFfc&P6dq! z6jP-;)=57DW9;!ombv?=AU5=523;xdj-KJAMGakUamEn8MWUipf1YlZrwaB?RjfPe zRY2G6`!c=)@4D@tbp4bz4vp^3C%p=KY>;l?C;e=6+LbJ7kZ$vrRl(^L#GdJ9fYQ&h z6?jW}pgRUi*ViPf*md1jP`buG4vp?TD7`Yq*q{q7b9`-6_FDf1R-iAEG+DfYQRq_{ zO9`=|BTZkAo}pNadZs%ds^W`MnbU0&rB}nB%Usjk3c8tMc?w3;gPmhTptG1m1;?8edE2skEC0*D3C#9ceJ#k$(sg$nmHckTF$x^z0@ftg(+g(bpik@sH#7`A>-H_Oxtr&`6X>z113&@W7lh3>m4T|c9W9n;M@rH@A6nIUZ^^Q@pD6~ygR z_xaQc+CF2?bTd%tr&%E0l7`MTeN-w#x~-`EC!)t8(7i{qD$rM1v8Bbfg7#E#JDhF$ zsaCOPVivl7hN9nP$5hWWT@}ZyzI2rFU{e)D{bT3ym zsJ_LaT}g)SG+q0CHB_5vQgDYAXonF~J>7Ked15A}nXa$KV&Dp7p4%}jTR=YL@qCCmO zBrDK9IG3WFezWPvsOhs zJ!2f2i_ta2J<&77(4zgyMbfhrlmbeT2fEN!P|ws-*RQk+>Y&H{#1*D%hZD#6a?>?r z|MfU8?*fajttlH*I?f7?p&*X&`KD_>5i2;)^c~g#-jbe;MgNzM)lN0^T+@&JuR*z= z#GPXW+BL?l;B3=%T-IdNqST#by0(JYfiq3lo>6glOZ;b;u8zfwo~~P=s--;A^nZw73q20mDAR}Q?6IZXEUI{<6?9KEXoTt7 zTw{-io36uaoODH|Yx9c@9cH>Fsp9PXN!%$`kgKwPk0wr> zbSIdutt>Psn|C|~f0LrUSRtn9IMa1X6UY8o)3qy&4LZhj9c*GIhMKOSiIe*1L}&Xy zD%H}XYz6Jn;v^bkx=tL_Al{N88*I9UAP&tS)AvM=9XrzWVFYNI+yCVP4YUHKF1GXt z^lfBFHHOsX4KRHKddx(B)3v9IndoQwc0v{K(vtin?rS7Q2nywv`D)t`tF8c zO&^}hP&d;H%ai{MD``;$U9CX7-k7>BrfYu?GjW*d{L-b&F1)kp8iJV7PNvuN4ru&U zaYri{OhHUt2h+QuXYgr}zdiaNWJ0NqDQ#!E#yDo8t?Ala<6OxeY6Uvi)2!B_3Jx({ zV;p;Mu<06_n2Cc-*Q{0ryd`l8O#d5>LwR6M&*pVa^{g2Mztc0FvBU6)Z5b^DpFxe_zf()5$@$4R}f z>Dyu^H2(WofsRgbb82DwAawP>8(I%tJvhNCaJ{+tH5udB*EPRRxnhRupl226Bno2B zs#5R^dUYyRs=b0;P1lJ=3{=JRKk>#fu57w`92-;{UG?s+^Zz)OwX9$u700b$FAJnS zV;q{M=$b2C&@)t`MU%IQ>FQVp@o~G_-%pUr8sEN_A%nGBiYs8ng@gR&>pYIJqjCencuz1=Fjc$BdRY{kT+v z%9);3OJmRStl$qC5yw)Gxl)6aAvK8Al7{M8SkebrgIw1Gv!rVW6*H=*YDw>eo{8uG zdiItIbdnh-*B&%T8RFN5Wg4Uhcge4wybfsGUIO+5ZFzLUSiNpBoNnt8DmOyc` z=s|3o(W}tXm{L8$O#b)q#~q8Fb0&X>T+gT`mmxh2O}Zv;97;VgZL`k*wTFr+(sRsI z!TYHS^sqDO9a9zPIc%!n*D^ihcM_)Wia&Osre#z+x-#egHLO6p#@I7Ga!nO$`;Pm3 zJ(o@TZ&oqwP3D9i8K(y6|K`Ow`4)e-{~DA#|JMWXw8BtUh(oZut#Euw-_7*H2$Z2x zE!t|To30a$n9*vcudxR4miYJ7`M)NYj!tp1=<##vS=IkqnyjG5_Nk$oMA5GY6mCM- z|Hp_u)>Ib@3FKXL>N8bPYkQKu-^pt`8V-bJbJ)lsSDu zin^XXDE~3&VTiMNdP1QJv@4BcrpFjc*I33L=qZuvaa;6^TF;^k=~0r>HF=|751f>K zblHmY^i;}CN6~+6_pxVscBNK0)GDAjsXz}|RD=4V$FbCdFXh)kOBK6ckB?NU`=tDO z#-wyLx6U_W4oQvrkolCRdz8FPQ#oN`GFDg4GH`=u(&zd3w;P z^n>bwlt7pqBkS-F%o;_?UXwoUwKK2ipuImKR zzrb`2nZ{m=;y-A*hAisYc~)>B1sSa#kIv7WvvT`loRB)^^?t06ebduDN# zn!XG1W2PTKCllG^zdglW<`cPsyo#w67F!_wr=jRyWcn5=jFa~{(^r|Fx1?iJ(7&aj zD-)gkd%?4|!aNoE}5S*GhC6z9-<^sHv1R)`hPv=#JeS1t8S+-rIX zTHKr-M^~J;F~*^J%yb>rV+S5JoviREPJ(Gsims>N8v?y%fxO~-(3R3QG&CbKi~M(+ zot@LX}b2|F++EluGt=Y_6WK%@m8t> z)6HKY)u8jT6s%{36{(7^LsuqLv06%T($L8kNOL8Q@olEJM$h2YqK@5ax^_gd1GiZG ztTvlC1e2^_JG#bRivnGSu9O}@OX94))bs;V6;DG~Mhns7&|G5vO~hpKYX0Xc7;gmw ztOD=xsp#tn)Gt->#pW+X*BHD1W^`rlb%Zz>r=qJtI@V~&a(?Q+)>hC#C8p>m)61jB zNi-H+LneP5f^$vZLFDMa(c&D59y50&`d2#tSC8W)I>!S2NGnNEvS+f+= z47WhKWD+a55M3$NK_xcm0@F9+kDKvvR>A(M1|4g<=8!U%Y=3I$F;=jQ3gTun&MN4i zYG@IOhhUib54Skx&*q(C1vFb(@ob$yqMAM=wIplzgMbfMsNUTEFPFN(R-ljBv897dZ)p`%oTU0BbPd6B0>vRa(R5t_iE+lDD|4>~ ze{%jmfC7!#53CSpX@Ar8nJ@+#ZGp6X$DZ{wzfMY(2`!pihX*|labKPPtKxrXQQT#A zWQ8x$btxqd!D&{p_H=P8=wlW9PGxE+#Yx4zP0tWV6}#TS;(xFCAA8*13Ut(pJ;<1@ zKv6F={S_j|AvnPF=J+#ItVNmVX1X$+WKQF+g05De%`En;i|PBO0`)>y=6d6A$@*Fp z=P>i@zDqHqolVy#A!SI5{MjZHd_f>>PH}8nnf`LBXYDM|(v;rT^j`@YD>&5jeNr7b zB&TQddZv1Cu&tmgAaU$FnXaLU4L!*87FGe_lAaZqt`DPXkn0DUz73(Roqr@N>`#F* zu@Q5e)%%&Qbj6<4LjN4Ub~r64(;`n}^J`BRhq96R|4J%O?75%GwX_v_P!Pwm4Z601 z@9@S++S+s-I@tbH@vc^|fxly__p(5`78HB1r}>qkn7KOU*Tt#m-^2WxD{;tb>QqTB z>Pw5_nAI@-n^c2pTLp#q<6Ox%{}%ij0xjy;?xr`T;*3NV>ARVpeUU(M&sEAV;6I^3 zy3!GQu)}nnyTuBsTOgeqY6!Hbf@-FBOEt8L>3^Uz1lgTqQ`ri-+6ufSfhw7uk5OHu58saoeb>K78b&6Kz{Qpxc z(2nT86y@c8V!BSn;@E#|`q!yc=UIbZAWocHzv5S>m;9&a&i{X*;A09lrz+TL`fscd zho;1I^&s|mn^o}qe-$Ki=r7Ydqid_-Ez!3$X3y^WEdEWeW(K8CpqOD_z>Fv_z|36cp2Cc&sXYU{AN}WztV`Ih_i;$3L2`OvFjI(R3ZYV}pJ$eKC3*`$g!g zxDIhL|HaSdJ!b`NSs{+i>*(*Zf_A-ej9)Xoo&_RS(t#DGtH-gSubQq&8n?3LiBA8u zr;90CW-Dx=K^kM;k_uii{n=E{zDL)Pb+is(PyFAZYcpr;@?cyRdt^$$@%|M3Y6+EQ-NMKeIt5o z(7WjBL3``5H|QPHb@Yovw#sxhG!DT_%{c#8#X8rEWA+UzD0ROQIc{bfOy7_SwBGbZ z_~WE|5nYo`*A2bL%IMqZ>cCf;|1ouMS%J>aV~^iNS3`A`JO+Bh^paFVKeRX<&|4Bq ziz@!W^ajMqNYwbNV2u^5n7e(101`u`)T6^bZ$or-@* zHRy2*q@!Y-E03A3E1z*_9yR@2Dvm?>i0OwAzsxPM9=3wbsfr&mUAx%W<7d$|xxS!+ zIEU^eweS6B_@cDIgVj@23I{vlVJkafUK2nk)BM1)uV_DyF@O{tUVr zbZF8uMAH|VUON@%LG-M~_+VSX1D!&FTB<7@vBxKy{y4@s#!p)XpHpGX#7X8?L*t}A z9DN1x`3zb1_y66jK*xeO=}xpj+MJ?(Ci)u$(iM<6C(bZklP-?^>83xivjgN`DV;}w zGNE%itw4FAKVW*TRO-f9pbzlH9*;JCzE$9HPBUG5*ckuRtQF`wT}<@}=o*52tJnh_ zZ~9}Y3XU^flQH)ASkv|KJ8m7L(3QEYuJ^TIB`wOtMHIYAfv)Gr22DVJ3;jU+agU}B zNdK61VqH|C!TF}^+OXo&t|Zgv zN!R(m&Pvr|FSwP0Rp=VaSivo(KZQ}7pZh17uFX$=*Kanx03i<9SafwvC#z-7|If98 z4+#=`e2(eLP)zmNrt9oE4%u1g8p;Dw72l1nJ)@4ImWkZ?|6Nv~bGiO*;Qqfj&gWf*WmxP3Z9i5Q0DRiY; zSHI%W+>Wj}q$@0*q2&C3vK8o)Pz+SceG}B6d8r0fvx-+!L7a3|P2UH9oVJ+5K} z>rySPZ-I2REc*Xv4bm>wQ>vkDlBNjj`h9R)H=u$5hw0Kws6hm+89l88f%1={jNQ zmD~U2TDpf7X!DCbu4%fqf~eO(*VduUFII3c`ZDxKQ~s{#%h7e}wlj|QzxfvEP3r+~ zN$Pety-F(8&CoSuTs|*TaTlv#x0L@d({-{M=R{NVtOBjFifLFd$L-8QA8@e*b!7N*5vuR9$8uU!RK;!3)zEM8 z#~n^<)AgBCL$LGz{~llk`Us{JQJ!R?GrGp?`&6L5==ubs%`c|3kLmm4Z%LUJZN{A} zj!x0y=GsxG&#FM*Ud2h&!Sw2>A!vy18QM9C2-*r=J=PbFG0y&`>myjKxV^>CerG-N z9=EfCmZ=`JHC-Pr;}8r+*J*XDlz))v+6v;>_eNLdHli~$$@xc;qFz?eE>%HK)AzFq zcuV~Ip{vLG93LC>6T8?K(055q(w64`2LFF^g8Gl7Kt0e038l^}7-+h76md=*VY;q< z#fk@*uE|)yON++7zv=qa9EYq2`U;)@>!=kg=&k~EeP)YenK4~o$;Lfnq3NrM6DvLx zU2{vvf~X&2x=ui{aZ+ru)HSDqID3CIeJ*+&%O6bFK_xcmH*_8Eze4{n)m+pz|D6Bg zXZ^tUZ@yd|mr()4D;i5=J&;>V2st4HFgr7cn`{KE>; zA3%>|_P6OeTE^{uTktDGtd=zBSF89-gqVr%O@CkWKMuinR!}k3;}6l5iP!LJEWLsc zOur8y4$T_VbvZ6(^jnLsi`dG9zJEws`im9l5^7A*R?}Bn#k?i{64P~J5-ZqZ`YL=e zLqD6YQ@W7RY~EiKDAhVTDHGnHZ)^oMNENug!E{Z=5GZf6>AFBM2)`C>e($3zb4}4( zCTdRqBGJkJ7Zk*?`P^1`9dq1lR-!Kak}qg2NXeQLV4g1))^ zUoOyk3bg0a4n&#Iq8_|v70lKOiJH^jvp~fueYN>NM~@wQ*L2MZAL8Wv{~aqRpPF=^ zSOvOP6H~eveK8Hyg$NI%hAu*X4t*wioQ%(z{t0?)(6f3Zo>o}S$}!a+Tg5u3i<9Uh z(>2?b3Eq+ntwPt(C=;>b6{a^qk7NI;>9fl1Uv`D%6sTvPu|jO=NtL;i*1gby#{ zbTBt}=jIQw1yd_=C#{(no*{y|q~B0xXr313W*mk>8P2x|l$V(n7hxDH!$OOokM1$M z7h))uVa={wEeoQEy|&%CO1|b5gx{2g3pxR$x#s^lRie?N?)1E5jQY)W|yy z7xXEH)iQiW1Q~Q2)tHCRF_g;irBzXkA#VO3V<>nK!xt9e2pdgr!&(eQGORPhFII*3 z;u)s>WEnPKXh9nWq#}GngrzckYlfMrHmt``BE$Dq#ZnCMtYIUD#t&im8iU4STx#on ziZ%?AVH1Yt82Y8!@DmZTGHf=(Hu{%QA6d5Y`Vqqd8MaszkJ5&?`46CqwK8nQ(3C2E zwmf)*?}(89Fos_-C=dOu4W6i9Fcix0yG6Jsm4_-+F;<2@F*GB>DH!5#|3!pi8Gf@W zwx-(fH-^^e66KzAk|B>dsYdDt z%(03;Fie)AJO(9dvsK}Fs6aQD%23e^ORNgd8I`iAk##T> zW5`a&(0~Xfh;b}_;=kEfIyx_JEOidjS}a;|lj*0@<~YfJH2rM+EfaUn|AXn((Bp*M zoYPw;S3YCKgK1Db8Z?wH#T6RU;-bgt(ws7c&vxJ>5TVHhhzYYa+@B4k3Fr&nPz$#AGuF`7okNz;i4t7YhH zh7GA+H^ERULl+Dh{Vl0RcEwPz07F|0>gJeK72Plt$?!6U`WP}KFrJ-s$1qujLW`i! zH}O!>6T?y&dYR#N%cPH8Z44zc)We`{<~|H@8|aIn@sk+pV$haXfX`Ot$Ziewm$LG$5^l%WX2WEniqxR*OmB)m?)bhnT{ELa{Pyr0E2y37*FVKHE2xPQH|noVuZkY0=vStng&tG-rRlZM zFPn86Q7t~Bh`Uz=*pbF(uzayx9Rot z?Okl?#}-I)LMuQ$0hpro>YgWeG{%bYuNx(R!hZC@vfDP_qyVKF+4sxGs zN-p5t7*=D*W-#cOs1H9e@-G&-ZmOxjnqD0}&Xy|sRLHAB3w7!i2d%Q{^;2^g!`M~tq{2e#WHKrei9>@CqoSsb{5FR)G_b9lAim#=D*r3&>tFo57wCL}5 zO}`F*+(y@M)TLY&>`cl*N2~fGvBK;Wji}k+)o&qwww5Z@RHo)!lc?2u8Ow^pd8eMx*?c-yh zcTGPXJ$B$7)5kNrG9k{T7GI-M5RdPdSi!LbiZlLv`|LHJAiYAM^Gw%;-`LQXt;g4( zt3kXa9ec_27vPNRI=;VX1>VIPSn-H@yTsX5ux|XQ9W;4Mk_{^QP(7A+cZ~1rsQ^ z*H-X~kG2(_M339S)8?OmF?Qf7({%g03;vqM>PreyjB?_PDL-EAYe)9BTTlW#Uu+Ay%M^<#EjF zqpPL&pvMa8nXW6o(O=i}_UOt4^&}0gWBSdx9`DqTLZ8xy3X~p=y{|At1?ZE@w3O$c zRL)(h`4O*r=Kh*oXvu%IQJs3ZVm;|8wzq?J^{=w4pTxzbJqPEmJjNkBhx+tbl&Puu z&NiI`RhgkZ%k(#_9lRwSJ=63F#EBcl89BXm-UbRXn7!er+X_>xV%KZYp;EPYFa~Af zQC5nxcaZ5?G0ur2P1kQ|;@FR|iu$1|(^@o#Mxak6ei#0ZlXrMd&*oi41sWbLTA|2R zxZPUp`Y_YwSJ!z<{HK_%Q;;|(PBwiddTi)ubPdJh=)ICBUs<5jtY8|EV~-o!nCet-pwHb~jf+Bm<+hABA!+~a)fgw(t0t{^o7Rc0mw|iG8Uhv7JyV zik8+A>!l5%Xlbb^v8yO;X|V-k2DAwdfg zxR3`tq9nFOa}q>B(29Gwsu8?G0xJYBlK@qXMVOe$mL%8$L2E9E;Z==-NpKs2{@erp{!i== z{Yc>b83_h(57@KBnjA=iCVi;0|^RK5?wS^{Tc}xK@d*@beJm?(}L)<<|1 z&~Xw>;sV^pA$GY067+_^$^}?ph)1DB5-fnABMH#$&r|y1&U>8%`yrUh1=ugdE;pS7 zw;>o!0#p=AA$piW0`JdBFpGOQ#|8FcHX}h41anA$AqXd|#7u^hzzV@!5@4*prb%KR z3AR8mp9}D(mg2s-fCN_{=uQIcdZcK)EY&rBO%gnYfbk@d z2eA|@ND!1sg15K_++8lV#VQi?hTsblI8q)^QDP=nl3)P@Z}TMZ41$F|_QqO6g8dMz z<{of~LEQD$lHfK3?{E(|#UcvcC4u)z60GAMaA+2bIfVpK5Tud-6@}ej^pHgYD+C+3 zhiFY>Z6d)I2sVWI7EWSv`aPDE5^RCsV-ldM>F;s#G*&jfr1uI0$GL}0O2R@PY&rBfNgmv?NN|FC zK!*{V`xFTpL2#N2#!xJ=Ej}l~a0oI<@QCW+7zr%&vDf5T60CyY92YdzBypYuCm=XO z0@Nh_9azl61rj`l;1c%`p%Kt)c399E5-21uz`2&`Nq0%`7y>+e^pH9Xo@lYq2OCQ9kOV>JN$`j~ zK+sB)$;Tw<4Z%ecpvyJUG?tMDu>}xZCINai`lL9*&^1@K9|9ANw7-#{KKEd+s4ppr z+Yl5W!2=S|A8@Pv!7eaR65ba`;7kH!GM;iS*24qx5Cy>>ydFrG=Xmi839JwlAqG`l z!j!ku7NR7!K;S|GG!~W*LF5G+D(V#Vs4Eb-lK>~ZixDVxS~v3Gc98_dxQ8peChest zPJ%`dl;8rm7kjlU35G*ZiUi2yK#D5%$@i(tt%AUl1WieR3xcQzdlK)E-~T!ITG|H!7HU`NsALyA5r>ZTXf?~ zUCL~pvnD<~OSm8-9?E^m;eMp(#|7nimh6S{Cc$k8Ds#bgO~qCrf%jz+_;UfSk&9WX zN`fd7SgUaXR=8s07N$JUp|Y&e(rg%ch{A8g2I0gnGnwpbHR9LEXR+?v4YRud=i1dN5k*x<;KC`)bUDY9Nh3DdGLGX2@}$Wq{S;2%s$TAX zNs$@h6DWbIWQ)7sQjXUlTx^;p9RHqhv5gmV9M64uw%)VpMhHJ#*bwUw+k5ok+_r$$&$j&L~<7voT+cKltAS0@ZrYRBK6|Lb!HJ$+ds2O^jaP;;)6t)1Q4JBL6@r7iIHId5kU4)A@x{Bkt zhK8C@_dhs#ixaq)L(J()j_>4->?PhnIBEz55Ibo*!bcN6PJ_4Qcmm-B@0bomdlHIF2?J zo2)a(`|pu!2*+P1Ph!S4Teg+GEMExKeZZ#|+vDl^qi9jEyOt@I(12{gHaIqw>al9Wd zInqV}`g8mS*OzTBI@r0v^ z(OJc&97VVl1g2PG6O7~$wh=CN$`KszPmb)p7#WS@IF9dPMyC>P-y6h)XL0;H41!|Y zOyR@=avDS*Y)D`-$DtMbL?Xx0mSRRRwL{Zj2)57%8~mIh90#=z$%fu&Xlo-T@d&s{ zMl8WZj^8A)m{BL*+c60htD51a`|oMDGI2ps5{M<4z#U?KFIM^M9Ir*V=x{v8aSX7~ zhuoCAiynOVnPNU5i<~!#2)c6-BN~oYw_fZI1mh{9HSFrLV+5w>xXfC9$~0KJ6_o4 zKTtj0Aa;hCbiXU!1Mn#&AXecC%JCJ-ak)&&vHGF_Q{L{IN{#0B0|`!YK^)ZulEj9( zI7%KGK~RX74R?o&JHROt42NJJdBD@^I9`bTOjI1P)?Dc>#uE^n=YpM@ z@%1!$cnrZM5?}y!rBaAp^)d;9ek8#e5}=qxxWHafQyCi4?!96bMLP>~+hM!3=9D)lZs6$nKO5>p}BIV7k@f>oMg z{ze{7K=3;k6z8pJFU7AUcnrY~arD5OjwGkGP-*&!pYMV-oa+;5G@+9|~$} z(ny(H0D%Mb6bML{r=lE5upa^w7vR=gu}?aY;5Gz*P*fBXGeuiA1W^zarX*e>0iK(%pa`_((5DCqtPm97d2r)-Ae}03Cczd6(BIJ(CwW`g1%*g( z1%jd^Kqj4eJ=g_qByhV+0(TN1lf8)%M;;dvG=iW636M!wO52Y<*mCGok_5vcD9$~c z(e#JXBv=JODeeKc#fYO`F%q1Bz>|BxDPys!%aPzQ1Rf+nDSB!$=|zH|dnBm9J@n!N zdojzBpf?2Nxrca7pY$fd0tgzApaCUukp$vU?n{FG5cqMy1un2BQHcb%At*xvR21Io zAr6C;N#Ol62?Dr>HJUtBB|#JfRY-ugzya2RdZsOhKK>-ILf}C?3TMW@)MT;-3AR8` zjVFOoPRv6f39dj8%rhB707=uRa1&E5)6kR zgai#KljI;zYgQz|DhL9o6gcsXg@c%fIwUv&L4EGwf~H5+Cc$F}UgCmRH69w0Am~>T zyvzkfHQl}u33@|d;etTQq`33eBEbR(8j}G10e8KK$IT`r*bhMj7vOLpR&_lR+=ieg z3D8(rzKF$aN&@fuBxueBc$CgU`M{P#pB5yDf}j;o;*zGh!%1L;pe6T!4kPBFH3_yr z5J>{G1ukP);GZ@m@d^p9K+uMJ@Zc3?7etf5?KcuMBLNyKTa$;jBxnRdI})Ix)@drL z0||zcz_AkcvuUu!I)&`BTBME|jCs)0=D_n%LASbjTw>?SFn*@$Ag$>Hs-z)TV zbR0-C{Id@$WI0YJZp$NzJf9**Q9f{G0M$)DYUBkZxB@{E7q}B4jxxz4aC=;#hT}pq z8a=LXwEQkU0JM*BG&C!8Y35_vLMT>->4%~YN{yc0Us;vrjl;jQvOABxOI!2GeNIDO z-Y%zXJeuR=XgEln9;f*J{{aWXL6+RprzBg})5rDieFgNQ7|-LYUT;e1?|&UZw7>t= zIfkPB?Jw(jY9z-mkA2TB#=t6B@sGhlrosXj^6 z`l1TXvtTtmdY;w&q~N^V*5}^hd9z@B5uHxRg7pRUdwUkFFShyX;I!Sd%tGS=j)vc8 zMppsp=mgl{CLtABi~clr=Y9pYqDXh_k^UsWPV}dv;8{4x{j#jN$Jv)c{LE)D%R`|5Y~dG)2I9M77EOB*46f`BbuAp%{3ZpBm$N1#VKJ zxNWlnP6a%A68iH1yFHA`|LZU+zs{HS9y!L77;0&rf1o54Ab+aNy)}*Oo~>ypf9jXF zsi33!mJl`f`2%bf{JaZ4ny(wcWM9@&jKFg?lxB4{p&yoc`Itq90Jxnp??*qNA7UbvYOMs8ff-UBIS?6!bka3 zv_=qt=TFoeJpTatQWRx@o~E&7;W-C*U&@neH_8tlO;W4m83)v7pd<+~b305R+tE<) z&%TC^q>|tn2{nOd9bi%IDZ8E9hqziNQo499LQVJi2Ut$~kn-&47&@l>)vqZXLdvo( zV=2a8{qpEYF}_8Nzw>3?Kvgr+UNz4@fc-5`syiq@Gwu0#_5r@XJ^O@geJ@`+1OGx< zk5ZLH+NJXWD_zQnbbPXwN@@Uh)@Hy-qnz zvgh>w72v((pSZhC`FX>hpMM%q-xQ)Y*+2D=n}y#gKW2M={%WAzKZ*48IIL|q>ResB z(ZS>|eibO_>}UvaW>>p~lwda~;;>=_6t|b^d zjqK^LSZ}X`=N~|u$Wz@$nZqBy zsE3zl5(xSGzL|9f_5PVNsQ3TXuR=3@$__nBg~7Y1)xtdM085(bQ)%dFN|N4#ZACM`q3)CPP-3V)o^DhH*z5ic&_;(IUtKB3| z7V1&)eqj~AqrtN3ceFpszWPLvkZ$j`)x)z0u*`XM_AZK&pS4tGOFw@8s zH=jnPS>IDl{ME0Y=lhgprEgJ;zx`z$K?&1cl(y17{{UvXe=*ewlvCU=tM(u@K-YO_ z3Y0RG23^^gbtc84`%G=Io`0YcmG4hdWj&L9DzOd2s1$$otI%y~>p%apzDtFte`T;0 z{`m)Ru*s9^Hp&m~?Npoa*$4Q+CQm|pC<}OVi<*VK6u_TVJflF^-}QZj@^gH! zXfc}jFMg#!_qV?4jHK>{ufQvm<{G*?My-QC39y(Yl(hj%C^hNVxu0k-DmaSV|JASA z5WjYpoc^sZ&v=UV_rKmnw14(xEnS$NV7AxQ^ABKu`q!yep)w4!m*MXP`2O_wBH23D zzm5}1*|zqu=NqBtAMnVRDvKUVN1!fasZ0G|zLbE3kfSq|pJujdRDb53$3Aqgcf}|7 zdK>8t!I6bFsJDjWe(z{wVnMnjYj{+?e#cVFMwV)|Hf&m>yFa>T;ic?&J8(V%pe{kj zVSS<@9xc_4^0F*SBN<_l5#chTF$n7R`AgD779~PPG?fv!Y2TMV`D%+3G-uXU@SjEb zzs9h>(A3MfAj&pq{JBdt$%tQU}asa96|Zv8@1UmIq%4Jt1v^=XZ) z7}8!?>UV#%zR=X&v+#P7rw&m6*U={bU_;~Y(}u@qoH`wUUTEsRc(ug~Jpfo=XzGv3 zTQ#$b=iMExdFD3HJM~h_tisId`KLazlr?u=_aahnwbsgKl`kgsuxVCxPWz%#Z*yH_>yH_ z*FRqD2`HL>zt97~f7d_qUz7U3H3{yY&~07ETta*OgWg)GAH_*V&<(%(G3Z`&eS)3{ z%O&!zKj?O~Tqe(XF}kTupC}?DTx0}ZyZWS3#OohL^Dx43$xTM!&4*8X2{AlmL@^EV zCeq=by1mrdxWUP?xk&PUkSAD;ObeqOAMj3_H3%E<^X9m00~qr48I9+zZ@`w)g{7YL~Rf#f4)o5cyFJs zuevg#o{YfVYPzm)+Zho$*FSK(nr;-jT}_|B-D8z5iMmzE0M@^{o@sp5pT@G>uYsO(ppB~eYm1}tdoqOm%-^L(nUse%}?;_ zAKmgZwi~m$%Lv>dt6RZ6WkfGMLS29K)?;vER*a13BO_jw5qRF2BZlGrBi&XUE{hT;BSy%GkuqWw5&G+ocv+OuGGdI3 z7%L+ZRD#N%@9;BD7G=DQcwI(JkP#C(k^layNwO%ERsFU~lo69<#FSh@yZ)G(%V=)Q znkFNr%ZM2=Vx~akU4P6Hm^|x`*)n2|jCeyv%*{iH>yLSP7-2OrUq&pD5lJ#4SwlQo ze=O86x$BQbGGeieSRx~q<|FLu50;PN>yH!}u}nrRml1F35VrNl3LQpWf2@=dZ^?*N zG9p!%!1`mgE1Y99);c99);c99);c99$*xtv_C|GurhB=HR-%FbCHqFbCHqFbC&^X8nOV zxNa28!F37D!F37D!F37D!E=c`>krJqa~W~{fjPJ?fjPJ?fjPJ?fjPK92k^oQ>k^oQ>k^oQ=OJ>}AHB7Vef<$5BQOWg^7(T>^7(T>^7(5c$_1 zn1ky^!5mzdz#Lqcctb{D4sMH~U4LK>uImePa9sj(a9sj(a9sj(a66HA{ed~SoyoKQ zz#Lqcz#Lqcz#Lqcz#RMuA+A3#2YkrJqbqUPDbqUPDbqUPDMdHc&19NbZ$z6Y7 z4z5dJ4z5eAk`bx-2>bd2b8uZ>n1kyQn1kyQn1kyQn1gEx+xi1@a4n;*KQIT^B`^oq zB`^oqB`^oiPhkD=zAi%q=HU6G5P>hypUApp0;q5rr`S)=j;zEJ_g>;UXhkWkgXBD1W{KfSW9eyNvLV5yfOg zaT}qt{wN`fQc^~gk`bk4gr}XzxBe(&XSC~&vNEEajPQ~X<)09m^+$y#Oy27s-ZH{R zMpTp$l|&-X`omXb#Px@tjHoOls>lfcyo9j+2*}GkS$|ZO5!GY_h9KSjDo{)0u0LvM z8T)FYri=)Z5y3LToS)$9kC6O~?fOS884)TY!em5kJwjc7)X`(G{-`S>>dA=uG6Kz^ z(as05>)LD) zL)g|I@j8sU{unJI#>j}VG9p2j!1`mHE?r2N(gJ#Bngv6LzDh)ohTzF z%ZMp5VyZNeX|gEOWyA~_F;hm&lCD2y%c9JY5pT$dxiVrN2$VnH0bsr?$^sdYBqNe# z#6laPv;J5li?UcoERhjQWdySm`PLsPc1FAYSSBNu%ZN8+#EK_`X8p1936ppI@s^BO zB_mR0#A=bqv;KHnWW@Ey8X2)xMy!(&@8l(f^~bw;nJ4Ry^)h0EjCfB*ysss4*B=|T zjD7vFNk(jz5nE(LT7H7BKepy)p1c?fQ_g(*r~`qzgrkfw=@IJs!%2_9`lEo1C@3SG zWkex;g4Q2}^%?i9A~M27M!3p|qB6qjCS%-XgolhMCL@Z=h!R+T=(b`>S(H*TqO^?g zlo4f!uRu-k4jPQ~X)PJ3C_XZxqKv2{BYZiLfBoSni&9xeRFM(> zG9nQEyT}A}Th#CTscl}XQVDhX#f@DOnj4;cHkUWIA{-~9Q5!N3# z*P`1`!(>El8Bs?=JXwF#)iAm1k9snqzKnQDMl{Gr*w-Ho^D%t=@v@9)BqJ;`B3y^C ztv?#;FzWiFiHwMl5lv-8GhG7fkLJ1z5omMWc5f*oTFHo4B!o39Qo>}lmJ#h_M0**5 z(;&J9=}6)C5?@g)z^Fr8d>m+GEpAddA2_@f9_UASv0L;6(h^p?BZ53 zgCa{*wbuI9GfG`_sx2q4{ZUbu^zfv_+dq5?>G;)C$n6cDLi+malapsqnoV5wi=vWK zlb;gP*ZnCm?>bk}Eoa+LDNV;6`Y~0q$tC?XRkBvur;uwx^vPcDx>r$(??b~T{vmBx zRaL93e$G^KO}QGnWwMbmHR~DOwf#luQNcGx2R`Pl3pc2!3vaAMuugZYu#5`U#7{rV zHj?RAiAvtB{S?x7xjy;h2vp`RRAz8+YuR3+sty{T;$l?er;xrw^vPjCl=#6Q{Q|4x z)b&q^={xl)F@2}%$80;)Tt&GSDCy21Wut)_vu|DfG*z;eS>J7PKXPm9v8mzGN>){} z9;=eRFY70+lI?rwlNIVyB|C;cg_I2oYRqd*o)S|wENopx1wPnJKc-4L4%crUmAvcx z6!O{#eX`GB8j7Yy>Zhra2YWsxX5Xl%#9R}jAG2tGs@pX!^;=yfo7{a$%v$rFLY`Wp zpP@;k(Vksi(H*-~Qr3r5vPnDr+^VG7hw_hlfi+*&8}(dz>ke-dVsznKee_4Ya5J@= zIs*CacBW(WlP!Zx?Fj78RK090Qb`(%XgEtVN{@t5`78R;Fx{$)jMIhFN9e+Vqx38KR^+#cql(r{gO4}2ptUb*osGJAi)}OViq-?)cN!fmDBPIK7_;9r6di@$w zN!db1C1nd4m6R=HMtn_aHrcFSPL-4$;Z#yKOHxVMEa_@@N>jFwQAycCMkQqn8I^3m zTfh3uC8)6v?$Ix&O3K@lV#?bSq@+FXbVYma*H2R=W&5W}9^9ipnyBQpZu{Hw>I;tOYbq2~=p`Pw|tCF(1RY_Uh+DJ*=em;?A4hJ*!>sBRY z{Z=KZ-_il?=xJZQ1DdL!&Wl4{72QMLfpnDkjDB^fq-;-BN!gyNlBX`{yPaQ~O5Eg< zeu-65HVUewY!p<W%t$5G_GCU|%b1k3KYWK6O*pTp_&kJ(Gl@#lBi{sLA^X|Fq@5mqpM0=1 z-ao~7oZXq~RgX=&UD~B!li|bSNA`(lSAQ&B(!m_Y4)n8>DHz^9eq_HsLz%H(Y2Sdj zc&-^fs>zUn{f5Q&tJ%EYuzn-^jI`rTheby;^JiPO__sC=WZ|6}lwijz1wCfbN>~e) z@OpzrEU0Tx4d(fBWQ0RlJ=W{x$hX+}nqjU=p+=EzMrL_6D3tkZ_X=h))tZ}FT6mk? zZ0X9dqU^gxewA2cX}?%zIpiP7k~W5!SY(qn>shd~e-Gx<)v|(RSMuMXJXjG`+Q{A< zPH9-)itu*16!Yp}VlCEroiWyCTS6mCvkNOjE3uf( zp|e9Xv^ zy2y$wsjSy@wz9v4DQV@relW6nWxQP3d*!{pGj?a@!wq~{S_8j$7WXyfJu%R4h_a%Q ze`NvhAcf^sX|e}@CRwav?qB^C9r%Th~vc@}G6Foo2qQ^#k>z+wGH1^U#g zS%_*bv$TvfvCM6jvJPRP>_A-eGAz~DAcQ^M9a)gQyxmfY<+yu=vh?ji zNlS}G_!%d%lhrJpS#XS301NIC<<2gB7*!arA-sw(*tY z_l%l2s_CdQqt=ZaIP&KaUynFEV%>;=Bg`W_Mx2jZ7dI}hV_eg?LUAjH&l}!$_|;(t zhRq(t9Em*QdBkue`;+ufW_@D$HXm#sem9#ZWSf!NkoMilqch+-{+ym4t~?28vHu>JYnJod8N|J(vM7-Cu%l;9|sxJa&~M#IEaamBqIOk4+765GSXm2V}d158}&R$@BA#MNyj zvolOw&Q>g4Vd4U|lGY7oBbYutU|L`%^@JHt=C0nba2Z;Oi-Fk$W_BN#xYVpf_l4OM zW=1T`W-x>M!^HJtCG|C!xHPG_4}^(p#7g2In7Ase%dCPP?)$xsbmg=iA%kT zB@SjAm}w(mM#1zM1v46EQasGIWbPUR3)g{_xUn#CtqGkQJD(J(VMz#IcJ_KnX=IbzH zw!xeLGjlu4i7+iYVNQaXwhN{erq6Dei7=D)z?@9xt`A{N0T`DKb1Ka2y)dW2jNT7( zI?Rj=m@{Aoe*|+T%+!N0XTfwo40ATj#E)Ulftm9O%r{`h9ECX-X6C0b=fSibgNfsY zl6D;C0+>E0U?#y#%7mFr=B_VbEd&^M3g#l1*{5MHh8cYZ<`S40XJIad8GIflgPD2( zW(rLAOE8zgOuP(pIn10dVZI47CL87on3-2$u7qj12J=FFr=m1!wcCBazOez?AGWRFt3 zLfEk}VR0;FerS?nO7)Mds|1dSx=~2U>FB?b2`r{cn^+bd?NygW&%@+@j(_CRo_>wkgHWo%pzKmJcy=P>e41Al-5qs{k?oxMtAx; zw%99{xg4a-Z^p#R0Xb3x!*k%Pw^73+L(VHy;7*bP`+WU2IDoD$eu-YMY z*%fP4Y1VB`^GYmka+D8?sTDDI>1>OMom)%Gw!lpP2$nIIz9v-n3umjQdbzQTb)lZD z!O|d4=KfA-JPRxkOk5DWAaj2D{M7ja=HH)pY2Mm-0rOnuou0dUZsJ_i+#7GC zy;1iKuQ#sG88GL;?Cja=XV;zWHT(LkBeP;>KA4d>!!o19j2qLVr+ZG%o)$Ch^wiX; zC8pk(a%f7#l)x!2Q*KS}GP&+#&&jEYLlS!=1|)hW-m@ODCRyXG4XlAyXKRji(y>W( zCk0G0O}aPn^u+XuD<;NF44qhF;)4m7Cd5zZFu`j=`s?wpyS#pA{Mzx0$9Ea;H9m7( zhjF3f?k8jzAIr{ME>7!eZt})tm^t||q@jc@k#v9|a zMr|E6eN@9y z+h;8icW-#Y@QC52;n#;n4D%dj7?w2DbExysxkDxl=`qA-$gRPb2B#06FgSW}iNWUv ztr!$HD0GnXpv-|u1G@|i9q2XCY2eWT8wQLR(0ai6*Y>D9KEvDe|ATYHY{8Q!yU&ka51^(f!t>+YMnCwF)4ey7{?ZmqkSyB+PisjInb$*vo^ zjOfy_%gxSPJ1^;6rt`y2^E!3xRIk&~j!Qa@>uBtFyu;QGVI7PezHUFTeOUW4?Z0k! zv|XQeHQIT!Thg{q+oo;LNAHbp8(luyYK%^f>KPRtFBf?vUdxT%Lth3Z;7*^k@{@3-g>Lu4}S7eOyNatbBgPi+2 zzv|q}xf?tFN9gF-A@%&~9jZH_ZkM`&b$8e4Qs+|b^|go8Zc#h9woC1#u!OLPFjH7k zsAs5iXlAXAwE}86*SZuE7vdap!+gY?W}aXkVm6txgHwYOgCm1OgG&V83z`trA}Bb> zJt(JUdd-bB{b~*?$liJ2+QyplLFflJ_8i%>dr!)q9(&Svuh`vTcj#{S-ItUVN`&H~ z+}d?%SNg8|JJWW0?#$jXVMp|i;2jUPAKAWpd&>46+k>~~Y)jY{xvj*uOIv$vZLrmA zt7&Uy+KRLRY3H_V+!DMcXY;YmNt>fLpWC!?Q^KYJn_6sg-juWP*v8b2T{hO;xa0jq z>-#<4Z}7hR`+8^j7A|-78a8`mMBHTCsM;fEA%D3@dWp z%zQK9&B!-zEI+b*{qmIM@yjjC1C~24zrHMPS;R8WW%pA~r^KcNr#xVbSs-&^50;)= z8ne{0w8YY!CA*h&SaNRhgGHf>b}x)s*kYmA!X3%6$)@CcN!OD$CiO^qu;A8$OAB0T z9;&gnMr@5sfvJJ(wKxdscU@o>48eTHR_#swP&As2W(+x$6CZ(*cJ9 zCIs{dXb|wgKhuA$zmNa*D(kCEsM4cKgDQq9IhBu9PN|$&Ii|8_<@AFj=@zBENby_bl#QJfWDO*b$FJk4TRO9_}7F?&z^cSRW7z1i8Z5>dctlXzU$$##o zo@-%g1q0&L6Ev`DF(kz1I0qC~Pu1A4&zu7qs;6tzpwg&Nz|miF&*Ho7^r-sggnSRy z87ZfzpL~ydJR2fB@AGpGveYr-)y25_<=l=HsMfBf{<-&h~1duUy}{5_F{%}d<@UF z9k+124*_CzHR3qdT^9Oaga4OpxYdA#tys*4JVFh^#SGOXd<4}O5=OmagQFT8_aWPh zKG=W)i755hxScA`EJBPoGdDnVbg!BIVqqXanrh7EXKj*lh>VguIU z_)O9S(Z}w;65(;={~BSr?Syj^wRwajvc;T+al9hoV#ykCydQZMdsIc9KsC~fHRr?e zzFcq5kT>C0u*jHrdRyEmW2}g!74%ljx z>K_rR5rNJXuPH%Qj-vz?`e1`TfaBH47BlKX_%QN=K|^dBGuOuuj+({>KfzW`;Ji{0 zP})EQaU3NUtL`PjQA5`W7fa^P_1=VweWeQFsEOX1gukfZXy{M4wTC9BCpi&ExY+iY z9LH`WR`m&vU(#gg6OJQ8Vhw%F@zsP=!O;J0B|glF3ltVhc8KGbX}A|lR)k81s{U4k z7v}gk9H(-qHF}WyLEAsc5T*Y)C$4B5?dEvdJP{0rD})cAgx@9HLLY2svM)LAOZJll z42H`bzpC;75&T=pQ7T0c+xQZXfIcBs^>IWXy$|7H0>?Q1w#Lsz?q{6_Kfv{uC_`4U zN;5c7UX#FQ93QUf6Bl>_JqZ_k`+1I6()js~@PSl-uB69aKtEQs>dx^9*}RH~Q1P2Q z!g>l@Y!Oua2FKAs#hN(F{j4P%HEQ>BhT}NDXrT`_G}+G;thOBCWTJ&W*g)Ll34BSm z*ctC~9BnT)Sr$)VjRyag>qk;fkXdZ-{|(2#qV)6h>aRI5LKER9j$hO04b<1{83Voj9b zcmUx@n4+mQQJmv*DJ<5+FO)DkV`Z+VA5~v~H^CM3f3al6xTC8i6mcgW;cF^^IAWRz zN0VXJE4IBO$1yUBP2j+B%rpFu8?-5!z{m+)%COJ}8*mT8Q4=>b2@m5{T2oV{LpfeU zgLmQh4u`x=W_9NYptNFJx)F}uYzpD%bl8xgq8!gATdW~hj-vqL_)&)YuS&S+zppJr z^e1MToKEC9T}!x_zyywmY4n~vfvJ>$n9<6FW9Ad9X&OI{PgC`L|3k@qIWdoHu@k+{ z6AslRJf7ogG#MSo@wYX20>@X2IMRQW6O}Xx^x=3#4L*fdAX}{JH#qL3 z!RHWe#r|#55VLuN_cRI2;`jy)K9l3?HTVpU6PzbQLpUBt>E|KFa-tT+5KAza%i3;5gMk+CGI7+sKjF>85i0T@5~kZ~Caa$<`nr^y`Otid-C9!q`b z3-Tk@+(wQU*Z6;*<0ox;+x~|pc#jjA8b|Sjqm!m;5}wTQbs9X0p9_(hoJdA$4_W7^bX;DDMO!Y@I=Cq(Ylnd*p%zI{W5LkUW9qLQXcm+=IOXc9;x95q)$gYPFCo$EZ|VpHzp zIA%{mQ(6tDh(L+4O101j8#1()M<_=&BG{|C2H_~#Y)#1mIX+8+`*3`M2KQERD*x*m zq6CjnQBxBR9Cy>;#X0Vy!HaR+TZ32U_)Mg08~#?gKg;#>qv}89_*x2E0MdpU-9k8;>@?Z-rcvkrn~A^}eo7z^VGnn7L6fit;b?*i znv%J5yu1dl#_<`Nnyy-b=KpXsT|)%$2-7sUKgXwP@G2aiqQTub?xo34WsXmFp!yej zqrs08i5f>o2}jdh)YMR2u3xOt7v*?4O~Q3JzR0de`=hE|IZ;*|Jz<`%HH;I<8lnluS84E2jwfmGS{z@X!9zGcUxPQc;a0<28X}xWSgFA~ z6ON&Gy9V#X@ogI1%>B&M;K3Z9tKxkBLlYb!0&V=Irnd+22ybW{)#Ugb4Q}E13Ju;0<{66yQpq;A*}d zte=&4G_vKUaS*;qcyGdg(dfVA`1cz8GRMEu;5Tfz)$p^1_?Abw zr@@Up^F=lN+rV*G4gQ$?V1#ke;Ey<7M8$hkDzu>&T;d7eBwMVBiyXh9!7p(9TMhmV z$L|7XSEpC=?RcI;-)N-gIR3Q;Kg;p!8vG2$uc@xP&ZzcM!~F!kLd86$k?!O8XBvDj z$3F$GoSaeZ!-AF5Id)W|{gC5FRPEOJ)$Tf1ZpZu9W=-E}%kfRX*-=*QkD)K|mSGxc zG?#AF;87fZUxT;d_HODsqXXa&8(Y-lD3;H~5*o))zlLsHj@v0g;lH=>)TG_Cy z+ABq^AMo1vL{m$9IR3E)&mz1hwaix>r~an)v(tq4ApEKZ|C(^@SwCs~JS3btvei&n z(~}?A2ty$aUYIhEo?lvn7vgv+4gM?lgXdAij{ghC9aa1l$`)mZ>rYU!FrSuYfE{-2>@|lJV|(0!f_o=#4`!+LO8BU0k`M<2;tF$W1%nNCkXFM z_$7^>PY91{NAEbqnn+CGV?T1C4{|6| z{eUZdGOE4X$TK;T9MM*TKDc&i+qSCj$tG;`GV%|Ob6mrz>`tKm{*iJ8EC|-cx&8Slpm6X2f z2Qlw@>!)dpX{@gAb~MGT<@hvG@|sBx#H81H$lXd`M{}0y_O7#jnpZ)}UL~TEvNTmv zmS(au<+gok{nsd|r0m5SD!E9~hg8zBxPDRY>_Q(J^%PRpp0=2!pAvJ;Sbef$m|A^L zA!YA%Q)6zIyw^=7r&b`h`QPhy%)7eY3-m5kt=Y%urg=rTvayn`*vpS#onGJ8or<%) zvVL(?QdWg3IcnxpVmemSC+DxHcXqU&^Au9{79m^Anoo(@x32!)J^2uovv`tzOqGwRV8~hoJz`Gfv1uOo9UNn^%N9XeX(NKmeuuMa-=F`JD-h| z?0hPzzEn|f54lM_hZ6QT`r;DflP!Zx?cMSItS#iST-eBu)f$w)U{X~{-tjnOn{GF` zv|SgD+^Gwv@6zv7$!oBaysF@xxAZY$17cUV;=8~s$$SMqXimAn?HKP$RgUTs)4@k-LfRh4u$0vFQR2uRs% zWc3sx>99s6Z`rA_{%Ao8*|ANHE}QPDr0mU(n@dwOPd%gG2UN0&esDG%8q#|DSJDpO3L02di57dbJ4H*b*qxHAyFkq{r;4g2fx*C&x#Ato)7h7s-)V7 zWx$>x>_^JGa&yrNl7l{Ox%Tp>>vcC<*S zFH7>agwkW|5iu;Y89m$WQjcDH71K8=kZla~Z^457A|qL}*;1FKwP+r@G|nr9#l7U^ zqoh^|>f^ww23Y7Z^0`62N=}pJ=Zq}rB)v2st+;<9mile!QtWcQ&|QvZdPP>7vY~G= zpK=jBnEP%^#L`Lr(`+v>%kF7OVqHSo1h7jf4d`j|ntrj0d#yGX9a-sx^ggrSYPUJW z%CrtG;!!u)XH>tw!-vJv8@|l7L&HLtu}aWOEH%(C()Ol;Y=<_}SZZvT4|8u#Pv6&F z7q*zixzY3T(HH5h0q))Xl8mF+)^c9$*s6A3m6eaMz?b+jc z{;ipN>E@p7&|EKfha;t4$V2V)7Z#%&BCfJx_k+gQXu9&|imfZmD}H`+@0-)#Z2e}* zH?x*^T<*Gj`m)i>+Adp{GC5^LO4AgNl;7BSwv6q$AJnmPjU`_%?z#B#qJfLT7FAxf zZsGKW{T8-fSao5Ug+C{Mojf`@JlUM=n*4K8R??EBiAi0PS|(LZdbr@gf|d)63og%J zJ%8Z*8uN|wug+UGZ}hyL^Xknr&bvH!<=l!&zu$t+Is}GZ^}3pw?U#N1%8Dxq^j5Ec zE7@OWd>QejAHCZvy;*tM$c{OU@Y^c;Z#myl?Kl1 zer%r9@tZda7^h`SE?C&*q(iD9u&MLI1m}?vK8+>7&sRhgpoE)Yb*q24j;~f$VtXF+=1bfTHyv+&sFS@ei_U2McUEPC}<*w#R4h~rc zw$IJ{i&F@ZCD@3c$m0ojb04QgcZ{Y_R8cB{KNNEhVTJFT3oF?r%`51YbYMojPfSx!Vm>Zy4sm)+ST^fZ zpOU;+&^?GX_9SpGf!=C9lm(vVEZd75Su*)lCX_XY7EoVls8$6#;$x2WEZE*)ct{sk zwC7*gh;;W5y0{VlnQx`S#~T|?Wvai%3iM>kXP2bx1nBMDSH zqjEhE{q8$867`BwEY6Gi(3Bwaqyi>f`%{~UO)N!yp;c{jHKQpJMNs?k+&boLPbXRK zFAX-=@-?LIS96`X`eR$}BYAGi@ltr1lnZsu1&p2rWPT=&b`J@4v^%i3yRkfX(3(4J zqp60bM(iQuop3|ICAGgR6<#vGXEfnLr>*_68<=BFE_6YU8Q-C9*rTC2)4{>X$ZA^5 z<4w40OWhBY3=7qeDOC;sLAt;u=5w}}D%x7ot0{GZH3s&mDMi}?nYzO!H8W?JoO~#? z5O%=LTuK@Iin*7~t7%Vp@3Z?7^(xrg{WCK^iGc7`RkUt>L9%R_nX4#Tf9u7mjxqZ6(GA7QJDQ^%U$ z$^5G60MbQGveqRj-TIv=-2j6!th0Hf(dlcoB*`Tyr+;)YUv_A#Hcter(9OKfvxKDW zmz-2HwZmk~)QFp?7x}6WRpTB~vDF)>IP=`8IK5sqZ}xPQWRzVU zqUJOuP3`4|#ND>u-je6gljpb$e%Zvnl+*2~EsXrkE0((9HU!acSPFu89@4gxEpes9 zoAonqHtm2!?Kzt;GQZp(JqK5I&CH`RjXDjhxYty+y+-4;!$Y;X%dj0TROYt_(jfDg zMnK)+^kfQhZsG#zAiw7qhXoqR-jjTuZMfG1T72HAXl zDszH4w6b=1t<4<{;t32^8*l3n^Gwf2vOH#fU=D4ueWtB$c}|TU+)+4p)R_O$k2+2p zWo>n*hI#;5xzgru@OoQ`oALN1x!+PIrP46-NJl5U>o|g$f2TgQWdx1kv(Yvu-=*Rg zs!Z*0W~6zkqY2NO+lI=W{?uT*#+WxdeMZ8$5Vm%h4uV ze>e8!IjYHX6og-;Z34A{r<=^z>Je&BZ1984*YZ2I(pBX?dT^gT@v9sjhxSZH$5N*N z+2d&lG~rezTSq%G(VR^$P;@id_UnvE)HUydRmcC!IN}ep(tc5ra-(~Ujeg&)mTzK$ zZO2Vaw;gJY{dp$LJX5bZDRUBOR%23-6Lp^}UxKQ(%~VW2_9H>HySYp^XPfY>0~^tS zs(+`E(yu*(c8zxsPu+VS%%EYh5(V$sMkcqiv_HQ$llJGe(5P-|R3zV3W|`-kocfS6 zZ`<+t#9VV9hu8S9G-jT;w)(D4TRj}cK>Eu(YSWL%i-k=tO>LT1nhumd&ZjIoy-98^ z*v9V*Ni?bIn46!(sx;SIpKOkH@N|$h+2lcL^Ye~qNVW|k#?riYn)BLfp*GpT#pdCT zPU9$nYe=vZ+u=>wsFXsb@hl`uA-THR<(Hqbb&4WqY@MP#_w2({s%T;rR+{HH#M^2? z`EjMWsFP<=nb#kvtI?79{7uzcBJXm>0Pd|D_uifV(vP}he!=Ii`_@oR;RY?+{PDNa z)G8mW#T26nstfw&_}8KrFR^TJ$5t#SD_gY@it;s7XFmj9TkiksRo#)qrd@5n@(JtZi3%QQ8^@|uc8bj;9+zHeUZ)SY7R z>C_vTPL1D4IjM)7sD109H{UdsOfi z8bEPC*4=x;*Q*)V9+Zdh3a!I4UKhX0Jk*?kxM$ZS-fWPQ9 zqI(^4Xz18!wywsT(&)zBe8-#ed;V+hYSXCPw&_6HJ{s9P@dj<(qoBp?7FwAfwe53O zV_ELK70=`=_+@tv(9s(=o~uJ9OZtcgoZ%FVuvJIVgESSwvjgnF&(t$>>YHmSyAERF ziFX>=R#pjzX&fyAjXG1jcNhz=BsKgtkHeOJLK7orS$>n#)FFc}ehhraHhS|Mx8*r* zhhJsS5$e(o$ws#CsQDKY?xR-^U&^shDP4y$wr;8nJ4TP8I0PD%`6n=8n?te?Taiu_ zp?==#B#pCFy|%8P&>A+<(cvD&&7ywPDHqSlBA=dr$XYS6up7OkHqq9KyfuwCd8@hd z+!y7)lzDZ)z`eM9IImuYvQq3E^}x3YETrzC%Efb-8V|^=-ieOXO($KTSx;eE{Y_4C z4{7CS-~*vy_eC{F#!5Wp4!r(4@?U#SN|8St>+%gT!Jq3L=R&x<0o+Y3ld}9GEq2s* zL)*p+n#P-y^h@T`MyKOyG1ck9`(M(r=sg1~dWBXnd#M)a7=?Z9!$P!IesRV8djU@m zSRheP6H+li-na5-M4SpU1s`Mn;*SRw0hYmLDCrZmzme$GX z?jiJmav|Ho+I}1}cI9bQ;c5EwUxL-{h$nn$&!9EEV!dl_>F8NRmOxTJs=*9f-%9Lj zTgMwaareI5t)Ge2{?$Ckv<^8}7oz8Wr3I%$AA?f!ck_=%2Va9y;Q@@@bgJQz`6uII zcau*D<;8yL>QkDaz7cuA^Vt?U8Z&)(b~z(aHiPV}^aT0A^zH`bnS zy0zNS*RI3;*RR?GxJkQ@J%HQSU$F;p?|Vyo05{0Dum|t}NfCPh&%NO9VbnzNw2}3m zy-s>k=&n70yUNGe^Mk;6G4Q$=m>>owih(I&V5%6HmK(5=@9DWA3d|G(v&6t`F)&9A z{48esp%{212Jo5zwcsd_(H5ZBO(EnUQjTK4NemPa1I}WgkQi_g1FmAAs2C_i0c&oC zdWlqTF%V-9;Ngr_G=Qmb5WwlO+`vXLut^MT76UuQz%Hv8QpCV+F@V!Fxe0wB20j!6 z>0$uqqI2UM76TtY3DEwB)84tdBVypF82D5SV9}o&=a?A4@jaLMTnuE2fs;I7eS~`a zLZnWKfzx6jOAMS5182p+IWcfv3|tTc7ZJeIR%#Y5iPU8=@TC~IDh9q11J}g>P6X!G z!Z%{zTQP9cNa^S5aC$m7@Us}0WZ&CRSynNSCwA5!-yh#xSL?i<`##U}oHKLgnVECWGrZ1Uh*toE<~2z32JtuI zAH-XP6CNJU2p2?EL^T2VZnNq_+|?S0nuuBmS43?@9fS_yj;Jex#~*Ih6GIIU4H1nH zeu$=s>xdhOM~KIj#rVTF*K`(-IHL=qE20~M-w4W28D3`~Vi1BS7gW=RBMecfQHarq zPZ9hfM6Hg`2&ov07>5{-n4p5kpNXmn{1u~G9nX2Hf@fe9 zG+!fDAdU<0ggNUF-ypt2q#*dK6uDKdV3UA>l`6zICcsmVSRt$tl@OH?HV9ip6@;A( z9)GwYM+`Y3oDtO#H4(KCZiw25I*7GeG5&BDc425YVlUzd;wT~mk%`DcoI@Dy2=SCt zE{Lj#YKR&LSA-7Xj_^R#Q^Dg;eN_ZsL^FgxA^;JHXoc8@*dxF*pw=~k#vhg^hP)8o z2p>cPL_iEDZrDl`XQPkg4FSc^MWzd9-&8c zKy*ZOLWCpwAU-Su9e;hxMBhUQ@KmcjbA|kp!LY}O1EM9OHKHA&7a~%Dp_J<$f}xKP zLj`!w+2^7^44z~{?i`~#rhS0ufrvo#X2|0Y*U%qBgAv0J(E>b^D^JNIcY*N;!FR-~ zktc|!h-dWrQ*8`9e_cexLBxo*bqh(8c~p`Dt>lQpT}>pWEO zL>nr!qCfmw4}4)uW8VLztn(s|QHbEl2jm(!!ZQ@8;JF)A@F_VJJUfJnn}`ww%_XIL z|HeP{ve4G_I}oLeMTjpEd~RB#U5MR?J&0UHp1>TcZ6#tWVjJRT z1L`2+Fd_|+fyhK0LmU^FOZ{1e_^AwZ{B182{W1&U7sOt~KE!^65pe*KB@jpbiB@1J zWqpF75r~n9QHarq@rdb&#fZ-lUodFyusV!kc4 zFFymhA@#Yyh{wDI0`n>IN*w)+*N8WWzY#OAf|&q=W)?^@8!-nl7x9@uJavITEXv!! z;LnFD`17F({(Pu{KOf34@JfFPF-j5d5gNL0T&+Qi=q>uQfGRjA)?r*mTtO7dp#5LU zc|{nygSd;hhxiBa7V%EtGpafVaT;-kzkidri1W^3=vTyVi2H~Kh~E)^ARZ$4D?qhT z1APZ*(n9J&7UBfrB;phz8xbQO2(E1`VlrZi3Lbx^sv;Z`SVYJbbu;o1A7R>1#HWZc zh;fJsCeZl9bx*|5Bt)#h=akk95sB!7_z=+-(GSs|U>bk8?g1DYh!~6*BJc&R(+Lrd z=#1!s=!)p3zUFXs-7)k5q6Z=Z(Nkb4RS=43g=mdvQwBQz!pfx4v_-T-v`6R>9S|J_ zzNG&6A(|rm6&Ol6F91VPp8EIS76~t)}sNOcngrScQdn-Q-3sZK!=UWQ8GXL?whB!XDv(a71|FUT7w;oWFnD zCwfQH>__l*s&eNzl7%>dIEgrg$VTv|1+})yqH_kW+eV0Ci>QK_Ci?v~r5zU4G13rx zC6U|^NB9GR3jTngfVt zFNI3cPDd_#@a;OX||UB{}4p;`!6gd3tZq7K3n;f1INFld?x zt*0)0BX$tuTf|00G9m@>Jz^7LGlEZU%G+(=hWPBJEXD!ELBt`%VMKMY4I8KeJ_#z< z#^95nDz+nb$e{gS%6Y$FXeS~S!DnLB>h>Y_Ba8wYsp|CzKE*3nz!5rGri?!2 z7)n`ul12^jNg5SB5qw%kjqo`m6@1P}1)nog!Dnw|{7CKasV)_Ks>?L~aEQAZ{TZB3>ijsNnJEZ&ieU5N`#3p-6j#9`OZY31TVYOT=;$ zX#C;26EU*qB3q!6@(q4Izt|Rj!+jKiy9cu5YG{%i1!GssGBRGNf1msi(!ed zLReR#_T`<*d6h&cgYdVgoAD3gEkc9q*dv?}&WIWSgQg}(Qw!lGkV##zLAW5QBB~)= z5pIau0tT+To)Dux!Vl3*;25RZA{-Eoh&qV62oD*w|4X?#PYih@d=L!~p@>!jSybB^ z@enbR5IRhASH~aDYlNZ3h$e_2L@=TyB1GT>Rn2#a$xk!JR|vySR4T$3YiNk@M+6`O z5zP@T1Wr;H_(nCkKPP$o;d@CtWNVk06Mv4vn7f4HHaF|-|VL?DOKen9L(>_+TC>_zND98$+0uKO^C(h%v0 zbBKI_(^SEah^>fih@Z+p$KRnF8AJi%JmLbP7;#;Jp_Kc5Lxge(`w>RO z0mMN>7UBfrBqA4)$B@S#ZuKmNt|IOt?je2`$fFAQ_H6kmV(@+YDvlyD5Si9u{Na_3 zVdyyG3Zf8Egt&&dDR7pm=9|>z{xIeN44U~M`QBDFkMCbs!S}DL;QQBA@a^j=K1Y0k zNI-lmVBij|7h+sQTtZw%+!4s9b-E!wK=eRFBKphV@rP>|fT2l>SD+f;f1J&@J9F`8Xy`W z8Y7x8=90gs)%Zc>WCVMngYetpGTrU2G%nn#-E7ih!=>Lh`$i8 z5U&w`BmR-W;}5r5ilO%i4fb1$us~QMtPs|SN(cva{NXM*iqLg}QFMWE3ULN;2~mu= zj`$66A7S_%^#|f1;tAp@;*G!!>S;D27m<%BP{HHRc~yiPh?|HK#4W^a#2tYWs_hrV z5yVjwX#C;4(-_J_Ttr+(TtO5f?jr69+@f~AN9-k-#vcyt!_Wc5LBuh{aYPZ~D&iXA zSHuGY>aoCW>d&``ZHS)`+YvhuI}z!Kj55&imsuvd`~-0lk%KskIET0(aEG>GEn*Ym zM+Jsb&fAKiRK#w?9>jjcA;e)s8X`;JE;afELmq!vUt(wj;yc7fL<(XvVhiF2#LtLb zR@A;cNc>7&_)3Hr%Mi;EUn5o^5)g@qRfyF9gJvB_^9^FXz;D!_nTXklIf%K4IK(`} zX95PUd!Z0xC1MRC2_Yep1@2P?pCZN}Vi03x@c6?kjli3Mu^92W zmH7O_U08ylr2@ZGqz57rF$D1uVklx5;$ws%3N;Ba4KW=t3o##|zMTC*-R>zOj9!S| zDtP?qql)k$A{y}tVl-khVhUm^Vurv&YA4798h=za z;}3VCABOrP1|kL_1|xjWA{rqYBbp%m6c|dm)utF~h6oUNMrqX%H4rrswGg!t^%4FIdHmtJ z+hV94q9Y<4(HYSN(G}56;5oHpgK$>I9}ZQ;P&I@r!VTe$sEhDGcp|(6Uhw@tRv=Af zge{^9!VY1Na6mXBoDePo2I_;Rju1m9@RIP4xXz#P7V!>Iig=IEU~O82g$y2lxNb`f zStBY5yrQ(HqHe}B#Gi=gh!=>Lh`%hw_`}t`!q98P8^qrNuW6loh+h%EA?_o1B5L_P z4_9E|NySz1%;G9|=6Ds45RVa01l~|}MTo12YlvbMJpNo)MYw^ui6}wbLfl5&LEIJi zo2t%3oHc>Q9}b=Y|8QW3il zyAgX3dlCB-7)rUi{TMPL4kOYK=>qSmf=!4mh#wF?BDON*@rP^JhM}JjKO?pyb|8Kc z;Hl0f#9G8U#5b1IzI=@HO5b8=Jz@jmJH$prG9m@>y#W7S%`yPZ{|3^0jaY$5KqMko zB32<*Bi1021PuIpCG&(B>Jh<+$H)T2XNZM}MTo_S&k)FlKd;md(E-sB(FqZb z=#1!s=!)pZ^B<_KcE?Z;0seIpe?$Nx5YZgb0uh7=1{gFgL7EUmD54djHG=OXm$!j? z8ir^qz`vcr^BTx$44&6OhJnR1I;bI@w?Rb{gdd_Qq8Y-D9#^#jdxV1k{}?CVw;w{E zKQyH*zJFa_iNW`;tKeJKRp=0Wf4>^x`}6ujaYuaRzBWdF(PDfp(ikfc zR}t3`B?!YUlp8iw8&L=G9-*lM{m~*U5S9oB6+Hg9(A&OF{ML^*qAG%4dDRFH3o2$J zW(n{QFFS||7>)=hgtH0lHKm-#!-rfqgNF|lJYuNe5kmzJ7@dqMcj{Nx{{Qj|VEF^Q z)@j>)@$P+d>D~JlcDCZT%bM(S3Hs`g6kr|HM%zM4tQyqbLNh@Mv<_-4ZCtMFECuul z%a<~`>%yh{TDl-9cUjjlQk0i(ZK-v-Z*%Fst$(=W>8y*85(es=C4Jk7@zS#O;X%^S z6+!K#n_az~q|%z9I_dE^T_q`YS(vAk+`zxRW~_Vy}g?`dgi6Qj(6Md%Z)YWN+VCDbh*jCuOwowKB#v4bQTWQvcBD zrP$=&@y4P3!ZWl|>@feZq!!^-r5ImtJ87TfUtfxk33rxS%?z`b@)N>6rS)fg*GWa& zf*hp3d+6#V{Xsn_xu%OU-p%#R*IIt1v69+0tmSDL*u1&)tYxs9b%##T)2B+A4RrOT zb`5LQvFkc&;;1RnQzFB=_)5_qdM}imKkL0LX{#9E zebeuEq)bm~o8pzSD|vQuhh(4REgL6n4BqIraf_sV9n{n1*}C*~OV>?U_iXK@wWHPs zuB~Al{yJ#7wu$YmOEXhuE}p5KnKxtCjKCT1rr(-AeR_xKKGP3QYcCEWD6#A@V|Q^!c>&ap!gC z?-vvnY%d5a@Gj64#OJ>_mv(O2xw~h_pA9|hc~*0_ByW4(`n>9SZ*%wNuFmb3n|mhV zOyrr+Gu6-BKb?F!{9N7 z*Lb^oTYKNDzoGuT`oZ;U)X%H8tzKfi3H3VE^Qxz+gpjLFP;98GrPN>5LIje_b2t52@p zsQR{QldJWqrmgm@YC+ZMRhw3IsG59Y%!z;#ud^0qg=Oio-X4!V{^Hp7W6O?>KW268 zVP10RUuR@xBxJ;A=rZ0O%|6=iXwcEDBMC>mk5oTWlAfKuI(<=kXnKCy z`m{x9gVL59c0Fvd{*ZK_G^m$hoy$^}7#C}oHO`BjyF1@=I_NansgF~jleN=5$4tjv zj*A`pI6iQg?GWwY<6!MjWPi|pvVE}qBfA}TqwLbFEUhxE${X7qwo7eeYy)kd*{reY zY17um$L3MxyvoliHLA43I?&p|`h?Xys|i-YR+lVKSWdTWW!cE`nMI<-bPH>XJV)&= zZ7Z!-druRi3Dne(R=p1zQK#FGmKIJ{U(-OJ2TnR?2y{2A!07Jfyy%l~R;TMgEW)s+509Rdj{&5Gd~j z%+GfF-5kKDUprJUz42&Xbp9%L#vXn4vu+}SOZ6=qW=?P~dtH?uF5^M~)VRE{0} zP$}ox^st^jN;%*CuY-Cbshq#C7)$xRG}7&?kk*FYN*T|@f^GIv%6WB679Jxt&m7DW6E?_(Z6ulyirA@z+}X#|?Wa0iN6g_nN0tK9W|zr-O%5&U+J|+jW)l zSyT`1QFo=BXADp`fZNw8ftkt*^pD)3I!bwr(ts$ht(5a=COzfyA8&x0QeJ}+aRXeH zav!P(pC+}a+`zk(=P$yZ)}#P`yE}naz+LwpmGj5fSSrUo@e`HvC&DRIjt52!r5-*x zrsrPLA9u96Qa;9l_CM~rYDyr7I)qQ6s!BOO8L^`-N;#j3(^JJ1mK$(Z%BLy$qTER- z_oj}T_QW953XV!3n=-Ls2c?`}3b3PgRL)<9&o8%S_DcR#`bGKdknao;WIo~+m&@y+ zl=DN&drWk28$|utb z_}ocW%Ht>>H((=`^K)>9+yJ#qfBc-S1 z%K2pgw>VlU=QF>0TA#vlJyA+IKa|`dQ9fKLr};7s|8cy3tOU4W+||RB@^e%JJ~Ts> zay|jg4f7vwz(-Wh!x0a$xQB))<@|DD+5p=Byux55z^@Ouiv}s>JTVPEGy|1#e(Z5q z4^Ybaxx)2OSgyanQqHH%^-$i=pal3O8h75b;U1c!l=BAQLp+@n z$GLx^e7aK3V=3<7X-YZ28^C@fQaOFiT}i`l$b5~q`5}K;8Fo`4zqs+nVSh3LVuA0LA&sGN7g zXXP6HS}EsQxNyUkE9HFQlOD&?WlDheGVe`VPj28VrJM&}J{CmzmrD6XD!_-`NaehT zW>Y>MQ%jY6o^VdxFn%prq6C`J3i$H%g;IW@Tmzp|Iln3_pmN;Ri>KM@q?Gf) z!W+PUyyq5Dc??&?TZRw8XUYov(BKwqpmKhfu&`Xi>y>i8VocAq(;qkRtx|r8H$ciP z3|ZLr8>NVM4nAeqDdju?Ire?6QqJ!idPxh4=mVyt6!FC6co-%r<$MvFo?53yMLdq-?pg^AV159V z^M^XVY)#LV&>z?1uaxsM7CYKZDd%>(imvhs-6+6s7y11zZb4V2oOc@T1*grMZB^6o*p+gTq)=03~o~=rJN_B$H%FoQl3Zk;K8t;%K2d6AsD-On#$=V z%An!5#@IlPDImWoz@3(@l=Iw#xN|yCId6a~mE&QqSIT*)#e<~1Qa+W+eMMJ!XSP!U zymPSOwn{l)SEx6}6o**aSSH$PjFaw$SZgg;(ib%|@9`4-NR?#xmA=ziMyH4POP>#^ zBHX3RDPboke61w(DVMN<5^i!r9wp>c4g7+DH6&1i({Gf(Kd;73{6z_R>O23*&qPXS z&k3uQgqP(K)=vA>F&$&sxIpGIN;3j^h1U)|x z^v93I&y--`gzZYgy>baVC}Afj{Gue>Etjy95^i!rs*-T0T*59&aQdARb}I>;DFL4_ zdnlnjC+t-cI+aVkP`UnzDtzA@1b~CiyG)cKdCn-N(nnTfiDw0O9}K*^FJQVbChtC6N)JzmlF637ks!2 zD8cCwC7f3h_@^E);Q}SJ=Y)$&f@iq|x+qba#0i&`1b&^z8m>^nMouVH68H;3Oems+ zbDY4(!D;Fw{~QM=h#hr}65eydW~zZ-#QK-3;W{PwKc<8mNT*4oeVBmy@O2UY8O+2E6ot*GkN%*8(LXRr+e0UPlxz1BcxJ`TV z584lU?g0I9AD&YU?VnN&Pm~(|Dc6UWlrV`C{!$X6$~EzV5;jtTd|Eu`~=gK+b#7e;pmHy<(A&G(EBB2 zHdZqE9Ts-72_+af!B0uxueULwDJAUWgl0+tf1Qm9{*-W&69SY3e)ZGCb_G&`(_fU( zTuI<>Rj`H@l+d0Nf|P{(a?kc)N|?k6EtQ0O<+eA35;k%|sFJ{^qp%OJ>A^k639TuC zpGg0dYoZm^@SYRGlp4;KOK3|8{;xusTDGHw;jbuDuVnHYNZgzbl(2#mIw}bd%5|m_ zB^>31a3$e_Q8bU(@-vuJqV{`Z^?~ausp1uYr}Zw6Vi{tua9x8k?Hb z#KB2gQQuW3Rcqq#jkdk?OB08)9BNoedOFkLoi@byc$UK~t#q|o=nuxIIEVd~#$PHs zRCO|@ZU{}c)w&uddOEDEVlmS3f9vc&o!>uI?dhHHbyn;0*B)HEZta4#(QEsx?I4Z& zGt}3hU3)^>AuX4tOZ}y`lDp&}y-9kIRFssNl#;YGDJH3VQmZ7dq&I6Wt=X|=@tWyt zUar2iI%oBc)rqTPR<~O1zS?&6%T@PQrL3B~s{g7Et6WySTzP9{-pcfqlUH_F>9f*h z<-5d3i8~VKB}OOqOmt6tmvArPV8WJ!#R(G|t~I>odd=qA z>#HSKGw8B`L03bsHoWS3RdcnZDBDo9wJ4z|wkWD7qA0A$uc&&_i^A=Ns|%+Uj-+b| z0t%fAv#xBvvW%`M7ay!)o6BjJHeXsq*A}>5dVMkVV)Dg^ zi$NEwU(CI*_rmH6i!MyNF!Dmb3t<;@7pyMaJ)e7i`}y_fBhK5Le_D`VkWsL?U|GTV z0)uyfeZj;0;{1&Kt@%sx_4y6+ZSr5AOFp;c+?aE&=U$&JIh%1d?(E33;b&ju73Zbp z&B_bP^Uf>IU7H)98K5ZR*sZ&pi(8TFI@eLI{pn%`cd7E*&`E}-F77UuoD-dAI}diQ z;r!0&x>KIhKBo;%^PGa6+~q3=wmBv`PIesZ*viq%QS123;g-V&hvg1E9b6o=4iD^e z?04BG+V`>VVE@MMmR+XZHoK*Ev+ZK+g6-Z_c~oUfmFOznt2C-|&o+;)EZAVX*tVyw zn{AQJ7Msa7(Kg*}8rj&m*gUITRQaIv?rrE?!$`WU!|$Z-r2Wb469-PrIuUll??m+z zFS3fW(z4>R#%FnF*=IdGe)0I;D%pN1yB!QYXmjx4fx-i;55ymcJ)l3}eZcuZuJM3zt8tcbsIi;T z%J_7D$^O*+tM|w658Cg!-+6z@zN~$z`(pPE-50S>w=YPu@8RCt(3t^quHh5Yb9zL8&H9`_0$wRg)Ut<7mFireFmPn}R3JZ;u?b ztY*Gi$G*-Dj8m)sOR&Xe^BXI#xoPIV1=GxT=&T*JdBKi%Q@n${Q;iIIBK^-Njht1{ zqbmpZg#AnX6+OCM`TSh;Fu%caaL-Be+aw1s)ccn;H>EW(`@AT49Y_zXkNGv_;KHru zH$@Ik{kv_&)mk<-Uv2c4w4GC%{7bN+2UcFQq6bzEwg_xswnNWmQJb5Zn?G9RV5jHi zw^I(bSpF};3v0|jDk(m+Z&#I=KceK|)I0yS<}34iNM3W(O!FOzZpsI0nE5s3U`1`p z!By@5WzCA()Fx4z)gJOev#yhmxz`psTW)ml0qB1>XrF6<)G!6e_3-=l=D0j$JnS5_oMe7`lOzqdI04$D|!Is;GVJOpQxoC z^h90dB9Fe~%pM_fMn!|SDOkZ6DhEf*GrzHckNDAzHNTtWU?=Hc)~x7_k-TO_Z;W10O=C`NrQQFJT=l)BuMQ!s(pS))McK;IW zJJftI(~CB?{zCH)yBw_OWls)H?Pz}Qo2ngeKDaBI+N@UTUxF1Kvhtc09kOz;qC>WB zb<-OovxBP~tmyra9IWX5kQ}V&{gCz|Z6_TyX4{m56&)~g@WLAN&jdLrA29#(rPi;O zm${eP^{!@%?Q5GYj;lk(=AQN)X?yN$H2+-L#leb(D>+!va3u#T8m^ih* zibfJS*rN8otXa`W@=GM`+ZKUc%(f{9D|(HSgB88T$-#C7g-#Au^g<^G>sRnXH#vqH-s97R-Y2|ut?<*B zoK?}0BL^!wa^zrzM^0CIbgT6+|Ga3%!HV7|$icqn%s)nQP=2Fl<`v@B0UEA1T`>O& zAqOjZbmiclzUF%?2cKV|YX9de-uMA#U&D$Ank|kPY_>RUh}mMlp=OKM4>MbAKiq6_ zToe_X*;mi%(7vkniTN#-gB5*RmV?hn{>z%je>4B!J!`EV38}p*d_u}u6&($7u%e?u z4pwwD6da<)S4}YAZ8=!curCKI8usO2MZ0D{KEiUf6@8ri zcmW@Hv(2|D2P+!(O+kL2EWLf-#$LUbmhQa@(>aE@S!&$r`Ul9?7%z69#r?y1sUsK0M)6`NUMz{`MZUzy7&(F$JM&`3NM7v1ivgo~u`4eof69y9 zc+okA7rXOf{8(Q6fES;Ri~V^qV=gZa;KhJ>yf}~-ljrjy z-JC()jpxO|ycoZL7l-iT)6aPEBVLSJ#EV0DF@G^H4&z1r7rgi}FQzVOyKIQnaJlpj zmwqRg-sQ!Oyy*EWFDCP1!f(8oLW}z!@Y45O82dXfZsNs~KX`F7FGfD%#Vx#;@t7BX z;KhKay!az8CO_lFt-R>`oENw8V*CqU{D~KzzU0N9c`@o0FK(yBFY;fvHRiu=7g{+| zJWr`qV<(@(wi?W5C|@to)BpdD<+ImcPvmpb2fFj4oYj-Bq5GgeKS=ZY@B`Q@(x3hx z8NpAIw6OoJbAqXN>c9T~&yQ=6#w^h{J*2|f9(~C2KqdDBhkL>jYOw?F8aQQ zv^mn`S^7|E{*zkvmAgcbm^OV%w3P6qR&|TO7V^v#l{@sEHf2=w1W7xpR{aLC)0CX4 zoyNzEnmBD#Gi9O*rMUA%dBzHld|iyR$U9s|(|t_tLX$&;R@1xk#1r09#`1`MQub*7 zi%Hhreo~2r??@@q+kcT1;2XZgq6JMd(Yp6HQmb}d?IoL)5uQ?f!|+f^pXD1N<)?=C zlTy2N9ho$rw7z54V#&Uvzg~)T4v*sLL0qM{Cf?hnt>4r96v2Mpr=;XfL5{{MO}!^- zjSZXl4$_)JgOl_gMt!#LdJ8Edg(jjXd0xv-in>$FMmlF7Tv=-Rov(+K;qN zMtbVTOHXUiAUa!YZ|w74(h6v;s(-GA5Vw)k2D6f^6y}!ZE2j+*8dwzNgohyuW77Pv~k(b9Dr_lIkwhH`Wf4CRdGcw`d+9?W*rv&!Iy^ z%+zVoJo!lURA1@lZe53@N4iu=KUxt!&ao%Snzb|S2kbqx(10?5W-eZhQmip7>JT|Too286{5kXQwY>=b$ zB<`Wn-6bXys`I2 z^&5rPldliD9(3LN`hA*)V{7r+;``SMukF1y=$h`@-K$&aI+_X)r9 z7t$p+%Vps*1%-4)&7%CM{K$M= z{{3@>bVbdeb3x~9&Mi4R^lWzCfxOjp6;1WLr@3jlo9QZ=*Jm#BwKLIYvQLjc{UWD0 zCoRW2=V^9H_S)=O+0NO?rv{zUowA~-J@QY^IvI8H;)$#i$tT927nRJz{7o2Jdk$XJ~*EyEc3RzFm0*ybDT>*H(f zySTyN2A6zNd=h=S`)GY~yc4}gdAoRDuYaQc^7=h#q7a@YB(UBauS~B#UOrx1JQsNO z_jLEX=W&9r!|CJE)We;w!+Aj0;q0p0y{@+ILHBj;KJL$S>AEet1-fW?+K_E^0_%9y z(bmbKYi|bE_Nx8BEyrz_!7b5kGF^1j$}Puru&bA=)-|tIdadcT`qR82+FB24o~XI6 z=7yT{Y6jPIsaaHGa*gO3O>4N9oQs@nCc+p4as8eKKfMW11x z@#1LO(fFfdj(XBnEEkU~J2L)A#1YRU_tVqp3YJ0Xe(8(oQWg8O7l+p#t`vDV;PA*p zQfjGwh+(jci_3NAEzZN7y_}1bX+dnA9yq2rE}+YL-Z>OG?4V0}20L`8i+Uc}=h?5Z zpH35lT(UbsQ-dtG>tOe?N@kU9Rhm{Qpo@44Y_vAhD_d7yUTJWpR+YReJ+RKPK4=|7 zQ-kcY8f>MtT537LQfrwbPYUuzdtEz9+q8=IrKU)eqFF3Y3Zft3zxkupmJafyAmN=m zgv+1elxtP`JJRo*_Ndm$gWi<$bRcvcx2=V-Q^yWohYa26Q&Z*2rujcg8C3*&5SCjj z5ysaD{)x}VR8uKOZX@m>o>hXhKM{T9b__}l{jk*m0zIkjUWiDC(Foy(Xo|Rw zxPf?tcwAYGKhe~M&f*bgbU}1QbVCe43`7h)VHAu8q}c*YhrqQ1g&JMkFd`+iL04~O_BeRUBAd>#0cN;LY1@QyoN5oddPl%rpI}ta_K*wK6nKYXFi06nGh)&`Ki1%DL zA`;OD@gbtG0)zbU_s7rx#6ZL#goikixeH#1`Ur1?55kurk3U?)6AV2?JVX46c#e31 zcquS~s!kAljzM>2o1P_%RqFV|;yZ%nClEtIe2Z9**eo!T*7+Rq1!4(eDS&=u2c-EL zu>x^iU=%g94)G1*J46cNd&DLI16P+S#5g7}nqY;nMpQynM%W;15mgX&GI;#qh8!{E zgm6YwN7O{rLbxGnBkCa5YQ^}&UD$=8-H5%2BZ#Aj3`8a(3vmu%xFa-%y5NGSil~OD zfpA6W5bg*ML_HNe{?u1R@I^F3_#*-kfrwU!ZHPSrG1N|76KMQld1A;5;f?S?G(a>& zG(t2+G(j{cn8qLOLJJIqAVLvs5MhY6h@JvtscJt&Q$&zD{%~F}hT0?ahz^L3h)#%b zL?6V5WuW7)Z<%QRdVz`5pLg`(Kz>1F*ki;2(Gt-b(GJlI5vjmX%5@LH&_{@&0+T51 zx#$n$4Wc`yeSqkJh(Ppa$m0)J*B?WJ5yKGC0BgA9G69nH7E$>ra=NY~J zl<7|ly+&AKtDhi7AVvyIrn+y53K+K$cK`;>U6AH)#6O6)h*HFRga*4{Auxrya8IN$ zeibmVeiLHcNBoZX1Mv{?67d(}6+$ceGmY9gD@SPmm$J@_JVqhnD&iWV7;znO191~k zf_TC2zvU;xbZT`W-Ns&*!ljHwh%XVxL=BvF8gT}Zi^xNqLm2W=1p+gu?yK}3O70JX z-=3-9cVsGPYML_8G&E(Psc_1`)6S^t&|EVLc>GCHMW9(`%JO)o8FeL^UdDu(l=c;Z zr`3_uI6`yjl;LXx%?(o);rU@`9U6alC7KncEX1=QA%+Ln-SM42?jHM2td= zMvO;HM=VBsj`)H>+pm$kumnR(1?Exb1|fzaK1K{jL?Pl3^APiGseO3|aYO2Jff0{+ z3k2p<7 z1%E!2Vc?bi5@PUV?`qzAgob|BM2%<>y+wZ(PzC42I*iMRD~LiFwEs&vuLwhT5O)#x z5dR?FBHjsnMpfq^P9x6n_iyqRao$-B{fhVvaUbyj@jK!V#6tvs1*kS^pzi=pT1Z{U zLYzRHM4UooBVxn@!L^M=Oh!ym!Q;vkI*AJAUX=6zKM}!ydg=PZFKcv^ceWG_H z&3=Rtk%c&cIEgrg$VTv|1$k4soywwf29}Kw!xm8mF-`RQYf3vTs$--f(h>XtL2i}P z_yd9p{(w-IwqH}qA^wD*hAtv5Auc1XAoydFS^oj<{-S(l_*jV!M{H$*UjsABYY4I5N%AL@rPHcC!SiX3DKfe2G6uE z*UhLYYGBktxFXyTwGnj?o&?kQ!`1m>sG&d-MFxm2Fa{z9AqFFcA;uzRB4(+-DbIB` z6C*t17UH&mL=m3&P~IgB{yhd2jS)QMyc*#d9aZq;tqSP)x=4)_Eps zW4vd`;}1)Nd0K=8!V*yh;ec>NI3cPDd_#@aun^-9t0snOAzTq|h}wuc2v39;f~Ve; zcL_CWkf-vLwVt~0jo3kqZxI_2$%quh_lQl1%?LiZDK~21hWPBJ+Jys%gNQ?j!-(o) zi#AYgd=gZyjlm~DRcuG>kip{*=lz1AorqKfpNUbc+lSbXFbZs>s@Eg<6t7$XN9bgk zGXAjmT!k9qa}_H1l#hy|hzvv~;uzw%Kr*%SBf_v1wF|+gpyXD0rE`dUL;>O=;u7LA z;)*~Dk3U(e2qzFH5vLH@h#bUe#2G{`BF_XGe^RK`vm*38Aq|m^_!aRR;y&U5;!nhL z#7lx{{NYyr!q6+kJAqA<#^+AtM}=`7aRE_?xQDP6#|l?qXF%B_oDnXFssdZ6hR&jH zMi&I1Z;^Y-5kA?Wf=|9EpyQ8E4XL40gcUYqji`jEEbs$0)Kyf#=!W2PG;%u};d3+$ zLn(_-(x@RmNu#1Cf=|n+5k6<6g3lSL;B!VQ`0S00AE_Na)un<@b(zK=4)OUPH8cP* z5HSexDPjyF1~C>f4l$muKagA9N?rI^gc!pSQ3yT-rLMy#gH-UzAQgNvNX00`Xn;Y! z8Vzu~^_|icCOEL`*`&A|@lIAg0RT z@rUc4hN0<*-w}TZY^QZ*BjzCHBH|G95DDt|!_{5K&~3yW#9f4qIP`W<1z(8>V;N#K zVhzHOgpv?z5jPMw5haLQh=+*Rh&L*D{P|lI;UC0XfnO-n9-&8kfmniAiue+-+yokb zxb8#@twgLstV6sI*hv-GBAOul5KR%y2&VCeYY4zlD?~d)M?^T{bAjDdTNOlAM0G?B z^?2o#YGSAs!WH3x@Iur>bQ0J@Rofxzmw}Ey?=sQM0Eh+%UqnMhYeXAF7@{qrg91b8 zUh3U%;uARIKH>p_&+5xBm7KN05iHF6g`G1Lgr7~ziyL^MaV zKm;Lz5iQm6hx;9Zp-_Q+6yekG^0qSgLI)LmZG#HFwn4=+1fA(Fi&#U|22CZ9#s=Yx za6z~sY9n+AcY*!XZNAPy?i_{YKYNT_awx8#4^P4O5*d+L8|+XXq8b%)Xn%v zti%|Kh(dgV7=ajx7>_VaKutt^iTFz35OqP1=z!>m=z)kp^i;v)4`0?Q?{2PpFk%Q| z7~*3@G-4EDEMlC%VQQzT2{it&T4SgUA`Hu*1ybm~HhsGD&M!T0#db#vrb#BYfEh)0Mgh^Gn+rCi-h4E=?8 zg?Np4gLsFij2l!1VTY*BkjI}R)P={Q2F5eQb3`fPJwhw$<_atjmIy0^btP(F-l@D& zB@xOX{4MHc{DXLlpxQ{A%pgRDOcx-A#a2aq5&cl(MlkTYFi^7B1RHI zhiUHW_``XPFw_{)1QCP?MzlnP2%Mm*`7SZ}X~y^pVc3aEMfhS34H5o`07M|7IiiKY zN$LXMs3!O4B#%FQFR4j{Wr#$?O2le}gh)YrkJyCRYyyox+@T#9`b8j{B5M)r5Z@p+ zAihIvL?k1&5KQ9_H}o@xwj+)RiENTAI4A`A{}uKkuPwX zD)ua?_XC};``TC@crv5`1W-bpCi6NBp|*O zFmOZbg%}qRmk^f`cLefjookHSOh!yYOh?QRxJ0$JM1&xQn?U0a=Z(P7c*F$6M8qt_Y{VSIT!G8f zP6tFsf@%EWP$vv^K|~;WA$lYFAU;I&Mf5{_tRC=Js0+R##At{JL^MaVKm;Lz5uu1y zWuW7)eVOQ^H6k3*8POHd6EPAoN}!N7s18D>z);E|PYih>>LI)lK8Oa0Mu^6UCI~-9 z5Pj((ccCeUnj!oV0SxK!d&ioKtvar;>SR@WcLY_T{Dmn0*3s;y>yo7o{q5`UJf=6K zI@(SymN$>SH~MQkjnW#f(2o?>?n^)8N#C-BE9>x=XP1?7{z_B_<(HK5YgFzJ-;QP!D=Z2hVic(>7lz;;-?0!&aPA%J~aW z+)HPba{eLKAmg^&PQzQ+ibvtrK9}%Xho!74x(q3`W$#F7P+*X!6fn@gj^t#g50uiX z=@X=l%sf`W{_g1x&?nG?+umz?f9NXqZ3-!4V7Mv{Ur|AM|!nf01eI2z%&qlgj3vE{^ z^I$|bD|#6FOAA)@9w6eaPZr(GR- zHCvwBYhv7GW{~|X7Kc8Lo+-xoHMo`oprSO(WggBj$|BJePrm7fFrNdOVTsa zQ`6(<7wjIUZB84M7MgbdaMt05hmDU*!>ed5{Ip;E{XU%j>r6im*Tqqt2|96~OV6~A$wo;>pdV8a5(_Rr)m1xGo79oL>SAcIV$!%3wZz-;6#EYaP-56uZfS{+A zQn&TK4wCJH2oLG)kRT`daF(1t3K}Ij*A5D>XcZ!*IQ!SK3ThGBN=p2p_duF-FvwZ5 z4+-~^GFte?OBpUSxnSf6y`81ddBF}=!9f8*lC}Z8+ARB^w>QsYSYL{o<4WfMrL>gr zNMq{O-p?$hIcIft(yS^Gp2md!y|!8zqg=elYwHcxSWWLdGG^MODV-)woHiwT+9Y)* z%h>3t4O`F*l)I+;*0Y0Y5vBHy5gnvhAKe%!a(+;(^w8Fq=CWLlENLmBc+loU66764PTo6aJ|$!C}~Bom6TC4Vv&^4g{E+P*j&FXX zX0O(gf3V&`T5+grf5|@}sD+fQ3$9B?b;*DIKo0oaZK0v~R?KIOK6|$yeL>=a$qV`{ z@LBL6zJGjhe2sYP_`!yv`6=@k%pW$t^Zd+tjpn_KyBBAnadh4lH!p5joKKu}+@ra9 za~IDYHTT_|eRKNEsp5Ru>AaKs9EUk4X3v{FY<8>Jjb_`lZ0 zpP7L(AIv!G^qJFqr#VhDr1r17j&pbylOD4mrhklAOwO1@$@sc!OpQyUmyeDa-Dvdx zYw!M}V$A#hfj1RGRD{^UV91YXs)-^DqA>kH$ZjZ#P(($DDTNSX%R4J%h3tk96G9O} z7=)sz-R!cP-K^}gOZ$1gue`3k&-ZRVe|^vWJ?DFF=Q!u}=ym;?Y36#*)pgDFd>wQ* zXm`-sprD{WK~-AE_ij%lnwrY&N|(y)XYtQMo_%;)^wj^U)zg}a;tKByX+>>$ak))- z-4mxLvM1S(lODT2mOr+9oQpdsT9p};m6sNlW|W4Ms!NSaiyx_RA4Tb-!iQN8BOca1 zsCPiwyys_WOxF3Aq`@RhVOEd3<-K)D>f{0Sru6N~kQ*k3jl`iK_ z)E%cgg|`!Kd*9aK28w>Sq_}}1JNlPfttPiPs@SF2rr4zT#m(%SNjIf8!*2A(ofNCD z7hX@j?ti_esJzIp$g-&JTFJG%Yhl+6kT;rqH5&Vy-q_#dUrD^;d&T`q?<+ZlF@^qx zszOC!;pL>uF-XvScPZgg@Fkl|H3h{5sRaoIQrt_iFh3eQ8<%{O{C5|#FD71$=!XDJ z(~Bht&y2<%rxv#yOgJBQ-ut}C`Qp5!yr?|gxr}r1=e*CU&Q+h)x_@*_H*|HDw39qQ z;N(7oNP~6;HG?7yI|(=a^YnFfcgL_p_wXK%dJO&##s4D)(>~p69(S4VS}$RLmG)l6 zKbd{sNaBHTdwYFJPu;?COa1$+8^3G5(9{>?Cp5$N{4aC%h-jopr8o#E>n4_y(O`hxs~roJFQp{Xy(Z-OmP(Xw=JH0VWW>I<|Hn)(85 zgr>ego5hE)&Ntf|U#HO27cSEOydkqOqeXk**sqZyZ zKN@KdCwn&jI2)RJl0_Su`cl#OV)eaOwwW}%SCA{C`c`lLoG_KX2P`yu#5EoY_Nm$U z`{M2}to+U4#vicI)E6BhH1$P?2u*#_A+de1&M!|izCl7$-y2nE>U*O$H1)huV_V<_ zJSkVtI(bv?IveI}{ADOCcE7%L_Q7J?UeL2n-qe=>7t5Ra65xcUz67`cHJ)1s_r`yp zLQ`K{Nkdc53s`9CdjZ=W!`8m>XndVQQ(rcb(A1YI>U<_|E&m3eLF#+ zsc$DJH1+KSyKU#|oYwf`6q@=Tr_g-!sPR{V(A4)hCxr6f=gh{}DKzyZi8airCrM0b z>Pr&qb{voMWJTla6q@>SpBmd!L`-9&gPPFPH^2zZH+lvbp?Ud7 zEVdyXM-}FdI1^8N)bAA5zB}-9DkIZ$BwCv7f~5 zJzJtTrAe4dU$X3oHhAXZw)N;Gk*Cn#uduQBmyiGdXF{tr6Q;uUj7jC? zd|uY>MpU=y6yi{D`<$7MGU*=^3FU_y;asw}8uJUptFKe&yauYB8uk$jIm%1Cg z+{{Z=F)z39GW!-UxAIbUhnGpbOw#dk8_Lu7c(tAXFzh}rzvN|Q2``g*>HUzGDZI>o z#LFGLRFv_O@iP4}FH?DGUe3#%yo{;fGcHd3Qg=yvA6Oy)VsG5rn+43K3Zbw^Dlqbml#-KjgRC1!_g4`4Vn4B z7BchS)T;lcR{b}%>OZ$b!RZ%^9Tuj>y?7SKIP5&>&vFe}9CONKd>4-YLKcTa>pF6r z?5sxH+327Aja;BvvrqR&JOljJ^b^hkuLelbd4EUG>a_>OQM;Ma%I)zrTI(gCA*TbK%YYcUQ3!}(99IBOn&&FuLAVB}2}OVy#&I2R zqs|Qgmot328Q@KbUnC-IT`?eraohsLFpk?m04?DTAck@1fU(rM3%C>R0b&@(eLxK3 zC;|Qn<9GnQp=bCZu#vXs5x_6C5;m?B;MeB}Cfw%O4egODYQ^Iy$2*lO2~oRG+j^N7NHk#lVAV6Z!x} zgucKvLOfm> z_@jb;pw|5qa$DxP)2YC_ zI7qxx|9C*W)xR3x-gW;qKyL_>ffs}+KqX-+@QmOK_!6c8{Em;pvOfpJtbi{7F<-zB5R(U{YanZyX$CNb zwr(cCzuzP*&L4=O6$JqE3A2ECgxSChLLeZ95(EKas=*xKQ%C~FpSe&E+Js=B8(|(W zl{R5Mu$q>=0Ei@n0O5pCJ`Z6bFom!Pa3_QTZa~BMvltpfttG%{LO37>Fhl?wsS^qC zuM!K-&r)D1VHprXhysEM%YnIs6~G*E2`ix>YDEM7gjK*y!fId#f&cPS2r&TvPPec< zvA`z68ek2m=i^TlX)RjI2(4qz350nr@7_>&4Pr`As3 z7~w16Tf#2j8$ue8N!Se>BJ2SU5cUEYgmfT{un*WJjz3>Rj9UAFWI_h;CE)XV6V3pIgtI_C;T&+0kOy2KoCk6U7l0E2`1o@XI!>*8 zpcA10=t#H(SQ0J+tqFxdOTrbP1>q{toNx^=Art}Mi(wqsp*z&N0Td8!0-q6zfewUQ zKzqV%z>IJQXhzThO$m2_CWL!{#+Y;;I!P!24ig>#)`W*Z55gm$JE0WlN+<(56CMLn z!V|!XP|kN@?MM|sTf$SI4dEGJL8t_r2~~g{;X6P<_#Ut&R09JD&w;)T!1(h6)Q4I> z0=)?@fNq4BfQ;}H(1q|bFqBXOxDZ|eLkPbBPJ~~9K|sU!Qwupz>os6c_zmbscmwnz z)B!ySZvi>scff=22jEJ02aF=T2S$qH&!5l;YW)SM2p@pqgpYtDp&n2Y{s#IJ47%c@ z7C{2|5DbAy1f#APeyKJrvvon(+1UB z0Rc2!M_@Xk6Y!oU`wVzTkOIFEIs^Pp6vB|)1>l$23+M{`N{|7+;P}6x)eYizxe%u7 z4)D8x2(k94(*@T|JEJ829h+qvE5_$t4XlZ=_ej5>C(S5sO{P~mA53Oo~4e&jo zKkyx408mA+1q^6K3gB<**a7tfd*Ba(1MoXRqlDg)9D$z+1A(6igMb$VC*VhdGw=gp zFz}o(1d!0ixd1iP846Si;N#CQ=oz(!15XJmpn@<0C?|{ro)AU>j|r|oDPc5ln=l68 zcO?;?dpF=7UjGephwf5qETAKd1MU#U1GfljpqStR+$4AcHwa$9C4x5~Mte*EH1W+p zeZ6fW6i1i@h>;sUfEdOx84zPSrT{x>o~b}8!53hJX}}J`=RgYK3k{S^@&mRJrUOZY z8NgP;OkfMaAJ|L?01^qa05P*;HgJeKfxxF+4U9iQkQli!2gso5<^uZ(!NAvqdB8rx zd?1~$0N6_i0n!Mez%If<;1glZ3^<3BnTKI3XO!CPV?!b+fk5DnxLRsng0)xbFd|FxbW!~nU3SU^iy(^X?+ zaGDf{Rt_N^I6_zphzTC+fG?@D9w;Ov0H+8WfTM(sKo(&WKyeqE`b0=f!q^O~r|Gr; zVtmF{Kn&JM0wQU$Z9oWNJ1~dvB@jeN1_B8wz-$iee+=q(K(naDfB-@&;7`~I%p`mT zh+!PN05PT`4e+JOb_215JwOa$FQ5^_IMSij)Y=D#p&efX(bU-wtR!RrVqnGrU^#UT z0#SrRz%oK6u#|9^k3VZj-=HNXczg?p*&bPdnEG)95c5Ee0>9(W6n>D8xCdM#+y|}_N&qpY;{hNBcsvBeD2+!zIQ=F|0Wp803|LH^$9zX6hITvw z#5j*~K+Mvp0Orz6PXRx|GvEtCC2)(jvLH=zdbB)kH6u13T7^9wYMTE7BQ3AMl!!fRkM;Wxm8 z@CHy5>Hsl4<1HZOYWxm}i5q_a|AcY8gWPBd?*TEv<4-`$_V^2MrO7@3qX-{?k%W3+ z1mSN$MKF-zXo?__X>cq%dZGj*B)P6QKR5TQBHpU?uZ z`2t0q*eQA7QOsq06)h zGJt<%6*}F30z!8npU?xiNRR^;2t5HYz@rx+MtfKT{1d&f=-x7nKl~%Tpgw375&8nx z2>pPo1RLNAp+8Va7yxJqw!mqE0yssm10v`N*4RU0R0-~>D%I0Gew!2myW5FY9ffFC+E+zikK;>Qj`Ybd~v9Rv&m&J%_M{E$cJr~rP* zBVYuOM;Hm5Ba8yh5?p~Zgwa3_KmHMxFa|nFEjQopD_UtgEb}sV&ujopo|vh1Mp)#;W11G?h~c}IJ|4n?(Ow&NQq|brw^vd`G_>`DoQ11tbSsK#;F=b;0Am(q(1jJ+xe?ZLa2mr)1 zk6FN{oDYmYvmr48BoGk8ID!B%7Gn-zO|QVY0MF789z-x8rfkdu#Qcrh+!P5z&|k^fEeKM6<~mCcZH{97w|W2LK^Uzup8(nhH>nH#E^`=fEb^V4)9BX zg~jay#K?`W0WpkYKOn|*WB_7-#{oc$_BaTLp&y6%_|uM-or#v1YH=7iNSpc%z|Uw2 zoA51=LC6C36OI7O8oF<$BP7%%m{A5tW_;U`*rdA$sjBp+}O1JAd%ODH_>0)U?-6mSXP z=TQV)2Kb3D0foSB@n+~(pfqY-1uhe=0hb6xKmp-8kWaV)TqN8C_=zuJMa2L=uOr|V zz)yS$xD9BIlkPzLgr?Ba0fz{8fk%XUz(c})-~pioC?Pxm?h+mXI>IC14xyCqj&766 zfLnyeKr!J7aFb9D+#pl{*9lL7BEmD^8le)nN~i*^GyvnzcTgdOW+ORC*U{2&%jHdVf?9qUQp{5@FU?D;0MC5z;i+^P)c|W+$a17 z+#|dJ_!$=A*IEaNQ5tUn3o(r2cSy|N_yZ7=Io<&+X(#a>5aT@l1jHnazksGR*#|&O z&-e(4xf=CAJ#Ek5eEbG=*B006(`R%+wCxr_Kbl2l%No0Udx4f)%iU&=HtV z=mg9odZkXl24P=X8aGhrz36JZ!o zO&AV*Pf!8h5k>$NgpoiJVHB`R9DiJ)XljiHRuaYlD+q4Da)LV`hH;DqK2T>I@E2h` z@FzhHyeD`7nktefR7vmxo)Nr(r-TVWB4Hx1i7*LxNALk^2$O+S!W4iJrfQ%aBwrwf zFbzm1d=6|Ud;x4G_yH=ybYM7P22e+s3G5{J179`(<4*vzjasvSjfC0220|c^KnMcX z6XpQx2y+2fLNG9rFb`->m=6pC8pfXmkTbPH00kiw7(iGE^d~F=YzSdMKf+?5J7EdX zjSvoWB}4#L;=3{u>OiffKzqV6pdBF!up}%8+7MO%EeI=tQG{q<1Ys30l(4!R#vd0F ze=YPT!~oWWSfCeS4bYPi2gnKWKo7!Npe11)Foduk82kyE`UJ>{S{r~tgpI&J!Y06u zkO=f8YzF!ewg9GttpGpSF6@(&fL{pP07pKVF#c?Zlr+E)y^(90p7X-vCVs-vUhtSpYxTE-dW` zz%TF+a1`JdYY5OBgZL!}g0caAErEdJ0Kb+%zzKj~93kK&u&n7PQ@}rA9Do?p zp#|pBWVyf`0et*91GS~?J_|G>oCAyrc>up`M%aY&0Kce1zy*L`+aTZ~u$fkr4ZfBCp`khER9lN z26f5+F^uCeAjWh&0mJ~0a$qFQQvr-1JOxyQXTYZ@4U9jP&@gIM0b*RmcL2X0TzGij z1N?e$0o4G{(h%?*7)SU45c4;F1V&Nk1t3OyyaagYN5lB@6C~z={0#J`nQ8!j3AnJL zR{+2KUcfH^zx-anuK>UNUO+7%rg^*u_}3GJ&ToL26!Hcbs-adLRD-YY2-CdK#cPk0*FB$ zEIlu^C0LcVDU^`(tu#GSS zNNfPcpP3N@FHlNI2Obgj0S^gZ0}lxM`S?>p%0MfPZ~)jvI0z&W4gu>4 znZP>2VSs;nOeDkH{lF0o^TczM>q$#6Y_vXg!8}x z!UbS1;UX}HkPl23!#D~cKWbe9z93u%J|`3c(+F1pU&2*jD&ZQij8FuG6RrbG2sZ%D zV$w}0j8F{BC)@(&5pDy)ggd}2f({5E+y(pz_kg8@`#>b2gzs4*NDqLqgonT|!XscP zp%ic-lmSBskAcC2C%_;=IWUk=0jz8Q#-FFq3TizAmJ=$0C_)vmknkN4O86cKAyfmi z3D1Fz$ij3Fp}^Z z7$Ls(euGrhdIJOz>VQDPTfl?xJK#q60~k$s2e=a615SiL0Y}1LeEd<8KA`15_z2h& z>Ve*bzX5B4K@S|t5+r~#!4R+`7y$}`F<|=%n))Wt0BSV_`V*P~HUtx(AE7xQCA0uO zBeVqi5=?Qya9dIDGT+X zv&_4Vr!TAQZk@yOd$^5c*QUwMSaXdvLK5U|N(uAk!4HbI(&5a^$F?J@wNOe~u-X;( zau32y>79p3yE1PNr4v*9VC};Y27!Cnn{{Zxj`XtrgZU?^Vpx`kyqe|qa&5(Sd&;}A zq&{vg?2J;~N?X>)?T}>02(NK$<80dj+S&nfE5jXq<=$G;ac&k8Lnk|J*YR#k4JA&@ zQ)2y;#n|Bv?qQ>>U0JPUTG;U@8$S;0Za?uJTx zws^C3$7Zuehs+C|w~*~S?AVhnTxr#*rCZR#pd|rIyj{mwv*9PDt610&ESfKn>AFbe zOm|2bk`iMZ!fcwTomgcnsgu^vO<8Kll6d4pR+KV@Id_zrvT0M)4s8BNPgABi>MCQk zE{Ma>Emt;?u+(f@Q|5Tgwujc-S6yPrWGCDbd9Z}Ny@NdkOE?Tr+W!+Q;ppUSuVnQn zkzG+dPG!#0hk3Qe&HC*JvDGKleOZjTXEMtVbc|r>y;UJBX`yGJR&m-(CSkgA7h^+( zf;}7K*q-H@+p1XlOx)I9cpx_Rs$`~H={Z*7$hLG)uh_B4Hc9du51(*lnw{1y*zQHj z1BSnJ_>wCwrP z#Y=}S?Z5PO-;)&Ih>c?4+10Op*&L|5m^TqAz6H6^iDS$#9@ zW)y-kls9W`6yJ!y5qLv-gPs0MU92g;o{1aQ*A(RzWfsYbOp2Ko3+We5&|<&G0=fk4eMapMyZg^S{@M;E(;8Z2pE9f<``Dh zTsn|>=XYqr{O92fteaxnq{}~1FAf6+IsNmFv{O1cIM}oP&8<31)D3g~-Oa5di}IH{ zu_!yGIo_TQN|tD+v|+j7^5N{6o4h|upNNvxQ&SZI4ZA@QRcL|euxyG|f3#paX zJ59PuB5~B--Yp$0VNs)9TeJ3irCXS6q*p3-kkfa0_G2+d)=ji8M|!oCu(AP;t(e3W zp&xuJ*qPmKJy?07tshg(Q?_Q!j;LE}eaERwjT*9j(xupIZ*3-bX4U=Vau(AL8)fbx z^85Ibe6QgAq=E7dn~c-qRo!B#Uu4LliDzqhw24$UgKt}HSzWuVZ=VP z!P68o0SQD4MtUOr^7?Te`7?Jx{TVXTXvDy=IB}>1HsFd_}QY$9A;DW{` zYiEW%dJapsu+C()r=-5D*x6CV5>HDrnRy4fIm_%JZKa(TqMRyWR#uM42eR}GHXP)@ z#8w|4mUz~7s$t*u|LI*Mc8s^IQ>zN%H^)zouZlYo zw>xfmT$8xBYa-W3)>OpaiVceGAA3C}HYOmZKYR6uXPke<((_BVVYk<3X_KX8k!K=z zM#e@uM@k~kV3#)`VnoFI@Z;gz!aIk*TvE1V+mg;pS}mzs9JKgVSVdS$SY+7Pu&PCO z7ads?xoGmDK8xNitXOz>;kJd-7mi+NvG9FpS?D)rO!v-K-f?m0giz9ibl8*kd}~D?+G8^xYa=jF9PJsjI^t z)9Fsu?TFhSZq?i>zLkkxrR-KsaY=DbaWZz6x|=RHjc?Z7D7xWt!}vxXc8&?xgRk2l zLr7PYgk5CywKVJ=tFLBiuBKj%x*B{{hJ9rAm53{Th!3hO%qom1bSg9`%)RV%x%g7f zrQ}Ny*h{J|DK42_sw@aAc#)r#AC>Q)|KeisMcKvb3%M6kFGO8%xnOg_1UVi$VGk)g zU!510=bu-1F6UhIIh%7eXEV^l91EHmuzDeJ@C)eCz)x~bqKTxu1^3T&-q zEOd|cT;{EIGiS9{a+$Vxzn83o)@HHSi{{$e$<_yr+9+%lj<)s+d!@|IX|SDQu%kT- zTO*y{=+8U4%xi1k$PDS9TQ6&DhJYlmRgL^SC0iQU$dB0oKkGT|{(bQXM`N$!q`lbQ zIO*`l=95jgUeMUjVgN9b8v5w*1AcTOKyI>vGlL#x~2$*lR)Cf8VSv zDaY}FRMSa4dWS@6!k#WynKm-jQempCU2OYfs%C8SOzT#SOtqFtBCMU5?Ivk&VX_ZR zyjnH3DbGIhT;13sh-0tSwr(tcv9e!dv)MKCifU{&Jh5t9TXt-+RSTA6W!;-4&9F9M z^;WixuKeR-Wuq^%0uwL%a{ldQxsETq7n^A)^=fRJbj`hj8kx(0C9PD=YiwgoE9Oieg;yA=<}Dm#p#c%IgM-2cFil^tGfWj? z9n30Kjy??Y<8uJ7@;x0(SzSk|xi)H>SDFQrb-+?@JT*h=;5bG!OhqJ(ma`(14dU14AIMatNdwytQwng4w;>YZ4T*t6yTcsVD({sGQ zghP**)o#A{Adt(_2C2fB=|~)xBpsBhnMqG|9pg=wKSgyPQDO>vZ9i-ERf(aq9lJBn zt^etGYq=3KpWHMvw~jI9>P&#tA9C4L`+}RX%{KW{7OEA#mrH4W*&E~y&CevDpjg%raGjO zvvfyCcWtGge6+-HkUe{HSlORdw~(6~Iykc#ryToglV-?ehQhO}O&cc9marHHxeco{ zwf?}okEx=ywa5AKoN$<%bXRJQZMTkQl~d*JEZqj5$kZckg)l)G%U@?(h+j26wE0_g zu+*9@bZaMJia{zTmQ*XXV7`y7P1)Fao`q~^nA>a?Hs3Re#UHVjvor@)uw)vmIwMyz z+c{D*NgV&2c%OT>F?VC?Myri^8!|S8 zY*23~PRL3~NbpH8O{iI)ygqt;?Yg{mY3mFPdYN@M>tfc)ti4$qv({!U%$k}Rn)$Eu zUMF2=ysmm};acCd^0lUGYvMEFL*iBOCh@wsthkss|2S2gZcX4C*ELpaDr0kElVkm3 z>sxPWZ4+x5TNk5K#Q4Y9#JtlaX?klaS7)vcS?#m>#j4U(NvpzE)kW)~bEC^ws#j*O zNL>-NqGWmD@{R20ck*e>^}W|fjcU1kc}fN&ZWxmT~%hH!7F7;Vj8d(^b z7-=3^7m*j?9ifc)5S|zw7VZ>Yyd--`)DqJrwTp8Xs~7iPTo;xfmK_!q<{MVND05Nt zBHu;si+V3ISya1Fw=ipA^1_IPg`ruYfuV}f{E*}jzYtkS-GY(@*$dJa#4PZcy&!*n z`uv3X^7+Q|ljeoZQ_QOhE(mrEZWsJu?y0#cb0^OoI=AE8=5wFVxi#m=oX9yt=X?x$ z6?8r5c+j?>&Ot8&hX$USy~F`nyH(SGb4J2>5SUxxzk;zE2djcuk;J{Q~O!@Wqy(P zh3^+NpX)wP`&{<9@#nf}zSCT$nM_OdjrMi-EuNY^HF~PS)aohOQ=Fzqr@WXPIN5!& z<>XYKXdic<@=5uV5+|8Vs+pKO(S2giiLEBSoUnX?#e@otcc{0ccXRJmUK6}JdZl=- z@|^DJ?AgcjyvGrb(H<5a5|3@_>1q#kfAy8|o5#-^KXm-5aVg^h#*H1>BFo;o8pi z^{A>*r$)t&T0H9g$d@B~uNoON^8JXa5zZspjd-g%uUe(DQ&kPWJN&@#wZk2UmkrxC zENEEgVGmodoWGR0EaZdd3XSSqEH~$ox?4!Q6wX2fYs}4w@gVK9F@F=0I&mPKI$t z{C@NO2E&Sn1`c%}YB@C7CB{YVq8pMoBw>i@klMj{gS`hU2OA7da*l9TIhQ!)I>kF# zIei#ZG{|p|YLMxm#DQT0T?XbmW;klX91R?+mDx&_Qm(9Zh<5OGaCa!QcemHsx!V;g z+!cAYO53af(gDf+rTr6a%x%*8nfFWR`=L*KALBlWy)ApES({tO_cG~~*weIUjl57E zA(zX`dnETz_b~2}*FB=Uyn9Kv#BQ$L47%mXB4jo)smw(7u4{4E%&s9_UAh`*x+Z*< zWaV$AvQk*pbm-loynT9m@AgjZ^V+4hOK4YXS!fw=8DZ&dX=0hxR?*g~ZE~C7Hp({g zHZ>ML7QHP@ENabl=C0=E=0#>oGXt~Q)|sv2TSv6EXYjD3OoeD*2!neR(T_eqzf=k872>$kUhPxhYZJ%M{%_sI8{?n&P5zxzd6Xn8lZpz#gwn;AC Oz>{6Q@JA}|rvC$5;joDS delta 274875 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�%7a4^!6b$m1ie(~qe5R5`l*nt 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�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%0D0i!~akYYux1%GMg+_HdWA9ATIDN7|&17XXnpI zi>2vOu9PArN=*`jBv>+)H=3u&QoX8!_ZOzr@ z@^XE1TMtwo;2)qIa0aJL=hWxq=J0aZIn&vOY;86%yERLnCC*}HO=mvJ?AK&AW@cw5 zWe#W9GSV~n8N=!Q>6G;8{X_dr`_uP(@9*DteP8vy+u3kQO8Z!69SY4{jH1$8E3Owqsk^wl;xOFvcI?TllqnC4UFspYO(h zkPw^TpD?>MdF$Agfh`SN61TW*dC05d1@fM6ZrYr)`T3@fO=mZ$HXYm)sM$0YZ;4mM z$HoW6 zIyg#B8t3_joDKdPp2u{=)Wry5JYr^}yQ3STmC=G|kLV{+8BwuOZc%OPqu1lsTOw;C zrIA6AX%R2kN_IT^^}4!sn)r3k!XJj;39ktc3;!nUY?vTyjP;n+!_u+5Sl=*jGvk>- z%$IA+)@G~?S$ie4E;J?dF{6i}W8^SG869hC*CelrUV~esTb;8ybhRa#=L!Gnjj%L7aVM;Q$wpYg zw}yL6J>s6Io?gw(#+%hQC#?O}N~^*uwz^x*H&{1(Z`60^cC))_-Q(Ajt_NRtzdmto z@EY$L`P%(Y*`K<6I$>$IR9X}khGnWt(UslB>l*KT)M@PW?R4*aarOSy_N(bvxmTyJ zbX_UFvgeA;Y%mv_lgvEx;3tirP(GQteEqWIGIF`Eqq;+r+cDg3YFD%~+D9+-U8=w2 zed)!;u8XpZ=@&T{ZEd}6jcwU&NLzoasa1`hUT6N;__6oL4+FXbbOCMwWB%R#vHpSn zFDYe|3`!`)vaDfQ#xc zbg|dsr#?!b6pc@iPn&m*ce3}BMYk8#Eb>5)f4jYK$HIt(I5Zqu=@swwnA}6IBKwhN zNdu%bQas6nRO>1CjP<Package FalseTrueFalseLibreria base de FactuGESFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 - - - - - - - VCL for the Web Design Package for CodeGear RAD Studio CodeGear WebSnap Components CodeGear SOAP Components @@ -66,55 +59,55 @@ MainSource - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fConfigurarConexion
TForm diff --git a/Source/Base/Base.res b/Source/Base/Base.res index 8b251f312bcccec5485024f6fe8d80e1cdf25746..1641339fcc482e7e3492d1b45813a86619622c33 100644 GIT binary patch literal 4748 zcmbW5&ub)A5XUPdpe&2#;C*uNAUVhgd+&(4um@dnom`vXF9g}ZuHJ;se=<3UNdFJg zbCw+UD9j$byGIXV`~6hC>h4S?F|k9X-j90q{Z_qtZ<;nUJCO8!h?p${kR>3GhM`oH*q zk=UsjOCIgA_4!`B+Gb&`I84R)bT4dy-BQV<-SyFz?R8ILEQ(+JB$u{sEXE@j@B*7W zT;iZH#|OJ<&DO$RCkM6VbK3(B(k{nbdv1lpc;E$xz9as|v3uE1V{hw2w~g3eD0an7 z{BT%G%irdMe*|oDJmgvJaA2`9B<6Xi*?M~Q;)@Sbfwf3uf zVaWkbUjU=;sL{BlYemIZXv%qZ{SZw{-TCU+;!nH6KDDIJumU+9{E0zXW4>7T)y|>$DQlv zRJe?TjSp{c!DqeayAnSMTtZZT;>LN7J0Rls+5m@q)MbyB*eL%Eu@(+$Cw}Pd@q7N| z%Q0*AHpCP^b9v`@jx-l_FD>khpW2W8(OU2&V5TrnoAY-m_hlcV?zq3;7{2gF{J#Hc z6R+o~mVenX?>@W0@_DVzyOFs(5464CY{!q9ChoF#_*eXi@4gFuV8?vhl=_w5$iKL0 zEV0nMBcN08xtRmsgJrqjh@s#|{?*ssnsG)mH*wa6{efF0JFWHok@kA5%b661{B38= zCcgJ|*ZFTpV$8<-&+AWpa)Q8*`wL&hMeNQ^v6I7$HSdLZhZ^&+6<@Uw_Zsml9^v3W zVvPDBKHh;i=RU4J_ta3E;)Mn>Y+L zKLZ0UQ+*km9FO-b?U4gmn-62iwzH6&*duKGo~aUV)bYDla8wWZ9+^7p-F<8lP@i!m z@vhbD_${F}h>^T;C(?(b*OJDk?{dEXB?nuehoON3HAb!7Mr7-ls!84-5V-jJugbu<_$}mU=Yd9!?TOX;|B-#B)+0x#9q*yqJiqS!`49d=7ztk$O+9=1i;?K_|J<8T z?0b7=-`Z3A#vV$4XJ5(lQ~TOZHUFdA%oWvK5zg&_IKXIbughQBA8XAsd#=@|TFLXC zy(^m((;DnQmDQKatmw!@c`| G?EMQ&4NnpP delta 11 ScmeBCZD5|Duvteife`=|>;pCc diff --git a/Source/Base/Utiles/uSistemaFunc.pas b/Source/Base/Utiles/uSistemaFunc.pas index bc21f81..573611d 100644 --- a/Source/Base/Utiles/uSistemaFunc.pas +++ b/Source/Base/Utiles/uSistemaFunc.pas @@ -48,8 +48,10 @@ function GetSpecialFolderPath(folder : integer) : string; function PreguntarRuta(const ATitulo: String; const AComentario: String; var ARuta: String): Boolean; function PreguntarFicheroWordExportar (var Fichero : String) : Boolean; function PreguntarFicheroExcelExportar (var Fichero : String) : Boolean; +function PreguntarFicheroPDFExportar (var Fichero : String) : Boolean; function EscapeIllegalChars(AFileName: string): string; function FindFile(const filespec: TFileName; attributes: integer = faReadOnly Or faHidden Or faSysFile Or faArchive): TStringList; +function ExecAndWait(sCommandLine: string): Boolean; function DarRutaFichero(const ARutaIni: String; const AFichero: String; const ADirectorio1: String = ''; const ADirectorio2: String = ''): Variant; @@ -66,6 +68,34 @@ uses StdCtrls, SHFolder, cxShellBrowserDialog, cxLookAndFeels, uStringsUtils; +function ExecAndWait(sCommandLine: string): Boolean; +var + dwExitCode: DWORD; + tpiProcess: TProcessInformation; + tsiStartup: TStartupInfo; +begin + Result := False; + FillChar(tsiStartup, SizeOf(TStartupInfo), 0); + tsiStartup.cb := SizeOf(TStartupInfo); + if CreateProcess(nil, PChar(sCommandLine), nil, nil, False, 0, + nil, nil, tsiStartup, tpiProcess) then + begin + if WAIT_OBJECT_0 = WaitForSingleObject(tpiProcess.hProcess, INFINITE) then + begin + if GetExitCodeProcess(tpiProcess.hProcess, dwExitCode) then + begin + if dwExitCode = 0 then + Result := True + else + SetLastError(dwExitCode + $2000); + end; + end; + dwExitCode := GetLastError; + CloseHandle(tpiProcess.hProcess); + CloseHandle(tpiProcess.hThread); + SetLastError(dwExitCode); + end; +end; function GetSpecialFolderPath(folder : integer) : string; const @@ -465,6 +495,27 @@ begin end end; +function PreguntarFicheroPDFExportar (var Fichero : String) : Boolean; +var + DialogoSalvar : TSaveDialog; +begin + DialogoSalvar := TSaveDialog.Create(NIL); + try + with DialogoSalvar do + begin + DefaultExt := 'pdf'; + Filter := 'Documento pdf (*.pdf)|*.pdf'; + FileName := Fichero; + FilterIndex := 0; + Options := [ofOverwritePrompt, ofHideReadOnly, ofPathMustExist, ofEnableSizing]; + end; + Result := DialogoSalvar.Execute; + if Result then + Fichero := DialogoSalvar.FileName; + finally + DialogoSalvar.Free; + end; +end; procedure SetDefaultFonts(const AFont: TFont); diff --git a/Source/Cliente/FactuGES.dproj b/Source/Cliente/FactuGES.dproj index 181cf4e..59645d9 100644 --- a/Source/Cliente/FactuGES.dproj +++ b/Source/Cliente/FactuGES.dproj @@ -52,7 +52,8 @@ Delphi.Personality VCLApplication -FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse2300FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.3.0.0FactuGES v2FactuGES v22.3.0.0 +FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse2310FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.3.1.0FactuGES v2FactuGES v22.3.1.0 + File C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl not found FactuGES.dprFalse diff --git a/Source/Cliente/FactuGES.res b/Source/Cliente/FactuGES.res index 5fcd81d3d943360fc4d9e557342f15c30f700fe7..e891e0c9f41ba01822df055d4f7da2bd0905d0b2 100644 GIT binary patch delta 35 qcmaEHobknR#tmvooQw?23``6R42+ZYlTI=kPX3v+7)Z`d_67jWZVPDu delta 35 ocmaEHobknR#tmvooD2-i3``6_Fj+t8B%{IPpGk{> MainSource - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fDialogBase
diff --git a/Source/Informes/1/firma_contrato.bat b/Source/Informes/1/firma_contrato.bat new file mode 100644 index 0000000..280cd00 --- /dev/null +++ b/Source/Informes/1/firma_contrato.bat @@ -0,0 +1,44 @@ +@ECHO off +title firmadocumento +cls + +set LOGFILE=D:\FactuGES2\Servidor\Informes\1\log_contrato.txt + +set ARCHIVO=%1 +set city=MADRID +set province=MADRID +set postalcode=28047 +set PositionOnPageLowerLeftX=30 +set PositionOnPageLowerLeftY=80 +set PositionOnPageUpperRightX=160 +set PositionOnPageUpperRigthY=200 +set signaturePage=1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 +set signatureRubricImage="D:\FactuGES2\Servidor\Informes\1\sello.jpg" +set layer2text="Firmado digitalmente por $$ORGANIZATION$$ Fecha: $$SIGNDATE=dd/MM/yyyy$$" +SET l2FontColor=black +SET l2FontSize=7 +SET l2FontFamily=1 +SET l2FontStyle=0 + +REM Asegura que autofirma no muestra ninguna GUI +set headless=true + +REM incluir únicamente el certificado del firmante +set "includeOnlySignningCertificate=true" + +REM Siempre creará una revisión al firmar. Requiere que el documento cumpla PDF 1.7 (ISO 32000-1:2008) +REM "alwaysCreateRevision=true" + +set "CONFIG=headless=%headless%\nlayer2Text=%layer2text%\nsignatureProductionCity=%city%\nsignatureProductionProvince=%province%\nsignatureProductionPostalCode=%postalcode%\nsignatureProductionCountry=ESPAÑA\nsignaturePositionOnPageLowerLeftX=%PositionOnPageLowerLeftX%\nsignaturePositionOnPageLowerLeftY=%PositionOnPageLowerLeftY%\nsignaturePositionOnPageUpperRightX=%PositionOnPageUpperRightX%\nsignaturePositionOnPageUpperRightY=%PositionOnPageUpperRigthY%\nsignaturePage=%signaturePage%\nincludeOnlySignningCertificate=true\nsignatureRubricImage=%signatureRubricImage%" + +REM echo %CONFIG% > %LOGFILE% +REM echo %ARCHIVO% > %LOGFILE% +echo %TEMP% > %LOGFILE% +rem echo %PASSCRIS% > %LOGFILE% + +call :FIRMA >> %LOGFILE% +exit /b + +:FIRMA +"C:\Program Files (x86)\AutoFirma\AutoFirma\AutoFirmaCommandLine.exe" sign -i %ARCHIVO% -o %ARCHIVO% -store pkcs12:"D:\FactuGES2\Servidor\PDFS\cert.pfx" -password %PASSACO% -filter subject.contains:4467 -config %CONFIG% + diff --git a/Source/Informes/1/firma_factura.bat b/Source/Informes/1/firma_factura.bat new file mode 100644 index 0000000..69545ca --- /dev/null +++ b/Source/Informes/1/firma_factura.bat @@ -0,0 +1,44 @@ +@ECHO off +title firmadocumento +cls + +set LOGFILE=D:\FactuGES2\Servidor\Informes\1\log_factura.txt + +set ARCHIVO=%1 +set city=MADRID +set province=MADRID +set postalcode=28047 +set PositionOnPageLowerLeftX=30 +set PositionOnPageLowerLeftY=80 +set PositionOnPageUpperRightX=160 +set PositionOnPageUpperRigthY=200 +set signaturePage=-1 +set signatureRubricImage="D:\FactuGES2\Servidor\Informes\1\sello.jpg" +set layer2text="Firmado digitalmente por $$ORGANIZATION$$ Fecha: $$SIGNDATE=dd/MM/yyyy$$" +SET l2FontColor=black +SET l2FontSize=7 +SET l2FontFamily=1 +SET l2FontStyle=0 + +REM Asegura que autofirma no muestra ninguna GUI +set headless=true + +REM incluir únicamente el certificado del firmante +set "includeOnlySignningCertificate=true" + +REM Siempre creará una revisión al firmar. Requiere que el documento cumpla PDF 1.7 (ISO 32000-1:2008) +REM "alwaysCreateRevision=true" + +set "CONFIG=headless=%headless%\nlayer2Text=%layer2text%\nsignatureProductionCity=%city%\nsignatureProductionProvince=%province%\nsignatureProductionPostalCode=%postalcode%\nsignatureProductionCountry=ESPAÑA\nsignaturePositionOnPageLowerLeftX=%PositionOnPageLowerLeftX%\nsignaturePositionOnPageLowerLeftY=%PositionOnPageLowerLeftY%\nsignaturePositionOnPageUpperRightX=%PositionOnPageUpperRightX%\nsignaturePositionOnPageUpperRightY=%PositionOnPageUpperRigthY%\nsignaturePage=-1\nincludeOnlySignningCertificate=true\nsignatureRubricImage=%signatureRubricImage%" + +REM echo %CONFIG% > %LOGFILE% +REM echo %ARCHIVO% > %LOGFILE% +echo %TEMP% > %LOGFILE% +rem echo %PASSCRIS% > %LOGFILE% + +call :FIRMA >> %LOGFILE% +exit /b + +:FIRMA +"C:\Program Files (x86)\AutoFirma\AutoFirma\AutoFirmaCommandLine.exe" sign -i %ARCHIVO% -o %ARCHIVO% -store pkcs12:"D:\FactuGES2\Servidor\PDFS\cert.pfx" -password %PASSACO% -filter subject.contains:4467 -config %CONFIG% + diff --git a/Source/Informes/1/sello.jpg b/Source/Informes/1/sello.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ae2da5bae1f10f53d1cfc548f00ca654a92d9aac GIT binary patch literal 20556 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 IW;mMo7e&7`Hvj+t literal 0 HcmV?d00001 diff --git a/Source/Modulos/Contratos de cliente/Controller/uContratosClienteController.pas b/Source/Modulos/Contratos de cliente/Controller/uContratosClienteController.pas index ac06b98..c02962e 100644 --- a/Source/Modulos/Contratos de cliente/Controller/uContratosClienteController.pas +++ b/Source/Modulos/Contratos de cliente/Controller/uContratosClienteController.pas @@ -57,6 +57,8 @@ type procedure Preview(AContrato : IBizContratoCliente; AllItems: Boolean = false; AVerCondiciones: Boolean = false; const TamLetra: Integer = CTE_TamLetraIni); procedure Print(AContrato : IBizContratoCliente; AllItems: Boolean = false; AVerCondiciones: Boolean = false; const TamLetra: Integer = CTE_TamLetraIni); + procedure GenerarPDF(AContrato : IBizContratoCliente; AllItems: Boolean = false; AFirmado: Boolean = False); + procedure EnviarContratoPorEMail(AContrato : IBizContratoCliente); function CambiarSituacion(AContrato : IBizContratoCliente; Situacion: String; FechaDecision: TDateTime; AllItems: Boolean = false): Boolean; function AsignarLOPD(AContratos: IBizContratoCliente): Boolean; @@ -136,6 +138,8 @@ type procedure Preview(AContrato : IBizContratoCliente; AllItems: Boolean = false; AVerCondiciones: Boolean = false; const TamLetra: Integer = CTE_TamLetraIni); procedure Print(AContrato : IBizContratoCliente; AllItems: Boolean = false; AVerCondiciones: Boolean = false; const TamLetra: Integer = CTE_TamLetraIni); + procedure GenerarPDF(AContrato : IBizContratoCliente; AllItems: Boolean = false; AFirmado: Boolean = False); + procedure EnviarContratoPorEMail(AContrato : IBizContratoCliente); function CambiarSituacion(AContrato : IBizContratoCliente; Situacion: String; FechaDecision: TDateTime; AllItems: Boolean = false): Boolean; function AsignarLOPD(AContratos: IBizContratoCliente): Boolean; @@ -1209,6 +1213,63 @@ begin end; end; +procedure TContratosClienteController.GenerarPDF(AContrato: IBizContratoCliente; AllItems, AFirmado: Boolean); +var + AReportController : IContratosClienteReportController; + AFile : String; + bEliminado: Boolean; + ACausa: Variant; + +begin + if not Assigned(AContrato) then + raise Exception.Create ('Contrato no asignado (GenerarPDF)'); + + if AContrato.DataTable.Active then + AContrato.DataTable.Active := True; + + //En el caso de querer eliminar todos los items del objeto AAlbaran + if AllItems then + begin + with AContrato.DataTable do + begin + First; + while not EOF do + begin + AFile := EscapeIllegalChars(AContrato.REFERENCIA + ' - ' + AContrato.NOMBRE_CLIENTE); + if (not PreguntarFicheroPDFExportar(AFile)) then + Next + else + begin + ShowHourglassCursor; + try + AReportController := TContratosClienteReportController.Create; + AReportController.ExportToPDF(AContrato.ID, AFile, AFirmado); + finally + AReportController := NIL; + HideHourglassCursor; + end; + Next; + end; + end; + end; + end + else + begin + AFile := EscapeIllegalChars(AContrato.REFERENCIA + ' - ' + AContrato.NOMBRE_CLIENTE); + if (not PreguntarFicheroPDFExportar(AFile)) then + Exit; + + ShowHourglassCursor; + try + AReportController := TContratosClienteReportController.Create; + AReportController.ExportToPDF(AContrato.ID, AFile, AFirmado); + finally + AReportController := NIL; + HideHourglassCursor; + end; + end; +end; + function TContratosClienteController.GetClienteController: IClientesController; begin Result := FClienteController; diff --git a/Source/Modulos/Contratos de cliente/Controller/uContratosClienteReportController.pas b/Source/Modulos/Contratos de cliente/Controller/uContratosClienteReportController.pas index 10d470b..cb57b37 100644 --- a/Source/Modulos/Contratos de cliente/Controller/uContratosClienteReportController.pas +++ b/Source/Modulos/Contratos de cliente/Controller/uContratosClienteReportController.pas @@ -12,8 +12,8 @@ type ['{FEF47B69-26A3-462A-AF6D-4B2073D4F9DC}'] procedure Preview(const AListaID : TIntegerList; AVerCondiciones: Boolean = false; const TamLetra: Integer = CTE_TamLetraIni); procedure Print(const AListaID : TIntegerList; AVerCondiciones: Boolean = false; const TamLetra: Integer = CTE_TamLetraIni); - function ExportToPDF(const AID: Integer; const AFileName : String = ''): Boolean; - function getDataModule: IDataModuleContratosClienteReport; + function ExportToPDF(const AID: Integer; const AFileName : String = ''; const AFirmado: Boolean = False): Boolean; + function getDataModule: IDataModuleContratosClienteReport; property DataModule: IDataModuleContratosClienteReport read getDataModule; end; @@ -30,7 +30,7 @@ type procedure Preview(const AListaID : TIntegerList; AVerCondiciones: Boolean = false; const TamLetra: Integer = CTE_TamLetraIni); procedure Print(const AListaID : TIntegerList; AVerCondiciones: Boolean = false; const TamLetra: Integer = CTE_TamLetraIni); - function ExportToPDF(const AID: Integer; const AFileName : String = ''): Boolean; + function ExportToPDF(const AID: Integer; const AFileName : String = ''; const AFirmado: Boolean = False): Boolean; end; @@ -62,8 +62,7 @@ begin inherited; end; -function TContratosClienteReportController.ExportToPDF(const AID: Integer; - const AFileName: String): Boolean; +function TContratosClienteReportController.ExportToPDF(const AID: Integer; const AFileName: String; const AFirmado: Boolean): Boolean; var AStream: Binary; begin @@ -73,7 +72,7 @@ begin ShowHourglassCursor; try - AStream := FDataModule.GetRptPDFContrato(AID); + AStream := FDataModule.GetRptPDFContrato(AID, false, AFirmado); try AStream.SaveToFile(AFileName); Result := True; diff --git a/Source/Modulos/Contratos de cliente/Data/uDataModuleContratosCliente.pas b/Source/Modulos/Contratos de cliente/Data/uDataModuleContratosCliente.pas index 4504df5..f5f2160 100644 --- a/Source/Modulos/Contratos de cliente/Data/uDataModuleContratosCliente.pas +++ b/Source/Modulos/Contratos de cliente/Data/uDataModuleContratosCliente.pas @@ -47,7 +47,7 @@ type // Report function GetRptContratos(const AListaID: TIntegerList; AVerCondiciones: Boolean = false; const TamLetra: Integer = 9): Binary; - function GetRptPDFContrato(const AID: Integer; AVerCondiciones: Boolean = false): Binary; + function GetRptPDFContrato(const AID: Integer; AVerCondiciones: Boolean = false; const Firmado: Boolean = False): Binary; function GetAnosItems : TStringList; function GetContratosClienteBeneficios : IBizContratosClienteBeneficios; @@ -58,7 +58,7 @@ implementation {$R *.DFM} uses - cxControls, FactuGES_Intf, uDataModuleConexion, Dialogs, DataAbstract4_Intf, + cxControls, FactuGES_Intf, uFactuGES_App, uDataModuleConexion, Dialogs, DataAbstract4_Intf, uDataTableUtils, schContratosClienteClient_Intf, uBizContactos; { TdmContratosCliente } @@ -74,14 +74,14 @@ begin RORemoteService.Message := dmConexion.Message; end; -function TDataModuleContratosCliente.GetRptPDFContrato(const AID: Integer; AVerCondiciones: Boolean = false): Binary; +function TDataModuleContratosCliente.GetRptPDFContrato(const AID: Integer; AVerCondiciones: Boolean = false; const Firmado: Boolean = False): Binary; var AParam : TIntegerArray; begin AParam := TIntegerArray.Create; try AParam.Add(AID); - Result := (RORemoteService as IsrvContratosCliente).GenerarInformeEnPDF(AParam, AVerCondiciones) + Result := (RORemoteService as IsrvContratosCliente).GenerarInformeEnPDF(AParam, AVerCondiciones, AppFactuGES.UsuarioActivo.USERNAME, Firmado) finally FreeANDNIL(AParam) end; diff --git a/Source/Modulos/Contratos de cliente/Model/Data/uIDataModuleContratosClienteReport.pas b/Source/Modulos/Contratos de cliente/Model/Data/uIDataModuleContratosClienteReport.pas index 31375eb..947f167 100644 --- a/Source/Modulos/Contratos de cliente/Model/Data/uIDataModuleContratosClienteReport.pas +++ b/Source/Modulos/Contratos de cliente/Model/Data/uIDataModuleContratosClienteReport.pas @@ -9,7 +9,7 @@ type IDataModuleContratosClienteReport = interface ['{6AB7469B-842A-413E-AF33-9506477A9666}'] function GetRptContratos(const AListaID: TIntegerList; AVerCondiciones: Boolean = false; const TamLetra: Integer = 9): Binary; - function GetRptPDFContrato(const AID: Integer; AVerCondiciones: Boolean = false): Binary; + function GetRptPDFContrato(const AID: Integer; AVerCondiciones: Boolean = false; const Firmado: Boolean = False): Binary; end; implementation diff --git a/Source/Modulos/Contratos de cliente/Model/schContratosClienteClient_Intf.pas b/Source/Modulos/Contratos de cliente/Model/schContratosClienteClient_Intf.pas index 531c1df..c520476 100644 --- a/Source/Modulos/Contratos de cliente/Model/schContratosClienteClient_Intf.pas +++ b/Source/Modulos/Contratos de cliente/Model/schContratosClienteClient_Intf.pas @@ -9,13 +9,13 @@ const { Data table rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_Valores = '{8E9C5E5F-B1C4-40D2-844C-6818E0A71C41}'; - RID_Propiedades = '{10423127-9855-44C6-84D5-C2F5F30ABADC}'; - RID_ListaAnosContratos = '{EBCE4D2B-EED3-4477-AFB1-B628241320DE}'; - RID_ContratosClienteBeneficios = '{EDA1E900-8EED-454E-BDF5-4D354D61EBB5}'; - RID_ContratosCliente = '{C60CEDC1-9427-4DCE-821A-627672FAD176}'; - RID_TiposCapitulos = '{84075DE8-633F-4B18-A39B-B453DE08D5FD}'; - RID_ContratosCliente_Detalles = '{47A199B6-78E6-42EC-A6EF-C3A4A8939855}'; + RID_Valores = '{52B71EED-9363-4A19-B433-C4917CBE0490}'; + RID_Propiedades = '{28500097-0FDC-4DBF-8047-FF879A5DDC4A}'; + RID_ListaAnosContratos = '{587736A2-5CC2-48D3-B32A-E54D4E7E23B5}'; + RID_ContratosClienteBeneficios = '{C9C242F8-9818-4C50-B4F8-12D1F83C3682}'; + RID_ContratosCliente = '{25E7020F-9DCA-4458-BB59-6F80612DB958}'; + RID_TiposCapitulos = '{FF4FB40E-4BDD-4D49-8893-AEF4013E66C7}'; + RID_ContratosCliente_Detalles = '{893CDA38-9F05-42E6-A176-200846BFB3B4}'; { Data table names } nme_Valores = 'Valores'; @@ -261,7 +261,7 @@ const type { IValores } IValores = interface(IDAStronglyTypedDataTable) - ['{DE9A011D-6704-41A5-8170-8E1023E028A9}'] + ['{D4C72CBB-5A40-48B5-852D-1A61B100DFEB}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -320,7 +320,7 @@ type { IPropiedades } IPropiedades = interface(IDAStronglyTypedDataTable) - ['{75D8A850-AAAA-4A89-80D7-C3E1A0628CD2}'] + ['{F803D346-E489-4868-B0A3-F1C2E96E16B2}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -379,7 +379,7 @@ type { IListaAnosContratos } IListaAnosContratos = interface(IDAStronglyTypedDataTable) - ['{82CA0D96-396B-4640-A127-3A92D6D876E0}'] + ['{B9314FAD-1F9D-40AE-BA67-0D5AB968CB40}'] { Property getters and setters } function GetANOValue: String; procedure SetANOValue(const aValue: String); @@ -414,7 +414,7 @@ type { IContratosClienteBeneficios } IContratosClienteBeneficios = interface(IDAStronglyTypedDataTable) - ['{1ADAB916-C891-4BAE-9322-2FD39A6EAE85}'] + ['{EFDA00B5-AC6D-4E4E-A034-0AA20C0A990A}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -617,7 +617,7 @@ type { IContratosCliente } IContratosCliente = interface(IDAStronglyTypedDataTable) - ['{A40F5D4D-74B4-40B9-8AC3-36562B7A0880}'] + ['{F8022D8A-297E-4D9D-8AC6-B18A5C333FE6}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -1327,7 +1327,7 @@ type } { ITiposCapitulos } ITiposCapitulos = interface(IDAStronglyTypedDataTable) - ['{E54DDB32-6949-47BA-95C2-5AB4013DFA97}'] + ['{B0A1870A-440A-4DA1-A1F7-BC9AD8D5F1A2}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -1422,7 +1422,7 @@ type { IContratosCliente_Detalles } IContratosCliente_Detalles = interface(IDAStronglyTypedDataTable) - ['{D020E94C-7500-49D4-8605-8A0CD2F05A3F}'] + ['{0CF18EC5-18A6-409F-B07C-417A09924B1C}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); diff --git a/Source/Modulos/Contratos de cliente/Model/schContratosClienteServer_Intf.pas b/Source/Modulos/Contratos de cliente/Model/schContratosClienteServer_Intf.pas index 5301d8c..4cfdef4 100644 --- a/Source/Modulos/Contratos de cliente/Model/schContratosClienteServer_Intf.pas +++ b/Source/Modulos/Contratos de cliente/Model/schContratosClienteServer_Intf.pas @@ -9,18 +9,18 @@ const { Delta rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_ValoresDelta = '{B18B1C54-C567-4E9D-9F1C-EBF356EB9306}'; - RID_PropiedadesDelta = '{C1C489D2-F6B5-4233-8739-4BF728F9D0C8}'; - RID_ListaAnosContratosDelta = '{19C544EC-0104-4464-8453-55603B3A5316}'; - RID_ContratosClienteBeneficiosDelta = '{27648BA2-1AB1-47C4-93E4-148BE96C60FB}'; - RID_ContratosClienteDelta = '{B08191A8-1651-495D-82EB-4A90C31C4D2B}'; - RID_TiposCapitulosDelta = '{A3BF1E30-4BE1-4DBC-94A1-0EA20C2BD85E}'; - RID_ContratosCliente_DetallesDelta = '{FF4E0A9B-4339-4B2F-B1FF-D09CE86D6D01}'; + RID_ValoresDelta = '{2AA17EFC-B6ED-42C1-8998-4A61B38C6C9C}'; + RID_PropiedadesDelta = '{CFCEAC41-2605-4AB8-8708-9376886949CD}'; + RID_ListaAnosContratosDelta = '{3CF93616-7DEB-4108-BBF9-DF16A4F51DF1}'; + RID_ContratosClienteBeneficiosDelta = '{0B3B92D0-5683-4069-BCC9-BF13F3D32B81}'; + RID_ContratosClienteDelta = '{5972C7CE-C947-4BB7-ADA5-E24116CC4879}'; + RID_TiposCapitulosDelta = '{C2270A90-511B-4330-B083-2AB5AE7B2621}'; + RID_ContratosCliente_DetallesDelta = '{D393C1E6-380F-4806-9BE9-C4894A4D3E3E}'; type { IValoresDelta } IValoresDelta = interface(IValores) - ['{B18B1C54-C567-4E9D-9F1C-EBF356EB9306}'] + ['{2AA17EFC-B6ED-42C1-8998-4A61B38C6C9C}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_PROPIEDADValue : Integer; @@ -78,7 +78,7 @@ type { IPropiedadesDelta } IPropiedadesDelta = interface(IPropiedades) - ['{C1C489D2-F6B5-4233-8739-4BF728F9D0C8}'] + ['{CFCEAC41-2605-4AB8-8708-9376886949CD}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldDESCRIPCIONValue : String; @@ -136,7 +136,7 @@ type { IListaAnosContratosDelta } IListaAnosContratosDelta = interface(IListaAnosContratos) - ['{19C544EC-0104-4464-8453-55603B3A5316}'] + ['{3CF93616-7DEB-4108-BBF9-DF16A4F51DF1}'] { Property getters and setters } function GetOldANOValue : String; @@ -170,7 +170,7 @@ type { IContratosClienteBeneficiosDelta } IContratosClienteBeneficiosDelta = interface(IContratosClienteBeneficios) - ['{27648BA2-1AB1-47C4-93E4-148BE96C60FB}'] + ['{0B3B92D0-5683-4069-BCC9-BF13F3D32B81}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldREFERENCIAValue : String; @@ -372,7 +372,7 @@ type { IContratosClienteDelta } IContratosClienteDelta = interface(IContratosCliente) - ['{B08191A8-1651-495D-82EB-4A90C31C4D2B}'] + ['{5972C7CE-C947-4BB7-ADA5-E24116CC4879}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_EMPRESAValue : Integer; @@ -1084,7 +1084,7 @@ type { ITiposCapitulosDelta } ITiposCapitulosDelta = interface(ITiposCapitulos) - ['{A3BF1E30-4BE1-4DBC-94A1-0EA20C2BD85E}'] + ['{C2270A90-511B-4330-B083-2AB5AE7B2621}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldPOSICIONValue : Integer; @@ -1178,7 +1178,7 @@ type { IContratosCliente_DetallesDelta } IContratosCliente_DetallesDelta = interface(IContratosCliente_Detalles) - ['{FF4E0A9B-4339-4B2F-B1FF-D09CE86D6D01}'] + ['{D393C1E6-380F-4806-9BE9-C4894A4D3E3E}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_CONTRATOValue : Integer; diff --git a/Source/Modulos/Contratos de cliente/Reports/uRptContratosCliente_Server.dfm b/Source/Modulos/Contratos de cliente/Reports/uRptContratosCliente_Server.dfm index 90b9c1c..4ba9434 100644 --- a/Source/Modulos/Contratos de cliente/Reports/uRptContratosCliente_Server.dfm +++ b/Source/Modulos/Contratos de cliente/Reports/uRptContratosCliente_Server.dfm @@ -1539,6 +1539,7 @@ object RptContratosCliente: TRptContratosCliente UseFileCache = True ShowProgress = False OverwritePrompt = False + EmbeddedFonts = True PrintOptimized = True Outline = False Background = False diff --git a/Source/Modulos/Contratos de cliente/Reports/uRptContratosCliente_Server.pas b/Source/Modulos/Contratos de cliente/Reports/uRptContratosCliente_Server.pas index 7727d25..cc38f59 100644 --- a/Source/Modulos/Contratos de cliente/Reports/uRptContratosCliente_Server.pas +++ b/Source/Modulos/Contratos de cliente/Reports/uRptContratosCliente_Server.pas @@ -99,7 +99,7 @@ type procedure RecuperarNombresClientes; public function GenerarContrato(const ListaID : TIntegerArray; const VerCondiciones: Boolean; const TamLetra: Integer): Binary; - function GenerarContratoEnPDF(const ListaID : TIntegerArray; const VerCondiciones: Boolean): Binary; + function GenerarContratoEnPDF(const ListaID : TIntegerArray; const VerCondiciones: Boolean; const Usuario: AnsiString; const Firmado: Boolean): Binary; function GenerarInformeListadoContratos(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary; end; @@ -137,7 +137,8 @@ begin frxDBDetalles.CloseDataSource := False; FListaNombresClientes := TStringList.Create; - + FTamLetra := 8; + with tbl_Detalles do begin MasterSource := DADSCapitulos; @@ -147,26 +148,44 @@ begin end; end; -function TRptContratosCliente.GenerarContratoEnPDF(const ListaID: TIntegerArray; const VerCondiciones: Boolean): Binary; +function TRptContratosCliente.GenerarContratoEnPDF(const ListaID: TIntegerArray; const VerCondiciones: Boolean; const Usuario: AnsiString; const Firmado: Boolean): Binary; var i: Integer; + AStream : Binary; + ARutaFichero, ANombreFichero, LlamadaBat : String; begin Result := Binary.Create; - - //Inicializamos parametros - FVerLogotipo := true; - FNombreEmpresa := ''; - FVerPrecios := true; - FVerTotales := true; - FVerCondiciones := VerCondiciones; - try - //Vamos generando todos y cada uno de los Contratos recibidos - for i := 0 to ListaID.Count - 1 do - _GenerarContrato(ListaID.Items[i]); + //Inicializamos parametros + FVerLogotipo := true; + FNombreEmpresa := ''; + FVerPrecios := true; + FVerTotales := true; + FVerCondiciones := VerCondiciones; - frxPDFExport1.Stream := Result; - frxReport.Export(frxPDFExport1) + //Vamos generando todos y cada uno de los presupuestos recibidos + for i := 0 to ListaID.Count - 1 do + begin + _GenerarContrato(ListaID.Items[i]); + ANombreFichero := frxReport.ReportOptions.Name + '_' + FormatDateTime('yyyymmdd_hhnnss_', now) + Usuario; + if Firmado then + ANombreFichero := ANombreFichero + 'firmado.pdf' + else + ANombreFichero := ANombreFichero + '.pdf'; + + ANombreFichero := DarRutaPDFS + EscapeIllegalChars(ANombreFichero); + frxPDFExport1.Stream := Result; + frxReport.Export(frxPDFExport1); + Result.SaveToFile(ANombreFichero); + + if Firmado then + begin + ARutaFichero := DarRutaFichero(DarRutaInformes, 'firma_contrato.bat ', IntToStr(FIdEmpresa)); + LlamadaBat := ARutaFichero + '"' + ANombreFichero + '"'; + if ExecAndWait(LlamadaBat) then + Result.LoadFromFile(ANombreFichero); + end; + end; finally end; end; @@ -558,6 +577,7 @@ begin tbl_DetallesArticulos.Active := True; + FIdEmpresa := tbl_Cabecera.FieldByName('ID_EMPRESA').AsInteger; AInforme := DarRutaFichero(DarRutaInformes, rptInforme, tbl_Cabecera.FieldByName('ID_EMPRESA').AsString); if VarIsNull(AInforme) then raise Exception.Create (('Error Servidor: _GenerarContrato, no encuentra informe ' + rptInforme)); diff --git a/Source/Modulos/Contratos de cliente/Servidor/srvContratosCliente_Impl.pas b/Source/Modulos/Contratos de cliente/Servidor/srvContratosCliente_Impl.pas index 63b08e1..cd3291a 100644 --- a/Source/Modulos/Contratos de cliente/Servidor/srvContratosCliente_Impl.pas +++ b/Source/Modulos/Contratos de cliente/Servidor/srvContratosCliente_Impl.pas @@ -34,8 +34,7 @@ type protected { IsrvContratosCliente methods } function GenerarInforme(const ListaID: TIntegerArray; const VerCondiciones: Boolean; const TamLetra: Integer): Binary; - function GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerCondiciones: Boolean): Binary; - + function GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerCondiciones: Boolean; const Usuario: AnsiString; const Firmado: Boolean): Binary; end; implementation @@ -90,13 +89,13 @@ begin end; end; -function TsrvContratosCliente.GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerCondiciones: Boolean): Binary; +function TsrvContratosCliente.GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerCondiciones: Boolean; const Usuario: AnsiString; const Firmado: Boolean): Binary; var AReportGenerator : TRptContratosCliente; begin AReportGenerator := TRptContratosCliente.Create(nil); try - Result := AReportGenerator.GenerarContratoEnPDF(ListaID, VerCondiciones); + Result := AReportGenerator.GenerarContratoEnPDF(ListaID, VerCondiciones, Usuario, Firmado); finally FreeAndNIL(AReportGenerator); end; diff --git a/Source/Modulos/Contratos de cliente/Views/uEditorContratosCliente.dfm b/Source/Modulos/Contratos de cliente/Views/uEditorContratosCliente.dfm index e061a3f..2d3de69 100644 --- a/Source/Modulos/Contratos de cliente/Views/uEditorContratosCliente.dfm +++ b/Source/Modulos/Contratos de cliente/Views/uEditorContratosCliente.dfm @@ -3,7 +3,7 @@ inherited fEditorContratosCliente: TfEditorContratosCliente ClientHeight = 551 ClientWidth = 1119 ExplicitWidth = 1127 - ExplicitHeight = 595 + ExplicitHeight = 585 PixelsPerInch = 96 TextHeight = 13 inherited JvNavPanelHeader: TJvNavPanelHeader @@ -126,7 +126,7 @@ inherited fEditorContratosCliente: TfEditorContratosCliente Width = 1119 ExplicitWidth = 1119 inherited tbxMain: TTBXToolbar - ExplicitWidth = 1119 + ExplicitWidth = 982 object TBXSubmenuItem3: TTBXSubmenuItem [0] Caption = 'Nuevo' DisplayMode = nbdmImageAndText @@ -151,13 +151,17 @@ inherited fEditorContratosCliente: TfEditorContratosCliente inherited TBXItem2: TTBXItem Visible = False end - object TBXItem47: TTBXItem [13] + object TBXItem51: TTBXItem [13] + Action = actGenerarPDF + DisplayMode = nbdmImageAndText + end + object TBXItem47: TTBXItem [14] Action = actEnviarEMail DisplayMode = nbdmImageAndText end end inherited tbxFiltro: TTBXToolbar - ExplicitWidth = 535 + ExplicitWidth = 481 inherited lblAno: TTBXLabelItem Visible = True end @@ -194,11 +198,11 @@ inherited fEditorContratosCliente: TfEditorContratosCliente end end inherited TBXTMain2: TTBXToolbar - Left = 535 + Left = 481 DockPos = 343 Visible = True - ExplicitLeft = 535 - ExplicitWidth = 543 + ExplicitLeft = 481 + ExplicitWidth = 430 object TBXItem50: TTBXItem Action = actLOPD DisplayMode = nbdmImageAndText @@ -341,6 +345,13 @@ inherited fEditorContratosCliente: TfEditorContratosCliente OnExecute = actLOPDExecute OnUpdate = actLOPDUpdate end + object actGenerarPDF: TAction + Category = 'Acciones' + Caption = 'Generar PDF' + ImageIndex = 31 + OnExecute = actGenerarPDFExecute + OnUpdate = actGenerarPDFUpdate + end end inherited SmallImages: TPngImageList PngImages = < @@ -1193,6 +1204,29 @@ inherited fEditorContratosCliente: TfEditorContratosCliente A0BEE1E16734A0290000000049454E44AE426082} Name = 'PngImage30' Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001F04944415478DA + 633CC0C0F09F0109C83939313CDAB70F5988C181818191C1600644DD850C4664 + 3946900162D7AEC1053872721838972E85F36F4A4A323818CC60A82CF062689F + B00DB7011C1C1C0C9C9C9C0CDFA3A31924B76E65F8F1E307184B7A6E64583825 + 99E1C69DE70C4B561C64F8F1F3EFC5D7EF7F78030D7A8A6280A0A020D890F7C1 + C10C826BD7824D17745C09D70C03627C2C0C959D5BBF000DD20019023640FDF9 + 7314CD201AE48DF7EFDF3368451D62F075D365D0D19265B872ED3198FEF3F90D + C3C2F597B7BEDA17EF0337000440CEC70694DE85810DD9BCEB32DC305878800D + 00853C08806CFDFEFD3B42674A0A38462E2FDACE90DBF7102CB4A0568361ED49 + 568663276F31BC3D98883000E66474F04A4B8BC1F6DF3F14B182CEDD0CF3363D + 66F87A3C8591B15842F33F0301D0F5EC2A0ABF6DC6368629EBDE3148311F6760 + 24A479F2A2EDFFB362DC19983E9D67B8BFDC98412AF402C3EC6DCF19E62DDD04 + 4907C41AF0772D1303AB453CC3FD2D0B197823BE307CFFF18BC13FA19A380372 + FC2480B61B3228DA3330DC3FC8C0C0E27E95E13B83284344663D7106787FF564 + 50F4896760F8BC90E1FD3B06860F9719183EDA3F61482A6C25CE00BD279E18E2 + CCEEF71872ABBA893320C4D30AE8E7DF0CDFBEFF66F8FAFD17C337A0FF41A0A8 + AE8F380360218E0D000074D3EB115697A8140000000049454E44AE426082} + Name = 'PngImage31' + Background = clWindow end> Bitmap = {} end diff --git a/Source/Modulos/Contratos de cliente/Views/uEditorContratosCliente.pas b/Source/Modulos/Contratos de cliente/Views/uEditorContratosCliente.pas index 485aa70..b1448b3 100644 --- a/Source/Modulos/Contratos de cliente/Views/uEditorContratosCliente.pas +++ b/Source/Modulos/Contratos de cliente/Views/uEditorContratosCliente.pas @@ -59,6 +59,8 @@ type TBXSeparatorItem21: TTBXSeparatorItem; actLOPD: TAction; TBXItem50: TTBXItem; + actGenerarPDF: TAction; + TBXItem51: TTBXItem; procedure FormShow(Sender: TObject); procedure actGenerarAlbaranCliExecute(Sender: TObject); procedure actEliminarUpdate(Sender: TObject); @@ -92,6 +94,8 @@ type procedure actGenerarReciboCliUpdate(Sender: TObject); procedure actLOPDExecute(Sender: TObject); procedure actLOPDUpdate(Sender: TObject); + procedure actGenerarPDFExecute(Sender: TObject); + procedure actGenerarPDFUpdate(Sender: TObject); private procedure cambiarSituacion (const ASituacion: String); @@ -311,6 +315,54 @@ begin and (FContratos.SITUACION = SITUACION_CONTRATO_ACEPTADO); end; +procedure TfEditorContratosCliente.actGenerarPDFExecute(Sender: TObject); +var + ACadena : String; + AContratos: IBizContratoCliente; + AllItems: Boolean; + AListaCausas: TStringList; + AFirmar: Boolean; + +begin + inherited; + AContratos := Nil; + AFirmar := False; + AllItems := False; + AListaCausas := TStringList.Create; + + if MultiSelect and Assigned(ViewGrid) then + AllItems := (ViewGrid.NumSeleccionados > 1); + + if AllItems then + begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contratos as ISeleccionable).SelectedRecords); + AContratos := (Controller as IContratosClienteController).ExtraerSeleccionados(Contratos) as IBizContratoCliente; + + if (Application.MessageBox('¿Desea firmar digitalmente el/los contrato/s de cliente seleccionados?', 'Atención', MB_YESNO) = IDYES) then + AFirmar := True; + end + else + begin + AContratos := Contratos; + ACadena := '¿Desea firmar digitalmente este contrato a cliente?'; + + if (Application.MessageBox(PChar(ACadena), 'Atención', MB_YESNO) = IDYES) then + AFirmar := True; + end; + + FController.GenerarPDF(AContratos, AllItems, AFirmar); +end; + +procedure TfEditorContratosCliente.actGenerarPDFUpdate(Sender: TObject); +begin + inherited; + if HayDatos and Assigned(ViewGrid) then + (Sender as TAction).Enabled := ViewGrid.EsSeleccionCeldaDatos + and (ViewGrid.NumSeleccionados > 0) + else + (Sender as TAction).Enabled := False; +end; + procedure TfEditorContratosCliente.actGenerarPedidoProvExecute(Sender: TObject); var ACopiarDetalles: Boolean; diff --git a/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.dproj b/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.dproj index 698a727..59f2968 100644 --- a/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.dproj +++ b/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.dproj @@ -49,15 +49,15 @@ MainSource - - - - - - - - - + + + + + + + + + diff --git a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas index 7fbf665..703247f 100644 --- a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas +++ b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas @@ -38,9 +38,10 @@ type function Duplicar(AFactura: IBizFacturaCliente): IBizFacturaCliente; function GenerarAbono(AFactura: IBizFacturaCliente): IBizFacturaCliente; - procedure Preview(AFactura : IBizFacturaCliente; AllItems: Boolean = false; AVerDatosCliente: Boolean = true; AEmpresaAcota: Boolean = true); - procedure Print(AFactura : IBizFacturaCliente; AllItems: Boolean = false; AVerDatosCliente: Boolean = true; AEmpresaAcota: Boolean = true); + procedure Preview(AFactura : IBizFacturaCliente; AllItems: Boolean = false; AVerDatosCliente: Boolean = true); + procedure Print(AFactura : IBizFacturaCliente; AllItems: Boolean = false; AVerDatosCliente: Boolean = true); procedure EnviarFacturaPorEMail(AFactura : IBizFacturaCliente); + procedure GenerarPDF(AFactura : IBizFacturaCliente; AllItems: Boolean = false; AFirmado: Boolean = False); procedure RecalcularImportes(AFactura: IBizFacturaCliente); @@ -104,9 +105,10 @@ type function GenerarAbono(AFactura: IBizFacturaCliente): IBizFacturaCliente; procedure RecuperarCliente(AFactura : IBizFacturaCliente); - procedure Preview(AFactura : IBizFacturaCliente; AllItems: Boolean = false; AVerDatosCliente: Boolean = true; AEmpresaAcota: Boolean = true); - procedure Print(AFactura : IBizFacturaCliente; AllItems: Boolean = false; AVerDatosCliente: Boolean = true; AEmpresaAcota: Boolean = true); + procedure Preview(AFactura : IBizFacturaCliente; AllItems: Boolean = false; AVerDatosCliente: Boolean = true); + procedure Print(AFactura : IBizFacturaCliente; AllItems: Boolean = false; AVerDatosCliente: Boolean = true); procedure EnviarFacturaPorEMail(AFactura : IBizFacturaCliente); + procedure GenerarPDF(AFactura : IBizFacturaCliente; AllItems: Boolean = false; AFirmado: Boolean = False); procedure RecalcularImportes(AFactura: IBizFacturaCliente); function EsModificable(AFactura: IBizFacturaCliente; var AComentario: Variant): Boolean; @@ -1328,7 +1330,7 @@ begin Result := AFactura; end; -procedure TFacturasClienteController.Preview(AFactura: IBizFacturaCliente; AllItems: Boolean = false; AVerDatosCliente: Boolean = true; AEmpresaAcota: Boolean = true); +procedure TFacturasClienteController.Preview(AFactura: IBizFacturaCliente; AllItems: Boolean = false; AVerDatosCliente: Boolean = true); var AReportController : IFacturasClienteReportController; ID_Facturas: TIntegerList; @@ -1355,7 +1357,7 @@ begin else ID_Facturas.Add(AFactura.ID); - AReportController.Preview(ID_Facturas, AVerDatosCliente, AEmpresaAcota); + AReportController.Preview(ID_Facturas, AVerDatosCliente); finally AReportController := NIL; @@ -1363,7 +1365,7 @@ begin end; end; -procedure TFacturasClienteController.Print(AFactura: IBizFacturaCliente; AllItems: Boolean = false; AVerDatosCliente: Boolean = true; AEmpresaAcota: Boolean = true); +procedure TFacturasClienteController.Print(AFactura: IBizFacturaCliente; AllItems: Boolean = false; AVerDatosCliente: Boolean = true); var AReportController : IFacturasClienteReportController; ID_Facturas: TIntegerList; @@ -1390,7 +1392,7 @@ begin else ID_Facturas.Add(AFactura.ID); - AReportController.Print(ID_Facturas, AVerDatosCliente, AEmpresaAcota); + AReportController.Print(ID_Facturas, AVerDatosCliente); finally AReportController := NIL; @@ -1418,6 +1420,63 @@ begin end; end; +procedure TFacturasClienteController.GenerarPDF(AFactura: IBizFacturaCliente; AllItems, AFirmado: Boolean); +var + AReportController : IFacturasClienteReportController; + AFile : String; + bEliminado: Boolean; + ACausa: Variant; + +begin + if not Assigned(AFactura) then + raise Exception.Create ('Factura no asignado (GenerarPDF)'); + + if AFactura.DataTable.Active then + AFactura.DataTable.Active := True; + + //En el caso de querer eliminar todos los items del objeto AAlbaran + if AllItems then + begin + with AFactura.DataTable do + begin + First; + while not EOF do + begin + AFile := EscapeIllegalChars(AFactura.REFERENCIA + ' - ' + AFactura.NOMBRE_CLIENTE); + if (not PreguntarFicheroPDFExportar(AFile)) then + Next + else + begin + ShowHourglassCursor; + try + AReportController := TFacturasClienteReportController.Create; + AReportController.ExportToPDF(AFactura.ID, AFile, AFirmado); + finally + AReportController := NIL; + HideHourglassCursor; + end; + Next; + end; + end; + end; + end + else + begin + AFile := EscapeIllegalChars(AFactura.REFERENCIA + ' - ' + AFactura.NOMBRE_CLIENTE); + if (not PreguntarFicheroPDFExportar(AFile)) then + Exit; + + ShowHourglassCursor; + try + AReportController := TFacturasClienteReportController.Create; + AReportController.ExportToPDF(AFactura.ID, AFile, AFirmado); + finally + AReportController := NIL; + HideHourglassCursor; + end; + end; +end; + procedure TFacturasClienteController.GenerarRecibos(AFactura: IBizFacturaCliente); var AFormasPagoController : IFormasPagoController; diff --git a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteReportController.pas b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteReportController.pas index 5bfdc01..fdd2e0a 100644 --- a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteReportController.pas +++ b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteReportController.pas @@ -10,9 +10,9 @@ uses type IFacturasClienteReportController = interface(IControllerBase) ['{A0F41767-4FF6-4BAE-9FC9-894DD721D756}'] - procedure Preview(const AListaID : TIntegerList; AVerDatosCliente: Boolean = true; AEmpresaAcota: Boolean = true); - procedure Print(const AListaID : TIntegerList; AVerDatosCliente: Boolean = true; AEmpresaAcota: Boolean = true); - function ExportToPDF(const AID: Integer; const AFileName : String = ''): Boolean; + procedure Preview(const AListaID : TIntegerList; AVerDatosCliente: Boolean = true); + procedure Print(const AListaID : TIntegerList; AVerDatosCliente: Boolean = true); + function ExportToPDF(const AID: Integer; const AFileName : String = ''; const AFirmado: Boolean = False): Boolean; end; TFacturasClienteReportController = class(TControllerBase, IFacturasClienteReportController) @@ -23,9 +23,9 @@ type constructor Create; override; destructor Destroy; override; - procedure Preview(const AListaID : TIntegerList; AVerDatosCliente: Boolean = true; AEmpresaAcota: Boolean = true); - procedure Print(const AListaID : TIntegerList; AVerDatosCliente: Boolean = true; AEmpresaAcota: Boolean = true); - function ExportToPDF(const AID: Integer; const AFileName : String = ''): Boolean; + procedure Preview(const AListaID : TIntegerList; AVerDatosCliente: Boolean = true); + procedure Print(const AListaID : TIntegerList; AVerDatosCliente: Boolean = true); + function ExportToPDF(const AID: Integer; const AFileName : String = ''; const AFirmado: Boolean = False): Boolean; end; @@ -57,8 +57,7 @@ begin inherited; end; -function TFacturasClienteReportController.ExportToPDF(const AID: Integer; - const AFileName: String): Boolean; +function TFacturasClienteReportController.ExportToPDF(const AID: Integer; const AFileName: String; const AFirmado: Boolean): Boolean; var AStream: Binary; begin @@ -68,7 +67,7 @@ begin ShowHourglassCursor; try - AStream := FDataModule.GetRptPDFFactura(AID); + AStream := FDataModule.GetRptPDFFactura(AID, true, AFirmado); try AStream.SaveToFile(AFileName); Result := True; @@ -80,14 +79,14 @@ begin end; end; -procedure TFacturasClienteReportController.Preview(const AListaID : TIntegerList; AVerDatosCliente: Boolean = true; AEmpresaAcota: Boolean = true); +procedure TFacturasClienteReportController.Preview(const AListaID : TIntegerList; AVerDatosCliente: Boolean = true); var AStream: Binary; AEditor : IEditorFacturasClientePreview; begin AEditor := NIL; - AStream := FDataModule.GetReport(AListaID, AVerDatosCliente, AEmpresaAcota); + AStream := FDataModule.GetReport(AListaID, AVerDatosCliente); try CreateEditor('EditorFacturasClientePreview', IEditorFacturasClientePreview, AEditor); if Assigned(AEditor) then @@ -105,7 +104,7 @@ begin end; end; -procedure TFacturasClienteReportController.Print(const AListaID : TIntegerList; AVerDatosCliente: Boolean = true; AEmpresaAcota: Boolean = true); +procedure TFacturasClienteReportController.Print(const AListaID : TIntegerList; AVerDatosCliente: Boolean = true); var AStream: Binary; AEditor : IEditorFacturasClientePreview; @@ -113,7 +112,7 @@ begin AEditor := NIL; ShowHourglassCursor; try - AStream := FDataModule.GetReport(AListaID, AVerDatosCliente, AEmpresaAcota); + AStream := FDataModule.GetReport(AListaID, AVerDatosCliente); try CreateEditor('EditorFacturasClientePreview', IEditorFacturasClientePreview, AEditor); if Assigned(AEditor) then diff --git a/Source/Modulos/Facturas de cliente/Data/uDataModuleFacturasCliente.pas b/Source/Modulos/Facturas de cliente/Data/uDataModuleFacturasCliente.pas index becfebb..3d0aff8 100644 --- a/Source/Modulos/Facturas de cliente/Data/uDataModuleFacturasCliente.pas +++ b/Source/Modulos/Facturas de cliente/Data/uDataModuleFacturasCliente.pas @@ -33,8 +33,8 @@ type function NewItem : IBizFacturaCliente; // Report - function GetReport(const AListaID: TIntegerList; AVerDatosCliente: Boolean = true; AEmpresaAcota: Boolean = true): Binary; - function GetRptPDFFactura(const AID: Integer; AVerDatosCliente: Boolean = true; AEmpresaAcota: Boolean = true): Binary; + function GetReport(const AListaID: TIntegerList; AVerDatosCliente: Boolean = true): Binary; + function GetRptPDFFactura(const AID: Integer; AVerDatosCliente: Boolean = true; const Firmado: Boolean = False): Binary; end; implementation @@ -42,7 +42,7 @@ implementation {$R *.DFM} uses - FactuGES_Intf, uDataModuleConexion, uDataTableUtils, cxControls, + FactuGES_Intf, uFactuGES_App, uDataModuleConexion, uDataTableUtils, cxControls, schFacturasClienteClient_Intf, uBizContactos, Dialogs; { TdmPresupuestos } @@ -53,30 +53,30 @@ begin RORemoteService.Message := dmConexion.Message; end; -function TDataModuleFacturasCliente.GetReport(const AListaID: TIntegerList; AVerDatosCliente: Boolean = true; AEmpresaAcota: Boolean = true): Binary; +function TDataModuleFacturasCliente.GetReport(const AListaID: TIntegerList; AVerDatosCliente: Boolean = true): Binary; var AParam : TIntegerArray; begin AParam := AListaID.ToIntegerArray; try - Result := (RORemoteService as IsrvFacturasCliente).GenerateReport(AParam, AVerDAtosCliente, AEmpresaAcota); + Result := (RORemoteService as IsrvFacturasCliente).GenerateReport(AParam, AVerDAtosCliente); finally FreeANDNIL(AParam); end; end; -function TDataModuleFacturasCliente.GetRptPDFFactura(const AID: Integer; AVerDatosCliente: Boolean = true; AEmpresaAcota: Boolean = true): Binary; + +function TDataModuleFacturasCliente.GetRptPDFFactura(const AID: Integer; AVerDatosCliente: Boolean; const Firmado: Boolean): Binary; var AParam : TIntegerArray; begin AParam := TIntegerArray.Create; try AParam.Add(AID); - Result := (RORemoteService as IsrvFacturasCliente).GenerarInformeEnPDF(AParam, AVerDatosCliente, AEmpresaAcota) + Result := (RORemoteService as IsrvFacturasCliente).GenerarInformeEnPDF(AParam, AVerDatosCliente, AppFactuGES.UsuarioActivo.USERNAME, Firmado) finally FreeANDNIL(AParam) end; - end; function TDataModuleFacturasCliente.NewItem: IBizFacturaCliente; diff --git a/Source/Modulos/Facturas de cliente/Model/Data/uIDataModuleFacturasClienteReport.pas b/Source/Modulos/Facturas de cliente/Model/Data/uIDataModuleFacturasClienteReport.pas index efbcf99..6c692fc 100644 --- a/Source/Modulos/Facturas de cliente/Model/Data/uIDataModuleFacturasClienteReport.pas +++ b/Source/Modulos/Facturas de cliente/Model/Data/uIDataModuleFacturasClienteReport.pas @@ -8,8 +8,8 @@ uses type IDataModuleFacturasClienteReport = interface ['{F498AC70-AA38-4C06-B301-85A4AC0B210B}'] - function GetReport(const AListaID: TIntegerList; AVerDatosCliente: Boolean = true; AEmpresaAcota: Boolean = true): Binary; - function GetRptPDFFactura(const AID: Integer; AVerDatosCliente: Boolean = true; AEmpresaAcota: Boolean = true): Binary; + function GetReport(const AListaID: TIntegerList; AVerDatosCliente: Boolean = true): Binary; + function GetRptPDFFactura(const AID: Integer; AVerDatosCliente: Boolean = true; const Firmado: Boolean = False): Binary; end; implementation diff --git a/Source/Modulos/Facturas de cliente/Model/FacturasCliente_model.dproj b/Source/Modulos/Facturas de cliente/Model/FacturasCliente_model.dproj index c93742d..e8ddf44 100644 --- a/Source/Modulos/Facturas de cliente/Model/FacturasCliente_model.dproj +++ b/Source/Modulos/Facturas de cliente/Model/FacturasCliente_model.dproj @@ -44,6 +44,8 @@ FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 + + RemObjects Pascal Script - RemObjects SDK 3.0 Integration EurekaLog 5.1.9 FacturasCliente_model.dpk
@@ -53,13 +55,13 @@ MainSource - - + + + - diff --git a/Source/Modulos/Facturas de cliente/Model/schFacturasClienteClient_Intf.pas b/Source/Modulos/Facturas de cliente/Model/schFacturasClienteClient_Intf.pas index 8bb5d35..ce9e786 100644 --- a/Source/Modulos/Facturas de cliente/Model/schFacturasClienteClient_Intf.pas +++ b/Source/Modulos/Facturas de cliente/Model/schFacturasClienteClient_Intf.pas @@ -9,9 +9,9 @@ const { Data table rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_ListaAnosFacturas = '{484D7187-CB40-476A-9513-05D56701D4B9}'; - RID_FacturasCliente = '{6D39955F-2046-48A8-A1A0-D1B462E5236E}'; - RID_FacturasCliente_Detalles = '{35F0CA37-6ADD-4C61-9D67-0466331C6F62}'; + RID_ListaAnosFacturas = '{01C99D6F-78B2-4E5F-B7F8-D9956D0AE8D4}'; + RID_FacturasCliente = '{78230E46-9D32-4F95-BED8-F15B9AE4D5F8}'; + RID_FacturasCliente_Detalles = '{01FA3B03-4B5B-4FB4-8724-A89BF09A75EF}'; { Data table names } nme_ListaAnosFacturas = 'ListaAnosFacturas'; @@ -171,7 +171,7 @@ const type { IListaAnosFacturas } IListaAnosFacturas = interface(IDAStronglyTypedDataTable) - ['{538ADACC-485C-464B-84AD-84ADBF7D37E2}'] + ['{80613B96-203D-4FEF-9621-DA0D5B02C3CD}'] { Property getters and setters } function GetANOValue: String; procedure SetANOValue(const aValue: String); @@ -206,7 +206,7 @@ type { IFacturasCliente } IFacturasCliente = interface(IDAStronglyTypedDataTable) - ['{45CA2939-6E07-4742-82AE-4698DB6B3A14}'] + ['{E065EEAD-79C9-48AA-8A3E-A7DD626FC162}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -877,7 +877,7 @@ type { IFacturasCliente_Detalles } IFacturasCliente_Detalles = interface(IDAStronglyTypedDataTable) - ['{75F87DDE-E13B-42B1-8550-89F45849D374}'] + ['{22259244-690D-4493-A734-5B3D8C2ECB2D}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); diff --git a/Source/Modulos/Facturas de cliente/Model/schFacturasClienteServer_Intf.pas b/Source/Modulos/Facturas de cliente/Model/schFacturasClienteServer_Intf.pas index fd64d93..fec22a4 100644 --- a/Source/Modulos/Facturas de cliente/Model/schFacturasClienteServer_Intf.pas +++ b/Source/Modulos/Facturas de cliente/Model/schFacturasClienteServer_Intf.pas @@ -9,14 +9,14 @@ const { Delta rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_ListaAnosFacturasDelta = '{C9831765-1629-4325-A1FF-1FAE87FC82C2}'; - RID_FacturasClienteDelta = '{7FBCB9F2-5A0C-4C4C-9503-27624E85B1F2}'; - RID_FacturasCliente_DetallesDelta = '{E532A60C-1259-4F35-B997-18F37616D9FD}'; + RID_ListaAnosFacturasDelta = '{3852FAEA-64F2-4C8F-9FDF-E08A357F1861}'; + RID_FacturasClienteDelta = '{07651992-560F-432E-8583-EEEAAAA10E52}'; + RID_FacturasCliente_DetallesDelta = '{9385E500-5ECA-4B3A-8906-5660B5DB9309}'; type { IListaAnosFacturasDelta } IListaAnosFacturasDelta = interface(IListaAnosFacturas) - ['{C9831765-1629-4325-A1FF-1FAE87FC82C2}'] + ['{3852FAEA-64F2-4C8F-9FDF-E08A357F1861}'] { Property getters and setters } function GetOldANOValue : String; @@ -50,7 +50,7 @@ type { IFacturasClienteDelta } IFacturasClienteDelta = interface(IFacturasCliente) - ['{7FBCB9F2-5A0C-4C4C-9503-27624E85B1F2}'] + ['{07651992-560F-432E-8583-EEEAAAA10E52}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_EMPRESAValue : Integer; @@ -721,7 +721,7 @@ type { IFacturasCliente_DetallesDelta } IFacturasCliente_DetallesDelta = interface(IFacturasCliente_Detalles) - ['{E532A60C-1259-4F35-B997-18F37616D9FD}'] + ['{9385E500-5ECA-4B3A-8906-5660B5DB9309}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_FACTURAValue : Integer; diff --git a/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.dfm b/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.dfm index 525ae27..55b04dd 100644 --- a/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.dfm +++ b/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.dfm @@ -1699,6 +1699,7 @@ object RptFacturasCliente: TRptFacturasCliente UseFileCache = True ShowProgress = False OverwritePrompt = False + EmbeddedFonts = True PrintOptimized = True Outline = False Background = False diff --git a/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.pas b/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.pas index 0112692..3fab7b4 100644 --- a/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.pas +++ b/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.pas @@ -52,7 +52,6 @@ type FImporteMinimo: Currency; FDesglosado : Boolean; FVerDatosCliente : Boolean; - FEmpresaAcota : Boolean; //Genera cada uno de los albaranes a imprimir procedure _GenerarFactura(const ID: integer); overload; @@ -64,8 +63,8 @@ type procedure RecuperarNombresClientes; public - function GenerarFactura(const ListaID : TIntegerArray; const VerDatosCliente: Boolean; const EmpresaAcota: Boolean = true): Binary; overload; - function GenerarFacturaEnPDF(const ListaID : TIntegerArray; const VerDatosCliente: Boolean; const EmpresaAcota: Boolean = true): Binary; + function GenerarFactura(const ListaID : TIntegerArray; const VerDatosCliente: Boolean): Binary; overload; + function GenerarFacturaEnPDF(const ListaID : TIntegerArray; const VerDatosCliente: Boolean; const Usuario: AnsiString; const Firmado: Boolean): Binary; function GenerarInformeIVA(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary; function GenerarInformeListadoFacturas(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary; function GenerarInformeListadoFacturasPendientes(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary; @@ -109,14 +108,13 @@ begin FreeANDNIL(FListaNombresClientes); end; -function TRptFacturasCliente.GenerarFactura(const ListaID: TIntegerArray; const VerDatosCliente: Boolean; const EmpresaAcota: Boolean = true): Binary; +function TRptFacturasCliente.GenerarFactura(const ListaID: TIntegerArray; const VerDatosCliente: Boolean): Binary; var i: Integer; begin Result := Binary.Create; try FVerDatosCliente := VerDatosCliente; - FEmpresaAcota := EmpresaAcota; //Vamos generando todos y cada una de las facturas recibidas for i := 0 to ListaID.Count - 1 do @@ -127,21 +125,40 @@ begin end; end; -function TRptFacturasCliente.GenerarFacturaEnPDF(const ListaID: TIntegerArray; const VerDatosCliente: Boolean; const EmpresaAcota: Boolean = true): Binary; +function TRptFacturasCliente.GenerarFacturaEnPDF(const ListaID: TIntegerArray; const VerDatosCliente: Boolean; const Usuario: AnsiString; const Firmado: Boolean): Binary; var i: Integer; + AStream : Binary; + ARutaFichero, ANombreFichero, LlamadaBat : String; begin Result := Binary.Create; try + //Inicializamos parametros FVerDatosCliente := VerDatosCliente; - FEmpresaAcota := EmpresaAcota; - + //Vamos generando todos y cada uno de los presupuestos recibidos for i := 0 to ListaID.Count - 1 do - _GenerarFactura(ListaID.Items[i]); + begin + _GenerarFactura(ListaID.Items[i]); + ANombreFichero := frxReport.ReportOptions.Name + '_' + FormatDateTime('yyyymmdd_hhnnss_', now) + Usuario; + if Firmado then + ANombreFichero := ANombreFichero + 'firmado.pdf' + else + ANombreFichero := ANombreFichero + '.pdf'; - frxPDFExport1.Stream := Result; - frxReport.Export(frxPDFExport1) + ANombreFichero := DarRutaPDFS + EscapeIllegalChars(ANombreFichero); + frxPDFExport1.Stream := Result; + frxReport.Export(frxPDFExport1); + Result.SaveToFile(ANombreFichero); + + if Firmado then + begin + ARutaFichero := DarRutaFichero(DarRutaInformes, 'firma_factura.bat ', IntToStr(FIdEmpresa)); + LlamadaBat := ARutaFichero + '"' + ANombreFichero + '"'; + if ExecAndWait(LlamadaBat) then + Result.LoadFromFile(ANombreFichero); + end; + end; finally end; end; @@ -638,10 +655,9 @@ begin tbl_Detalles.Active := True; tbl_Vencimientos.Active := True; - if FEmpresaAcota then - AInforme := DarRutaFichero(DarRutaInformes, rptFacturaCliente, tbl_Cabecera.FieldByName('ID_EMPRESA').AsString, tbl_Cabecera.FieldByName('ID_TIENDA').AsString) - else - AInforme := DarRutaFichero(DarRutaInformes, rptFacturaClienteAlonsoySal, tbl_Cabecera.FieldByName('ID_EMPRESA').AsString, tbl_Cabecera.FieldByName('ID_TIENDA').AsString); + FIdEmpresa := tbl_Cabecera.FieldByName('ID_EMPRESA').AsInteger; +// FIdTienda := tbl_Cabecera.FieldByName('ID_TIENDA').AsInteger; + AInforme := DarRutaFichero(DarRutaInformes, rptFacturaCliente, tbl_Cabecera.FieldByName('ID_EMPRESA').AsString); //, tbl_Cabecera.FieldByName('ID_TIENDA').AsString); if VarIsNull(AInforme) then raise Exception.Create (('Error Servidor: _GenerarFactura, no encuentra informe ' + rptFacturaCliente)); diff --git a/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.pas b/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.pas index 9ce0e45..8f9156e 100644 --- a/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.pas +++ b/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.pas @@ -35,8 +35,8 @@ type private protected { IsrvFacturasCliente methods } - function GenerateReport(const FacturaID: TIntegerArray; const VerDatosCliente: Boolean; const EmpresaAcota: Boolean = true): Binary; - function GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerDatosCliente: Boolean; const EmpresaAcota: Boolean = true): Binary; + function GenerateReport(const FacturaID: TIntegerArray; const VerDatosCliente: Boolean): Binary; + function GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerDatosCliente: Boolean; const Usuario: AnsiString; const Firmado: Boolean): Binary; end; implementation @@ -78,25 +78,25 @@ begin ConnectionName := dmServer.ConnectionName; end; -function TsrvFacturasCliente.GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerDatosCliente: Boolean; const EmpresaAcota: Boolean = true): Binary; +function TsrvFacturasCliente.GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerDatosCliente: Boolean; const Usuario: AnsiString; const Firmado: Boolean): Binary; var AReportGenerator : TRptFacturasCliente; begin AReportGenerator := TRptFacturasCliente.Create(nil); try - Result := AReportGenerator.GenerarFacturaEnPDF(ListaID, VerDatosCliente, EmpresaAcota); + Result := AReportGenerator.GenerarFacturaEnPDF(ListaID, VerDatosCliente, Usuario, Firmado); finally FreeAndNIL(AReportGenerator); end; end; -function TsrvFacturasCliente.GenerateReport(const FacturaID: TIntegerArray; const VerDatosCliente: Boolean; const EmpresaAcota: Boolean = true): Binary; +function TsrvFacturasCliente.GenerateReport(const FacturaID: TIntegerArray; const VerDatosCliente: Boolean): Binary; var AReportGenerator : TRptFacturasCliente; begin AReportGenerator := TRptFacturasCliente.Create(nil); try - Result := AReportGenerator.GenerarFactura(FacturaID, VerDatosCliente, EmpresaAcota); + Result := AReportGenerator.GenerarFactura(FacturaID, VerDatosCliente); finally FreeAndNIL(AReportGenerator); end; diff --git a/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.dfm b/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.dfm index b91a900..fd56f48 100644 --- a/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.dfm +++ b/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.dfm @@ -38,7 +38,7 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente Width = 640 ExplicitWidth = 640 inherited tbxMain: TTBXToolbar - ExplicitWidth = 632 + ExplicitWidth = 640 object TBXSubmenuItem2: TTBXSubmenuItem [0] Caption = 'Nuevo' DisplayMode = nbdmImageAndText @@ -56,7 +56,11 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente inherited TBXItem2: TTBXItem Visible = False end - object TBXItem41: TTBXItem [13] + object TBXItem45: TTBXItem [13] + Action = actGenerarPDF + DisplayMode = nbdmImageAndText + end + object TBXItem41: TTBXItem [14] Action = actEnviarMail DisplayMode = nbdmImageAndText end @@ -275,7 +279,6 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente end inherited TBXAlignmentPanel1: TTBXAlignmentPanel Width = 640 - ExplicitTop = 75 ExplicitWidth = 640 inherited tbxBotones: TTBXToolbar Width = 630 @@ -375,6 +378,13 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente OnExecute = actLOPDExecute OnUpdate = actLOPDUpdate end + object actGenerarPDF: TAction + Category = 'Archivo' + Caption = 'Generar PDF' + ImageIndex = 29 + OnExecute = actGenerarPDFExecute + OnUpdate = actGenerarPDFUpdate + end end inherited SmallImages: TPngImageList [5] PngImages = < @@ -1184,6 +1194,29 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente 49454E44AE426082} Name = 'PngImage28' Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001F04944415478DA + 633CC0C0F09F0109C83939313CDAB70F5988C181818191C1600644DD850C4664 + 3946900162D7AEC1053872721838972E85F36F4A4A323818CC60A82CF062689F + B00DB7011C1C1C0C9C9C9C0CDFA3A31924B76E65F8F1E307184B7A6E64583825 + 99E1C69DE70C4B561C64F8F1F3EFC5D7EF7F78030D7A8A6280A0A020D890F7C1 + C10C826BD7824D17745C09D70C03627C2C0C959D5BBF000DD20019023640FDF9 + 7314CD201AE48DF7EFDF3368451D62F075D365D0D19265B872ED3198FEF3F90D + C3C2F597B7BEDA17EF0337000440CEC70694DE85810DD9BCEB32DC305878800D + 00853C08806CFDFEFD3B42674A0A38462E2FDACE90DBF7102CB4A0568361ED49 + 568663276F31BC3D98883000E66474F04A4B8BC1F6DF3F14B182CEDD0CF3363D + 66F87A3C8591B15842F33F0301D0F5EC2A0ABF6DC6368629EBDE3148311F6760 + 24A479F2A2EDFFB362DC19983E9D67B8BFDC98412AF402C3EC6DCF19E62DDD04 + 4907C41AF0772D1303AB453CC3FD2D0B197823BE307CFFF18BC13FA19A380372 + FC2480B61B3228DA3330DC3FC8C0C0E27E95E13B83284344663D7106787FF564 + 50F4896760F8BC90E1FD3B06860F9719183EDA3F61482A6C25CE00BD279E18E2 + CCEEF71872ABBA893320C4D30AE8E7DF0CDFBEFF66F8FAFD17C337A0FF41A0A8 + AE8F380360218E0D000074D3EB115697A8140000000049454E44AE426082} + Name = 'PngImage29' + Background = clWindow end> Left = 395 Bitmap = {} diff --git a/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.pas b/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.pas index 05e81c2..be879d9 100644 --- a/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.pas +++ b/Source/Modulos/Facturas de cliente/Views/uEditorFacturasCliente.pas @@ -45,6 +45,8 @@ type TBXItem43: TTBXItem; actLOPD: TAction; TBXItem44: TTBXItem; + actGenerarPDF: TAction; + TBXItem45: TTBXItem; procedure FormShow(Sender: TObject); procedure actEliminarUpdate(Sender: TObject); procedure actNuevaFacturaExecute(Sender: TObject); @@ -58,6 +60,8 @@ type procedure actLOPDExecute(Sender: TObject); procedure actLOPDUpdate(Sender: TObject); procedure actVerContratoExecute(Sender: TObject); + procedure actGenerarPDFExecute(Sender: TObject); + procedure actGenerarPDFUpdate(Sender: TObject); private FFacturas: IBizFacturaCliente; @@ -185,6 +189,58 @@ begin (Sender as TAction).Enabled := False; end; +procedure TfEditorFacturasCliente.actGenerarPDFExecute(Sender: TObject); +var + ACadena : String; + AFacturas: IBizFacturaCliente; + AllItems: Boolean; + AListaCausas: TStringList; + AFirmar: Boolean; + +begin + inherited; + AFacturas := Nil; + AFirmar := False; + AllItems := False; + AListaCausas := TStringList.Create; + + if MultiSelect and Assigned(ViewGrid) then + AllItems := (ViewGrid.NumSeleccionados > 1); + + if AllItems then + begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Facturas as ISeleccionable).SelectedRecords); + AFacturas := (Controller as IFacturasClienteController).ExtraerSeleccionados(Facturas) as IBizFacturaCliente; + + if (Application.MessageBox('¿Desea firmar digitalmente las facturas/abonos de cliente seleccionados?', 'Atención', MB_YESNO) = IDYES) then + AFirmar := True; + end + else + begin + AFacturas := Facturas; + + if Facturas.TIPO = CTE_TIPO_FACTURA then + ACadena := '¿Desea firmar digitalmente esta factura de cliente?' + else + ACadena := '¿Desea firmar digitalmente este abono a cliente?'; + + if (Application.MessageBox(PChar(ACadena), 'Atención', MB_YESNO) = IDYES) then + AFirmar := True; + end; + + FController.GenerarPDF(AFacturas, AllItems, AFirmar); +end; + +procedure TfEditorFacturasCliente.actGenerarPDFUpdate(Sender: TObject); +begin + inherited; + if HayDatos and Assigned(ViewGrid) then + (Sender as TAction).Enabled := ViewGrid.EsSeleccionCeldaDatos + and (ViewGrid.NumSeleccionados > 0) + else + (Sender as TAction).Enabled := False; +end; + procedure TfEditorFacturasCliente.actInformesExecute(Sender: TObject); var Respuesta : Integer; diff --git a/Source/Servicios/FactuGES.RODL b/Source/Servicios/FactuGES.RODL index 3e94afd..ac3b761 100644 --- a/Source/Servicios/FactuGES.RODL +++ b/Source/Servicios/FactuGES.RODL @@ -304,8 +304,6 @@ - - @@ -316,7 +314,9 @@ - + + + @@ -937,6 +937,10 @@ + + + + diff --git a/Source/Servicios/FactuGES_Intf.pas b/Source/Servicios/FactuGES_Intf.pas index 31b0168..907fa0a 100644 --- a/Source/Servicios/FactuGES_Intf.pas +++ b/Source/Servicios/FactuGES_Intf.pas @@ -516,8 +516,8 @@ type { IsrvFacturasCliente } IsrvFacturasCliente = interface(IDataAbstractService) ['{56B4FFF0-AB1B-46B2-BA16-ABD5360F6311}'] - function GenerateReport(const FacturaID: TIntegerArray; const VerDatosCliente: Boolean; const EmpresaAcota: Boolean): Binary; - function GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerDatosCliente: Boolean; const EmpresaAcota: Boolean): Binary; + function GenerateReport(const FacturaID: TIntegerArray; const VerDatosCliente: Boolean): Binary; + function GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerDatosCliente: Boolean; const Usuario: AnsiString; const Firmado: Boolean): Binary; end; { CosrvFacturasCliente } @@ -530,8 +530,8 @@ type protected function __GetInterfaceName:string; override; - function GenerateReport(const FacturaID: TIntegerArray; const VerDatosCliente: Boolean; const EmpresaAcota: Boolean): Binary; - function GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerDatosCliente: Boolean; const EmpresaAcota: Boolean): Binary; + function GenerateReport(const FacturaID: TIntegerArray; const VerDatosCliente: Boolean): Binary; + function GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerDatosCliente: Boolean; const Usuario: AnsiString; const Firmado: Boolean): Binary; end; { IsrvFacturasProveedor } @@ -860,7 +860,7 @@ type IsrvContratosCliente = interface(IDataAbstractService) ['{ADBF1627-F507-4A0F-818E-38BAE28579B6}'] function GenerarInforme(const ListaID: TIntegerArray; const VerCondiciones: Boolean; const TamLetra: Integer): Binary; - function GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerCondiciones: Boolean): Binary; + function GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerCondiciones: Boolean; const Usuario: AnsiString; const Firmado: Boolean): Binary; end; { CosrvContratosCliente } @@ -874,7 +874,7 @@ type function __GetInterfaceName:string; override; function GenerarInforme(const ListaID: TIntegerArray; const VerCondiciones: Boolean; const TamLetra: Integer): Binary; - function GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerCondiciones: Boolean): Binary; + function GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerCondiciones: Boolean; const Usuario: AnsiString; const Firmado: Boolean): Binary; end; implementation @@ -1817,14 +1817,13 @@ begin result := 'srvFacturasCliente'; end; -function TsrvFacturasCliente_Proxy.GenerateReport(const FacturaID: TIntegerArray; const VerDatosCliente: Boolean; const EmpresaAcota: Boolean): Binary; +function TsrvFacturasCliente_Proxy.GenerateReport(const FacturaID: TIntegerArray; const VerDatosCliente: Boolean): Binary; begin try result := nil; __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport'); __Message.Write('FacturaID', TypeInfo(FactuGES_Intf.TIntegerArray), FacturaID, []); __Message.Write('VerDatosCliente', TypeInfo(Boolean), VerDatosCliente, []); - __Message.Write('EmpresaAcota', TypeInfo(Boolean), EmpresaAcota, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); @@ -1836,14 +1835,15 @@ begin end end; -function TsrvFacturasCliente_Proxy.GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerDatosCliente: Boolean; const EmpresaAcota: Boolean): Binary; +function TsrvFacturasCliente_Proxy.GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerDatosCliente: Boolean; const Usuario: AnsiString; const Firmado: Boolean): Binary; begin try result := nil; __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarInformeEnPDF'); __Message.Write('ListaID', TypeInfo(FactuGES_Intf.TIntegerArray), ListaID, []); __Message.Write('VerDatosCliente', TypeInfo(Boolean), VerDatosCliente, []); - __Message.Write('EmpresaAcota', TypeInfo(Boolean), EmpresaAcota, []); + __Message.Write('Usuario', TypeInfo(AnsiString), Usuario, []); + __Message.Write('Firmado', TypeInfo(Boolean), Firmado, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); @@ -2799,13 +2799,15 @@ begin end end; -function TsrvContratosCliente_Proxy.GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerCondiciones: Boolean): Binary; +function TsrvContratosCliente_Proxy.GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerCondiciones: Boolean; const Usuario: AnsiString; const Firmado: Boolean): Binary; begin try result := nil; __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarInformeEnPDF'); __Message.Write('ListaID', TypeInfo(FactuGES_Intf.TIntegerArray), ListaID, []); __Message.Write('VerCondiciones', TypeInfo(Boolean), VerCondiciones, []); + __Message.Write('Usuario', TypeInfo(AnsiString), Usuario, []); + __Message.Write('Firmado', TypeInfo(Boolean), Firmado, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); diff --git a/Source/Servicios/FactuGES_Invk.pas b/Source/Servicios/FactuGES_Invk.pas index a37ec87..a3c9305 100644 --- a/Source/Servicios/FactuGES_Invk.pas +++ b/Source/Servicios/FactuGES_Invk.pas @@ -934,11 +934,10 @@ begin end; procedure TsrvFacturasCliente_Invoker.Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ function GenerateReport(const FacturaID: TIntegerArray; const VerDatosCliente: Boolean; const EmpresaAcota: Boolean): Binary; } +{ function GenerateReport(const FacturaID: TIntegerArray; const VerDatosCliente: Boolean): Binary; } var FacturaID: FactuGES_Intf.TIntegerArray; VerDatosCliente: Boolean; - EmpresaAcota: Boolean; lResult: Binary; __lObjectDisposer: TROObjectDisposer; begin @@ -947,9 +946,8 @@ begin try __Message.Read('FacturaID', TypeInfo(FactuGES_Intf.TIntegerArray), FacturaID, []); __Message.Read('VerDatosCliente', TypeInfo(Boolean), VerDatosCliente, []); - __Message.Read('EmpresaAcota', TypeInfo(Boolean), EmpresaAcota, []); - lResult := (__Instance as IsrvFacturasCliente).GenerateReport(FacturaID, VerDatosCliente, EmpresaAcota); + lResult := (__Instance as IsrvFacturasCliente).GenerateReport(FacturaID, VerDatosCliente); __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvFacturasCliente', 'GenerateReportResponse'); __Message.Write('Result', TypeInfo(Binary), lResult, []); @@ -968,11 +966,12 @@ begin end; procedure TsrvFacturasCliente_Invoker.Invoke_GenerarInformeEnPDF(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ function GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerDatosCliente: Boolean; const EmpresaAcota: Boolean): Binary; } +{ function GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerDatosCliente: Boolean; const Usuario: AnsiString; const Firmado: Boolean): Binary; } var ListaID: FactuGES_Intf.TIntegerArray; VerDatosCliente: Boolean; - EmpresaAcota: Boolean; + Usuario: AnsiString; + Firmado: Boolean; lResult: Binary; __lObjectDisposer: TROObjectDisposer; begin @@ -981,9 +980,10 @@ begin try __Message.Read('ListaID', TypeInfo(FactuGES_Intf.TIntegerArray), ListaID, []); __Message.Read('VerDatosCliente', TypeInfo(Boolean), VerDatosCliente, []); - __Message.Read('EmpresaAcota', TypeInfo(Boolean), EmpresaAcota, []); + __Message.Read('Usuario', TypeInfo(AnsiString), Usuario, []); + __Message.Read('Firmado', TypeInfo(Boolean), Firmado, []); - lResult := (__Instance as IsrvFacturasCliente).GenerarInformeEnPDF(ListaID, VerDatosCliente, EmpresaAcota); + lResult := (__Instance as IsrvFacturasCliente).GenerarInformeEnPDF(ListaID, VerDatosCliente, Usuario, Firmado); __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvFacturasCliente', 'GenerarInformeEnPDFResponse'); __Message.Write('Result', TypeInfo(Binary), lResult, []); @@ -2327,10 +2327,12 @@ begin end; procedure TsrvContratosCliente_Invoker.Invoke_GenerarInformeEnPDF(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ function GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerCondiciones: Boolean): Binary; } +{ function GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerCondiciones: Boolean; const Usuario: AnsiString; const Firmado: Boolean): Binary; } var ListaID: FactuGES_Intf.TIntegerArray; VerCondiciones: Boolean; + Usuario: AnsiString; + Firmado: Boolean; lResult: Binary; __lObjectDisposer: TROObjectDisposer; begin @@ -2339,8 +2341,10 @@ begin try __Message.Read('ListaID', TypeInfo(FactuGES_Intf.TIntegerArray), ListaID, []); __Message.Read('VerCondiciones', TypeInfo(Boolean), VerCondiciones, []); + __Message.Read('Usuario', TypeInfo(AnsiString), Usuario, []); + __Message.Read('Firmado', TypeInfo(Boolean), Firmado, []); - lResult := (__Instance as IsrvContratosCliente).GenerarInformeEnPDF(ListaID, VerCondiciones); + lResult := (__Instance as IsrvContratosCliente).GenerarInformeEnPDF(ListaID, VerCondiciones, Usuario, Firmado); __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvContratosCliente', 'GenerarInformeEnPDFResponse'); __Message.Write('Result', TypeInfo(Binary), lResult, []); diff --git a/Source/Servicios/RODLFile.res b/Source/Servicios/RODLFile.res index 497d97ab2ac13375b24fbea43a1251b12bae6eeb..6ed873ab77565ef76a3a09a19d9731f8e88d13bc 100644 GIT binary patch delta 84 zcmezWn5p|I(*y-3>rES#jNB(5kk#LO!QF##@|o3glM_m1Cku!Ru()Lw + - - {ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1} - FactuGES_Server.dpr - Debug - AnyCPU - DCC32 - ..\..\Output\Debug\Servidor\FactuGES_Server.exe - - - 7.0 - False - False - 0 - 3 - ..\..\Output\Release\Servidor - RELEASE - - - 7.0 - 3 - ..\..\Output\Debug\Servidor - DEBUG; - True - - - Delphi.Personality - - - FalseTrueFalseTrueFalse2300FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.3.0.0FactuGES v2(Servidor)2.3.0.0jueves, 25 de abril de 2024 17:41 - File C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl not found - FactuGES_Server.dpr - - - - - MainSource - - - - - -
srvEjercicios
- TDataAbstractService -
- - - -
srvEmpresas
- TDARemoteService -
- -
srvProvinciasPoblaciones
- TRORemoteDataModule -
- - - - - - - - - - - -
srvAlbaranesCliente
- TDataAbstractService -
- - - - -
srvAlbaranesProveedor
- TDataAbstractService -
- - - -
srvAlmacenes
- TDARemoteService -
- - - - - - - -
RptComisiones
- TDataModule -
- -
srvComisiones
- TDataAbstractService -
- - - - -
srvContabilidad
- TDataAbstractService -
- - - - - - - -
RptListadosContactos
- TDataModule -
- -
srvContactos
- TDARemoteService -
- - - - -
RptContratosCliente
-
- -
srvContratosCliente
- TDataAbstractService -
- - - - -
RptFacturasCliente
- TDataModule -
- -
srvFacturasCliente
- TDataAbstractService -
- - - - -
RptFacturasProveedor
- TDataModule -
- -
srvFacturasProveedor
- TDataAbstractService -
- - - - - - - -
srvGestorDocumentos
- TDataAbstractService -
- -
srvGestorInformes
- TDataAbstractService -
- - - -
srvHistoricoMovimientos
- TDataAbstractService -
- - - -
srvInventario
- TDataAbstractService -
- - - - -
RptPedidosProveedor
- TDataModule -
- -
srvPedidosProveedor
- TDataAbstractService -
- - - - -
RptPresupuestosCliente
-
- -
srvPresupuestosCliente
- TDataAbstractService -
- - - - - -
RptRecibosCliente
- TDataModule -
- -
srvRecibosCliente
- TDataAbstractService -
- - - - - -
RptRecibosProveedor
- TDataModule -
- -
srvRecibosProveedor
- TDataAbstractService -
- - - -
srvReferencias
- TDataAbstractService -
- - - - -
srvRemesasCliente
- TDataAbstractService -
- - - - -
srvRemesasProveedor
- TDataAbstractService -
- - - - - - -
srvUnidadesMedida
- TDataAbstractService -
- - - -
srvConfiguracion
- TDataAbstractService -
- -
frConexionBD
- TFrame -
- -
frConfGeneral
- TFrame -
- -
fConfiguracion
- TForm -
- -
FrameConfiguracion
- TFrame -
- -
srvLogin
- TDARemoteService -
- -
fAcercaDe
-
- -
dmServer
- TDataModule -
- -
fServerForm
-
- - - - - - - - -
+ + {ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1} + FactuGES_Server.dpr + Debug + AnyCPU + DCC32 + ..\..\Output\Debug\Servidor\FactuGES_Server.exe + + + 7.0 + False + False + 0 + 3 + ..\..\Output\Release\Servidor + RELEASE + + + 7.0 + 3 + ..\..\Output\Debug\Servidor + DEBUG; + True + + + Delphi.Personality + + +FalseTrueFalseTrueFalse2310FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.3.1.0FactuGES v2(Servidor)2.3.1.0lunes, 20 de mayo de 2024 18:10 + + + + + File C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPScxScheduler2LnkD11.bpl not found + FactuGES_Server.dpr + + + + + MainSource + + + + + +
srvEjercicios
+ TDataAbstractService +
+ + + +
srvEmpresas
+ TDARemoteService +
+ +
srvProvinciasPoblaciones
+ TRORemoteDataModule +
+ + + + + + + + + + + +
srvAlbaranesCliente
+ TDataAbstractService +
+ + + + +
srvAlbaranesProveedor
+ TDataAbstractService +
+ + + +
srvAlmacenes
+ TDARemoteService +
+ + + + + + + +
RptComisiones
+ TDataModule +
+ +
srvComisiones
+ TDataAbstractService +
+ + + + +
srvContabilidad
+ TDataAbstractService +
+ + + + + + + +
RptListadosContactos
+ TDataModule +
+ +
srvContactos
+ TDARemoteService +
+ + + + +
RptContratosCliente
+
+ +
srvContratosCliente
+ TDataAbstractService +
+ + + + +
RptFacturasCliente
+ TDataModule +
+ +
srvFacturasCliente
+ TDataAbstractService +
+ + + + +
RptFacturasProveedor
+ TDataModule +
+ +
srvFacturasProveedor
+ TDataAbstractService +
+ + + + + + + +
srvGestorDocumentos
+ TDataAbstractService +
+ +
srvGestorInformes
+ TDataAbstractService +
+ + + +
srvHistoricoMovimientos
+ TDataAbstractService +
+ + + +
srvInventario
+ TDataAbstractService +
+ + + + +
RptPedidosProveedor
+ TDataModule +
+ +
srvPedidosProveedor
+ TDataAbstractService +
+ + + + +
RptPresupuestosCliente
+
+ +
srvPresupuestosCliente
+ TDataAbstractService +
+ + + + + +
RptRecibosCliente
+ TDataModule +
+ +
srvRecibosCliente
+ TDataAbstractService +
+ + + + + +
RptRecibosProveedor
+ TDataModule +
+ +
srvRecibosProveedor
+ TDataAbstractService +
+ + + +
srvReferencias
+ TDataAbstractService +
+ + + + +
srvRemesasCliente
+ TDataAbstractService +
+ + + + +
srvRemesasProveedor
+ TDataAbstractService +
+ + + + + + +
srvUnidadesMedida
+ TDataAbstractService +
+ + + +
srvConfiguracion
+ TDataAbstractService +
+ +
frConexionBD
+ TFrame +
+ +
frConfGeneral
+ TFrame +
+ +
fConfiguracion
+ TForm +
+ +
FrameConfiguracion
+ TFrame +
+ +
srvLogin
+ TDARemoteService +
+ +
fAcercaDe
+
+ +
dmServer
+ TDataModule +
+ +
fServerForm
+
+ + + + + + + + +