From a6ed8484a5794ea38097c48ae2804ef79cf7468f Mon Sep 17 00:00:00 2001 From: Gerardo Date: Thu, 12 Sep 2024 08:48:32 +0200 Subject: [PATCH] version inicial --- .gitignore | 4 + Notifica.sln | 25 +++++++ Notifica/App.config | 11 +++ Notifica/Notifica.cs | 26 +++++++ Notifica/Notifica.csproj | 70 ++++++++++++++++++ Notifica/Notifica.csproj.user | 6 ++ Notifica/Program.cs | 49 ++++++++++++ Notifica/Properties/AssemblyInfo.cs | 36 +++++++++ Notifica/impersonalizacionExe.cs | 111 ++++++++++++++++++++++++++++ Notifica/solologo_ico.ico | Bin 0 -> 116527 bytes 10 files changed, 338 insertions(+) create mode 100644 .gitignore create mode 100644 Notifica.sln create mode 100644 Notifica/App.config create mode 100644 Notifica/Notifica.cs create mode 100644 Notifica/Notifica.csproj create mode 100644 Notifica/Notifica.csproj.user create mode 100644 Notifica/Program.cs create mode 100644 Notifica/Properties/AssemblyInfo.cs create mode 100644 Notifica/impersonalizacionExe.cs create mode 100644 Notifica/solologo_ico.ico diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6235804 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/.vs/* +/Notifica/bin/* +/MigrationBackup/* +/Notifica/obj/* diff --git a/Notifica.sln b/Notifica.sln new file mode 100644 index 0000000..132e6ba --- /dev/null +++ b/Notifica.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.10.35013.160 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Notifica", "Notifica\Notifica.csproj", "{F4DFCA6B-D27D-4F2C-9ED6-39751A005E45}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F4DFCA6B-D27D-4F2C-9ED6-39751A005E45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F4DFCA6B-D27D-4F2C-9ED6-39751A005E45}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F4DFCA6B-D27D-4F2C-9ED6-39751A005E45}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F4DFCA6B-D27D-4F2C-9ED6-39751A005E45}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {B8E9237F-F36B-43F0-A550-8EB9021E6295} + EndGlobalSection +EndGlobal diff --git a/Notifica/App.config b/Notifica/App.config new file mode 100644 index 0000000..1582e85 --- /dev/null +++ b/Notifica/App.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Notifica/Notifica.cs b/Notifica/Notifica.cs new file mode 100644 index 0000000..6a966a0 --- /dev/null +++ b/Notifica/Notifica.cs @@ -0,0 +1,26 @@ +using Microsoft.Toolkit.Uwp.Notifications; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; + +namespace Notifica +{ + internal class Notifica : impersonalizacionTarea + { + public string msg { get; set; } + public void tareaImpersonalizada() + { + MessageBox.Show(msg); + /* + new ToastContentBuilder() + .AddArgument("action", "viewConversation") + .AddArgument("conversationId", 9813) + .AddText("Aviso") + .AddText(msg) + .Show();*/ + } + } +} diff --git a/Notifica/Notifica.csproj b/Notifica/Notifica.csproj new file mode 100644 index 0000000..bfa6d87 --- /dev/null +++ b/Notifica/Notifica.csproj @@ -0,0 +1,70 @@ + + + + + Debug + AnyCPU + {F4DFCA6B-D27D-4F2C-9ED6-39751A005E45} + Exe + Notifica + Notifica + v4.8 + 512 + true + true + + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + solologo_ico.ico + + + + + + + + + + + + + + + + + + + + + + + + + 7.1.3 + + + + + + + \ No newline at end of file diff --git a/Notifica/Notifica.csproj.user b/Notifica/Notifica.csproj.user new file mode 100644 index 0000000..005eff1 --- /dev/null +++ b/Notifica/Notifica.csproj.user @@ -0,0 +1,6 @@ + + + + "Notificacion de prueba" + + \ No newline at end of file diff --git a/Notifica/Program.cs b/Notifica/Program.cs new file mode 100644 index 0000000..c486c7d --- /dev/null +++ b/Notifica/Program.cs @@ -0,0 +1,49 @@ +using Microsoft.Toolkit.Uwp.Notifications; +using System; +using System.Collections.Generic; +using System.Configuration; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Notifica +{ + internal class Program + { + static void Main(string[] args) + { + if (args.Count() <= 0) + return; + var Notificador = new impersonalizacionExe(); + var Notificacion = new Notifica(); + Notificador.Tarea = Notificacion; + + Notificador.Usuario=ConfigurationManager.AppSettings["usuario"]; + Notificador.Dominio = ConfigurationManager.AppSettings["dominio"]; + Notificador.Clave = ConfigurationManager.AppSettings["clave"]; + foreach (string arg in args) + { + Notificacion.msg = arg; + string res=Notificador.runImpersonal(); + + var sw = new StreamWriter("F:\\desa\\v2022\\Notifica\\Notifica\\bin\\Release\\Sample.txt"); + if (res != "") + sw.WriteLine(res); + else + sw.WriteLine("ok"); + sw.Close(); + + + //string mens = ConfigurationManager.AppSettings["MensajeAviso"]; + /*new ToastContentBuilder() + .AddArgument("action", "viewConversation") + .AddArgument("conversationId", 9813) + .AddText("Aviso") + .AddText(arg) + .Show();*/ + // Not seeing the Show() method? Make sure you have version 7.0, and if you're using .NET 6 (or later), then your TFM must be net6.0-windows10.0.17763.0 or greater + } + } + } +} diff --git a/Notifica/Properties/AssemblyInfo.cs b/Notifica/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..c5bf8c9 --- /dev/null +++ b/Notifica/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// La información general de un ensamblado se controla mediante el siguiente +// conjunto de atributos. Cambie estos valores de atributo para modificar la información +// asociada a un ensamblado. +[assembly: AssemblyTitle("Notifica")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Notifica")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Si establece ComVisible en false, los tipos de este ensamblado no estarán visibles +// para los componentes COM. Si es necesario obtener acceso a un tipo en este ensamblado desde +// COM, establezca el atributo ComVisible en true en este tipo. +[assembly: ComVisible(false)] + +// El siguiente GUID sirve como id. de typelib si este proyecto se expone a COM. +[assembly: Guid("f4dfca6b-d27d-4f2c-9ed6-39751a005e45")] + +// La información de versión de un ensamblado consta de los cuatro valores siguientes: +// +// Versión principal +// Versión secundaria +// Número de compilación +// Revisión +// +// Puede especificar todos los valores o usar los valores predeterminados de número de compilación y de revisión +// utilizando el carácter "*", como se muestra a continuación: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Notifica/impersonalizacionExe.cs b/Notifica/impersonalizacionExe.cs new file mode 100644 index 0000000..0d43a41 --- /dev/null +++ b/Notifica/impersonalizacionExe.cs @@ -0,0 +1,111 @@ +using System; +using System.Runtime.InteropServices; +using System.Security.Principal; +using System.Security.Permissions; +using Microsoft.Win32.SafeHandles; +using System.Runtime.ConstrainedExecution; +using System.Security; +using Windows.System; +using System.Runtime.Remoting.Messaging; + + +namespace Notifica +{ + + + public interface impersonalizacionTarea + { + void tareaImpersonalizada(); + } + + public class impersonalizacionExe + { + public string Usuario { get; set; } + public string Dominio { get; set; } + + public string Clave { get; set; } + + public impersonalizacionTarea Tarea { get; set; } + + [DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode)] + private static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword, + int dwLogonType, int dwLogonProvider, out SafeTokenHandle phToken); + + [DllImport("kernel32.dll", CharSet = CharSet.Auto)] + public extern static bool CloseHandle(IntPtr handle); + + private void run() + { + Tarea.tareaImpersonalizada(); + } + //si va bien devuelve "" + [PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")] + public string runImpersonal() + { + SafeTokenHandle safeTokenHandle; + var res = ""; + try + { + + const int LOGON32_PROVIDER_DEFAULT = 0; + //This parameter causes LogonUser to create a primary token. + const int LOGON32_LOGON_INTERACTIVE = 2; + + // Call LogonUser to obtain a handle to an access token. + bool returnValue = LogonUser(Usuario, Dominio, Clave, + LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, + out safeTokenHandle); + + + if (false == returnValue) + { + int ret = Marshal.GetLastWin32Error(); + res=string.Format("LogonUser failed with error code : {0}", ret); + } + using (safeTokenHandle) + { + // Check the identity. + /*Console.WriteLine("Before impersonation: " + + WindowsIdentity.GetCurrent().Name);*/ + // Use the token handle returned by LogonUser. + using (WindowsIdentity newId = new WindowsIdentity(safeTokenHandle.DangerousGetHandle())) + { + using (WindowsImpersonationContext impersonatedUser = newId.Impersonate()) + { + res = res + "identidad: " + WindowsIdentity.GetCurrent().Name; + run(); + // Check the identity. + /*Console.WriteLine("After impersonation: " + + WindowsIdentity.GetCurrent().Name);*/ + } + } + // Releasing the context object stops the impersonation + // Check the identity. + } + } + catch (Exception ex) + { + res=res+"excepcion:"+ex.Message; + } + return res; + } + } + public sealed class SafeTokenHandle : SafeHandleZeroOrMinusOneIsInvalid + { + private SafeTokenHandle() + : base(true) + { + } + + [DllImport("kernel32.dll")] + [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] + [SuppressUnmanagedCodeSecurity] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool CloseHandle(IntPtr handle); + + protected override bool ReleaseHandle() + { + return CloseHandle(handle); + } + } +} \ No newline at end of file diff --git a/Notifica/solologo_ico.ico b/Notifica/solologo_ico.ico new file mode 100644 index 0000000000000000000000000000000000000000..925e34bbb2c032bf31cd939b6c1af4e4481bd448 GIT binary patch literal 116527 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

qvuGbDD zuJG9$*$vJ{o#oU)ML#P_T%cywoYB4n#4DWn$m0cr?)~{Q%%AJ$kQao=SmpxR=Y<-P z-SJLQa|lm|uRY}OLa@1L#!#{OkiQgRmxq7o^1BR+!?Sp+}C=r**1d#7f!At+Cd#dS9H%^ zn$COC$vXuiTtfZKPo>51~ z5V?aPW4PDV;Txi!1@KZw4#jH&Fft%t1eF3-L_D*F$sR6t#5F;a>iTNwkqMQngsWdx z6?r>k#5VCeKd=YzDyfWExBqN+T~z^$eA9a6V`ExIe*#T?wSzta&QCCUFdz8F=~Hx!H6D=BN^Vrvi-gfA#{xXe4BM3nwj0^GO%icUrHx-?(I)`YUSv;K0K z)IGPujw@4T0+m6yae9Rvs!)O!~aDs&-)Kok`apn^aWy%*6%?}*+(h$4Egrioq! z*w|p4^8NceSLfWTt9I2u!dGj3I`_<(vdheznLT^v)Rp+8oji~i@VZEvcLhoM$3kBvrzWVi^GNdg3Qr9bi(8xY(nxHPu&+B`C zL77sv|6SMWfzb4!faBOFg8DA!x=uf3Oj&>Uw(Eh=z;}F0!7)Kym)pBWA7xJ2zp-lY z?4N#GSyJv#1Ze{EJO1s}eafCX_=%>N8vY?Ve_zm5utji-*T=7XlX`?T&6jfDwKi2> z`JpcUT*InYvJ-ue62KS_zwyP$5pCey%3KHPNIT%Tz)MhL)j)Lqk>HWB?$!IJ|M0`S zxiQpzyUX;(E7u7iC#r zdHT2Lf3o0*)vW`fcfR`%Q~yN4qY!wz{sm1NeuS;L)><7ne%=i(Z9c89@_JY4&aQ49 zVETlt$%^r&%Cto!LcphRXNsYzUEi84oJH91rr4r)W0PP zzti;rh2QxjEzJd=|MjOBJ)xnd|5a=3>a(2QW!kC3N{t63KJ7a6QQ*4-PBO+{z1B|C z_1UW-Xk+nvI63_m90T&*aQ2G(yDY={%o}w`U79=`khpe&R|1XiV2_5l|H4PB1O589 z!{7h*UpQajs)Rj}abO3}hFW}YyU&n3$O4nbw?)rRO|@{tJk7uL@~vfAP?vV5Q~-(h z8v*?oOXw_TgT1Ez6*+!r)Z}+qw7RtxmN-B+2JmzI9H%e4YvHULQzu)M$gi|A%wZ+v zUPCgWPJdHg9gyer%UV)adHtiBYdSq&5QH{Xe?{hmrdrsPNo^G!&&<-#4b-`V*bFfw z-lE>wi~2@3$D+ly*mu|&+jco(&TMPM_h|utr_Yu5Vp+1Pqv6zTnSN&S%vJEuvS|0P z{uKAV)V%{9eB%#Ke+vvuX{_l#J6mT9+Pc$G3%hVj-w$xCFl(lDz3B(WkFf;p8)_Xk zywd)8ap_(}UV9Pg;~mwFXh+A zevUf+v2h)cu+HV_UVV1psEek{m_aV+6s6by#w`wtUXv3ov^ZPxe6atd6E5EI(84m( zTGx5~$4MWr>N@|d7rcW%M^NX_F(|D$maenH#oPLRO^v5sAAhUs8)nb4R{93^o2vZk z$hEVf{)Hy)sXA{8Z98+FG`aLoaza#`Ue}x>GLLY-M%ujai+jNsGu;|l3-vZ*z8_2} z>utv2drH;k!P9=C_bzB=+Z;`7nxU~(6EwE`44y#^F>I^_cIMlII#=TtyGq}1>xnmZ zh} z=b6rCc>n7F#3tLLSG*nWz0ig6-5KC4iYn7 zu23xhI#eGF=Q;<@gkkIqD}~QTFGI2WNFT%x?*SVhH#Bp!DTXHYR%l||65e4gkT%{D zTlU%E!8f`wbFqG*XibG-Po(d-a@P~N2c5w&bjsjX=o;Jvwfx>#Lj8;Ue3M!Gt+_osQ0Eqvdh2K>xn?40piPMd9e!Ti;h)f8Yfl`_Huarj-9C z<8Tbeu`2a*{c#6)hT7v%(Y;QO{b5|!cb8#$&CXRM!YTpVW zQEf0<>d=mSN8Em{Ur#BkPO#muUVL%K6Z;RlVBJQ0ELdPGc9gb?-$km_kwjT@iH&Z7 zm>$g$-L;uwXNw4Jg04YL(9yrK^ec^&ewK1}w<<9Pq0Xs$+WJh=LzLL@RC@QH4L}P| z53Jg*9}mXI=+}YIU)SqDu!k?UAL^vY<>*Cy{JQKr!2XzZl>9#Zhdz5Pp- zgYJ0%Zas~_j>9n+IkOK!V|u{K-yh9A+)JRbvlCjlSi`TI6^4wm#=@L-piGL_EuBr> zu#BqyWx=G#W8mDWGc5c9(A-=432$Ew&Afcj#MKQg-0k4o zy`7ZN4l`sNwd=4Gu08a`!OGyVSw=)sdj$3M z(sX(0mZzr2Aa{M=`Nc!gdxS3C=y@?{>gkK+n;kUSo%zBYTq`hzhBqC@aLp@oP9*Gt zowRn!_chl=8Rx3}E>G@H{}CW#->x`yJq9^@2Vh+G0K|;w5C1;BVHe&FEdx5Bg@14{ zH1+aFLl+OU@pXcCcPDg-vqxNp6VfI-VBG9>n7PaW3vwJqmX27n!x8IuJ7UvbM{M2i zh@FQVvG=$W^3OWs#1&U%?#*{jX?0d)YSO%KOlBL6$Mbjm&?=}CM$XaK&85q9wjb&! zbx12M?)GD$((ZNgIdvlnR$&pa3UpQKwkosjdmQV+oTx+{G_+&SUe_H>yaI9bQc<5E z?LS!RIr*jSkMG?n6Wc1|`n%8da#49SzVe;&_*DoB3L|jxT3>8EGywB9#3Frm9QuwN zh@b)SaP83ttvhr<|KJofB&*78rE7ml=>Hq&hMi-H^szp zZLvvgf}9JLX&(@Is%02n*=OAUx-)J(>5b!82Vl$L0a&~(0pk`YVCb~L=s7$QVTps_ z9vut2ZZWX#9F10?JrvnezGcB8Bmy=ayW+g`*DO!yfAFHygjVs%!(Em+oJoq|%uF#^E%ea{f!(q{FAi8Jt z)abe^>wzJCk(-v zJHeVx*=LjA%;Bw-d{rF}p49`k(TTWlU*BF-+Y#fOzt<1miBbn5Q_!MQf6Q3!TI^kL z`L?IBc2X0vtZE*;y6Ej4`Bx$oT3dCD)Of!lbKk1wUEOrl6UUvjwbSn^GQ25b#ScG4 z*4{Y3pD4E2=~Jx~8#CMGjA>RFH`)^P)1@yL-$_CPb)QFCXz${XklN7KG~iO?HqX*li?IM z7OkVx(W2WB#E(Ahk^pBBb7-|Fh|EvL`RKko9y zrJJ6mzH2Vu_d%brUC}B!6Jet=aPeW7#yj=M`R~vKi(>2Kd(Q>IDkcpbMkL|kD}OCM z*Tu;z*T9}hf1;}^{@8M2B<$iQqIJv|SoF$3P+Sl$-_!e*Gal_Q-8#H^I}zKHTBmoN zi&kiC9TBgET@yOrvi_=DewNCg;q{KZ)8}mrfL-4txFt=)l+D9%=S2sNZ??-xvOdPK zp*q%Q`s3FF;5uj+{L;qY^j-aXQtB97WvoM4vESlcPhXzYfs3|1@%?X3o zpd^HkorU?iX}DV0)j(IecFVrp@LkS44qgg`)4<{IO`n1z1zof>+&9)auyHXtacr|) z>{V*n&ty)p=i*4Xr_M*4_$&o2qer3t=m6Y&s<$yP{ zl0sLniTyRY*Ke{f##b%rsJ6=By#LSK&#@|R0Gwho(K;>*R8aToRGPRh#x>;H@+0WnzOl0Bk>zo&9WZ)|LetF6-8H$47Mo~kyw#Ji6GG<) zI(hoz_^njL%w2`HLl&WJ%m^&m;!#58s_c2?+ReIse&{ef0gfs2Fei679>3O)^*L_j zc(OcMaQ@4ELx%a@`YIYJE0)7*=wet7UZlXH|1@+??TY;KdfSVdhW@B)*4fJ%Xfqkp zmRRE~xBRkbV}EtI$Ueq$wx5eY+rbN9J$N=Q+|%>eMe0addDMgO1g`(9a^&^#>u_v4 zHwn>m*TQCSHvDDXDr>bjwjXxKfpebNeZmt9Hu+#+Ru4E2OoL~}VvOB94QKA_?E%c^ zf$S5Z?b8$)a2_&8>}ZBQqEEgH!J1<;;W=t8+9oa6(5l}A^q&xpV_$d{8ym1pjzccU znse3+YsJ=PO4-J7SRaR{v_`>W{rI!sSs;SOj8|w#T$HNSRjymrHG8!&KjqwW-mjb^ zC9>oB4&PCRDjvTM!?kDeSaUoJBR4KUeD-{FpSBpi<}5|>>cyC`XF7IYPQjh8_3wE# z?ctNICEoYt(4o~4+Bj~CpPZTxua_PtV$kw+uu027+f=Cw3f91)|5S9#?1>HgWZoj< zLc=ut&9zPX7}7t2^W%!jr+-Aou-2eX4fDDoJ}%+oGNjx!aLHVPOONzpVETqvly4n= zK8J0ef5Pv30xQ8WL*9%3_LuQMdue0(zOVRmKirma8pmZE+f|is`h|0@V3_xl??SQt z!c>IK*bb}V8;YULkfm@PI22xK+eVa8*e^=H$kBOa*Hh0?3=s!bbO}7HaceHmH zu5GDlk6!gh`%z8Y)yeb|Bi{@mxn@iu+>4xMmS+Ra$8N7F~Kw&r257r}h!O94h!#2Wx&=@4m=`QaF573rjoQLr}>&w<7zKEaIA2!L0V3n!Mx83O7 z$UZy*PYvFUw4=U7-Bq{j+tjgv%1iu|=e~k}8S}_-+M6EluuS^G8v2r|x_j^{0-G<) zLZ4-OVLvVp)}!|tAs21ax1+VpA-#uXAY$SWB+iLO=5oP`XrwKQM)b5n=rC#o+9u9L z+l=kS(tAwag^d@Iiq)NE%iF1T^Xls1ZKS78eM>0ZC_v(H59kbI{lCq7t}D}SeAUP< z%(_r0bA^-lGB9z^1_aJJ0_(8{ss)>I2N1P%BhEbPRZRCQR@&9~Gj6EUGWUKORs)Im zQvttC@HXmcnPqY;KW1c`Vr!FXe?S}Jy_Y?)srnUP?dZqV=*eX{&3pGNOmN{HdXiEBY<*{~)+&luw=DpJPOxH9$Wz)kj~| zm+tD1TQ3G+!-cs>+PoJ*b5Fuy%5m6ClsaJmTlwua{WxM)@5ZV#lX3T@er=Qaa6bAD zoNGiK{-Gj$m-bxJH5NRsi*{+eq0{ZfLJFtP4;78Gr|`y5ZuJBXb&ohQA^bxIqj#}?G z*gyA`eK5;cwo}%K4C{cYzd4`fS~L9_-ZnoqP(F3m(o{W{7f|Dt&m_OU2`<-{I-t_YcZ84Z zFX0&-;_rsZ;-gQ$DEeCt6#tbV@q2pH^IDa*TDnq4f2*v1O^Gl0{#LNNmgugnw(xz* zm%90_DY~p`9LfL3g0X@!&k2%e-zS;Z1zxEO>ZHWEE>+cYdFiAa?i=?J+!fRX{=d&O zPzTgSc`B=wXHw?x1givP?jez9-)G&_ChwFvW&gWcQLc%ZO8K-GbIstopf>q6=dG77 zWlfozWY0BGmDP$SwESE!LhwRh)>ZAufU>2Ge_kzR)ly=ii{pYn3g!xmogXas<~mVz z8Bms#DP>zr+N-&2Nu%Jeg82e-J*b}EDMQM#<`ndXaw5%wKMBSOo(jx;fN3(ItSB?e z?hR?Hc8d`{ej$hwoDh`oFOjhCd)=T+C>zS?7qzR6x0k!{#05F7>9A0<}FfgF4`;svjof% zFiXHJ0kZ_m5->}^ECI6w%n~q5z$^i?1k4gJOTa7vvjof%FiXHJ0kZ_m5->}^ECI6w z%n~q5z$^i?1k4gJOTa9FiX{N^pIHJGN+6{{gZB&~J!if8SRbIPX4-v$?*2nHKzG}q zLDBuU>is9WfTHLP8Wbf^9~UL~r~clW3AE%58hpZgEqPG}Df;-N`QQ561`U#dCx-Xd zfZ;7OEO!54@#GCYFuH%w=)QsReX;@d%-Pz2dftCxe6NU>Pjr7D7pT8<*AI>Fb9LeB z{|}7sQ`9HA>w6X57mxnEyEFFDHopJBNFpWVT~Iv2hsOFezBkstaeXOPeOZBv=MSV9 z21td^HN5|zSo2UCNHGGW4HqLo>VL5UrM(m@P;LziknD>Upfq5E3_sy>gA9{-ug^e9 z4rmk=^(a~bU34u$QFM*uPnenVr|_&j1{5J$7d=!iTIXXJX#NfGLjX2{6v2B9{wV+D z&!$0xU;c*<%DwrYSpsGWm?dDAfLQ`&3792dmVj9TW(k-jV3vSc0%i%AC1937l_gNL z&zO6Ud7fviV4`5TV5i`S;GE!65%`;7e8xD8%QQ^OJnHnhB0?YcV*gga{qs`=#{@40 zHFZV<^J1RNn`N-9D(j{u60&>&_mw9KsJl0LZaT|inJk+$)C5Z=kTRdjvH_*PG6VwEw9DgXIJW??VLlV zb&7n`sz+GU+W3wYdHtm-1NlAPn1^fky|8k#yPzFT%D2{fb!n#XzyFlG$iNqC*W1@P z|NIW~-LHI+z1kLgjyfu`rp!sp>a}(lnqUEb!`ztGD&CJL|B{xv|Jpc@3!;N{yS=b> zhokcCKz^f^-4D98t|)lqrL+m-bk(`vC*MUsbKMu?X9dE_%^Iy7n;|l;4d%%= ziZ9%9SL9C`_}%vT^KF!Gr3SfI`8#LinY>3D)68!!-hJ+a8OuDe`>3mYkJU-3gSVf0 zW61_jWK7l3Qq%q7@)hk+P}m-;x4Yuz(@I8eyi!*LK z@lxc$@BCeV=!M(^&RDq67NaxTDBpi$eeDv|SZSwhSAi}K;cNdn_zgjW@4}Jy9Ap03 z=2-6rWcuQge4BcOe0!2{_}$n=8~re1dJytXy5aI|Pq1DXr?2Y$_@aI{KGRz%pEM9R zo^(Xco=!-e(h==@hoiNhADX$l!LyqS;xb(^W4SAK9CF3=$6k2)oi2@<*7#Z|&#A|Q z$6P3{Z9;2-F}>8ogO`5jG$>FhpL*`#*-*Zx>W8t}emHTh69W7A;?XN#Y}o8zD9>ui zBCbyhrM!rtA<_@{VCk}U$dGUQ@tsrfSTB>iUxg$8VplBP)(xZPbw|IE5eOa-3ER-l zuFi*_QbB^ z()RW_Y5B6wvOZ^|wN}1q$v)ujm%8#*9T$Gr9=D%&#)<3Qu>E)hmhFth^fgh)%#Oy8 zX}!^ZTp#ov$!l+9%!?2m`!avcZoztgL)y~0JAv?w?Sori`YZYk_iKdvFMP0Oe;5|+ z2vumjc)ttmdJV+1mHx^-zt74sLREQZI=)lMOVXS^$le?Xe*3q){3sLle|;mHV?=6e z<$J+v*V!Xa`qA^(JaFfkw^Cjg? zx)bh68z?V+Mb9W7Pn*w_@fzz^pYF}juV-_Rr=s`9!-B_NFWIi2y!OM&yl`|Gor=6m z-4uS<51f*@(EV@x(PKg)_Fn9)ycgQLHdJIyT9@rhM%(`5(Q9m!^iw_x%^W|vwyAtw z=o+M}|MBxukhQ5hZWVf0i~ow`BhPnVFAPD(vc8C!9E&Zd`{U8K?G+uc-Lt)4c@%&? zGg7eSOfN+y>N}6J<(PyrSbriJ_Cx2wIWZkM2ZEI_juBG^x2jZ|7(Yfg?hYI^3ENI} zME-G?+UB2geH^@&fXL}HF=|CLj$M^DaL)(3PX}SlngK{zHUgKQbW&t7(P%DA8L;nT z{W*E3AHpXuhUMUe=rJ)7`ImLy-o7U9&w2A~&?%sCnY=I`%JtzlzSw%U2RzbeD(!66 zOzSe!n4sH=(sCZ~XW_q};46MB{ENcg*m5=zD~}{$*X2Pd__B+l%d=P9mG8`!Rc3Oc zh0-n_ejA1vd#1o4a|0}sSEAeG5m>dqBOVA}d@t`m;sV+e_^0 z-Lv0W;p58FXk>0#0EaO)_ayI3x9i{N4C63bPJoA$ay4SdZBU ztI>PWZp2CiO`46av$7B}bv7I_R>E4sT_^9sx^qcNx&<cU9(B{El;V z+yR>wj+c#GFNX`{lCkp=&gzI1S#)$_BxLDX1k6-KF z7aTkE?9|lcd`m0KgfQ|}?iuFt{AYsgCgfEqT3IKeWNbZkQd?}=>VUj_XKdT$h^*;W zN_Z{noV1dspBdNt((WZ5&;Fhwpxv}meAdDEjra>53F@m1NIQ8b zi_HqdB`wc_pDoblN%Fg{%Y(F%=3iIHpa~HqAJ&CN0@_Lx8?jvLq6|nIX(X*Ca8|h} z%v12GV5Z-YkP<{k%qquZ2uVo1m>AO29R@4T4hwt~=1)#&&A>Zsl)=@fqVV zF4HhA^I%?emfy;VQ23xf1;?4c68yFZ{LQc``72bWd~;m01k4gJOTa7vvjof%FiW8B zoRuJlJ6MyN6y2FL>RAuUDH3vmL@sqDXF>2Hr#^hAyCxSMGVw`)?p{4t<-=Uvy?Tzv z2PwLH^_-MaeZX{4s`X#XKUbHHR(^r*UOhMD^9mk)V@6J164L=5r!M9Ogf>1k4gJOTa7vvjof%FiW6D zBp^0Et|8C{_!Gf@34Sm5-y-lg!}yGGYNX7nX2S9X9|>9tq6J)I$P*L@xaL5ct+Ab( zVSL6ojLS4k%RHD@Rmm|qos>a)YJ`9`BaV(8KkbQfs}?{R8p&dOmAj8yq}or}%i+G5X2N zHv<3C7?5xm@#}nj`>7uyBK{Be#0R?$>VQ0OEzQM{2f6=WK_Pu@=vz8+yd^H)c2oR; z7s}qQtvemzV^{t9#QlQwFQ(6rlvf=Tl4kNCSN1a-)%>PSvBJhZZrFRwQSlw+ewAzD zyH208>XbX6S99^J_r@K;rJEjDwZ;xZ;w|7;^?gUAnY6bOXz$CBBibPMxHonkaaMdR zkDqhH>aFg$S?DEx{!OYZv+Qge>^td$uteXmAywD zFm!AHTtYqI(B2NQBOI}Cy(>WhBpLzbOwi;3gfB3<^1(C3=IhlvAPg1YSJ z-x%&zpOW^ADjlr<^x@B(?Wg1u>fK23&0W3Q4}-^X4}}k+yEdy54=nT2y&z<-mwgmM zC;jIiz6`{v>tR^3H4Ld!!_g@r41Q5T=rT}z{ik?i<|^6Ww#y4!4|!qF2`}WG_Qb*S zo;Y#UOZG!~bFbMWpxa)vM0KwMxo=7Nc7I^hV!@mNQdGRkx83c zT%}%lDto=Se}w+f;;;CRsgtdqb3e|_XR-%qQ6JUO0U_7^zDKQdW&X!iuT5_0$*Kw^dELnf|EY2Sx8-3)w^Yx?6`PAiPZ& zD{#Lq_l;9W2MY#a@VaGi7%%?rV^$+(;bf%cWMWv(Nc5aPL-q@7#qcdzxcedigX3D( z1nnFHSs0ChI2Wz-JcZ+#IkT-5ecXD{9V&2X<{W%4T{E@>l; z#^fva63+2ZS3$MTh+<#l-R?7G4=&rhvFZy=<1?uz+J(Q+Q$=#$_6&Wgg6{)V({V z&{N$wQa1bE9|?XX;JJKO0ylwA5%`;7e8xD8Tis&K>CF-_OTa9Fw<-ahZ;|@Bo!YqO zD$ZRx_a@1|fL}F|E4h|`Iya~W4HSQ`PZ~7HWw?wMie2T+kizf^M{bN%xxW-fmwa=1 zm2%W;0q=zl@yZgvEIpkn-Sk`gKyEa?kRr}qaLvCi$s-+76rcI_u7Ylyeh!enJK72rT;m^CsO}^L>ze$VK6Q>S7=4ll8xf z?DtH|Gop4KmG!l|?J;w?A9^Qwqu+2ZOj+WAEeAYBrq0S*@yb*0i$gGaekf9Bgk#`@ju@GWxw*RB%*C7uVme6FkwrX;q)qzP>m-nmB1bH_vmua8|1 z`PbS*-LdCFH)ZW8_gok@$XRTuLt0_JoP(5|I}q`+2jYO#4X!toX1C-T+{#0Ju;*0! z66KdhuR+*}+b_Z|tvS+P&hU!B_A@<^f2A|Vj?$l{!?v*JQa^N>nuTfG;<5jfH@KG0 z^TD_#Lc9CH)80s4m5%kB94cFWtgJ8pN9y2KS9y+0x}3?zv%(DMQ+~4^A3P!F`yI>G@wM-ni0TRNf_%|rgB5M|xbIBhxiSLK;MZsyK$^^8*3xnLYyAkW&Stioo9t<1@xl*54}5 z)g0sdE&-igp`8B(%D2yxxr;1UEEg$ao)A=MF<~5u|3QJI5gW|M@-gRR&}3uuM>~a> zB@|nQW~Y$aYyR%A2&IfaY2RG)X(JdYm@lA@F~Q#qG#bh$>Ya@vFRf$v1Yv;CQq^|Q6|q@o-oB0!;)L0Yj6|ean4vt z|8(4Bd#sjq=p~!|#8;uXuM+)u=m(ZQMtr{3d1L)ve>n%+8xv-WkIh2&FQ?9S{a4=k z5UkB@k7YR?n7X<xi|?Vman Q2z4pt^g?{bIBNX=4+nPQjsO4v literal 0 HcmV?d00001