From af72a4decb75f4054de5f57ab158395ffb47d4b9 Mon Sep 17 00:00:00 2001 From: "Valeriano A.R" Date: Mon, 14 Oct 2013 01:03:45 +0200 Subject: [PATCH] Commit inicial --- .gitignore | 7 + .../ServerExplorer.sln => ServerExplorer.sln | 0 ServerExplorer/2008 to 2010.bat | 7 - ServerExplorer/2010 to 2008.bat | 7 - ServerExplorer/CodeGen.cs | 380 ++++++++++++++++++ ServerExplorer/Config.cs | 101 +++++ .../{ServerExplorer => }/DatabaseDesc.cs | 0 ServerExplorer/DocGen.cs | 56 +++ .../{ServerExplorer => }/Program.cs | 0 .../Properties/AssemblyInfo.cs | 4 +- .../Properties/Resources.Designer.cs | 0 .../Properties/Resources.resx | 0 .../Properties/Settings.Designer.cs | 0 .../Properties/Settings.settings | 0 .../ServerExplorer.csproj | 24 +- ServerExplorer/ServerExplorer.suo | Bin 38912 -> 0 bytes ServerExplorer/ServerExplorer/CodeGen.cs | 120 ------ .../ServerExplorer/CodeGenConfig.cs | 49 --- .../ServerExplorer/ServerExplorer.csproj.user | 13 - .../bin/Debug/ServerExplorer.exe | Bin 36352 -> 0 bytes .../bin/Debug/ServerExplorer.pdb | Bin 85504 -> 0 bytes .../bin/Debug/ServerExplorer.vshost.exe | Bin 11608 -> 0 bytes .../Debug/ServerExplorer.vshost.exe.manifest | 11 - ...gnTimeResolveAssemblyReferencesInput.cache | Bin 6028 -> 0 bytes .../Debug/GenerateResource-ResGen.read.1.tlog | Bin 7646 -> 0 bytes .../GenerateResource-ResGen.write.1.tlog | Bin 10828 -> 0 bytes .../obj/Debug/ResGen.read.1.tlog | 1 - .../obj/Debug/ResGen.write.1.tlog | 1 - ...verExplorer.Properties.Resources.resources | Bin 180 -> 0 bytes ...ServerExplorer.csproj.FileListAbsolute.txt | 39 -- .../obj/Debug/ServerExplorer.exe | Bin 36352 -> 0 bytes .../ServerExplorer.frmBaseDatos.resources | Bin 180 -> 0 bytes .../ServerExplorer.frmCodeGenConfig.resources | Bin 180 -> 0 bytes .../Debug/ServerExplorer.frmDatos.resources | Bin 180 -> 0 bytes .../ServerExplorer.frmPrincipal.resources | Bin 180 -> 0 bytes .../ServerExplorer.frmServidores.resources | Bin 180 -> 0 bytes .../obj/Debug/ServerExplorer.pdb | Bin 85504 -> 0 bytes .../Properties.Resources.Designer.cs.dll | Bin 4608 -> 0 bytes .../{ServerExplorer => }/TablaDesc.cs | 95 ++++- ServerExplorer/{ServerExplorer => }/Utiles.cs | 2 +- .../frmBaseDatos.Designer.cs | 146 +++++-- .../{ServerExplorer => }/frmBaseDatos.cs | 124 +++++- .../{ServerExplorer => }/frmBaseDatos.resx | 0 .../frmCodeGenConfig.Designer.cs | 74 +++- .../{ServerExplorer => }/frmCodeGenConfig.cs | 8 +- .../frmCodeGenConfig.resx | 0 .../{ServerExplorer => }/frmDatos.Designer.cs | 11 +- .../{ServerExplorer => }/frmDatos.cs | 5 + .../{ServerExplorer => }/frmDatos.resx | 0 ServerExplorer/frmExec.Designer.cs | 136 +++++++ ServerExplorer/frmExec.cs | 148 +++++++ ServerExplorer/frmExec.resx | 120 ++++++ .../frmPrincipal.Designer.cs | 0 .../{ServerExplorer => }/frmPrincipal.cs | 6 +- .../{ServerExplorer => }/frmPrincipal.resx | 0 ServerExplorer/frmProcedimientos.Designer.cs | 138 +++++++ ServerExplorer/frmProcedimientos.cs | 118 ++++++ ServerExplorer/frmProcedimientos.resx | 120 ++++++ .../frmServidores.Designer.cs | 102 +++-- .../{ServerExplorer => }/frmServidores.cs | 0 .../{ServerExplorer => }/frmServidores.resx | 0 ServerExplorer/ssr.exe | Bin 81920 -> 0 bytes 62 files changed, 1805 insertions(+), 368 deletions(-) create mode 100644 .gitignore rename ServerExplorer/ServerExplorer.sln => ServerExplorer.sln (100%) delete mode 100644 ServerExplorer/2008 to 2010.bat delete mode 100644 ServerExplorer/2010 to 2008.bat create mode 100644 ServerExplorer/CodeGen.cs create mode 100644 ServerExplorer/Config.cs rename ServerExplorer/{ServerExplorer => }/DatabaseDesc.cs (100%) create mode 100644 ServerExplorer/DocGen.cs rename ServerExplorer/{ServerExplorer => }/Program.cs (100%) rename ServerExplorer/{ServerExplorer => }/Properties/AssemblyInfo.cs (93%) rename ServerExplorer/{ServerExplorer => }/Properties/Resources.Designer.cs (100%) rename ServerExplorer/{ServerExplorer => }/Properties/Resources.resx (100%) rename ServerExplorer/{ServerExplorer => }/Properties/Settings.Designer.cs (100%) rename ServerExplorer/{ServerExplorer => }/Properties/Settings.settings (100%) rename ServerExplorer/{ServerExplorer => }/ServerExplorer.csproj (89%) delete mode 100644 ServerExplorer/ServerExplorer.suo delete mode 100644 ServerExplorer/ServerExplorer/CodeGen.cs delete mode 100644 ServerExplorer/ServerExplorer/CodeGenConfig.cs delete mode 100644 ServerExplorer/ServerExplorer/ServerExplorer.csproj.user delete mode 100644 ServerExplorer/ServerExplorer/bin/Debug/ServerExplorer.exe delete mode 100644 ServerExplorer/ServerExplorer/bin/Debug/ServerExplorer.pdb delete mode 100644 ServerExplorer/ServerExplorer/bin/Debug/ServerExplorer.vshost.exe delete mode 100644 ServerExplorer/ServerExplorer/bin/Debug/ServerExplorer.vshost.exe.manifest delete mode 100644 ServerExplorer/ServerExplorer/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache delete mode 100644 ServerExplorer/ServerExplorer/obj/Debug/GenerateResource-ResGen.read.1.tlog delete mode 100644 ServerExplorer/ServerExplorer/obj/Debug/GenerateResource-ResGen.write.1.tlog delete mode 100644 ServerExplorer/ServerExplorer/obj/Debug/ResGen.read.1.tlog delete mode 100644 ServerExplorer/ServerExplorer/obj/Debug/ResGen.write.1.tlog delete mode 100644 ServerExplorer/ServerExplorer/obj/Debug/ServerExplorer.Properties.Resources.resources delete mode 100644 ServerExplorer/ServerExplorer/obj/Debug/ServerExplorer.csproj.FileListAbsolute.txt delete mode 100644 ServerExplorer/ServerExplorer/obj/Debug/ServerExplorer.exe delete mode 100644 ServerExplorer/ServerExplorer/obj/Debug/ServerExplorer.frmBaseDatos.resources delete mode 100644 ServerExplorer/ServerExplorer/obj/Debug/ServerExplorer.frmCodeGenConfig.resources delete mode 100644 ServerExplorer/ServerExplorer/obj/Debug/ServerExplorer.frmDatos.resources delete mode 100644 ServerExplorer/ServerExplorer/obj/Debug/ServerExplorer.frmPrincipal.resources delete mode 100644 ServerExplorer/ServerExplorer/obj/Debug/ServerExplorer.frmServidores.resources delete mode 100644 ServerExplorer/ServerExplorer/obj/Debug/ServerExplorer.pdb delete mode 100644 ServerExplorer/ServerExplorer/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll rename ServerExplorer/{ServerExplorer => }/TablaDesc.cs (62%) rename ServerExplorer/{ServerExplorer => }/Utiles.cs (95%) rename ServerExplorer/{ServerExplorer => }/frmBaseDatos.Designer.cs (67%) rename ServerExplorer/{ServerExplorer => }/frmBaseDatos.cs (72%) rename ServerExplorer/{ServerExplorer => }/frmBaseDatos.resx (100%) rename ServerExplorer/{ServerExplorer => }/frmCodeGenConfig.Designer.cs (80%) rename ServerExplorer/{ServerExplorer => }/frmCodeGenConfig.cs (90%) rename ServerExplorer/{ServerExplorer => }/frmCodeGenConfig.resx (100%) rename ServerExplorer/{ServerExplorer => }/frmDatos.Designer.cs (86%) rename ServerExplorer/{ServerExplorer => }/frmDatos.cs (82%) rename ServerExplorer/{ServerExplorer => }/frmDatos.resx (100%) create mode 100644 ServerExplorer/frmExec.Designer.cs create mode 100644 ServerExplorer/frmExec.cs create mode 100644 ServerExplorer/frmExec.resx rename ServerExplorer/{ServerExplorer => }/frmPrincipal.Designer.cs (100%) rename ServerExplorer/{ServerExplorer => }/frmPrincipal.cs (82%) rename ServerExplorer/{ServerExplorer => }/frmPrincipal.resx (100%) create mode 100644 ServerExplorer/frmProcedimientos.Designer.cs create mode 100644 ServerExplorer/frmProcedimientos.cs create mode 100644 ServerExplorer/frmProcedimientos.resx rename ServerExplorer/{ServerExplorer => }/frmServidores.Designer.cs (68%) rename ServerExplorer/{ServerExplorer => }/frmServidores.cs (100%) rename ServerExplorer/{ServerExplorer => }/frmServidores.resx (100%) delete mode 100644 ServerExplorer/ssr.exe diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8f3472f --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +*.suo +*.exe +*.dll +*.pdb +*.user +ServerExplorer/obj +ServerExplorer/bin diff --git a/ServerExplorer/ServerExplorer.sln b/ServerExplorer.sln similarity index 100% rename from ServerExplorer/ServerExplorer.sln rename to ServerExplorer.sln diff --git a/ServerExplorer/2008 to 2010.bat b/ServerExplorer/2008 to 2010.bat deleted file mode 100644 index 75ef23c..0000000 --- a/ServerExplorer/2008 to 2010.bat +++ /dev/null @@ -1,7 +0,0 @@ -REM Tool from: http://www.programmersheaven.com/download/41236/download.aspx - -for /f "tokens=*" %%a IN ('dir /b /s *.sln') do ssr.exe 0 "Format Version 10.00" "Format Version 11.00" %%a -for /f "tokens=*" %%a IN ('dir /b /s *.sln') do ssr.exe 0 "# Visual Studio 2008" "# Visual Studio 2010" %%a - -for /f "tokens=*" %%a IN ('dir /b /s *.csproj') do ssr.exe 0 "ToolsVersion=''3.5''" "ToolsVersion=''4.0''" %%a -for /f "tokens=*" %%a IN ('dir /b /s *.csproj') do ssr.exe 0 "v9.0" "v10.0" %%a diff --git a/ServerExplorer/2010 to 2008.bat b/ServerExplorer/2010 to 2008.bat deleted file mode 100644 index e0bbca2..0000000 --- a/ServerExplorer/2010 to 2008.bat +++ /dev/null @@ -1,7 +0,0 @@ -REM SSR.EXE tool from: http://www.programmersheaven.com/download/41236/download.aspx - -for /f "tokens=*" %%a IN ('dir /b /s *.sln') do ssr.exe 0 "Format Version 11.00" "Format Version 10.00" %%a -for /f "tokens=*" %%a IN ('dir /b /s *.sln') do ssr.exe 0 "# Visual Studio 2010" "# Visual Studio 2008" %%a - -for /f "tokens=*" %%a IN ('dir /b /s *.csproj') do ssr.exe 0 "ToolsVersion=''4.0''" "ToolsVersion=''3.5''" %%a -for /f "tokens=*" %%a IN ('dir /b /s *.csproj') do ssr.exe 0 "v10.0" "v9.0" %%a \ No newline at end of file diff --git a/ServerExplorer/CodeGen.cs b/ServerExplorer/CodeGen.cs new file mode 100644 index 0000000..eab287e --- /dev/null +++ b/ServerExplorer/CodeGen.cs @@ -0,0 +1,380 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.IO; +using System.Data; + +namespace ServerExplorer +{ + public class CodeGen + { + private static string FixNombre(string strIn){ + return strIn.Replace(' ', '_'); + } + + + public static void GeneraDTO(Config config, TablaDesc t) + { + string nombreObj = FixNombre(t.Esquema) + "_" + FixNombre(t.Nombre); + string nombreFichero = config.PathDTO + "/" + nombreObj + "_DTO.cs"; + EscritorCodigo escritor = new EscritorCodigo(nombreFichero); + + // Cabecera + escritor.Escribe("using System;"); + escritor.Escribe("using System.Data;"); + escritor.Escribe(""); + escritor.EscribeInd("namespace " + config.NamespaceDTO); + + // El objeto de la tabla + escritor.EscribeInd("public partial class " + nombreObj); + foreach (ColumnaDesc c in t.Columnas) + { + string nombre = FixNombre(c.Nombre); + TipoCol tipo = c.GetTipo(); + string sTipo = null; + + // Determinar el tipo a usar + switch (tipo) + { + case TipoCol.Numerico: + sTipo = "int"; break; + case TipoCol.Texto: + sTipo = "string"; break; + case TipoCol.AproxNumerico: + sTipo = "double"; break; + case TipoCol.Tiempo: + sTipo = "DateTime"; break; + case TipoCol.Booleano: + sTipo = "bool"; break; + case TipoCol.Binario: + sTipo = "byte[]"; break; + } + if (sTipo == null) + { + continue; + } + + // El atributo privado para cada columna + escritor.Escribe("private " + sTipo + " _" + nombre + ";"); + + // La propiedad publica para cada columna + escritor.EscribeInd("public " + sTipo + " " + nombre); + escritor.EscribeInd("get"); + escritor.Escribe("return _" + nombre + ";"); + escritor.DeInd(); + escritor.EscribeInd("set"); + escritor.Escribe("_" + nombre + " = value;"); + escritor.DeInd(); + escritor.DeInd(); + escritor.Escribe(""); + } + escritor.DeInd(); + + // El Pie + escritor.DeInd(); + + // Cerrar ficheros + escritor.Cerrar(); + } + + private static void GenerarDALParametrosTabla + (TablaDesc t, String varPrm, String varCmd, String varDTO, bool input, EscritorCodigo escritor) + { + foreach (ColumnaDesc c in t.Columnas) + { + string nombre = FixNombre(c.Nombre); + TipoCol tipo = c.GetTipo(); + + // Establecer el tipo del parametro + switch (tipo) + { + case TipoCol.Numerico: + escritor.Escribe(varPrm + " = new SqlParameter(\"@[" + c.Nombre + "]\",SqlDbType.Int);"); break; + case TipoCol.Texto: + escritor.Escribe(varPrm + " = new SqlParameter(\"@[" + c.Nombre + "]\", " + + "SqlDbType.VarChar, " + c.Tamanho + ");"); break; + case TipoCol.AproxNumerico: + escritor.Escribe(varPrm + " = new SqlParameter(\"@[" + c.Nombre + "]\", SqlDbType.Real);"); break; + case TipoCol.Tiempo: + escritor.Escribe(varPrm + " = new SqlParameter(\"@[" + c.Nombre + "]\", SqlDbType.DateTime);"); break; + case TipoCol.Booleano: + escritor.Escribe(varPrm + " = new SqlParameter(\"@[" + c.Nombre + "]\", SqlDbType.Bit);"); break; + case TipoCol.Binario: + if (c.Tamanho > 0) + { + escritor.Escribe(varPrm + " = new SqlParameter(\"@[" + c.Nombre + "]\", " + + "SqlDbType.VarBinary, " + c.Tamanho + ");"); + } + else + { + escritor.Escribe(varPrm + " = new SqlParameter(\"@[" + c.Nombre + "]\", SqlDbType.Binary);"); + } + break; + default: + continue; + } + if (input) + { + escritor.Escribe(varPrm + ".Direction = ParameterDirection.Input;"); + } + else + { + escritor.Escribe(varPrm + ".Direction = ParameterDirection.Output;"); + } + escritor.Escribe(varPrm + ".Value = " + varDTO + "." + nombre + ";"); + escritor.Escribe(varCmd + ".Parameters.Add(" + varPrm + ");"); + } + escritor.Escribe(""); + } + + private static void GenerarDALInsert(Config config, TablaDesc t, EscritorCodigo escritor) + { + string nombreObj = FixNombre(t.Esquema) + "_" + FixNombre(t.Nombre); + string strInsert1, strInsert2; + + // Cabecera y variables del metodo + escritor.EscribeInd("public bool Insertar(" + nombreObj + " reg)"); + escritor.Escribe("SqlCommand cmd;"); + escritor.Escribe("SqlParameter prm;"); + escritor.Escribe("int nRows;"); + escritor.Escribe(""); + + // Preparacion del comando + strInsert1 = String.Empty; + strInsert2 = String.Empty; + foreach (ColumnaDesc c in t.Columnas) + { + TipoCol tipo = c.GetTipo(); + + if(tipo==TipoCol.Otro) + continue; + + if (strInsert1 == String.Empty) + { + // Primera columna + strInsert1 += "[" + c.Nombre + "]"; + strInsert2 += "@[" + c.Nombre + "]"; + } + else + { + // Cualquier otra columna + strInsert1 += ", [" + c.Nombre + "]"; + strInsert2 += ", @[" + c.Nombre + "]"; + } + } + escritor.Escribe("cmd = new SqlCommand(\"INSERT INTO [" + t.Esquema + "].[" + t.Nombre + "] " + + "(" + strInsert1 + ") " + + "VALUES (" + strInsert2 + "\");"); + escritor.Escribe(""); + + // Preparacion de los parametros + GenerarDALParametrosTabla(t, "prm", "cmd", "reg", true, escritor); + + // Ejecucion + escritor.Escribe("cnx.Open();"); + escritor.Escribe("nRows = cmd.ExecuteNonQuery()"); + escritor.Escribe("cnx.Close();"); + escritor.Escribe(""); + + // Pie + escritor.Escribe("return (nRows>0);"); + escritor.DeInd(); + escritor.Escribe(""); + } + + private static void GenerarDALActualizar(Config config, TablaDesc t, EscritorCodigo escritor) + { + string nombreObj = FixNombre(t.Esquema) + "_" + FixNombre(t.Nombre); + string strActualizar,strFiltroPrimario; + + // Cabecera y variables del metodo + escritor.EscribeInd("public bool Actualizar(" + nombreObj + " reg)"); + escritor.Escribe("SqlCommand cmd;"); + escritor.Escribe("SqlParameter prm;"); + escritor.Escribe("int nRows;"); + escritor.Escribe(""); + + // Preparacion del comando + strActualizar = String.Empty; + foreach (ColumnaDesc c in t.Columnas) + { + TipoCol tipo = c.GetTipo(); + + if (tipo == TipoCol.Otro) + continue; + if (c.Primaria) + continue; + + if (strActualizar != String.Empty) + { + strActualizar += ","; + } + strActualizar += "[" + c.Nombre + "]=@[" + c.Nombre + "]"; + } + strFiltroPrimario = String.Empty; + foreach (ColumnaDesc c in t.Columnas) + { + TipoCol tipo = c.GetTipo(); + + if (!c.Primaria) + continue; + + if (strFiltroPrimario != String.Empty) + { + strFiltroPrimario += " AND "; + } + strFiltroPrimario += "[" + c.Nombre + "]=@[" + c.Nombre + "]"; + } + escritor.Escribe("cmd = new SqlCommand(\"UPDATE [" + t.Esquema + "].[" + t.Nombre + "] " + + "SET " + strActualizar + " " + + "WHERE " + strFiltroPrimario + "\");"); + escritor.Escribe(""); + + // Preparacion de los parametros + GenerarDALParametrosTabla(t, "prm", "cmd", "reg", true, escritor); + + // Ejecucion + escritor.Escribe("cnx.Open();"); + escritor.Escribe("nRows = cmd.ExecuteNonQuery();"); + escritor.Escribe("cnx.Close();"); + escritor.Escribe(""); + + // Pie + escritor.Escribe("return (nRows>0);"); + escritor.DeInd(); + escritor.Escribe(""); + } + + + public static void GeneraDAL(Config config, TablaDesc t) + { + string nombreObj = FixNombre(t.Esquema) + "_" + FixNombre(t.Nombre); + string nombreDAL = FixNombre(t.Esquema) + "_" + FixNombre(t.Nombre) + "_DAL"; + string nombreFichero = config.PathDTO + "/" + nombreDAL + ".cs"; + EscritorCodigo escritor = new EscritorCodigo(nombreFichero); + + // Cabecera. + escritor.Escribe("using System;"); + escritor.Escribe("using System.Data;"); + escritor.Escribe("using System.Data.Sql;"); + escritor.Escribe("using System.Data.SqlClient;"); + escritor.Escribe(""); + escritor.Escribe("using " + config.NamespaceDTO + ";"); + escritor.Escribe(""); + escritor.EscribeInd("namespace " + config.NamespaceDAL); + + // El objeto DAL. + escritor.EscribeInd("public partial class " + nombreDAL); + + // Atributos internos + escritor.Escribe("SqlConnexion cnx;"); + escritor.Escribe(""); + + // Constructor + escritor.EscribeInd("public " + nombreDAL + "(SqlConnexion cnx)"); + escritor.Escribe("this.cnx = cnx;"); + escritor.DeInd(); + escritor.Escribe(""); + + // Metodo Insertar. + GenerarDALInsert(config, t, escritor); + + // Metodo Actualizar. + GenerarDALActualizar(config, t, escritor); + + // FIXME: Metodo Borrar. + + // FIXME: Metodo Leer. + + // FIXME: Metodo LeerTodos + + // Cerrar objeto DAL. + escritor.DeInd(); + + // El Pie + escritor.DeInd(); + + // Cerrar ficheros. + escritor.Cerrar(); + } + + public static Boolean GenerarCodigo(Config config,DatabaseDesc database) + { + // Asegura la existencia de los directorios destinos + if (!System.IO.Directory.Exists(config.PathRaiz)) { Utiles.CrearDirectorio(config.PathRaiz); } + if (!System.IO.Directory.Exists(config.PathDTO)) { Utiles.CrearDirectorio(config.PathDTO); } + if (!System.IO.Directory.Exists(config.PathDAL)) { Utiles.CrearDirectorio(config.PathDAL); } + if (!System.IO.Directory.Exists(config.PathExtra)) { Utiles.CrearDirectorio(config.PathExtra); } + + // Itera por cada tabla para crear sus DTO y DAL + foreach (TablaDesc t in database.Tablas) + { + GeneraDTO(config, t); + GeneraDAL(config, t); + } + + return true; + } + + private class Indentado + { + private int indentado = 0; + private StringBuilder sb = new StringBuilder(); + + public void Inc() + { + indentado++; + } + public void Dec() + { + indentado--; + if (indentado < 0) + { + indentado = 0; + } + } + public string Str() + { + sb.Remove(0, sb.Length); + for (int i=0; i < indentado; i++) + { + sb.Append("\t"); + } + return sb.ToString(); + } + } + + private class EscritorCodigo + { + StreamWriter escritor; + Indentado indentado; + + public EscritorCodigo(string nombreFichero) + { + escritor = new StreamWriter(nombreFichero); + indentado = new Indentado(); + } + public void Cerrar() + { + escritor.Close(); + } + + public void Escribe(String str) + { + escritor.WriteLine(indentado.Str() + str); + } + public void EscribeInd(String str) + { + escritor.WriteLine(indentado.Str() + str); + escritor.WriteLine(indentado.Str() + "{"); + indentado.Inc(); + } + public void DeInd() + { + indentado.Dec(); + escritor.WriteLine(indentado.Str() + "}"); + } + } + } +} diff --git a/ServerExplorer/Config.cs b/ServerExplorer/Config.cs new file mode 100644 index 0000000..b597e4e --- /dev/null +++ b/ServerExplorer/Config.cs @@ -0,0 +1,101 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Xml.Serialization; + +namespace ServerExplorer +{ + public class Config + { + public String ConString = ""; + public String pathRaiz = "."; + public String PathRaiz + { + get { return pathRaiz; } + set { pathRaiz = value; } + } + public String pathDAL="."; + public String PathDAL + { + get + { + if (pathDAL == ".") + { + return pathRaiz; + } + else + { + return pathDAL; + } + } + set { pathDAL = value; } + } + public String pathDTO = "."; + public String PathDTO + { + get { + if (pathDTO == ".") + { + return pathRaiz; + } + else + { + return pathDTO; + } + } + set { pathDTO = value; } + } + public String pathExtra = "."; + public String PathExtra + { + get { + if (pathExtra == ".") + { + return pathRaiz; + } + else + { + return pathExtra; + } + } + set { pathExtra = value; } + } + public String NamespaceDAL = "DAL"; + public String NamespaceDTO = "DTO"; + public List Tablas = new List(); + + public Config() { } + + public void Guardar(String fichero) + { + XmlSerializer seriador = new XmlSerializer(typeof(Config)); + StreamWriter escritor = new StreamWriter(fichero); + seriador.Serialize(escritor, this); + escritor.Close(); + } + + public static Config Cargar(String fichero) + { + XmlSerializer seriador = new XmlSerializer(typeof(Config)); + StreamReader lector = new StreamReader(fichero); + Config config = (Config)seriador.Deserialize(lector); + lector.Close(); + return config; + } + + } + + public class TablaInfo + { + public String Esquema=""; + public String Nombre=""; + + public TablaInfo() { } + public TablaInfo(String esquema, String nombre) + { + Esquema = esquema; + Nombre = nombre; + } + } + +} diff --git a/ServerExplorer/ServerExplorer/DatabaseDesc.cs b/ServerExplorer/DatabaseDesc.cs similarity index 100% rename from ServerExplorer/ServerExplorer/DatabaseDesc.cs rename to ServerExplorer/DatabaseDesc.cs diff --git a/ServerExplorer/DocGen.cs b/ServerExplorer/DocGen.cs new file mode 100644 index 0000000..2aca5c8 --- /dev/null +++ b/ServerExplorer/DocGen.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.IO; + +namespace ServerExplorer +{ + public class DocGen + { + public static void GenerarDocumentacion(Config config, DatabaseDesc database) + { + // Asegura la existencia de los directorios destinos + if (!System.IO.Directory.Exists(config.PathRaiz)) { Utiles.CrearDirectorio(config.PathRaiz); } + if (!System.IO.Directory.Exists(config.PathDTO)) { Utiles.CrearDirectorio(config.PathDTO); } + if (!System.IO.Directory.Exists(config.PathDAL)) { Utiles.CrearDirectorio(config.PathDAL); } + if (!System.IO.Directory.Exists(config.PathExtra)) { Utiles.CrearDirectorio(config.PathExtra); } + + + // Abrir el documento que contendra la documentacion + StreamWriter escritor=new StreamWriter(config.PathExtra+"/documentacion.html"); + + + // Poner cabecera de la documentacion + escritor.WriteLine("" + database.Nombre + ""); + escritor.WriteLine(""); + + // Iterar cada tabla + foreach (TablaDesc t in database.Tablas) + { + // Cabecera de la info de tabla + escritor.WriteLine("

