From 080264dc72dec3023f642cd984a85127b0348e23 Mon Sep 17 00:00:00 2001 From: david Date: Tue, 9 Oct 2007 07:47:51 +0000 Subject: [PATCH] git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/branches/D2007-DA5@39 0c75b7a4-871f-7646-8a2f-f78d34cc349f --- Build/Build.fbp5 | 2 +- .../SCRIPT para migración tecsitel.TXT | 0 Database/{ => Anterior}/VISTAS.SQL | 0 Database/{ => Anterior}/factuges.sql | 0 Database/Database.proj | 39 - Database/FACTUGES.FDB | Bin 5505024 -> 5505024 bytes Database/RodaxSoftware.FactuGES.Database.proj | 57 + Database/db_execute.bat | 2 +- Database/scripts/factuges.sql | 78 +- Database/scripts/factuges_sysdata.sql | 49 +- Enviroment.config | 27 + ...s => RodaxSoftware.FactuGES.Common.targets | 8 +- ...nQuote.proj => RodaxSoftware.FactuGES.proj | 26 +- Source/ApplicationBase/ApplicationBase.dpk | 2 - Source/ApplicationBase/ApplicationBase.dproj | 52 +- .../Views/uEditorDatosBancariosEmpresa.pas | 2 +- .../Empresas/Views/uEditorEmpresa.dfm | 38 +- .../Empresas/Views/uEditorEmpresa.pas | 3 +- .../Empresas/Views/uViewDatosBancarios.dfm | 18 + .../Empresas/Views/uViewDatosBancarios.pas | 3 +- .../Empresas/Views/uViewEmpresa.pas | 2 +- .../Controller/uUsuariosController.pas | 40 +- .../Usuarios/Data/uCambiarPassword.dfm | 94 -- .../Usuarios/Data/uCambiarPassword.pas | 41 - .../Usuarios/Data/uDataModuleUsuarios.dfm | 250 ++++ .../Usuarios/Data/uDataModuleUsuarios.pas | 330 ++++- .../Usuarios/Data/uLoginForm.dfm | 1099 ----------------- .../Usuarios/Data/uLoginForm.pas | 112 -- .../Model/Data/uIDataModuleUsuarios.pas | 4 +- .../Usuarios/Model/uUsuarios.pas | 4 +- .../Usuarios/{Data => Views}/uUsuario.dfm | 0 .../Usuarios/{Data => Views}/uUsuario.pas | 0 .../Usuarios/{Data => Views}/uUsuarios.dfm | 0 .../Usuarios/{Data => Views}/uUsuarios.pas | 0 Source/ApplicationBase/uFactuGES_App.pas | 51 +- Source/Cliente/FactuGES.dpr | 1 - Source/Cliente/FactuGES.dproj | 64 +- Source/Cliente/FactuGES.drc | 5 +- Source/Cliente/FactuGES.res | Bin 171980 -> 172180 bytes Source/Cliente/uMainMenuController.pas | 3 +- Source/Cliente/uPantallaPrincipal.dfm | 56 +- Source/Cliente/uPantallaPrincipal.pas | 71 +- Source/GUIBase/GUIBase.dproj | 32 +- Source/GUIBase/GUIBase.res | Bin 384 -> 4748 bytes Source/Servidor/FactuGES_Server.RES | Bin 23208 -> 23204 bytes Source/Servidor/FactuGES_Server.dpr | 4 + Source/Servidor/FactuGES_Server.dproj | 9 +- Source/Servidor/FactuGES_Server.drc | 579 ++++----- Source/Servidor/FactuGES_Server.rc | 2 +- Source/Servidor/uDataModuleServer.pas | 1 + 50 files changed, 1326 insertions(+), 1934 deletions(-) rename Database/{ => Anterior}/SCRIPT para migración tecsitel.TXT (100%) rename Database/{ => Anterior}/VISTAS.SQL (100%) rename Database/{ => Anterior}/factuges.sql (100%) delete mode 100644 Database/Database.proj create mode 100644 Database/RodaxSoftware.FactuGES.Database.proj create mode 100644 Enviroment.config rename Sanlam.SanQuote.Common.targets => RodaxSoftware.FactuGES.Common.targets (95%) rename Sanlam.SanQuote.proj => RodaxSoftware.FactuGES.proj (88%) delete mode 100644 Source/ApplicationBase/Usuarios/Data/uCambiarPassword.dfm delete mode 100644 Source/ApplicationBase/Usuarios/Data/uCambiarPassword.pas delete mode 100644 Source/ApplicationBase/Usuarios/Data/uLoginForm.dfm delete mode 100644 Source/ApplicationBase/Usuarios/Data/uLoginForm.pas rename Source/ApplicationBase/Usuarios/{Data => Views}/uUsuario.dfm (100%) rename Source/ApplicationBase/Usuarios/{Data => Views}/uUsuario.pas (100%) rename Source/ApplicationBase/Usuarios/{Data => Views}/uUsuarios.dfm (100%) rename Source/ApplicationBase/Usuarios/{Data => Views}/uUsuarios.pas (100%) diff --git a/Build/Build.fbp5 b/Build/Build.fbp5 index 69b4022a..0c78dbc4 100644 --- a/Build/Build.fbp5 +++ b/Build/Build.fbp5 @@ -15288,7 +15288,7 @@ Comments= vtProject - %DELPHI2007DIR%\Lib\Indy10;%project_path%\Lib;%project_path%\Lib\RemObjects\RemObjects_SDK;%project_path%\Lib\RemObjects\Data_Abstract;%project_path%\Lib\CCPack;%project_path%\Lib\CFPack;%project_path%\Lib\GUISDK;%project_path%\Lib\PluginSDK;%project_path%\Lib\DevExpressVCL;%project_path%\Lib\FastReport3;%project_path%\Lib\JCL;%project_path%\Lib\JVCL;%project_path%\Lib\PngComponents;%project_path%\Lib\cxIntl5;%project_path%\Lib\cxIntlPrintSys3;%project_path%\Lib\TB2k+TBX;%project_path%\Lib\Mustangpeak\MPCommonLib;%project_path%\Lib\Mustangpeak\EasyListview;%project_path%\Lib\JSDialog;C:\UserControl\Lib\D11; + %DELPHI2007DIR%\Lib\Indy10;%project_path%\Lib;%project_path%\Lib\RemObjects\RemObjects_SDK;%project_path%\Lib\RemObjects\Data_Abstract;%project_path%\Lib\CCPack;%project_path%\Lib\CFPack;%project_path%\Lib\GUISDK;%project_path%\Lib\PluginSDK;%project_path%\Lib\DevExpressVCL;%project_path%\Lib\FastReport3;%project_path%\Lib\JCL;%project_path%\Lib\JVCL;%project_path%\Lib\PngComponents;%project_path%\Lib\cxIntl5;%project_path%\Lib\cxIntlPrintSys3;%project_path%\Lib\TB2k+TBX;%project_path%\Lib\Mustangpeak\MPCommonLib;%project_path%\Lib\Mustangpeak\EasyListview;%project_path%\Lib\JSDialog;%project_path%\Lib\UserControl; True False False diff --git a/Database/SCRIPT para migración tecsitel.TXT b/Database/Anterior/SCRIPT para migración tecsitel.TXT similarity index 100% rename from Database/SCRIPT para migración tecsitel.TXT rename to Database/Anterior/SCRIPT para migración tecsitel.TXT diff --git a/Database/VISTAS.SQL b/Database/Anterior/VISTAS.SQL similarity index 100% rename from Database/VISTAS.SQL rename to Database/Anterior/VISTAS.SQL diff --git a/Database/factuges.sql b/Database/Anterior/factuges.sql similarity index 100% rename from Database/factuges.sql rename to Database/Anterior/factuges.sql diff --git a/Database/Database.proj b/Database/Database.proj deleted file mode 100644 index a82ee61c..00000000 --- a/Database/Database.proj +++ /dev/null @@ -1,39 +0,0 @@ - - - localhost - false - $(MSBuildProjectDirectory)\Scripts - $(MSBuildProjectDirectory)\..\Tools - $(MSBuildProjectDirectory)\..\Output - $(ToolsFolder)\ISQL\isql.exe - - - - $(CodeOutputFolder)\Debug\Database - - - $(CodeOutputFolder)\Release\Database - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Database/FACTUGES.FDB b/Database/FACTUGES.FDB index 1ff997a9b2c6054c299b52dbdd6ece39ec9170d9..b0e119f8904e09d60e117f32687bec2ba90379cc 100644 GIT binary patch delta 2196 zcmb7_UyKt)9LHyS?NNHyc7a0?fvZqXK!%&yzcVL)Zrj~OP;gHoK~1FF?)HTk*90F3 zx!fHjbBUNJ58CJpn26B?jfe3L^Z`kXPsA8Qj6BuE7vI1KA4q8Qx3c0v2^_Qe>~@=( z`Ofz@zu)ZSray+25X*4%9k%3+;()#EYrrCWvJM4D8*W(Qmwi$k#1GS5&AoBF44GQ84hL|cd%wy zCbn#9;A+(*%%TR<9X^qCUP#}E@A}{cVE!<(&Mom5y;2ZfPI!I7>la>Lc<@>jo-Dj2 z!doi5Wx^Yn^_HjQ#oy=RC`0?|bNTC(v}0y$TV6!VMf8Y>9u?6F5j`fNl_GjvM5{!! zT10C^G$^8yh@KG9S`n?Ajmqg-EB$3gE}GdMbh-Zwx}1Lt9nK$^8T+ii?--=r9!QiF zDzzHz^2VV+qXBCKoHYrlD?|%9BZPAnHkwRR%y1HYf>HymbM10@qQ8WUfD*>*p=oyf zWzD9q`5~dc76eK&40WBx-JuoJ|7Cs(NxNrDs-^~jH^{F!>^GZs}pzGkIgL>1*3#0G{G+07h zF+x~&*a+$k)2EE-tgf1z)qT$Eo#2+8D>qRwk0KZ|8sD}wUVm*8{e`654J5sI1Fb2c zprMBvjPZSHDxtz)L2PMLh2S)OezS4QW-;A*xm{Ks=&p6PUB>2}<{)%;x~nIl`>R zi9(#JUge7ELi$S`l*=O5ZybJer?c;uR{yo~>VuSxs3!V35h)}hm%2rWLRGa&UF=$p zg*DgGFn4ShD<*ZS6Vkz7E84ZjN|6z4#%7Yl;e^zE90V!f3F z3p(7p1d}A-BdR)lJW)v}B8R(07Wi4X%hmrP%JB9?1lIkpll9#q3;MR*+erq}S=Xjd zT`L3Yfg#{YU<0rb*aSQUYz8o}1sDbhKmi3%fp`ubFaQ%^00%~Zr-7}&Hefrj0~iG? ppaN6@8*l&@*a;iTJ&jQZ@dw{*b^MD780WZv*y0*`k{{a&CNAv&y delta 788 zcma*kO-~a+7zgm#7hqc`JD@0{XpvGyT;1-r-EI}>%TnJEroy2IL+Uq}D2BBsoa(6v-iyr%9e6IZW~_$#W#*Bu7Y|Cpo$$ z6MFrbUf^Axp|G0yYNI-7hP7{rw`f5hH(f(xFU&<|n=w`}7dNWUduKM$_gR%Oohf)2 zdvkb4DpQobUu=B&NXKPN*$!X+NDR;0sl1(KxXgdSi1{1*>Hpv(w)`NtvmNZQ)wTTu zj6o7Ez(p8`OE3YK!GbGr6>La>11_W?16lAO2R`KC8eE4-xB*j8fFhKj3;|3-1#ZGE ZxD9vUF3i9^n1wkIP=))gwf*^r{15IC{XhT! diff --git a/Database/RodaxSoftware.FactuGES.Database.proj b/Database/RodaxSoftware.FactuGES.Database.proj new file mode 100644 index 00000000..a208f99b --- /dev/null +++ b/Database/RodaxSoftware.FactuGES.Database.proj @@ -0,0 +1,57 @@ + + + + + %22 + + + + localhost + false + $(MSBuildProjectDirectory)\Scripts + $(MSBuildProjectDirectory)\..\Tools + $(MSBuildProjectDirectory)\..\Output + $(ToolsFolder)\ISQL\isql.exe + Debug + + + + $(CodeOutputFolder)\Debug\Database + + + $(CodeOutputFolder)\Release\Database + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Database/db_execute.bat b/Database/db_execute.bat index 0357fd92..f374007c 100644 --- a/Database/db_execute.bat +++ b/Database/db_execute.bat @@ -1,4 +1,4 @@ -@echo off +rem @echo off call _db_enviroment.bat if "%1" == "drop" goto drop diff --git a/Database/scripts/factuges.sql b/Database/scripts/factuges.sql index 9cf637ae..d1a47461 100644 --- a/Database/scripts/factuges.sql +++ b/Database/scripts/factuges.sql @@ -1,8 +1,6 @@ -Database: FACTUGES.FDB.ORIGINAL, User: SYSDBA - SET SQL DIALECT 3; -CREATE DATABASE 'FACTUGES.FDB' DEFAULT CHARACTER SET ISO8859_1; +CREATE DATABASE 'factuges.fdb' DEFAULT CHARACTER SET ISO8859_1; /* External Function declarations */ DECLARE EXTERNAL FUNCTION F_RTFTOTEXT @@ -56,7 +54,7 @@ CREATE GENERATOR GEN_PEDIDOS_CLI_DETALLES_ID; CREATE GENERATOR GEN_PEDIDOS_CLI_ID; CREATE GENERATOR GEN_PEDIDOS_PROV_DETALLES_ID; CREATE GENERATOR GEN_PEDIDOS_PROV_ID; -CREATE GENERATOR GEN_PERFILES_ID; +CREATE GENERATOR GEN_F_PERFILES_ID; CREATE GENERATOR GEN_RECIBOS_CLIENTE_ID; CREATE GENERATOR GEN_RECIBOS_PROVEEDOR_ID; CREATE GENERATOR GEN_REMESAS_CLIENTE_ID; @@ -72,10 +70,9 @@ CREATE DOMAIN TIPO_CONCEPTO AS VARCHAR(2000); CREATE DOMAIN TIPO_ID AS INTEGER; CREATE DOMAIN TIPO_IMPORTE AS NUMERIC(11, 2); CREATE DOMAIN TIPO_NOTAS AS BLOB SUB_TYPE TEXT SEGMENT SIZE 80; -CREATE DOMAIN TIPO_PASSWORD AS VARCHAR(10); CREATE DOMAIN TIPO_PERFIL AS VARCHAR(15); CREATE DOMAIN TIPO_PORCENTAJE AS FLOAT; -CREATE DOMAIN TIPO_USUARIO AS VARCHAR(20); +CREATE DOMAIN TIPO_USUARIO AS VARCHAR(30); /* Table: AGENTES_COMISIONES, Owner: SYSDBA */ CREATE TABLE AGENTES_COMISIONES (ID TIPO_ID NOT NULL, @@ -517,6 +514,22 @@ CREATE TABLE FORMAS_PAGO_PLAZOS (ID TIPO_ID NOT NULL, PORCENTAJE TIPO_PORCENTAJE, PRIMARY KEY (ID)); +/* Table: F_PERFILES, Owner: SYSDBA */ +CREATE TABLE F_PERFILES (ID TIPO_ID NOT NULL, + PERFIL TIPO_PERFIL NOT NULL); + +/* Table: F_PERFILES_USUARIOS, Owner: SYSDBA */ +CREATE TABLE F_PERFILES_USUARIOS (ID_PERFIL TIPO_ID NOT NULL, + ID_USUARIO TIPO_ID NOT NULL, +CONSTRAINT PK_PERFILES_USUARIOS PRIMARY KEY (ID_PERFIL, ID_USUARIO)); + +/* Table: F_USUARIOS, Owner: SYSDBA */ +CREATE TABLE F_USUARIOS (ID TIPO_ID NOT NULL, + USUARIO TIPO_USUARIO NOT NULL, + ACTIVO TIPO_BOOLEANO, + LAST_LOGIN TIMESTAMP, + PASS VARCHAR(10)); + /* Table: INFORMES, Owner: SYSDBA */ CREATE TABLE INFORMES (ID SMALLINT NOT NULL, ID_EMPRESA TIPO_ID, @@ -670,15 +683,18 @@ CREATE TABLE PEDIDOS_PROVEEDOR_DETALLES (ID TIPO_ID NOT NULL, FECHA_MODIFICACION TIMESTAMP, CONSTRAINT PK_PEDIDOS_PROVEEDOR_DETALLES PRIMARY KEY (ID)); -/* Table: PERFILES, Owner: SYSDBA */ -CREATE TABLE PERFILES (ID TIPO_ID NOT NULL, - PERFIL TIPO_PERFIL NOT NULL, -CONSTRAINT PK_PERFILES PRIMARY KEY (ID)); +/* Table: PERMISOS, Owner: SYSDBA */ +CREATE TABLE PERMISOS (ID_USUARIO TIPO_ID, + MODULO VARCHAR(50), + NOMBRECOMP VARCHAR(50), + CHECKSUM VARCHAR(250)); -/* Table: PERFILES_USUARIOS, Owner: SYSDBA */ -CREATE TABLE PERFILES_USUARIOS (ID_PERFIL TIPO_ID NOT NULL, - ID_USUARIO TIPO_ID NOT NULL, -CONSTRAINT PK_PERFILES_USUARIOS PRIMARY KEY (ID_PERFIL, ID_USUARIO)); +/* Table: PERMISOSEX, Owner: SYSDBA */ +CREATE TABLE PERMISOSEX (ID_USUARIO TIPO_ID, + MODULO VARCHAR(50), + NOMBRECOMP VARCHAR(50), + NOMBREFORM VARCHAR(50), + CHECKSUM VARCHAR(250)); /* Table: PROVEEDORES_DATOS, Owner: SYSDBA */ CREATE TABLE PROVEEDORES_DATOS (ID_PROVEEDOR TIPO_ID NOT NULL, @@ -788,12 +804,38 @@ PRIMARY KEY (ID)); /* Table: USUARIOS, Owner: SYSDBA */ CREATE TABLE USUARIOS (ID TIPO_ID NOT NULL, - USUARIO TIPO_USUARIO NOT NULL, - PASS TIPO_PASSWORD, - ACTIVO TIPO_BOOLEANO, - LAST_LOGIN TIMESTAMP, + USERNAME VARCHAR(30), + LOGIN TIPO_USUARIO, + PASS VARCHAR(250), + PASSEXPIRED DATE, + BLOQUEADO TIPO_BOOLEANO, + EMAIL VARCHAR(150), + USERDAYSSUN INTEGER, + PRIVILEGED INTEGER, + TIPO CHAR(1), + ID_PERFIL TIPO_ID, + CHECKSUM VARCHAR(250), CONSTRAINT PK_USUARIOS PRIMARY KEY (ID)); +/* Table: USUARIOS_EVENTOS, Owner: SYSDBA */ +CREATE TABLE USUARIOS_EVENTOS (APLICACION VARCHAR(250), + ID_USUARIO TIPO_ID, + FECHA CHAR(10), + HORA CHAR(8), + FORM VARCHAR(250), + TITULO_FORM VARCHAR(100), + EVENTO VARCHAR(50), + NOTAS TIPO_NOTAS, + TNAME VARCHAR(20)); + +/* Table: USUARIOS_LOGON, Owner: SYSDBA */ +CREATE TABLE USUARIOS_LOGON (LOGONID CHAR(38) NOT NULL, + ID_USUARIO TIPO_ID, + APLICACION VARCHAR(50), + EQUIPO VARCHAR(50), + DATA VARCHAR(14), +CONSTRAINT PK_USUARIOS_LOGON PRIMARY KEY (LOGONID)); + /* Index definitions for all user tables */ CREATE INDEX IDX_AGENTES_COMISIONES1 ON AGENTES_COMISIONES (ID_AGENTE); CREATE INDEX IDX_AGENTES_COMISIONES2 ON AGENTES_COMISIONES (ID_PROVEEDOR); diff --git a/Database/scripts/factuges_sysdata.sql b/Database/scripts/factuges_sysdata.sql index 9399ab8d..789a9a64 100644 --- a/Database/scripts/factuges_sysdata.sql +++ b/Database/scripts/factuges_sysdata.sql @@ -5,29 +5,20 @@ SET NAMES ISO8859_1; INSERT INTO CATEGORIAS (ID, CATEGORIA) VALUES (1, 'CLIENTE'); INSERT INTO CATEGORIAS (ID, CATEGORIA) VALUES (2, 'PROVEEDOR'); INSERT INTO CATEGORIAS (ID, CATEGORIA) VALUES (3, 'EMPLEADO'); - +SET GENERATOR GEN_CATEGORIAS_ID TO 4; COMMIT WORK; -INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (2, 1, 'VENTAS ARTICULOS', 'InfVentasArticuloController', 4, 'Ventas por artículo', 'Informe de ventas por artículo', NULL, 'S'); -INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (5, 1, 'VENTAS ARTICULOS', 'InfVentasArticuloController', 4, 'Ventas por cliente', 'Informe de ventas por cliente y artículo', NULL, 'S'); -INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (7, 1, 'VENTAS ARTICULOS', 'InfVentasArticuloController', 4, 'Ventas por agente y cliente', 'Informe de ventas por agente y cliente', NULL, 'S'); -INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (17, 1, 'MARGEN ARTICULOS', 'InfMargenArticuloController', 0, 'Margen (promedio) por artículo', 'Informe de margen por artículo teniendo en cuenta el precio neto de venta promedio', NULL, 'S'); -INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (15, 1, 'VENTAS ARTICULOS', 'InfVentasArticuloController', 4, 'Ventas por proveedor', 'Informe de ventas por proveedor y artículo', NULL, 'S'); -INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (19, 1, 'MARGEN ARTICULOS', 'InfMargenArticuloController', 0, 'Margen (promedio) por cliente', 'Informe de margen por artículo agrupado por cliente teniendo en cuenta el precio neto de venta promedio', NULL, 'S'); -INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (20, 1, 'MARGEN ARTICULOS', 'InfMargenArticuloController', 0, 'Margen (promedio) por agente y cliente', 'Informe de margen por artículo agrupado por agente y cliente teniendo en cuenta el precio neto de venta promedio', NULL, 'S'); -INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (21, 1, 'MARGEN ARTICULOS', 'InfMargenArticuloController', 2, 'Margen (ult. venta) por artículo', 'Informe de margen por artículo teniendo en cuenta el precio neto de última venta', NULL, 'S'); -INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (22, 1, 'MARGEN ARTICULOS', 'InfMargenArticuloController', 2, 'Margen (ult.venta) por clientes', 'Informe de margen por artículo agrupado por cliente teniendo en cuenta el precio neto de última venta', NULL, 'S'); -INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (23, 1, 'MARGEN ARTICULOS', 'InfMargenArticuloController', 2, 'Margen (ult. venta) por agente y cliente', 'Informe de margen por artículo agrupado por agente y cliente teniendo en cuenta el precio neto de última venta', NULL, 'S'); - -COMMIT WORK; - -INSERT INTO PERFILES (ID, PERFIL) VALUES (1, 'Administradores'); -INSERT INTO PERFILES (ID, PERFIL) VALUES (2, 'Usuarios'); - -COMMIT WORK; - -INSERT INTO PERFILES_USUARIOS (ID_PERFIL, ID_USUARIO) VALUES (1, 1); - +INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (1, 1, 'VENTAS ARTICULOS', 'InfVentasArticuloController', 4, 'Ventas por artículo', 'Informe de ventas por artículo', NULL, 'S'); +INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (2, 1, 'VENTAS ARTICULOS', 'InfVentasArticuloController', 4, 'Ventas por cliente', 'Informe de ventas por cliente y artículo', NULL, 'S'); +INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (3, 1, 'VENTAS ARTICULOS', 'InfVentasArticuloController', 4, 'Ventas por agente y cliente', 'Informe de ventas por agente y cliente', NULL, 'S'); +INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (4, 1, 'MARGEN ARTICULOS', 'InfMargenArticuloController', 0, 'Margen (promedio) por artículo', 'Informe de margen por artículo teniendo en cuenta el precio neto de venta promedio', NULL, 'S'); +INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (5, 1, 'VENTAS ARTICULOS', 'InfVentasArticuloController', 4, 'Ventas por proveedor', 'Informe de ventas por proveedor y artículo', NULL, 'S'); +INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (6, 1, 'MARGEN ARTICULOS', 'InfMargenArticuloController', 0, 'Margen (promedio) por cliente', 'Informe de margen por artículo agrupado por cliente teniendo en cuenta el precio neto de venta promedio', NULL, 'S'); +INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (7, 1, 'MARGEN ARTICULOS', 'InfMargenArticuloController', 0, 'Margen (promedio) por agente y cliente', 'Informe de margen por artículo agrupado por agente y cliente teniendo en cuenta el precio neto de venta promedio', NULL, 'S'); +INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (8, 1, 'MARGEN ARTICULOS', 'InfMargenArticuloController', 2, 'Margen (ult. venta) por artículo', 'Informe de margen por artículo teniendo en cuenta el precio neto de última venta', NULL, 'S'); +INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (9, 1, 'MARGEN ARTICULOS', 'InfMargenArticuloController', 2, 'Margen (ult.venta) por clientes', 'Informe de margen por artículo agrupado por cliente teniendo en cuenta el precio neto de última venta', NULL, 'S'); +INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (10, 1, 'MARGEN ARTICULOS', 'InfMargenArticuloController', 2, 'Margen (ult. venta) por agente y cliente', 'Informe de margen por artículo agrupado por agente y cliente teniendo en cuenta el precio neto de última venta', NULL, 'S'); +SET GENERATOR GEN_INFORMES_ID TO 11; COMMIT WORK; INSERT INTO REFERENCIAS (CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES ('REF_FACTURAS_CLIENTE', '00001', 1, 'Ref. facturas de cliente'); @@ -43,16 +34,16 @@ INSERT INTO REFERENCIAS (CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES ('REF_AL INSERT INTO REFERENCIAS (CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES ('REF_REMESAS_PROVEEDOR', '00001', 1, 'Ref. remesas de proveedor'); INSERT INTO REFERENCIAS (CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES ('REF_ABONOS_CLIENTE', '00001', 1, 'Ref. abonos de cliente'); INSERT INTO REFERENCIAS (CODIGO, VALOR, ID_EMPRESA, DESCRIPCION) VALUES ('REF_ABONOS_PROVEEDOR', '00001', 1, 'Ref. abonos de proveedor'); - COMMIT WORK; -INSERT INTO TIPOS_IVA (ID, REFERENCIA, DESCRIPCION, IVA, RE) VALUES (2, 'IVA16', 'IVA16', 16, 4); -INSERT INTO TIPOS_IVA (ID, REFERENCIA, DESCRIPCION, IVA, RE) VALUES (3, 'IVA4', 'IVA4', 4, 0.5); -INSERT INTO TIPOS_IVA (ID, REFERENCIA, DESCRIPCION, IVA, RE) VALUES (4, 'IVA7', 'IVA7', 7, 1); -INSERT INTO TIPOS_IVA (ID, REFERENCIA, DESCRIPCION, IVA, RE) VALUES (6, 'EXENTO', 'EXTRANJERO', 0, 0); - +INSERT INTO TIPOS_IVA (ID, REFERENCIA, DESCRIPCION, IVA, RE) VALUES (1, 'IVA16', 'IVA16', 16, 4); +INSERT INTO TIPOS_IVA (ID, REFERENCIA, DESCRIPCION, IVA, RE) VALUES (2, 'IVA4', 'IVA4', 4, 0.5); +INSERT INTO TIPOS_IVA (ID, REFERENCIA, DESCRIPCION, IVA, RE) VALUES (3, 'IVA7', 'IVA7', 7, 1); +INSERT INTO TIPOS_IVA (ID, REFERENCIA, DESCRIPCION, IVA, RE) VALUES (4, 'EXENTO', 'EXTRANJERO', 0, 0); +SET GENERATOR GEN_TIPOS_IVA_ID TO 5; COMMIT WORK; -INSERT INTO USUARIOS (ID, USUARIO, PASS, ACTIVO, LAST_LOGIN) VALUES (1, 'Administrador', '', 1, NULL); - +/* Usuario 'Administrador' (Contraseña en blanco) */ +INSERT INTO USUARIOS (ID, USERNAME, LOGIN, PASS, PASSEXPIRED, BLOQUEADO, EMAIL, USERDAYSSUN, PRIVILEGED, TIPO, ID_PERFIL, CHECKSUM) VALUES (1, 'Administrador', 'admin', 'd41d8cd98f00b204e9800998ecf8427e', '2007-07-11', 0, 'admin@correo.net', 30, -1, 'U', 0, '6d1089be77aaaffa4ae01a4dd2fee551'); +SET GENERATOR GEN_USUARIOS_ID TO 2; COMMIT WORK; diff --git a/Enviroment.config b/Enviroment.config new file mode 100644 index 00000000..c676d66e --- /dev/null +++ b/Enviroment.config @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + diff --git a/Sanlam.SanQuote.Common.targets b/RodaxSoftware.FactuGES.Common.targets similarity index 95% rename from Sanlam.SanQuote.Common.targets rename to RodaxSoftware.FactuGES.Common.targets index 8a5b16a4..03b81f23 100644 --- a/Sanlam.SanQuote.Common.targets +++ b/RodaxSoftware.FactuGES.Common.targets @@ -20,7 +20,7 @@ - + @@ -94,7 +94,7 @@ - + @@ -140,7 +140,7 @@ AssemblyFileVersion="$(AppVersion)" /> - + @@ -155,7 +155,7 @@ diff --git a/Sanlam.SanQuote.proj b/RodaxSoftware.FactuGES.proj similarity index 88% rename from Sanlam.SanQuote.proj rename to RodaxSoftware.FactuGES.proj index 041d9efe..bdd8e9d1 100644 --- a/Sanlam.SanQuote.proj +++ b/RodaxSoftware.FactuGES.proj @@ -27,10 +27,12 @@ - localhost + DEV + localhost firebird2 + sysdba + masterkey $(ToolsFolder)\ISQL\isql.exe - DEV smtp.somewhere.co.za @@ -109,7 +111,7 @@ - + @@ -118,7 +120,7 @@ $(CleanDependsOn); - CleanDatabases + CleanDatabase CleanCode @@ -147,13 +149,19 @@ - + + Properties="Configuration=$(Configuration);SqlCmdRunner=$(SqlCmdRunner);DBServer=$(DBServer);DBUser=$(DBUser);DBPassword=$(DBPassword);"/> - + + + + + @@ -185,10 +193,10 @@ + DependsOnTargets="BuildDatabase;BuildCode;BuildTests"/> + DependsOnTargets="CleanDatabase;CleanCode"/> diff --git a/Source/ApplicationBase/ApplicationBase.dpk b/Source/ApplicationBase/ApplicationBase.dpk index 7c23d5e4..4bf5dfec 100644 --- a/Source/ApplicationBase/ApplicationBase.dpk +++ b/Source/ApplicationBase/ApplicationBase.dpk @@ -74,8 +74,6 @@ contains uEditorEmpresa in 'Empresas\Views\uEditorEmpresa.pas', uEmpresasViewRegister in 'Empresas\Views\uEmpresasViewRegister.pas', uViewDatosBancarios in 'Empresas\Views\uViewDatosBancarios.pas', - uCambiarPassword in 'Usuarios\Data\uCambiarPassword.pas', - uLoginForm in 'Usuarios\Data\uLoginForm.pas', uUsuarios in 'Usuarios\Model\uUsuarios.pas', schUsuariosServer_Intf in 'Usuarios\Model\schUsuariosServer_Intf.pas', schUsuariosClient_Intf in 'Usuarios\Model\schUsuariosClient_Intf.pas', diff --git a/Source/ApplicationBase/ApplicationBase.dproj b/Source/ApplicationBase/ApplicationBase.dproj index c9986fe8..04e4a093 100644 --- a/Source/ApplicationBase/ApplicationBase.dproj +++ b/Source/ApplicationBase/ApplicationBase.dproj @@ -56,31 +56,31 @@ MainSource - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -100,9 +100,7 @@ - - diff --git a/Source/ApplicationBase/Empresas/Views/uEditorDatosBancariosEmpresa.pas b/Source/ApplicationBase/Empresas/Views/uEditorDatosBancariosEmpresa.pas index c31fb01f..de80ae66 100644 --- a/Source/ApplicationBase/Empresas/Views/uEditorDatosBancariosEmpresa.pas +++ b/Source/ApplicationBase/Empresas/Views/uEditorDatosBancariosEmpresa.pas @@ -6,7 +6,7 @@ uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, Buttons, ExtCtrls, Mask, DBCtrls, DB, uDADataTable, PngSpeedButton, cxControls, cxContainer, cxEdit, cxTextEdit, cxHyperLinkEdit, cxDBEdit, uIEditorDatosBancarioEmpresa, uDatosBancariosEmpresaController, uBizEmpresasDatosBancarios, - cxCurrencyEdit; + cxCurrencyEdit, uDAInterfaces; type TfEditorDatosBancariosEmpresa = class(TForm, IEditorDatosBancariosEmpresa) diff --git a/Source/ApplicationBase/Empresas/Views/uEditorEmpresa.dfm b/Source/ApplicationBase/Empresas/Views/uEditorEmpresa.dfm index 4bd2a6a0..dc0c2224 100644 --- a/Source/ApplicationBase/Empresas/Views/uEditorEmpresa.dfm +++ b/Source/ApplicationBase/Empresas/Views/uEditorEmpresa.dfm @@ -8,13 +8,13 @@ inherited fEditorEmpresa: TfEditorEmpresa ClientWidth = 674 Scaled = False ExplicitWidth = 682 - ExplicitHeight = 588 + ExplicitHeight = 581 PixelsPerInch = 96 TextHeight = 13 inherited JvNavPanelHeader: TJvNavPanelHeader Width = 674 Caption = 'Empresa' - ExplicitWidth = 660 + ExplicitWidth = 674 inherited Image1: TImage Left = 647 ExplicitLeft = 607 @@ -22,9 +22,9 @@ inherited fEditorEmpresa: TfEditorEmpresa end inherited TBXDock: TTBXDock Width = 674 - ExplicitWidth = 660 + ExplicitWidth = 674 inherited tbxMain: TTBXToolbar - ExplicitWidth = 324 + ExplicitWidth = 330 inherited TBXItem2: TTBXItem Visible = False end @@ -77,13 +77,13 @@ inherited fEditorEmpresa: TfEditorEmpresa inherited pgPaginas: TPageControl Width = 674 Height = 459 - ExplicitWidth = 660 - ExplicitHeight = 451 + ExplicitWidth = 674 + ExplicitHeight = 459 inherited pagGeneral: TTabSheet ExplicitLeft = 4 ExplicitTop = 24 - ExplicitWidth = 652 - ExplicitHeight = 423 + ExplicitWidth = 666 + ExplicitHeight = 431 inline frViewEmpresa1: TfrViewEmpresa Left = 0 Top = 0 @@ -98,14 +98,14 @@ inherited fEditorEmpresa: TfEditorEmpresa ParentFont = False TabOrder = 0 ReadOnly = False - ExplicitWidth = 652 - ExplicitHeight = 423 + ExplicitWidth = 666 + ExplicitHeight = 431 inherited dxLayoutControl1: TdxLayoutControl Width = 666 Height = 431 LookAndFeel = dxLayoutOfficeLookAndFeel1 - ExplicitWidth = 652 - ExplicitHeight = 423 + ExplicitWidth = 666 + ExplicitHeight = 431 inherited PngSpeedButton1: TPngSpeedButton Left = 621 Top = 295 @@ -244,8 +244,6 @@ inherited fEditorEmpresa: TfEditorEmpresa object TabSheet1: TTabSheet Caption = 'Datos bancarios' ImageIndex = 1 - ExplicitWidth = 652 - ExplicitHeight = 423 inline frViewDatosBancarios1: TfrViewDatosBancarios Left = 0 Top = 0 @@ -260,13 +258,13 @@ inherited fEditorEmpresa: TfEditorEmpresa ParentFont = False TabOrder = 0 ReadOnly = False - ExplicitWidth = 652 - ExplicitHeight = 423 + ExplicitWidth = 666 + ExplicitHeight = 431 inherited cxGrid: TcxGrid Width = 666 Height = 406 - ExplicitWidth = 652 - ExplicitHeight = 398 + ExplicitWidth = 666 + ExplicitHeight = 406 end inherited ToolBar1: TToolBar Width = 666 @@ -294,8 +292,8 @@ inherited fEditorEmpresa: TfEditorEmpresa item Width = 200 end> - ExplicitTop = 527 - ExplicitWidth = 660 + ExplicitTop = 535 + ExplicitWidth = 674 end inherited EditorActionList: TActionList Top = 128 diff --git a/Source/ApplicationBase/Empresas/Views/uEditorEmpresa.pas b/Source/ApplicationBase/Empresas/Views/uEditorEmpresa.pas index 332cafac..a5bb5125 100644 --- a/Source/ApplicationBase/Empresas/Views/uEditorEmpresa.pas +++ b/Source/ApplicationBase/Empresas/Views/uEditorEmpresa.pas @@ -12,7 +12,8 @@ uses TBXDkPanels, JvButton, AppEvnts, uCustomView, uViewBase, JvAppStorage, JvAppRegistryStorage, JvFormPlacement, JvComponentBase, uViewEmpresa, uIEditorEmpresa, uEmpresasController, dxLayoutLookAndFeels, - JvExComCtrls, JvStatusBar, uViewDetallesGenerico, uViewDatosBancarios; + JvExComCtrls, JvStatusBar, uViewDetallesGenerico, uViewDatosBancarios, + uDAInterfaces; type TfEditorEmpresa = class(TfEditorDBItem, IEditorEmpresa) diff --git a/Source/ApplicationBase/Empresas/Views/uViewDatosBancarios.dfm b/Source/ApplicationBase/Empresas/Views/uViewDatosBancarios.dfm index 9ffd2041..0a405dcc 100644 --- a/Source/ApplicationBase/Empresas/Views/uViewDatosBancarios.dfm +++ b/Source/ApplicationBase/Empresas/Views/uViewDatosBancarios.dfm @@ -48,5 +48,23 @@ inherited frViewDatosBancarios: TfrViewDatosBancarios inherited ToolBar1: TToolBar Width = 583 ExplicitWidth = 583 + inherited ToolButton1: TToolButton + Top = 0 + end + inherited ToolButton4: TToolButton + Top = 0 + end + inherited ToolButton5: TToolButton + Top = 0 + end + inherited ToolButton2: TToolButton + Top = 0 + end + inherited ToolButton6: TToolButton + Top = 0 + end + inherited ToolButton7: TToolButton + Top = 0 + end end end diff --git a/Source/ApplicationBase/Empresas/Views/uViewDatosBancarios.pas b/Source/ApplicationBase/Empresas/Views/uViewDatosBancarios.pas index bcc0aca5..2a70ebe6 100644 --- a/Source/ApplicationBase/Empresas/Views/uViewDatosBancarios.pas +++ b/Source/ApplicationBase/Empresas/Views/uViewDatosBancarios.pas @@ -9,7 +9,8 @@ uses cxGridCustomTableView, cxGridTableView, cxGridBandedTableView, cxGridDBBandedTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, uDADataTable, Grids, DBGrids, ActnList, ImgList, PngImageList, ComCtrls, - ToolWin, cxGridDBTableView, uViewDetallesGenerico, cxCurrencyEdit; + ToolWin, cxGridDBTableView, uViewDetallesGenerico, cxCurrencyEdit, + uDAInterfaces; type TfrViewDatosBancarios = class(TfrViewDetallesGenerico) diff --git a/Source/ApplicationBase/Empresas/Views/uViewEmpresa.pas b/Source/ApplicationBase/Empresas/Views/uViewEmpresa.pas index 154d4eba..d2e5e583 100644 --- a/Source/ApplicationBase/Empresas/Views/uViewEmpresa.pas +++ b/Source/ApplicationBase/Empresas/Views/uViewEmpresa.pas @@ -9,7 +9,7 @@ uses JvComponent, JvFormAutoSize, cxControls, cxContainer, cxEdit, cxTextEdit, cxDBEdit, dxLayoutControl, dxLayoutLookAndFeels, cxMemo, cxMaskEdit, cxSpinEdit, cxImage, JvExControls, JvBitmapButton, ActnList, ImgList, - PngImageList, TB2Item, TBX, TB2Dock, TB2Toolbar, PngSpeedButton; + PngImageList, TB2Item, TBX, TB2Dock, TB2Toolbar, PngSpeedButton, uDAInterfaces; type IViewEmpresa = interface(IViewBase) diff --git a/Source/ApplicationBase/Usuarios/Controller/uUsuariosController.pas b/Source/ApplicationBase/Usuarios/Controller/uUsuariosController.pas index 31e6dd45..95a5f2da 100644 --- a/Source/ApplicationBase/Usuarios/Controller/uUsuariosController.pas +++ b/Source/ApplicationBase/Usuarios/Controller/uUsuariosController.pas @@ -18,11 +18,16 @@ type procedure ShowLogManager; procedure ShowChangePassword; function ComprobarUsuario(const User : String; const Password: String): Boolean; + procedure CambiarPassword(const AIDUser: Integer; const ANewPassword: String); function GetMaxIntentosLogin: Integer; procedure SetMaxIntentosLogin(const Value: Integer); property MaxIntentosLogin : Integer read GetMaxIntentosLogin write SetMaxIntentosLogin; + function GetCurrentUser: TUCCurrentUser; + property CurrentUser: TUCCurrentUser read GetCurrentUser; + + { procedure ChangeUser(IDUser: Integer; Login, Name, Mail: String; Profile,UserExpired,UserDaysSun: Integer; PrivUser: Boolean); procedure ChangePassword(IDUser: Integer; NewPassword: String); procedure AddRight(idUser: Integer; ItemRight: TObject; FullPath: Boolean = True); overload; @@ -64,6 +69,7 @@ type procedure AsignarDataModule; procedure InicializarUserControl; procedure ComprobarUsuarioInicial; + function GetCurrentUser: TUCCurrentUser; procedure OnLoginForm(Sender: TObject; var CustomForm: TCustomForm); public @@ -76,8 +82,9 @@ type procedure ShowProfileManager; procedure ShowLogManager; procedure ShowChangePassword; - function ComprobarUsuario(const User : String; const Password: String): Boolean; - + function ComprobarUsuario(const User : String; const Password: String): Boolean; + procedure CambiarPassword(const AIDUser: Integer; const ANewPassword: String); + { function Eliminar(AFormaPago : IBizFormaPago): Boolean; function Guardar(AFormaPago : IBizFormaPago): Boolean; virtual; procedure DescartarCambios(AFormaPago : IBizFormaPago); virtual; @@ -89,15 +96,16 @@ type function Localizar(AUsuarios: IBizFormaPago; ADescripcion:String): Boolean; function DarListaUsuarios: TStringList;} property UserControl : TUserControl read FUserControl; - property MaxIntentosLogin : Integer read GetMaxIntentosLogin write SetMaxIntentosLogin; + property MaxIntentosLogin : Integer read GetMaxIntentosLogin write SetMaxIntentosLogin; + property CurrentUser: TUCCurrentUser read GetCurrentUser; end; implementation uses cxControls, DB, uEditorRegistryUtils, schUsuariosClient_Intf, - uDAInterfaces, uDataTableUtils, uDialogUtils, - uDateUtils, uROTypes, DateUtils, Controls, Windows, uLoginForm, uIEditorLogin; + uDAInterfaces, uDataTableUtils, uDialogUtils, uFactuGES_App, + uDateUtils, uROTypes, DateUtils, Controls, Windows, uIEditorLogin; { TUsuariosController } @@ -134,6 +142,12 @@ begin Result := FDataModule.GetItems; end;} +procedure TUsuariosController.CambiarPassword(const AIDUser: Integer; + const ANewPassword: String); +begin + FUserControl.ChangePassword(AIDUser, ANewPassword); +end; + function TUsuariosController.ComprobarUsuario(const User, Password: String): Boolean; begin @@ -205,6 +219,12 @@ begin FDataModule := NIL; inherited; end; + +function TUsuariosController.GetCurrentUser: TUCCurrentUser; +begin + Result := FUserControl.CurrentUser; +end; + function TUsuariosController.GetMaxIntentosLogin: Integer; begin Result := FUserControl.Login.MaxLoginAttempts; @@ -214,11 +234,15 @@ procedure TUsuariosController.InicializarUserControl; begin with FUserControl do begin + ApplicationID := AppFactuGES.AppName; AutoStart := False; Criptografia := cMD5; + CheckValidationKey := True; + Login.MaxLoginAttempts := 3; + OnCustomLoginForm := OnLoginForm; end; - FDataModule.InicializarCamposUserControl(FUserControl); + FDataModule.InicializarUserControl(FUserControl); end; procedure TUsuariosController.Logoff; @@ -229,7 +253,7 @@ end; procedure TUsuariosController.OnLoginForm(Sender: TObject; var CustomForm: TCustomForm); begin - CustomForm := TfLoginForm.Create(NIL); +// CustomForm := TfLoginForm.Create(NIL); end; { @@ -365,12 +389,14 @@ begin end; if Assigned(AEditor) then + begin try Result := (AEditor.ShowModal = mrOk); AEditor.Release; finally AEditor := NIL; end; + end; end; {function TUsuariosController.Guardar(AFormaPago: IBizFormaPago): Boolean; diff --git a/Source/ApplicationBase/Usuarios/Data/uCambiarPassword.dfm b/Source/ApplicationBase/Usuarios/Data/uCambiarPassword.dfm deleted file mode 100644 index 91698274..00000000 --- a/Source/ApplicationBase/Usuarios/Data/uCambiarPassword.dfm +++ /dev/null @@ -1,94 +0,0 @@ -object fCambiarPassword: TfCambiarPassword - Left = 460 - Top = 492 - Width = 361 - Height = 299 - Caption = 'Cambiar la contrase'#241'a' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - PixelsPerInch = 96 - TextHeight = 13 - object bAceptar: TButton - Left = 136 - Top = 230 - Width = 120 - Height = 25 - Caption = '&Cambiar la contrase'#241'a' - Default = True - TabOrder = 0 - OnClick = bAceptarClick - end - object bCancelar: TButton - Left = 269 - Top = 230 - Width = 75 - Height = 25 - Cancel = True - Caption = '&Cancelar' - ModalResult = 2 - TabOrder = 1 - end - object PageControl1: TPageControl - Left = 2 - Top = 2 - Width = 349 - Height = 217 - ActivePage = pagContrasena - TabOrder = 2 - object pagContrasena: TTabSheet - Caption = 'Cambiar la contrase'#241'a' - object Label4: TLabel - Left = 16 - Top = 19 - Width = 167 - Height = 13 - Caption = 'Escriba la nueva contrase'#241'a:' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] - ParentFont = False - Transparent = True - end - object Label1: TLabel - Left = 16 - Top = 72 - Width = 257 - Height = 13 - Caption = 'Repita la nueva contrase'#241'a para confirmarla:' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] - ParentFont = False - Transparent = True - end - object edtPassword2: TEdit - Left = 16 - Top = 88 - Width = 295 - Height = 21 - CharCase = ecLowerCase - PasswordChar = '*' - TabOrder = 0 - end - object edtPassword: TEdit - Left = 16 - Top = 39 - Width = 295 - Height = 21 - CharCase = ecLowerCase - PasswordChar = '*' - TabOrder = 1 - end - end - end -end diff --git a/Source/ApplicationBase/Usuarios/Data/uCambiarPassword.pas b/Source/ApplicationBase/Usuarios/Data/uCambiarPassword.pas deleted file mode 100644 index 03a158bf..00000000 --- a/Source/ApplicationBase/Usuarios/Data/uCambiarPassword.pas +++ /dev/null @@ -1,41 +0,0 @@ -unit uCambiarPassword; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, StdCtrls, ComCtrls; - -type - TfCambiarPassword = class(TForm) - bAceptar: TButton; - bCancelar: TButton; - Label4: TLabel; - edtPassword: TEdit; - Label1: TLabel; - edtPassword2: TEdit; - PageControl1: TPageControl; - pagContrasena: TTabSheet; - procedure bAceptarClick(Sender: TObject); - private - { Private declarations } - public - { Public declarations } - end; - -var - fCambiarPassword: TfCambiarPassword; - -implementation - -{$R *.dfm} - -procedure TfCambiarPassword.bAceptarClick(Sender: TObject); -begin - if edtPassword2.Text <> edtPassword.Text then - raise Exception.Create('Por favor, introduzca la MISMA contraseña en los dos campos') - else - ModalResult := mrOK; -end; - -end. diff --git a/Source/ApplicationBase/Usuarios/Data/uDataModuleUsuarios.dfm b/Source/ApplicationBase/Usuarios/Data/uDataModuleUsuarios.dfm index 2e8e9432..cb3187d7 100644 --- a/Source/ApplicationBase/Usuarios/Data/uDataModuleUsuarios.dfm +++ b/Source/ApplicationBase/Usuarios/Data/uDataModuleUsuarios.dfm @@ -21,4 +21,254 @@ object DataModuleUsuarios: TDataModuleUsuarios Left = 48 Top = 104 end + object UCSettingsSpanish: TUCSettings + AppMessages.MsgsForm_BtNew = '&Nuevo mensaje' + AppMessages.MsgsForm_BtReplay = '&Repetir' + AppMessages.MsgsForm_BtForward = '&Siguiente' + AppMessages.MsgsForm_BtDelete = '&Eliminar' + AppMessages.MsgsForm_BtClose = '&Cerrar' + AppMessages.MsgsForm_WindowCaption = 'Mensajes del sistema' + AppMessages.MsgsForm_ColFrom = 'De' + AppMessages.MsgsForm_ColSubject = 'Asunto' + AppMessages.MsgsForm_ColDate = 'Fecha' + AppMessages.MsgsForm_PromptDelete = #194#191'Desea eliminar los mensajes seleccionados?' + AppMessages.MsgsForm_PromptDelete_WindowCaption = 'Eliminar mensajes' + AppMessages.MsgsForm_NoMessagesSelected = 'No hay mensajes seleccionados' + AppMessages.MsgsForm_NoMessagesSelected_WindowCaption = 'Informaci'#195#179'n' + AppMessages.MsgRec_BtClose = '&Cerrar' + AppMessages.MsgRec_WindowCaption = 'Mensaje' + AppMessages.MsgRec_Title = 'Mensaje recibido' + AppMessages.MsgRec_LabelFrom = 'De:' + AppMessages.MsgRec_LabelDate = 'Fecha' + AppMessages.MsgRec_LabelSubject = 'Asunto' + AppMessages.MsgRec_LabelMessage = 'Mensaje' + AppMessages.MsgSend_BtSend = '&Enviar' + AppMessages.MsgSend_BtCancel = '&Cancelar' + AppMessages.MsgSend_WindowCaption = 'Mensaje' + AppMessages.MsgSend_Title = 'Enviar un nuevo mensaje' + AppMessages.MsgSend_GroupTo = 'A' + AppMessages.MsgSend_RadioUser = 'Usuario:' + AppMessages.MsgSend_RadioAll = 'Todos' + AppMessages.MsgSend_GroupMessage = 'Mensaje' + AppMessages.MsgSend_LabelSubject = 'Asunto' + AppMessages.MsgSend_LabelMessageText = 'Texto del mensaje' + CommonMessages.AutoLogonError = 'Fault of Car Logon !'#13#10'Inform a valid user and password.' + CommonMessages.ChangePasswordError.InvalidCurrentPassword = 'Current password does not tally!' + CommonMessages.ChangePasswordError.NewPasswordError = + 'Los campos de nueva contrase'#195#177'a y confirmaci'#195#179'n deben ser iguale' + + 's.' + CommonMessages.ChangePasswordError.NewEqualCurrent = 'La nueva contrase'#195#177'a es la misma que la contrase'#195#177'a actual ' + CommonMessages.ChangePasswordError.PasswordRequired = 'The password is compulsory ' + CommonMessages.ChangePasswordError.MinPasswordLength = 'La contrase'#195#177'a debe contener al menos %d caracteres ' + CommonMessages.ChangePasswordError.InvalidNewPassword = #194#161'La nueva contrase'#195#177'a no es v'#195#161'lida por ser demasiado f'#195#161'cil!' + CommonMessages.InvalidLogin = 'User invalids or password !' + CommonMessages.InitialMessage.Strings = ( + 'ATTENTION, Inicial Login :' + '' + 'User: :user' + 'Password : :password' + '' + 'Define the permissions for this user.') + CommonMessages.MaxLoginAttemptsError = + '%d Attempts of login invalid. By reasons of segun'#231'a the system w' + + 'ill be closed.' + CommonMessages.PasswordChanged = #194#161'Contrase'#195#177'a cambiada!' + CommonMessages.BlankPassword = 'Retired password of the Login %s' + CommonMessages.UsuarioExiste = 'The User "%s" is already set up in the system !!' + CommonMessages.PasswordExpired = 'Attention, his sign died, favor exchanges it ' + CommonMessages.ForcaTrocaSenha = 'Mudan'#231'a de senha obrigat'#243'ria' + Login.WindowCaption = 'Login' + Login.LabelUser = 'Usuario :' + Login.LabelPassword = 'Contrase'#195#177'a :' + Login.BtOk = '&Aceptar' + Login.BtCancel = '&Cancelar' + Login.LeftImage.Data = { + 07544269746D617016090000424D160900000000000036040000280000003200 + 0000180000000100080000000000E00400000000000000000000000100000000 + 000000000000000080000080000000808000800000008000800080800000C0C0 + C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020 + E00000400000004020000040400000406000004080000040A0000040C0000040 + E00000600000006020000060400000606000006080000060A0000060C0000060 + E00000800000008020000080400000806000008080000080A0000080C0000080 + E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0 + E00000C0000000C0200000C0400000C0600000C0800000C0A00000C0C00000C0 + E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0 + E00040000000400020004000400040006000400080004000A0004000C0004000 + E00040200000402020004020400040206000402080004020A0004020C0004020 + E00040400000404020004040400040406000404080004040A0004040C0004040 + E00040600000406020004060400040606000406080004060A0004060C0004060 + E00040800000408020004080400040806000408080004080A0004080C0004080 + E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0 + E00040C0000040C0200040C0400040C0600040C0800040C0A00040C0C00040C0 + E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0 + E00080000000800020008000400080006000800080008000A0008000C0008000 + E00080200000802020008020400080206000802080008020A0008020C0008020 + E00080400000804020008040400080406000804080008040A0008040C0008040 + E00080600000806020008060400080606000806080008060A0008060C0008060 + E00080800000808020008080400080806000808080008080A0008080C0008080 + E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0 + E00080C0000080C0200080C0400080C0600080C0800080C0A00080C0C00080C0 + E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0 + E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000 + E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020 + E000C0400000C0402000C0404000C0406000C0408000C040A000C040C000C040 + E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060 + E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080 + E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0 + E000C0C00000C0C02000C0C04000C0C06000C0C08000C0C0A000F0FBFF00A4A0 + A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF + FF00FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD + FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD0000FDFDFDFDFDFDFDFDFDFD + FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD525252525252525252525252 + 5252FDFDFDFDFDFD0000FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD + FDFDFDFDFDFDFDAFB75E5E5E66666767676F6F6F6FB752FDFDFDFDFD0000FDFD + FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDAFBF6FBFBF + BFBFBFBFBFBFBFBFBFB752FDFDFDFDFD0000FDFDFDFDFDFDFDFDFDFDFDFDFDFD + FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDAFB76F676F6FB7B7B7B7B7776F5EB752FD + FDFDFDFD0000FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD + FDFDFDAFBF6FBFBFBFBFBFBFBFBFBFBFBFB752FDFDFDFDFD0000FDFDFDFDFDFD + FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDAFB76F676F6F6FB7B7 + B7B7776F5EB752FDFDFDFDFD0000FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD + FDFDFDFDFDFDFDFDFDFDFDAFBF6FBFBFBFBFBFBFBFBFBFBFBFBF52FDFDFDFDFD + 0000FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDAF + B76767676F6F6FB7B7B7776F5EB752FDFDFDFDFD0000FDFDFDFDFDFDFDFDFDFD + FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDAFBF6FBFBFBFBFBFBFBFBFBFBF + BFBF52FDFDFDFDFD0000FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD + FDFDFDFDFDFDFDAFB76767676F6F6F6FB7B7776F5EB752FDFDFDFDFD0000FDFD + FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDAFBF6FBFBF + BFBFBFBFBFBFBFBFBFBF52FDFDFDFDFD0000FDFDFDFDFDFDFDFDFDFDFDFDFDFD + FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDAFBFB7AFAFB7B7B7B7BFBFBFBFB7B752FD + FDFDFDFD0000FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD + FDFDFDFDAFB76F675E5E5E5E5E5E676FB7A5FDFDFDFDFDFD0000FDFDFDFDFDFD + FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF7F79BFDFDFDFD + FDFDA4F7A3FDFDFDFDFDFDFD0000FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD + FDFDFDFDFDFDFDFDFDFDFDFDFDF7F79BFDFDFDFDFDFDA407A3FDFDFDFDFDFDFD + 0000FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD + FDF7F79BFDFDFDFDFDFDA407A3FDFDFDFDFDFDFD0000FDFDFDFDFDFDFDFDFDFD + FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF7F7A4FDFDFDFDFDFDF707 + A3FDFDFDFDFDFDFD0000FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD + FDFDFDFDFDFDFDFDFDF707A49AFDFDFDFDA30707A3FDFDFDFDFDFDFD0000FDFD + FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF7F6A4 + A49B9A9AA3A407079AFDFDFDFDFDFDFD0000FDFDFDFDFDFDFDFDFDFDFDFDFDFD + FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF7F6F7F7A4A4F70707A3FDFDFDFD + FDFDFDFD0000FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD + FDFDFDFDFDFDFDF7F6F6F6F6F607A3FDFDFDFDFDFDFDFDFD0000FDFDFDFDFDFD + FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF7A3A3A3 + A3A3FDFDFDFDFDFDFDFDFDFD0000FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD + FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD + 0000} + Login.LabelTentativa = 'Attempt : ' + Login.LabelTentativas = 'Max of Attempts: ' + Log.WindowCaption = 'Security' + Log.LabelDescription = 'Log of system' + Log.LabelUser = 'User :' + Log.LabelDate = 'Date :' + Log.LabelLevel = 'Least level:' + Log.ColAppID = 'AppID' + Log.ColLevel = 'Level ' + Log.ColMessage = 'Message' + Log.ColUser = 'User' + Log.ColDate = 'Date' + Log.BtFilter = '&Apply Filter' + Log.BtDelete = '&Erase Log' + Log.BtClose = '&Close' + Log.PromptDelete = 'It confirms to exclude all the registers of log selected ?' + Log.PromptDelete_WindowCaption = 'Delete confirmation' + Log.OptionUserAll = 'All' + Log.OptionLevelLow = 'Low' + Log.OptionLevelNormal = 'Normal' + Log.OptionLevelHigh = 'High' + Log.OptionLevelCritic = 'Critic' + Log.DeletePerformed = + 'Deletion of system log done: User = "%s" | Date = %s a %s | Leve' + + 'l <= %s' + UsersForm.WindowCaption = 'Security' + UsersForm.LabelDescription = 'Users register ' + UsersForm.ColName = 'Name' + UsersForm.ColLogin = 'Login' + UsersForm.ColEmail = 'Email' + UsersForm.BtAdd = '&Add' + UsersForm.BtChange = 'A<er' + UsersForm.BtDelete = '&Erase' + UsersForm.PromptDelete = 'Confirm erase the user "%s" ?' + UsersForm.PromptDelete_WindowCaption = 'Delete user' + UsersForm.BtRights = 'A&ccesses' + UsersForm.BtPassword = '&Password' + UsersForm.BtClose = '&Close' + AddChangeUser.WindowCaption = 'Users register ' + AddChangeUser.LabelAdd = 'Add User' + AddChangeUser.LabelChange = 'Change User' + AddChangeUser.LabelName = 'Name :' + AddChangeUser.LabelLogin = 'Login :' + AddChangeUser.LabelEmail = 'Email :' + AddChangeUser.LabelPerfil = 'Profile :' + AddChangeUser.CheckPrivileged = 'Privileged user ' + AddChangeUser.BtSave = '&Save' + AddChangeUser.BtCancel = 'Cancel' + AddChangeUser.CheckExpira = 'Senha do usu'#225'rio n'#227'o expira' + AddChangeUser.Day = 'Dias' + AddChangeUser.ExpiredIn = 'Expira em' + AddChangeProfile.WindowCaption = 'Profile the Users' + AddChangeProfile.LabelAdd = 'Add Profile' + AddChangeProfile.LabelChange = 'Change Profile ' + AddChangeProfile.LabelName = 'Description :' + AddChangeProfile.BtSave = '&Save' + AddChangeProfile.BtCancel = 'Cancel' + UsersProfile.WindowCaption = 'Security' + UsersProfile.LabelDescription = 'Users profile ' + UsersProfile.ColProfile = 'Profile' + UsersProfile.BtAdd = '&Add' + UsersProfile.BtChange = 'A<er' + UsersProfile.BtDelete = '&Delete' + UsersProfile.BtRights = 'A&ccesses' + UsersProfile.PromptDelete = 'There are users with the profile "%s". Confirm erase ?' + UsersProfile.PromptDelete_WindowCaption = 'Delete profile' + UsersProfile.BtClose = '&Close' + Rights.WindowCaption = 'Seguridad' + Rights.LabelUser = 'Permissions of the User :' + Rights.LabelProfile = 'Permissions of the Profile :' + Rights.PageMenu = 'Items of the Menu' + Rights.PageActions = 'Actions' + Rights.PageControls = 'Controls' + Rights.BtUnlock = '&Desbloquear' + Rights.BtLock = '&Bloquear' + Rights.BtSave = '&Guardar' + Rights.BtCancel = '&Cancelar' + ChangePassword.WindowCaption = 'Seguridad' + ChangePassword.LabelDescription = 'Cambiar la contrase'#195#177'a' + ChangePassword.LabelCurrentPassword = 'Contrase'#195#177'a actual: ' + ChangePassword.LabelNewPassword = 'Nueva contrase'#195#177'a: ' + ChangePassword.LabelConfirm = 'Confirmar contrase'#195#177'a: ' + ChangePassword.BtSave = 'C&ambiar' + ChangePassword.BtCancel = 'Cancelar' + ResetPassword.WindowCaption = 'Define Password of the user : "%s"' + ResetPassword.LabelPassword = 'Password :' + History.Evento_Insert = 'Inserido' + History.Evento_Delete = 'Apagado' + History.Evento_Edit = 'Editado' + History.Evento_NewRecord = 'Novo registro' + History.Hist_All = 'Todos' + History.Msg_LimpHistorico = 'Excluir todo o conte'#250'do do hist'#243'rico ?' + History.Msg_MensConfirma = 'Confirma'#231#227'o' + History.Msg_LogEmptyHistory = 'Usu'#225'rio %s apagou todo o hist'#243'rico as %s' + History.LabelDescricao = 'Hist'#243'rico de tabelas' + History.LabelUser = 'Usu'#225'rio' + History.LabelForm = 'Formul'#225'rio' + History.LabelEvento = 'Evento' + History.LabelTabela = 'Tabela' + History.LabelDataEvento = 'Data' + History.LabelHoraEvento = 'Hora' + History.Msg_NewRecord = '%s inseriu um novo registro' + History.Hist_MsgExceptPropr = 'Favor informar a propriedade %s' + History.Hist_BtnFiltro = '&Aplicar Filtro' + History.Hist_BtnExcluir = '&Excluir Hist'#243'rico' + History.Hist_BtnFechar = '&Fechar' + TypeFieldsDB.Type_VarChar = 'VarChar' + TypeFieldsDB.Type_Char = 'Char' + TypeFieldsDB.Type_Int = 'Int' + TypeFieldsDB.Type_MemoField = 'BLOB SUB_TYPE 1 SEGMENT SIZE 1024' + Language = ucPortuguesBr + Left = 152 + Top = 104 + end end diff --git a/Source/ApplicationBase/Usuarios/Data/uDataModuleUsuarios.pas b/Source/ApplicationBase/Usuarios/Data/uDataModuleUsuarios.pas index 14cba592..213d74f3 100644 --- a/Source/ApplicationBase/Usuarios/Data/uDataModuleUsuarios.pas +++ b/Source/ApplicationBase/Usuarios/Data/uDataModuleUsuarios.pas @@ -7,7 +7,7 @@ uses FactuGES_Intf, uIntegerListUtils, uBizEmpresas, UCBase, UCDataConnector, uUCROConn, uDARemoteDataAdapter, uDARemoteCommand, uROClient, uRORemoteService, uDADataStreamer, - uDABin2DataStreamer, uDAScriptingProvider, uIDataModuleUsuarios; + uDABin2DataStreamer, uDAScriptingProvider, uIDataModuleUsuarios, UCSettings; const PERFIL_ADMINISTRADORES = 'Administradores'; @@ -17,6 +17,7 @@ type ROLoginService: TRORemoteService; srvUsuarios: TRORemoteService; Bin2DataStreamer: TDABin2DataStreamer; + UCSettingsSpanish: TUCSettings; procedure DAClientDataModuleCreate(Sender: TObject); procedure DAClientDataModuleDestroy(Sender: TObject); private @@ -25,29 +26,31 @@ type FPassword : String; // Lo guardo para poder hacer una reconexión FLoginInfo: TRdxLoginInfo; - FEmpresaActual: IBizEmpresa; - function CambiarPassword (const APassword : String) : boolean; overload; - function GetEsAdministrador: Boolean; +// function GetEsAdministrador: Boolean; - function GetEmpresas: TIntegerList; + //function GetEmpresas: TIntegerList; - procedure SetEmpresaActual(const Value: IBizEmpresa); + {procedure SetEmpresaActual(const Value: IBizEmpresa); function GetIDEmpresaActual: Integer; - procedure SetIDEmpresaActual(const Value: Integer); + procedure SetIDEmpresaActual(const Value: Integer);} function GetDataConnector : TUCDataConnector; + function GetUCSettings : TUCSettings; + procedure InicializarCamposUserControl(AUserControl: TUserControl); + procedure InicializarSettingsUserControl(AUserControl: TUserControl); public - procedure InicializarCamposUserControl (AUserControl : TUserControl); - function Login: Boolean; overload; + procedure InicializarUserControl (AUserControl : TUserControl); +{ function Login: Boolean; overload; function Login(Usuario: String; Password: String): Boolean; overload; procedure Logout; - procedure CambiarPassword; overload; + procedure CambiarPassword; overload;} - property EsAdministrador : Boolean read GetEsAdministrador; - property IDEmpresaActual : Integer read GetIDEmpresaActual write SetIDEmpresaActual; - property EmpresaActual : IBizEmpresa read FEmpresaActual write SetEmpresaActual; - property Empresas : TIntegerList read GetEmpresas; - property LoginInfo: TRdxLoginInfo read FLoginInfo; +// property EsAdministrador : Boolean read GetEsAdministrador; +// property IDEmpresaActual : Integer read GetIDEmpresaActual write SetIDEmpresaActual; +// property EmpresaActual : IBizEmpresa read FEmpresaActual write SetEmpresaActual; +// property Empresas : TIntegerList read GetEmpresas; +// property LoginInfo: TRdxLoginInfo read FLoginInfo; property DataConnector : TUCDataConnector read GetDataConnector; + property UCSettings: TUCSettings read GetUCSettings; end; implementation @@ -55,8 +58,8 @@ implementation {$R *.DFM} uses - Forms, Controls, uDataTableUtils, uDataModuleConexion, uLoginForm, - uCambiarPassword, Dialogs, Windows, uEmpresasController, + Forms, Controls, uDataTableUtils, uDataModuleConexion, + Dialogs, Windows, uEmpresasController, schUsuariosClient_Intf; { TDAClientDataModule1 } @@ -74,7 +77,7 @@ begin FLoginInfo := NIL; end; -function TDataModuleUsuarios.Login: Boolean; +{function TDataModuleUsuarios.Login: Boolean; begin // Intento hacer login si el usuario ya lo había hecho antes if (Length(FUsuario) > 0) then @@ -94,9 +97,9 @@ begin finally Free; end; -end; +end;} -function TDataModuleUsuarios.Login(Usuario: String; Password: String): Boolean; +{function TDataModuleUsuarios.Login(Usuario: String; Password: String): Boolean; begin // Libero la información del login anterior (sesión, etc) if Assigned(FLoginInfo) then @@ -110,24 +113,24 @@ begin FUsuario := Usuario; FPassword := Password; end; -end; +end;} -procedure TDataModuleUsuarios.Logout; +{procedure TDataModuleUsuarios.Logout; begin (ROLoginService as IsrvLogin).Logout; if Assigned(FLoginInfo) then FreeANDNil(FLoginInfo); FUsuario := ''; FPassword := ''; -end; +end;} -procedure TDataModuleUsuarios.SetEmpresaActual(const Value: IBizEmpresa); +{procedure TDataModuleUsuarios.SetEmpresaActual(const Value: IBizEmpresa); begin FEmpresaActual := Value; FEmpresaActual.DataTable.Active := True; -end; +end;} -procedure TDataModuleUsuarios.SetIDEmpresaActual(const Value: Integer); +{procedure TDataModuleUsuarios.SetIDEmpresaActual(const Value: Integer); var AEmpresasController : IEmpresasController; AEmpresa : IBizEmpresa; @@ -143,7 +146,7 @@ begin end else FEmpresaActual := NIL; -end; +end;} procedure TDataModuleUsuarios.DAClientDataModuleDestroy(Sender: TObject); begin @@ -159,7 +162,7 @@ begin Result := FDataConnector; end; -function TDataModuleUsuarios.GetEmpresas: TIntegerList; +{function TDataModuleUsuarios.GetEmpresas: TIntegerList; var i : integer; begin @@ -195,6 +198,11 @@ begin Result := ID_NULO else Result := FEmpresaActual.ID; +end; } + +function TDataModuleUsuarios.GetUCSettings: TUCSettings; +begin + Result := UCSettingsSpanish; end; procedure TDataModuleUsuarios.InicializarCamposUserControl( @@ -258,14 +266,261 @@ begin FieldTableName := fld_USUARIOS_EVENTOSTNAME; end; - with TableEmpresa do - begin - Active := False; - end; end; end; -procedure TDataModuleUsuarios.CambiarPassword; +procedure TDataModuleUsuarios.InicializarSettingsUserControl( + AUserControl: TUserControl); +var + SourceSettings : TUCSettings; +begin + SourceSettings := UCSettingsSpanish; + + with AUserControl do + begin + with UserSettings.CommonMessages do + begin + BlankPassword := SourceSettings.CommonMessages.BlankPassword; + PasswordChanged := SourceSettings.CommonMessages.PasswordChanged; + InitialMessage.Text := SourceSettings.CommonMessages.InitialMessage.Text; + MaxLoginAttemptsError := SourceSettings.CommonMessages.MaxLoginAttemptsError; + InvalidLogin := SourceSettings.CommonMessages.InvalidLogin; + AutoLogonError := SourceSettings.CommonMessages.AutoLogonError; + UsuarioExiste := SourceSettings.CommonMessages.UsuarioExiste; // Luiz Benevenuto 20/04/06 + PasswordExpired := SourceSettings.CommonMessages.PasswordExpired; // vicente barros leonel + ForcaTrocaSenha := SourceSettings.CommonMessages.ForcaTrocaSenha; + end; + + with UserSettings.Login do + begin + BtCancel := SourceSettings.Login.BtCancel; + BtOK := SourceSettings.Login.BtOK; + LabelPassword := SourceSettings.Login.LabelPassword; + LabelUser := SourceSettings.Login.LabelUser; + WindowCaption := SourceSettings.Login.WindowCaption; + LabelTentativa := SourceSettings.Login.LabelTentativa; + LabelTentativas := SourceSettings.Login.LabelTentativas; + + if Assigned(SourceSettings.Login.LeftImage.Bitmap) then + LeftImage.Bitmap := SourceSettings.Login.LeftImage.Bitmap + else + LeftImage.Bitmap := nil; + + if Assigned(SourceSettings.Login.TopImage.Bitmap) then + TopImage.Bitmap := SourceSettings.Login.TopImage.Bitmap + else + TopImage.Bitmap := nil; + + if Assigned(SourceSettings.Login.BottomImage.Bitmap) then + BottomImage.Bitmap := SourceSettings.Login.BottomImage.Bitmap + else + BottomImage.Bitmap := nil; + end; + + with UserSettings.UsersForm do + begin + WindowCaption := SourceSettings.UsersForm.WindowCaption; + LabelDescription := SourceSettings.UsersForm.LabelDescription; + ColName := SourceSettings.UsersForm.ColName; + ColLogin := SourceSettings.UsersForm.ColLogin; + ColEmail := SourceSettings.UsersForm.ColEmail; + BtAdd := SourceSettings.UsersForm.BtAdd; + BtChange := SourceSettings.UsersForm.BtChange; + BtDelete := SourceSettings.UsersForm.BtDelete; + BtRights := SourceSettings.UsersForm.BtRights; + BtPassword := SourceSettings.UsersForm.BtPassword; + BtClose := SourceSettings.UsersForm.BtClose; + PromptDelete := SourceSettings.UsersForm.PromptDelete; + PromptDelete_WindowCaption := SourceSettings.UsersForm.PromptDelete_WindowCaption; //added by fduenas + end; + + with UserSettings.UsersProfile do + begin + WindowCaption := SourceSettings.UsersProfile.WindowCaption; + LabelDescription := SourceSettings.UsersProfile.LabelDescription; + ColProfile := SourceSettings.UsersProfile.ColProfile; + BtAdd := SourceSettings.UsersProfile.BtAdd; + BtChange := SourceSettings.UsersProfile.BtChange; + BtDelete := SourceSettings.UsersProfile.BtDelete; + BtRights := SourceSettings.UsersProfile.BtRights; //added by fduenas + BtClose := SourceSettings.UsersProfile.BtClose; + PromptDelete := SourceSettings.UsersProfile.PromptDelete; + PromptDelete_WindowCaption := SourceSettings.UsersProfile.PromptDelete_WindowCaption; //added by fduenas + end; + + with UserSettings.AddChangeUser do + begin + WindowCaption := SourceSettings.AddChangeUser.WindowCaption; + LabelAdd := SourceSettings.AddChangeUser.LabelAdd; + LabelChange := SourceSettings.AddChangeUser.LabelChange; + LabelName := SourceSettings.AddChangeUser.LabelName; + LabelLogin := SourceSettings.AddChangeUser.LabelLogin; + LabelEmail := SourceSettings.AddChangeUser.LabelEmail; + CheckPrivileged := SourceSettings.AddChangeUser.CheckPrivileged; + BtSave := SourceSettings.AddChangeUser.BtSave; + BtCancel := SourceSettings.AddChangeUser.BtCancel; + CheckExpira := SourceSettings.AddChangeUser.CheckExpira; + Day := SourceSettings.AddChangeUser.Day; + ExpiredIn := SourceSettings.AddChangeUser.ExpiredIn; + end; + + with UserSettings.AddChangeProfile do + begin + WindowCaption := SourceSettings.AddChangeProfile.WindowCaption; + LabelAdd := SourceSettings.AddChangeProfile.LabelAdd; + LabelChange := SourceSettings.AddChangeProfile.LabelChange; + LabelName := SourceSettings.AddChangeProfile.LabelName; + BtSave := SourceSettings.AddChangeProfile.BtSave; + BtCancel := SourceSettings.AddChangeProfile.BtCancel; + end; + + with UserSettings.Rights do + begin + WindowCaption := SourceSettings.Rights.WindowCaption; + LabelUser := SourceSettings.Rights.LabelUser; + LabelProfile := SourceSettings.Rights.LabelProfile; + PageMenu := SourceSettings.Rights.PageMenu; + PageActions := SourceSettings.Rights.PageActions; + PageControls := SourceSettings.Rights.PageControls; + BtUnlock := SourceSettings.Rights.BtUnlock; + BtLock := SourceSettings.Rights.BtLock; + BtSave := SourceSettings.Rights.BtSave; + BtCancel := SourceSettings.Rights.BtCancel; + end; + + with UserSettings.ChangePassword do + begin + WindowCaption := SourceSettings.ChangePassword.WindowCaption; + LabelDescription := SourceSettings.ChangePassword.LabelDescription; + LabelCurrentPassword := SourceSettings.ChangePassword.LabelCurrentPassword; + LabelNewPassword := SourceSettings.ChangePassword.LabelNewPassword; + LabelConfirm := SourceSettings.ChangePassword.LabelConfirm; + BtSave := SourceSettings.ChangePassword.BtSave; + BtCancel := SourceSettings.ChangePassword.BtCancel; + end; + + with UserSettings.CommonMessages.ChangePasswordError do + begin + InvalidCurrentPassword := SourceSettings.CommonMessages.ChangePasswordError.InvalidCurrentPassword; + NewPasswordError := SourceSettings.CommonMessages.ChangePasswordError.NewPasswordError; + NewEqualCurrent := SourceSettings.CommonMessages.ChangePasswordError.NewEqualCurrent; + PasswordRequired := SourceSettings.CommonMessages.ChangePasswordError.PasswordRequired; + MinPasswordLength := SourceSettings.CommonMessages.ChangePasswordError.MinPasswordLength; + InvalidNewPassword := SourceSettings.CommonMessages.ChangePasswordError.InvalidNewPassword; + end; + + with UserSettings.ResetPassword do + begin + WindowCaption := SourceSettings.ResetPassword.WindowCaption; + LabelPassword := SourceSettings.ResetPassword.LabelPassword; + end; + + with UserSettings.Log do + begin + WindowCaption := SourceSettings.Log.WindowCaption; + LabelDescription := SourceSettings.Log.LabelDescription; + LabelUser := SourceSettings.Log.LabelUser; + LabelDate := SourceSettings.Log.LabelDate; + LabelLevel := SourceSettings.Log.LabelLevel; + ColLevel := SourceSettings.Log.ColLevel; + ColMessage := SourceSettings.Log.ColMessage; + ColUser := SourceSettings.Log.ColUser; + ColDate := SourceSettings.Log.ColDate; + BtFilter := SourceSettings.Log.BtFilter; + BtDelete := SourceSettings.Log.BtDelete; + BtClose := SourceSettings.Log.BtClose; + PromptDelete := SourceSettings.Log.PromptDelete; + PromptDelete_WindowCaption := SourceSettings.Log.PromptDelete_WindowCaption; //added by fduenas + OptionUserAll := SourceSettings.Log.OptionUserAll; //added by fduenas + OptionLevelLow := SourceSettings.Log.OptionLevelLow; //added by fduenas + OptionLevelNormal := SourceSettings.Log.OptionLevelNormal; //added by fduenas + OptionLevelHigh := SourceSettings.Log.OptionLevelHigh; //added by fduenas + OptionLevelCritic := SourceSettings.Log.OptionLevelCritic; //added by fduenas + DeletePerformed := SourceSettings.Log.DeletePerformed; //added by fduenas + end; + + with UserSettings.AppMessages do + begin + MsgsForm_BtNew := SourceSettings.AppMessages.MsgsForm_BtNew; + MsgsForm_BtReplay := SourceSettings.AppMessages.MsgsForm_BtReplay; + MsgsForm_BtForward := SourceSettings.AppMessages.MsgsForm_BtForward; + MsgsForm_BtDelete := SourceSettings.AppMessages.MsgsForm_BtDelete; + MsgsForm_BtClose := SourceSettings.AppMessages.MsgsForm_BtClose; //added by fduenas + MsgsForm_WindowCaption := SourceSettings.AppMessages.MsgsForm_WindowCaption; + MsgsForm_ColFrom := SourceSettings.AppMessages.MsgsForm_ColFrom; + MsgsForm_ColSubject := SourceSettings.AppMessages.MsgsForm_ColSubject; + MsgsForm_ColDate := SourceSettings.AppMessages.MsgsForm_ColDate; + MsgsForm_PromptDelete := SourceSettings.AppMessages.MsgsForm_PromptDelete; + MsgsForm_PromptDelete_WindowCaption := SourceSettings.AppMessages.MsgsForm_PromptDelete_WindowCaption; //added by fduenas + MsgsForm_NoMessagesSelected := SourceSettings.AppMessages.MsgsForm_NoMessagesSelected; //added by fduenas + MsgsForm_NoMessagesSelected_WindowCaption := SourceSettings.AppMessages.MsgsForm_NoMessagesSelected_WindowCaption; //added by fduenas + + MsgRec_BtClose := SourceSettings.AppMessages.MsgRec_BtClose; + MsgRec_WindowCaption := SourceSettings.AppMessages.MsgRec_WindowCaption; + MsgRec_Title := SourceSettings.AppMessages.MsgRec_Title; + MsgRec_LabelFrom := SourceSettings.AppMessages.MsgRec_LabelFrom; + MsgRec_LabelDate := SourceSettings.AppMessages.MsgRec_LabelDate; + MsgRec_LabelSubject := SourceSettings.AppMessages.MsgRec_LabelSubject; + MsgRec_LabelMessage := SourceSettings.AppMessages.MsgRec_LabelMessage; + MsgSend_BtSend := SourceSettings.AppMessages.MsgSend_BtSend; + MsgSend_BtCancel := SourceSettings.AppMessages.MsgSend_BtCancel; + MsgSend_WindowCaption := SourceSettings.AppMessages.MsgSend_WindowCaption; + MsgSend_Title := SourceSettings.AppMessages.MsgSend_Title; + MsgSend_GroupTo := SourceSettings.AppMessages.MsgSend_GroupTo; + MsgSend_RadioUser := SourceSettings.AppMessages.MsgSend_RadioUser; + MsgSend_RadioAll := SourceSettings.AppMessages.MsgSend_RadioAll; + MsgSend_GroupMessage := SourceSettings.AppMessages.MsgSend_GroupMessage; + MsgSend_LabelSubject := SourceSettings.AppMessages.MsgSend_LabelSubject; //added by fduenas + MsgSend_LabelMessageText := SourceSettings.AppMessages.MsgSend_LabelMessageText; //added by fduenas + end; + + With UserSettings.History do + Begin + Evento_edit := SourceSettings.History.Evento_edit; + Evento_NewRecord := SourceSettings.History.Evento_NewRecord; + Evento_Insert := SourceSettings.History.Evento_Insert; + Evento_delete := SourceSettings.History.Evento_Delete; + LabelTabela := SourceSettings.History.LabelTabela; + Msg_LogEmptyHistory := SourceSettings.History.Msg_LogEmptyHistory; + Msg_MensConfirma := SourceSettings.History.Msg_MensConfirma; + LabelDescricao := SourceSettings.History.LabelDescricao; + Hist_BtnExcluir := SourceSettings.History.Hist_BtnExcluir; + Hist_BtnFiltro := SourceSettings.History.Hist_BtnFiltro; + LabelForm := SourceSettings.History.LabelForm; + Hist_BtnFechar := SourceSettings.History.Hist_BtnFechar; + LabelDataEvento := SourceSettings.History.LabelDataEvento; + LabelEvento := SourceSettings.History.LabelEvento; + Msg_NewRecord := SourceSettings.History.Msg_NewRecord; + Hist_All := SourceSettings.History.Hist_All; + Msg_LimpHistorico := SourceSettings.History.Msg_LimpHistorico; + LabelHoraEvento := SourceSettings.History.LabelHoraEvento; + LabelUser := SourceSettings.History.LabelUser; + Hist_MsgExceptPropr := SourceSettings.History.Hist_MsgExceptPropr; + End; + + with UserSettings.TypeFieldsDB do + Begin + Type_VarChar := SourceSettings.TypeFieldsDB.Type_VarChar; + Type_Char := SourceSettings.TypeFieldsDB.Type_Char; + Type_Int := SourceSettings.TypeFieldsDB.Type_Int; + Type_MemoField := SourceSettings.TypeFieldsDB.Type_MemoField; + end; + + UserSettings.WindowsPosition := SourceSettings.WindowsPosition; + end; +end; + +procedure TDataModuleUsuarios.InicializarUserControl( + AUserControl: TUserControl); +begin + if Assigned(AUserControl) then + begin + InicializarCamposUserControl(AUserControl); + InicializarSettingsUserControl(AUserControl); + end; +end; + +{procedure TDataModuleUsuarios.CambiarPassword; begin with TfCambiarPassword.Create(NIL) do try @@ -275,13 +530,6 @@ begin finally Free; end; -end; - -function TDataModuleUsuarios.CambiarPassword(const APassword: String): boolean; -begin -{ if not (ROLoginService as IsrvLogin).SetUserPassword(LoginInfo.UserID, APassword) then - raise Exception.Create('Error en el servidor. No se ha podido cambiar la contraseña');} - Result := True; -end; +end;} end. diff --git a/Source/ApplicationBase/Usuarios/Data/uLoginForm.dfm b/Source/ApplicationBase/Usuarios/Data/uLoginForm.dfm deleted file mode 100644 index bfa1641a..00000000 --- a/Source/ApplicationBase/Usuarios/Data/uLoginForm.dfm +++ /dev/null @@ -1,1099 +0,0 @@ -object fLoginForm: TfLoginForm - Left = 790 - Top = 387 - ActiveControl = edtUser - BorderStyle = bsDialog - Caption = 'FactuGES' - ClientHeight = 241 - ClientWidth = 385 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - OnCreate = FormCreate - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object Label3: TLabel - Left = 24 - Top = 108 - Width = 39 - Height = 13 - Caption = 'Usuario:' - Transparent = False - end - object Label4: TLabel - Left = 24 - Top = 138 - Width = 57 - Height = 13 - Caption = 'Contrase'#241'a:' - Transparent = False - end - object Label1: TLabel - Left = 16 - Top = 72 - Width = 94 - Height = 13 - Caption = 'Inicio de sesi'#243'n:' - Font.Charset = DEFAULT_CHARSET - Font.Color = clMenuHighlight - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] - ParentFont = False - end - object JvGradient1: TJvGradient - Left = 0 - Top = 57 - Width = 385 - Height = 4 - Align = alTop - StartColor = 2971346 - EndColor = 4828405 - end - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 385 - Height = 57 - Align = alTop - BevelOuter = bvNone - Color = clWhite - TabOrder = 0 - object Image1: TImage - Left = 0 - Top = 0 - Width = 385 - Height = 57 - Align = alClient - Center = True - Picture.Data = { - 0B544A76474946496D616765F6750000474946383961C201FA00E60000FFFFFF - F5F5F5A92824ECECECEB743DF48545EF7B40DEDEDECD452DEAEAEAD0492EDC5A - 34FAFAFAF2F2F2BC2A26B02724E5E5E5E26236B95B55E1E1E1F8F8F8D95532FC - FCFCF5D6CAD4D4D4F5C8B5D1B5B0F0F0F0E66A39C23428D65131EEEEEEBCBABA - FEFEFEF7B192F49366CB938CD34D30C7726AC63A2AE96E3BC7564CD26958EEB5 - A5F9E9E3D7C5C2C93F2BE46638F8E1D8D2867AC9C5C4E05E35C03027B82725C7 - 453AE79A89B9322ECBA59EF7A47BFCF4F1FCF0EBB93A36D8D5D4B44741BF2D26 - EEE2E0A22925AB3934A7302CFEF8F5FEF9F8C33B33DB5D3DB52724B12E2AD251 - 3AD9CFCDE47D60FEFCFCBC7D75BD2C26EBE9E9D6D6D7FFFEFDF7F1F0FEFBFAFD - FDFDF3F0EFE8DDDCFBF8F7DFDFDFDED7D6D45A43F4F4F4E0E0E0DADADAC94E41 - F9F9F9DF6648EBEBEBF1EBEAE4E4E4D8D8D8EDEDEDD94E2FD95738C53729EFEF - EFFFFFFEF3F3F3E2E2E2EBECEDE8E8E8F7F7F7EFF0F0CDCCCCF1EEEDE7E7E7F1 - F2F3F1E8E5E76035E86B39D1D1D2F2F3F4EEEDEECF3F2AD2D0D0F1F1F12C0000 - 0000C201FA000007FF800582838485868788898A8322173C5300919293949596 - 9798999A9B9C9D9E9FA0A1A2A393560C717F6763670D710C56A4B1B2B3B4B5B1 - 8323B887B982BC05BEC0BABDBBC2BFBF3A193046B6CCCDCECFD0D1A50C011F70 - 1075636B6D71161621E0D2E2B4E02156E7E8E9EAE5E3968BEFF0F1883A8D3BED - F7F8F9FAA2A601677513DC9481A38D5B180BB0F629BC64C502030A7102489C48 - 31401C0A0713EA3336AC23C78FC10C8504590CD808643C16AA5CC9125AC30003 - CA68D1E265421908633E18D4D8529F290A5DFEAC3933A0A8D1A31FFE707BB54F - 9ED3A78B4624EB49B5AAD54DFD621ED8BAD58B9B6C6B5A85796525C4D567211C - 024D05A70E843270FFE3CA850067C0862EDDCAE283CAB76F2F1130CE0A1EDCF3 - A556AE5D05D649F0A141000A0C2C10B665254C805409EA947133C18BE7CF9E27 - 88BEC9F84F808366DBF95DFD54C785296C26CB9E2DAEDF3F2D880FCCD4127031 - ABC7DF688B4A4BA1CD87CC9BBDEC5ECE9CA6CD3A701ABB4A2D8EB5F577272F14 - 7122BCBB77592FCF40505ED38D4037CA0FD88490C02EDEC87ABF33B410A6CB86 - 319A95E35E0E9A79D7E78C75414170D22462006B072A9260010B1E825211B1C9 - 27E18498D8564768742590001C654C3053796580F51E4F1486704A030370881E - 6E5B3967DE8B9C75C6E287E6E1F44737D55DA7E32E52C1C00377140629E44B1F - 5CE8C5408DB5B1C6FF186FA597581DEE0D489D7CE05810C006097488988B37D5 - E1A59710BCB5998C5B0EB4018ED10CB2608387ACA9669B6F1AC2A6200D9E944C - 1542E639615A71AC0107676E24D0401861C4A1247E7079A8DB04741574DA2B53 - D26662351C7AC11588D02530C651638CA1615B6FADC8951603AD110042D0ECA8 - AA21F4C050849EB07AC7E7067FDA344617AF3864E8922A5ACA9B798B49170689 - B3595964194E6AE14686037CB0C6061BFCF107B46B7C4094A76D71C6E2015E45 - 776AA4B53028EE81E48E6B6EB9E89EAB6EBAECAA5B0032F6C42AAF6CE650F047 - 029C95716B59E09862E87DD7ACB8DBB28CB502293B839913C01A00EDC75B8839 - 6DD0461B5D54D445FF1B0D48BBC150F84140E6568C7E100003E0CE42679CE29E - AC72CA2C13E2A69C28BFFC4B062C4032EFCD67D57B6F876524D0C637E5985868 - 5067B4D5A1AF006E13471C631178D5A4D6B871E9570557BCF4D5584B74710319 - 7F304002A1A6A76C1D67E04AAC2CEBA6DDEEDA6AB7CDEE0880155132CE742B64 - 4E180D8CD161A07F8411B4390D3D74D97110B8B15F4D21367B1744929D654535 - 855BAADB57EE5D440146845E0ED1D25A6F3DED0763043CE3047588EC342D32A7 - 1EF3EA2BABDE7A21705FB083CD75D7BED0DD79EF0DC70614F0FB779510357046 - 669CE977A497496D70EA3973EB034E181B5CD8E29170B0C27464D833A03DA161 - 5C1E5144124DDCC0FF50C46F1B72006793E2F6FA6CB7CF3E8376C280A7EDF43B - 5F59DE80C2F147EFBF07AD56000D009D8A6612104611447990499FF318D005BD - 4DAD7AA6699A37B497BDED758F735A9B98508AE6B119B9010E6D600033DC47C2 - F795B05DBF004CBCEAC7C271E82C4B36D1DFB0FAF7B78614AA0DF7A983E166C2 - 2D0336E6348D5B8905FA0410AE7CE50C6D78943796C8C4EC656E7301B818C6A6 - 95A20ECDA80C1FA040F3426100727591415FECA217C70846328AB18C683CA31A - C3C8C60421830555D8620BE7188B17022A017DF31D0DFD770AE3802D39B8395E - 7BFE2020F8C8112DF6FAD37E488744A631511D4C748805A1D805298EAF8A8A52 - 8FA098823A137AF2FF84EF938AEC8044C752D6C28ED4CBE31EFB674343798D43 - 1EA2498D08B28611EDE3710340CFA26C3432F8A80392137448E6302845A1202A - 3D5E80C0194676484E88F199D08CA634A749CD6A5AF3406F7442334DC9CD4CD8 - 312078E4DF2A69D89038D80793DBF20A4E6A09996DD682017FA8038B8E84C791 - 2D9179BF4B47301930CCCE4D917002FBCA1AE2A0C04FACD18C6D7C661ADB5846 - 851E74A1647C1760E2D8CD8A0EE77E7A0BC8EEC4394E1AEAAA0D7F48D15BC8F4 - 1CBB180452D2A8D707CA60C4D201311DE18844D0F4E910615E302295C4D80686 - D7416EE9AB0B418CC535874AD4A256B309B1939B4597FA0913B5610085FBE099 - 80D651720AF3321CFFD4A52C43543057147416698189D474D3B31BF9D27792A8 - E1399648C10B4EA498A0D321D2E0D00092CD62A80DB5665EA3B9D7315ED34E3C - 981F5307EB4D6A14893375182842AADA51FA5C89A7C85A0EC174E2557E35E37E - 7FD28D17C8862B6FA023A6699DE95A9DE8D6286A7028D798408B20B0062DBAF3 - 12468DED350920DB2EC68E07AF252C37ADE4A70EB974B1E5680842F458557F01 - 10A05A7D4E4E4C33A0F8D462880CF350B74CA5BDE15A76126A156E5B6F6A5A9D - 2EA9702C2AC319BA91DB4AD4F6BCE8856613DE958C65E8F6BD941822AD6A643A - 3DD6D4908CED9724E320BC3F1A6F3D1004627931C140A87AC85666F52C5AB12B - 5AE14AB27B10C9A0FF7707A0C3F00E6079B230006D69DBC50D6B588C1CFEB087 - 3DDC611183F8C4252EF1884DCC61418820032B842F7CE5ABA2D2E5858FDD1BCB - 59F36B0E6AFCE1389A91116E7CE89883004D1661F843A5C666BDEA02371CF944 - 075BB7E73D9C8A6F5A458BEC017AD686616538BD6046EFCC5820E332D31858A6 - 7A725A0A15458B60E460F935EEF83A66B84591E60C84F4EA80654AC458226929 - 35C52739D7BA4F7E7A4FC219DB29D814C5B7016578C59066B1A4493CE94A47FA - D21A7E5760CA3CE385C132B1372E87430230C506546C2CC4EDE85A2D631CFCD4 - 994674B10B70F61C02C8E9E7834A73B2A0594968D26ECECA535474E494B5D1A0 - 8A42C5964671A59FFF19624C3B7BD9AED90EA7757B0A3F2156B17AFC09A9B996 - 448BE878B83C1EF5A13453BC992CAB2E7771A47339814B99F83401E9A6A08279 - 4DE8094E929853FCDC31790307C53E5AC3047836A4039E6C81175CD23D8AF1B4 - 2DCADB4F635BB4DB035F4EAD0619AA325698FFFA5A937AB82CB018ECAB94C065 - 9D9309EFF74466DED9AD3705F9595AD3664CDFB0E44D624F250B83DBFCE037C7 - B401EC54B3853315BAB59AB99A67EA0D88943A89154FB5AA1DCB96CDCCC82B8B - 61E7E932D1EE40B227DDDF4679BFA43CE57B5B248A9E839600AD48BA818A3016 - 014FBBDAD7CEF6B6BBFDED708F7BDA33AD0357F97CA90DF7ADC8E0CC4AFA00BB - 62DEAEAED2572938FFCC846DC8109398120BFAB8318CFCEA492494BC7FC9757B - 4F32C219E4DAB4381673D2EDBDE638C739C1731EFAB96F185E7767781CE67BBE - A1E7F3C114907012D5CDE3C059A6BF3A8CA55706D255D4540826EEA6A7D2DEAC - EB5F36F1C1C394F895A935BC20CBDCEC35DFB0DCA74FFDEA4FBF0934A35DEA4B - 69255AF9B66C9149F9EBD90CD23F985ADDBB2E2E35C6879C5806843461111055 - 430EFC4022C93197D3F1C969CA56E473B7BB2FB7316BF03572C56FFE86760067 - 7D6F97806AC780D5E7806EF72E8EA07DDBD74267B62C03D06516471F97835F7C - 14619504786EA63DE9B74A0D113C4BE2162FD2195F511711E40D911207671059 - A4024178917FD813FF49FB847C55F65657B6795E03362B22558E867628A08048 - 9884D6570037A01D15C87D57A222109081A8D12FAC766A7C07380F86535CD300 - 919785E3245C37948280541EECF11B45280914B006E3616E5072176E26793535 - 6592644110F63D60873189B606D522528C465707117D4A388884E8765291124F - 38471738851A185CF5C135155371E0564382536A9168649FC558FE72282AA27B - 93A53C19010EF6822FCAC128091016166139FA775F2BC7723DA87C9A472DD6E2 - 6AE9F1539C440A697784BA4800BB1870BBF88BB9188CC07884BEC88BC6588CC3 - 688CC4788CC6D8042BA00C7B9688F2D17D52380083627182D33912E14816D72F - 86063E60B78D4D33FF78ACC44FA4B60129927B047413E85648FD502407767FDB - 781192D78ADB75875783681AB331D6E25FBAA14CE4258885389085C85E3D278D - F473668C628DA8165C6A614E2FC70D151765B60791D2327B1E585CA660196C01 - 5E1F723CD6C83496315FDC423984348F98638FDC838F5F977989C68F44912D81 - 9458FC5373C97893CA989338B9933AD9933C8902B1333B08693B79B7906DD05C - 35E4585DC06D78713D5AA75F43833114231190B17FE4F83B82A368B9E719BCC1 - 1E1F102DA9504434C11EF13711AAB8924FF48AFE148B02E83588124B811242D1 - 28093FE99376599778799739B9732BC002EE35947BA209D4C0309CC18849874F - A3555A527489DD68FF0EC28479175349DEE67A7B143811114088821EE5E12570 - 902D92432A64A3148077359A539ABF068E79186C02C831FED595E305729C8002 - BA289BBC489BB2799BB6A98CB6899BBB398CBD599BB3199C3AF99B06904D8029 - 2169815296C05BB937850D7098BFE48DA7B094D2E218B4D777A7B06DE68717A1 - 587B9B0864A2F291FA712964A91466499A55C639E09853CBC787D51284CE3736 - BC339774099CF6799BC3299CF8B99FB9E99BFAD99F77999BA2F42AC759155562 - 68E1175FE6F41E30580AABF727CB320609E66043D74ADD6535172178BFF3908B - D994C437898D359214A64BB9911B63A30D5E2899DF9335A8C99E7A382D6D398B - A9B51F7C1306B580FF021C709B392A9B3B8AA3BCF9A33D1AA43FCA9B42CAA33A - 3AA448BAA34D7003198088055A1816B01677E16593C00028E228542A09780343 - 3D038A27F748BED36B6E254553994049F998C056A61919861CC9247556A28861 - 130970061233956679A76F65499AB779EE491442283603D137378AA4848A9B79 - 50A8889AA8B279A885CAA8F80937CA40814F7A0FFA959D21D599224322143083 - 54231D7016066DC024726A2A46765F73F894BA426AD5F985D6954F82439DE699 - 74C515A541E16ADB322A3C444067182D14238216C39E5D282D7CFA01C44A805A - D2225FB17708330A2870A839EAAC43CA017990A3D4EAA3D00AADD55AADD8EAA3 - DA6AADDEFAACDCFAFFAD28600037A04293EA137EB794AF5438FA823E94100709 - 508A5C956B0801AA06D6A58FA25D3785119EF537180776A3498FE1478985B2A0 - 53D990ABA42B44F396255A1E99A42C671816BD9AA72EFAA2FB18A3C31373A3D2 - 2DBFE17BA370A820DBAC3EBAA8221BB2210BAE272BB2E0BAB22A5BB22E6BB2DE - 0AB3204B004D8012E78A0F26B22BE9681E9EE10663E0AE9300AFBBB199DA2020 - 8592371ED3A5EA2649101199DCC82F34A53D11A68718D998A3F510E6346B093B - 9299F9315303266F0A75736A7EBD1A821373B6C17AB1EE692D22F5A61B7B6E9E - 0A9B9630AD79E0ACD3FAAD754BB7752BAD76BBB7758BA3772BADD41AB884EBB7 - 829BB7820BB886ABFFB777DB048DF09737DB0C8E89B5E3566E5C3101FB420901 - 900033627F6F282D5926A7CA137E81137B7A78834DB37F33C54F16E98581F794 - 5562195A3B7E00F40F6E8BABEBC11803F8279F79676B40B667AB87690B2DD4F2 - 9EAAB021E005A72D628ADB604FD7C5097B0BB8D92ABD2DCBB7E17AB8899BBD81 - CBAD843BB879FBB7897BAD742BB848957D91EB0C9B483E2AC8955CA91E991BB4 - 9CFB213CA44E9D89BCE8A1B42453A9B147A695B434B24A7458BB9E80F7BF0EC9 - 4F60080E0FD106CD47A25B22B694456AD63635B19614E6E785E2B3A7305ABC6E - 69349DA1BCA30220783622DBC401824BC2E36BC2D88BA3283CBED34AC22EFCC2 - 307CC2251CC32ECCFFC2D9FBC2742B064CE808F479BED370254C7234E41110E5 - E6B3402B0971300607661E42561E4CAC1CA5C24CAB4B7E2F676A8F6195C6C7BA - AABA9DD7195C30D53FF63A6CB73A39038167F6346AFF20393D341039F12CD539 - BCC5FB9E5F932D99A459EDBB255B856E40D409835BC3348CC37E4CBD33DCBD28 - 2CC8E3CBAD30DCC785ACBD0400A990EBC3A160999791223BE4C45F3252CAF2B3 - 24120703D0195D022A961BA7D91041F855BA10D985185A8F43F73F541B875669 - 82E6D027E361A29BD91E08848D5D10134E529299B20ACE42BC7C48ACD6722D1B - B2BE1F2C10712164251A43212CAB9800C32FE0C2D1FCC2D15CCD1C30CD892CCD - D98CCD896CCDD47CFFCDE0FCCDDC9CC852A17090EC0939DB6A01632900D6C63C - 851E46BCC99D6C8A67C087452357261AA14AD39D930B82C13B954E996D68EA83 - 033CB05EECC5D4201EB72A4B5E699D19690589842C88B17BD840100370066740 - AC185D149E52CC983CD1A4010799A18E25FA30B1868A817809355CCD748BCD2F - 90072F1DD332DCC2D23ACD2DFCD2248CD328ACCD83CCD22B7DCD341DD424EC8C - F273CEA0D00F58D2418BD433CD62C5C22357F1FCAE9D4C39D659BBB0B4CB0F83 - 6E5F18A613B4BF2F679E4E794F90648EF956B5509B898193CBEE7629F7A7675E - 0C347937C666481722AD219FD2166E312658AD5C191D84EBACBC0F132CDC3075 - 9100CED67CD82F70FFD886BDD88ADDD88CFDD88E1DD9906DD88DDC5E46AD09C9 - 197BC2C321CE0117D01131D60914BDE5159A2CD535027E3604C4A06245CBCB7B - 49C19D70B6911171C1002DB020DA63FB7BB6A95CCA95DA402C352A519CD232E5 - 984053195D600D1D52C78B621E7011266112173CABC69A756E110384045838CA - BC25BD911306D1AF9110D3860DD3300DD432CDD2E52DDEE61DDEE75DDE8C3DDE - EB4DDEE81DDF2F8D02632658975D0910DD05BC02480433006E4CB678416A5143 - DA471C099C5C9819787639DB001BE387DA4DDDB916A615E9724C99A193385A18 - 37DB67EB48FDD2DB50F574CAB43C910238CCA32B01C4C1632C9EA2D1195C29D7 - BD51175F099602E8FFA779DDC1B42C1067C85CF90B0089DDE33E5ECD3F1EE442 - 3EE4428E07441EE4467EE43E9EE489CD0162B0A4B273DF94D063A80055020375 - 63A078FE04784F8D2C511DB4B9444FCF6916C411997356800D9C78B06D5D6278 - 99C26AC51FAA6050AB942F277F1D0E38090D01A353077F7076534EE2BD664EE8 - F847CAEDC1266AD204F195C2BAE830BAC1E4369EF9FC6752C2E390EDE3938DD8 - 3D6ED84DDED896FEE38CBDE9950EE48D0DA9042AE5FDA0248B6667BBDA6D5B2E - 116109CFA50DE6F78B47DDF010F6E12C4AA1536DAB5A710A313FB478072ABBFF - 9CCA984874DDA3351C6E0E5B67250ABDBC7CEEE77FEEC5AD74EBF65B3C907EE8 - 5CC22C8ACEE88B2EFF8B03802DE466E313FD4148E465446EE411A0E43E9EEE4C - 9ED8E97EE4EFFE02ECAEEE45DEE3F1EEE36200376466EA96B106C4E37E7441A7 - 162CBCDCD66D61E9E5B18EC4B924BAE1E3EF6132CA6E765CFEB8B1A4E1DFDC09 - 5CDA157BDAB99D93C9E6146AC018DFDBCDBE28A056506F9DAE97143A5E021731 - 021A35F17E5DA22119FD2CC45BF3367FF3FDA882294E3D53C5E3F4FEF3ED6EEF - 4ACEE4F7FEF3F2FEE345FF026240004CBA03F67DBEE5F4D42BA24ED920315696 - 686FDCAB2105D5096FE0613E10FE1D573BB490CF1919470B6447B32D59EDDFF8 - 7756A69C6FAE2BB0BAF6D68829F27A3E3DCA0454F864094949C51B10841E2D26 - 71F1F0D04110190DFF96177BF3C44BB6130152710548131DE2221401949FEE96 - 4FF97860F9F24EF947AFF99EDFF99BFFF9A20FFAA35FFA9C7FF9957FFA2F6000 - 8D805B903C290EBF43E756CFD639DB19FCC6A61614234AE09A1AE61D770DC7DA - 158C6864E6784928FEC15C85672735E7D948A6B53D8E0D165C760FE2542878EB - 165AFA6B5A42E196D8B221F55BD79BD22C347FF3EE59FED0C2F859E3F8A1C3DA - AB7561937FF4E84EFAF21FFFF42FFFA31FFF9A8FFFF06FFFF30F082F11828483 - 2F4D23193046008D8E8F909192939495969798999A92210C011F756E135A5E6E - 75631B017161AC716D1B6B6B1B1B7FB50D0D6D6D7F03A1A563015690140313A5 - 6E65A25E5ACBCA07FF1310630D141656160C14715D7F6B6370651307E107A46E - 1009037F6D710C5621EED50C6171015D6D0DB56D5D01610C16FEFE5602B673F7 - CE5A973310B4842305ED4F1C0AFC0086A05430DE3C7B7F60ADF9F0E18C478F1C - 39C69235ABE4AC912669FDC1A5EA21056CF3B47DF0062EDC843A670230001021 - 029E9E83800A15FA7328D0A246870AFA895450D2A34F813AF549B5E9A11B1958 - 4CDCC4B5ABD7AF6031596170B0CE282F65CCAD51D70F9EAB35673E90ACB532D7 - 065E6E7C017314C2429704CABC286356AE4E9D325E0EA08D368DA0356C0DD60C - 800321AFC28513CAC019B3765F3F6AFEE2050860EF563E5510F97D1618B0E2C1 - 840B17FF6999BAADFFBB4915E58DAE77EB1EDDDFC06BA59C05DCB4BE380F5929 - D7DD6000849ACE20E4B4C0B350A19E53AD4B0D8A9DEA54A14BB907FDAE747CD2 - ECE6C3BF1053002B8F2961E3CB9F4FFF91A733A148693EE390C2E7D0714416D7 - 5CB6D88557290304F0880571AC019B385A9493C007198D5186425E40238D05EF - 30E0E1451B9C91C061A340E886291336A08A87A079A81B3DB9C4881A8BFF0814 - 42357E21741943633884DC8F10D9B61524EFC0130636BB95D61B5DBE05579C69 - A78D06646AAC20D9007E6E8873D3073AF1141550337C09E6984285696604613E - 75669A62AE19159B623471C3053BD467E79D78521407288369B64617FE59139A - 870108281781E9BCFF32462F6EFC124C2771FCE18D388AEDE7D0350D24E00686 - 1AC601DA3FFD30709164245E160E5AE69CB14117AB78F8998B17F9D600ABFE85 - 5A634006E9185B43AAF42A6590D4DCC6C98DA1C913533D31C6D8DBB2CBC6D8C5 - 712D21F7D2B42F2147DA95A168090197D419C566996D0EC5A69B6782DB53B962 - 9E8B6652E86237C20A2C54015F9EF4D61BD68D61487A969F3A718823A801C275 - 2881B770D3CB04094803D94C88693141399BADBACE8D1464BAA962100CD04018 - B70AE48F3C6D70E38D28A64608C16614D24AA30547C2888B3E41BA2A288E64E9 - 3A4E863DFEE82B6DA1B64611B1F1C0E4EBB344174DF46848CF3325B5D52A4DCF - 3D586A59C707EB78FFB9EE0C58839935D6E45E3D66D7E8A6C935D85E8F5B369A - 5B93198118EFC66BEFDB7067D249176324845602A944F40FA86114FAC1000392 - 444BC175E735011C6B34B0C1A21034FC0C1CFCB11A915B7F68AAD0963AFDB777 - B1A4DD35E237A67A91591D906FD0460081F23DCFAFAAC96C6B185D38B723CEB3 - 396DBB4B930F194941D65469ADEDBD02FFE3F0D2BE5425922E678497B6DC0200 - 76516B420F261E664AAF2EB9D2574FF60CD4A3097DF7D1878DE60B2824B28313 - 71A7AFFE820138378A66798726A8FCF234F077E07311DE4B86708C5813397540 - 876770B5390A54EE626E401CEA6CB51A8F89AA0B91E9C6371263A2930D2071AA - D05BEFA8E5AA0E5AFFC3456D90DDAE7236BCE0052F3912A9C48D681634A6C164 - 692E8409D3ACC59B8CC4627936995AD5C6C6C31EFA906B0BF821108548C4221A - D1888398539DD6C744B831E00F6611CCD432C7C25789C67E8013492C6641B8CA - 08E618DF50CC31EA9080CEF48320FF0A8827D600872C69017E0118D407A9E140 - DD6CA31B8D2BD1A9209680C8B50A541D0C64202910C207F1A876D69252D258C7 - 229FE166851F3C5E0C2739496B61A42437CC964DB61547E7F5106D66DA1A1141 - 89441F829294A62C222A45393602ACE0024568A22CE915860F34CC0D09F843EA - 04C5408BFCE16F0308C916556230CB086630285A4BAB3407AAD050A00BA000C7 - 1BC7D00506F2F29AFF4103D119E0D00B4A39CC1490FB833E34B8B750C5C35547 - 6A40DD66D710E2995078C00AD6CF08188F2335AD78337489F19A568F8CA48454 - 59CA21977632C4B105116B072DE80C126AD0853A3488101D22431DDA5084F230 - A2166DE844311AA715C0609620A5CF8D02009852D4610DFDB2E67F44F387338C - 218B0353C90712E0456FDE4463EBA06333551A8F10D621315A38E93A5824485B - 0DCA8E1FA81BE84227A10BAAA856D8FC203A03642176F6285AEFCCEA8F54132C - 611109922EB2E73D8987CF6A8DE6922839090EA3D33C2438D4AD191DA25B8308 - 578ACE60AE0FCDEB46EFCA35BCFE30A11855685C358A3502CC8911214DEC57AC - 90AF3AF0A8019E92FF1F4FE5D1D297C6458B321D515E2074B70D44D6633B2D6A - 002A77A103E012B22B15243683F6B4A4520674E2280504CC91B287341257E6AC - 5F5547E8239D094FABF16C8DEE1A81469A1D8FAC65155A3F35925658AC157304 - 8DA874F54A5D882E60BAD2BD6E7517AA5DEB6277BBDFF5EE7691202718F060B8 - 8A4D2F45EE038152283050AE23AA8B46EB52C05D7624B598694D17528E3354F3 - 5F922DAA6AB2C146706468006D9886548B2AE096E94244A1D02361C82897D34D - 8E9E165167696FC62B9D29F2C33B5B9DB41AE9D5AFE2369B649DE16EEE3192E6 - 3A57936CED6478C14BE319DB58AFDDAD6E8EC51BDE1DCF806D1E8DA57A874C09 - 2B18B08D111A431BFF22A2525EB2D4A563F888306731D36EF257A8D48187933B - B81CDFBD263119E2568019ECBA6265E3979FB34C6CD3B2190CFE51751AB66A6F - 7FA7D53AE34E48E8252E3DC5BAB4D5F106165A1CA65A61BCA5AA5DF7D0884EB4 - A217CDE8463BFAD1908EB4A27F7C0378A18FC8987E84153EF19C0C9D61A84D66 - 60DF2A6BD9CBCA651622AA4CC9CA70D238DEA897E8ECF2713780E4039421014B - 5E2D993DE8220AD0E38E3485EDCD463721D3AD02CEBBE5F0557D6B673B278746 - ED78E4892569D66BD9B0C52E0628F3645C631CDFF8DBDE7EA88FB34BEE70F778 - 011168820E32B0C44C67DA2F0340CC4DD6E0A9A2AE76D4501E807D43826A9A5E - ECCA2865405FB61CFF56E5B83040BC30B0503936E640CA9A155C065195857D33 - 700AB056194EF621DDF9DB8E9FF0D9B699A7719BE6B293607B382F0EA833A6B8 - 93485720D12F6774CC1B3D7345A7610133AFF9A2757E7344BF5CE78A8E799C44 - 004B77BF3B53C540982E172C5F733E790C2FD537480E95EA7F8FC31428F597D3 - EB69F0694D69B4BB3DED3AAAD8E02E37FD1ABF4E6A1DBCC8D4542112321AA71D - 5641BCBA102F5291D2E2EA40F20C80DC200982D76E31CA07ADF267344FD2397F - 34D0612E699C377EF190AE79BA5F2964A3ABF78951BCF5C6984E5427E31BEAFA - B66FE0B6F99C92615D27402B38B55F38BC2ED01AA8D2F92FCD38AFFAE538BC65 - F5904CB0A1438E93FF7D4045C889336F39DE6C8F2B2DEFFF89F6B0E0E16BB49E - 7CF029971AD55A7EDD9F3BBEFA8EB7BEF6B37FE8ED637FFBE0E7BEF7C54FFEF1 - 875FFBE9263A622DAF58066CC0B1CF4030C3ED2D6AFA823EF420B9214DF578F5 - 56FBEBA8AB4756C1134265601370B0010AA66B82F470CAB180BF06619B052137 - 710690552871D76174667CEF94816405715D352C2C431A81E76283A76D9BD43C - 89677DDF477E2B787EDD577EDCD782310883E64783E2D751305005ECA75861B0 - 0617620A1FD0051CB36BB9657F51877F973519A56722AD26705A564F5E477CC7 - F70966310E65A06450554EB4C78010175FD8F060BB4741B6964BFA207CCA3667 - 1AD871BF835CCF06FF1003F108F8F26BCC458225F85C3AB4131590873FA7877C - D8877E88737908887D28887E58887A48888768888A18888B388815D05117A083 - 3B08523DF8832C477BF1F574472875494819FC1721FE472C527524C87577BDB2 - 0109704B5323399A43665C6876BD267123F21CE1804B7F62811B764873677774 - 172D6C986231F381C4C520BA308782067D84B76DD491888CD88C7BF88C82188D - CC088DD3288DCE8888D7588DDA988D798883F332894D544B9B9240018789F1F5 - 799B28751CA1849F787A4E0848A4C86C4E8334A3F14B48162165A40EAD43845C - B71C4CD385B1385AFA951887B31610748124248FC5F78B0CD9861F6801CFB40D - 98858CC361822B37FF7D00D0881AB9911CD99179E8011E19927A485E59B17EE0 - A83EB58418706445F4E721BE466AA117931E8147D0D17F59278AC5F24226448F - 4803418B535A37254EC1032CB0D68F5D472D0D1856CDC746595290F96086BAA8 - 9069D890BF683CB7252AAFB011C7489198F45C9CB48C22199662399664C9876C - 931527C944E2D85929B56B1FF492F916939C884756078A01879339093C3CF92C - 30D25266E1306A810BB7A03245597B47394955828B0E8338A70395B423850B49 - 950C591B1F532873C89515698703050048F091150092A0F999A2199A208906A3 - 799AA4899AAA199AA6599AABF99AA9199BA7D99AAFF988319015DF98966F9392 - 77331BFC28557079FF7F72191767A08496B10C40E86A00E64C3B438F4613236C - 7421110207BF07412F831A49B980B2462D4B032BB1F38378A30F7F8090885477 - E6698AC7279993C90FF2A00DCF87995D49685F0900068004B4299B20E9999E89 - 9FB0599BFDC99F00FA9FAF9906727201EFA19B70B396B7E61043E8962E698431 - 197503E35AAAE6302C87976F59773D5934C9E27AA9A80C98E367CF920FC7C155 - B7E78FDCA94FEC491A55854B42399EB9F898259486BEA89E6CC89DBAF09EF019 - 7D02553524600262900615609AADE901466AA46870A44ABAA44A3A9A46FA994F - 1A9B1E90A44C8A9F557AA5589AA54BCA0505DA6E084A4BB6D49B9EC18F0F0A93 - C3290BBDB101FA85FF0C9AC12D18DA3B896434C8922CBA9070A42054B02282F8 - 90416587A231D40A01808AE3984BF5489E5845A3E969A3C0F8233E29783B1A9F - 85379F1A90034D4000421AA0982AA0991A9AFBA9A99E1AA0041A64B9F9A576A2 - A078B30FE6285FC17984F9B701D7590F9E030770800E63B739A0E26BF4403474 - DA1BB9D052DEB00C6590132CA21BA5112579D7800CF8A7EDC994D3A4226017A3 - ED34A3C557A38A3A3C24D7A8748899165968D4C104931A036280A45A9AA554BA - A4E5AAA4E77AA4E93AAEE2CAAE53AAA5EBEA015C10031EB503A34AAAF3C19BFC - B28F44089709107503323851B262FE244ED3B09C471513749A0BCCA20B49D55E - 63B864AF428A4962FF1CD8A91ADBE942ADD006D1F44608360F302A67BB789E1F - 56AD93A95C8AE3A88FCAA32B476FC1E003DE2A02E0FA91E65AA52550A5F17AA5 - E57AB3EDCAA450AAA43C8BA53B6BB3471AB4430B922AD0362689AFF9FA01E3A8 - 400D4A666F09A1015B17039B9E2D414E9BE392AEB0ABCC720BDBB04D9B72139E - C50EFF62117A9A0E25DA3A198B94A27225A557060856A8D09A9019E86C268B5C - 5128822AFBA8DB9A31D504005F60064CD0021A10030430A4497AB38BEB01416B - A4417BB392FBAE8CEBB8963BB990BBA48F4BB498ABAE96DBB8930BBA97ABB9A3 - EB016930AF1EB5B44C1B1695088A41C8AFAEB8AA558B0BB9C0974A4325F164AB - 7C03234AB22CBF41FF65BFEA69D5341160652C73AA0F7C6A9862F5121FD21C7F - 19ACACF2AC222B955A95B7374A72399AAD5C69912615840C20055FF0053ED002 - 2B30B343FAB9968BAEA43BB9A18BBE9B3BB49BABBEECBBBE94FBAEE25AB9959B - B9F97BA42A50692C7069AB1B1FAD6B0AFE3584B0EB70C1194C5B640BB46BBBB4 - 11332BA5BBEDC9B0BE0B1C54F6A177B3311341409144B1F48871C96A956FEB3E - 68E15FF5988A720699C263BDD78B3C2CA6BD14699100941318E00366E0035B60 - B8E09A068E5B023EFCC33EDCC3920BC4445CC4462CC4420CC4486CC44ACCC43F - 9CC4471CC53EBC04FDCB6E9218C060E17E09117F09E62244D83291211225C1C0 - 0D4C8FC817C1BA8BFF76A5E12474711275937453D40EBA9B9349837146793C5D - 88709D167B208BC2BC35B2E8C9C22DBC3A2FBC95F0699152330018B0C852100E - 3ADC045CB0C4685002933CC98E6BC94F4CC9928BC9419CC9979CC99CBCC9433C - CA92FCC3987CB9981CCA9FBCC469A002AF745E589CC550241857B821E704900B - 380F8A6372C4B1120D8CBCB7CB64D764AB6807784EF24FCEB1298BB131C9C71A - 38B2BCFCFA8ACD4BC2B177C2758B869129C8D65A6D852C387EBB564CC8C81810 - BE3E20031A40024D900668A0004EDCCEEEFCCEF01CCFF23CCF5CA00222C06EB1 - FC15168074A5904BA0C675AE182B3634C650C2975202723B25C11761C1FF9472 - CB306FA8736100B6FF757D6A760CD21CED55C2D18B8AD77CA878ABCDDB2C34DD - BCB2C94829B1B1C8286D06E130072D80CE5C50C94E0CC5F13CC9F37CB9ED4CD3 - F3ACC9335D025CFA4AF69ACF5CE11716F23007F8CFD929607F07B664EC2C7887 - D046B5B56A9C11FE6412282119BF3A0E38711C10BC325A58D1491929162218D5 - 1CA87E7C862ABC8120DD67A331D2248DC8268D017E00D78BFC0507F0057E70CE - 31C00525A0007CFDC3ECFCD7440CD8ED0CD8EC0CC484EDD77B9DD8869DD8828D - D88D7DD890ADD88E5DCF4447057C07D4926001ED831819426FCAEB8A1ECC1B0D - 6BD08C2447CCC439AF50918267D588310E9C742CC89B8550CD60B2F621A425D6 - 5C320F1C3DBD89C4FF8BD40AD25EB7D6DB00C3C8E8D69482D23E80D21800BEE3 - 4BA953FAD88C8DD83E5CD8921DD9D47DD8D31DDDD06DDDDAEDD8DD1DD9D9CDD3 - 4DE0D3008CD99560057B921F9C84ACB008DA7F47C1657CD0C1684DC4EC0AFF84 - 6D233119AD1D549E950DBA50170E99D0B4DD85FE1007B46638ADA6DB65BD71D2 - AA86698D4F843CDC86ACADE06CD25F00D771BDC87A00BE07E0073280CE2A8006 - 7DB0CEDADDD77CCDDD7F6DE2279EE22B0ED92B5EE22DBED72D7EE28C3DE3364E - D82BDED3179005E67D09217064177285090671B5EDA028B61B4653C7C2DC647B - 139126876D5A3400FB87D59E85AB739A347AC353DA49230DF29709940A0ADED1 - D47B3B0F0EE1BA2CFFE1DEBCA3884C0A97E10617AEDC8B6C065FB0057ED00239 - 30022AA0CEDFBDE728CEE77EDEE780FEE7825E0290F8D33D8E1B61D0062DEACF - 41C28064EA3BBD7D34F330DF51B5524E8EDF211112935185FC0DC289640FFA28 - E05BC8550CC227D3D9DF647DCD679DA865BEB7D93BE1DBBB56DF541367E0E6C9 - 1DD7192E0572BE054C900324A0022AB004327EE3C45EECC67EECC89EECCADEE2 - 3D8DCF87CE099EC0275BC28A8E4EA6E8546D664C944D27559C93B21B91E9E02E - E595E1DA08182CCC2782B3B24B99E8703253EA09F14670503B01B0060B2E771E - E6DB65DE670BDDB76A2EEBE5E045F30E0107200518A007CA2D05CC3D071A7003 - 31A002C3BEEC101FFFF1123FF136DED330E004F7FAEC63D1007020D657A5BC47 - CD609E774FB461A295BEBB290BEE1CF1112EC54D6E54071B1006CAD717A22125 - 0C27EA528BDEB6849CFE4C60F51EAD63FEDBC08DBD684ED22C8B16FD93007010 - 028D35F0058FD271CDDCDE7AB8C15E020860EC57CFD759DFE25B7FE35B7FF560 - 6FE35F2FF6271EF65D5FF6CA9EF55C6002AF4405CFBE3B9B5652E4E819AF78C0 - 5F0CE95679F24F0D321299E92C3F93FE46EE32BF15A9D7EE5B4B70AAA5F3D2A9 - 19B5D305D1C9DB5399EF7BCBD62BCBBD81D90000606492E2056650F0C99DDC08 - DFF9857BB8E9FCF061EFF5647FECA7AF0067AFF5588FEC673FF6C4AEE33CFEF6 - 901006B50E9808E6FF1F756FED81D4C149A9F780746670419C2C0F3803D00DD9 - 1254F4D65545E2CC69AC8032A3F83CEF10A4C13029DCE0D5DBEADC5CF46DBD56 - 07D6C58D30166D001852E007B88ED2BAEE03E37BB826F0D27DC0FA0830FF66CF - FAF65FFFF47FFFFA0FF6F30F080A08820883868288878A898C8A85898F8B8B0A - 5C262B1745009A9B9C9D9E9FA0A1A2A3A4A00C1B105E5E6E097F710C61B1B2B3 - 610CB6B7B8B9B916B6B1B7BCB6C00CC216C014010D6B67CBCC03CECE0970106E - 5A5A106701B621DB00DBDE5656C5E2E2BFBAC156716765D565090D71710D6770 - 655E07F75E10637F01F0710100FF0504D8CF9FC18308131AA4C05060833F6B22 - AED940B1A2C58B16FFD70CA8E3E6DE817C03DA5060B06393853803BC489182A1 - A54B295FBE1C6022E3460C1568FA3482246967CF9F3E83027534488150A15C54 - 5CCA52AAA9D3A75045596893C08D970975D6C4A140AB2B2D7360C3F21A3BAC2C - 5906C792395BF6AC6D348EEC06741969C18AB710E0F28EDB6B76D7B093EA0E68 - 2933E65D803F63EAD4F3986FDFC17E90FF299C4C1921430AF002B4812811A367 - 8C1A3932D6F78E018B4C9A2C0480A3E58B143F2E639BF9C2A4C58D265C0AE9DE - CDBBB7EFDFC009F116FE5B3871DFC7811F525042298C2A53A24A9F0E8A9B5374 - 1FE092DEDACBEBD7B0E0FB921DFF975718641ADB0E18C39E7DB469EC0AC3AB75 - 0E6F5E707BC99DFDFF552CC0808E8DFDD1853CD2943141355A4CA00F3FFE44E6 - 6065104E7659669B4934D167186E105A47F86CC740062C1861D21E70B8F10506 - 7AB4E403062BCE465B0B39DC94131ABA25179C728644A29C8DC52157238EC6F1 - C645132BC02022754852875708D785D14002EB9401C71A018C048B77DF85A7CB - 7EE491074B3C1FA8D75E7BEF753458615D00D44517718461817DF7E5A79F7865 - 053006350A8EB1C11F1FD053861B6E4C20A81B0B3E26596411267AD084FF54D8 - 59869F8536C168856523820830EC50456A01AC5186192862009B8A6694CA0413 - 1AC49042097DE0E8AA0BAEEAD6AA72B0CE8AA3ADBFC11AEB6E955CB203934906 - DB5408B030E05408FFAA7D908A820394762596596A295639C100735E03618EB1 - DE98EDC1510704935AD36C005D6CB6411B71BC799F5E721253AD2D5D54A5851B - 758CB10C94135C05A81B7F2E589040900DA4E8C05B35D4286711411AE9461C7E - E4E108226400C31D59301942181B94E1DAA82A62208519F7309103092A7061D4 - AE28A7ACF2CA29DB30E452C2C61C0A5E14B4B14103FD70F5A628C83600872A6E - 4C19402DD076252D785DD20926B76324E0F4D3101828581D1F14A4590373BD09 - 679CEDD2C90B55074AE9343DF608A62FA01024B0C1BF87B64DB0A28C6A86F085 - 0A5FB4A1161D56CA400123E820C2052C44D74D1872D4F1851F29C6E631C83ECC - A1410E2670D16AABFFB52200EBE596675E88AD946BEE79E59863CE79E6A2CBEA - 7921BA22606BE8A49B9E3A022F3F27B8CCB40FDE406275C091C0191BA43B4A08 - AB55039248456379F4B4493310471B1F8CF9F4F3DE5A35F51F6EF6A2B35DDBAC - 8B5FD76315630BD8F3C2117DD91E993D413B541A8AE8DB89C6FD908575833680 - 34933A2CDFDE23F0FD370CA8013095E12B5A51C71667862DC0E8264B50C0E458 - C6C0063AD055B12B49ED6466052741C923F3CA4A1CAC209536B0E61E41A31243 - 8A67B4E36DC96B65595EF312D034E88D0D3E1F4940173868B1BBDC457BE1E0DE - 3818E0C149110A86E5C3E02AE07006AC59AD6D6C631F65260490F73D2A7E15D1 - 4802A691379CEDADFF0058EC9BC48A60310BD8010E0790428A38E6310C98EA71 - 2468C21254D73AD6B9B18D707CA31CE348C739DA918E2E23D2058E3441245981 - 01878112DECA879533B4A14A0C005637D0D28601408052FCB012096561C26905 - 03172A6CA10B75A79803C53000D5B1210E73989F6184E37B0998D4F9A8810F41 - B9D20BD5381F116F4690242A31424C44C6DCA09891F981AB8AAFC022DFF8A603 - 89F16007D1B10205DE700033F8C007645C49A97CD002DBC4C0649DBBA336EBC8 - CD6D7AB39BAD831D91B0C0943E524735F3A8C72031C8AF7AF5CE029BB042A74A - 543FC1D0CB901430CF246751C91392074C9B8CC65B0285B7098C01949FB061F6 - 70D8AEBA14C34970FF085735F041A86F41206A9E1CE2183E60C45BBE2D6E8E4A - 182F29A291120D1224A511A64A21664C3668220E6F3810A812F792D96CA13631 - E2C21AFBE0829E5ACEA7A1E3294F81DA53A1F6F4A83FBDDC5091EA029E5ACEA9 - 4C251D50A17AD4A62AF5A84B2DAA55939A941C5CA09CE67C0AB20270865404F1 - AC07A0D7075EF1C73864679D8C6145EFBAB34F5FF4B31C5E42C61904AABBBE8A - 4F1A5661C719E2B009851A766BECCACF29E3B0818806D10B521AC0199C3186E8 - C5B20CB91BC01A8CB83E8F4AC8607283DF4835C4304806337F59CC623133A589 - 10C4810E3F73A61F02C8A2DA9A01A724CB4D37A11A47A8F2D68DBFAD6370E538 - 5CA0C6D1A7080083FF738CC0C1B096825801C84E3DD15A3E7A0D604F1BD8C874 - 315848E2D5959277F58BB5E2F08779F0F5AFE2FBD6811204813584A1B036EC86 - 61192A8EFBA0A50B652D9B165421258EB6A10DEF4B4CA05C5986B49DE10F87B4 - A5672DD39026EE526122FDC31F367006D1E0434A6BE8421854CAE102AC96629C - 0223A860434633DE1646245B421FB25AD516BBF8C5308EB18C674CE31ABB7809 - 96B880049D3B0A740291BAE54B5081A36620B872571F6B6BD377C11BDE4BF6E2 - 300338EF5FEBF0ADC5ACC21DC66A6D7CB57C43ED8D432FE769EC3AECC92F387C - 402498F94717CA5BA0F50E51B33853F082FDC1C40169E889917A9484295C2276 - D6A18801E83087FDFFB645C12D5363A0EAD88A3EF685C63D4E052A362A516D4C - E9AA26D5D295CEF4A431BD04157895074EE07142C3815FB302F9D4A716DEF9EA - 90800C2B79C94DC68531BAB081CAA237BD54862156B49265C3764294A3144718 - 5488AFFD8A6DA3E8EA0E6634B386CA1679BFF4DADD9E123C67062FDBCEA2C590 - 48F734E10D1D79770D103487B598A94D01E01475686689F5009346A3EA062648 - 41534FA0E97ADBFBDE9556800A6ED002502B52D4DD20EF143D495D23A3BA7C57 - C9D70408E598672D993E77B51605BAD06C6F798BCAB9AB72FD58D1807C7279CB - 1F472CD726FE878D1419B2AD7E08CE0AF698357F20011C59EFAA13006736557B - 21A075E2B6236591FF3DBFFC97F7107266C53DE862EAD8DC0C58C323A1F94CDA - 7ECC99D4D4800914C8E217D31BDF34BE3AD6EFADDC1B64800AE606F8B9375087 - 7C193CE80B27DFC1E3FA27B37BE1CF557A383FC36B1E6263FCEE55969E35B051 - 971AFA3AE422C7CFC45FAE4E63C321C999015840B6020F9BED1586ABC06C023E - C00F39DF12A40F8EDF849BA718F209F9A27520FAB8597A9AD478F00B66800D4D - 4725852D1810725CB0411FE84D7B17D4FEF6B6CF3DEE77AFFBDEF3FEF7BE0F3E - F0876F7B1BA4E0064C6041A8456D8130FCE167059F79D3A6A1F654471BB0780B - 219BE46ED77E8E9740DFC2FBB7027B8009C0817AD83BAC75E4AB7E70288F7926 - F50886E7128634ABFF294D019950B96A0D17B447F666F8576D97B16C21453710 - A60C30576442C42F98257AA31731A7C1245310006FA0127E803802E4313E807A - 3E20031A90462A7602B3277CB97704C1D753B88782BDA78226988224486F2DD8 - 7B3138832FE80231E802CA950319C003FF664E71B006FD87566F07689AD12763 - 866A0952079AF5739372656B3312DC4777681100D93545E2D7497873266D9048 - EA771780274ACDD7057D223DF8403536677FB5544B2DC7668B710FE7A30F1FB0 - 0101C87897C74405688019224551034B70157969E3801D466E3C80741FA005A1 - D2121CF33130511B24106F36700290687B91780247407B952889B407899A6889 - 99B87B974889BB37FF8993F889A3A8899F488A9D0889A8D8752D1022CE750A10 - 70764107016BA5351640017F2048A99627E7D2066BA08B83A13605237711C70B - C4E62D1080777F620FE1D33B34D485D0B850F73586EB242EE8927869988D8B47 - 806B403666B30A10000763B006086679036387DD8667DA363F0A1844D0168E67 - 008882E637170003E564016B30011C382A192805E5474D230369F35683C4377C - 23F87B0749900A5990BA677C37B0022C1076B5435ED08756195435F0144FF1B0 - 5758F858F4A22709D60615563601D20FC41871CA5372C8A88C64A820559348EC - 178DDEF06BBC800CD4E81179E20ACBA68D3C994414470FFC1228FA923B1B558E - E6884B0D612ED916FF29CD430F0417646FA83B1FC06106204C55894557B952AB - 851A0CF0078FC41225E61227F6812A00069B789668898968B9966B89896AC996 - 7019977279966A797C10F92B1334063FF6581AC400CDD55ABC40728E345DE173 - 5DFF95263FC921F302010310490FE770DD271635F98B57B88783E40663D0066E - 22937F575880C47F04157484517987D2933DE90FCCF3344E7959E1A859D43680 - 04D36077485278A821679018ED8841C69636DA3295F228685AA463AD950560B4 - 3117181B8C8601EF1639AAA30673298ACFB9896FF996D1599D72F9962EF39011 - 3941DB15645A90151430935EA8097F845F25A20A43746087542E69928B0D9384 - F8C47DD122166120FF92D2107E1755060A382FAD4001E9C799F1E50D9F493FAA - 202857E60AD8689AA6999414011153044B41176D94774875D8787373213BA721 - 9C477E417615927706096395BFB9522CC5035C040030054662A43826764631A2 - 020AE002CE699D345AA3367AA327600360402499D28349726AF4A21519C9659D - F04736190DBAC33B58532E09861847281884D171F5279F73071EE4B511181735 - 4219A187F70A000A7200704AF3B4188B4965AD667301A3A03C7910F8E78B7A59 - 4F42268E1C9526F0C02895818E7796A15114264EE98E97C56A0310875833A244 - C75230C0031C244F09D04C3EC0121DB31207D06832B0028D287B338AA36B397B - 98BAA9D609063150FF24C8243340F69DBCD65C87255F39742D0DDA000DF05F87 - 79187AE97951DA265C517FB57A9260517F149718C9A8A54F697EBCA6355F6A1D - DB708B54480F27058782EA206AAAA692B115E482184027186F286D145A3006A3 - 10B0B93CE9A8A71A1A659DD7A11E5A2F1F50AE9154005599AEE8BAAEEADAAEEC - 8A45F4C803E449225ED068A2829C1BB8222D902A5C70A99BE89C007B0297AA06 - 044BB0027BB0015BB0086BB09A68B0098BB0070B89012BB110FBB00C6BB1D209 - 06267003C2193316990F6B65313179AAF1A43C02B126AEBA268851076AD70EAE - 30A5B62A9FE0710C253745FAB98C5938445422ACD933ACC80248D8E28DECD00A - 6BA286CD7AB4D8BAFF6CD29A2F8C214BBB538EED83A74B79671F709BD8D7A1ED - 54941236175794952A9595602BA2C2E437875A05DBF0834B171B19582A33912A - 2A900236A0B0131BB115DBB0764BB1189BB775ABB7030BB114FBB77B9BA34DE0 - 5554303B488256F7940DF0058D9C8017E3452E00D6066B16AB83C49FEF00B303 - 78AB8FA90B4598808002A16E9836AEC085DF701F8C5BACC3B6B2D47059678A8D - 8A77B40A8A106B66729E078E7000670591B909C1284AB9731151AEB759264606 - 59F502A250EB26EFEAAECA9BBCEBEA61FB13AA16F0071A4362F74A2ACEB4AF24 - A02A7D50B0DCEBB005DB01DD0BB0DE4BB0E02BBEE41BBE028BBE72FBBDE39BBE - E6AB06E5EBBEE14BFFB047B0A31C8BA8C182566520176160AA3E1B2753C89E93 - 6B6A505A185C91B99721B3B940B3BE64764766486ED277A3148D62BA01038737 - 9095366B70ADA509BB1EFC2F7AE5947CB85FD53AA1B99B668B52A707B3946B50 - B5D050266AC75E9317113863250C10B65829B6CDBBC35E4B6E7869055DF0482C - 729C8BC622FEB805731023296096E17B04F3FBC44E3CBEDD5BBEDC1BC54F7CC5 - 567CC55A3CBF7DA0B11C4B05F97B56B4980D12ECB3DCE0B8689178B743C06722 - A5083C42B86A3DCB935D1CA15FAB903B1FD0053059BADA038D7F347850C28CB2 - 745D74BA6CAFFBC1CD4A6760828CCBE87F728A606C92446FCCADA2F5BB93E51E - E2B38742D40E07C6FFAA88040CCCBBBCA29CBC5A042289A4A807202A34D512EC - 9656480C028D98024E0C041D40C5E45BCBF09BCBB50CBE54CCCBB97CCBBE1CBE - B6ACCBDF8BCB4FECCBBBCCBEDC9BCCBE7C04FB76013C78B867B5BFE84217FF69 - C6A77425353306651064517AC06F9CC0FB640EC730207C82ACF6A4C138B3990B - 35C1BEE6B8714071819CCE6626205693A6888CC899C12767B0A1EB64BB1B752E - DB18CE7293A7544B59EE01C37E662FE5C8159734CA101DCAE83A0225BA034EE0 - 5AE9A638FDC822CFB4AF4F206FBF4CCCC82CD2213DD2E71BCC247DD2254DCCE7 - ABD2BDCCBE28EDCB36D004F76BB85081B8AD46A1117CCD66ECB8C9C2C6DF6CAB - E1ACB9E31C0B9861FFCE0D60C1ACD418A55117A3D4C7BED656D812C8D5605D1B - FC18F99CD504A166AD6A93F404A1EF288E9B45A7758AC0DC9AA71171C94D4326 - 364B3E58B1519B353465110C06A0BC752DD1115D95862A41555081ACAC07ABEC - 315FB00518200339F00465790434A0CBB8BCCB8E0DBF8D1DD9BC2CD9903DD996 - 2DD28E4DD9992DD98D5DD99D9DCC36F0CCF23A1DFA3B255DBD15B5500CE0D0D3 - DF503365554FEDE0C6434DD493B49376F6070FA18B6F27A45DF6D4797158AAA1 - BACC784F0282D55A9DD50D3210F20073759C850BD79A1B6C73657DC0D14AB52E - 9CD0DAB21E30A7770A52CF354C27798DD7E2EDBCD0BC29AA1105AEA107B0D18F - 30E14C8EA3C471DBFF07CCCCD8235DDF986DDF1D7004F85DD9248DCC9FCDDF97 - 6DD226B86F194006CB77D367C50A9B25B95B6D253C3DAC7F741E810142EE00CE - B34DDBD0726DE6B2270FC1CDB0647E1BE09F4BE2DBEBA250E140010D30988384 - 15E3D220877CDC1FEC36F1CC194C988542378E58F3ACA83D6CD856B56ADD1E6E - A1189775BB020D71E381AE775DD7E99AE44CBEE44E8EE44E4E6E54106A0C7027 - 2772AF64542A2F12231210B71D40039B1DE6623EE6645EE6667EE667EECC3100 - 2212D914A5BD59AD9AB226694ABF6DE24F7D43766215C363E1B35D3C0D462E0F - 71671CBEB4E1433DED4CE2A6AB17CA93E2A6C65E8D09C2301EE95B0DE9D16A72 - 04078ED2C6AA0C5EFFA7D19AD6080DE4CDE06C82028FE7D226D45216E19DEACC - DB0414FD37A8410172602219F81204845B2A6003684EE63850E6BB9EEBBECEEB - 65AEE6051E15380DE7FFA5E9F8E7D0A664E7777EC63C749B0C9D33491BCE197E - B20F918E1F3011B85D72E052E85C88E8A6FB0DCD07AB4097418D29DDF82CE9C7 - 8D445CDD27D37AE3CBA0EDD4562161F2E9CFD0CF555B59D3008FE598DA5ED3E4 - 501EF04A2EF0003FF04A5E957FC3023BD01F2AFA1A58DE122C7162B05C9627F0 - E5165FCB608EF1999DF116CFF18E0DE6201FE621FFF1227FE623DFF117BFD929 - F0A941D0E6A3F0E671EEAA87897F727DCDE0BEDAA784C2927CE1704C0BE5BC79 - E51AF40983602557FF7609727EFD7BF3758E17B040850F9A854103682EAEEE54 - 2F309121CF0662C715A53BF632D67676DDEA2159411FBC54268E7268EA97441E - AABEF6CC6BA8857B6E8BBA31C8E9312B712A8F63022A20A31E8FF21CCFF1BB7E - F21A1FF27BAFF124DFEBBB0CF8252FF87CBFF1F9AD02961004074E0AC5DEAA4C - 2AF3C8FEC94EADF4758EAACDC7F308EC1569A10CEC2159FD3CF49BA1E258B101 - 49AFF4D9638CF0778443C451945EF555DF360C21CF55C687677351728A5D2EDC - 16CC80EF69DD4201CD264EF6EF079FFCCABFFCCCDFFC598429AE48014A772263 - 34F731E1032070D82AF0032700043420F838A0F8E2BFF8E30FF2DF4FFEE85FFE - 1D7FFE82CFFEEB9FFFF136F0F8912F0A302FB9327FEC715EC8A9FD9FE00E0821 - 2100008256160C896114718D148F90916193946171017F1F0363630367671F6B - 6B1B7F6D0D0375135A13751B615687B0B2B3B3822116967F6770655E07075A6E - 70670D018D9701C9CACBCCCDCECFD0D1D0718C6D6B1F6709106E5E5ADE5E1365 - 657509A01FD867039E9FE6A1A2679C631F7F5D7161890C8889FAF91606FF000D - 140038F05F418104131A0CA8D0800E111960ECB060A54D1D337E30F8C0C07123 - 0633BF7CC8D04022C69213345276A0B1B225CB972E63C29CD90187CC9B3473E2 - DCA973A60D132B2E382144B468D15F487FB949B0A6419B2E6DA24A9D1AB54B32 - 0AF96869DDBAD582FF57068B1C451A0BA9D2A5066BD27532276A83D35310544D - 80E30A1645AEB442580913608336375A7E791176E68FB1C3C8A4295ECC58DA25 - 645D22EBE235C1173070E3E0AC65D7EE9CBB77EAE6D5BB87A874BED35EFD315C - CDBAB56BD64D46E8C870616296356ECC98F1E191A36F1F5230F86991E3099823 - 2973265FCEBC79F3952A5F3A9FEE1C3AF5EBD157DA48B1224815A3E00124455A - 064ED3A754D337706AD5DEBEBB78E3CB42B4681259B2663169E2E4E95CDBB767 - A4B24A2B14D8259F5DB874B14602654C8054307514664C23873566E185183E46 - A135DAF412183013B801011C09F4E7D967A2A488CD1AF46085DA8BA57DF5DA8C - 34CE58806CB4F160FF01000CBC919B1EC275E49B6E5F30415C0C2AD8909C4BD8 - 353953744E52C76494CCE1201D0D3FAD80C550E111359E524CB1971E55EB5595 - 0C35A45961C8815DF1031623D4DC470125717491C9266BF9B7815BA604C80D2B - 6B14184B7C7AE112C0821058261804096C500F85896128E9A4D34C7849171BA0 - D2CB8321D6A1195B29869A16284D8D06238CA931C0100100B1FA8FAB06C00AEB - 6BB3AE7623442C141102030D9461867019F9C6916EBBCDA1410E49AA41031054 - 360945B3CC3D0BEDB429657981115C86F7E501E59D07D598E04A7555566CCAF7 - D5228CC8F9C82475DEC91F5B7B0258C79F75AC1107457779D515031428A88D83 - BF68E14519097CD0FFC6999426ACB0638C341060191F8258DE18A48A3ACA359F - 3465CC3DFBE0C34FAA0CC451E3C8240744C0AD11F1E044165DC0718014C109C9 - 11CC071429430E26A4801CB3D452CB3373CCFE1CE5CF42370906505850614597 - DB2EE56DB863AEC75E23A4E95B2E57FA542227BBFAC1936728F19AF2012F5E78 - 01C107F75A6DF52C86FE31001CDC041C4E1D036CD0C631152EACF7A489510356 - 1C70A9F2E0381483DDD606A278A6B18BA6359E1A7D01B4D16AAC94B36A79E598 - CB3AF9E5AF6E4EF98D3AD4568513712470C046C10AEB83195FF8606471292C1B - 7472B3A7040510CC3E3B7BEECBD2A0BBEFBDEB8E3BCFBFDFCE7B4AC303CFFBF2 - 40141FFCF329E170FF74504630FD65B762420DB555C66005DFD5B43CAE089C63 - 718D96D7268EC267031F3058F6D971F483202C6B3280C918F3463C010463688C - 77A47B0B20DFECD385F671E343102AC707F6C440C4B1C37F1D6B1C6ACE1500B4 - 94EC821894CD0560C0030654A10110F842CCF4B091126AC40745D2400CB86003 - E4C86E3944EB5DCF902743A0D1AE77459B4E0E9D23B4A3E5E00259D0D6979C96 - 3DED69EF5155FB1EF810343EFC58A2826979979ED637B60699ED0C0148CDFC64 - 9188BE304870C07043841A80A6B03C468068CC903D16E1C5B85826188C3A83FA - F694B88C919171A78A11E4D03280CCF9F17280FCA32039E747038C600410E1C1 - 77BA603A29F8410FFF4012964676D30215E66C670E68DEF036B949E36912779E - 0CE5F03C993C4E9A5276A034E52739494A55D2000C29B8C116AA67946D610F3D - 460C5799DA33278FB1498B6CE3877D247196287E6D147F680054166445086051 - 7E6A430405BCB8A9030C861C0673CF9BF086B0347A331A7E63A35FB6D18D3092 - 438E0CBC063642510C1775EC9DE2E3CBF9C6B01ACDD57346B5AA556B5C558002 - E06A078C904319BE1049497EE40B66785D0C5260031CA83268B8C3A1447737D1 - 894614A218BD282A71A8518A7A74A33C3B420A7EB883A579698861C2652E8FD8 - 1EBF2911418F8B29BE62DA44485CA20D1B409F7F90A94C6B50E68A59D497DAF8 - 85A97F09866006DBFF183ED0F5BFBC7DF3A988B98725DA30B66D54C61B222AC7 - 1CD3E209BBF9CD6379A4201FD531C8B206F2AC66FDE3C91E72813B8421045D08 - 214752373322B92E0724B8A4EF36894ABE96F2A2A7FCEB4307EBD7C00216A37D - E564075210831550E128D7334F11570AB55D06A0973185A94C376B1745D4E789 - 3855CB00764A8A9E32B332CE0C80FC0EE1154B388C6C8B1AC31FE2671ACF3EA2 - A90084AA008F61536B8C010E1028831B54914074220E1D6BB81BC724E8B83DAE - 6113EAD01C5A3B47DDB2766EBA94ABAE21457001165481011B80C0CB4C485E0C - 48C175C7CA590F3A004A87368FA3B973A8F27CE75EE139EFA37FB5EFF34069D1 - DF7D140AF2854207FF6C7083DA9C743C4454296575E994A74CA86AE1DBAC4C59 - EBA6BF45CE98A375476997F9D3D402F32B80D314C0069600323200A69E45179C - 20A5DB34C6891101B0D3077E5B876D3408AB7174C7271678373C32577CD33C1F - 74FB4880221BF9C8483E72AC92BCE4241BB9C94A7E329211998120EC201F1B98 - 407032425798B5CE58C551C1098090492840A1CCEFBD9D9A9B0705256852CD6D - 7EB3261D606636C379CD66CEF39BF3ACE735D319CF727ED69D5FD9581E10C296 - 9255F0828D1899F684616D128E344DA579619D6A3899CBFC2250572B4D87CDAB - 9CC16854FCD4C45A7C8065982BEE668BF556C6695A630009006E8D857BD5FD0D - 23149A388357DD79FF9A77F6C3B9EA08F600D04AECB4165BCA952B7221717401 - 455A600D6538C0AF84151C9899410A66A8240954B0B340A779AF77DEF39FBD2D - E834DBD9CE75C6339FD34DEE76971BC03668EC0EB2D0B4947E6BD1B9949AA3DF - 23E97E3FEE890DF8C3A82AB6610EB9B10C0350ADD5C072285E70AA0E1F50AD2D - 0A55E153DB94C5B95DB585C4729619D7A1C61008B9380EB8BF12B5C3ABCB0D6B - AA2EE12E75A463D84886B29367DE6499CF5CD9373FF28D3290011650A10B5748 - 801BBE3057837EE117DA36C10F68904934A359CF746EBAB8A7BEEEAA5B5DDD57 - BFDDB8FBCCE6A7A71B07F16E010CB610D9A7E17BA596BD442FC945617FD3945F - 37E5EA6879BACC31FF1C7C0C5DE0345FC6E606A49078B616B045DB7B6DDBDB62 - 5CE3927A71BBB2010790873CB8C3F586AD3921C7526893B9BF6E6D1CDA20F097 - BB3CBA99C379B28F2D7ACBE1BCF43547B6E90542659FDB4F0E5A28EF46BCFCE5 - 231D61787F3E3399751FF5DDC3D9EB6676BA9C9DCEFBA9F7DECFBA07F4EF7D3F - 6791DE60054C40A9D9CF7EF6EEEDA3ED6E97293E363F2A6426332A99CADF52DA - 90262B1035400083D019EE96F9499B9A12863F63C6113F8D3935828F0970FCE3 - 836BC555308AF2F4707979F46B2183169A206CC296730AB8800CD88046D6046C - 750701100620740018A007741524C0B1054C80333FD05064E600517766243882 - 4D5782C9878226B8FF7B27B88226A8822C58822C1883BD678222150337D00264 - 471E89766FD48776BBE408CB957D9216329C974C01F707A5D000E10718E3F768 - F9D22FE8173004935C13686A9BF54EF0177FF3477FCDC071153463C0250E65F0 - 78B3365CDD20460AE428B40556F0F41546C8559DB00E09E8804E66737698874D - 003A11910521900563700018182CBDE1653E401C79153B22C88222D888357866 - 22C87B9058838BD8888C688951E7888D98678E28892DA88999F867DB610239C0 - 04470726D3F783F8C63D68C2694448537012634CE8167C247E09407EE4C2701F - 900A4715262D9544DA274C2A760CF2E7855FB846966027D9007264B87FFCC70D - 035307FD138029F7FF63F832551B708008588704800246E68D49068E37278E47 - 268EE4F88DE8188E315700B321115910077CE0051708245D2605ADC304E9A533 - 21088AFCD88FFEF88F001989A1289001098A67D6013F600224D0023EF00BB7E4 - 83AA487D4AF58AFD9608751270A6F05CB6888BF9B27770F30B25B740DF379112 - 46785B488C88618CCA2084C998298DC77FE2E08C90E7066E508605D34E60658D - 202664DB888079F893409973E0B8731740063BE00471151C91D41BE6F50B5B60 - 2C316002C7E18FFBE888558989A0B88F57999558D9749538895CC9956706760A - A98307906010199140C81EDD338414A97D4F940CBE952807300125E63DB0C070 - 6BF09175392297A6FF4CEE51914BC554B8A59262510D2E590764D88CCEB89871 - 849398A7479A670D9ED793C1D68D98E98D9A898E9B59649BF9999C999998E999 - A2D999A5799A10D87359005E13803A0625243E602C24F0043F700435E000B799 - 9BB8D988B72982BAD98FBA199CBBD99BC3B99BBEC99BFC289CCA699CBC09053D - A0020B69060FA9961119190FD67E6F0987E8D2176300317509070DE0229DD570 - 7D674D045331A370308C538483797114E254ABA67817F636B3E698321993D864 - 186BE76BFA205405988D96B98DA4099A043A9A060A9AA439A0079A8E0B9AA0A2 - E94F5A7205DF7506B9E1078F645030C38137B35047E088C4099C0519A222EA8F - 1F8A9CA0789B4760FF0231D00258606FD4A98A65723097558DD909329BC777E1 - 3006E1998B21B3017C3930709061D7C02207A34D1E138C29E69E67D4628F6153 - 32166B30598632B97F9E220F07C331031853AE2577019A8005FAA5A709A6621A - A6644AA006101BA1C302F6F3077520421788A1BAF13A2420014A529CCB79A776 - 9AA778BAA77ADAA77CDA0329F0043A480693F5A28B16A3ACD88AD8992A8CBAA8 - 7F8329BF550E6D80978710327F207482210C42EA1FA5D0525FA5458D7A6AC358 - 98DFC49288B98C8A699F530A0155BA38599A79FC524139D5A5021A9A605A8E65 - 4AA6B8EAA0B71AA688740158700757D005141A33BDB111AC738FF9C874BF99A7 - C7F9ACCC499CD26AFFA27E4AADC209ADD38AAD0E80038C151474D05386FAA2AC - 088C5F1199036891D6C0225D40A91679A9D1060CE5317789C3530D560FEBE97E - 491A7F29E94D65848D63907F221793AB1A7270A0191F500C581A9942D52FD9F8 - 09B4EA939F8902121BB1043AB1167BB1129B9919AB991BABB1183BB1DDF8B104 - 201BD07707F9F0015A705E453724C0C11BE9650364769B49E000495003367BB3 - 385B03339BB3344BB337BBB33A9BB3426BB3335BB3439BB3407BB447CBAD4011 - 048A16AED49776FBC96F84F73139991A7CA10C14305414D000630018E6347788 - A34EA1420A453A09FC063259A3622BD685097398AEB606F813A5523AB0E43000 - 56481A6E3841FAC0FFB0DB5899013AA6829BAB835BB861EA8D28C30271B0031B - 50072F438F32F3115AF0053793333FD0013C7BB3B869B39BAB9C38DBB97EFAB9 - 9A7BA7425BADA37BB34AC0582D10046909B5AA98A86E59AEAFAA47DB84594CD4 - 0603E09D1022B6C775229CAA4CD6C776A18A6A6D0B9F6F2B9FAF3686AA3AA59E - A2191AA3B70A5BA97502A00FDB931B8BB1217BB1D99BBD1FABBD202BB2DFDBBD - D80BB2ACC28E2B00036410320940747390815E96501A000279F5039DABB4F67B - BFF89BBFFA8BBFDCBAA24EEBBA50CB4B1134BBE70A16BF566A5D300010101810 - 220FEA9338E8F04066BB6FDF23BBA21A09A44A2942384D32F65B513AB08F4722 - F280B039892AA9D1FF2FA352BDD6BBBDE1CBB115EBC22C7CBD30FCBD1E1BC333 - ECB17BA803E7CB0259D0066FA005D3568FD87600AF439B1D5ABAA79B9B9C7BBF - A03BB44DBCC450ACC452FCC44AAB04CF190355560A405815004C266C2984036C - AED678A47DEBB5DED9970E4C47EAC419F082695758C1B525AA84D9547CF362F3 - 09B01FBCAA1F47227244C2620C870C0BB82A1C6CE25BC8867CC8889CC8DDCB01 - 286048B3110454100774000152D0BE1988015F2030724AA7F5BBBF44EBC9A01C - CA463BB480BAA249936F4AA84C8DD6C5E9619DD719AA55BBB756AB0897B020E5 - 89C66033B6BEEB193BB64080597ED83798A8C64D6E5B7FF601453416B075ABC7 - 095022791BCB1174FF17218329DA38C808A8C816CBBDD8BCCDDCACBDEC18113B - D00574A005917BACBCE107F8882C0D15CAECDCCEEEFCB9CF4902191005F98638 - DFC7CA47647D624CC0F4D1080A823F82B33F1473311603C19C219256E14E59B8 - B6C384924BBA18AD168600BB98CB2C931F572278CB7EB3FB38282CC8D6AC0E28 - 9007E22BD2164BD2217DB18C2CD22A7DD2129BD228E0D230CDD227BDD28C5CD2 - 337DD3138B3246C9007F500652004916EA1B7E606DF08B3329D00348ABB435BB - D441CBD44C8DB34FFDB34D3DD551FDC94E4DD553ADB9579C0164B03D9C971660 - 73CFABCCCA52E3606D59C2FB1CC770C279BB6819F1BA40635BD0E770D0443A21 - 6B87AF17ACAF0F0DFF4E73C246EC33D1CB6BD155CA636FAC72E732BD1EFDD103 - D0CD236DC826FDD8136BD2D80CD917DB04A9C9023B4081724588E6655EF64849 - 2461023DD0C9417BB4559DD5EFECCEA36CD53500A824700141A0C5ADCCD6F130 - 5A7C32D6F82C158DA6CFFC7C2A4B755B67F0AE9A0AD705AD22BCAC279DAA54ED - 6792277978E0B44641D63EF5C998764B2275A35C594A5317860D8A6DBD22CDC8 - 319D077990D2E37DD32BFDDDE26DDE27CD01E90DD3EDBDDEEAEDD2E27DDEE58D - DE8CEC10DC15047440058118C40665065B7088A17DB9B8B9D44970D5079EE007 - DED40A8ED508EEE00BFEE012AEB3114EE1095E0338009D2CDA6054011539156B - 053BD0F79CDB5E2CFFA353CB9FB2BCB787D0321320D0E859DCA1B2CB6003987D - 7DA4A6D69E5CB892CEC071CAD82181CDBC0930D01A3DCB7CCB70ECD3DD014AD3 - 370DDE2FFDD2E97DDE4BFEDE2B1DD2F21DD2F50DDF50FEDD560EE5ECADE4226D - 48371011B080B2D3A611BE616D2A2B03790506F42BD59FCCDAA31CE76E5EDA58 - FDE6747ED5762EE770DED44A90E1587C0763E2E18C57B09AD11FA55515AD1BAE - 9665D7D5D8DB7A44016E63DBEAB453300EC111CCA98FD28AB09CAFA9967168C2 - 0898B28C740BC27B5C302897DDA9224F5C8AE408D8DEF53DDEB0CEDEB2BEE5B4 - 3EDFE3CD01E0FDE4B03EDF56DEE5E28DEBBAAED2AFFEEBAE4EDEC28EEB2F30B2 - 55460538550729FBFFA65D061222511212000634E0E0165EE1138EE00DBEEDD9 - EEED067EE10A7EE0FDBBBAB3AD0B204EE8CD5C38DF1719243E15AE2C809877E3 - BE0D63C5D4CB956EDC119C31A5B092DEE3DB79DDE93A5E46D3FB36CA0CC266D8 - CC75530F5868D86B8A0EACDE93BE9EEB14FFD2C04EECBFEEE413AFF1F32DEBBB - 5EDE138FEB1AEFE4F61DEB23EFF1BF0EEC2870482BD0738DF001F2A83A9D4D2C - 7E7033464D034A00EED82EE1E3FEE0506DE13B7FE7DACEE7192ECF800EEF9C97 - 0D20FE71A52E0F87FEEE5221B5583AC0F45EF599274F7BF207BD8B221633D70E - 3B774808BCF24E7801EFD067CD176EA3BCD4ADC777BB400C8FEA6235637318F1 - 0888EBC0EEF1B26EFFF77ABFF7B17EF77BCFF779FFF7767FEB82AFF77D8FF785 - 9F076240004D0011C2DA066730014407B9C2C23AE865D43D000544DBF3DFDEF3 - 9EFFF9A0DFF9E32EFAA2EFF945CF0441C0E15081EE844EE8CD1BE49EC022EC81 - DBB9CD3D674DE4568F855F314DC9D0054C880E94DEF5BC0C2F87AEDCB8BF856D - CB928B40553EBEF6F7C9AA412E1A8129CB5A8A09AB4EF7C266F7270FF27F7FF8 - 847FF8776FF281FFF71AEFF783AFFD814FF8DD8FEC2B2F025A72073B4007BEF2 - A6C2E207AC53332231E034CBF9A00F084982493584838583898A8B8C8685888C - 8F87893D2A2417416D9A5D6D7F67090970A2A3A3A109031F1B0D9B9AADAEAFB0 - B1B2B15D01711461FF0C160CBCBDBEBFC0BD616114017F1F671F1F6BCCCDCECE - CAD1CA6B1B7F6DB6B9BADABBBB0CC3C314E1E2E371011B63751065EB10EDEEEF - EE750963677F0114BEDCDBBA16FD0CC61F06081C48B0A0C1830539285CC870E1 - 0B0E0F1F369CE810224585122B4E8C6831E3468D142312687243C4053201EA68 - 31230583CB97307D6CF1A38184891E881E30D2298867129F8D80EE1CDAA8E720 - A1917A98B891E10E2B4FA14891AA5347D4BC33D4FE345835ABABD7595CBBC4B9 - 352C985960FA18946BF0A7ED8635D39E3D93966C9A2AB1B8B6F9EBE6ED9B5F0A - 63396D180047DDBA32F012533DB5C61EBE7DFAFA49F616A041C03108336B2EF8 - 220F45CF10F3741EFF3D113407D3A14F2F342D5A616BD5AE4F8F16FD9A7567D5 - B457AF9648C040C90B777804B852C68C1E3F7E5CFAC0B0DCCC812F7364D80483 - 0352D1EB44B16B5F84B4E803253F4CE4C072A50D27A851A5AA0785799956F35D - 387D9D3FBF96AD5BBDF89EFDA58F58B9005D1C938C5C7249230D350DE0958B64 - 0CEE574E1B1B7C30061CE91C865862F1C833C6070DDCC34B647A4D56CC1F6B9C - B1D9899B75A422472CAEE8E20B30BE28634430C6D8E28D33E6D8190A05307552 - 171B40F0854BC9C184C11766F8E0470B3990F0437535E824E54F544E69659558 - 5EA965965C6EE965964A1CB1D4165150D1C927EAA549CA551FBC47DF9B6FD642 - D67E740213461C10FFC645203406D6D5581B7332E88F361FF2528C656324908E - 61182A764A9B1E122AA9A00C5010A08928668A5044AD714ADA6C9F762AAAA72B - 8E4A1B8BA7A61A2AA8A6AE9A2A07248990010C745001C70466C4F49214CE7DC1 - 444D1250A7445047156B1477C652795D77C41EABEC4FE089D7D499A0A8291555 - 55B1875535ABC4271F9CE0BA62DF2DB864536730DDDCD945036F19B8679F670C - 688D2D79F163811593ED420C408A1A7658A3F1C0718A2A9182C80D83EA463800 - 669A363C508D10472CF1C414576CF1C518675C711E06F8B6020B6AADE1851E18 - 140913AF5FF8300708364930EC9730772973CC34CF5C65B4375C400754D6F66C - 0A668D25E86DB844FF6F621F36E7D2094E65C8D4B5CC9ECD44136F2ADDD2FBA1 - 152184802F2F7732DDAFBFEC00BC182A1D3E66B0BDFEE0B901A60EB73D008E70 - EB38A38D72C76D374474DF4D230A3ACC7AC7151BA894AB72CC31C76B924C3EA1 - C29389F8E478B1533A7BA5E4C93E4EF99692473B1E1D9FA4D7B37A55098C8A2A - 5B156D7A2B72D69B34BA9491484DD450478D8C32D55893BA2E585B51E9836B53 - 0876D88D667B862A718471F6C192DDD9C61A0BBBEDB6C6D0472FFDF4D47746C0 - 084C051107031F1C80C17126632005AF4A6A00C21326FCD083510FB49FA5FB56 - C25FA5FC52C26F7FFDF8CF7CFF4FF0E3A094064140D3E7D44415ABB4272BDD8A - CFE9C035AE72AD0EFF2D6A09007C1A5022A741CD5DCCE0562DF061057C85A132 - C79850852C742180896E0380CA065F5688300996A879CE7358F56648C31A422F - 0F622840DF8240053A4401572E21D9AE306006C469A04912585FE5B0C43E9B5D - CE66316BE2E4A0F5831868000B021BE0E74C71953F0D6D81708A4F00E865AE07 - 0A231CFBF284052F68A068FCC94316B8D33106A0A845FD0B60ED18DB1A525828 - 8335084F2F8CE1F320868717446062878451220D59A34316F2909044E40B0A09 - 3147466C9130A2642323F6C84932529192ECA4239B30821530210864A043190E - D01221EEEA0B4862021390688397BD4F4BFB6B5FFEE2B7CB5CE6727EBBBC5978 - C6632D5368B18070FFA0472ADAC2153032905EE52AE303BBA1B60D589319072A - 90D4A686A06B006830BE031B1E03968054A4F078688B2320CF3006CCC44B909A - A218263F79494646F29E929C67242B29498BE1139FFCFCE7439AD00459D16A00 - 103840920AB79C868ACF0CB39C0E0EA048D19A59B4A25D52420F62D08220A409 - 14201D203205E6CE6E7ED1995E116339C825CDD5E9EB3F1214D01AB539BBA751 - E32DECF41D094B283681D5432C2A840C3FF0A54E089988616C83E7890C190148 - 36B5A9F684EA53997ACFA74E55A057B5271EEEB955AADAD3AB55B5AA58AD0A56 - AA5A15054DD0C10A30F1870DC0E10B7A2059F89893B23934C90412A84194F8A7 - CBBEFAF5AF800DACFF60074BD8C026E10724584119D2D4CE44794E8B06A49A02 - 511AA706B6F48165515E05F5442037466D61A1B0A385C6E98E64A602A8854A6D - 3A3F48C1A42AB561586564274529DBAFE273B6B6CDAD256FABDBDAC656A0B4BD - E7484A9281206C2501B034524BC617CB1668E00936A8C1B080D957BE5617B07C - B5AE2EB3BB5DEC76D797F8C301625B3052920AC4B159146901BBC8CC6652162C - 9B1823192F7B2E6E288F99EDCA2636399B53D19290B455D9D01F808ACEC954AA - 32256AE700DEF9DA4C3575AB0FBEEA56271C010857F8AA1196AA54BB8A61AE5E - 98AA160E71562F9C61129BD8C2207E6A575180BD0C60219575F042AE8EA35C58 - 1E804978ED010EF0FF57D81EFBF8C74056820472C00437AC89610B6B67B5445A - 0A36A9023E937DAF2CC4781FD599B11780B18504D7B660CEC2652E741CE16801 - 6CDA0117AF8F90B9D72EE210A04036B86D61DDB08A9D4A67437258CE510D6B6F - 3F3C56AC4638CF56BDF33FA56AC83CA075042EE60115A2E0BD2239747C664899 - 7349F0841F4C17C898CEB4A675191E531E395E6C432F643F1D342987918C5736 - 0B6BBFDCD9665C134DEDB82399C7D0186C1478326A0BC89B9DD7E75EFBFAD7C0 - 0EB6B0874DEC5FCF200233B8DE0A66150532243488467289737C9038F53960D3 - D8CE3661C3A3812D84EE2AA0C6949297AC5EF32E835B4633F52B9AD94007A65A - 1B87DA0ABBDAE86AFF9C8A9051A46D8769CB969F7E7F08D74012B7405CBB6BCD - CCB9D8084FB8C2175EEC421254042DC00215E2308003808F702D89B419E6C0A4 - E9F052DB20DFB41252F08415789BA4E12EC8B8476D156D510DCAEA9EB29CEE41 - DFD5F9672C4C9B9A9E5E3DA15803AFA702B6B5500FB6353CCDB1E0BC6EEAB197 - FE54A63BBDE95067BAD2914DF5A93FFDD8569F01D6A97E75AE437DEA56F7FAD3 - C33EF63C10E0377738031C14BA9C92C1842510FD550ED237D1C20A00B0776F5F - DE1FB0F7BEEBD2EF7FDD7B6001FF1D0970740B2867F082417DDEC71E93A4EE71 - 6FCCA73C46B294E5DD586E338178AED39F6328C06BE0F7ADD39627A4C790C452 - 8770D72B8C75D507FF5AE97858BAEBADDA7AD9B79EEC5C8F3DB2552FE2AA47BD - EABA1F7BEE59DC379DD1610CDE23D2A3A5F085036CA105E7BB8912424E7D6C8F - 9CA3580037A6C21DEA901EF3DB077C32CC27DF86B0547E2C5636E34B25A80912 - D9C5DE5FF33C3C02CC21380E1D77450FB8E94FAFF5FE8BFDFF5DE77F4ED77F01 - 886C5AC77507388004B8800948800028760EB88008C88048C062117705575007 - 2C116D43C4049376133840787737827FC7772648827A77822A488228B88225C8 - 822698827787031240022DE00651C0789BA1642CD764A39340DF427EE25279E9 - 7765C4100E6A132F379560E1247FEFB06F34A75A2CD44116906BFB174302D880 - 4BA7850678755C28FF815E08860938815DC8805FF8856408865DB886FD474AA6 - 645C01B07652801CD19624D4561395A65DDA26782A587D80A5143980093A6810 - 29075AD5E27804240AF48020A52384AE607E96777957665F6AF30CEC5447F8A6 - 18C9B44701B02043D7206A615457888566588AA6788AA8988AAAB88AACD88AFE - 875637B0023010075700075AD0121CC82B52E08194F62432E88230188CC0388C - C2588CC4C8771A251E4C908304377083B87288D833EE1479E3E788E6215F73F2 - 6EDD9065F3A60CFDE5733C95479B780DF850601D7460F3D68CA38822AED88EEE - F88EF0188F04880704D0373010047750076EF005B858382EC17C07406D39F004 - 499404D3E78731E8FF6307A969E01103E3A1789A9228E9356AA6F083F0618DAF - 903A35875900B10C974815FE327F9BD8219EE847FDE041000191EBD83033B000 - 2DF9922E199330399332599334799336999338B9933AD9933CF9933EB9007820 - 06C485059CE3062D31570FA524B354693D608C50798C51399552898C55D40203 - 100527C27D47855ED1782DEBB588A483919A503A72C25292786596226F6B137F - 3F571503C089E6B242FFE60F1FE4092B2948042893A7E8927BF9925AC7978039 - 98813993A528987E698A89998A36599882F9978BF99262D0622F7606CFE64AFE - 78245E80014824014340582D18782E98827D159A55298CBA448344560728C27D - 03316E5FA926F3B0FF60267552424865E8B7914AB3526CB60609E00E6F090771 - 498EF72719E738226E96976D03930B109440D992CDF99C31199DCE599DCC699D - 41499D34A99D31190162E0865B4006573006D021572713692A030203E9322F78 - 9AEE4995F0B9823D30644C004F2BD783903796649991A886791F12077FE096A5 - 358E67763C82F2416BA38ECA8922D8299D0EDAA010FAA0128A9D5BE586C04106 - 75905C6E5738CC654404890307D977211AA27F37A2A49990225882279AA2A4A9 - 142BE0060EE39A8638913D832D28776E6E126593677ED09496F5A50D008A0E8B - 1230C359A09F381977A96B0BEA3CD7D99CDC499D4EDA934F1AA53949A53539A5 - D7B99D4EDAA456BAFFA5D349A55C0AA5D39906CD3912100703E22924177732CF - F105CE853E96169F72FA9E743A823FF0043718A32A799F14399B58F11EB6799B - 6759844983A0842192B4C64752F86F547897C9B9A40EE3A5560A9D602AA95F4A - A95D7AA95D4AA99C6AA951DAA962FAA99B3AAA934AAA32C93719C0025D400632 - 6624CBD1120DB524BDA804735AAB755A954A7109ACE93C29C783B1F9518F826E - FB893A63844698B516CC134E10A0887BB43DC579A0C6A0A090CAA0996AA51550 - ADD87AADD81AA5DABAADDE9AADDFDA9CDD1AAED54A8FB178012C602910601C6B - FA8F3EF00534D18B3DF08BC528002368AF7C87AFF61A8CFADAAFF7FAAFF90AB0 - FB8A8C43201E58C0FFAB85D858E456A3EBC526A5568DB7797EC6BA9B08860CBF - B90E70B906A865A0220210D32A485F4AAE223BB2245BB2267BB243D923177005 - 0CF007C5D18F0DE5039136131D27013F40AFB76AAB3AFB005759075AF9663CC8 - 725CB4214F16A8824A841BA92E24026A8A82B1B4D60579C1B1A41721D2FAB19B - B100D74AA6598BB55C7BAD5EDBB560FBB562CBB55A0BB6653BB6681BB66A9BB6 - 637BB66B4BB670BBB56DABB664BA0024E16264C0078243246F57443E10514934 - 7D033BB8FEBAAF862BB0877BB8011BB089EBAF8C2B00AAD9513F1B43096B4C90 - 153AC9F4A76E32ACD78896D204180172190B36218AB801504B977D64608064B5 - F024AE4EDAAD63EBFFBAB2CBB5B30BBBAF7BBBB58BBBB4BBBBB1CBBBBA6BBB5F - 9BBBC2EBBBC38B046E8805787206B7F812CB5744BF4202368BB33B3BBDA7C96D - 5B7007F05488497688E56640C9500D46138411BB5256560C9D909C534330466A - 92FD702714A4A4ACEB366FCBB6F35BBFF47BBFF69BBFF8BBBFFA6BBF78D00419 - 700163F01642C2B7E1935C2C63B320DAB88F5BB884ABB80CFCC00DDCB8F84A04 - 771A7157E858BFBA1EECC5B9A8A391861207E958106DB24141C5BE6BD606F01B - BF6EC3BF2EDCBF2F1CC3303CC3329CB6765B4A4CC0023B10076A4A38AF6A065B - F0B747F40429D003B4BA828ECB8249BCC488DBC48B3BB84A50B04CB1ABAFE59A - D0F87D56313ACCE4FFC1830A18AD0543030129E5B81769866BCB03C62CDC3658 - 5B015ECBC66BDCC670CCC66E2CC76F5CC7747CC7729CC778ACC7763CC77E1CC7 - 7B9CC77D0CC76F2CC87AFCC787ECC60BF09D10770701C00765C08F6EE7683EC0 - 7C662003EB19A714BCC99CDCC99EFCC9051B886F26A3DBBBB0D682B97EFA72DE - 22BE93773495A13007B10C1DC20F93622F45B73C559BC69B51C376DCB5730CC3 - 7F1CB6BFECB56980B6C38CB5C54CC3C77CC734FCC6E62A8B77400772C8811870 - 005E7063431CA74FECC04CBCCD4E2CC1E0ACAF166C456540C5196CCA90D5C11E - 5C7EEE97194A78BA648C3CA4B7C2BADC36897CCFF89CCFFABCCFFCDCCFFEFCCF - 007DCF8B7CAE2C40FF0709B581D1A68B1C37909AFCC90EFDD010BDAF43508318 - 5C7032EA95DF972DED21ACE6618D6C41B59BF1018072A42F75C64856CFF61CD0 - 2ABDD22CDDD22E0DD048409426710761B00375E03DE65938332B903160B3FF1A - D1401DD486DB695B607ADA5BCA3DC81E5A0CB131F7D1C8A019F4D00071902FAB - 25C28F8AD20EA3C71E20C75B9DC75BDDD5158006892CD6F90CD6665D015B4DD6 - 689DC8602DD6607DC86DCDD56B7DD66C7CD65F2DD7753DD7727DD779DDD761BD - 001170B730B0037FF0562F6132322BB3186057D0FB034420D4900DD9DC76B0A3 - A878182DB48BB8B98EC82E574D10F4F007CE9A4EBB3022F48CD559FDD26BDDCF - 6F8DD7F8BCDA65CDFFD6FAECDAFCBC04AC7DD7749DDA797CB727710567E00543 - 92D0CCB70572F7A1B41AD9C6EDD04460782D000127BD6B17ADC1344A401ADD65 - C2AAA3EFD5564F9D1998B1019D28DA112420CD6DDA0DA3D7B64DDEE65DDEE87D - DEE4ED01E9DDDEEAEDDEF0FDDEF28DDE1E8006EC3DDF68ED016920066260123B - C0006B3001524063E79924C32D018F6DAF42B0AF0BAEE00CFEE00E1EE102D0E0 - 130EE1152EE1149EE10230D124C004C27985CD286A14696E45CBCA28C5D9D24A - 0F2854A0446501967274E21D43E5EDD7768DDBEE4DE37B2DDF38BEE3E69DD77C - 8DDF330EE47AEDE336BED71E40006B259E7470D3FD98993EF0E46FCA9EC73DE5 - 9CAC043860020094FF97176DB958CC5E8D686A28BE197F7A0F27B96601A76031 - EE3CECBDE66CCEE6F6DDE6701EE772BEE6F93DE76D6EDF62FDE671EED676DEE7 - 7EFEE7807EE76B8E063340942B1004571007DD036D4324054F8EC90499E015BE - E01A4EE9937EE996EEE0969EE917DEE9955EE188559F2B49CA57FC390D5B52E0 - BBCA278E5327B20C6DC041BAC3660A83E669DE36747EEBF7FDD56C5EE7409EEB - 73EDEBF41DECBC7EEBF39DEBC6AEEBC8FEDEC75EE7BB4EECC96EDB317D0317B8 - 0351B0BC98F9E41A2703E7E399C54DE5DE6EB8FF73BDE1BDA012899FA1A0E209 - 4459612EE66D32D5F862295C56EB8214E8F45EEFF67EEFF89EEFFA5EDF683099 - 817807543000CB9BFF1C075C57D1370409FEE99B8EE90CAFE99ECEF00BEFF002 - 30D993ABE53A08DD1B4C210524965A2179A6B3EE27B206DDFDE212E24EB92CEF - 06B1EF2ABFF22CDFF22CBF002A4012E84A0510B0120E75F3527000F16A0243D0 - ED92FEED869BF00F9DDC9750F1A33E88DB1BDD896840B459E2264E1F201FD280 - 22EBD93D7028EF301E500259BFF5F6ADF55E8F065EBFF5613FF6622FF625F0F5 - 649FF6653FF667BFF66EAFF670FFF6721FF75ADFF5737FF7FA6DBCD983816F35 - 871BFA3DCCF705DA4E699FE9F00B7FF8109FF888BFF8973E04786AF4D32A6E22 - 2EB416F9F450CFEAAD690DA278F5F3EEF6EC4DF69F2FF7A11FFA745FF670AEF5 - 6C1EF6A4EFF9AC8FFFFAADBFE6A0BFF5A32FFBB4AFE7AE1FFBAABFE67A9F686D - F006ADEAAA1AB72403D9F386AFF8C6CFF8C80FF1C96D72906FF1BD7AD9A61E96 - A8D04D4513F59AF1BDB36EF59C8FF55EDFF6630FF6737FF6DE0FFE69EFFD590F - F6E6FFFD6C5FFE2500F6E8BFFEE12FFE6FFFFE674FFE77DFFE709FFE72BFDF38 - 0C08645D036E5F18187E8888665F5F3E2D244F434A4202959796999742989D9A - 9F9EA1A09902124F1A5803AAABACADAEAFB0B167B3AD6363090970BABBBCBDBC - B8036B0D6DC4C5C6C7C70D1B6B67B1AE671F1FCDCED4D5D6D7D8B0251EDBDDDC - DFDEE1E0E3E2E5E4E7E6E9E8DC25EAEEECEFF1EBF215624D2B1759716B135289 - 7A3E0E613023C550FF8B1C4F7E0858288408C385A344617A288AA22587A0880C - 9140E2C2986C20B3CD9A762B97AF93BD12046BD005994B64CA98859C49B3A6CD - 55F0DAE9DCA93327CF9F3B7DB6130AB4A8D1A34089225D6A5429539D0AD2DC63 - 42264E17088E30E81198A8A09939087F1091688953D94D684199E5146AAD26B7 - 434CE42813E5A6DD91B406D8C26512651D5D093E7ED8C0B24BCB9788634EA3B6 - 785563BB9023AF0AD70E4DCF1296E171B35C19B367CEE5867ADEDC4D3468D33C - 2D671E7D79B56870AA75828E1D5BF3E7A4A55BA7060ADADE0D265400C41970C0 - DF568152186138F84482C288D0C94A8F9E51420E264124DBCCCBAA24CA5D63CE - 10EE12A07C80C388FF5D2AD6CEBE7DB6A7F0E3CB9F4FBFBEFDFA69C4FCE69185 - 0221337E249208063E980120130839E750276BB1C5D659103E286183694DC8D6 - 0F2668B0857B35E1D5CC5E70F40558786BFCD1451C148411471CE7A5F7D27A1C - C628E364A7C966E34FA0D9E6136CB97516946738DE98DB6CA1F104CE513BB206 - 0F9147EEE6A393A9E9D7020B6184B1070452084420065214F485063990608204 - 435037DD9911B9750911449840021375CC28125EABEC95CB9D2B918762952CB6 - E8224CCB3C26E7A09095A080A188B673E8A13B2D9A28543C395A94A394425AE9 - A59622CA68A49A72BAE94F923EAA68A79B621AEAA7A4768AC40D2D904181050D - B86186565A1E2205FF0820842981040B3AE8EBAFC0062BECB00DFD704A2A84DE - 5452606B9C48C18A1444DB277A7F160363B2D8DA5469A340853AAAA9A266EA6D - AA98723B6EA99D7E1BAEB9DDA6CBA9BAA8B20B2F1A52DE1186707548A1C7715A - E29A6B826556486184035B48B0C0976C745D1D1F655B8D87AAD812DE1F7130C0 - 4095613C3B6DB5C904EAF0C721912B32B8248F6C72C9289FAC72CA2CAF7CF212 - FAAD1004030074518621030AE4EFBFCD0D3116B140072DF40F12685817C8CED0 - C9CA070D0410C6C5D16ACC22B51C5F8BF4D5B12880C6A29C695D6EAAF08AACE8 - D68F6E5B36A4F38E3AF6A55D934B36BA6A9B1CB7D9E8B2CD76CC30EC90451751 - 14B765403BCB90EBFF13098D75968307276EF0E2BF0A40044717C489F535B308 - B367D41A974775B5564FEEB92A0A842EFAE8A4976EFAE9A8A7AEFAEAACB7EEFA - EBB0B38E061731A0B2030014D4F1853F3AEFCC3399870B2DFCF044FC503B1C9F - 3306CD1A6D049022E62B6ACEB1319D278FF42CB12F1ABAA6A593BABDF6A8738F - 72F7A68BFFFDEBE65F4AFEE8DE83CFBEE8E92BC0451322E43D45006F6861C671 - BE8320380891F0195A1007AC8311904207DC44F132842CEBC1A2720DB85CD4A2 - E7A7E9B5A17A0ECCD6484487000E9AAE83AD0321E944383A1192307BAF3B61E8 - 54A80016A2F0851F64DFFC6E70012A848001C4A155FF7616C0E00DEF87C26213 - 47E074B40CB20282FFCECBD804A3B7B93F61D08884A2050CA748C52A5A11755B - BBA2EA66D7041AF2C00914F880160EB14310CC4106609284E180C84661190F15 - 512003141D7306CB3D6F89D2B3E0053D36C76441CC831D0C24205B4848411AB2 - 90883CA42209793A419630918C1C212417F9C8455A7292923421264F78493074 - 31032CB0D81AB4F0851DCA40067368810C22219636BAF257C5AB5D1D54D24724 - DE515A1BD3E313FBE81E0F8D21759A5CA1072BB9C94C42B29191142627597749 - 625E5293941C66323149CC472EA18B176041161870860994F1946794014202F6 - CA720A81682B7043C3E6084109E2328F16DC252F2543A75BC061930878663E0B - B94F43E6F39FFE04FFA8402709507EFE9383FDC4A7400B1AC88532B485FD74E8 - 411B4A51832ED4A20145C035479081203821046D38E50ECF388733B2F267E66C - 63F14880857542D1964AC4E5D4F4B84799CC534623D10B1CEAE0064329F398C5 - 7464249F19D462FEF490472D2A5185BA54A53A95A830BB070CAAC000299CD177 - E09C831FCE08B094AA940824D8C21D78D9CE5B66AE82D393E74DEFF2213840C0 - 0D5A50C11214D00789DAF5AE19C5AB5E2F4A51896274AF800D2844034BD8C222 - 607E2BC0020F0C74D5C0A1720EFB5A654286E05536B6A9050D7C691D9B66560A - 36D1456A5DEB4CE8948BB76AE100311083A1F27A578CFEB5A28A4CA85D13D9DA - BE1A96B5B01DEC43FF6D7BDB81F25601F6C0C7160EF085C6FAEFB125C5C01CD2 - D8CACA12EF141728A211CB1AD3B37E363DA1152D48723A06B7BAC10B07388006 - 622057DDF6F6BCE84DAF7AD7CB5E892256033E68841EE6E02F703E560FA70C0B - 659D2BB4956AA00CB5DC6C12A1C7449A6657BBD8A045774D1BDE032C97044DE0 - C212F06ADE88EE75B0AFB5707BCF5BE1C27678C3B3B5470E348001E22AF794C8 - 2DA98AC549821FF037686C225A0E36C4CECDBAD3BA06E62382B793D3D2C2B5C1 - E17D3079278C001714F9C8F9347292FFA9E4231BF9C94866B240A1DC64805259 - CA576EF295ADECE42E6F39CA5AF63298A73C66282F39CB588EF299BB2C3F15DC - 40034CF8C2017C405B5254DAB9A4F31567E15E1C34633121C0C218301ED15A35 - 1DEF98267859F0774F0B64071F444C5CA82B88274DE94A5B3AB02E58829BE11C - 5E82E499A42A46048B79C567620DE1092D0074043B9BCB781AFAD02151B07719 - 0DE44000003B} - ExplicitWidth = 386 - end - end - object edtPassword: TEdit - Left = 96 - Top = 132 - Width = 278 - Height = 21 - PasswordChar = '*' - TabOrder = 2 - end - object bAceptar: TButton - Left = 208 - Top = 203 - Width = 75 - Height = 25 - Caption = '&Aceptar' - Default = True - TabOrder = 3 - OnClick = bAceptarClick - end - object bCancelar: TButton - Left = 296 - Top = 203 - Width = 75 - Height = 25 - Cancel = True - Caption = '&Salir' - ModalResult = 2 - TabOrder = 4 - end - object edtUser: TEdit - Left = 96 - Top = 104 - Width = 278 - Height = 21 - TabOrder = 1 - end - object Button1: TButton - Left = 16 - Top = 203 - Width = 129 - Height = 25 - Caption = 'C&onfigurar conexi'#243'n...' - TabOrder = 5 - OnClick = ToolButton4Click - end - object Timer1: TTimer - Enabled = False - Interval = 5000 - OnTimer = Timer1Timer - Left = 344 - Top = 64 - end - object JvAppRegistryStorage1: TJvAppRegistryStorage - StorageOptions.BooleanStringTrueValues = 'TRUE, YES, Y' - StorageOptions.BooleanStringFalseValues = 'FALSE, NO, N' - StorageOptions.BooleanAsString = False - Root = 'Software\%APPL_NAME%' - SubStorages = <> - Left = 14 - Top = 168 - end - object JvFormStorage1: TJvFormStorage - AppStorage = JvAppRegistryStorage1 - AppStoragePath = '\' - Options = [] - StoredProps.Strings = ( - 'edtUser.Text' - 'edtPassword.Text') - StoredValues = < - item - Name = 'Ruta' - Value = '' - end> - Left = 48 - Top = 168 - end -end diff --git a/Source/ApplicationBase/Usuarios/Data/uLoginForm.pas b/Source/ApplicationBase/Usuarios/Data/uLoginForm.pas deleted file mode 100644 index a8baebae..00000000 --- a/Source/ApplicationBase/Usuarios/Data/uLoginForm.pas +++ /dev/null @@ -1,112 +0,0 @@ -unit uLoginForm; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, StdCtrls, ExtCtrls, ComCtrls, cxGraphics, cxControls, - cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit, - cxImageComboBox, ImgList, PngImageList, pngimage, ToolWin, JvExControls, - JvComponent, JvGradient, JvGIF, JvComponentBase, JvFormPlacement, - JvAppStorage, JvAppRegistryStorage; - -type - TfLoginForm = class(TForm) - Panel1: TPanel; - Label3: TLabel; - Label4: TLabel; - edtPassword: TEdit; - bAceptar: TButton; - bCancelar: TButton; - Label1: TLabel; - edtUser: TEdit; - JvGradient1: TJvGradient; - Button1: TButton; - Timer1: TTimer; - JvAppRegistryStorage1: TJvAppRegistryStorage; - JvFormStorage1: TJvFormStorage; - Image1: TImage; - procedure bAceptarClick(Sender: TObject); - procedure FormCreate(Sender: TObject); - procedure ToolButton4Click(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure Timer1Timer(Sender: TObject); - private - FIntentos: Integer; - end; - -var - fLoginForm: TfLoginForm; - -implementation - -uses - uFactuGES_App, uDataModuleConexion; - {uDataModuleUsuarios, uDataModuleBase} - -{$R *.dfm} - -{ -********************************* TfLoginForm ********************************** -} -procedure TfLoginForm.bAceptarClick(Sender: TObject); -//var -// bOk : Boolean; -begin -{ ShowHourglassCursor; - try - bOK := dmUsuarios.Login(edtUser.Text, edtPassword.Text); - finally - HideHourglassCursor; - end; - - if bOk then - ModalResult := mrOK - else begin - Application.MessageBox('Usuario no válido. Compruebe si ha escrito correctamente' - + #13 + #10 + 'el usuario y la contraseña.', 'Atención', MB_OK); - Dec(FIntentos); - if (FIntentos <= 0) then - ModalResult := mrCancel; - end;} -end; - -procedure TfLoginForm.FormCreate(Sender: TObject); -begin - FIntentos := 3; -end; - -procedure TfLoginForm.ToolButton4Click(Sender: TObject); -var - ATimer : Boolean; -begin - if Timer1.Enabled then - begin - ATimer := True; - Timer1.Enabled := False; - end; - - dmConexion.ConfigurarConexion; - - if ATimer then - Timer1.Enabled := True; -end; - -procedure TfLoginForm.FormShow(Sender: TObject); -begin - Self.Caption := Self.Caption + ' - ' + AppFactuGES.AppVersion; - JvFormStorage1.RestoreFormPlacement; - // Hacer login automática si hay usuario/password y no hay más de una base - // de datos como opción para conectarse. - - if ((Length(edtUser.Text) > 0) and (Length(edtPassword.Text) > 0)) then - Timer1.Enabled := True; -end; - -procedure TfLoginForm.Timer1Timer(Sender: TObject); -begin - Timer1.Enabled := False; - bAceptar.Click; -end; - -end. diff --git a/Source/ApplicationBase/Usuarios/Model/Data/uIDataModuleUsuarios.pas b/Source/ApplicationBase/Usuarios/Model/Data/uIDataModuleUsuarios.pas index 18615995..3e96b9cc 100644 --- a/Source/ApplicationBase/Usuarios/Model/Data/uIDataModuleUsuarios.pas +++ b/Source/ApplicationBase/Usuarios/Model/Data/uIDataModuleUsuarios.pas @@ -3,12 +3,12 @@ unit uIDataModuleUsuarios; interface uses - UCBase, UCDataConnector; + UCBase, UCDataConnector, UCSettings; type IDataModuleUsuarios = interface ['{F2D2E969-5E87-42DE-A550-E839C4607C72}'] - procedure InicializarCamposUserControl (AUserControl : TUserControl); + procedure InicializarUserControl (AUserControl : TUserControl); function GetDataConnector : TUCDataConnector; property DataConnector : TUCDataConnector read GetDataConnector; end; diff --git a/Source/ApplicationBase/Usuarios/Model/uUsuarios.pas b/Source/ApplicationBase/Usuarios/Model/uUsuarios.pas index ef53a8c4..35d8a386 100644 --- a/Source/ApplicationBase/Usuarios/Model/uUsuarios.pas +++ b/Source/ApplicationBase/Usuarios/Model/uUsuarios.pas @@ -6,9 +6,7 @@ uses UCBase; type - TUsuario = class(TUCUser) - - end; + TUsuario = TUCCurrentUser; implementation diff --git a/Source/ApplicationBase/Usuarios/Data/uUsuario.dfm b/Source/ApplicationBase/Usuarios/Views/uUsuario.dfm similarity index 100% rename from Source/ApplicationBase/Usuarios/Data/uUsuario.dfm rename to Source/ApplicationBase/Usuarios/Views/uUsuario.dfm diff --git a/Source/ApplicationBase/Usuarios/Data/uUsuario.pas b/Source/ApplicationBase/Usuarios/Views/uUsuario.pas similarity index 100% rename from Source/ApplicationBase/Usuarios/Data/uUsuario.pas rename to Source/ApplicationBase/Usuarios/Views/uUsuario.pas diff --git a/Source/ApplicationBase/Usuarios/Data/uUsuarios.dfm b/Source/ApplicationBase/Usuarios/Views/uUsuarios.dfm similarity index 100% rename from Source/ApplicationBase/Usuarios/Data/uUsuarios.dfm rename to Source/ApplicationBase/Usuarios/Views/uUsuarios.dfm diff --git a/Source/ApplicationBase/Usuarios/Data/uUsuarios.pas b/Source/ApplicationBase/Usuarios/Views/uUsuarios.pas similarity index 100% rename from Source/ApplicationBase/Usuarios/Data/uUsuarios.pas rename to Source/ApplicationBase/Usuarios/Views/uUsuarios.pas diff --git a/Source/ApplicationBase/uFactuGES_App.pas b/Source/ApplicationBase/uFactuGES_App.pas index cde5ad13..3741e919 100644 --- a/Source/ApplicationBase/uFactuGES_App.pas +++ b/Source/ApplicationBase/uFactuGES_App.pas @@ -13,14 +13,12 @@ type FEmpresasController : IEmpresasController; FUsuariosController: IUsuariosController; FEmpresaActiva: IBizEmpresa; - FUsuarioActivo: TUsuario; function GetAppForm: TCustomForm; - procedure SetEmpresaActiva(const Value: IBizEmpresa); - procedure SetUsuarioActivo(const Value: TUsuario); function GetEmpresasController: IEmpresasController; function GetUsuariosController: IUsuariosController; function GetAppName: String; function GetAppVersion: String; + function GetUsuarioActivo: TUsuario; protected procedure InitializeInstance; virtual; procedure DestroyInstance; virtual; @@ -28,11 +26,12 @@ type class function NewInstance: TObject; override; procedure FreeInstance; override; class function RefCount: Integer; + procedure CambarEmpresa(const AIDEmpresa : Integer); property AppVersion : String read GetAppVersion; property AppName : String read GetAppName; property AppForm : TCustomForm read GetAppForm; - property EmpresaActiva : IBizEmpresa read FEmpresaActiva write SetEmpresaActiva; - property UsuarioActivo : TUsuario read FUsuarioActivo write SetUsuarioActivo; + property EmpresaActiva : IBizEmpresa read FEmpresaActiva; + property UsuarioActivo : TUsuario read GetUsuarioActivo; property EmpresasController : IEmpresasController read GetEmpresasController; property UsuariosController : IUsuariosController read GetUsuariosController; end; @@ -43,14 +42,27 @@ var implementation uses - uDataModuleBase, uUsuariosViewRegister; + uDataModuleBase, uUsuariosViewRegister, uEmpresasViewRegister; var Ref_Count : Integer = 0; +procedure TAppFactuGES.CambarEmpresa(const AIDEmpresa: Integer); +var + Aux : IBizEmpresa; +begin + Aux := EmpresasController.Buscar(AIDEmpresa); + if Assigned(Aux) then + begin + Aux.DataTable.Active := True; + if not Aux.IsEmpty then + FEmpresaActiva := Aux; + end; +end; + procedure TAppFactuGES.DestroyInstance; begin - + FreeAndNIL(FAppInfo); end; procedure TAppFactuGES.FreeInstance; @@ -59,9 +71,9 @@ begin if (Ref_Count = 0) then begin AppFactuGES := NIL; + // Destroy private variables here - - + DestroyInstance; inherited FreeInstance; end; @@ -87,6 +99,11 @@ begin Result := FEmpresasController; end; +function TAppFactuGES.GetUsuarioActivo: TUsuario; +begin + Result := FUsuariosController.CurrentUser; +end; + function TAppFactuGES.GetUsuariosController: IUsuariosController; begin Result := FUsuariosController; @@ -95,7 +112,6 @@ end; procedure TAppFactuGES.InitializeInstance; begin FEmpresaActiva := NIL; - FUsuarioActivo := NIL; FAppInfo := TJclFileVersionInfo.Create(Application.ExeName); FUsuariosController := TUsuariosController.Create; FEmpresasController := TEmpresasController.Create; @@ -118,28 +134,19 @@ begin Result := Ref_Count; end; -procedure TAppFactuGES.SetEmpresaActiva(const Value: IBizEmpresa); -begin - FEmpresaActiva := Value; -end; - -procedure TAppFactuGES.SetUsuarioActivo(const Value: TUsuario); -begin - if Assigned(FUsuarioActivo) and (FUsuarioActivo <> Value) then - FreeAndNIL(FUsuarioActivo); - FUsuarioActivo := Value; -end; initialization AppFactuGES := TAppFactuGES.Create; // Pongo esto aquí por ahora uUsuariosViewRegister.RegisterViews; + uEmpresasViewRegister.RegisterViews; finalization FreeAndNIL(AppFactuGES); // Pongo esto aquí por ahora uUsuariosViewRegister.UnregisterViews; - + uEmpresasViewRegister.UnregisterViews; + end. diff --git a/Source/Cliente/FactuGES.dpr b/Source/Cliente/FactuGES.dpr index 7a4baf90..376ba3d5 100644 --- a/Source/Cliente/FactuGES.dpr +++ b/Source/Cliente/FactuGES.dpr @@ -1,7 +1,6 @@ program FactuGES; uses - ExceptionLog, Forms, Windows, SysUtils, diff --git a/Source/Cliente/FactuGES.dproj b/Source/Cliente/FactuGES.dproj index 66d34648..9187fba3 100644 --- a/Source/Cliente/FactuGES.dproj +++ b/Source/Cliente/FactuGES.dproj @@ -45,13 +45,73 @@ $(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10;T:\COMPON~1\jcl\lib\d11\debug;$(BDSCOMMONDIR)\Dcp;..\Lib;..\Modulos\Lib $(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10;T:\COMPON~1\jcl\lib\d11\debug;$(BDSCOMMONDIR)\Dcp;..\Lib;..\Modulos\Lib $(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10;T:\COMPON~1\jcl\lib\d11\debug;$(BDSCOMMONDIR)\Dcp;..\Lib;..\Modulos\Lib - DEBUG;EUREKALOG;EUREKALOG_VER6 + DEBUG; Delphi.Personality VCLApplication T:\Codigo (Luis Leon)\Source\Modulos\Pedidos de cliente\Controller\FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse2220FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.2.2.0FactuGESFactuGES2.1.4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CodeGear Control Panel Applet Package CodeGear WebSnap Components CodeGear SOAP Components @@ -86,7 +146,7 @@