"+t.Esquema+"."+t.Nombre+"

"); + + // Iterar las columnas + escritor.WriteLine(""); + escritor.WriteLine(""); + escritor.WriteLine(""); + foreach (ColumnaDesc c in t.Columnas) + { + escritor.WriteLine(""); + } + escritor.WriteLine("
NombreTipoTamañoPrimaria
" + + c.Nombre + "" + + c.Tipo + "" + + c.Tamanho + "" + + c.Primaria + "
"); + } + + + // Poner pie y cerrar fichero + escritor.WriteLine(""); + escritor.Close(); + + } + } +} diff --git a/ServerExplorer/ServerExplorer/Program.cs b/ServerExplorer/Program.cs similarity index 100% rename from ServerExplorer/ServerExplorer/Program.cs rename to ServerExplorer/Program.cs diff --git a/ServerExplorer/ServerExplorer/Properties/AssemblyInfo.cs b/ServerExplorer/Properties/AssemblyInfo.cs similarity index 93% rename from ServerExplorer/ServerExplorer/Properties/AssemblyInfo.cs rename to ServerExplorer/Properties/AssemblyInfo.cs index 00673fe..a4c1023 100644 --- a/ServerExplorer/ServerExplorer/Properties/AssemblyInfo.cs +++ b/ServerExplorer/Properties/AssemblyInfo.cs @@ -8,9 +8,9 @@ using System.Runtime.InteropServices; [assembly: AssemblyTitle("ServerExplorer")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("cyc")] +[assembly: AssemblyCompany("VAR")] [assembly: AssemblyProduct("ServerExplorer")] -[assembly: AssemblyCopyright("Copyright © cyc 2012")] +[assembly: AssemblyCopyright("Copyright © VAR 2012")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] diff --git a/ServerExplorer/ServerExplorer/Properties/Resources.Designer.cs b/ServerExplorer/Properties/Resources.Designer.cs similarity index 100% rename from ServerExplorer/ServerExplorer/Properties/Resources.Designer.cs rename to ServerExplorer/Properties/Resources.Designer.cs diff --git a/ServerExplorer/ServerExplorer/Properties/Resources.resx b/ServerExplorer/Properties/Resources.resx similarity index 100% rename from ServerExplorer/ServerExplorer/Properties/Resources.resx rename to ServerExplorer/Properties/Resources.resx diff --git a/ServerExplorer/ServerExplorer/Properties/Settings.Designer.cs b/ServerExplorer/Properties/Settings.Designer.cs similarity index 100% rename from ServerExplorer/ServerExplorer/Properties/Settings.Designer.cs rename to ServerExplorer/Properties/Settings.Designer.cs diff --git a/ServerExplorer/ServerExplorer/Properties/Settings.settings b/ServerExplorer/Properties/Settings.settings similarity index 100% rename from ServerExplorer/ServerExplorer/Properties/Settings.settings rename to ServerExplorer/Properties/Settings.settings diff --git a/ServerExplorer/ServerExplorer/ServerExplorer.csproj b/ServerExplorer/ServerExplorer.csproj similarity index 89% rename from ServerExplorer/ServerExplorer/ServerExplorer.csproj rename to ServerExplorer/ServerExplorer.csproj index 4bb5b58..56fb2a3 100644 --- a/ServerExplorer/ServerExplorer/ServerExplorer.csproj +++ b/ServerExplorer/ServerExplorer.csproj @@ -51,6 +51,7 @@ 4 + 3.5 @@ -69,8 +70,9 @@ - + + Form @@ -89,12 +91,24 @@ frmDatos.cs + + Form + + + frmExec.cs + Form frmPrincipal.cs + + Form + + + frmProcedimientos.cs + Form @@ -114,9 +128,15 @@ frmDatos.cs + + frmExec.cs + frmPrincipal.cs + + frmProcedimientos.cs + frmServidores.cs @@ -165,4 +185,4 @@ --> - \ No newline at end of file + diff --git a/ServerExplorer/ServerExplorer.suo b/ServerExplorer/ServerExplorer.suo deleted file mode 100644 index 4453764868090eac7f0ebde5d24d06a8723ae9a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38912 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 Z+EGGH--8A}hU$zukpmB-$_7OU003H;v10%L diff --git a/ServerExplorer/ServerExplorer/CodeGen.cs b/ServerExplorer/ServerExplorer/CodeGen.cs deleted file mode 100644 index b2c7878..0000000 --- a/ServerExplorer/ServerExplorer/CodeGen.cs +++ /dev/null @@ -1,120 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.IO; - -namespace ServerExplorer -{ - public class CodeGen - { - public static Boolean GenerarCodigo(CodeGenConfig config,DatabaseDesc database) - { - // Asegura la existencia de los directorios destinos - if (!System.IO.Directory.Exists(config.PathDTO)) { Utiles.CrearDirectorio(config.PathDTO); } - if (!System.IO.Directory.Exists(config.PathDAL)) { Utiles.CrearDirectorio(config.PathDAL); } - if (!System.IO.Directory.Exists(config.PathExtra)) { Utiles.CrearDirectorio(config.PathExtra); } - - // Itera por cada tabla para crear sus DTOs - foreach (TablaDesc t in database.Tablas) - { - string nombreObj = t.Esquema + t.Nombre; - string nombreFichero = config.PathDTO + "/" + nombreObj + "_DTO.cs"; - EscritorCodigo escritor = new EscritorCodigo(nombreFichero); - - // Cabecera. - escritor.Escribe("using System;"); - escritor.Escribe("using System.Data;"); - escritor.Escribe(""); - escritor.EscribeInd("namespace namespace"); - - // El objeto de la tabla. - escritor.EscribeInd("public partial class " + nombreObj); - foreach(ColumnaDesc c in t.Columnas){ - // El atributo privado para cada columna. - escritor.Escribe("private Object " + "_" + c.Nombre + ";"); - - // La propiedad publica para cada columna. - escritor.EscribeInd("public Object " + c.Nombre ); - escritor.EscribeInd("get"); - escritor.Escribe("return _" + c.Nombre + ";"); - escritor.DeInd(); - escritor.EscribeInd("set"); - escritor.Escribe("_" + c.Nombre + " = value;"); - escritor.DeInd(); - escritor.DeInd(); - escritor.Escribe(""); - } - escritor.DeInd(); - - // El Pie - escritor.DeInd(); - - // Cerrar ficheros. - escritor.Cerrar(); - } - - return true; - } - - private class Indentado - { - private int indentado = 0; - private StringBuilder sb = new StringBuilder(); - - public void Inc() - { - indentado++; - } - public void Dec() - { - indentado--; - if (indentado < 0) - { - indentado = 0; - } - } - public string Str() - { - sb.Remove(0, sb.Length); - for (int i=0; i < indentado; i++) - { - sb.Append("\t"); - } - return sb.ToString(); - } - } - - private class EscritorCodigo - { - StreamWriter escritor; - Indentado indentado; - - public EscritorCodigo(string nombreFichero) - { - escritor = new StreamWriter(nombreFichero); - indentado = new Indentado(); - } - public void Cerrar() - { - escritor.Close(); - } - - public void Escribe(String str) - { - escritor.WriteLine(indentado.Str() + str); - } - public void EscribeInd(String str) - { - escritor.WriteLine(indentado.Str() + str); - escritor.WriteLine(indentado.Str() + "{"); - indentado.Inc(); - } - public void DeInd() - { - indentado.Dec(); - escritor.WriteLine(indentado.Str() + "}"); - } - } - } -} diff --git a/ServerExplorer/ServerExplorer/CodeGenConfig.cs b/ServerExplorer/ServerExplorer/CodeGenConfig.cs deleted file mode 100644 index 619383b..0000000 --- a/ServerExplorer/ServerExplorer/CodeGenConfig.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Xml.Serialization; - -namespace ServerExplorer -{ - public class CodeGenConfig - { - public String ConString = ""; - public String PathRaiz="."; - public String PathDAL="."; - public String PathDTO="."; - public String PathExtra="."; - public List Tablas = new List(); - - public CodeGenConfig() { } - - public void Guardar(String fichero) - { - XmlSerializer seriador = new XmlSerializer(typeof(CodeGenConfig)); - StreamWriter escritor = new StreamWriter(fichero); - seriador.Serialize(escritor, this); - } - - public static CodeGenConfig Cargar(String fichero) - { - XmlSerializer seriador = new XmlSerializer(typeof(CodeGenConfig)); - StreamReader lector = new StreamReader(fichero); - CodeGenConfig config = (CodeGenConfig)seriador.Deserialize(lector); - return config; - } - - } - - public class CodeGenTablaInfo - { - public String Esquema=""; - public String Nombre=""; - - public CodeGenTablaInfo() { } - public CodeGenTablaInfo(String esquema, String nombre) - { - Esquema = esquema; - Nombre = nombre; - } - } - -} diff --git a/ServerExplorer/ServerExplorer/ServerExplorer.csproj.user b/ServerExplorer/ServerExplorer/ServerExplorer.csproj.user deleted file mode 100644 index 3a19d15..0000000 --- a/ServerExplorer/ServerExplorer/ServerExplorer.csproj.user +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - es-ES - false - - \ No newline at end of file diff --git a/ServerExplorer/ServerExplorer/bin/Debug/ServerExplorer.exe b/ServerExplorer/ServerExplorer/bin/Debug/ServerExplorer.exe deleted file mode 100644 index bc8d12dd8462f0bce9a930199ebde9d2de4cf293..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36352 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 RLtr!nMnhmU1cqY>000L8A@=|P diff --git a/ServerExplorer/ServerExplorer/bin/Debug/ServerExplorer.vshost.exe b/ServerExplorer/ServerExplorer/bin/Debug/ServerExplorer.vshost.exe deleted file mode 100644 index 526b854cf8e0863145fcab15488340acd8c67fa7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11608 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 q{o=CIQ#N00`=xbICAiY?Q|&vemZQZV&rhGb - - - - - - - - - - diff --git a/ServerExplorer/ServerExplorer/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/ServerExplorer/ServerExplorer/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache deleted file mode 100644 index 76104371bcd64236ce7c48f280112034056171ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6028 zcmZQzWME+U|NsAg5Y52Az`(=Az`&5=o0(jcU!0#-q8FA~T$-2@TvD2nnXl)ZpPQSX z=jr0AqY#!_RGgWgXKQGn2ZlNd&ZRjerA4W>d8wr(MTt2&3IU}_Iho1csg)u5*{ON9 zNe0GgrfKGBhK4Do28qUrtRO2baMTTxGwlA_GKbRC7<;^h3IoXjLdJ~1IWo0yv?nkJi?8Cn{fq#9UQ#_Hg6#~^ho zEy5v|y1_cgjbmgSO`^0&Mey823&RI_nxb+B0<{!4nHd-uxHwrD7#KKNK?EC!Ueq9F*jMVf(u!Im_i zLmdh-4{U@C0|SFIc}AobEVCkVbHFAjGB7X%Q6~+6jP%LOD+HO# z0xFJ1>rh%$bE9=Awc7Tvpc;TJKC>h>x0p4)II}91BfbpMvu0*sSkD42hOl)~MtdNj zF$J8RC0eBWLEgNJj^*IsR06fJpjZ&p7y}i9Y|0D_4E7Y3v1}>~3=A5?6!oB*o=ufv zD-B}U)QGpzAcjqyfq_Af7ze_eVKIWBrYdM4icJI51am9R$zcSwT0xrjh{F zhRuj#D-B}UjET3>AcoC^j5Gvl%Y%{zJ2>-!QWJ>BymqwsCNv~GT71KY`C_>NdX2vT diff --git a/ServerExplorer/ServerExplorer/obj/Debug/GenerateResource-ResGen.read.1.tlog b/ServerExplorer/ServerExplorer/obj/Debug/GenerateResource-ResGen.read.1.tlog deleted file mode 100644 index 0d7fbc1e87b908ce092d315886d89b92b6f2d612..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7646 zcmezWFOI>5!HOYoWWvxP_YOGUIs1(YP!IUA&9}3!I{CI!G*zGowauUq@C4iG$q>Nc$lybB8)5O~$>0Kwr(g^_oxw323XNM(oPc86 zham(9D_}jySxBW?6X@FisVAdz( z_8WW|g28=*Ack;oZKTIQn;OIfT%+kR7&90!7&90$Sc3a3J`6z&m^Om)7JX_}P=7xd z+JDw#0QL1;vGhpjT_R(175)2cz6_2G&I}&l_6P1zpqX)B47AxjQ(Q!CZtWjeQtA8Jrkmz^($-Z4eyK5YOPmV9sF9;K*Rg;LKpk zUPt*)5Mw%K9Y|TO z1dVfJrh8C76js~Ae2QM%6I=I!>L@qxh#n|kgT}iR!2KFTzJ!g7W42YWjctNlYz!XL z1eNuOTm~u)Amj3wVKn&M3MoGv;pq~T`aq+(pq2%w)bL{nX7FV2X8_Td{-I5rBbQkq zJ3;vc;zDYU6oBFnTZ%)s-4#015(ysJ_5+W2qo+aogu_7i9yCq_@f~Q6W+40xu^l!8 zp~v6`o?8HwQJ}Oz|1gPQ@CDbL=wUJV@;1z+ppw&%ArPF$QNxQ^H)EEFv>y$m{_G>6 Yo-6fjgp{uS44@VbsQw9NfXu7{0Jx<&2LJ#7 diff --git a/ServerExplorer/ServerExplorer/obj/Debug/GenerateResource-ResGen.write.1.tlog b/ServerExplorer/ServerExplorer/obj/Debug/GenerateResource-ResGen.write.1.tlog deleted file mode 100644 index 822cf12eb231084d95b07255eb42f9c3e146f151..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10828 zcmezWFOI>5!HOYNb= z9KoizFgP-VF!(bBGw6Z!2Qx%4)KJ|vX9j-;7Y0`bcLrAmKL!xbkHL+>lfj*)wgxZ+ zF?fRQ^JEBMaAfeIsco=0@nmp;#s#gy6yz^|h5&GEhcI|DxH1GY#6V-upCObXh`|{w zhKNyK1}-YbsXv1ggBL>#I7XcqLK)l%q)0smY%Yem4x5XS#Rl5#g!0Sab1Nu+;m>V@ z&&{9|f<3PeKDXk_>FBPFV{itS+@avoHVB+kL8Z74H2(xMc!SH|00Mc48l^ftU4lD4 zLG=qgU4k#R=;sztc#vLZ(0HKygD{*)zEPfiI<_mrH}yC!n}M&nKj` z6h_Ni%(gD51vOaXd!&{mBQ>28Zky7tPKKmCP>F-R^ryE=@Ri^6a|9GzNzf#f3mGjG`2(X??1 zB{dgqTm))^klGicjZ5&QAKdjhwcP>=4{G(rsO>h=b0#+5kkZ1WPu?KiUxe~CdU-Rr z{Xw`?7+U@Tr8?|o%Fyx$z7h%DCxfT;HJo}IqpNVpS!qO{6-KyoIjFX#_Ub8od6ByI zf&4{!3xIn5rG0HU@NOl&#v6DyW9BOKI$+@42ui!e)w~1mR(v^nFoi5AOwr2&Qrge} DfE8JB diff --git a/ServerExplorer/ServerExplorer/obj/Debug/ResGen.read.1.tlog b/ServerExplorer/ServerExplorer/obj/Debug/ResGen.read.1.tlog deleted file mode 100644 index 46b134b..0000000 --- a/ServerExplorer/ServerExplorer/obj/Debug/ResGen.read.1.tlog +++ /dev/null @@ -1 +0,0 @@ -ÿþ \ No newline at end of file diff --git a/ServerExplorer/ServerExplorer/obj/Debug/ResGen.write.1.tlog b/ServerExplorer/ServerExplorer/obj/Debug/ResGen.write.1.tlog deleted file mode 100644 index 46b134b..0000000 --- a/ServerExplorer/ServerExplorer/obj/Debug/ResGen.write.1.tlog +++ /dev/null @@ -1 +0,0 @@ -ÿþ \ No newline at end of file diff --git a/ServerExplorer/ServerExplorer/obj/Debug/ServerExplorer.Properties.Resources.resources b/ServerExplorer/ServerExplorer/obj/Debug/ServerExplorer.Properties.Resources.resources deleted file mode 100644 index 06c24d06c1cab750788146ce052b37770f3fa530..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 zcmX?i>is@O1_p+S3=9l8!Ii}&skwSVsm1xFMaikfa8^)iVoGX}jzVs6a(+=xW|EFV zSZYymW`3Tnk)8nv>L@su=9H8crP}7DmX;JH=IAH{lqTh5CVQt=hU90b=Gi8hn1_lN#24Mqc273muS%M68j0_AcA{wF$3|wOW74ixcR+6-)3 zN(@X5AdXfRgN8K7UNH?B5LL{^z`&*<3u0;|F^SYNGcd3)X~=>23``o_3=C`x3|hhl zObnoO$jrbX$WY|Tz)(}^Pwn(Dq#Sb z>B7JO3OhlDVkNL=@|77FxWxZ4iv45c< z4v2XWH)=D0-7Cnzti#Pz4f2Y}KSpgvaV|DpJ_d+DzADIt3{1=#Y9IzEyjU1Cm>C$@ zL4IQ@R%c+~s$~HMLa_#j$%i{bi6D!sMMYAqKsOSX)LqWbCLO?-*nSnuGqF5iK z&;TJWm2ZgPKy(>F1V9$%8-oHE;RukI5O#x96tOTe6y%#Aw8-1Zi$H8KMF4LY9dI0=^q;2_qp0gGzbGB9v4ffG@_9auzM!yZgS1T`GMoFWq@h5`*p zYAW&rIR%M#(#AOlme zGbn>`gECFA3y8^!VDcfD{9vXlNC6L+=>}p7fSK+frXZLJ78OD;g~3d)0ucmL6wCx0 zCI)7L-5?HTg54m2U`m3Ruq+I6rfj|kI5et3oP19P1}@279$0<`IUbxoK~7)9Cc#t< za`+;)d@qC^@qBLtN1jJs3nia}Of6~v#Rep1z}6^8GBPkIv@=5EIUkzUL2AWeSsla? z%lAPTEuQa-;4uAT6ND!%KZrQUv5-9Mj}Va0%MXC?Kwc=C19Aye8YCbe2a^VQtY`z0 zG)O?+6DAFcC3zlsUKG!P1d9%U^gula5&(NnUL2f)VLk(iOTc^v;uO6A>4GLukbro8 zAjFv<4%0t20l4piAmX63A)X(M;3(KLGBC&sp*RSnsECIdQL2Ij3$!eSMk7cZUSfk1FWlK64#e5IC`N4HWWNI>2e%_5MX z49p@Br>Fs>1!@r}<3Yj)HKl{Zi>84TLd^yVU<)6RxGc9#c}|$wAYRckkTz&Q zfCS*l7Q|ut$0mfHY(b?EyodpDz(tG%qKE;NP2eI1R5Bq-7LZbS$pYd)d{Twt6Oee( zKai84K@JiC`$WMUy>J0Z$#cUz1LDC;7Z3+tx_~%L|Ja1#9tnknCdi$T+7?=TfCLnl zGB7Z}iU^PgiuhO<3i6>UKmzjFP-y}+UpW&4gTh{zqfu)fxN zfRY)i2q-C|ihyzvst73aqKbeD2viYJ5rrxODy*R*MMf-0)i5YDAjyU49~(a`Of|y5 zVTx7(gIemK8Wzz~=LNTXwYV6x7#J9&4VW1m7#SEiL2X)%a7f!af`NgHn+aU0tHD8r5MW@>j|R!cFfeclvsj#AU|{ z!S3V`WP`L_?l5RE3V^zZb_|ad8D&A;Ibj1`n0uo~{+5ob#l!1YZhdsXxB*cV~G&zuxCYyG+AR8iG@-iSP=PWt`G7J&NCcg#jNNCNXwT(%n78C)9Dn$ZRr7*ETjREUn&Tj>2Vu02& z%mz#hKCq|(7Y?!c)q|pcRDg#@!1_J{Nb3UTT<>l06WnkmJr^Fz{q|pzm zZaH-?+~XHw`X|QBz#t9DK6e;IxV0HTqk#+zkot>{!NiGy9~4#61}qGx89@OBs=t_P z!H#9A1v#`xft8_vwRi%^5k;w-3xcNph95^0|OUZ{!~x} zUQ~~&kQtZ4;%T60V1*R-9PIhiLAqICMLpR2GeB0LG(cD_K7kq_tSALNXVF|vhJt)} z@vfoBz`zD7-bEly4K_hGU2%qDWw0nDWCdCBXMznEWI@+m3kqV8@LCi@Yc&}dSU8Ke z!vvv?4^T5fSCRpw9xk;sgMopuRtq%7&RKLEn+AObBnfbPr06zC-7HAO4>pvGL6Akf zRvTmr1A`zdqz+;eWV8DB58O;)g;YcAg6yDb2;@f&L3UVtYcV*=fZ8bx44~nEPDTcX zHH-`l;06l=0|P7_gM122qafcgiGm%?BnGw>F&G8VK}7*f*aRUADi&bE<_KX>5djmnLI{J33y3hR zKCxq9U=RW&<>J}kM9NeRvJ=vdnFES$Hlz_{ZgyP}28ar_{JEf13~3WV%MVPmKn}%k z7DxqgW`TT%-z<;{;>-dC34XIcD$vaW#aSXKzCf4>99xjU02>72U zav($$6hAOgkW~;-Q1mcq%mW3xmKp<$1uvV~K=A|~mj@*+lyP~G03;!!)%yoHL5>C2 z`{3a{Jy2pO29N21(_ArF)Bqt0ihibI@bI1ySQN}O1~b9hKwe{lXfp+if)$v7nP3GV zUqTgFfJMOyEWu2$0+5HH3ar7RUJuAi<*7puzy! zoB#>PXQ7R=fCOR9g=!F|h?R?>0FoOZ8Bm@V)`S5CjeM;PiY*{9@%;Iq$bl#?(gx{= zS_zR|fRI)20u6EKq6~#W6hUVfKw%E|7lBS^5w70D8ifV?T1zd(W#&}L9I zh*J~`(gMzzkmQN*7btS&YvpZGtN{rY6@v6Y{Q?pY&xiU2#8J=y`2}^{4I~a9cLSvq zc}`g9fp`k5L0YU(ECPuabs|{=5|Ecc8@&VxO2hmE;uI|eX@U9&Bmf@<0&$rBv8ln@ zX8F+3OHgV>I0wXoI41# zjzPo$m{%(wj^Y-OV9|agw}1rTaRB0Aivy52d~6St8R6*(#F6Kbk3z8oBv^D6$r6wN zMtTAX!p9>)oTAqtEzs}><#R;Pf_RXi%|o#XBwq9vqzxLhAOVb^1q;Fl$v`}mumuUg z!xqG0`p2e$9=4#u1`)PkUafo~ieo^6MZ(;OVQP>7JZwQ6Y+(x$m*;||Lr_5m4_pvO zo=3g}#TJlYktUKYAOU%Ew9EKNUA6h zq!SvzAOVa31`G1R`~c#i1TaVd9>5?D(?2#%^Z*7G)`$QG^J*2k(cJ?QFUm%84@dwW z#vl&1Fb0Xs^TON*ste#@4C2W1DD@ZD4(K=fN~Y8 z2&iC26#O52tP<@Lk0;=OtML=y0s7Mhj4`P5pod@3hVEV_V z3JZSh!_}biXeCAl24PSekg3`k)IzGZXJBAK?k_MQM2bNpgSB>GWgrsLXJo1dv5Sg9 zHiO0qxgY|t9;6!s0}Il?HUk@Cu#i_fofFZ6-g`2fkS-gmAS@{9a5%3Zvc21bD zpyTB#49V>bpd~=y@#bZW3=E>^ZeI#Gdvss)24L3l?mBDs0z$}GK zT_6ptLj;flOJg}`W`TtP$uhS56$}hq)u3S_h;k(T;87i26HL{h(Ikj!B*Vd~#lQm` z+Kl4h!D(&=PH{+pXp6InM{vY)F|e_NRe+?eO8)=<&&JJw6j)YDkQoo?h&J}{0;NCj zSb`ygS~z3~fr()e!_#)i_%LC}G{qV4VzF#~7GEt7zC5n5x4;mVgT=aA?4KW?>8rEZ~tqh=7(K1Elx^cbPTT zfjp`Ony+JF*v-fQ$}pfg18^=B3@azX;jfy1U6?EmJi}7-_-?9AVt-5Hpa>hX^1UiX4qh=p`BhJ7RQG znAKtWD8ekLq#{vooT~+9$VbO6O zh5`<-R1atrPGbXTUJqZ%~A1}bzw#W8$B@;s<8$D@rwh!s5A3bNeF z9+Zptg;-ICTp6^WW33MvPOM}EkF|p4Jd79^7$iV>1#^ufH@mJB0~69BM{u%&CMn2V z3loDe0|SF3SpP=w7#He@mNWyChCVn&gKJNSS@|*`5%9WFCQ!M{AO+G7N$ABYplr&P zzX>$@3L8fQjT1_P)j$o?Fa)WB=wJh_{bEytsAXoD#J~WmltAeelx}qRAc+Pt^s3D$ z1_~ivW(Ms7?CFZD=qe9G0UNlegd`fscr#>l7$O3x?qNg3P%-e7AUj*JBm)B*FDLTk z6enbI3OXkN3Ukn00Ajoel>br2n?M4P`U+{hN!Wm$VLBIh%oMaX4LsHZZm2*;i(EkY z8#1!w3TA>Aj)8J26J+t4J6IIFhRg%O^aL}(YC-87s@5AU3RdfbVEQ7M!C)qMEvg@w z30{lpk6;EMn1Kjp5SR%bkP1OCL%~e&P#HMCLp%g2ut27xEmj428qsG0^D1Oe`fngH zl<^~w0KC5h;wbzB4WOWoxq!ssLs+2Tgm;%f9C=Q(aWRk}%D5OvKt2<#uLKf=uY&_| ziavvKGPI`viYY{o6vR`gVPasALh%hqxJZ&0(ZdD_$eW;blR$#-gj^<=39;%2VgPhK zA&4W-Baga*3nWOh6@fwB-dfIt~&5t}4aH7NTaLJFiAzCH@XQHTJgPSn5xi5Jy^+y@OTkN{Yr zLN0n>fu!JrOdt+Cus|GmV1XP6nW=*M5F{X91@j@u*+o-9HbSLA0`h?{X^>}%HX=!b zJXN$GO#l&Kpqwn0zXg(@K%9KUf^%+mF{Wxz>9L4ioT(aAN-ScBEjR}$RRB$}D}Xx1 zC^-Wp1zB4S4HJ-n0%&Oq+QM^?xIBDd2*iVEgXRv9fLQ)kgwvS*vDtu<&^AzIy&WPB zavsu}Z?Ka=r5xDFpfV2OWRTLL)1Z)mF0}>;$eW|B`34CV{ROFluCoT2R>aGPSl$j2 zkgt(PU8D{YEK&xkLej?ckIfw9VB|&WAU72mf)qks0TRG44kTFQ2~q_$4kWJUjROhDhoX53Bv@1nQUx^*B*65K%@W->Q2CD-k^%7)QbFtHc7hT!^6mnV zRMAY3iO@&}31AG#fCb?LiXdLmdXOGy41)yVARj^dJH#k)YVyAiS)dq4tv5dz>MLtYLgAAyY#j+DaVjO0|10JzSO zM|CPlTpm993F1MtL7fT`fIF4IVB8*1BDe!emzaZbAakI@Ptd_QP#~a+fFc)F1e5|% zML-2JstBkmLlptl+o&R-1_i1Js1buI0xH~~B23jF4s4HwH$P&u47~LO5;RQz*i2x_ z5IR~0)&}2p0Wu>Wyw8FOx;BRiy6pnCUL^wDpxY1X;(81o(8+xq3YeH{K{5_g@Ln(TY#ZJkOkZeEz%WWD1dZ?q2?MQB#}(yEb?gJA$@>jxVH zXHh1S`a&f2rDzsH)k7)B7y{TS3_=``t|(}2h%KZm%7NMy<%H^jQ68Y+00sOJP&9z_ zm4nul@C&j36JtXfQxO+t)n*W6)p9g}tR?xyz`$^dfq~%&BLie`1vC}Uz`&5hz`!tp zk%8e4lDHfs8EQE(FsW8YF)*-*N7RBSSieydwl@zZ9SN3Z0;?7K$0GKRk&8{2lYvPL zEDq}aGJw{B1%h@>K+$kAXU|VqDtd3=q+xPEg<;2Z=JUiAQj; zK}`S0!o#6^2cje&H2MMFDVYVeiK+MmC?|nTg?NEMs}0IvV1g_*tBnEYI5*IkQ7m`~ z3}_e?B$$5^R2Xa3F)&qwxJ=a`>3mlP1~z6$Dmev~XJBApHeiOYmBX(Z!>FQOP}%?u zF6M)cgWBQ@idC(B3{b8Mh>NLrBC1|3(7H2q$W~fG1`#d>rsC7!+;~rbn*lrs1mlC2 zbNYhJgp6x2FfcQ4^DzjNfmX~KFfr)B<1_yZ0|S=`IQn>)z#I**KBoM$Ad}g2*_ras z!GeJSv#(xOz`ywuW?qQo2>g@DqeoXlkJ)XI?j?9@ElBy;mb z(_~XKLrY_mR09i3WlYOT^GY&vQ(?9Tr#W0U?l^L3q^Nqu~unrK9O&u;fdp zU@s>|&{+nMHTMi)VE-A{)OD_hg z5Yb^^m?6Nxpd1>^u*L?w9+yGcJ=7DlH+_!{1H&6u1_ouP9MB*%NIB@p1jcaDMVy?V z!ytaC8iOW6KxJ7uXjGelfgzTGfx#DwL6b?6kg^t}4}N|G=x73v9(G6>3YG&EkRUNo zi7U$}#>mBB$*97}#}LeD$H>M|!7>=^+WMN}aW#wWOVkl=#WaVOb$F9Q2#$e5<&&kG+ z#2LZK#;^iRs&k2Qu`$?z$!IWH1tuqh$u(f|IGB6{CZ)K4bFne#fk_)~kls)**~(qS z-On%+e3HNk?iJi@3@^A>aEmbr@vPwHW3c5>*#T7^Z{SD+EC< zUoQx@OHho_nen6`1A{Z;2SEk~Z3a#uklr|6F*Jyzi?A{DiGbp3F__#S62a-ta9jjr&Lt6$IS;|)I}wn3eu#j~ z_FD33~US#@jkHZWY*OTYz(tm*D)|MEMeUU zw@aH1>_9L(mJQ^`OfXpj7O4lzc7a8vf<+d9MOK4Fc7R2Wf<-QYMec#g zmu$P?Hoj%6WME|Y1tuZk39%RA1~m?ljg}ms5O(GOg>4X+j0KaaVDUmQy9rG8gUQ$6 zxSPcRilfb7avzvH1t#x+)jS28`~gh<;Q;xUn==9)K02(Y85kKhz45CbDa445~W<2<7n10%xND24Bb^4>Fo()0;1Zz2OT zlK}%0!(%Y74QvV%!yhoOkwJ*bgn@}cM-fzgH8SWhnJ}<01VDMNOePF$3=6=#BMhxf z_6!^hH^96`hF&Hi22KVZRggZ294CVdmVHBQW!)S zOu;;e4I&KkVBSOt7hwYi5e5e^58^Trh6*qb;xbW&2cT(Ju*-@VL>c%%lc)@h4Ch%) z7{nPwz&wbVk_gA~JMFb|?qn&Ata*Uuo$plkwiCqzz` zApp#4WQby&%OJ~e0?cb;Xk}f@Ajh!B453ny;WeDMl|hk#2i!_&WLV8=!l1-30m?hb zYQmtxa0kk}%xc1*#-L#VGNqB>39AW%215yy_m$OzL5tx4l*hql!l1*TYY9;)$!5Z! z$6x{GK|;xZp#aQ-gpwhHjWa|gE4vVbAwvzQ$-~gdAPDAJxI*NV!8{Ik5U-8Fgnd7Q zA;Ss?PvRtF3xgrUGdOQ6gAs!W=zt`KMg})_69!`jHz+TH-GsrEAqL7TWH(_jXE5;s znc2uNf!&0`lA#33TgYz0V9l@v%G=Ct!eGmA1IjziZo**Cz~T+jcZc1C!I5DRl*hwy zgu$6%1(*l%tt-O=Fs~7ulHC}Z!$A5VG3Lgw1kP(=aAP_9Nd$pDh&Wa#1XV2otk%;U!x$#{+@oKcbCBx5XNA>&ELBF09r%1%ZN zUIT_sMr+AEylkp3$5W`7E6~3K}7a48%_A@?YJjr;0aVBFF-!;aWjOlzW z3@@P~rF?f8XEN6D{biWR*v;3%@R4y9-%iGxU^O=xL9#c&;y)QrGCpCv$#|0Q6(b|l zNyd+ioJ_CyzB6(%3Gn}86l7512btr{&&njp6u{5TB*+lLZ_gmekj^i}G?THC-=1M6 zV;jE^Lm=3NiC{7kOlE?~LNGa#aUs7vQy{}(el;ddCL2B-ra*@C{Pqli3=hF1mw+)- zAcL^LE5<|ykZThebOin~STZ>ZfXoNEZ6;%^fIUMYLl#)1Mc@^qAj1@aSB#EKM+F?1 zJemFoxG@DXsPK6+1u`iK3NbV?SP2F)B{J0thBIX{bqmHa6*A2iOk@gV3gAy;>SQ`B zn9J12^jNTnX(Ceqe+5$}6N6AaQy_ze&y~3=?>?C@N*^oJa{{eF&Sg$2>yy#125e870i!cQ6zh|yw$`bv`?8yuY zA5Z3X(G~_z<{6?OKZ5)l$h=k5o*|GK9**71|G0$Rlu&*0jpO5yE&5iljv&(PKIBipqOG7D`QCnyFriv zl(PaEB*j2!$w+J~%S=XVF?)tWW>CsM$(SLwhozFaTkJ5)Ovd?QCs{g~PcmL$naOxk z>@G_s^ChtO3$c?dnGEdWPgr!ozFx^JFaDK92ka6PuuDMhWMVY|yJR7Qn)p1Xg$#z` zs;mncEW~wK7lL)Y1jqPGCVTM~hK=AD*~kzq?!dZ}Iaj=%X(L00xDbOT!)b;}Mm+{$ zhDcUD25B(a%;3zZ$H2|t%Bshp%n;A2$Dj>n8#83E>M>Y@)p&!+V1{N^J%(h4wXAv! z*$lf_^%#m74zubpR5P4mb!M2%;LPaEFdIyEGcYlFg6&$saGAlG@i18YFhe)PMre>x+OedLMFnKdqGj}m>W&Xu1$Rfd_#p2A8 z%u>TLk!1$Ue3m6FD_LH%aIqS(TCg%PFfy=#M{{Zz)fgBUelvnroXuv*WME=oVqgYi zP%oE-ft7)YL4<*wA(eSL^9tq=mKc^_EG!M6vL95B!>}iGUIoTyWZ(sNn~{g285vZt zh>2kl+X+5}64a|kn8yY>niD$C1Q9*X=*kCTq1q860ulpZkiqrhkaJE!?4{xi3=Wh59FW-vpDMpkXa=q;9P>_?E3}y$XLc9uc7fdlCP+=_J#Jt4x)FOr==v<3$VjfJfdrp2*Voqii z*fa*{yb3r_V2Yt)40_2W`9%!rsU`8~#)8CPs)|!f;$dtU?VFgH$KYC)npfgjlwQn` zo0?bZoS&DPT#{H65ESa_g2g711Wbz~R16Y?dd~T|1^IcY zc_qI2DXBROp3eDsC5f4NsYMLQFqvWom(1dV{Nhvw&%Df%Optd|;o2B{Q}aqek(-xBtJg~EDloOS(2IymWMeE%t3W4LPm=BM63UY*7YH~)Rb5UwyGAQkWQng{cPkv$w zHV;Ch79~95gHv--lS@)lK$)w;IU_MIJrzka$U=lRFwZ5wG$|()lB7~n(-KQ_N}$1# z3QoT+5HSWgomi6SUX+;vj*FD^GDrr8rY}%FX8;kPLLwDZ(txEQUU1IO10|8XbcTS$ zl8m6l%qlR$#nA^shxmhO*NT#&L|Be<&d&k)Co?~w#gKKeNX=-jF10=FxMN~0^duoYueh$o7kQ4QS3v--vGE?(P7(lH2 zJWwVBhk9mC4!BGU$t(aBce#mq8TkwWMVYyYMc||YE*H@YJcu8YO7dWygN8Fy#KqAE zO(4V{RRHX7gpgx$YC%b25kkN@F)uka2QHG6l!FM+5^zF;hHg$$4$KXp#0Y0YT>=hx zC>s>^B^4zgB_JkLCx{7C5aJIr!zIKYl+?j$L;OJr62t_%8m0uoftmv0B$edB91hX~ z^%X;MUIjx*Vp2|Od~tFHD83+^JWw{s%*#v$mph3?U^R)w@hPb}nZ+e#pzIG)m{=U2 z2p0h5mLgDu!Ydf$ss|n|&iMtIiAC@rgNAEPaTzG7CKhAQIN)LloUowkK?2Yeha>{8 zaX`5iDxOr52Tri?2umu-3rht#G`|?C1YT%@3QTYgOie*8`9U=mBnKfW0fi%)Z$O0! z#2=tS1d{f_d=M9wC6e=Vz$rSXxC~lz7lWiBs-Yqv0gxiFrC?4XB>5*6C1+%o<-?tf zQqDv39#Y`Iitx0|^wJ_oVV0bqz`MGVDB44!$(3@)k3APHEu_w)zxQWJB-i!w`6 zix^U&?G6U#)S@DA;gMXFnUo4?k0hmf=A|&WfJsOi%PdL-RqL7g3@%V+CAji0OUx-v zWhhR~1KFI)kOHnhGxO3JQc4&~z+PfV%S_HlEy`y|g%(eF;JSz*1==oRfbiX*s)|dB z7zz?gG8i&J4KAoJgHqF=MInP@adB#HQch(^W=T$}V@XL-W>RTMDqI*;cok(9fSNy; zlJK;OOFFk8F|QI+UqDfQN@;Qlri62TL1j^9dIlD$kfOwt)ZE0PY%IDUizE;dFkeEJ zn&^4vm82Hs7l7;AWN>Ak8&uDKjUt1S!a&ZgS2qN@Z}ZC`ru&t>-~#hD)cUy5#4A+jJnyp}C|a zH3ifVM<|ClJ+;U$KQFX671YK?N-`i9fHXsLSV<~Ucm}1Wr52^;C8xR;mL}#DGlWzY zq%uGq4q|&G=B4DMf+|)J&#fpw7b*ga2ypWO&T&lvweX#a^2>`+gBDF9xFoS8l_5C9 zF(jiXH4(`@NDX-g*F2CJVVT9Hi8;X~m7v~2FsOphEdT{)PAaHG2m-20$p`g|a&zT;o1VeCXaY1Tcicex?erX8n5|hA9N3a@DFd}SmDatQ!$uG|XSq^puvOqDU&jLvTMGT24DbPv|WU?CrC?vrh z4G^O!KL>2QV`)i#aB^Z!s!L`rB#{?0z{Nlr4OJCf1k!2)84NbJC_e|$Oawa&YDqCD zOu%M%7W<}Tf<(b?01JWoS)fV`RBsf3`qrhnsn9qGNG(dsFUp1T9P^Sh@{6FU43t73 z0??);6UAi5G`i#L~^%#Y6%h#WT10t5xATHnH7{@4o+Jj_kdavpsWSza>Crm;Ns+0 znv=s225t<%WP(eRKpGHMg3W-6B0LEdVDQZ^OZ5X?Qff&&$d{1F1Sb_}_uo0O1YF*Mk{c*& z(~A;IQd5FclS_*-ODe%CLDh<<3z!K@NenJY&hQ=;s#V~CMUz8O4lZdy^-3_LYv7y% z8jWyCEJ+Q?%uQto$q&xRF9M~NREWV~A0rBNy<|`$jR9@2CoegpC_gW=Dm8_{Gq|*% zAit;t>OoL$a7sUI zT#%hm6;P&2YBAKPR0gDM6kG_-iH<3W1)vspaA8hBVo_plDwN}r1Zq4mxFjJ&K>-TM zMBr|DZf;^;3OI@(c>+|3fJBf@Ld#xovx=c*4a|18%$yuh0by(e$`YWFFVM&#sKWqm zm!uX!t8I`IAhxBZfI7KI)J2QOJY$r2!riF z)F*EFc_j=W0^$<)qQruX%;e(Gyi7=Q10)3wIjAu{pp*?Jzy`VH7o~!21jhwvyfY^= zJues3E(3)qC{!FlB8biwgKI@*aS5cX^GVH1FUepCO3lqLO9c(`rskzEfD@|^C>C5R zK*J}X(Hu~?!F9A#)ettc1VO92n3 z<5dP~m%|6v@u~!+D{vPauPOp65Yqzi-2%l(<}tVjGo&&UF_eKxSB46P0)`xhe1;-0 zUymVxp@<=$p#aP)VaQ}iWhiFQV+aD%`3$8DMGVPcHbcW)7luTJ5{5(u1%_Y-gp@6V z3xgwrA43R(D}yzICqo`XCIiTzM1~v&1qNrR9*~vk47LnT3@!}u42}#r3~3Dc40#O2 z4EYQ}4EYQx3`Go?4CxG|45ipFi67WU_p_|kOB?@20;uFRhU{QhEj%NhGd3B zh9U+GRr1KPpzweMG2C3ZYn&Jo8HyQF86aVo&rr<3APo~!U`Sy|Wl%togW2v34jqth zK_Onm;K;xrjV`9ZkjS71h79Vs^aU^kF@!R>GB`0fg08Gn#b$;A1DYzyG=?IETx=m} zh@5~Dp`i%#2YM)hk`jY-4nr|R8Ab?#<%B`0r5K#1An}#Rz`!2{PKw10ncxs$P)}kg zVaQ|fVaQ~FsKks7uvyB;DllUNtVTSCA&DUe!z~QrB@7h|C79x(5cQ!9#SEq3bO3S_ z13wyH7NQCgvL)d33X1VOh75*81_n`d@sA9N42+@>8_`V)0lNcT2h=2K%#d&b=O-5i z260s1!^Qa_p%3RPyD@;$6v$<;SaSv!1&QGN0?LsL(vaB48k?f{MM1g1k0Fr(lo}Z% zQDZli0WQPHz;4d~f(*?13=F)v;5-7#?L`a>!jPPj$dCjU1;?9o3b+hFh{ZGH!E6yv zhPof5Kb`@iGL?ZrFohwVp$s{12}1k@F&~^0ne`YLTAV?Vl>-iz5(Z9&WQKf(90olG zX9j-;ABIo{Uj{#hcm_WPM+RR8R|Zg)D+U*9AXTLdxnPIrFeor^BIyMch#?G)4Dk#h z43P{0Ncuv+g;G8Px(;Us4+ckuAO=SUXK+Cp#1PNm%isuJ2kr}YMLdHKgDZm{gF8bA zg9qFlA>d$0WB?@*WK$vT_hSfV2mzbw2`->mM~jV6hF}Iq26v=z&4$JRC;=0SLtBPyyz!d{u4+K>i7*Kin@->uK%@nTIoM=C zsf3Uz$RUVn60$61A&BfgP?|?**+2wgq0|C6ENh+7TF#Bc@=23Lk4 zaBL|sD8O?Vvdduk%a*}`A&&u+_L9Ka8kD|4MK-9>0cvEpFn~@Zu>8Ov ziObatvZykswleU8iuxP|SUJML2`e8M_(47gxeSuC8H8anh@8s653063!Fe!B&s_>4I)rTCo(WV!w=>PWEoVmkz_<+sudWJ zM4@2?iZxKfC>2~f7cnphVu(O}=m>757l4~mMGOr5XnaLbiJr>2bB+b3`nV66%vmi zmlrT(f}3|BHd@N(1&P7r8H6FtDVYC2O?w7z1do9qEq{wc)Pu}GFpeYwQO+jn{b>kputcZaDniC+M0;Hy!Fhm3;U5n9?I%esIr!G?B=VBI$)*YL+PxG;c9 z2ha*lQ2c_rj*zk!)D@`&cU@8$av7`{7*uh|=|LN-i6B+#ppqIC!o}cDET|8z0B&od ziZN&xFqDEjH6WiWfYlZub-$CrB}Xv>$o~wA1>jD08MqV&bv*qUk{Gg}EnfwOcm@V$ zYX$~cR1;CvFtDdHq%xE+FbIOi4?tm8#E{1T*2@mclO+rc%<&8i!U_zw30tO`twd@upO6pCb1U}O|*m|jTTNK32O8rm)(b8v%Fj#BsRWIprobejgZk_ypz|N}KnGZZ)~2#DFfqx< za4;|mHLMkE*vP8DAk?sx9poDj&CV<&C?v?l!pBz z;3P<~35XD3RbUWoxXH!NBGhnENI}SiiJ6^|32ehlb_GU8S)qov92@N8>jkfJS%CtO zg9Bp3M+o&5Bqk#P;s`bT1#x(IKpeqFMhL|TGOLjn#1U#Z3wDGe8#~xskeFbjAXov| z<+4JC5HU$skP1Uq1_q%KIfWWSg*;*AFbOr93N|JRH9Q14j+29(86<7O6v@co?VFig zlwX{mR-y-+$}3ID%-4g=l^5&5CO2GCi!;;nQj6dM!I^pKIpBd~=!|}T5r-l891w6i zU}qGP0HuJ&RH4RHNGRokl9&uMor8pg8rFhRg-~Ou3_HmAg+ifh3XC#BjkP@NEJBTi zLXDL|3PK7H9Xgx}45EUKjf}z!>|k0*hed%wn1PR-MMy_T2P(t_O8#VU~(o0DC9eZ8ar7P7&(L-L6IxWz@os#niA=KCj3a(aA$m>7@9vrAknFQI{ zKvGCC0(KufdKj4a`1n{A7=;-)1lTz^I5RY-;j6p(_A zTS1gi<4#rv2EoRIAdX<;K^_HGMm`?F#*>1LXIVjFLXAg3lwjjUPIe|)Awy7ZVPRlo z;)A+UgPnl|l$iLW*g1tX`1piegmjpgAdb<1P&#Z1OhSPi9H4|2$j8dg%)!S5io8gn z#+#tT6)DWfzy}(oMl303U|KYrHCF`1)8z$>oB&HeZCYmH08k?DFhe{;7S`R|8Fl zfcn}Xc?O0JECt{_BCvLQ9z!|+ZDT3@CNUIq8>=4Mk1`HfX=0IBA@WFWo z1_nb0Jq80f2H7hN+SAXF2kwJ_T8E%182HdHe2^W~!Uy$uQD>t-{j*e%wG06aq6~}- zKHw=JkO`n(Mgc=5xCNWekO69gfis@O1_p+S3=9l8!Ii}&skwSVsm1xFMaikfa8^)iVoGX}jzVs6a(+=xW|EFV zSZYymW`3Tnk)8nv>L@su=9H8crP}7DmX;JH=IAH{lqTh5CVQt=hU90b=Gi8hnis@O1_p+S3=9l8!Ii}&skwSVsm1xFMaikfa8^)iVoGX}jzVs6a(+=xW|EFV zSZYymW`3Tnk)8nv>L@su=9H8crP}7DmX;JH=IAH{lqTh5CVQt=hU90b=Gi8hnis@O1_p+S3=9l8!Ii}&skwSVsm1xFMaikfa8^)iVoGX}jzVs6a(+=xW|EFV zSZYymW`3Tnk)8nv>L@su=9H8crP}7DmX;JH=IAH{lqTh5CVQt=hU90b=Gi8hnis@O1_p+S3=9l8!Ii}&skwSVsm1xFMaikfa8^)iVoGX}jzVs6a(+=xW|EFV zSZYymW`3Tnk)8nv>L@su=9H8crP}7DmX;JH=IAH{lqTh5CVQt=hU90b=Gi8hnis@O1_p+S3=9l8!Ii}&skwSVsm1xFMaikfa8^)iVoGX}jzVs6a(+=xW|EFV zSZYymW`3Tnk)8nv>L@su=9H8crP}7DmX;JH=IAH{lqTh5CVQt=hU90b=Gi8hniNhc2h9dGce%gl5z=VU|?Wi0wady3=9lUm_Pyy42vMt zC^-y5pyBX;R(6In|3|^d3;_!p2BshXjZsqakC7P^BhuI0rwkb_K(Q~tz`y{)3=9l< z4FCVLFfcGMH-IEY@o)}-)S|M~qST6locyBHqL^Y-Zdy@pN@7WVv0id9gMM*QvVK}- zPHM4!id9TmB8Fl#y~+70sp+YC$@zI{nd#&hkXDonGBPtIzbKU~7nCF>7jD>+gf`Ne{n}vZv zoPmMi9n=hv^FU?uOlAfK5fFz$jII0!RfHfrVC6rE53&ZG28oU0p&bH0k^=3Iv0oOP z5X^AEe=*a-Bd*>vUp~7eIKdvm=bqaZC75ZA@$fAX3=9m&Sc8FqA%~fP;f)9b!vi4(h8Q*mhBM3z z3@ca}7&N#T7)+QL7;IP=7&KTI7%~_c7!EKpFzjGwVDMpquxnHp7=AD?FkInaU~ph! zVA#XYzyL~*Fl@ufz_5@3(l=#hU|;~HUr>Gn<<-dy3=C5k7#OB9FfdGGU|^Wez`!tr zfq`Kr0|Ub>1_p-N3=9l&7#JAlGB7YmGcYj7FfcI4GB7a6F)%R5GcYiiFfcHfLh~Oe zPfIc|Feo!HFsLvvFsMSy4|N6x29O^$85kI}7#J9|85kIJ7#J9I!R;vq27Lww1_K5L z215o022g7o)aJ5eU|_IfU|_IjU|_IeU|_IiU|_IgU|_IkU|?`yU|?`$U|?`!U|?`& zU|?`zU|?`%U|?`#U|?`(U|{fIU|{eBl{*X!4BiY33_c7D489Bu41Np@4E_uZ3;_%b z41o*`3_%PG44{5|2m=E{C<6mS7y|=CI5ch|85kI-75|4n&HKab!DASea)9NT&vAnS z1_p*g1_p*AXqi~Tz`#(-z`#((z`#(>z`#(!z`#(+z`#(&z`#(=z`#($z`#(;z`#() zz`#(?z`y`%dNwjJFf=hRFf=nTFtji*Ftjo-Ftjl+FtmfpPf%IOz`)SOz`)SSz`)SM zz`)SUz`)SQz`)SYz`!tpfq`Kn0|Ub(1_lPBp`Ar(>UwI$f5WUQ`PpBl#FQ>u7i04K zG$`6>>h4j)sS^U!ihoke|39qMEB`@d{{jX``Hx=qgYrMI?v<|>k_K%kPgv$s}Tjm851H%zk1_n@@1k|1a>H5V1X|Ex-;V5Cl@(+6c z#Fpo%-QEKEXB1-(0Z>^+jrRXr&%o%4^g{LDGN4cfDy8p=a(XbsFAwaGCZ+(oZ$@{rp>XB2IN_-dH2MzTN zjQ|+ouB2A{EBy>>IdEV-k4Z9b_&3j&pdt1V9`Zd ztv^3x0$_wYlv?p0*7D(PV#<%kcS5hnf(dYkR^PZsjB`F;1YG8Aspfz-qtfv7@Hh|XDz~+r$bGD%QELyFx z0nP0Whtxx@_-CKAdb3wUidkZ}Ws86=pCqUQfQ&)wA3 z^25LP|K2k)Ffe=q1-6S-OqgR(OfYyAxGQW?I2t#gD8C@Js3bGBI3_5yIKQ+gIki~N z1!-k715xY43lPQ>!Hq#)PE4$0(u)#vK`VKQwH2nGDD%^bas%M2rjv__^BT%h>*Qhv zVr>EiG<3N;a(EKuG1S%a-Hy}l6G0YH>U6NLm>jK_$Ku!=q zR>zZXCkZhOv5MH(by$Vf>fcnNj81yOc|fc99pKo{^6 zyk{yDmHjjyG}q$<APWH*3vHOvhs_gC0~+yKh)AUA;I zkkx`pBbeI2n*weiwV=`oq!uKHtQM5hVQOP6&NG43f=U38T96#FT2LtlQ+qx2t~N+5 zsB{CV1<4_+1(i-PwLb&q#Dmm=N-dCDkQ}mFPzeZA>*w`Y3#1lQGJ@2C0XRMK@dbMLbh*$lrp4NfX+B!V_;%nW3XdjVL564>e%MUYo2>l zIhl5^-jV=P<8`P0P&$? zlntOg8X$4d-acsth6d0+J{cr;fs9gPaAx2I?+yg*57Y(Q{{_157gW!I)PVdA8s7w^ zK~R|h+V2JuA8eRf@sGa#6JI(dHIIS943zIcYt>Hq@)-weJ~JRUpYcHR znI6==KR|^B17vSE$X_7L$H2gLf*a~yJy2Ny+6&Gs2-*j`g$be-CQnMaDuq;D!aeVs zpOTsb+LI0`pQ#o9=<7f8%Zv5g@{4jo`{Biq+yUxz=>->pvm~ncx`0CKpm! zkP0#nRMwH2hCulpy_`0J#z_KbP#Ss$04P2{n4f`x?Ex%KKpruS_sLI8VIZZ91;s1K ztxiyTzy|<;_Vz;4EXW=K1_riAFnf|p@_aIjOA?C^BZ2YGIho1Xko1tk%)oGlg@M6= zk%0lG2b5kx9W+kV^lA!AuON9)9fc+jt~Wq?k*O8`=<7crW z#Si4{1z7xeLF4BOD4-Y^7&e0<28sn47}%6}A#P^KDK0~bnc!4VOC~kNGcP5z!Z{-` zFFiGd0aUKAure?lV1<|i(+i3RP_%QQ#uGRmK=n6BUjQou!yZ=1UUdhkogjaMoPyBD zz<};=;{3dp15|#({0u8UsTKd|>p!`1_!ATkpw2&&d)0@DJlgQte|uUiU$<=yb1=8I4C_Li>H)8(xU|%149Qp z149~UKRF*HEr8U6(j$s`X!=!PXJBYyXJ7zrf>{Vv4~j=nK1EiK9*^XvUszlo0R;>L z1H&ay06?)Y0|T2RKg7+T^y}p0;u7zYUz(JY3NBfw75_?D)_?NA(*X83K$cG{$_2N- zi4OzR^bBkNfyxd>21fAt3!oqX1qryaVE~`c0&f2aFfcTL8t9;Q9%!$wAOk}KXuqxy z0|U7I2Wq#1=A=RGR?t}vpmr;$jmZl>xdC(z45)3Y25yIf+NvNqko`WauyzC^xJ?1F zAJnLKfR-zA(DtW1149ESFDfuFG=S#G6&V;BK=vsyFf@S9i%@1@XaLP!t1vJ$fX;qU zWngFko$H{+z|a6Xvq7DKp&WCEWf(h$kSz!1a0(2&N& zz!1y8&``(3z!1m4(9qAsz!1;C(69tFipjvxu#t&@A(4Th;Sdu8Ln;G9!!0IozHNBT z#K4fwz|g=98aV{@OF$!r3=9pj%nS^<3=9pX%nS^93=9o!%nS_q3=9p?%nS?#3=9n! z%;0k@8Y-E==T|heF@w*rXqd+gKF6YAJu~<$i-sf2;PWgRE;579v}gdG>r=p!oV;Ytl)D_ znmky+XPh*If<{dl7#ea}85rgpr{?XTeg38RzpmfW|z_5jZp&@~dfnh5HLqic8 z1H(23hK3e428Qhn3=PxR7#MaiFf^=SV_?|Hz|gRZje%ho14F|ZHU@^>3=9qT*ccf0 zFfcTHU}Ip|%fQgU#LmF5kAb0qj~(1TXpmxOU^oEEH|z`y2SM@3&cJYpfuX^Moq^#9 zyx-==z{^m|z{^m;z{`-wz{}vpz{}vszzgojIWX`txG?ZCI5F@tfYgE5AhBEqUWO6| zUIrxwUIt4BUIuvvUItSJUIrfqUIudpUItGFUItwTUIq^+yOM#I!Hj_y+-Egn;APNa z;APNb;APNY;AIGc+U3UpDnlT4yE5=Hq(jwsL&ZU2+E6oKVjwqx#6Wg|+-(STFU))p zA7n1bjUcyx>;$zEnH^1%3S|#E&318#C}Sm_Ypmqd{&4 zVUU|a@|q01450E9)UO87O5i>S>jl*Xiy`L`HGtaHdJGH=2dH@d1N!<;kiB+{3=AOJo)LV`5jfm< z8G;#j89@096z9qeybK}?D$sgWj6nfhrwTHJGYEoDK>{@(gcw8_v>61!r>MdB&S1VE z`1B;0m>yUR6jva%q6~ImK4=_C5qw$`NCtHF8W#g7UEN?{V1TsE8Nuy+P`rW0Y|cQG zfzDzA$D17kLjx$Sf&2j)v$AJkXaL2V0|P??D83vS7#cw5D}m%eXDc}|Ff@QRKe{k5 zG=K&gTp1V|K%1dJ@}P5%+!+`eKx09k3=9n$Am=wVY=oTQ)UXM1juSMTK&Ott+8Qnl zg5VRPV19-84dhgaUnAgtg{8|LMh1qf;64N+g9{_%OgfOe!JdMg5d~&atNce_{~67| z&;ar;sLlrY7gR@s&TvX#U}yks4gl5BpiM$a3=9qP7$9}@dIm@x4GI@fUA-4{?%n%; z;PeXOgW@KGfuZ3n0|P@Q14F}m1_p*K28ISvMh1p#P#b~~qF)}G?wp{sGa~~-4!E2E zjV*>l%WqJ*16nZ%3u9234$7G@z8N^oLFtE=A&`NWK?15zk^xk1K+-K}bP&`>fTi0I z20?}}a2m#z<`fti7$9wNMsOP)l;*%?611!UwKqV_LbNnj1Wj`#3=9pRnaffJh6YgT zC}Ut~h=-h~)c`s}3zWt{=Vw(gFf@S9(5hr$XaJp+RmH&206HrLBo8_}r3M-YwN$MC z(bxYW(xx>yZ6f$q45ADUU@<|4VDK2PAcG7z%s^=uG>!_&hoJc^kRH(d9*72wqk`JB zD;U7_J;M_Q28KVNBWoEM7&I6ez-c^&k%6Iwk%3_jBLl+)Mh1o#pfeVk7#LKT7#KW2 zg*nKeQH&A-)XM+p^S^}Ve2~ZYaE(otq~_{@#sxtRMxG;bDM~EQ%u7d^Bf>Xtglt!M zW?l;N*d(aGN$OZ4DBq%wCBpjPJ3tv2de$At-5{*Oz`*7r3hjfVuV#V_E0Q#>s0NG!<+O3bW69#7oENWJ~ve^qaPR#F!@+oGUp z%dj=-49@v8@EjC>9H{?`?hg;pfC}^sM35gqSdD>!?K_%3TpWF1-T;rcwJ5#cV;>Ogl`$GWK5JmHcIs*fn zsTed3K;y$D#2>{UKFkaZccA`&sin0)sFnZG=YN;5K;okq>StQ}g9Tr@f{wo=f+8G> zH5nM#HbULTkW`ZAn4DTrl2`;j(0%q1Fc(!S_e84lubw+5&zDKdC93c z2n)%v4>o_10~%0;o;eD$Pn&^(O&VsOOJ;FFeld6{0%)8WG{&sK205b?q#l${Kt%{B z`+<@!$oU{6LH!j_SqJh57X$P>V+K(B2y!+us9y!Dt3hLF=x5)7#_p zT2Q!4K*s|?^U|QO0?k8%&WQ!hJA=-714N&OQ&CW(BVVg{_GiUH`|x01D&5y8aJbDL^9`v|<((Z#OQVTL4Eodb#Xx$q~4p}W|jUP=o~>UbdF#WbdF#FbdF#nbdF#j3-}!DhHH>H zf=1B#SpY{|lLS0?m7X+AE+r8PHnBh2VJ@$lMZW zt_L({qQk(;0GgkPWZ-46LXromcZbe9f!LtAC{XBd z8uHiwgvCeS8K6Tjp?(0Z+W>hJSr0we|AN-tnnK+|%=%xLT2TKPR3_tF zS4m1A5)`kXu`f{D7&H$Ai8n@g+=E8Kw}31J-C+Z58}owZ&!OumKyeOQM*(W^f#%vk z<2j%~+s2(b8u%xXYf z2wJ}iSyKbLgamaQ0i+jn&j(07Obs#Vl+^K7kV{6_|3b=OQp#22aqoc~V;^1r3)v4c z7}x)T@+)Yp53#NmJWh_X-V&7m5b_KRsd=TjsYQt?`9+{Rk|6tOkmV8k$U$?X%z~rq ze-Yt?SjP(v=K){;djK@R1S;A=jUrG)Gl2F6Ft9<^4lpo)#>OFQ(!nc7!D~iA%0T1D zKUf(Ude|AjbFVPi43IVK#I@m2*RR9o9?4n%3yaGm z>A!`&MX%;jufLN!C8ke9nz{0`6(8B>)>uwHRXAFvCkhutbqw9Y`;Q<=I z2W2zR+AmOh8MO8bG*1E=lLyU#fX3wMz5W-p9~m^p{hNV-0W`KP09~u4$Oyidt^stn z5@>AO6SPl?fuSLc5j?Ngkjx0ar>>!z5qv*g18BVwXdHSLWS4!z==xvqU3P4tPBjx85kN~u`)2MU|?wY z&C0;A2DFZyje%h;14Dxp8w0~e(7I+e28KAT~%HXq*Wo1{$vdsRgY&24T?p zYLJ;AdC)u|XbcKQgT|gf7&I3Jk_W8?1+Du9nF*pt*Z+dXQs}Y%*N}ms0d!dd$iCZ< zy&(;EAotWYyoKx$X#mv`Ao&jr3=E+8(T|Wj@fvs;!FPr=@G(N_4t_@P9d`{9&~=xi z>wm#_whrp`zk$&C?jY!VcQAB~DQHg)=R%#=@&oMyOj6wSRpgt;MT`X#!pO*P%bp0>=*Z<;MH+ut| z$sy?jR2G1+1_J{dWbGPcY!I}r+_j>lC=t4H7BnU#!ot8Xy8ahb?}I`Ng0&bJ2Icx+ z*cxHjm>s_PWm3yYkk4_=+dTjc0)zJQfEK5M6hh9)VsnG7S;ld04{_t8|Nn!=*FbBa zLFGGWjvKTV7gA3#GQjFLP&o%$cMGx}c^@fg{2FvN9%yJBG{+5^(+16PgVsBP=C(m= ze?fEF!(sg|=&S+I+EUQIQslLzpfd+RYi>bj4uIB{j;{ax*8p0J3>qT^h0AbR{|m|& zkbMx0pmP(z`<_AR9=1juv`-b3PrRUKRd|E;+C%rLg2pF&p=VO~f%f=A_mzUyTtoK3 zgVv^lFlfEH6nxDwC_O>;LNGFbvOlOj1=@Q6+6N8Fi=e(J$WBmS6eI`gi$csqm;qYP z4k^0^=By73b_NDWS;fe30OSb<28J1+G7J=W44`%tCWtxoOb~zQnIJJt3=E+0g)Alp2GICI6ZA}w$GZAy$U5j*A;+L+g&{tSs~oeGeIPwXM%v%qk_%^ zafO}<5(PS?8g!-$^lXqyb_Rx{3=9oz>N_y85mA6Ff^=TXJ9zZz|e4D1z;KU&q2VzH1H*j=hK8>k3=9uI<8++hGt?R+IT;upfzGDnWMFs<+JC~y z0NM}T;Lpjx@RWg}A(4}T;TZ!%Lop`9ZVinUx4NhK=T5i^{b$H2hdyrXdNs_ z4@exO2DIiCB)0&%o)shxQx6h{t#_RdJ?{l%2FQ(|b+;gF!@$cB3Uv#}K9D?Uz5-+h zNFKxnos|L-hv@^k6J#F99WZf_T_E+y=E3AaW`N8CsR6NJ_8^-#uU}0cLMmrx6)E^+O55WLF)7JsI*BaD^0QCuajX~@1 z7#Z|H4rYLy1q^D>fVkYCvJbjm7PO8Yv|d(+0lZhT!5Dl7P9_5{gCx8i3xP7#SFTg5wbsCXh3! z5&FPw1Mog|3q}S82_^=HLeL?$CZKc#Y9~V0&mpVN%g;?JO7&050-aIApdbi}4orEs z%;b#JBGCD7Ah&|r&&X<0i<65oOF%31KyHGZB@2qz6ATOt?NGZxYvDohhpZ1?&lZOpZ}rap!3Q>;+%{Opi_$))EF5UKz(q~Tq>v!?gcvUgn^+Uosoe7 zbkPSf3GBUv898_1q#(I*W zZKf0kh6Y{+$eEp>Gq*r_5JZFA2QmW^cZjiDWHUf#f`Os}bS4<+j5g4jU?9Dq`DhRg zG6UpCNW3tD#vVZ4Lh&Q$d@zt1ptC?hW`NED1(igkZ>h1R%3P z;RJ~bMo<|GHXD?$K<)-{Kw||Uvq578AU}e}3P9~g&^cZZGZn#e=O8wE*#c@u?qOkI zxWK}|@B(BgD+7ZBD+7Z8D+2@QOwSZn28J3|28Ic&pmLtT-4)<7Qc&|H$Vgbe!M6WL zjDdlTTL98lVL&@a1f&>d&6Aqe_0=3aVWh-bN2GoZHwE;nGWl$Rsv>rt`Vrs zmj^xHvl-HlY?#6TY4a@v-E#pNr-YuJ0$S4pIy>bWbo>|8CIz+eKxGeTEjSl+J)aD8 zEjTETfzCNGfs6|`xI@>12Sdk)qoL!%kTwr!yaP0@0vi7Toreor;|UtO0nwl_n|cOb z2GCd!sEz=QJ%Gl4K;t2xHKd?%2M`908GyzlR2X;}Kp3PCbZ)2`xcvo-S4e(h1hsR) z=?7HCg2E2OL7vY8^#eiWKd24^^&LR<5U6hen$H8Z{Xz42pm{w|xesdVgZ49m`pTRP zCSdy@=RJbXctqF_s=pv<75{m$ptF5I;R3>-@CEIM1&wil+z2{b14M)RGAp2W2Hap} zVEDtzz#ziLzyLa<$$^c5A%+do2cSj#gUWDNI|G&`VPObz8yf=yTNwjpxdze)nl}Kc zg~^ZPat(IJ#|Ka%WMDw*H83!+Gcd4$&gKP6<)-G9I_Kx5CYK}@1q6km-4hT4bY5x^OgS`Di>jHodYd=L3>c3 z#)9Vm*g)sd!rkgrTAYlykObybuv@<{GB9K?F))Di!}P%1%0eZ#!uB@p05$kP`_y0# zWdN_QU;~w9aJRz3)e-JYusatpF)*|+GcdR?FfhQ>gW4$|BU$0@#JC@B@d@6?3M#8X>7KZ}0$Do(3O|q@P+bF>3x||(q@6*I ztF8f!>vA&4!Rr=K-2k%(lII!0;Xjws2>Be2Q+65vIo=#0o9qH zeQBV&60}wXR9Ax5ia^W<)!m?a9$_}sL?lfrZ3S>6u z&I*tpKx1v7as+fH9H>qKwP!$OAZW}AlukioQ=oBI(0&DL=spF|`gG8|HfSA!3H;16 z(EJjprUZ@GfX<}zXAoqtWq^zqfoQ~8!=SJLwGSbAU|`yZ5ljpWkTlQ807}oGU;?FA z(7H?z8(aGj6i%SHA+%=@v`!z?ZUmi6uEoI6)Cg@Kg4%_kGxnB3+lQcYwn5>03fevd z?E^7oU}*dc-RA+?-vMeDg6=E@t$zWv18o@?8eF06zgXyAK+squXnjB%=sacyh9=OM zBj~*IL(ugA*P-hHK<6@p){Xpx-U$L4JM;(Lfx-k{571x*o&WcS&i^Mv=l?lEy)8RnYuZ2m>#JKNN%7x1c#NP}&D!P@5HW-XLh76sTPb zVyi>%ivYDq2!r&4XwbeY(3~pBUeJ6h=$;6W9Uu%c z2Q=3SYA=KGABYC+s{&z=n=t3uK=;Uk(h_JN4~Pb(uM*ImMr;fW3)mPKPOvdBJYZvB z;9zH90Nq{W!p^`D!_L4^!VcNry@4IF&u29Lhfn-30j;HAgUnyT+W(+4)j{b4)E@!S zAZ*9Lz~%;>+hRZ(*8sKuLHA35)WYORY5x;D?+2=bNga0pxea~X0p>?g`x@jgqoBEBP+ba|BL=M_1<|1X zCy3?*-)U;k0BR%1Gbk`9GAMz^QbFyIG_X4n=QJU=575m9^>IOFgZj82vq9|+(ES0R zzAnNJZE(AQmq8XxgZikTIvaF{G05$p{^|*K28KKA3=Ch`85lS?Ky6uOK~NZv#{bZd ze^5Na@&@RB1yG!W&UyyXAPkzShSCh^`5$!VCrmA4m8W^$|e&7*YEOC~F2lU1BtO_?iJw-{T4c149BM0|Th-1^FaMRklPUY z7#K=Yb3sGnWZh{83Ug5S!Ny8K>qJ22bAt#dW@cbu^Mv+0!QtRsnp09*1fJ6Zxf65; z254>;qz9%BD4ZCIQ%mBJ+)0jI zpfVOVuL8Q~4-~f`dqCYtP`d`imS+bV{S{EZ1vG~P>aT!it3mx0Q)v4d zG}8@gUxV)Ef!$-|z~IOr%CMC|ltBYL=PU>w*F?;bLE?y!0Tf>#`;q+v8k+^V1=I!y zxe?R`hnNj&`ytGLgfk;(3Ht{|HWmu;12J>esQ!kP+mQ5zn8yc|iLi1Ty$#F*z0(!ct_F?O zg2v=PR~>-b#-Q;dP@5Q3_JU~8eZ3%>lL0i(qrw1bBP%m-GN>|eGWarZGQe8n%HZ}m zsJw-w1x9dt02EfpZGG5y9caCnAauPLXlx5Keg|4(1G@hKGR6SvSAx!6F#xy0LH-1_ z^&#x0JnKw%FW>jRk$x?d1vHfX#E)W!#m;eqxmDZt0YKz4xEL$2OZ*2I)KeqB8G(QcE zZqOPTwisAD(>E~_R2GBUmmqzh@*kuYCQnNFkFEcYyw-sl_jG~Wh&~Pg%3Gj(3vn|e z1IYa#zar;bP}u;=TcCb3sI3Gl6F_supnfxGuOw)W7?N*6bJU>mIYX5E1RBE!nF(rp z)^IW~OyFc-0JX(IcQ;>#md&8D7itG6`+`@JI|r+vl)a$xQvkJW2Cq+stzQOZTQqra zUj?)V78FOIehLQ@0|SWv5Na=Meh#J&6h^TAA8h>}sO<-GKM2b*Ft9~I^}_mp#MN1l zzA<{81zZ0IYCD6>2Vpq|2DU0H*a3@Mhc@d-&=?7b z=41e!Kc&b3qLmp`7*rY5z~wz?O)$iri1q)V^Z_cXLHwu7LLRa6;l1vWFkC zUqK#ezXHfzE5PB3y$%7@iOBH}TB`)|2dIqzqCpsB9>fgLq7q2m4oX`feJ`MQPQm0U z&Hu<{LP%-_==xNYJN{sI0g`i`FsRKzYWoosx9H^uEU&=&tV^=6{g8lk;;(9H&4{Yp^!;6;Of1z`$@CRIq^zhOB94(-DTYsogSj za$Hi2L3<29X~>0%fnfnNL_JIms9Xe<#e!JMJy8E1BoAr_p~-{GJy^L2iZ?WQ@H{Z6 z9E6pB2zdsEf}&gokT}TM$l@s_ps`NKygiC|B1oKBu!4z!VGc6`13M!F!+EG5LFRyh z0Y!ZgL_KKl(hO$s9zBMKNa{g(30XaIe1Os|apf&)oPf$gV)8$zECjWQL1iJR-UGEu zLG>MI-6@C$wIM+?qMUMN;AD_ykb#b;fb0Ry8$i-MBLgfyfGRc69m}9(0BZk&!d48l z2Nv262GysaF%?jm1`-FgT|w<)Q2h#O7lX=2kUVJ3GiaV06!)NcZqQf@sLcx+YXRv4 zjkSQ(f%bENXwX??ptdk*&J)B3-Ng)Q6GQ525e7{LP$~h%2k2}=(EKo{Hvmd(ptGt# zb9sCWY78LXgIo@pLk77BwAKW2Z!~DW7LryO;prUYHrRYEXsik3S5W-|s{cXbNT9iM zZ3c#Z&>aY%@fXnf0if|0PK7wGFC!q8GK{pzFo5P=LF)n|K>aC322eaVm_ql0 zSTaKPWm_>q_GJe$GBAMdeGXz|U;wQhPlKw1CV`Q44oW`Ne4fXwhQ$4=PI`am)x$8=$a+t!o0Ee*&@}RK9|0 z3{d$BD(^w|gZcoV@)gtv0F|$xIt^65g6a*BI#8VkqCtBWLFyeDAm?9z*6)DM-GsPL zlR=CDWCAE*f$Az%u>15F3>oAZK(!@E9JKZWF&_YlKSUoF)Gh(p2?{SzeFJJIf$AI3 z9!rqDybPcej!kAeIE3Qth{gU&Gp#XqQCgV{wW{y#$Phm{S;@eexx6l8xC=sXApNIi%g z|DgI16nmih5ETEQdJq&Bpmj{3_y^I*@eisWLGcf&7a{H=J^r1*`4@ZqgYp9?{z2tG zZ2ksxP7Ek*fZBv08iYj{7}#Dz&-Dk-GrFXvC6?xZ`(~iB3Zx&z0qKFM1C@awy}Y0# z31Xm?fuJ@mDSa_ex&;{nIwuAc=CFB3Se*jervQ={1rbo}%fP_)4d!mWWN^ool=2JY zZ;(4-=@;TR?DKQT?OV`LDX1L_Y7Yo9Am-;laSd?~BWV9U*p;Aq0JO#t!~u;hf#wxK z`H+)gGDrxX2d{w=7IdE6hMR#Qf}4S%fSZA#0~F|BmEe6IY$ueU^>j&MQchxVd}2;! zaYhm zvoi2H5TqZ}7ghpA3RE2_;{eEGenah!B0_UkpnL#IyTYjX06c~VN)I4;Q23$A!`lKN zc~D;%O&+5!i;!nvfb?0J1wm!54HE5(57dpI za09s;p^t$9J=};Ziy(b^P#y$@Gc1fcK#76@l8-_5fUrIT16lbW6hgkHU?a+H86H5}45{pwI z18N{Q_ki}0u|f2~)Pmd$@~0ST{G!Y=fc%6ej}pJ2^noT1P9LE03s8K4+=q~7U`R;< zjju2Zo?vBQ*uw@s4}oDa)a@Ykpgf7J9@KsSxjzEBCKWU{Fc(QZC_SL4PhmhQf5-`I zSlb~2lz15!7(nAlAb)_cAp-;32dMqz%z41_E6k2PP&<(K3mY*ou<5Eop?FxlW+el30>oOvavCn0>IlW1w|FAWJ}NqChkVn=ml2 zb;ImSD#>%sFUSO)7L*rUQk0pO4&RhTTzoOo`0AiJkF1*3_J z6YTX7Y|$F1JOKF>gv}Tj*do;-?q&e*c?7RTfu{kGn{A-|NRU35T2MTI$_EJ?@c{A@ z$b5u6VqYG}FU0u+vaSS{wqSYa1gK#Gx%&iU1sI!y(loL^pzDHQ9s&7-g`0t43OD%N z9ENVFT9`j13HSpcPq{x}d9wu6NrIg71@;4ouwYxL#ui#-|c*4WL02*7l3{?wrqcoBmL3I(O>B0asS;4@-FbV8B2w?@PBcS$z z?nn$vEph=DtPKhS19ES$OeQw0|VqdFmR~` zpQl2WhqU=2^HeC}i45R%SfDZhSv)Pj2;PP#C%?eb*$Qa5fXXD0n?cx`fq|__11aAl zDjm;~)Ld}rq^6K|RtYT4z~&iaKm$C`xo41_AZ)|Hz}5n@7ww#qHGB*V68zxvu^3=# zK=A<5hi@F2)P4=fJoGUN*jjcS=%D&^X#E9JYs;W2}nH*3SW>O(0B;w9vjG*03!pa-w*N&X#P+HWFZ51 zKR9@gCurUdG_MDmw*$55K=X1|(6f<2XX=2~sDb9^K>JHUWBs80rI`$nbI(elb5o$P z3y?VIObgJyQ_#9?(3u#Zy^Emr7NGVyXs!)3cLkbjy9d?(45}YAMh_lSfu5HJy5A7A z4g++*A!r>2WX=dQCj{De2bvQC?V|(D34!JZvCRnuGl14~gZ7ky#^sRbaCjL&XGExj z*8+jU2{exe>5DRg?$!eZ69e+RDCi6hP>>me&dPPvvs&x3}`dOYPe9|e ziO~7WBq$A<=LEU0h!L{yw1g3|@3a&$XVg#!HFpV=2A$Oh+K&oJlb~5*(EKwf9wZp_ z89<}Mpz>UsL6kv@K?iiIA1GkK^A(_U3yMQw23`hi@d!FAPoF`UK?Hmj9!Q%g186={ zn?aI6oNXgdQkl!1W(`7AEbyaMPfE>M~V z(V(?Ypzr{Vzk~Roaqw)=oskR-450J3%orFLK<96P#=Sx3Z-Lh6fzICoozVzVp9YOT zP?`prQv*GhtAT-mp%A{#6?6}w2!jsjHdFApCu9s(kimdKkinb*G{z4~!+9T8{WP~t{VzXp`IKyIvo&YRUTFf@SN2)Y{#7#cu%z8jhbdcbCb z*1$As2S6sb2y+h2AVUP4qEfTz`!t*fuX^efq`KT=xlEW28Ou|3=P=~ z;4#OBUIxfLsi2X2&{^o9^FKlNrCw%$oP7@3HwL;l^&vD3gUT2XAG9ZXB?CjldjW&Hs~H%;cPN7HR|W042Dw9>5pvHe=qx7C+3BGBctK~UgU$m5$%D!$(EY2R zGx|aIuY%6#-^{?!06JF~bpI-7?FC33XpjC@28M=wMh1p$3=9pRih4T(Lqj993<90y zzmtKXp@orwVHX2K!&F8FhTRMd4bwp9(l9W9*Jgm+y#T6y2bA8)$iT3dfuUg+BLl-e zc-VtxwqRwL1GL_>XAop?WPs$y00uz@ZSeV>y3jl0q!={8WsxX@AA=}^33$I0C~hF- zRUiY1M(~Zme9+mR2r-ZzP-_I#e*u+o5H+AW3{+}@)PXRl3;>n0pmYIhQ$YHkjNrAh zAbHR{4rtC9#0H%q56a(%KxeQsFfbfuU}%8N)qu`oI0A|<2FO|Rpt(uVS@NJZ*m2OA z@C*zLC*a|Mel`Ut96)PQ_~2<24y2>brpQBFJH& zv+hA|0iAIV>c)Z2xCglfbjCd>Y#c2s#5nA0BR?`Uld-Vubh8Kza{=3}%3wgAXzr zbk03!odYN@fZ81(J}8_(G-&PHJJ8+53=9k(85o*C_0SgvhK5iE28OSobM+Y*7``zu zG=SQu-x(Od_j>+fU}&giU|{&oz|hdez`*babk05l1H(VKTOpxk%V5V~&j30L0(52r zXl)Yu8YEEK0F`-=GiE{I1xiDZz7!(^sC)-`1w@0&V-TB>5pu@}Gb5xO2MTkLK2TbL z^m8EVenDXg!mzaxpmlzrumG)Z2en5*VF8La&^kX*9RQk(1ce2tt^>6IL3JIdoCM8t zg6!ahrc6*C0-dV@qIto4WFTdA13Lo)q@ThF?z4dG2DLju=ShIv4O))}vLDp`2Mtw# z_NajJ5oqlk$Uabi05nz#YWG_}&eCcCo$&%{_xmwG&O!sNGX%B!L2H&k?S9ZX*r2uB zpf(_A-E}LZe+X{-f!h1Cp?fozftE2dFf_pKMgiS(2|D}aIArX!;S%(08Bl)$)Gi0D zaR#-&L2I)>?QiHk>5ZWCnL%s$WT9u`=|RuLvxc6D0y-NHw6+4Y1|QV+&4rwa($EAw zA9yk&WDVB}=$$EBp=YEVgWin-YBz({MZAWdkpemc7Sy%{os|MwD&jeYs z2b${xwP8b;z-#py6PX}u^ztBgrZj`jN&&4oSPwlL1vGC3YO`L2o{jPWdN#^m=-DV- z(6dp*p=YD$L+?g$fZmM~$jrb1YNLVfMgg5~S`57lrIDF|p`3xCsULFpNy`~#1_sc* zqBoft7(i`^kIaxZ1QQE*o}xjPg@K`&fuTW*g@K`kfuX^ig@K`!fuX^Lg@K_Hl=oN| z7(nfWWEKX7J_d${5*7vqP+i}|!T_2jZF5rVgt`DH8is^ zFo5cn8ElYxWhEN}1E@YZ2s)RAfuZ3%8~Dt!hF5HmyGeetLGC6IfZk0a2fdp_A9^>5 z4fJl35OxNJ%M1(+N$d;^S3qSHJLGPXK6c36B#YT0cav;nhulqah#hh_$$56j-6YT1 z!FP}}er1Q;J;KHTxqC!~19JC>DF=8yt-+TAa`#9a2Y6j`Lm3C;?vWM_NSQm819JDs zVh+e1BU?Ba7~V24G+g3<+%*EaJuSsg~1C4VtFf@Snr2S-IXvpDYU;vfDO`MQ27&HzJDub7CGBEsw-faRZi%)Sf zF#Km=Xt)Ea*cllb-f=Q8fXYwMcs&y%LxT_(0|TfWRpA1!V`?ztVqjopWN2^(9R$Y6 z(BRJnUgzBq&BegL!N|~%$Hl zNFKxn`MHw;GR^`DmmmgS2GG4FAa{b?1X2e&n+aqm$S#l_;S9VCpuLqKb3y)3X5eL5 z#K6k{;)C>o`~z|u$PXa1K>8O$!yaS~$Xrl(g4BZcPlC(?nH|Z%%dm!lmjQHE6UeQg z^G!kF4YCu&2E|_(124l$2402;=p8g5^FVq*=7HECvq0;TK^PRLAUi-|1EN8G1<@e$ zKxb=%;t7O7`atmo3U5$+fb@d&fYgJ+4bmS2)mNZ?c?PI~#lXPe2kMA2Ffeq0`YYTF z412g47_M+LFnr-=VBq0lV9?=VU~u7KU`XL%V5s3?V3@$ez_5acfng611H%;_28J&@ z3=BNH3=Af`3=BTJ3=B2A3=C6v85p+kGBBLsWng&2%fP_G$H1V&$H3si$H0)n$G}j- z$G|X$kAYze9|OZ3J_d#_d<+ac{0s~#{0s~p{GfipX#DdsfZ`8?=@zZUAQNH&Om zUnqYn)PJ#1a}8nsgVLo?@&Et-|Ci#_|G0sLf#DA`14ALyouGCBsEz&8sCD9sCX&snH`&^S2AJWXhPU4@3DBQ%^^q2jRcbA{?lg_^e%YEL56+?7!AS|}|D zHIEUh?<&-tE1~p9sQ(n9G^iZ~a?eR<{FOr8Aqu7U!t8_k6Lj_>NPRDq4{C3L_@z+& z7oqNFh1ypNbq6cdoVC#S-wKV7iBNaXh4G>30CZO)$lOk-J3wbTg7^oa@}f|46`|(o zLd~&-`hP1l{y1U&gqj}~W`IiPkv$lQt0^l%aCPF|>fU8p^=Q2Hd)J%6G4Bcb-c zg{o(Sir<9V`xI(!B-CAdq2aO-8h(4B;;?*g3N@z|YK|u~o_|8^?}Vxc-I)h+w;(jU zUqa1=<@>Ktb)a@INL?+|+=o#2--U*QDpZ{!lwS)Cr>oHLEas8@Ty!%@79Me8vU_4rT@hkozGr5E3L0nqXjIWMJ`NVnCP=k%p5BETGmNoQsvw z0CEIq00~JJ(%oTT1o<5#tpIj5T!8~9+CbqCmTv%sEr&f@{qO)_@D#`7c?#k*900z0*!lu+6ka>Gtj6TX#5g1<_Ovc3u=3S z$Hf>J7(nwUpm`q9o*vK~AZUybG=2!0+XBtmg3kK+13Jfyk%0j;rwxik(B62^zAVrg z`QUj#(AnppGj$jtlLkGE3=E+CilF_WpnLQRm>3vpm>3v9>yoE{_Bk^#Fo4d-0^M~6 z8hg3G#K3R|dbi;hP@FI`Fo4dZ1)W8!!py*6z|6p4!_2_o!OXxA!py*szzo@I3|b$( zg_(ij0QBC&8_>HCKQKe;Zw?j)1`!qp1_c%d1|1d#1`8Gj2GCea01E>{3=0E81`7iN zXbc6E7J6717-m54tpe5mpnGOcurM%OVPRkZt$%&P!ocu@g@J*Em4QKkm4N|tX14|_ z1A_@G1A_xA1A`AM149HW0|V#|8ql4wpnGUQYm=w2GB7M)Wnfst%D}LLm4V?1D+9v? zRtAPUtPBhSm8EDy@Rg3yJ>nML43o-#pWu3`+DNb&||1_lNOCP@f= zA>cz1or_Wvi(IhjgUCbmC4<%;Anap7I=CL$9u@|OdV^%pIgAkXpuI~h4A>XZ!1O}Y zK=r0DFbFX~^k#tWMS?E$g{g&zLDi;$=G`G`|1g2dA-DXZTtnz8T9BI|VE~bX>PZ8Q zQ$zHmfbJ#*EfVv|EG|LZrI1<-UC{=!6QT~H-_QVbwg*H%DF3lAaVjtEw1l9eZwhyT02Vrb#hp8CI>%-J*5N|oTxIjxG zL^%d2BOrO%&9AO8Q9XZ8iP9R+_`K3uYso({jNaYSh4OFi&qKpNlF>bUn79s{w zYh;YD2Xsa^H)wUSbAC#ydupCDc&Rd^xP_Gi5H(P}CW!I|baxInsH_c0EXfE;%&da? z4yF$x57lRi&kqTUdQCrf|A4{m`<2mA@WdtmI!^I_8M59b7Ed{Y7Sf@ zOdmuZstVI!hl1lMbha2Kf0!-f{F5HX0m43Yc|>hG|D@+@Q(yia~2Xs->#-w-*d9wdK* z{KAZ8K12+n*1!zWh63exX4u9BESG1&!VRJhs^1);A9Pn0L_hWmtzh~g>Y(~95a9^A zLkglF^O7l;UWgi~UQ1BCL(&}Rz9nWXaRw2Gs!v4N1-jpenLwOD)IjwnA>s@ae!N)1 zloy&dj8hS6L2Db()k4G|<{GCV)Pl@q#9}TZ)La9kHYVuobw&p4hqJ@N3Ze#LkAV>) z|A5jxL@(l?aF`y598`}nLJ#O1F-Ek*#bJ6Na!@@csQzKc;vaUXe+-fG9B4d%9qB+| znAs35&VfrvxZC!@NBi2-uBCd_P5cr!uWVql7@mII5sIiP9{ zk^42EF$^@dpmGkb7AY-&?BhgJ3lW35Hx1!G(0O*8umkRp{09+-s5de|s0YOXCj;W} zH<%wG;!yR5sD9*U@B|+=1XBxg3qRD4CPoOgAph_)Kn@LpsfCC^%r!x3gMjt|@Iw#q zfvJUvLDeFq572rWezfp_h(XnwBGMnoZLHw*jyN0xWq9z30;Ufl57n23&p@(4ut84sDtW9YL|lc4VEQ2PP<=@4QqVp*us*a+bTEAod8ocb zL_C>*))Rok2m2;7n0|;lsD7k!8niEr2TQ#S5r?Wr8e;;@9rF;VmmzAPdXdUvP&vSb zmTn2;n}HK(88cW9%zW(jsesmzfz^S= z{6XUtJKoO1V_$kvVlIQBi=nBTnI&ik3IhXv^A#8rK;zd8ka2R5*EDo-`X{X@H=rmp zFFCUyF^9pz$l1lo5!6xwJCA@p(hMh{qYn?bLFXMXFmxDA$K{W-qFhi&LIwvJ+*~Zp zEDa1m=SqTX!tWmq$RrhL-#By*^~U8Hxa>iSpWxJzlFYpHVg_eN3jDC|01=HRjmb^|zrrJ0eXk)spn$WM?~0^z0%o@W6m1g*UV#lOSxX}Ih_ z8DU^BFf+0=b#jE92ujE=stlk$Ajlrr{jU-nIKvHU54b|`%uCB>uy8hYF?2EnEo%lD zLBLOH44`=)kisL-`O*W4IMX!P67Z=YE|zW@l_aL*Gng0}o4A=d!xA+9bRY+b5YSpgs9i6f z;!Mv_zvzJnVM_9gobyvM)AJeJTrA9;EzBXwjzAnq!R?EH+Sh>FzR;4)oYZ0l0~beU z3u90!(A}l?5ft8_ut(ay4dQ|^NDd?pyGIHv2qi#rp!-GO5d{?oQ6M?c{4}(f2MNJ3 zNDj3B5wuqYBnaYzXb=XmLH7}Z=DR_BP&o>sK^PjT}93tD@JO&@4p9Cmjty1oP!$i91!KF~P?AR2^0?(Ak^V6X*kVgld)1`>r} zkR0eN4w(PY^}*^xkZN?fN1(GSKn7qjQ;8S6W*?*tymt`HfYy0ec^Mc$bNe7MbTcLS z85ltOLa@n!&IN?UEvP*QQUk&uCxFiT1MQ~)@zLeD1rXr^ZBBrcfy-Sp0S1N`kO2&k z{gYq`s5>VKg726D3!&@VF9=WOp!r;|8V~_83Up@<=&mLZAG#D6#01+1y2A#v?*=4* zE(f}U1{Uw=a-e$_V9Q0I(FigEY$oWQ1lT%KbUDy{0WdR>(>}Naw8S5zAA~_>s){l&fcAKS_@I0WqCprW=OPL@BM-z!m)j`{-Xjl^ z0&Noj(;xz*?>injQ!(87it)&86k}jW1X;kqfMK7IIB2guL=xSd(&C7;gf8bM&cJX0 z8X)L$pfem`=QqI8Fvtdw|3K#!z|P=9mjj(02|7a(q!wKcv^N}d)&Mp+(7tNWxdqtd zK>L|Nd%m#Af%X)`8vp3_f%XK0_LpPR2iofkJ0}WVA85ZPq{RxFs{rYSV36NI`!69i zCZ-%{KO`(qqnioZ+Xz~(3^EB_4zxEBc76=H9B7XptlUJG1MTC3lO`nIPEg z1KmLj%bTFJQ6M!S4Dui74q4D1d=MX9uGg4>K?Ld;(4J0^8W0BQ1D)XvZBj9S_PK+^ zK^P>r(UgG!wD%RnN0$Sgn+!U$0h=7?jAB?Fhpx}njDZ2P9uTAtw3ib^gD}XxG&2Uc z8_?xS%nWCa7d9G^J@11!v7VE|GHa*L@sq@N7pBg-){ zFfoAYP0$KySYI{K9I{Rkq!uOyq6Ha1E8ao-JXsjn7}yy=`z*N`co=vY_`&<3A!j#$ zZmR^D3Q`ARgD`{-Vu3KoTsH;=22lF|w6^Uf0|NtS&p2p5IOyE`yNnDBd`u7w8h-`h zGA0HF(7LpbObiTapnZSL3=A`o@JVI{1{bTCFvp-6P$v`7T}S64dWSLa-n*VlYH?ZA{TK zWXvj^cR>Z6M7+ zSbagN*0iGB0@&~@D7BNJALLnRK~AA3pab7A#n6FOiUK9AC^rRk9wBuMNruKd39*u# zpOTuMng_Y_mGZD9!v)}p&y>{SWHN21h7VB9pd^8$73G2k4k3|BMrfcUb*edp5`$8p zbHwCE5j1SciQQ805Fbb_JBdeHcW7ZU@x&j7ls3p6$X8WRKc*FbwZK2b{zwxAK$?Unqy{Q zc*G1kr-*?;n*}nr)(zd`vy6p-0W|)V%>q78kpXm06vzxv)e9O+0=3UUXSRU&L>0R@ z;vdw{1?_nO?a=@Yc>6;Q{l&q+ki!f<{|o}R*9yqIHzEuS4}=&PK~#K2&~!oZ*b+M~kAzyP}cXa_q3gAWUYU8BOl@Ph$z_dIA*QV&09JR8*H zKwwaqgZi^`85kHq=gol5I0VHNsNW4bmkYG!2y|B(=$^Fc3=9l2AZL0p%wk|*0G$s5 z+7kr2vjue45U3vyIv)r$ZUmYY1kDM7;u#dTpy3oyUlr6x1oiho8z4Y&3`!@U-~**8 zP;U-2&I*b{Q2!Rx7YFraLFok)=Af{)WMBZFxClD)4YXegG&TY{TC zpbr{T2aU_RLhgNI0Np4C+S>#gR|ef#4LVB`)Ti|Y?ek|~U;v$46aYEn5Okj#1L$5k z&^R;b93#-Zc%U;kBS2}J0eo*81L(dv&{#9*oV_>(28MVB1_sccDbQF{5(D_mLI%*@ zaL^g|pfmW=L36nbkaPS&XZC~6Km*OSf)14hoz)N87g7K@laB#(Q3xncfX-?Jozn>F zmx9jp1ntEF?a>9D*8@7w4|J9v=p3aw2Jm??ptE8?XU&1n7zCaD2|5=Gbf!-m0|P@l z1NclB2GIR?pz{ns=RNi?Fff45U;~YPgU)>f?ePNbH3g0F5EJj9G=nYfL6b9}DF#s9 z1LbGX+_y61Odv4mxiOlm>9cJt*IU;vZB-j$-T~0E&Cixv1D>M@2_NU^E0q RLtr!nMnhmU1cqY>000L8A@=|P diff --git a/ServerExplorer/ServerExplorer/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll b/ServerExplorer/ServerExplorer/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll deleted file mode 100644 index d26bc2942881d2cb854cf44cb58293f27b8a516a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4608 zcmeZ`n!v!!z`(%5z`*eTKLf)K1_*F~P zh~WVPlOi`G2Ll5a0|NsaMD(2o0|SEs0|NutVGa;B6U5yh6(IM6XaGB6ZeU}9ik(f~zvJ|_bMS1}g@0~Z%t14uPQ z54Sc0JIE|X25yMA1R3f;5znQ~z^0|dz|;WZXbBrY51R3g>85mf=@?phn3=C`< zJPZt6CCm&AObs9zEjcC)UIqp(Ed~Y#r(iE9MyPK=!CGddXP{?lU~Xg%@;EC)4g&*2 z2onQ?avcN10VW0p6=nto<=~Q{%)Inskcua)3=BRD3=GPl!3+j$;8ez->>ldr0t#<7 z28IYm1_ouPoctt^Vu<@0!$lV{a)S83RE-(Lz~RHd&%glAhoB_L4hb^`UIqpRkUEeU zC^|tjDEdKh1LA|i8N>!^yFc>gugVGP9B?A)!69Y3C zgTju5ft3N2+t?XcK;;!EEx_>sMo8v`2{1CmfSDlQf*Ih{kqTql_~xgS=A_y&1Qg{L zq!yKArWWf3r55Lx7A2<^>$#*BXQt<+7U?Ay>!sx6Fu-LPf>VpiQj1(G3Ucy`Qj7Eu zx*38~OG?1WJGVGFzbGd&i6OYMxFj`~!9OW0HMs=J({s+xOUq0zElMoO%+F(REGWpy zOa`-I`kfMsQ(=k`_QF`ciFt|XsYMJ$P`COf=D`%Z=j10P=44iZO=EB_%_%7@O7+Z3 z%ZDq5iZSRVm*f{Qq^Fj|qZbK%xAxTof&7A2OXrhsG+=0T!L&m}W4 zJuknwBr~~~!6h}RG(A1F$S*%Hv^cd0RXxaAAn(A9Ll_m5nwDCWnwOmFT3DKxQ_K)j zSpfG9i0zS>my(mp;GS9n;<**&=R!rGZU{kd^)ZC<;N^mec!Z=WMASdMK zrRJ6R=BK3QFu0~e1=kn zB8Frz8)R0Mv!&|Z2elrHoh-ETde^^W;MiUj6DDc$pp%(Rh?kj7NRU~9fsuuQL5LSb z2(mITG71T@aDez63_^m;Y(hLB2_BFT4~qgLBL}Mj6C)p=10#bmG(cc!xmYhGKR>5f zFSw*AKQBF}5){lSFiEG<%$$_eB6br!0}y0jU;$MHtPD&{GBRuoj6#}%x-1F|LWXQ0 z(}fJ#*_nlSg?O1**cpWcSrr%=1uZ!k!Hon4hDb&RZ{N)1qWt3gv=Y6r%;M6-oZynu zl+1iRNSGJv!NM0_p1=fxGxO4OQr$9hQlTj*zlg&S>>@n_1_qFAJj@IXj35`;3fXcn zLK{VLp!y?(Ni4i5vA{1s&$S{swE&b-LNY+{&d9)U0NO4Ah50=Y8(i*#c&HfGenE)F zJLea<;8rw}G$^(h7!0t8 zgA{?s3~P|8s5ML`3=9lm48aWX3}Fne3_%RR44w@B41Nsp44w>r3~mgN=Kfxm z_x~U*AdpE23~D!mc%b$UlCdBm22k6Iks*vBk)epejUkf()b{aY$YV%j$Op@-fO|6` z3`Goy40#O23^@#m44{0S&yWX}XJFXC!ovizHJG7hCHxIdJM_naxH}+2i&S + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.btnExec = new System.Windows.Forms.Button(); + this.txtCommand = new System.Windows.Forms.TextBox(); + this.dgvDatos = new System.Windows.Forms.DataGridView(); + this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.btnGenInserts = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.dgvDatos)).BeginInit(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + this.SuspendLayout(); + // + // btnExec + // + this.btnExec.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnExec.Location = new System.Drawing.Point(532, 66); + this.btnExec.Name = "btnExec"; + this.btnExec.Size = new System.Drawing.Size(75, 23); + this.btnExec.TabIndex = 0; + this.btnExec.Text = "Exec"; + this.btnExec.UseVisualStyleBackColor = true; + this.btnExec.Click += new System.EventHandler(this.btnExec_Click); + // + // txtCommand + // + this.txtCommand.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtCommand.Font = new System.Drawing.Font("Lucida Console", 8.25F); + this.txtCommand.Location = new System.Drawing.Point(3, 3); + this.txtCommand.Multiline = true; + this.txtCommand.Name = "txtCommand"; + this.txtCommand.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.txtCommand.Size = new System.Drawing.Size(604, 57); + this.txtCommand.TabIndex = 1; + // + // dgvDatos + // + this.dgvDatos.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.dgvDatos.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dgvDatos.Location = new System.Drawing.Point(3, 3); + this.dgvDatos.Name = "dgvDatos"; + this.dgvDatos.Size = new System.Drawing.Size(604, 338); + this.dgvDatos.TabIndex = 2; + // + // splitContainer1 + // + this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.splitContainer1.Location = new System.Drawing.Point(12, 12); + this.splitContainer1.Name = "splitContainer1"; + this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer1.Panel1 + // + this.splitContainer1.Panel1.Controls.Add(this.btnGenInserts); + this.splitContainer1.Panel1.Controls.Add(this.txtCommand); + this.splitContainer1.Panel1.Controls.Add(this.btnExec); + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.dgvDatos); + this.splitContainer1.Size = new System.Drawing.Size(610, 440); + this.splitContainer1.SplitterDistance = 92; + this.splitContainer1.TabIndex = 3; + // + // btnGenInserts + // + this.btnGenInserts.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnGenInserts.Location = new System.Drawing.Point(424, 66); + this.btnGenInserts.Name = "btnGenInserts"; + this.btnGenInserts.Size = new System.Drawing.Size(102, 23); + this.btnGenInserts.TabIndex = 2; + this.btnGenInserts.Text = "Genera INSERTs"; + this.btnGenInserts.UseVisualStyleBackColor = true; + this.btnGenInserts.Click += new System.EventHandler(this.btnGenInserts_Click); + // + // frmExec + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(634, 464); + this.Controls.Add(this.splitContainer1); + this.Name = "frmExec"; + this.Text = "frmExec"; + this.Load += new System.EventHandler(this.frmExec_Load); + ((System.ComponentModel.ISupportInitialize)(this.dgvDatos)).EndInit(); + this.splitContainer1.Panel1.ResumeLayout(false); + this.splitContainer1.Panel1.PerformLayout(); + this.splitContainer1.Panel2.ResumeLayout(false); + this.splitContainer1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button btnExec; + private System.Windows.Forms.TextBox txtCommand; + private System.Windows.Forms.DataGridView dgvDatos; + private System.Windows.Forms.SplitContainer splitContainer1; + private System.Windows.Forms.Button btnGenInserts; + } +} \ No newline at end of file diff --git a/ServerExplorer/frmExec.cs b/ServerExplorer/frmExec.cs new file mode 100644 index 0000000..e5c34b8 --- /dev/null +++ b/ServerExplorer/frmExec.cs @@ -0,0 +1,148 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Data.SqlClient; +using System.Globalization; + +namespace ServerExplorer +{ + public partial class frmExec : Form + { + private string cnxString; + + + public frmExec(string cnxString) + { + InitializeComponent(); + + this.cnxString = cnxString; + } + + private void frmExec_Load(object sender, EventArgs e){ + + } + + + private DataTable Exec() + { + SqlConnection cnx; + DataTable dt; + SqlDataAdapter da; + + // Establecer conexion + cnx = new SqlConnection(cnxString); + + // Obtener resultado en un datatable. + da = new SqlDataAdapter(txtCommand.Text, cnx); + dt = new DataTable(); + cnx.Open(); + da.Fill(dt); + cnx.Close(); + + return dt; + } + + private void btnExec_Click(object sender, EventArgs e) + { + try + { + // Ejecutar consulta + DataTable dt = Exec(); + + // Mostrar resultados + dgvDatos.DataSource = dt; + } + catch(Exception ex) + { + MessageBox.Show(ex.Message); + } + } + + private void btnGenInserts_Click(object sender, EventArgs e) + { + DataTable dt=new DataTable(); + DataTable ddt; + string destname = String.Empty; + NumberFormatInfo nfi = new NumberFormatInfo(); + + // Preparar un conversor de formato numerico que use puntos para los decimales + nfi.NumberDecimalSeparator = "."; + + // Obtener el nombre de la tabla destino + destname = Microsoft.VisualBasic.Interaction.InputBox("Nombre de la tabla destino", "tabla destino", String.Empty, + this.Top + (this.Height / 2), this.Left + (this.Width / 2)); + + try + { + // Ejecutar consulta + dt = Exec(); + } + catch(Exception ex) + { + MessageBox.Show(ex.Message); + } + + // Preparar la datatable destino + ddt=new DataTable(); + ddt.Columns.Add("Comando", typeof(String)); + + + // Recorrer la tabla de datos + foreach (DataRow dr in dt.Rows) + { + string strColumns=String.Empty; + string strValues=String.Empty; + foreach (DataColumn dc in dt.Columns) + { + // El nombre de la columna + if (strColumns != String.Empty) + strColumns+=", "; + strColumns += "[" + dc.ColumnName + "]"; + + // El valor de la columna + if (strValues != String.Empty) + strValues+=", "; + object valor = dr[dc]; + if (valor == DBNull.Value) + { + // NULOS + strValues += "NULL"; + }else + if (dc.DataType.Name.ToLower() == "string") + { + // Cadenas + strValues += "'" + ((string)valor).Replace("'", "''") + "'"; + } + else + if (dc.DataType.Name.ToLower() == "decimal") + { + // Decimales + strValues += ((decimal)valor).ToString(nfi); + } + else + { + // Otros + strValues += valor.ToString(); + } + } + + // Insertar fila a la datatable destino + ddt.Rows.Add(new object[] { + "INSERT INTO " + destname + + " (" + strColumns + ") "+ + "VALUES (" + strValues + ")" }); + } + + // Establecer el resultado + dgvDatos.DataSource = ddt; + } + + + + } +} diff --git a/ServerExplorer/frmExec.resx b/ServerExplorer/frmExec.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/ServerExplorer/frmExec.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ServerExplorer/ServerExplorer/frmPrincipal.Designer.cs b/ServerExplorer/frmPrincipal.Designer.cs similarity index 100% rename from ServerExplorer/ServerExplorer/frmPrincipal.Designer.cs rename to ServerExplorer/frmPrincipal.Designer.cs diff --git a/ServerExplorer/ServerExplorer/frmPrincipal.cs b/ServerExplorer/frmPrincipal.cs similarity index 82% rename from ServerExplorer/ServerExplorer/frmPrincipal.cs rename to ServerExplorer/frmPrincipal.cs index e3f63ea..396723b 100644 --- a/ServerExplorer/ServerExplorer/frmPrincipal.cs +++ b/ServerExplorer/frmPrincipal.cs @@ -19,8 +19,8 @@ namespace ServerExplorer private void menuConectarPRUEBAS_Click(object sender, EventArgs e) { // Crear ventana de la base de datos de pruebas - //frmBaseDatos frm = new frmBaseDatos("Data Source=SSSRV3;Initial Catalog=PRUEBAS;User ID=sa;Password=SLsssrv3"); - frmBaseDatos frm = new frmBaseDatos("Data Source=DANTE;Initial Catalog=BD_AlfonsoRodriguez;Integrated Security=True"); + frmBaseDatos frm = new frmBaseDatos("Data Source=SSSRV3;Initial Catalog=PRUEBAS;User ID=sa;Password=SLsssrv3"); + //frmBaseDatos frm = new frmBaseDatos("Data Source=DANTE;Initial Catalog=BD_AlfonsoRodriguez;Integrated Security=True"); //frmBaseDatos frm = new frmBaseDatos("Data Source=OSKURITO;Initial Catalog=BD_AlfonsoRodriguez;Integrated Security=True"); frm.MdiParent = this; frm.WindowState = FormWindowState.Maximized; @@ -41,7 +41,7 @@ namespace ServerExplorer OpenFileDialog dialogo = new OpenFileDialog(); if (dialogo.ShowDialog() == DialogResult.OK) { - CodeGenConfig config = CodeGenConfig.Cargar(dialogo.FileName); + Config config = Config.Cargar(dialogo.FileName); // Crear y mostrar ventana frmBaseDatos frm = new frmBaseDatos(config); diff --git a/ServerExplorer/ServerExplorer/frmPrincipal.resx b/ServerExplorer/frmPrincipal.resx similarity index 100% rename from ServerExplorer/ServerExplorer/frmPrincipal.resx rename to ServerExplorer/frmPrincipal.resx diff --git a/ServerExplorer/frmProcedimientos.Designer.cs b/ServerExplorer/frmProcedimientos.Designer.cs new file mode 100644 index 0000000..de12fa9 --- /dev/null +++ b/ServerExplorer/frmProcedimientos.Designer.cs @@ -0,0 +1,138 @@ +namespace ServerExplorer +{ + partial class frmProcedimientos + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.lsvProcs = new System.Windows.Forms.ListView(); + this.colNombre = new System.Windows.Forms.ColumnHeader(); + this.colFecha = new System.Windows.Forms.ColumnHeader(); + this.colTipo = new System.Windows.Forms.ColumnHeader(); + this.txtProc = new System.Windows.Forms.TextBox(); + this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + this.SuspendLayout(); + // + // lsvProcs + // + this.lsvProcs.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lsvProcs.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.colNombre, + this.colFecha, + this.colTipo}); + this.lsvProcs.Font = new System.Drawing.Font("Lucida Console", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lsvProcs.FullRowSelect = true; + this.lsvProcs.GridLines = true; + this.lsvProcs.Location = new System.Drawing.Point(0, 0); + this.lsvProcs.Name = "lsvProcs"; + this.lsvProcs.Size = new System.Drawing.Size(262, 369); + this.lsvProcs.Sorting = System.Windows.Forms.SortOrder.Ascending; + this.lsvProcs.TabIndex = 0; + this.lsvProcs.UseCompatibleStateImageBehavior = false; + this.lsvProcs.View = System.Windows.Forms.View.Details; + this.lsvProcs.SelectedIndexChanged += new System.EventHandler(this.lsvProcs_SelectedIndexChanged); + // + // colNombre + // + this.colNombre.Text = "Nombre"; + this.colNombre.Width = 120; + // + // colFecha + // + this.colFecha.Text = "Fecha"; + this.colFecha.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.colFecha.Width = 84; + // + // colTipo + // + this.colTipo.Text = "Tipo"; + // + // txtProc + // + this.txtProc.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtProc.Font = new System.Drawing.Font("Lucida Console", 8.25F); + this.txtProc.Location = new System.Drawing.Point(3, 3); + this.txtProc.Multiline = true; + this.txtProc.Name = "txtProc"; + this.txtProc.ScrollBars = System.Windows.Forms.ScrollBars.Both; + this.txtProc.Size = new System.Drawing.Size(308, 366); + this.txtProc.TabIndex = 1; + // + // splitContainer1 + // + this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.splitContainer1.Location = new System.Drawing.Point(12, 12); + this.splitContainer1.Name = "splitContainer1"; + // + // splitContainer1.Panel1 + // + this.splitContainer1.Panel1.Controls.Add(this.lsvProcs); + this.splitContainer1.Panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.splitContainer1_Panel1_Paint); + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.txtProc); + this.splitContainer1.Size = new System.Drawing.Size(583, 372); + this.splitContainer1.SplitterDistance = 265; + this.splitContainer1.TabIndex = 2; + this.splitContainer1.SplitterMoved += new System.Windows.Forms.SplitterEventHandler(this.splitContainer1_SplitterMoved); + // + // frmProcedimientos + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(607, 396); + this.Controls.Add(this.splitContainer1); + this.Name = "frmProcedimientos"; + this.Text = "frmProcedimientos"; + this.Load += new System.EventHandler(this.frmProcedimientos_Load); + this.splitContainer1.Panel1.ResumeLayout(false); + this.splitContainer1.Panel2.ResumeLayout(false); + this.splitContainer1.Panel2.PerformLayout(); + this.splitContainer1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.ListView lsvProcs; + private System.Windows.Forms.ColumnHeader colNombre; + private System.Windows.Forms.ColumnHeader colFecha; + private System.Windows.Forms.TextBox txtProc; + private System.Windows.Forms.SplitContainer splitContainer1; + private System.Windows.Forms.ColumnHeader colTipo; + } +} \ No newline at end of file diff --git a/ServerExplorer/frmProcedimientos.cs b/ServerExplorer/frmProcedimientos.cs new file mode 100644 index 0000000..ca63deb --- /dev/null +++ b/ServerExplorer/frmProcedimientos.cs @@ -0,0 +1,118 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Data.Sql; +using System.Data.SqlClient; + +namespace ServerExplorer +{ + public partial class frmProcedimientos : Form + { + private string cnxString; + private SqlConnection cnx; + + public frmProcedimientos(string cnxString) + { + InitializeComponent(); + + this.cnxString = cnxString; + } + + + + private void frmProcedimientos_Load(object sender, EventArgs e) + { + DataTable dt; + SqlDataAdapter da; + + // Establecer conexion + cnx = new SqlConnection(cnxString); + + // Obtener un datatable con todos los procedimientos de la base de datos. + da = new SqlDataAdapter( + "SELECT id,name,crdate,type FROM sysobjects "+ + "WHERE (UPPER(type) = 'P' OR UPPER(type) = 'TF' OR UPPER(type) = 'TR' OR UPPER(type) = 'V') AND category = 0 " + + "ORDER BY name ", + cnx); + dt = new DataTable(); + cnx.Open(); + da.Fill(dt); + cnx.Close(); + + // Mostrar todos los procedimientos + lsvProcs.Items.Clear(); + foreach (DataRow dr in dt.Rows) + { + ListViewItem item = lsvProcs.Items.Add((String)dr["name"]); + item.SubItems.Add(((DateTime)dr["crdate"]).ToShortDateString()); + string type = ((string)dr["type"]).ToUpper().Trim(); + if (type == "P") + { + item.SubItems.Add("Proc"); + } + else if (type == "TF") + { + item.SubItems.Add("Func"); + } + else if (type == "TR") + { + item.SubItems.Add("Trigg"); + } + else if (type == "V") + { + item.SubItems.Add("View"); + } + else + { + item.SubItems.Add("Unk: \"" + (string)dr["type"] + "\""); + } + item.Tag = dr["id"]; + } + + + } + + private void lsvProcs_SelectedIndexChanged(object sender, EventArgs e) + { + if (lsvProcs.SelectedItems.Count>0 ) + { + DataTable dt; + SqlDataAdapter da; + int id=(int)lsvProcs.SelectedItems[0].Tag; + + // Obtener un datatable con el contenido del procedimiento. + da = new SqlDataAdapter( + "SELECT text FROM syscomments WHERE id = @id ORDER BY colid", + cnx); + da.SelectCommand.Parameters.AddWithValue("@id", id); + dt = new DataTable(); + cnx.Open(); + da.Fill(dt); + cnx.Close(); + + // Mostrar el contenido del procedimiento + txtProc.Text = String.Empty; + foreach (DataRow dr in dt.Rows) + { + txtProc.Text += ((string)dr[0]).Replace("\r","").Replace("\n","\r\n"); + } + + } + } + + private void splitContainer1_Panel1_Paint(object sender, PaintEventArgs e) + { + + } + + private void splitContainer1_SplitterMoved(object sender, SplitterEventArgs e) + { + + } + } +} diff --git a/ServerExplorer/frmProcedimientos.resx b/ServerExplorer/frmProcedimientos.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/ServerExplorer/frmProcedimientos.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ServerExplorer/ServerExplorer/frmServidores.Designer.cs b/ServerExplorer/frmServidores.Designer.cs similarity index 68% rename from ServerExplorer/ServerExplorer/frmServidores.Designer.cs rename to ServerExplorer/frmServidores.Designer.cs index d14acfd..9236ddb 100644 --- a/ServerExplorer/ServerExplorer/frmServidores.Designer.cs +++ b/ServerExplorer/frmServidores.Designer.cs @@ -43,20 +43,25 @@ this.lsvBBDD = new System.Windows.Forms.ListView(); this.colDBName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.colFechaCreacion = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); this.SuspendLayout(); // // lsvServidores // - this.lsvServidores.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left))); + this.lsvServidores.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); this.lsvServidores.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.colNombreServidor, this.colInstancia, this.colVersion}); this.lsvServidores.FullRowSelect = true; - this.lsvServidores.Location = new System.Drawing.Point(12, 42); + this.lsvServidores.Location = new System.Drawing.Point(3, 32); this.lsvServidores.Name = "lsvServidores"; - this.lsvServidores.Size = new System.Drawing.Size(281, 391); + this.lsvServidores.Size = new System.Drawing.Size(306, 386); this.lsvServidores.TabIndex = 1; this.lsvServidores.UseCompatibleStateImageBehavior = false; this.lsvServidores.View = System.Windows.Forms.View.Details; @@ -79,9 +84,11 @@ // // btnListarServidores // - this.btnListarServidores.Location = new System.Drawing.Point(12, 13); + this.btnListarServidores.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.btnListarServidores.Location = new System.Drawing.Point(3, 3); this.btnListarServidores.Name = "btnListarServidores"; - this.btnListarServidores.Size = new System.Drawing.Size(281, 23); + this.btnListarServidores.Size = new System.Drawing.Size(306, 23); this.btnListarServidores.TabIndex = 2; this.btnListarServidores.Text = "Listar Servidores"; this.btnListarServidores.UseVisualStyleBackColor = true; @@ -90,7 +97,7 @@ // lblServidor // this.lblServidor.AutoSize = true; - this.lblServidor.Location = new System.Drawing.Point(319, 18); + this.lblServidor.Location = new System.Drawing.Point(3, 8); this.lblServidor.Name = "lblServidor"; this.lblServidor.Size = new System.Drawing.Size(46, 13); this.lblServidor.TabIndex = 3; @@ -98,15 +105,17 @@ // // txtServidor // - this.txtServidor.Location = new System.Drawing.Point(429, 15); + this.txtServidor.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtServidor.Location = new System.Drawing.Point(70, 6); this.txtServidor.Name = "txtServidor"; - this.txtServidor.Size = new System.Drawing.Size(180, 20); + this.txtServidor.Size = new System.Drawing.Size(218, 20); this.txtServidor.TabIndex = 4; // // lblUsuario // this.lblUsuario.AutoSize = true; - this.lblUsuario.Location = new System.Drawing.Point(319, 45); + this.lblUsuario.Location = new System.Drawing.Point(3, 35); this.lblUsuario.Name = "lblUsuario"; this.lblUsuario.Size = new System.Drawing.Size(43, 13); this.lblUsuario.TabIndex = 5; @@ -115,7 +124,7 @@ // lblContrasenha // this.lblContrasenha.AutoSize = true; - this.lblContrasenha.Location = new System.Drawing.Point(319, 70); + this.lblContrasenha.Location = new System.Drawing.Point(3, 61); this.lblContrasenha.Name = "lblContrasenha"; this.lblContrasenha.Size = new System.Drawing.Size(61, 13); this.lblContrasenha.TabIndex = 6; @@ -123,24 +132,30 @@ // // txtUsuario // - this.txtUsuario.Location = new System.Drawing.Point(429, 42); + this.txtUsuario.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtUsuario.Location = new System.Drawing.Point(70, 32); this.txtUsuario.Name = "txtUsuario"; - this.txtUsuario.Size = new System.Drawing.Size(180, 20); + this.txtUsuario.Size = new System.Drawing.Size(218, 20); this.txtUsuario.TabIndex = 7; // // TxtContrasenha // - this.TxtContrasenha.Location = new System.Drawing.Point(429, 67); + this.TxtContrasenha.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.TxtContrasenha.Location = new System.Drawing.Point(70, 58); this.TxtContrasenha.Name = "TxtContrasenha"; - this.TxtContrasenha.Size = new System.Drawing.Size(180, 20); + this.TxtContrasenha.Size = new System.Drawing.Size(218, 20); this.TxtContrasenha.TabIndex = 8; this.TxtContrasenha.UseSystemPasswordChar = true; // // btnListarBBDD // - this.btnListarBBDD.Location = new System.Drawing.Point(322, 93); + this.btnListarBBDD.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.btnListarBBDD.Location = new System.Drawing.Point(6, 84); this.btnListarBBDD.Name = "btnListarBBDD"; - this.btnListarBBDD.Size = new System.Drawing.Size(287, 23); + this.btnListarBBDD.Size = new System.Drawing.Size(282, 23); this.btnListarBBDD.TabIndex = 9; this.btnListarBBDD.Text = "Listar BBDD"; this.btnListarBBDD.UseVisualStyleBackColor = true; @@ -148,15 +163,16 @@ // // lsvBBDD // - this.lsvBBDD.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left))); + this.lsvBBDD.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); this.lsvBBDD.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.colDBName, this.colFechaCreacion}); this.lsvBBDD.FullRowSelect = true; - this.lsvBBDD.Location = new System.Drawing.Point(322, 122); + this.lsvBBDD.Location = new System.Drawing.Point(6, 113); this.lsvBBDD.Name = "lsvBBDD"; - this.lsvBBDD.Size = new System.Drawing.Size(287, 311); + this.lsvBBDD.Size = new System.Drawing.Size(282, 305); this.lsvBBDD.TabIndex = 11; this.lsvBBDD.UseCompatibleStateImageBehavior = false; this.lsvBBDD.View = System.Windows.Forms.View.Details; @@ -172,26 +188,47 @@ this.colFechaCreacion.Text = "Fecha de Creacion"; this.colFechaCreacion.Width = 107; // + // splitContainer1 + // + this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.splitContainer1.Location = new System.Drawing.Point(12, 12); + this.splitContainer1.Name = "splitContainer1"; + // + // splitContainer1.Panel1 + // + this.splitContainer1.Panel1.Controls.Add(this.lsvServidores); + this.splitContainer1.Panel1.Controls.Add(this.btnListarServidores); + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.lblServidor); + this.splitContainer1.Panel2.Controls.Add(this.lsvBBDD); + this.splitContainer1.Panel2.Controls.Add(this.txtServidor); + this.splitContainer1.Panel2.Controls.Add(this.btnListarBBDD); + this.splitContainer1.Panel2.Controls.Add(this.lblUsuario); + this.splitContainer1.Panel2.Controls.Add(this.lblContrasenha); + this.splitContainer1.Panel2.Controls.Add(this.TxtContrasenha); + this.splitContainer1.Panel2.Controls.Add(this.txtUsuario); + this.splitContainer1.Size = new System.Drawing.Size(607, 421); + this.splitContainer1.SplitterDistance = 312; + this.splitContainer1.TabIndex = 12; + // // frmServidores // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(631, 445); - this.Controls.Add(this.lsvBBDD); - this.Controls.Add(this.btnListarBBDD); - this.Controls.Add(this.TxtContrasenha); - this.Controls.Add(this.txtUsuario); - this.Controls.Add(this.lblContrasenha); - this.Controls.Add(this.lblUsuario); - this.Controls.Add(this.txtServidor); - this.Controls.Add(this.lblServidor); - this.Controls.Add(this.btnListarServidores); - this.Controls.Add(this.lsvServidores); + this.Controls.Add(this.splitContainer1); this.Name = "frmServidores"; this.Text = "Servidores"; this.Load += new System.EventHandler(this.Form1_Load); + this.splitContainer1.Panel1.ResumeLayout(false); + this.splitContainer1.Panel2.ResumeLayout(false); + this.splitContainer1.Panel2.PerformLayout(); + this.splitContainer1.ResumeLayout(false); this.ResumeLayout(false); - this.PerformLayout(); } @@ -212,6 +249,7 @@ private System.Windows.Forms.ListView lsvBBDD; private System.Windows.Forms.ColumnHeader colDBName; private System.Windows.Forms.ColumnHeader colFechaCreacion; + private System.Windows.Forms.SplitContainer splitContainer1; } } diff --git a/ServerExplorer/ServerExplorer/frmServidores.cs b/ServerExplorer/frmServidores.cs similarity index 100% rename from ServerExplorer/ServerExplorer/frmServidores.cs rename to ServerExplorer/frmServidores.cs diff --git a/ServerExplorer/ServerExplorer/frmServidores.resx b/ServerExplorer/frmServidores.resx similarity index 100% rename from ServerExplorer/ServerExplorer/frmServidores.resx rename to ServerExplorer/frmServidores.resx diff --git a/ServerExplorer/ssr.exe b/ServerExplorer/ssr.exe deleted file mode 100644 index e341dc71ed453696cf446c57076191f54a6210c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81920 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 F005R8xrzV)