diff --git a/app/DD_PM_WINDREAM/ClassDatabase.vb b/app/DD_PM_WINDREAM/ClassDatabase.vb index 906827c..99c0c37 100644 --- a/app/DD_PM_WINDREAM/ClassDatabase.vb +++ b/app/DD_PM_WINDREAM/ClassDatabase.vb @@ -61,12 +61,12 @@ Public Class ClassDatabase Try Dim SQLconnect As New SqlClient.SqlConnection Dim SQLcommand As SqlClient.SqlCommand - LOGGER.Debug(">>> ReturnDatatable: " & Select_anweisung, False) + LOGGER.Debug(">>> ReturnDatatable: " & Select_anweisung) SQLconnect.ConnectionString = SQLSERVERConnectionString SQLconnect.Open() SQLcommand = SQLconnect.CreateCommand SQLcommand.CommandText = Select_anweisung - LOGGER.Debug(">>> Execute ReturnDatatable: " & Select_anweisung, False) + LOGGER.Debug(">>> Execute ReturnDatatable: " & Select_anweisung) Dim adapter1 As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter(SQLcommand) Dim dt As DataTable = New DataTable() adapter1.Fill(dt) @@ -86,7 +86,7 @@ Public Class ClassDatabase Public Shared Function Return_Datatable_CS(SQLCommand As String, Conn_ID As Integer, Optional userInput As Boolean = False) Try Dim oConString As String = Get_ConnectionString(Conn_ID) - LOGGER.Debug(">>> ReturnDatatable: " & SQLCommand, False) + LOGGER.Debug(">>> ReturnDatatable: " & SQLCommand) Dim oSQLconnect As New SqlClient.SqlConnection Dim oSQLcommand As SqlClient.SqlCommand oSQLconnect.ConnectionString = oConString @@ -114,12 +114,12 @@ Public Class ClassDatabase Dim SQLconnect As New SqlClient.SqlConnection Dim SQLcommand As SqlClient.SqlCommand SQLconnect.ConnectionString = SQLSERVERConnectionString - LOGGER.Debug(">>> Execute_non_Query: " & ExecuteCMD, False) + LOGGER.Debug(">>> Execute_non_Query: " & ExecuteCMD) SQLconnect.Open() SQLcommand = SQLconnect.CreateCommand 'Update Last Created Record in Foo SQLcommand.CommandText = ExecuteCMD - LOGGER.Debug(">>> Execute NonQuery: " & ExecuteCMD, False) + LOGGER.Debug(">>> Execute NonQuery: " & ExecuteCMD) SQLcommand.ExecuteNonQuery() SQLcommand.Dispose() SQLconnect.Close() @@ -142,12 +142,12 @@ Public Class ClassDatabase Dim SQLconnect As New SqlClient.SqlConnection Dim SQLcommand As SqlClient.SqlCommand SQLconnect.ConnectionString = ConString - LOGGER.Debug(">>> Execute_non_Query: " & cmdscalar, False) + LOGGER.Debug(">>> Execute_non_Query: " & cmdscalar) SQLconnect.Open() SQLcommand = SQLconnect.CreateCommand 'Update Last Created Record in Foo SQLcommand.CommandText = cmdscalar - LOGGER.Debug(">>> Execute Scalar: " & cmdscalar, False) + LOGGER.Debug(">>> Execute Scalar: " & cmdscalar) result = SQLcommand.ExecuteScalar() SQLcommand.Dispose() SQLconnect.Close() diff --git a/app/DD_PM_WINDREAM/ClassFinalizeDoc.vb b/app/DD_PM_WINDREAM/ClassFinalizeDoc.vb index 9c437c4..32dc87c 100644 --- a/app/DD_PM_WINDREAM/ClassFinalizeDoc.vb +++ b/app/DD_PM_WINDREAM/ClassFinalizeDoc.vb @@ -69,7 +69,7 @@ LOGGER.Debug($"oIndexType {oIndexType.ToString}") If oIndexType > 4000 And oIndexType < 5000 Then 'Hier muss nun separat als Vektorfeld indexiert werden - If Indexiere_VektorfeldPM(value, INDEXNAME, WMObject) = False Then + If Indexiere_VektorfeldPM(value, INDEXNAME, WMObject) = True Then LOGGER.Debug("FINALER INDEX '" & INDEXNAME.Replace("[%VKT", "") & "' WURDE ERFOLGREICH GESETZT") Else diff --git a/app/DD_PM_WINDREAM/ClassPMWindream.vb b/app/DD_PM_WINDREAM/ClassPMWindream.vb index 186466b..6de4b4b 100644 --- a/app/DD_PM_WINDREAM/ClassPMWindream.vb +++ b/app/DD_PM_WINDREAM/ClassPMWindream.vb @@ -126,7 +126,7 @@ Public Class ClassPMWindream Dim i As Integer = 0 Dim indexname As String If aValues.Length = 1 And aValues(0) = "" Then - LOGGER.Debug("Indexwert ist leer/Nothing - Keine Indexierung", False) + LOGGER.Debug("Indexwert ist leer/Nothing - Keine Indexierung") End If 'Jetzt jeden Indexwert durchlaufen For Each aName As String In Indizes @@ -145,7 +145,7 @@ Public Class ClassPMWindream 'If indexname = "Tournr" Then ' MsgBox("Index: " & indexname & vbNewLine & "wert: " & aValues(i), MsgBoxStyle.Information, "Index: " & aName.ToString) 'End If - LOGGER.Debug(" ### Indexierung von Index: " & indexname & " ####", False) + LOGGER.Debug(" ### Indexierung von Index: " & indexname & " ####") 'MsgBox(oDocument.aName & vbNewLine & aValues(i) & vbNewLine & vType, MsgBoxStyle.Exclamation, "Zeile 87") Dim value = aValues(i) Dim convertValue @@ -155,13 +155,13 @@ Public Class ClassPMWindream Select Case vType 'Case WMObjectVariableValueTypeUndefined Case WMObjectVariableValueTypeString - LOGGER.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeString", False) + LOGGER.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeString") convertValue = CStr(value) Case WMObjectVariableValueTypeInteger - LOGGER.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeInteger", False) + LOGGER.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeInteger") If IsNumeric(value) = False Then frmValidator.idxerr_message = "Unerlaubte Eingabe in Numerisches Feld: " & value - LOGGER.Debug("Achtung: Value " & value & " kann nicht in Zahl konvertiert werden!", False) + LOGGER.Debug("Achtung: Value " & value & " kann nicht in Zahl konvertiert werden!") oDocument.Save() oDocument.unlock() Return False @@ -169,7 +169,7 @@ Public Class ClassPMWindream convertValue = CInt(value) _int = True Case WMObjectVariableValueTypeFloat - LOGGER.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeFloat", False) + LOGGER.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeFloat") Try convertValue = CDbl(value) Catch ex As Exception @@ -181,7 +181,7 @@ Public Class ClassPMWindream End Try Case WMObjectVariableValueTypeFixedPoint - LOGGER.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeFixedPoint", False) + LOGGER.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeFixedPoint") Try convertValue = CDbl(value) Catch ex As Exception @@ -194,19 +194,19 @@ Public Class ClassPMWindream _dbl = True Case WMObjectVariableValueTypeBoolean - LOGGER.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeBoolean", False) + LOGGER.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeBoolean") convertValue = CBool(value) _bool = True Case WMObjectVariableValueTypeDate - LOGGER.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeDate", False) + LOGGER.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeDate") _date = True 'Dim _date As Date = value convertValue = value Case WMObjectVariableValueTypeTimeStamp - LOGGER.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeTimeStamp", False) + LOGGER.Debug("Typ des windream-Indexes: WMObjectVariableValueTypeTimeStamp") convertValue = CInt(value) Case WMObjectVariableValueTypeCurrency - LOGGER.Info(" >> Typ des windream-Indexes: WMObjectVariableValueTypeCurrency", False) + LOGGER.Info(" >> Typ des windream-Indexes: WMObjectVariableValueTypeCurrency") 'Wegen currency muß ein eigenes Objekt vom typ Variant erzeugt werden Dim aValueWrapper As System.Runtime.InteropServices.CurrencyWrapper = New System.Runtime.InteropServices.CurrencyWrapper(CDec(value)) convertValue = aValueWrapper diff --git a/app/DD_PM_WINDREAM/ClassRefreshHelper.vb b/app/DD_PM_WINDREAM/ClassRefreshHelper.vb index b98b0cd..663b50c 100644 --- a/app/DD_PM_WINDREAM/ClassRefreshHelper.vb +++ b/app/DD_PM_WINDREAM/ClassRefreshHelper.vb @@ -147,8 +147,13 @@ Public Class RefreshHelper End Sub Public Sub LoadVisibleIndex() - view.MakeRowVisible(view.FocusedRowHandle, True) - view.TopRowIndex = view.GetVisibleIndex(view.FocusedRowHandle) - visibleRowIndex + Try + view.MakeRowVisible(view.FocusedRowHandle, True) + view.TopRowIndex = view.GetVisibleIndex(view.FocusedRowHandle) - visibleRowIndex + Catch ex As Exception + + End Try + End Sub Public Sub LoadSelectionViewInfo(ByVal list As ArrayList) @@ -193,17 +198,28 @@ Public Class RefreshHelper End Sub Public Sub SaveViewInfo() - SaveExpandedMasterRows(SaveMasterRowsList) - SaveExpansionViewInfo(SaveExpList) - SaveSelectionViewInfo(SaveSelList) - SaveVisibleIndex() + Try + SaveExpandedMasterRows(SaveMasterRowsList) + SaveExpansionViewInfo(SaveExpList) + SaveSelectionViewInfo(SaveSelList) + SaveVisibleIndex() + Catch ex As Exception + + End Try + + End Sub Public Sub LoadViewInfo() - LoadExpandedMasterRows(SaveMasterRowsList) - LoadExpansionViewInfo(SaveExpList) - LoadSelectionViewInfo(SaveSelList) - LoadVisibleIndex() + Try + LoadExpandedMasterRows(SaveMasterRowsList) + LoadExpansionViewInfo(SaveExpList) + LoadSelectionViewInfo(SaveSelList) + LoadVisibleIndex() + Catch ex As Exception + + End Try + End Sub End Class diff --git a/app/DD_PM_WINDREAM/ClassWindream_allgemein.vb b/app/DD_PM_WINDREAM/ClassWindream_allgemein.vb index 4ce7d24..c9d0c5c 100644 --- a/app/DD_PM_WINDREAM/ClassWindream_allgemein.vb +++ b/app/DD_PM_WINDREAM/ClassWindream_allgemein.vb @@ -135,9 +135,7 @@ LOGGER.Error(ex) Public Function Start_WMCC_andCo() Try ' 04.10.18: Überprüft, ob der Benutzer Mitglied der SERVER_USER Gruppe ist - Dim sql = "SELECT T.GUID FROM TBDD_GROUPS_USER T - INNER JOIN TBDD_GROUPS T1 on T1.GUID = T.GROUP_ID - WHERE T1.NAME = 'SERVER_USER' AND T.USER_ID = " & USER_ID + Dim sql = "SELECT T.GUID FROM TBDD_GROUPS_USER T INNER JOIN TBDD_GROUPS T1 on T1.GUID = T.GROUP_ID WHERE T1.NAME = 'SERVER_USER' AND T.USER_ID = " & USER_ID Dim userExistsInServerUserGroup = ClassDatabase.Execute_Scalar(sql, CONNECTION_STRING) If WMSESSION_STARTSTOP_STARTUP = True Then @@ -160,9 +158,7 @@ LOGGER.Error(ex) Public Function Stop_WMCC_andCo() Try ' 04.10.18: Überprüft, ob der Benutzer Mitglied der SERVER_USER Gruppe ist - Dim sql = "SELECT T.GUID FROM TBDD_GROUPS_USER T - INNER JOIN TBDD_GROUPS T1 on T1.GUID = T.GROUP_ID - WHERE T1.NAME = 'SERVER_USER' AND T.USER_ID = " & USER_ID + Dim sql = "SELECT T.GUID FROM TBDD_GROUPS_USER T INNER JOIN TBDD_GROUPS T1 on T1.GUID = T.GROUP_ID WHERE T1.NAME = 'SERVER_USER' AND T.USER_ID = " & USER_ID Dim userExistsInServerUserGroup = ClassDatabase.Execute_Scalar(sql, CONNECTION_STRING) If WMSESSION_STARTSTOP_STARTUP = True Then 'And userExistsInServerUserGroup Is Nothing @@ -237,7 +233,6 @@ LOGGER.Error(ex) Public Function NormalizePath(Path As String) Dim oNormalizedPath As String - If Path.StartsWith("\\windream") Then oNormalizedPath = Path.Replace("\\windream\objects\", "") ElseIf Path.StartsWith("\\") Then diff --git a/app/DD_PM_WINDREAM/DD_DMSLiteDataSet.Designer.vb b/app/DD_PM_WINDREAM/DD_DMSLiteDataSet.Designer.vb index af7e4e0..6f00638 100644 --- a/app/DD_PM_WINDREAM/DD_DMSLiteDataSet.Designer.vb +++ b/app/DD_PM_WINDREAM/DD_DMSLiteDataSet.Designer.vb @@ -17831,7 +17831,7 @@ Namespace DD_DMSLiteDataSetTableAdapters _ Private Sub InitCommandCollection() - Me._commandCollection = New Global.System.Data.SqlClient.SqlCommand(11) {} + Me._commandCollection = New Global.System.Data.SqlClient.SqlCommand(10) {} Me._commandCollection(0) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(0).Connection = Me.Connection Me._commandCollection(0).CommandText = "SELECT GUID, FILE_PATH, DMS_ERSTELLT_DATE"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"FROM TBPM_PROFILE_FI"& _ @@ -17869,55 +17869,49 @@ Namespace DD_DMSLiteDataSetTableAdapters Me._commandCollection(5).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Profil_id", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "PROFIL_ID", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(6) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(6).Connection = Me.Connection - Me._commandCollection(6).CommandText = "SELECT FILE_PATH"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"FROM TBPM_PROFILE_FILES"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE GUID = @"& _ - "GUID" - Me._commandCollection(6).CommandType = Global.System.Data.CommandType.Text - Me._commandCollection(6).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@GUID", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "GUID", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) - Me._commandCollection(7) = New Global.System.Data.SqlClient.SqlCommand() - Me._commandCollection(7).Connection = Me.Connection - Me._commandCollection(7).CommandText = "SELECT GUID"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"FROM TBPM_PROFILE_FILES"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (PROFIL_ID ="& _ + Me._commandCollection(6).CommandText = "SELECT GUID"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"FROM TBPM_PROFILE_FILES"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (PROFIL_ID ="& _ " @Profil_id) AND (EDIT = 0) AND (UPPER(FILE_PATH) <> UPPER(@FILEPATH)) AND (IN_W"& _ "ORK = 0) AND (FILE_PATH NOT IN"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (SELECT FILE"& _ "_PATH"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" FROM TBPM_FILES_USER_NOT_INDEXE"& _ "D"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" WHERE (PROFIL_ID = @Profil_id) AND (UPP"& _ "ER(USR_NAME) = UPPER(@User))))"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"ORDER BY DMS_ERSTELLT_DATE,FILE_PATH" + Me._commandCollection(6).CommandType = Global.System.Data.CommandType.Text + Me._commandCollection(6).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Profil_id", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "PROFIL_ID", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) + Me._commandCollection(6).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@FILEPATH", Global.System.Data.SqlDbType.VarChar, 1024, Global.System.Data.ParameterDirection.Input, 0, 0, "", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) + Me._commandCollection(6).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@User", Global.System.Data.SqlDbType.VarChar, 1024, Global.System.Data.ParameterDirection.Input, 0, 0, "", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) + Me._commandCollection(7) = New Global.System.Data.SqlClient.SqlCommand() + Me._commandCollection(7).Connection = Me.Connection + Me._commandCollection(7).CommandText = "SELECT GUID"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"FROM TBPM_PROFILE_FILES"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (PROFIL_ID ="& _ + " @Profil_id) AND (EDIT = 0) AND (IN_WORK = 0) AND (UPPER(FILE_PATH) <> UPPER(@FI"& _ + "LEPATH)) AND (FILE_PATH NOT IN"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (SELECT FILE"& _ + "_PATH"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" FROM TBPM_FILES_USER_NOT_INDEXE"& _ + "D"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" WHERE (PROFIL_ID = @Profil_id) AND (UPP"& _ + "ER(USR_NAME) = UPPER(@User))))"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"ORDER BY DMS_ERSTELLT_DATE DESC" Me._commandCollection(7).CommandType = Global.System.Data.CommandType.Text Me._commandCollection(7).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Profil_id", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "PROFIL_ID", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(7).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@FILEPATH", Global.System.Data.SqlDbType.VarChar, 1024, Global.System.Data.ParameterDirection.Input, 0, 0, "", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(7).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@User", Global.System.Data.SqlDbType.VarChar, 1024, Global.System.Data.ParameterDirection.Input, 0, 0, "", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(8) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(8).Connection = Me.Connection - Me._commandCollection(8).CommandText = "SELECT GUID"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"FROM TBPM_PROFILE_FILES"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (PROFIL_ID ="& _ - " @Profil_id) AND (EDIT = 0) AND (IN_WORK = 0) AND (UPPER(FILE_PATH) <> UPPER(@FI"& _ - "LEPATH)) AND (FILE_PATH NOT IN"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (SELECT FILE"& _ - "_PATH"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" FROM TBPM_FILES_USER_NOT_INDEXE"& _ - "D"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" WHERE (PROFIL_ID = @Profil_id) AND (UPP"& _ - "ER(USR_NAME) = UPPER(@User))))"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"ORDER BY DMS_ERSTELLT_DATE DESC" + Me._commandCollection(8).CommandText = "UPDATE TBPM_PROFILE_FILES"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SET EDIT = 1"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (GUID "& _ + "= @GUID)" Me._commandCollection(8).CommandType = Global.System.Data.CommandType.Text - Me._commandCollection(8).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Profil_id", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "PROFIL_ID", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) - Me._commandCollection(8).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@FILEPATH", Global.System.Data.SqlDbType.VarChar, 1024, Global.System.Data.ParameterDirection.Input, 0, 0, "", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) - Me._commandCollection(8).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@User", Global.System.Data.SqlDbType.VarChar, 1024, Global.System.Data.ParameterDirection.Input, 0, 0, "", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) + Me._commandCollection(8).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@GUID", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "GUID", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) Me._commandCollection(9) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(9).Connection = Me.Connection - Me._commandCollection(9).CommandText = "UPDATE TBPM_PROFILE_FILES"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SET EDIT = 1"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (GUID "& _ - "= @GUID)" + Me._commandCollection(9).CommandText = "UPDATE TBPM_PROFILE_FILES"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SET IN_WORK = @WORK, WORK_USER = "& _ + "@USer"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (GUID = @GUID)" Me._commandCollection(9).CommandType = Global.System.Data.CommandType.Text - Me._commandCollection(9).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@GUID", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "GUID", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", "")) + Me._commandCollection(9).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@WORK", Global.System.Data.SqlDbType.Bit, 1, Global.System.Data.ParameterDirection.Input, 0, 0, "IN_WORK", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) + Me._commandCollection(9).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@USer", Global.System.Data.SqlDbType.VarChar, 100, Global.System.Data.ParameterDirection.Input, 0, 0, "WORK_USER", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) + Me._commandCollection(9).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@GUID", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "GUID", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) Me._commandCollection(10) = New Global.System.Data.SqlClient.SqlCommand() Me._commandCollection(10).Connection = Me.Connection - Me._commandCollection(10).CommandText = "UPDATE TBPM_PROFILE_FILES"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SET IN_WORK = @WORK, WORK_USER = "& _ - "@USer"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (GUID = @GUID)" - Me._commandCollection(10).CommandType = Global.System.Data.CommandType.Text - Me._commandCollection(10).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@WORK", Global.System.Data.SqlDbType.Bit, 1, Global.System.Data.ParameterDirection.Input, 0, 0, "IN_WORK", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) - Me._commandCollection(10).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@USer", Global.System.Data.SqlDbType.VarChar, 100, Global.System.Data.ParameterDirection.Input, 0, 0, "WORK_USER", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) - Me._commandCollection(10).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@GUID", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "GUID", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) - Me._commandCollection(11) = New Global.System.Data.SqlClient.SqlCommand() - Me._commandCollection(11).Connection = Me.Connection - Me._commandCollection(11).CommandText = "SELECT DMS_ERSTELLT_DATE, FILE_PATH, GUID"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"FROM TBPM_PROFILE_FI"& _ + Me._commandCollection(10).CommandText = "SELECT DMS_ERSTELLT_DATE, FILE_PATH, GUID"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"FROM TBPM_PROFILE_FI"& _ "LES"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (EDIT = 0) AND (PROFIL_ID = @Profil_id) AND (ACTIVE = 1)"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"ORDE"& _ "R BY DMS_ERSTELLT_DATE DESC" - Me._commandCollection(11).CommandType = Global.System.Data.CommandType.Text - Me._commandCollection(11).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Profil_id", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "PROFIL_ID", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) + Me._commandCollection(10).CommandType = Global.System.Data.CommandType.Text + Me._commandCollection(10).Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Profil_id", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "PROFIL_ID", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", "")) End Sub _ Public Overloads Overridable Function FillBy_Newest(ByVal dataTable As DD_DMSLiteDataSet.TBPM_PROFILE_FILESDataTable, ByVal Profil_id As Integer) As Integer - Me.Adapter.SelectCommand = Me.CommandCollection(11) + Me.Adapter.SelectCommand = Me.CommandCollection(10) Me.Adapter.SelectCommand.Parameters(0).Value = CType(Profil_id,Integer) If (Me.ClearBeforeFill = true) Then dataTable.Clear @@ -17965,7 +17959,7 @@ Namespace DD_DMSLiteDataSetTableAdapters Global.System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter"), _ Global.System.ComponentModel.DataObjectMethodAttribute(Global.System.ComponentModel.DataObjectMethodType.[Select], false)> _ Public Overloads Overridable Function GetDataBy_Newest(ByVal Profil_id As Integer) As DD_DMSLiteDataSet.TBPM_PROFILE_FILESDataTable - Me.Adapter.SelectCommand = Me.CommandCollection(11) + Me.Adapter.SelectCommand = Me.CommandCollection(10) Me.Adapter.SelectCommand.Parameters(0).Value = CType(Profil_id,Integer) Dim dataTable As DD_DMSLiteDataSet.TBPM_PROFILE_FILESDataTable = New DD_DMSLiteDataSet.TBPM_PROFILE_FILESDataTable() Me.Adapter.Fill(dataTable) @@ -18127,38 +18121,11 @@ Namespace DD_DMSLiteDataSetTableAdapters End If End Function - _ - Public Overloads Overridable Function CmdGetFilePath_2_GUID(ByVal GUID As Integer) As String - Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(6) - command.Parameters(0).Value = CType(GUID,Integer) - Dim previousConnectionState As Global.System.Data.ConnectionState = command.Connection.State - If ((command.Connection.State And Global.System.Data.ConnectionState.Open) _ - <> Global.System.Data.ConnectionState.Open) Then - command.Connection.Open - End If - Dim returnValue As Object - Try - returnValue = command.ExecuteScalar - Finally - If (previousConnectionState = Global.System.Data.ConnectionState.Closed) Then - command.Connection.Close - End If - End Try - If ((returnValue Is Nothing) _ - OrElse (returnValue.GetType Is GetType(Global.System.DBNull))) Then - Return Nothing - Else - Return CType(returnValue,String) - End If - End Function - _ Public Overloads Overridable Function cmdGetNextFile_GUID(ByVal Profil_id As Integer, ByVal FILEPATH As String, ByVal User As String) As Object - Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(7) + Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(6) command.Parameters(0).Value = CType(Profil_id,Integer) If (FILEPATH Is Nothing) Then Throw New Global.System.ArgumentNullException("FILEPATH") @@ -18195,7 +18162,7 @@ Namespace DD_DMSLiteDataSetTableAdapters Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "15.0.0.0"), _ Global.System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")> _ Public Overloads Overridable Function cmdgetNextFile_GUID_Newest(ByVal Profil_id As Integer, ByVal FILEPATH As String, ByVal User As String) As Object - Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(8) + Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(7) command.Parameters(0).Value = CType(Profil_id,Integer) If (FILEPATH Is Nothing) Then Throw New Global.System.ArgumentNullException("FILEPATH") @@ -18233,7 +18200,7 @@ Namespace DD_DMSLiteDataSetTableAdapters Global.System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter"), _ Global.System.ComponentModel.DataObjectMethodAttribute(Global.System.ComponentModel.DataObjectMethodType.Update, false)> _ Public Overloads Overridable Function CmdSetEdit(ByVal GUID As Integer) As Integer - Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(9) + Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(8) command.Parameters(0).Value = CType(GUID,Integer) Dim previousConnectionState As Global.System.Data.ConnectionState = command.Connection.State If ((command.Connection.State And Global.System.Data.ConnectionState.Open) _ @@ -18255,7 +18222,7 @@ Namespace DD_DMSLiteDataSetTableAdapters Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "15.0.0.0"), _ Global.System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")> _ Public Overloads Overridable Function CmdSETWORK(ByVal WORK As Boolean, ByVal USer As String, ByVal GUID As Integer) As Object - Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(10) + Dim command As Global.System.Data.SqlClient.SqlCommand = Me.CommandCollection(9) command.Parameters(0).Value = CType(WORK,Boolean) If (USer Is Nothing) Then command.Parameters(1).Value = Global.System.DBNull.Value diff --git a/app/DD_PM_WINDREAM/DD_DMSLiteDataSet.xsd b/app/DD_PM_WINDREAM/DD_DMSLiteDataSet.xsd index 297b8c9..9ab0394 100644 --- a/app/DD_PM_WINDREAM/DD_DMSLiteDataSet.xsd +++ b/app/DD_PM_WINDREAM/DD_DMSLiteDataSet.xsd @@ -1009,18 +1009,6 @@ WHERE (PROFIL_ID = @Profil_id) AND (EDIT = 0) AND (ACTIVE = 1) AND (IN_WO - - - - SELECT FILE_PATH -FROM TBPM_PROFILE_FILES -WHERE GUID = @GUID - - - - - - @@ -2096,7 +2084,7 @@ FROM dbo.FNPM_GET_FREE_USER_FOR_PROFILE(@PROFILE_ID) AS FNPM_GET_FREE - + @@ -2149,7 +2137,7 @@ FROM dbo.FNPM_GET_FREE_USER_FOR_PROFILE(@PROFILE_ID) AS FNPM_GET_FREE - + @@ -2245,7 +2233,7 @@ FROM dbo.FNPM_GET_FREE_USER_FOR_PROFILE(@PROFILE_ID) AS FNPM_GET_FREE - + @@ -2310,7 +2298,7 @@ FROM dbo.FNPM_GET_FREE_USER_FOR_PROFILE(@PROFILE_ID) AS FNPM_GET_FREE - + @@ -2340,7 +2328,7 @@ FROM dbo.FNPM_GET_FREE_USER_FOR_PROFILE(@PROFILE_ID) AS FNPM_GET_FREE - + @@ -2363,7 +2351,7 @@ FROM dbo.FNPM_GET_FREE_USER_FOR_PROFILE(@PROFILE_ID) AS FNPM_GET_FREE - + @@ -2474,7 +2462,7 @@ FROM dbo.FNPM_GET_FREE_USER_FOR_PROFILE(@PROFILE_ID) AS FNPM_GET_FREE - + @@ -2547,7 +2535,7 @@ FROM dbo.FNPM_GET_FREE_USER_FOR_PROFILE(@PROFILE_ID) AS FNPM_GET_FREE - + @@ -2596,7 +2584,7 @@ FROM dbo.FNPM_GET_FREE_USER_FOR_PROFILE(@PROFILE_ID) AS FNPM_GET_FREE - + @@ -2611,7 +2599,7 @@ FROM dbo.FNPM_GET_FREE_USER_FOR_PROFILE(@PROFILE_ID) AS FNPM_GET_FREE - + @@ -2632,7 +2620,7 @@ FROM dbo.FNPM_GET_FREE_USER_FOR_PROFILE(@PROFILE_ID) AS FNPM_GET_FREE - + @@ -2740,7 +2728,7 @@ FROM dbo.FNPM_GET_FREE_USER_FOR_PROFILE(@PROFILE_ID) AS FNPM_GET_FREE - + @@ -2813,7 +2801,7 @@ FROM dbo.FNPM_GET_FREE_USER_FOR_PROFILE(@PROFILE_ID) AS FNPM_GET_FREE - + @@ -2864,7 +2852,7 @@ FROM dbo.FNPM_GET_FREE_USER_FOR_PROFILE(@PROFILE_ID) AS FNPM_GET_FREE - + @@ -2980,7 +2968,7 @@ FROM dbo.FNPM_GET_FREE_USER_FOR_PROFILE(@PROFILE_ID) AS FNPM_GET_FREE - + @@ -3058,7 +3046,7 @@ FROM dbo.FNPM_GET_FREE_USER_FOR_PROFILE(@PROFILE_ID) AS FNPM_GET_FREE - + @@ -3099,7 +3087,7 @@ FROM dbo.FNPM_GET_FREE_USER_FOR_PROFILE(@PROFILE_ID) AS FNPM_GET_FREE - + @@ -3137,7 +3125,7 @@ FROM dbo.FNPM_GET_FREE_USER_FOR_PROFILE(@PROFILE_ID) AS FNPM_GET_FREE - + @@ -3272,11 +3260,11 @@ FROM dbo.FNPM_GET_FREE_USER_FOR_PROFILE(@PROFILE_ID) AS FNPM_GET_FREE - - - - - + + + + + \ No newline at end of file diff --git a/app/DD_PM_WINDREAM/DD_DMSLiteDataSet.xss b/app/DD_PM_WINDREAM/DD_DMSLiteDataSet.xss index 191d9b7..caebcdf 100644 --- a/app/DD_PM_WINDREAM/DD_DMSLiteDataSet.xss +++ b/app/DD_PM_WINDREAM/DD_DMSLiteDataSet.xss @@ -4,25 +4,25 @@ Changes to this file may cause incorrect behavior and will be lost if the code is regenerated. --> - + - + - - - - - - - - - + + + + + + + + + - - - - - + + + + + @@ -78,7 +78,7 @@ - + 141 diff --git a/app/DD_PM_WINDREAM/frmMain.resx b/app/DD_PM_WINDREAM/frmMain.resx index 6da56ca..37c5052 100644 --- a/app/DD_PM_WINDREAM/frmMain.resx +++ b/app/DD_PM_WINDREAM/frmMain.resx @@ -123,7 +123,7 @@ - 325, 118 + 524, 205 Horizontal @@ -141,7 +141,7 @@ 0, 25 - 228, 199 + 162, 147 @@ -166,7 +166,7 @@ 0, 0 - 228, 25 + 162, 25 1 @@ -205,7 +205,7 @@ 0, 25 - 463, 199 + 330, 147 1 @@ -229,7 +229,7 @@ 0, 0 - 463, 25 + 330, 25 0 @@ -262,10 +262,10 @@ 1 - 695, 224 + 496, 172 - 228 + 162 0 @@ -307,7 +307,7 @@ 0, 25 - 228, 124 + 162, 89 1 @@ -331,7 +331,7 @@ 0, 0 - 228, 25 + 162, 25 0 @@ -370,7 +370,7 @@ 0, 25 - 463, 124 + 330, 89 1 @@ -394,7 +394,7 @@ 0, 0 - 463, 25 + 330, 25 0 @@ -427,10 +427,10 @@ 1 - 695, 149 + 496, 114 - 228 + 162 0 @@ -460,10 +460,10 @@ 1 - 695, 377 + 496, 290 - 224 + 172 7 @@ -488,7 +488,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADw - CAAAAk1TRnQBSQFMAgEBAgEAASQBBAEkAQQBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAASwBBAEsAQQBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/app/DD_PM_WINDREAM/frmMain.vb b/app/DD_PM_WINDREAM/frmMain.vb index 4719781..870b555 100644 --- a/app/DD_PM_WINDREAM/frmMain.vb +++ b/app/DD_PM_WINDREAM/frmMain.vb @@ -27,10 +27,12 @@ Public Class frmMain Private RefreshHelper As RefreshHelper Dim DT_CHARTS As DataTable + Private formopenClose As Boolean = False 'Private _windream As New ClassWindream_allgemein Private Sub frmMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing Try + formopenClose = True ' Position und Größe speichern My.Settings.frmMainSize = Me.Size My.Settings.frmMainPosition = Me.Location @@ -66,7 +68,8 @@ Public Class frmMain End Sub Private Sub frmMain_Load(sender As Object, e As System.EventArgs) Handles Me.Load - LOGGER.Debug("Initializing MainForm....", False) + formopenClose = True + LOGGER.Debug("Initializing MainForm....") Try UserLookAndFeel.Default.SetSkinStyle("VS2010") Catch ex As Exception @@ -96,7 +99,7 @@ Public Class frmMain If Refresh_ConnectionString() = True Then Try tslblLicenses.Text = "Anzahl Lizenzen: " & LICENSE_COUNT - LOGGER.Debug("Initializing MainForm....", False) + LOGGER.Debug("Initializing MainForm....") If ERROR_STATE = "NO USER" Then MsgBox("Achtung: Sie sind nicht in der Userverwaltung hinterlegt!" & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!", MsgBoxStyle.Critical, "Achtung:") Me.Close() @@ -127,15 +130,8 @@ Public Class frmMain LOGGER.Error(ex) MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Fehler bei User Check:") End Try + tsstlblUser.Text = Environment.UserName - Try - tsstlblUser.Text = Environment.UserName - Decide_Load() - - Catch ex As Exception - LOGGER.Error(ex) - MsgBox("Fehler bei Laden des Formulars: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Achtung:") - End Try Try If VIEWER_UNIVERSAL = "" And VIEWER_ALL = "uviewer" Then @@ -149,7 +145,6 @@ Public Class frmMain LOGGER.Error(ex) MsgBox("Unexpected Error in LoadForm - Step 4: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:") End Try - Load_Profile_items() Try @@ -165,6 +160,7 @@ Public Class frmMain End Try Check_Timer_Notification() Restore_Form_Position() + Try WINDREAM = New ClassPMWindream WINDREAM.Start_WMCC_andCo() @@ -180,9 +176,9 @@ Public Class frmMain MsgBox("Unexpected Error in windream-login - Step 5: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:") End Try - LOGGER.Debug("MainForm initialized!", False) + LOGGER.Debug("MainForm initialized!") End If - + formopenClose = False End Sub Sub Check_Timer_Notification() Try @@ -202,17 +198,22 @@ Public Class frmMain End Sub Sub Restore_Form_Position() Try - ' Sind Werte hinterlegt? + 'Sind Werte hinterlegt? If My.Settings.frmMainPosition.IsEmpty = False Then If My.Settings.frmMainPosition.X > 0 And My.Settings.frmMainPosition.Y > 0 Then ' Gespeicherte Werte verwenden Me.Location = My.Settings.frmMainPosition End If End If - ' Sind Werte hinterlegt? + 'Sind Werte hinterlegt? If Not My.Settings.frmMainSize.IsEmpty Then ' Gespeicherte Werte verwenden - Me.Size = My.Settings.frmMainSize + Try + Me.Size = My.Settings.frmMainSize + Catch ex As Exception + + End Try + End If Catch ex As Exception LOGGER.Error(ex) @@ -285,11 +286,10 @@ Public Class frmMain GridView_Docs.Columns("Last edited").DisplayFormat.FormatType = FormatType.DateTime GridView_Docs.Columns("Last edited").DisplayFormat.FormatString = "dd.MM.yyyy HH:MM:ss" Try - GridView_Docs.Columns.Item("PROFILE_GROUP_TEXT").Visible = False - GridView_Docs.Columns.Item("PROFILE_GROUP_COLOR").Visible = False - Catch ex As Exception GridView_Docs.Columns.Item("GROUP_TEXT").Visible = False GridView_Docs.Columns.Item("GROUP_COLOR").Visible = False + Catch ex As Exception + End Try End If @@ -300,7 +300,7 @@ Public Class frmMain End Sub Sub Load_Profile_items() - Cursor = Cursors.WaitCursor + Dim profileGroupOpen As Boolean = False Try @@ -349,7 +349,7 @@ Public Class frmMain LOGGER.Info("Load_Profile_items - Error: " & ex.Message) MsgBox("Unexpected Error in Load_Profile_items - Error: " & vbNewLine & ex.Message, MsgBoxStyle.Critical) End Try - Cursor = Cursors.Default + End Sub Private Sub navBar_LinkClicked(ByVal sender As Object, ByVal e As NavBarLinkEventArgs) ' Das aktuelle Layout speichern, bevor das neue geladen wird @@ -666,11 +666,10 @@ Public Class frmMain GridView_Docs.Columns("Last edited").DisplayFormat.FormatType = FormatType.DateTime GridView_Docs.Columns("Last edited").DisplayFormat.FormatString = "dd.MM.yyyy HH:MM:ss" Try - GridView_Docs.Columns.Item("PROFILE_GROUP_TEXT").Visible = False - GridView_Docs.Columns.Item("PROFILE_GROUP_COLOR").Visible = False - Catch ex As Exception GridView_Docs.Columns.Item("GROUP_TEXT").Visible = False GridView_Docs.Columns.Item("GROUP_COLOR").Visible = False + Catch ex As Exception + End Try @@ -743,13 +742,11 @@ Public Class frmMain Try Try - GridView_Docs.Columns.Item("PROFILE_GROUP_TEXT").GroupIndex = 0 - GridView_Docs.Columns.Item("PROFILE_GROUP_TEXT").Visible = False - GridView_Docs.Columns.Item("PROFILE_GROUP_COLOR").Visible = False - Catch ex As Exception GridView_Docs.Columns.Item("GROUP_TEXT").GroupIndex = 0 GridView_Docs.Columns.Item("GROUP_TEXT").Visible = False GridView_Docs.Columns.Item("GROUP_COLOR").Visible = False + Catch ex As Exception + End Try For I = 0 To GridView_Docs.GroupCount - 1 @@ -809,12 +806,15 @@ Public Class frmMain End Sub Private Sub Timer_Tick(sender As System.Object, e As EventArgs) Handles TimerRefresh.Tick - RefreshHelper.SaveViewInfo() + If TimerRefresh.Enabled = False Then + Exit Sub + End If + If GridControl_Docs.Visible = True And formopenClose = False Then RefreshHelper.SaveViewInfo() SaveGridLayout() Load_Profile_items() Decide_Load() tsslblLastSysnc.Text = "Letzte Synchronisation: " & Now.ToLongTimeString - RefreshHelper.LoadViewInfo() + If GridControl_Docs.Visible = True And formopenClose = False Then RefreshHelper.LoadViewInfo() End Sub Private Sub NotifyIcon1_Click(sender As System.Object, e As EventArgs) Handles NotifyIcon1.Click @@ -854,11 +854,14 @@ Public Class frmMain End Sub Private Sub ToolStripButton2_Click_1(sender As Object, e As EventArgs) Handles tsbtnrefresh.Click - RefreshHelper.SaveViewInfo() - SaveGridLayout() + If GridControl_Docs.Visible = True And formopenClose = False Then + RefreshHelper.SaveViewInfo() + SaveGridLayout() + End If + Load_Profile_items() Decide_Load() - RefreshHelper.LoadViewInfo() + If GridControl_Docs.Visible = True And formopenClose = False Then RefreshHelper.LoadViewInfo() End Sub Private Sub ToolStripButton2_Click_2(sender As Object, e As EventArgs) @@ -973,10 +976,9 @@ Public Class frmMain Dim PROFIL_TITLE If GRID_LOAD_TYPE = "OVERVIEW" Then Try - groupRowText = LTrim(RTrim(groupRowText.ToString.Replace("PROFILE_GROUP_TEXT: ", ""))) groupRowText = LTrim(RTrim(groupRowText.ToString.Replace("GROUP_TEXT: ", ""))) Catch ex As Exception - groupRowText = LTrim(RTrim(groupRowText.ToString.Replace("GROUP_TEXT: ", ""))) + End Try Dim _SPLIT As String() @@ -1044,7 +1046,7 @@ Public Class frmMain WINDREAM = New ClassPMWindream() WINDREAM.Create_Session() - LOGGER.Debug("windream initialized", False) + LOGGER.Debug("windream initialized") Return True Catch ex As Exception LOGGER.Error(ex) @@ -1089,14 +1091,18 @@ Public Class frmMain End If - Dim dt As New DataTable - dt.Columns.Add("DOC_ID") - dt.Columns.Add("DOC_GUID") - dt.Columns.Add("FULL_PATH") + Dim NewDatatable As New DataTable + NewDatatable.Columns.Add("DOC_ID") + NewDatatable.Columns.Add("DOC_GUID") + NewDatatable.Columns.Add("FULL_PATH") For Each oRowHandle As Integer In oSelectedRows - Dim R As DataRow = dt.NewRow + Dim DOC_ID = GridView_Docs.GetRowCellValue(oRowHandle, "DOC_ID") + If IsNothing(DOC_ID) Then + Continue For + End If + Dim R As DataRow = NewDatatable.NewRow CURRENT_DOC_ID = DOC_ID Dim DOC_PATH = GridView_Docs.GetRowCellValue(oRowHandle, "FULL_FILE_PATH") CURRENT_DOC_PATH = DOC_PATH @@ -1104,14 +1110,13 @@ Public Class frmMain R("DOC_ID") = CURRENT_DOC_ID R("FULL_PATH") = CURRENT_DOC_PATH R("DOC_GUID") = GridView_Docs.GetRowCellValue(oRowHandle, "GUID") - dt.Rows.Add(R) + NewDatatable.Rows.Add(R) Next CURRENT_DT_MASS_CHANGE_DOCS = Nothing - CURRENT_DT_MASS_CHANGE_DOCS = dt - - frmMassValidator.Show() - + CURRENT_DT_MASS_CHANGE_DOCS = NewDatatable + TimerRefresh.Enabled = False + frmMassValidator.ShowDialog() Load_Profile_items() Decide_Load() Else @@ -1143,7 +1148,7 @@ Public Class frmMain GRID_LOAD_TYPE = "OVERVIEW" CURRENT_CLICKED_PROFILE_ID = 0 ToolStripLabelViewTape.Text = "Gesamtübersicht" - Cursor = Cursors.WaitCursor + Try Dim sel = String.Format("SELECT * FROM VWPM_PROFILE_USER WHERE USER_ID ={0}", USER_ID) CURRENT_DT_VW_PROFILE_USER = ClassDatabase.Return_Datatable(sel, True) @@ -1153,29 +1158,29 @@ Public Class frmMain LOGGER.Info(" >> no profiles for user: '" & Environment.UserName & "' configured!", False) NO_WORKFLOWITEMS = True tslblmessage.Text = "Keine Profile für Ihren User hinterlegt" - Cursor = Cursors.Default + Exit Sub End If Load_Profiles_for_User() PROFILE_COUNT = 0 ClassInit.InitBasics() - Dim sql = CURRENT_DT_CONFIG.Rows(0).Item("SQL_PROFILE_MAIN_VIEW") + Dim oSQLOverview = CURRENT_DT_CONFIG.Rows(0).Item("SQL_PROFILE_MAIN_VIEW") - If IsDBNull(sql) Then + If IsDBNull(oSQLOverview) Then tslblmessage.Text = "No GROUP-CONFIG (SQL_PROFILE_MAIN_VIEW) in Baseconfig" Exit Sub End If - sql = sql.Replace("@USER_ID", USER_ID) - sql = sql.Replace("@USERNAME", Environment.UserName) - sql = sql.Replace("@MACHINE_NAME", Environment.MachineName) - sql = sql.Replace("@DATE", Now.ToShortDateString) - sql = sql.Replace("@PROFILE_ID", CURRENT_CLICKED_PROFILE_ID) + oSQLOverview = oSQLOverview.Replace("@USER_ID", USER_ID) + oSQLOverview = oSQLOverview.Replace("@USERNAME", Environment.UserName) + oSQLOverview = oSQLOverview.Replace("@MACHINE_NAME", Environment.MachineName) + oSQLOverview = oSQLOverview.Replace("@DATE", Now.ToShortDateString) + oSQLOverview = oSQLOverview.Replace("@PROFILE_ID", CURRENT_CLICKED_PROFILE_ID) 'String.Format("SELECT '1' TL_STATE,T.PROFIL_ID,T1.TITLE, T.DOC_ID, T.FILE_PATH, T.DMS_ERSTELLT_DATE,[dbo].[FNPM_LAST_WORKUSER_DOC] (T.PROFIL_ID,T.DOC_ID) AS 'Last User',[dbo].[FNPM_LAST_EDITED_DOC] (T.PROFIL_ID,T.DOC_ID) as 'Last edited' FROM TBPM_PROFILE_FILES T, VWPM_PROFILE_USER T1 " & ' "WHERE T.PROFIL_ID = T1.PROFIL_ID " & ' "AND T1.ACTIVE = 1 And (UPPER(T1.USERNAME) = UPPER('{0}')) Order By T1.PRIORITY", Environment.UserName) - CURR_DT_PROFILEGRID = ClassDatabase.Return_Datatable(sql, True) + CURR_DT_PROFILEGRID = ClassDatabase.Return_Datatable(oSQLOverview, True) Dim DTGRID_GROUPS As DataTable Try DTGRID_GROUPS = ClassDatabase.Return_Datatable($"SELECT * FROM TBPM_MAIN_VIEW_GROUPS WHERE ACTIVE = 1", True) @@ -1194,8 +1199,7 @@ Public Class frmMain 'MsgBox("Aktuell keine Workflowdaten vorhanden!", MsgBoxStyle.Information) GridControl_Docs.Visible = False - BindingNavigator1.Visible = False - BindingNavigator1.Dock = DockStyle.None + bindsourcegrid.DataSource = Nothing GridControl_Docs.DataSource = Nothing Try GridView_Docs.Columns.Clear() @@ -1203,9 +1207,10 @@ Public Class frmMain LOGGER.Error(ex) End Try - Cursor = Cursors.Default + Exit Sub End If + BindingNavigator1.Visible = True BindingNavigator1.Dock = DockStyle.Top @@ -1254,31 +1259,23 @@ Public Class frmMain Dim oindex As Integer = 0 If Not IsNothing(DTGRID_GROUPS) Then For Each oGridGroup As DataRow In DTGRID_GROUPS.Rows - LOGGER.Debug($"Addig group [{oGridGroup.Item("GROUPNAME")}] for Grid...", False) + LOGGER.Debug($"Addig group [{oGridGroup.Item("GROUPNAME")}] for Grid...") GridView_Docs.Columns.Item(oGridGroup.Item("GROUPNAME")).GroupIndex = oindex oindex += 1 Next - Else - Try - GridView_Docs.Columns.Item("PROFILE_GROUP_TEXT").GroupIndex = oindex - Catch ex As Exception - GridView_Docs.Columns.Item("GROUP_TEXT").GroupIndex = oindex - End Try - End If Try - GridView_Docs.Columns.Item("PROFILE_GROUP_TEXT").Visible = False - GridView_Docs.Columns.Item("PROFILE_GROUP_COLOR").Visible = False - Catch ex As Exception GridView_Docs.Columns.Item("GROUP_TEXT").Visible = False GridView_Docs.Columns.Item("GROUP_COLOR").Visible = False + Catch ex As Exception + End Try For index = 0 To GridView_Docs.GroupCount - 1 Dim v = GridView_Docs.GroupedColumns(index).ToString - LOGGER.Debug($"Addig tag [{GridView_Docs.Columns.Item("PROFILE_ID")}] for group...", False) + LOGGER.Debug($"Addig tag [{GridView_Docs.Columns.Item("PROFILE_ID")}] for group...") Dim sd = GridView_Docs.GroupedColumns(index).GetTextCaption GridView_Docs.GroupedColumns(index).Tag = GridView_Docs.Columns.Item("PROFILE_ID") @@ -1335,7 +1332,10 @@ Public Class frmMain Reset_GridLayout() End If + + Else + NO_WORKFLOWITEMS = True GridControl_Docs.Visible = False BindingNavigator1.Visible = False @@ -1351,10 +1351,10 @@ Public Class frmMain End If Catch ex As Exception LOGGER.Error(ex) - LOGGER.Info("Load_Grid_Overview - Fehler: " & ex.Message) - MsgBox("Fehler Load_Grid_Overview - Fehler: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Achtung:") + LOGGER.Info("Load_Grid_Overview - Fehler: " & ex.Message) + MsgBox("Fehler Load_Grid_Overview - Fehler: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Achtung:") End Try - Cursor = Cursors.Default + End Sub Private Sub tsmiValidationProfil_Click(sender As Object, e As EventArgs) Handles tsmiValidationProfil.Click @@ -1377,7 +1377,7 @@ Public Class frmMain End Sub Sub Reset_GridLayout() - RefreshHelper.SaveViewInfo() + If GridControl_Docs.Visible = True And formopenClose = False Then RefreshHelper.SaveViewInfo() ' Layout zurücksetzen ResetLayout() @@ -1476,9 +1476,9 @@ Public Class frmMain Dim groupRowButtonClicked = (hi.HitTest = GridHitTest.RowGroupButton) GridCursorLocation = e.Location - If e.Button = MouseButtons.Left Then - ' wenn in eine Group Row Doppelt geklickt wurde.. - If hi.InGroupRow And Not groupRowButtonClicked Then + 'If e.Button = MouseButtons.Left Then + ' wenn in eine Group Row Doppelt geklickt wurde.. + If hi.InGroupRow And Not groupRowButtonClicked Then ' Ein/Ausklappen verhindern DXMouseEventArgs.GetMouseArgs(e).Handled = True GridViewItem_Clicked = "GROUP" @@ -1489,7 +1489,7 @@ Public Class frmMain Else GridViewItem_Clicked = Nothing End If - End If + 'End If End Sub Private Sub GridView_Docs_ColumnWidthChanged(sender As Object, e As Views.Base.ColumnEventArgs) Handles GridView_Docs.ColumnWidthChanged @@ -1502,6 +1502,12 @@ Public Class frmMain Private Sub GridView_Docs_LostFocus(sender As Object, e As EventArgs) Handles GridView_Docs.LostFocus ' Save expanded GroupRows - RefreshHelper.SaveViewInfo() + If GridControl_Docs.Visible = True And formopenClose = False Then RefreshHelper.SaveViewInfo() + End Sub + + Private Sub frmMain_Shown(sender As Object, e As EventArgs) Handles Me.Shown + + Decide_Load() + End Sub End Class \ No newline at end of file diff --git a/app/DD_PM_WINDREAM/frmMassValidator.vb b/app/DD_PM_WINDREAM/frmMassValidator.vb index 228f344..82f12d5 100644 --- a/app/DD_PM_WINDREAM/frmMassValidator.vb +++ b/app/DD_PM_WINDREAM/frmMassValidator.vb @@ -3,6 +3,7 @@ Imports Oracle.ManagedDataAccess.Client Imports System.ComponentModel Imports DD_LIB_Standards Imports DigitalData.Controls.LookupGrid +Imports System.IO Public Class frmMassValidator Private DTCONTROLS As DataTable @@ -11,6 +12,9 @@ Public Class frmMassValidator Private PROFIL_VEKTORINDEX As String Private PROFIL_LOGINDEX As String Private WM_SEARCH As String + Private WMDocFileString As String + Private WMDocPathWindows As String + Private FINAL_PROFILE As String Private MOVE2Folder As String Private me_closing As Boolean = False @@ -693,7 +697,7 @@ Public Class frmMassValidator Private Function GetWM_Value_Multiple_Docs(idxname As String) Try Dim valueAllOver = "" - Dim tempIndexValue = "" + Dim tempIndexValue Dim idoccount As Integer = 1 For Each docrow As DataRow In CURRENT_DT_MASS_CHANGE_DOCS.Rows Dim WMDOC As WMObject @@ -709,10 +713,15 @@ Public Class frmMassValidator If idxname.StartsWith("[%VKT") And PROFIL_VEKTORINDEX <> "" Then tempIndexValue = ReturnVektor_IndexValue(idxname, WMDOC) Else - tempIndexValue = WMDOC.GetVariableValue(idxname) + Try + tempIndexValue = WMDOC.GetVariableValue(idxname) + Catch ex As Exception + + End Try + If IsNothing(tempIndexValue) Then tempIndexValue = "" If tempIndexValue.ToString = "System.Object[]" Then - LOGGER.Debug("TextBox with VektorField: " & idxname) + LOGGER.Debug("VektorField: " & idxname) If tempIndexValue.Length = 1 Then tempIndexValue = tempIndexValue(0) Else ' @@ -1087,26 +1096,18 @@ Public Class frmMassValidator Dim workedFiles As Integer For Each docrow As DataRow In CURRENT_DT_MASS_CHANGE_DOCS.Rows + If docrow.Item("DOC_ID") = 0 Then + Continue For + End If + WMDocPathWindows = "" + WMDocFileString = "" CURRENT_DOC_ID = docrow.Item("DOC_ID") CURRENT_DOC_GUID = docrow.Item("DOC_GUID") - Dim WMDOC As WMObject - Try - Dim oRelPath = docrow.Item("FULL_PATH").ToString - If oRelPath.StartsWith("\\") Then - oRelPath = oRelPath.Replace("\\", "\") - If oRelPath.StartsWith("\") = False Then - oRelPath = "\" & oRelPath - End If - End If - WMDOC = WINDREAM.oSession.GetWMObjectByPath(WMEntity.WMEntityDocument, oRelPath) - Catch ex As Exception - LOGGER.Error(ex) - LOGGER.Info("error while creating WMObject in (IndexVKTMultipleFiles): " & ex.Message) - Exit For - End Try - If Not IsNothing(WMDOC) Then - CURRENT_WMFILE = WMDOC - If ClassFinalizeDoc.Write_Final_Metadata(WMDOC) = True Then + GetWMDocPathWindows(0) + + If CreateWMObject() = True Then + + If ClassFinalizeDoc.Write_Final_Metadata(CURRENT_WMFILE) = True Then Dim sql = String.Format("UPDATE TBPM_PROFILE_FILES SET IN_WORK = 0, WORK_USER = '{0}', EDIT = 1 WHERE GUID = {1}", Environment.UserName, CURRENT_DOC_GUID) If ClassDatabase.Execute_non_Query(sql) = True Then workedFiles += 1 @@ -1279,29 +1280,78 @@ Public Class frmMassValidator End If btnSave.Enabled = True End Sub + Private Function GetWMDocPathWindows(_CheckStandard As Integer) + Dim oResult As String + Dim oSQL = $"SELECT [dbo].[FNPM_GET_WM_FILE_PATH] ({CURRENT_DOC_GUID},{_CheckStandard})" + oResult = ClassDatabase.Execute_Scalar(oSQL, CONNECTION_STRING) + LOGGER.Debug($"Checking file [{oResult}] exists?...") + If File.Exists(oResult) = False Then + LOGGER.Debug($"GetWMDocPathWindows returned false - trying with standard again...") + oSQL = $"SELECT [dbo].[FNPM_GET_WM_FILE_PATH] ({CURRENT_DOC_GUID},1)" + oResult = ClassDatabase.Execute_Scalar(oSQL, CONNECTION_STRING) + LOGGER.Debug($"Checking file [{oResult}] exists?...") + If File.Exists(oResult) = False Then + Return False + End If + End If + WMDocPathWindows = oResult + CURRENT_DOC_PATH = WMDocPathWindows + LOGGER.Debug($"CURRENT_DOC_PATH: {CURRENT_DOC_PATH}") + Return True + + End Function + Private Function CreateWMObject() As String + CURRENT_WMFILE = Nothing + LOGGER.Debug($"in GetWMDocFileString...'") + Dim oWMRELPATH As String = CURRENT_DT_CONFIG.Rows.Item(0).Item("WM_REL_PATH") + If oWMRELPATH.EndsWith("\") = False Then + oWMRELPATH = oWMRELPATH & "\" + End If + Dim oWMOwnPath = WMDocPathWindows.Replace(oWMRELPATH, "") + LOGGER.Debug($"oWMOwnPath: {oWMOwnPath}") + Try + Dim oNormalizedPath = WINDREAM.NormalizePath(oWMOwnPath) + LOGGER.Debug($"oNormalizedPath: {oNormalizedPath}") + CURRENT_WMFILE = WINDREAM.oSession.GetWMObjectByPath(WMEntity.WMEntityDocument, oNormalizedPath) + WMDocFileString = oNormalizedPath + LOGGER.Debug("WMDocFileString: " & WMDocFileString) + Return True + Catch ex As Exception + + Dim _err1 As Boolean = False + LOGGER.Error(ex) + LOGGER.Info("Unexpected error creating WMObjectMV in GetWMDocFileString: " & ex.Message) + LOGGER.Info("Error Number: " & Err.Number.ToString) + errormessage = $"Could not create a WMObjectMV) for [{oWMOwnPath}]!" + frmError.ShowDialog() + WMDocFileString = "" + Return False + + End Try + + End Function Function CheckAndUpdateIndices() ' Try Dim oMissing As Boolean = False 'Jedes Control auf panel durchlaufen For Each oControl As Control In Me.pnldesigner.Controls - 'Der input der Box,Cmb muss jedes mal geleert werden - Dim input As String = "" + Dim oMyControlInput As String = "" 'Jedes Control in Konfig Tab durchlaufn - For Each dr As DataRow In DTCONTROLS.Rows - If dr.Item("CTRL_TYPE") = "LBL" Or dr.Item("CTRL_TYPE") = "LINE" Then + For Each oControlRow As DataRow In DTCONTROLS.Rows + If oControlRow.Item("CTRL_TYPE") = "LBL" Or oControlRow.Item("CTRL_TYPE") = "LINE" Then Continue For End If 'Den Indexnamen auslesen - Dim oIndexname As String = dr.Item("INDEX_NAME") - Dim _MUSSEINGABE As Boolean = CBool(dr.Item("VALIDATION")) - Dim _READ_ONLY As Boolean = CBool(dr.Item("READ_ONLY")) - Dim Typ As String = dr.Item("CTRL_TYPE") - Dim CONTROL_ID As String = dr.Item("GUID") - Dim ctrl = dr.Item("NAME") + Dim oIndexname As String = oControlRow.Item("INDEX_NAME") + Dim _MUSSEINGABE As Boolean = CBool(oControlRow.Item("VALIDATION")) + Dim _READ_ONLY As Boolean = CBool(oControlRow.Item("READ_ONLY")) + Dim Typ As String = oControlRow.Item("CTRL_TYPE") + Dim CONTROL_ID As String = oControlRow.Item("GUID") + Dim ctrl = oControlRow.Item("NAME") 'Nur wenn der Name der Zeile entspricht und der Index READ_ONLY FALSE ist - If dr.Item("NAME") = oControl.Name And (_READ_ONLY = False Or dr.Item("SQL_UEBERPRUEFUNG") <> "") And oIndexname <> "DD PM-ONLY FOR DISPLAY" Then + If oControlRow.Item("NAME") = oControl.Name And (_READ_ONLY = False Or oControlRow.Item("SQL_UEBERPRUEFUNG") <> "") And oIndexname <> "DD PM-ONLY FOR DISPLAY" Then LOGGER.Debug("Indexierung für Control (" & CONTROL_ID & ") '" & ctrl & "' gestartet. Indexname '" & oIndexname & "'") If oIndexname = "" Then LOGGER.Info(" >> Indexname is unexpected empty.") @@ -1352,19 +1402,31 @@ Public Class frmMassValidator End If End If Else - input = myLookup.SelectedValues.FirstOrDefault() + oMyControlInput = myLookup.SelectedValues.FirstOrDefault() + If IsNothing(oMyControlInput) Then + Continue For + End If + If oMyControlInput = "Unexp. error in GetWM_Value_Multiple_Docs" Then + Continue For + End If + If oMyControlInput = "(Untersch. Werte)" Then + Continue For + End If If oIndexname.StartsWith("[%VKT") Then - input = Return_PM_VEKTOR(input, oIndexname) + oMyControlInput = Return_PM_VEKTOR(oMyControlInput, oIndexname) 'Hier muss nun separat als Vektorfeld indexiert werden - If IndexVKTMultipleFiles(input, PROFIL_VEKTORINDEX) = True Then + If IndexVKTMultipleFiles(oMyControlInput, PROFIL_VEKTORINDEX) = True Then oMissing = True oErrorMessage = "Error while indexing LookupGrid with VEKTOR - Check the log and inform Your sysadmin" Exit For End If Else + If oMyControlInput = "(Untersch. Werte)" Then + Continue For + End If Dim result() As String ReDim Preserve result(0) - result(0) = input + result(0) = oMyControlInput If IndexMultipleFiles(oIndexname, result) = False Then oMissing = True oErrorMessage = "Error while indexing LookupGrid - Check the log and inform Your sysadmin" @@ -1372,8 +1434,8 @@ Public Class frmMassValidator Else 'Nun das Logging If PROFIL_LOGINDEX <> "" Then - input = Return_LOGString(input, input, oIndexname) - IndexVKTMultipleFiles(input, PROFIL_LOGINDEX) + oMyControlInput = Return_LOGString(oMyControlInput, oMyControlInput, oIndexname) + IndexVKTMultipleFiles(oMyControlInput, PROFIL_LOGINDEX) End If End If End If @@ -1392,30 +1454,33 @@ Public Class frmMassValidator oControl.BackColor = Color.Red Exit For Else - input = oControl.Text + oMyControlInput = oControl.Text 'Wenn der Wert in ein Vektorfeld geschrieben wird If oIndexname.StartsWith("[%VKT") Then - input = Return_PM_VEKTOR(input, oIndexname) + oMyControlInput = Return_PM_VEKTOR(oMyControlInput, oIndexname) 'Hier muss nun separat als Vektorfeld indexiert werden - If IndexVKTMultipleFiles(input, PROFIL_VEKTORINDEX) = True Then + If IndexVKTMultipleFiles(oMyControlInput, PROFIL_VEKTORINDEX) = True Then oMissing = True oErrorMessage = "Error while indexing Textbox with VEKTOR - Check the log and inform Your sysadmin" Exit For End If Else + If oMyControlInput = "" Then + Continue For + End If Dim result() As String ReDim Preserve result(0) - result(0) = input + result(0) = oMyControlInput If IndexMultipleFiles(oIndexname, result) = False Then oMissing = True - oErrorMessage = "error while indexing Textbox - Check the log and inform Your sysadmin" + oErrorMessage = "Unexpected error while indexing Textbox - Check the log and inform Your sysadmin" Exit For Else 'Nun das Logging If PROFIL_LOGINDEX <> "" Then - input = Return_LOGString(input, input, oIndexname) - IndexVKTMultipleFiles(input, PROFIL_LOGINDEX) + oMyControlInput = Return_LOGString(oMyControlInput, oMyControlInput, oIndexname) + IndexVKTMultipleFiles(oMyControlInput, PROFIL_LOGINDEX) End If End If End If @@ -1439,13 +1504,13 @@ Public Class frmMassValidator oErrorMessage = "Please Choose DateValue for field'" & dtp.Name & "'" Exit For ElseIf dtp.Value.ToString <> "01.01.0001 00:00:00" Then - input = CDate(dtp.Value) + oMyControlInput = CDate(dtp.Value) 'Wenn der WErt in ein Vektorfeld geschrieben wird If oIndexname.StartsWith("[%VKT") Then 'Input = die String komponente als String - input = Return_PM_VEKTOR(input, oIndexname) + oMyControlInput = Return_PM_VEKTOR(oMyControlInput, oIndexname) 'Hier muss nun separat als Vektorfeld indexiert werden - If IndexVKTMultipleFiles(input, PROFIL_VEKTORINDEX) = True Then + If IndexVKTMultipleFiles(oMyControlInput, PROFIL_VEKTORINDEX) = True Then oMissing = True oErrorMessage = "Error while indexing DatePicker with VEKTOR - Check the log and inform Your sysadmin" Exit For @@ -1453,7 +1518,7 @@ Public Class frmMassValidator Else Dim result() ReDim Preserve result(0) - result(0) = CDate(input) + result(0) = CDate(oMyControlInput) 'MsgBox(_IDXName) If IndexMultipleFiles(oIndexname, result) = False Then oMissing = True @@ -1462,8 +1527,8 @@ Public Class frmMassValidator Else 'Nun das Logging If PROFIL_LOGINDEX <> "" Then - input = Return_LOGString(input, input, oIndexname) - IndexVKTMultipleFiles(input, PROFIL_LOGINDEX) + oMyControlInput = Return_LOGString(oMyControlInput, oMyControlInput, oIndexname) + IndexVKTMultipleFiles(oMyControlInput, PROFIL_LOGINDEX) End If End If End If @@ -1473,7 +1538,7 @@ Public Class frmMassValidator End If Case "System.Windows.Forms.CheckBox" Dim chk As CheckBox = oControl - input = chk.Checked.ToString + oMyControlInput = chk.Checked.ToString If chk.Checked = False And _MUSSEINGABE = True Then oMissing = True @@ -1492,9 +1557,9 @@ Public Class frmMassValidator If oIndexname.StartsWith("[%VKT") Then 'Input = die String komponente mit Boolean als String - input = Return_PM_VEKTOR(chk.Checked.ToString, oIndexname) + oMyControlInput = Return_PM_VEKTOR(chk.Checked.ToString, oIndexname) 'Hier muss nun separat als Vektorfeld indexiert werden - If IndexVKTMultipleFiles(input, PROFIL_VEKTORINDEX) = True Then + If IndexVKTMultipleFiles(oMyControlInput, PROFIL_VEKTORINDEX) = True Then oMissing = True oErrorMessage = "Error while indexing Checkbox with VEKTOR - Check the log and inform Your sysadmin" @@ -1508,8 +1573,8 @@ Public Class frmMassValidator Else 'Nun das Logging If PROFIL_LOGINDEX <> "" Then - input = Return_LOGString(CBool(result(0)).ToString, result(0).ToString, oIndexname) - IndexVKTMultipleFiles(input, PROFIL_LOGINDEX) + oMyControlInput = Return_LOGString(CBool(result(0)).ToString, result(0).ToString, oIndexname) + IndexVKTMultipleFiles(oMyControlInput, PROFIL_LOGINDEX) End If End If End If @@ -1609,18 +1674,22 @@ Public Class frmMassValidator Continue For End If Dim WMDOC As WMObject + Dim oRelPath = docrow.Item("FULL_PATH").ToString Try - Dim oRelPath = docrow.Item("FULL_PATH").ToString - If oRelPath.StartsWith("\\") Then - oRelPath = oRelPath.Replace("\\", "\") - ElseIf oRelPath.StartsWith("\") = False Then - oRelPath = "\" & oRelPath - + If oRelPath.StartsWith("W") Then + oRelPath = oRelPath.Substring(2) + Else + If oRelPath.StartsWith("\\") Then + oRelPath = oRelPath.Replace("\\", "\") + ElseIf oRelPath.StartsWith("\") = False Then + oRelPath = "\" & oRelPath + End If End If + WMDOC = WINDREAM.oSession.GetWMObjectByPath(WMEntity.WMEntityDocument, oRelPath) Catch ex As Exception LOGGER.Error(ex) - LOGGER.Info("error while creating WMObject in (IndexMultipleFiles): " & ex.Message) + LOGGER.Info("error while creating WMObject in (IndexMultipleFiles): " & oRelPath) _allfine = False Exit For diff --git a/app/DD_PM_WINDREAM/frmValidator.Designer.vb b/app/DD_PM_WINDREAM/frmValidator.Designer.vb index 94fb533..af1c327 100644 --- a/app/DD_PM_WINDREAM/frmValidator.Designer.vb +++ b/app/DD_PM_WINDREAM/frmValidator.Designer.vb @@ -36,6 +36,7 @@ Partial Class frmValidator Me.DateiÖffnenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.DateiInfoToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.DateieigenschaftenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator() Me.RefreshAdditionalSearchToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.TITLELabel1 = New System.Windows.Forms.Label() Me.btnSave = New System.Windows.Forms.Button() @@ -135,7 +136,6 @@ Partial Class frmValidator Me.FinalIndexDataSet = New DD_PM_WINDREAM.FinalIndexDataSet() Me.TBPM_PROFILE_FINAL_INDEXINGBindingSource = New System.Windows.Forms.BindingSource(Me.components) Me.TBPM_PROFILE_FINAL_INDEXINGTableAdapter = New DD_PM_WINDREAM.FinalIndexDataSetTableAdapters.TBPM_PROFILE_FINAL_INDEXINGTableAdapter() - Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator() CType(Me.BarAndDockingController3, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.BarAndDockingController2, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.BarAndDockingController1, System.ComponentModel.ISupportInitialize).BeginInit() @@ -240,6 +240,11 @@ Partial Class frmValidator resources.ApplyResources(Me.DateieigenschaftenToolStripMenuItem, "DateieigenschaftenToolStripMenuItem") Me.DateieigenschaftenToolStripMenuItem.Name = "DateieigenschaftenToolStripMenuItem" ' + 'ToolStripSeparator1 + ' + Me.ToolStripSeparator1.Name = "ToolStripSeparator1" + resources.ApplyResources(Me.ToolStripSeparator1, "ToolStripSeparator1") + ' 'RefreshAdditionalSearchToolStripMenuItem ' resources.ApplyResources(Me.RefreshAdditionalSearchToolStripMenuItem, "RefreshAdditionalSearchToolStripMenuItem") @@ -844,11 +849,6 @@ Partial Class frmValidator ' Me.TBPM_PROFILE_FINAL_INDEXINGTableAdapter.ClearBeforeFill = True ' - 'ToolStripSeparator1 - ' - Me.ToolStripSeparator1.Name = "ToolStripSeparator1" - resources.ApplyResources(Me.ToolStripSeparator1, "ToolStripSeparator1") - ' 'frmValidator ' resources.ApplyResources(Me, "$this") diff --git a/app/DD_PM_WINDREAM/frmValidator.resx b/app/DD_PM_WINDREAM/frmValidator.resx index 4b36418..b33fe5e 100644 --- a/app/DD_PM_WINDREAM/frmValidator.resx +++ b/app/DD_PM_WINDREAM/frmValidator.resx @@ -807,505 +807,168 @@ - AAABAAwAMDAQAAEABABoBgAAxgAAACAgEAABAAQA6AIAAC4HAAAYGBAAAQAEAOgBAAAWCgAAEBAQAAEA - BAAoAQAA/gsAADAwAAABAAgAqA4AACYNAAAgIAAAAQAIAKgIAADOGwAAGBgAAAEACADIBgAAdiQAABAQ - AAABAAgAaAUAAD4rAAAwMAAAAQAgAKglAACmMAAAICAAAAEAIACoEAAATlYAABgYAAABACAAiAkAAPZm - AAAQEAAAAQAgAGgEAAB+cAAAKAAAADAAAABgAAAAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8A - /wCAAIAA/wAAAIAAAAD//wAAgIAAAAD/AAAAgAAAAP//AACAgAAAAP8AAACAAP///wDAwMAAgICAAAAA - AAD//////////f//////////////////////////3d7u3d3////////////////////////94b6+vu3f - //////////////////////3rmpqpqZ7t3////////////////////9vquqqqqqvu3//93d3f//////// - /////euqqqq6q6q57d/d5+3d////////////3rq/u6urq6ur7t3e7h7d3///////////67rzX5qqqqq6 - vu79//7+3d//////////6qqfPzuqqrqqsX7////eHt3////////9u7uqc/Wqmqurqx/d////3+7d3/// - ///+uqqqq18aqqqrq+7d3////9Pt3//////+qrqqqTN7G7q6q57d3d////3h7d/////7uq6uqnPz9fqq - ux7t3d3d///9Ud3f///+u6qqqrU1M5q6qrm57d7d3////XHd/f/+uqqqqq9fm7qquxq7ve3d3f///91e - 3//+uqmqqoFTuqqrq5manp7t7d/////eXt//u6qqqqk1W6q6sZq5rqme3d/d////3j//66upqqrvU1uq - upipqNqbnt3d3f///53/27qqqaqRVTWruOqanamovt7d3d3/3z///buqqqqqk1urvqmpqOjqnt7u3d3d - 3e///+u7qqqqqrq+iJiprdqIpe5+7e3d3/////2bu7u6urvo2oqanY2unml3/u7t3+/////+G7u7s+2O - qI3Yrdjo6e53d1Hu3T//////nt7tTdjYiN2Nj9jY7tZ3d5fh3e//////H//93e2N/fjd3/3djm1+d3dv - 3Z//////X//d3d3/39/d3+3d1dbmaXl13e//////7//f3e3///3/39Ld3t7u5mdp7z//////7f3dTU7u - 3//9T97u5d1mbuaV3e//////7//d3d1N7tTd/f3U3u3e5m5n3e//////7//d/d3dTt/91OTd1N3d3W5u - 3+//////7//dTU1N3f0kLS7t3dTd3dbm3+//////7//f3d3d3ULU0uLi393f3d3V/e//////7/39/d39 - /uTSTU5F0t3/397u/+//////7//d3/3dLSQt3S4tJNTf/d3f3+//////7////d3S3u7U1NTi3i3d3d/9 - /+//////7//f3e1O3k1N3d3UUk3t3/3//+//////7//97dLdLt3d3f3f/dXv3//9/+//////7/3U1N3t - 1e3U9N39//3v/f3//+//////7t3d3dTdTdXd3d3f3d7f/////+//////3u7d3d3d3d3e7d393d//3/// - 3u////////7u3d3d3d3d3d3d3/3////e7f/////////97u393d3d3d3f/f///97t/////////////+7t - /d3f3d3f////3u3////////////////e7f39/f3////e7f//////////////////3u3f/9////7t//// - //////////////////3u3////u3////////////////////////97u/e7f////////////////////// - /////97t/////////////v////8AAP8AP////wAA/gAf////AAD4AAf///8AAPAAB4H//wAA4AABAP// - AADAAAAAf/8AAMAAADgf/wAAwAAA/A//AACAAAE/Af8AAIAAAB/B/wAAgAAAB+B/AACAAAAA+B8AAIAA - AAB+CwAAgAAAAD8HAACAAAAAH8EAAMAAAAAT8QAAwAAAAAD8AADAAAAAADUAAOAAAAAAAQAA8AAAAAAF - AAD4AAAAAAUAAP4AAAAAAQAA/wAAEAABAAD/eAoYAAEAAP9wNRAAAQAA/3Q+0AAFAAD/IAeQAAEAAP9w - ACgAAQAA/3IBgAAFAAD/cAIAAAUAAP90AABECQAA/2ooAA0NAAD/cYAABhUAAP9+AAAAbQAA/3QAAAG9 - AAD/eAAJhe0AAP9gACLmvQAA/wAAAQf9AAD/AAACHfEAAP/gAABvwwAA//ggAb8PAAD//whB/D8AAP// - wqvw/wAA///wd+P/AAD///4fj/8AAP///4Q//wAA////8P//AAAoAAAAIAAAAEAAAAABAAQAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA/wD/AIAAgAD/AAAAgAAAAP//AACAgAAAAP8AAACAAAAA//8AAICAAAAA - /wAAAIAA////AMDAwACAgIAAAAAAAP///93d3////////////////97pHu3f/9/f//////////2Zqam+ - 7f3d3d/////////rqqqqq57t7/7d///////9qzu6qaq+FR3eHt3f////3qFzmaqaq57//d593f///+up - rzuqq6sd3f/90e3d///quqk3Gaqant3f//3h7d//6qqps3Pqqxm+/d3//e7d3+moqp87mrqxnt7d3//d - 7t/hqoqu/qqr6Jrb7d3//93t+5qai+U7rqmp+J7t/f//3v26qqqTkbuOmt6une3d39X/25qaqrmu2Kn5 - iefn7d3R//0bu7Hh2I6r+agdlu7t3v///u7u6IrY2Nqe5m527t7///7/3e7v3939mV7m6WXe///+/93t - ///98e4W6W6e3v///v/d7t3dTfVRXlflbt7///793U1V7d3/3l7WdpX+///+/93d3d/dLt/e3d5Z/v// - /v/f3d/S5OLU3//d5d7///79/d/y7U0lEtL93u/+///+///dLtTd3U7u3d3/3v///f/U1NXd3/39Qt3/ - //3///793d3STf3f3d7f3//e///+7d3d3d4t3d7d///e7/////3t7d3d3d3f///d7////////d7d//3d - ///e3f//////////3u7/3//e3f/////////////97t/e3f////////////////3e7////////B////AH - X//gAgf/wAAD/4AAAH8AAOA/AAA4DwAAHgcAACOBAAABwQAAAPCAACC8gAAABMAAIADgACAA+AAAAPsF - IAD7D6AA+wAgAPoAMAL7AQQC+0QBwPqYAIb7wAAM+wBoPvoAkFz4AADx/gAHx/+Djw//8Nw///4Q//// - h/8oAAAAGAAAADAAAAABAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wD/AIAAgAD/AAAAgAAAAP// - AACAgAAAAP8AAACAAAAA//8AAICAAAAA/wAAAIAA////AMDAwACAgIAAAAAAAP//3t3////////////e - np7t/d3///////0aqqoe3pHt/////9m3uqmpHt3u3f///9qjmaqr7f/+7d///+uqP7q67d//3u3f/7qK - tVuqu+3d/97v/+qqkbqr6e7t3//u/9uoqV65mo2u3d/97/6aqrGa2a6J7t3f7//ruxmtip2enn7d7//9 - 3u7Y3d2pVp5d7//9397d//7u7lad7//9397d3f3l5ple3//9/91O3d3dXVad7//9393d3SPd395d3//9 - 3/3dJNRS393d3///393eTd3dLd393//93dTS3d/dXf//3//93d3d3d3d3//d3///3d3d3d3f/93d//// - //3d3f//3t3////////93e3e3////////////93f//////D//wDAI/8AgAD/AAAAPwAADh8AAAcHAAAA - xwAAAHMAAAAZAIAABQDAAAEA4AABAOQ4AQDkCAEA7AABAOQAQQDmAEEA9AAJAOAEPQDgAHEA8AHDAP4P - DwD/gH8A//H/ACgAAAAQAAAAIAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AP8AgACAAP8A - AACAAAAA//8AAICAAAAA/wAAAIAAAAD//wAAgIAAAAD/AAAAgAD///8AwMDAAICAgAAAAAAA/bvu393/ - ///76que7u///+u3qqH/3t//uqN6vt3/7f+5iRuomt/97dqqOeqene/+/rqa6KmZXt7/7e2N6p533v/v - 3f/9137e/+/90tXvV97/798U3i7e/v/v/U7VVf/+/9393d3e//7/7d393d/97v/93d3f/e3/////3d7d - //+BPwAAgB8AAADHAAAAMwAAABgAAAAGAACAAAAAwAAAANOAAADYEAAA1AIAANgOAADIDgAAwhgAAOBj - AAD8DwAAKAAAADAAAABgAAAAAQAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AADQ0NAA0NDRAB0c - bAAbGl0AJCN3ADIwZAA1NFAAKCBTADQyNQBDQUMATk1OACYkJQBILi4A/vb2APry8gD++voA+vb2AD0T - EgC9q6oAfmRiAIxycAC1lJEAmH58AL6mpADErasA+u3sALSfnQDRwL4Aybm3AN/QzgCzrKsA8NTOAMe0 - sAD24d0A+ubiAO3o5wBYPjgA8NzXANnJxQD+8e4A6eHfAO7NxAD15uIAu7SyAPTt6wDrwrUAvKCXAO3J - vADn3NgA39nXALVbNwDUt6wAv6ykAKWZlADqvKcAyHRKAG5VSADqtpwA2KuUAPXr5gD+9vIA+vLuANOK - YQCVY0cA4JhvAOmwkgBeTkUAnYyDALKppABpRS8A5qN7AOiqhQDPmnsA7cSqAPbVwAD23s8A+ubaAPqM - PwDzy68A+NvHAPvk1AD87eMA/vLqAPuYUAD6omEA+65zAPy4hADwtIcA9r2RALaRdQD2xJsA+sqjAPTS - twD71bQA/NOrAPraugD97NwA/vbuAPry6gD++vYA+vbyAPzhxADr0rcA/eXLANjErwBTLgIA/tuzAP3f - vADy3MEA/uvUAP3y5QBMLAIANyADAFk2BAD+9uoAaUULAHZVIABSPyIA8+PJAFY9EwD++vIA+vbuAPbz - 7QD369AA+vbpAPby5gD29fIA/PXbADUvFgD+/eUA/f3sAP7+8gD+/vYA+vryAP7++gD6+vYA29+7APP8 - 5gDo+t4A7e/sAKzJoQB/onYAw+C8ACZXHgDY+dQAUIRNAPr++gDH9sgAI3opAJbjnABQs1oAs/O4AIq3 - jgAqljcAX9BtAHfVggAMniEAL69CAD3KUgDLzcwA4PLvAM7W1gDK0tIA+fr6AIuMjAD4/f4At7u8AM3l - 7ACaw9IA7vn9AKWoqQCA1/sAYsr2AKLT6QCb2/wAt+b9AM7u/gDg9P4AsLS2AES08ACAwuoAz9TXAGav - 4gBzdngAM5rlAMTIywBUnNYABWzRACd/1ABBh8oAys7SAL3AwwCeoKIAkZKTAAdXvAAlZ7wAq62wAAVH - rAAnT5UAl5iaAAM0mQACM/4ACTboACg6gQACK/cAFTvjAGprcAACJO0AHjKnAF5ljwACHuUACiTTABUs - uwCHiqAAAhvcAAIW1gADIPsADij+AAwhwABFTIIAj5KsAAIV3AACEtIAAhLOAAMW0QACDuwAAgzWAAIO - zgACDskAAxL8AAcSvAANGvAAAwrCAAMHqQAQF6sAJShnAFlaegBBQlcATU5lAAIH4AACAtQAAgLKABgb - mAAhIogAPDxuAHh4lABhYWMAfHx9AGhoaQD///8AhISEAHBwcABaWloAGBgYAAgICAD///////////+6 - p6ezp8C6////////////////////////////////////////////////////wKul+Pj7pcirp/////// - /////////////////////////////////////////8D77wbsBQXs9e+4wsHA//////////////////// - ////////////////////////q+3s69jQ2dnT2Ovs7/jIp///////uqfAuv////////////////////// - //////+rBvPw5ubm5ubm5ubw6wa4wqf///+nxcHBxcD//////////////////////////6sG6vDx8PHx - 8fHx8fHx8ecGuMjAwLPBzwm4yKunuv//////////////////////wO/r8AQSCOrx8PDw8fHx8vHnBvjI - q/sLz6sKC/jBxcD/////////////////////0vPy8P5wcHAI8PDw8PDx8fHy8++4/QmgEBAQwQz3pauz - uv////////////////+6Burx8fMMcXFx9Obi4vDw8fHx8gQM+38QEBAQEDL4Cc/Ixaf///////////// - ///I9PLx8fDwBHFwcdfm4uLw8PHx8vP3oi2MEBAQEBAQugsK+Kuzuv/////////////t6/Hx8fDi5gxw - cPPm5uLi8PHx8ertGyEdHowQEBAQEBCnCf3IxcC6///////////c6vHy8eLi2udxahIICAjz8PDx8er1 - RBkZGScyLRAQEBAQjKUJz8Gzuv/////////16vHx6Obm5tr+cGpqcGoI4vDx8un197gbExwZHDF/EBAQ - EBC2/Qv4q6e6///////16vHi4ubm5ub0anJqamoE4vHx8erszMn1FRwTExkcKX8QEBAQEKAJC8izwP// - ///t6vHo2ebm5ubQdnRy8+rn8PHx8eoFycnJyd0XGBgTISctEBAQEBB/qwr9wae6///28/Lw6Obm5uba - B3R0zObi8PHx8vPMxsnrybvM7UQYGCEpEBAQEBAQECS4C7izuv/ABerx4tra5tna23J0dMzw8PHy8gPH - w8bG1bfDw8b3RBkxLSQ8DhAQEBAQMv0Lp///7/Py8OLZ2tra2Qd0dXVG9fHx88y9vNXGxru9w8PDxxcn - HCEcMjwOZBAQEA4Lp///qwXq8vDi5tnZ2dMHcnR0RvDqA8S9vMbG1Le+xLy8xhQZGRgYGRwxLQ4OJCML - /////90E6vHw8OLm5ubm8w1yBeoDxLm8vMPDw7W7vb28wxQZFRVFNRgZJx4eICIL///////WA/Py8fDw - 8PDw4vHq6gPEubm5vMPLw7W3ubm5xDmSmpB2FS8YFi80JyIL////////1vUD6ury8uny6urzzLu0tLm5 - vbzDw663u7m5vpWbnpWSkEMVFhYWISYL/////////7r27AMDA+oDAwb2ra20tLm5ra25vK61t7u0tJeb - n52VkpCQJRcWISYL////////////9xunq8gbO1vIrK20tKysr6ysrbGut62tu5Kcm5WdnZWSlZA5GSb9 - ////////////9xAQZIBma1zIra2vsLCwr6+vr6qiqK6tt5Kcm5qdnZ2dmpKQFiL9////////////9xAQ - b2hmX1vIsKqqsrGxsbGwsBD7NqixqZKWnJeamp2dnZqVGyL9////////////9xAQb1FsX1s2JySqEKqy - srKyHj46WhVFjZKWnJeXnp6dnp2VGCn3////////////zxAQb2hsX1tYWkQ2ohAQEDxZVxBnQUlaRJKW - lpuXn56enp6VGCL3////////////zxAQUmhsX1tZWEdaRPscXFlmPj5hLkhJSFo2mJacm5+fn56VGCTP - ////////////zxAQUmhsT1xbWVlYSERIbGFfVE44SF1KQlg7O4+Ylpyfn5+aIS24////////////uBAQ - YWhmXk9cW1tbNzBmX05OTlQ4MzhKZzc6WYmRlJiYm5+XJw64////////////uBAQUlFmS11dT09LIm1W - Tk5OVVU4Mzg4R2ZtT3yLkZGUmJa4Mn/4////////////uBAQUk1RZmZLZiJRShdOTlRUVVY4ODg4ODhY - bICKi4uUq6WlLX/4////////////uBAQb2FNUVEjUktHPxdUVFVWVlc4ODg4OD8/R24QihzBLDE+LQ77 - ////////////+BAQPlJSUj5MQkdBQftVVVZWWV9HPzg4OD8/QTUyJ7YmPn57ew77////////////+BAQ - Pg4+YU9IR0dHSftWVllcX2tsaGhIOD8/R0QsMj4+Pj57e2T7////////////+BAQEA5LQkhISEhISfhX - X19fX2tsaG5vZEpBR0QkPi17Pj4+PmT7////////////+xAQZltCQjpCQkJCO7j7aWtra2tsaG6APhB/ - G7g+e3t7e38OPmT7////////////+8IuWzc3Nzo3Ojc6OjovFzY0a2xsaG6AUhzINjJ7Pnt7f38OZIz7 - ////////////s/j4NhlKT0pKNzc3Nzc3Nzs2NjRmbm4eRR8xDj4+fz5/DmRkwPv7//////////////+z - wvv7GDBLMDAuLi4uLi4uNxkYaR0sMQ4+Dg4ODg4QEMD7pcX//////////////////7rI+/s2aWZLKioq - KjAwMDAwNCdkDg4ODg4OEGSgpfvF/////////////////////////8Cl+KUhIEwgICAgICAqKisODg4O - DmQQMqX7xf//////////////////////////////uqul+xsmIyMmJiYmJjwQZGQQEDKl+6v///////// - ////////////////////////////s6X7yCc+Gjw8Kw4QEBAywfur//////////////////////////// - ////////////////q/ulHXsQDhAQjMH7wf////////////////////////////////////////////// - //+zwqXIKYzB+8H//////////////////////////////////////////////////////7rI+/vC//// - ////////////////////gP////8AAP4Af////wAA+AAf////AADwAA+H//8AAOAABwP//wAAwAAAAP// - AACAAAAAf/8AAIAAAAAf/wAAAAAAAA//AAAAAAAAA/8AAAAAAAAA/wAAAAAAAAB/AAAAAAAAAB8AAAAA - AAAADwAAAAAAAAADAAAAAAAAAAEAAAAAAAAAAQAAgAAAAAABAACAAAAAAAMAAMAAAAAAAwAA4AAAAAAD - AADwAAAAAAMAAPgAAAAAAwAA/gAAAAADAAD+AAAAAAMAAP4AAAAAAwAA/gAAAAADAAD+AAAAAAMAAP4A - AAAAAwAA/gAAAAADAAD+AAAAAAMAAP4AAAAAAwAA/gAAAAADAAD+AAAAAAMAAP4AAAAAAwAA/gAAAAAD - AAD+AAAAAAMAAP4AAAAAAwAA/gAAAAADAAD+AAAAAAMAAP+AAAAABwAA/+AAAAAfAAD//AAAAH8AAP// - AAAB/wAA///gAAf/AAD///wAH/8AAP///wB//wAA////wf//AAAoAAAAIAAAAEAAAAABAAgAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAP8AANDQ0ADQ0NEAHRxsABsaXQAkI3cAMjBkADU0UAAoIFMANDI1AENB - QwBOTU4AJiQlAEguLgD+9vYA+vLyAP76+gD69vYAPRMSAL2rqgB+ZGIAjHJwALWUkQCYfnwAvqakAMSt - qwD67ewAtJ+dANHAvgDJubcA39DOALOsqwDw1M4Ax7SwAPbh3QD65uIA7ejnAFg+OADw3NcA2cnFAP7x - 7gDp4d8A7s3EAPXm4gC7tLIA9O3rAOvCtQC8oJcA7cm8AOfc2ADf2dcAtVs3ANS3rAC/rKQApZmUAOq8 - pwDIdEoAblVIAOq2nADYq5QA9evmAP728gD68u4A04phAJVjRwDgmG8A6bCSAF5ORQCdjIMAsqmkAGlF - LwDmo3sA6KqFAM+aewDtxKoA9tXAAPbezwD65toA+ow/APPLrwD428cA++TUAPzt4wD+8uoA+5hQAPqi - YQD7rnMA/LiEAPC0hwD2vZEAtpF1APbEmwD6yqMA9NK3APvVtAD806sA+tq6AP3s3AD+9u4A+vLqAP76 - 9gD69vIA/OHEAOvStwD95csA2MSvAFMuAgD+27MA/d+8APLcwQD+69QA/fLlAEwsAgA3IAMAWTYEAP72 - 6gBpRQsAdlUgAFI/IgDz48kAVj0TAP768gD69u4A9vPtAPfr0AD69ukA9vLmAPb18gD89dsANS8WAP79 - 5QD9/ewA/v7yAP7+9gD6+vIA/v76APr69gDb37sA8/zmAOj63gDt7+wArMmhAH+idgDD4LwAJlceANj5 - 1ABQhE0A+v76AMf2yAAjeikAluOcAFCzWgCz87gAireOACqWNwBf0G0Ad9WCAAyeIQAvr0IAPcpSAMvN - zADg8u8AztbWAMrS0gD5+voAi4yMAPj9/gC3u7wAzeXsAJrD0gDu+f0ApaipAIDX+wBiyvYAotPpAJvb - /AC35v0Azu7+AOD0/gCwtLYARLTwAIDC6gDP1NcAZq/iAHN2eAAzmuUAxMjLAFSc1gAFbNEAJ3/UAEGH - ygDKztIAvcDDAJ6gogCRkpMAB1e8ACVnvACrrbAABUesACdPlQCXmJoAAzSZAAIz/gAJNugAKDqBAAIr - 9wAVO+MAamtwAAIk7QAeMqcAXmWPAAIe5QAKJNMAFSy7AIeKoAACG9wAAhbWAAMg+wAOKP4ADCHAAEVM - ggCPkqwAAhXcAAIS0gACEs4AAxbRAAIO7AACDNYAAg7OAAIOyQADEvwABxK8AA0a8AADCsIAAwepABAX - qwAlKGcAWVp6AEFCVwBNTmUAAgfgAAIC1AACAsoAGBuYACEiiAA8PG4AeHiUAGFhYwB8fH0AaGhpAP// - /wCEhIQAcHBwAFpaWgAYGBgACAgIAP//////usXByKuzuv//////////////////////////////usXP - 7gYG7s/Cp///usCzp8C6/////////////////7r49NTT0NPU9PX4q8DFwcLIq6e6//////////////+6 - uPPn6ObT0+Le6+zPpaW4CQnPyKunuv///////////8jr9AwJ2+bT4OPj6wYLCgurtvcK+8GzwLr///// - //+zzOPzDHEJ1crQ2OPk8wzIKRAQLbP9C8Krp7r//////8Hr5OLrDHHMzsrQ2OPr9aAcMowQEIzBCs/I - xae6////0ufgzcr0/oHM0dvX8Ov0RMEdJDKMEA4ppQr4wbPA///c5NDKysvscXByBeLi6/Tv9dIpHRwp - EBAOMrgLyKvA/9LnyrzKysmBeAbb3vDr9MfGx8DIHSG2fxAQf8D9uLO6wfPNyrzKzgd03M7i8dHHvsbE - osftNR0nZHtkECRFuMC69djKysrK0Qp0ddHyzMS+xsSwvcTMwjIpHjJ/EA4nC/+r9NvNysrZ1Qcl9NHM - tLnGw6i9vbvMGKUdJzI8JjH9///W9OvY2OPw4OvMzLu0tMbGqMS9ufeSmpA2GSc0af3////B9fTz8/Pz - 9NKttLS5xsaoxLy9OZuempX9Fhwn/f//////+9b29kREt7m7t6y1vaHDxL1Dm5+enpqVFx79///////7 - EINoa7i5u7CysrGwDre9xEabl5qen5eVHvf///////sOPmZfuKKqqqqqssB/RhS7Rpuemp6en/0y9/// - ////+w5vZkq4RBagtjUWNBBARiVGm5qVmp6XkjLP///////7Dm9mX1tJFxUXNWhmJC0gSUAVlpqamp73 - Mc///////6V/b2ZeT1tbL0tmV1QzODA8S1qJkZaXmpIpuP//////pX9vaGZLS00xW1RUVjMzOD9PJn6M - Mo+Okim4//////+lfz5NTWEjXTM/VVZXMzM4Pz9aPoqNjkQkKfj//////8J/Dj4+TEJBM0dXW2ZmSj84 - PzMhRKckPj4k+///////whAQI0pISEgzSUx+PlJSUjBJQLYeew5kZHul///////CImZZOjo6Oz8/NyYr - fn5hbTQzJj57fw5kosL//////8KlNjRPTy43OjtJSTswIGkWNC0OPg5/oMjCwP////////+rpcIYS0sw - MC4uO0k7HD4ODg57oMHCwP//////////////wMilNidRTCAgICoaZA57oMHCp/////////////////// - ///FwqUsHhojIj5/uqvIp///////////////////////////usHCyMCMuqvIp/////////////////// - //////////////+zyKXIp//////////////4D///4AYH/8AAA/+AAAD/gAAAPwAAAB8AAAAHAAAAAwAA - AAEAAAAAAAAAAAAAAACAAAAAwAAAAOAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgA - AAD4AAAA+AAAAPgAAAD+AAAD/4AAD//wAD///AD///+D/ygAAAAYAAAAMAAAAAEACAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAA/wAA0NDQANDQ0QAdHGwAGxpdACQjdwAyMGQANTRQACggUwA0MjUAQ0FDAE5N - TgAmJCUASC4uAP729gD68vIA/vr6APr29gA9ExIAvauqAH5kYgCMcnAAtZSRAJh+fAC+pqQAxK2rAPrt - 7AC0n50A0cC+AMm5twDf0M4As6yrAPDUzgDHtLAA9uHdAPrm4gDt6OcAWD44APDc1wDZycUA/vHuAOnh - 3wDuzcQA9ebiALu0sgD07esA68K1ALyglwDtybwA59zYAN/Z1wC1WzcA1LesAL+spAClmZQA6rynAMh0 - SgBuVUgA6racANirlAD16+YA/vbyAPry7gDTimEAlWNHAOCYbwDpsJIAXk5FAJ2MgwCyqaQAaUUvAOaj - ewDoqoUAz5p7AO3EqgD21cAA9t7PAPrm2gD6jD8A88uvAPjbxwD75NQA/O3jAP7y6gD7mFAA+qJhAPuu - cwD8uIQA8LSHAPa9kQC2kXUA9sSbAPrKowD00rcA+9W0APzTqwD62roA/ezcAP727gD68uoA/vr2APr2 - 8gD84cQA69K3AP3lywDYxK8AUy4CAP7bswD937wA8tzBAP7r1AD98uUATCwCADcgAwBZNgQA/vbqAGlF - CwB2VSAAUj8iAPPjyQBWPRMA/vryAPr27gD28+0A9+vQAPr26QD28uYA9vXyAPz12wA1LxYA/v3lAP39 - 7AD+/vIA/v72APr68gD+/voA+vr2ANvfuwDz/OYA6PreAO3v7ACsyaEAf6J2AMPgvAAmVx4A2PnUAFCE - TQD6/voAx/bIACN6KQCW45wAULNaALPzuACKt44AKpY3AF/QbQB31YIADJ4hAC+vQgA9ylIAy83MAODy - 7wDO1tYAytLSAPn6+gCLjIwA+P3+ALe7vADN5ewAmsPSAO75/QClqKkAgNf7AGLK9gCi0+kAm9v8ALfm - /QDO7v4A4PT+ALC0tgBEtPAAgMLqAM/U1wBmr+IAc3Z4ADOa5QDEyMsAVJzWAAVs0QAnf9QAQYfKAMrO - 0gC9wMMAnqCiAJGSkwAHV7wAJWe8AKutsAAFR6wAJ0+VAJeYmgADNJkAAjP+AAk26AAoOoEAAiv3ABU7 - 4wBqa3AAAiTtAB4ypwBeZY8AAh7lAAok0wAVLLsAh4qgAAIb3AACFtYAAyD7AA4o/gAMIcAARUyCAI+S - rAACFdwAAhLSAAISzgADFtEAAg7sAAIM1gACDs4AAg7JAAMS/AAHErwADRrwAAMKwgADB6kAEBerACUo - ZwBZWnoAQUJXAE1OZQACB+AAAgLUAAICygAYG5gAISKIADw8bgB4eJQAYWFjAHx8fQBoaGkA////AISE - hABwcHAAWlpaABgYGAAICAgA/////8j4pbP/////oP/////////////////F3NHV0fX4wLqns7PA//// - /////////6v02+bQ3tj0z8j4CgvCp7r/////////uvT0gfTZ0+PkBQrPosD9z8HA////////1vLkDIHR - ytPj6tIefxB/wf37s7r/////0uTK1AwN0dvw6dzIHDF7ECn498GnoP//x9PKyvRxcvTm5wXs9sAdMhAQ - oM/4s///9tfKvM52Cuji68fGu9b2NTJkEBDB+Lr/s/PKysrRdkPr0b7DvrfD7SweHg4QHvj//9LR0NDm - 8wcFxLTDvre5xLiONicmJ6X////29PPr59G+tLTDvru90pealbgYNPv/////1sHWF6W0t6y1tbe8x5ef - npqSE8L/////qyRka8K3saqhqrPS7Zeemp+awsj/////p7aDSkQvJ6AdJDQVRpKelZqXG8j/////s7aD - XkJaREU3NzcuLxeZl56aRcH/////s7Y+bF5LMDpXTjNJTy5+kZmSq8H/////s7ZkYVIqSVRVRzMzOEkp - oI0ftsj/////p6IQI09HOEFsUSo3STM1HSkOe8H/////sydhXEJIP0kgPmQ+LjgcLRAQJMH/////wMgv - NE9eOjs7OzBpNB5kECSnwcD//////7qnqzYhKlEqNzsqDhCMwMGz/////////////7qzyB8eIyIOjLrB - p////////////////////6fBwba6q7P/////////////////////////usXF////////////8Pf/AMAB - /wCAAH8AAAA/AAAADwAAAAMAAAADAAAAAQAAAAEAgAABAMAAAQDgAAEA4AABAOAAAQDgAAEA4AABAOAA - AQDgAAEA4AABAOAAAQDwAAcA/gAfAP/AfwD/8f8AKAAAABAAAAAgAAAAAQAIAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAD/AADQ0NAA0NDRAB0cbAAbGl0AJCN3ADIwZAA1NFAAKCBTADQyNQBDQUMATk1OACYk - JQBILi4A/vb2APry8gD++voA+vb2AD0TEgC9q6oAfmRiAIxycAC1lJEAmH58AL6mpADErasA+u3sALSf - nQDRwL4Aybm3AN/QzgCzrKsA8NTOAMe0sAD24d0A+ubiAO3o5wBYPjgA8NzXANnJxQD+8e4A6eHfAO7N - xAD15uIAu7SyAPTt6wDrwrUAvKCXAO3JvADn3NgA39nXALVbNwDUt6wAv6ykAKWZlADqvKcAyHRKAG5V - SADqtpwA2KuUAPXr5gD+9vIA+vLuANOKYQCVY0cA4JhvAOmwkgBeTkUAnYyDALKppABpRS8A5qN7AOiq - hQDPmnsA7cSqAPbVwAD23s8A+ubaAPqMPwDzy68A+NvHAPvk1AD87eMA/vLqAPuYUAD6omEA+65zAPy4 - hADwtIcA9r2RALaRdQD2xJsA+sqjAPTStwD71bQA/NOrAPraugD97NwA/vbuAPry6gD++vYA+vbyAPzh - xADr0rcA/eXLANjErwBTLgIA/tuzAP3fvADy3MEA/uvUAP3y5QBMLAIANyADAFk2BAD+9uoAaUULAHZV - IABSPyIA8+PJAFY9EwD++vIA+vbuAPbz7QD369AA+vbpAPby5gD29fIA/PXbADUvFgD+/eUA/f3sAP7+ - 8gD+/vYA+vryAP7++gD6+vYA29+7APP85gDo+t4A7e/sAKzJoQB/onYAw+C8ACZXHgDY+dQAUIRNAPr+ - +gDH9sgAI3opAJbjnABQs1oAs/O4AIq3jgAqljcAX9BtAHfVggAMniEAL69CAD3KUgDLzcwA4PLvAM7W - 1gDK0tIA+fr6AIuMjAD4/f4At7u8AM3l7ACaw9IA7vn9AKWoqQCA1/sAYsr2AKLT6QCb2/wAt+b9AM7u - /gDg9P4AsLS2AES08ACAwuoAz9TXAGav4gBzdngAM5rlAMTIywBUnNYABWzRACd/1ABBh8oAys7SAL3A - wwCeoKIAkZKTAAdXvAAlZ7wAq62wAAVHrAAnT5UAl5iaAAM0mQACM/4ACTboACg6gQACK/cAFTvjAGpr - cAACJO0AHjKnAF5ljwACHuUACiTTABUsuwCHiqAAAhvcAAIW1gADIPsADij+AAwhwABFTIIAj5KsAAIV - 3AACEtIAAhLOAAMW0QACDuwAAgzWAAIOzgACDskAAxL8AAcSvAANGvAAAwrCAAMHqQAQF6sAJShnAFla - egBBQlcATU5lAAIH4AACAtQAAgLKABgbmAAhIogAPDxuAHh4lABhYWMAfHx9AGhoaQD///8AhISEAHBw - cABaWloAGBgYAAgICAD/wcfV0dzB/8Cz////////q/Ts2OLezLi4uPj//////9zgCQzT3unSKRCn+Kv/ - ///RzcqBCfPj0sEnLSTBpbr/zMq8xHjn5L7JvTYxEDKlq/bUysoNB8S5w8S9G44pf7j/0uvY58S7ucfE - xJ6Vjje4///C3d23tbW3xMSekJpKuP//wmRsr7Cyoam3npWabbj//8JvYUtYOElAQHySlXf4///CPlFm - OEFbQEBAj44O+P//yGQaTUhVbUBAQDKMZPj//8IyK0w6Oz4yL1oOEH/4///ByCwyKyA6NysOELbCpf// - /8CzwcgsMUxvtsjBuv/////////AxcHBq6v/////gT8AAAAfAAAABwAAAAEAAAAAAAAAAAAAgAAAAMAA - AADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADgAQAA/A8AACgAAAAwAAAAYAAAAAEAIAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8AAAAAAQAAAAcAAAARAAAAGwAA - ACEAAAAhAAAAHgAAABYAAAALAAAAAv///wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wAAAAACAAAAFwAA - ADcAAABWAQEAaAEBAGwAAABkAAAAVQAAAEUAAAA0AAAAHQAAAAj///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAA - ABUBAQBbDgwkpxcUSNAXFV7jFRVs6hUVa+kWFF7hFhNK0A0LIasBAQB4AAAAUQAAADkAAAAZAAAAAv// - /wD///8A////AP///wD///8AFg0KAhYNCgQWDQoEFg0KAf///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8AAQECMgwLJJoWFmbtExun/wYazv8BHez/AB77/wAe+/8BHOv/BhjQ/xEZqP8UFGbmDAsjqQAA - AGsAAABGAAAAHwAAAAT///8A////ABYNCgEWDQoHFg0KExYNChwWDQoZFg0KDhYNCgP///8A////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wABAQA4GhdP1xQYn/8BDuD/ABL4/wAW/v8AF/v/ABT2/wAV9v8AF/v/ABf9/wAR - 9v8BDtz/Ehal/xUUR9EBAQB0AAAATAAAAB3///8AFg0KAhYNCgwWDQogFg0KNBUMCUMXDQpBFg0KLxYN - ChcWDQoHFg0KAf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AAQDCTYaGVjfCRCv/wAF2v8AB93/AAHl/wAA4v8AANP/AADS/wAA - 0/8AANP/AADU/wAB1v8AAdr/AADY/wcPtf8WFlrdAQAAcAAAAEQHBQQbFg0KFRcOCyoTCgY/BgAAfwMA - AMAJAgB6FgwJTxYNCjwWDQokFg0KEBYNCgX///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AP///wD///8AAQEDFRYVR7sOE6n/AADf/xITZf86HxT/JhpJ/wsQ - kf8AB+H/AAXi/wAF3f8ABNz/AAPa/wAB1f8AANH/AADP/wAA0/8ID7P/FRREzAIBAmwIBANLFAwJOAoD - AGAVERCqZ2dn9aWmpv86OTnoCQQDow8HBGoXDQpHFg0KMRYNChoWDQoKFg0KAv///wABAAAAHRthABAX - swAAC8wAABHRABohggAzJi8ARigAAFEvAABTLgAAIieGAAAe8wD///8AEA8uiBgZkf8AAM//AADd/ycX - Iv9SJQD/TCMA/0ggAP8lG0r/AAzs/wAK5/8ACuT/AAji/wAF3f8AA9n/AADT/wAA0P8AAND/FBed/w4M - IKsFAQB1AgAAkCoqKu7Kysv////////////7/Pz/nJ2d/xEQEOoEAACNEgkGVhcOCzwWDQomFg0KEhYN - CgUJCRkAHB6JAAQPxQAADcoAABHOAAAV4wABG+EAHyBYAEUoAABXMgAASi8XAAgl2AABAAAMGxlg2gQL - tf8AANL/AADY/woSf/8mFyL/OxoA/0giAP9KIAD/ExmD/wAO/v8ADuz/AAzn/wAJ4/8AB97/AALZ/wAA - 0v8AANH/AgbH/xISV+gQDwzWgoOC/PLy8v///////////////////////////97e3v97e3v7Dw0N0QMA - AIMUCwdJFw4KNBYNChwWDQoKFg0KAgAMywAADsoAABLQAAAV1AAAGeEAAR/uACkjQgBVMgAAWjQAACEs - mwAJCRlLFhiI/gAAyv8AAND/AADU/wAE7P8AC+r/EBFQ/zoaAP9OJQD/QCIH/wAW3/8AEvn/ABDv/wAN - 6/8ACeP/AAXd/wAA1f8AAND/AADS/wsOiv9eXWr/19bT//Hr6//v6ur/+fj4//////////////////// - ////////xcbG/0xMTPkMCAevCgIAbhcNCjwWDQomFg0KEhYNCgYWDQoBABXVAAAj6QAAKfEAACn+AA4m - sABCJgAAXDcAAEszKAAWFEOcCxCi/wAA0f8AAND/AAHV/wAC2/8ACer/ABD4/xsUN/9MJQD/UicA/xIe - m/8AFv//ABP+/wAQ9v8AC+z/AAjf/wAD2f8AANL/AADR/wUHpf9YVn3/rqSf/8e1tf/Mu7v/3dHR//Lv - 7//8+/v///////////////////////////+2t7j/LS0t8AIAAJMRCAVOFw4KMRYNCh0WDQoLFg0KAwAz - /wAAMf8AADL/AAQv7QA0JR4AWDYAAF04AAAcG1vEAwqr/wAA0v8AAND/AAPb/wgV7f8IEvH/FCr9/wAX - sv83FwD/VCsA/0EmGv8sIFb/KB1T/ysaTv8OFJT/AAnr/wAE2/8AANP/AADR/wIDsf9DPnP/moiD/8Os - qf/CrKv/wa2t/9fJyf/h1tb/8u3t//38/P//////////////////////7e3t/4uLjP4VExPTAgAAgRMJ - BkAXDQonFg0KFRYNCggWDQoBADD/AAAw/wAnNY4AYD8FAGE+BwAeHGDVAQiu/wAA0f8BA9X/EB3w/wIO - /v8ADP//BBD+/xIo/v8nFg7/UCkA/1UsAP9UJwD/USUA/1QkAP8mGlb/AAnz/wAE2/8AANP/AADR/wAC - tv89Nm7/bGFk/3x0hP+znJn/w6yq/8++vf/Dr67/0sLB/+Xc2//18fD//fv7///+/v///v7///////// - ///R0dH/V1dW+hURELcJAgBpFQwJNRYNCh8WDQoOFg0KBAAw/wAIMOcAVkIuAHBNEgAdHF7PAQip/wAA - 1P8BCOr/BQ7t/wEM//8IF/7/AQz//wMQ//8YKJH/WTQA/1oyAP9TLAD/UikA/1MnAP8mHFv/AAjw/wAE - 2/8AANP/AADR/wEEtP8sKmb/ID16/wApkP8yPW3/iXd4/9PBvf/Cq6r/vqio/8Ovrv/TxcT/59/e//f0 - 8//9/Pv///38///+/f///////////8rJyf8wMC/2AgAAog0EAUwXDQonFg0KFhYNCggWDQoBOzleAHVT - FgAbGVawBwyc/wEB0v8NGOv/Chr//wIN//8BDv//Ag7//wcX//8FJun/TTcg/2tDAf9XNgX/FR6V/wkT - nP8AELr/AAfk/wAC2f8AANL/AADR/wUIo/8jL3f/BTqd/wAqov8ALJ//CDSM/4eRrv+Qe33/wKSe/8Os - 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 - 0QD///8A////AP///wD///8A////AP///wD///8AX19g///////////////x///z2f//58b//9qy//zK - m/+Pmpv/Y9n+/27Y+f+S2/T/wef7/7vq//+v5f//peL//5/f//+c3v//mN7//+37///S3NX/wufv/5TS - 7v9zx/b/ZbfS/1GITv+B6Iz/Y8pv/zCVN/8fkir/DY0e/wiOGf8Jkhv/CZge/wmmI/8rXiD/upia//Di - 4P9bWVr//fHmAPzl0AD///8A////AP///wD///8A////AP///wD///8AX19g+P///////////vLn//zm - 0f/73cD/+9Su//fGmf+Rmpv/vO7+/+36///s+f//2/X//9Dx///J7v//xe3//8Ls//+/7P//uu3///b/ - //+IhoX/op2U/9Hn4//H7vn/mM7S/1KCTf+N5ZP/c9R9/0SoSv8ypD3/IZ8w/xCbI/8Jmx//Cp8g/wut - Jf8ycSz/u5qe//Dj4f9dXF3//fHkAPzlzwD///8A////AP///wD///8A////AP///wD///8AXl5f8f// - /////////fHm//zl0P/73L//+9Ot//fImv+fmI//0srC/+Tn6P/2////9f///+v8///l+f//4Pj//935 - ///b8vz/4tbM///57//ktZf/rIFo/42Adv+rsab/rMqr/1aEUf+X4Jr/gdyI/1S0Wf9EsU3/Mq1A/yGq - NP8RqCf/DKkl/wy2Kf8ydS3/u5ue//Dj4v9hX2D//e/iAPzlzQD///8A////AP///wD///8A////AP// - /wD///8AXl5f6////////////fHk//zlz//73L3/+tKs//nIm//ptof/vpp7/5yMf/+gmpb/0NLS//// - ////////+/////Xu5//7u47//7mI///////uz7r/1pRq/9ibcv+4kHP/lI12/11/WP+e2J3/k+WW/2jD - av9VwF3/RrxS/za6Rv8luDn/E7Ut/w3BLP8zey//upuf//Dl4/9lY2T//e/hAPviywD///8A////AP// - /wD///8A////AP///wD///8AXl5e5v///////////e/i//zlzf/62rv/+NCq//bFmv/0vY3/9baD/+ir - e/+5lXr/no2B/4ODhP/OxsH//8yl//+8jv//4Mj///Po///47v/67OP/7Mm1/96phf/dpH3/36mE/7WY - fv+rrY3/reCq/5vqof9614D/Wcxi/0bHVP83xkr/J8U+/xfON/8zgDH/vJ+i//Hn5/9oZ2j//e7gAPvi - zgD///8A////AP///wD///8A////AP///wD///8AXl1e3////////////e/h//viy//52bv/+NCt//XI - ov/0wpr/8r2T//K5jv/ztYr/566I/6WSh//ip4L//9a5///t3///0bD//59Y//2JNf/KckD/3qqM/+7Q - vP/owqX/47OO/+Wzjv/erY3/zLeU/8Xot/+3+rz/lOub/3DdfP9O1F//N9FN/yjcRv88izv/ybC0//bu - 7f9vbm7//O7iAPvl0wD///8A////AP///wD///8A////AP///wD///8AXV1e2f////////7//e7g//vi - zv/528H/+NS3//bOrv/0yab/88Wi//LBn//yv57/67+l/+vLt///4sr//9S0//2VS//8hjD//489//+e - U//GZzX/wmU3/8+EXf/syLL/79C4/+rCof/qv5r/776X/+biuv/Q/9D/x/vH/7n5vv+f8an/auJ5/z3l - WP9Ll0n/2cbJ//j09P91dHX//O/lAPro2AD///8A////AP///wD///8A////AP///wD///8AXFxd0v// - //////3//O7i//vl0//538n/+NjA//bTuf/10LX/9c2x//PNs//218T/9uTa//Payv/+rXX/+4g1//yH - Mv//lEb//55V//+pY//Jbz//xms9/8ZqPP/Ibj7/3qSE//PYxf/z28P/8s+s//Lsyf/k/93/3PzV/9H8 - zv/I/Mr/vP3D/47WmP92jG3/4dTU//j09P95env//fHnAPvq3gD///8A////AP///wD///8A////AP// - /wD///8AXFxdzP////////7//O/l//ro2P/64tD/+N3J//faxf/218L/99rG//jj1//549X/58Kt/5GF - fP/+gyr//I09//2XTP//n1n//6pl//+ycv/NdUT/x24//8hwQP/KckP/zXVF/9J8S//ot5T/9di///z2 - 3v/0/+j/7v/i/+j/4P/Q7Mz/orGd/42Oh/+OiYj/9PDt//f08v9+fn///fPrAPvu5AD///8A////AP// - /wD///8A////AP///wD///8AW1tcxv////////7//fHn//vq3v/659j/+ePT//jj1P/66d//++7l//XW - xP/oonr/2I1l/42Efv/+lkn//ZtT//+jX///qmn//7Jz//++hv/Pek3/x29A/8lxQ//MdUb/0HxM/9aE - VP/ci1r/6KR3///t2P////v/9fjm/8XHuf+mo5r/urSu/+jf2v/59O3/9PHr//n38/+BgoL//fXvAP30 - 7gD///8A////AP///wD///8A////AP///wD///8AW1tcv////////////fPr//vu5P/76+L//O/m//zy - 7P/33s//7LSU/+Wedf/kl2//25Z0/4mEgf//olv//6Zj//+sbv/7tHr//MWQ///Vq//kpn3/14xh/813 - Sf/MdUf/0HxN/9eGVv/fkmL/6qBu/8Gvof/Z1tb/0s3J/9fTy//r5Nj/+vXp//fz6f/28ur/9fLs//r4 - 8/+DhIT//vv5APzy7AD///8A////AP///wD///8A////AP///wD///8AWlpbuf///////////fXv//31 - 8P/99PD/+urg//HHr//pqIP/5p95/+Whff/loH3/3Jx//4WEg///rW3//LJ5//y/jP/9zZz//9al///b - sP//4rz//+rN//3lzv/jqYj/0H9U/9B+Uf/ZjF3/6KV0/5iNhP++sbD/4tjT//r17v/69u7/+vXq//j1 - 6P/39Or/9vTs//z68/+DhYX/9trKAO+/owD///8A////AP///wD///8A////AP///wD///8AWlpas/// - /////////vz6//z07//11MD/6rCO/+mqh//pqon/6KqK/+epif/mp4j/15+H/3l6e//+wIz//9Km///Y - q///2Kn//9eo///bsP//4Lz//+fI///t1f//9OP///3z/+rFrf/YlnL/4qR8/5yRiv/w6OX/+PLt//Xv - 6v/28ez/+PTv//r37f/49ur/+Pbr//788/+DhIX/9MChAO+9ogD///8A////AP///wD///8A////AP// - /wD///8AWVlarP////////7/9tvM/++/o//ss5P/67OV/+uzlv/qspb/6bGV/+ivlf/orZT/z6CM/3Fw - cP+PiIH/2MGk///gtf//3rL//9yx///cs///4r7//+fI///s1P//8t7///nq////+v/29vP/sqKb/29u - bv/38Ov/9/Hs//fx7P/38+7/9vPu//f18f/59/H/+fju////9P+Cg4T/x6ycAPDGsAD///8A////AP// - /wD///8A////AP///wD///8AgIKD/5WUkv/qybb/9MCh/++9ov/uvaP/7Lyi/+y6ov/ruaH/6rig/+q3 - oP/ptZ//6LOe/+exnf+/npT/loqF/6eZjv/aw6r//966///iuv//5MH//+jK///t1P//9OD/++7g/8rD - vf+gmpn/oJmY/93Y0//58+7/+PLu//jz7//39O//9/Xw//f28f/59/P///76//Tz7P+AgoP/WVlaAHly - bwD///8A////AP///wD///8A////AP///wD///8AWFhZQGtra9l/f37+oZaP/9Czo//vxrD/8saw/+7C - rv/twK3/7L+s/+u/rP/qvav/67uq/+m6qv/ruaj/6Lan/82nnP+plY//opaQ/9K+rP/+5MT//+zP///v - 1v/l2Mj/r6ej/7Stq//j3Nf//fbx//r07//58+//+PXw//j18f/49fH/+vjz///++v/8+vb/wb+9/3t7 - fO+AgoP+////AFNUVQD///8A////AP///wD///8A////AP///wD///8A////AFhYWARSVFU3b3Bxqn58 - fPKLh4T/vamf//DMvP/3z77/8cq6/+3Ht//txbf/7MS2/+zDtv/rwrX/68C1/+q/s//qvrL/5rux/8ms - pP/AqqL/08Cz/8vAt/+9trP/5N7a//328f/79PD/+vXw//n18P/69vH/+fby//r49P////v///76/7+9 - vP+AgoLtfH5/3Xp7fG7///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AFNUVRZhY2SJdnd44YaEhPuimJT/3MK4//fVyv/z0sX/8M7D/+7Mwf/uy8H/7cvB/+3J - wP/syMD/7Me//+zGvv/rxLz/07Ot/9nLx//++fX/+/by//r18f/69vL/+vfz//r38//7+PT///36//37 - +P/Ky8j/iImJ7Xp8feV7fX5q////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AFFTVCBtbm+xfH19+pGNjP/HtrH/8NbP//jd - 1f/z19D/8NTN//DUzf/w0s3/79LM/+/Qy//u0Mv/7M3I//Pk4P/8+ff//Pfz//z49P/7+PT//Pj1///+ - +v////7/2NjX/4eIifp7fH3le31+av///wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AVFVVFWdo - aW96envShYOD+q6jof/w3Nf//ujk//jj3v/039r/893Z//Pd2f/z3Nj/8drW//br5//++/n//Pn2//36 - 9////vv//////9jX1f+Li4v6fX5/43V3d3v///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8AbnBxTHV2d8yAgYLynpmZ/drMyv/+7+z//O/s//jq5//36eb/9ufk//ny - 8P/+/fv///37///////g4N//m5yb+nx+f+x0dnZ9////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wBSU1MCdXZ3gXt8feyKiIj8wry7//bx - 7////v3//vf3//76+f//////7u7u/5+goP98fn/wc3V1g////wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wBtbm9Qent7vYGCguKcmZj/5d/e/+/v7/+dnp7/f4GC73JzdI1UVFQE////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AICCgzBzdHWTf4CA8oKDg/xub2+j////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD+AH////8AAPwA - P////wAA+AAPh///AADwAAYD//8AAOAABAD//wAAwAAAAH//AACAAAAAH/8AAIAAAAAP/wAAAAAAAAP/ - AAAAAAAAAP8AAAAAAAAAfwAAAAAAAAAfAAAAAAAAAA8AAAAAAAAAAwAAAAAAAAABAAAAAAAAAAEAAAAA - AAAAAQAAgAAAAAABAACAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADwAAAAAAMAAPgAAAAAAwAA/gAAAAAD - AAD+AAAAAAMAAP4AAAAAAwAA/gAAAAADAAD+AAAAAAMAAP4AAAAAAwAA/gAAAAADAAD+AAAAAAMAAP4A - AAAAAwAA/gAAAAADAAD+AAAAAAMAAP4AAAAAAwAA/gAAAAADAAD+AAAAAAMAAP4AAAAAAwAA/gAAAAAD - AAD+AAAAAAMAAP8AAAAABwAA/+AAAAAfAAD//AAAAH8AAP//AAAB/wAA///gAAf/AAD///gAH/8AAP// - /wA//wAA////wf//AAAoAAAAIAAAAEAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP// - /wD///8AlJedMwEAADAKBxiMDw89xhIUVdoQEU7UDAwuuAYECIIAAABLAQEBHxoaGgUsLCwILCwsEiws - LCAsLCwqLCwsKCwsLBssLCwNLCwsBiwsLAIsLCwB////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AJSXnTMJCBhqExh/6AwgzP8HJub/Bifo/wcl6P8LH9D/Fx6M+xISScoEAwNtCwsLNSkp - KSEsLCw1LCwsTCwsLF0rKytbLCwsRCwsLCssLCwXLCwsCiwsLAQsLCwB////AP///wD///8A////AP// - /wD///8A////AP///wCUl50zDw4sgRUbnv8SHbv/BRvr/wAa/f8AHOz/ABni/wAV5v8CEuL/DhWt/x4e - Z+sMCw2JHh0dYSoqKmgsLCuULCws/CsrK/wkISCQKysrWSwsLDssLCwjLCwsESwsLAcsLCwCLCwsAf// - /wD///8A////AP///wD///8A////AAkIFUwPFqn9ExiC/y8iJP8zJEP/FSC6/wId9v8AGOP/ABLO/wAO - 1f8BDd7/DBKk/x0cV+obGhm5JyYm2EtJSfCrq6n+1tTU/2FgYP8jIiLbKCYmdSwsLE4sLCwyLCwsHCws - LA0sLCwFLCwsAiwsLAH///8A////AP///wAUGpshFhd52QAK3P8TGJX/KyIf/zIiAP8xJjj/FS3L/wYx - //8EKO3/ARjV/wAM1f8ACtD/IiSX/yEgKPSdnJn75OPi//7+/v///fz/8e/u/7W0s/9aWVn8JSQkyisq - KmMsLCxELCwsKiwsLBUsLCwKLCwsAywsLAH///8A////ABQam0oPFaj/AAvR/wUT6v8VHqT/HB0k/zgj - AP8tM3f/GELu/wg2//8BHe3/ABHR/wAN1v8UGqr/OTl5/9HMx//NwcD/4NnX//Lw7////v3///37/+7s - 6/+koqL9Pj498CYlJZ4sLCxXLCwsOiwsLCIsLCwQLCwsBywsLAIsLCwBFBqbfQcPu/8AEs7/ACL2/wAr - //8TJon/KB4O/zYoHP8xMnX/Iy6h/w4iwP8AFtz/AA3d/w8VrP8lJof/m4yG/6KZo//MvLv/6ePi/93W - 1P/z8fD///79//r49v/i4N7/i4qJ/CwrK98qKSmELCwsTCwsLDAsLCwaLCwsCywsLAQUGpt9BA7D/wMm - 5/8FQvv/AD///wg16/8dJlz/KiIM/04tAv9eNAb/LShy/wEW6P8ADOz/DhSp/yAhhf9CSWX/JEFv/2Bt - h//q4+P/yLq5/8zBvv/l393////////9/f/6+Pf/2NbU/25tbPcnJia8KysrXiwsLD0sLCwgLCwsDBQa - m30KFLz/Ay3y/wdO/v8HUf//AEP//xUtj/85LBr/VTkS/zcwaP8LHsf/ABPo/wAM3v8SGKn/IyiD/yRT - m/8SVaT/JlSJ/7fC0f+bk5z/xrW0/8W3tP/Wzcr/9/Ty/////////vz/9fPx/8HAv/5UU1LvJyUlkSws - LDMsLCwUFBqbShMZm/4BLPH/Ak7//wRV//8GUf//Ej/g/zYySv9fQxH/Q0eJ/xc05v8DFuL/AAjS/x0i - o/8uRo7/NX3H/wtRsf8gccb/vdPn/ylRg/9PYn//wK6r/8i5t//Yz8z//fj3//Xw7v/7+fj///38/+zq - 6P+rqaf6U1FRySclJB0UGpsaHBtj0Agfx/8AOfv/Ak3//wZO/v8APf//IDix/z82Ov9xUAj/cVc0/yQl - rf8ABsT/MTOU/zZxsP86kNz/CEyv/xhivP/A2PD/Lo7b/ydrqP8iSn3/jYyW/+HX1P/p4N7/2tDN/+Pd - 2v/59fP///38//n49v/cy8L/U1BO/////wARECs/HB2D/AkhzP8BMPH/ADX3/wAv+/8AJv//Fym8/zow - Sv9SPDT/KSSC/yImpP8sQYv/Q6Xi/z6g5/8FSa7/D1a1/8jb8P8jfM7/JInY/2OcyP8iSn3/v6Ch/4+S - gf/ItrX/08bD/9/W1P/z6eT/7+DY/+ra0v9eXV3/////AP///wAZF0plHBx5/BAcsf8GHND/AxnV/wIW - 4P8BEuv/BRXP/xAam/80Moj/LkCP/0Wd1P9MvPX/QKzs/wNGrf8KTq//z97x/xhtxv8ggNL/J43b/2xb - U/9XllP/LYo6/zFjNP+clov/wq+u/9zKxP/Utar/17+1/1lYWPb///8A////AP///wAXFkdJHRtjzhcY - gf4RFY7/FBiM/w8SjP8SFoz/LzCS/0Zrpv9gveb/RLn0/0Ct6/87ouT/BEiv/wdGq//V4fL/FGXA/xx3 - zP8kh9b/a2NJ/1HZZv85rkj/NaBE/yVzMP9QbEv/sZuS/9fEvv/bycT/T09P7v///wD///8A////AP// - /wAUE0gIgIKD/46MqP9xbJX/eW2N/6aJif+NiYT/VK3l/0Gi4/9CoOD/arHl/4zN9P+Dyfb/KXnO/9zm - 9P8QXLr/F27G/yKB0v9oUz7/Vttq/z24UP81p0T/N6ZI/y+PPP8xdjf/hYhz/97S0f9PT0/m////AP// - /wD///8A////AP///wCAgoP////9///87f//6sz//96v/3d1c/9Bldv/VZzb/8Dg9f/c8///2/T//9Xx - //+96///9/r6/3Ok0f8fccb/IHnL/2JDM/9Y32z/PbZP/y+cPv83rUf/P71S/zuxTf9Bajv/4dTU/05O - Tt////8A////AP///wD///8A////AICBgvf7+Pb///Xp//3iyP/40Kj/fnp2/8PZ3//w+v7/7f3//+n6 - ///r+///4PX7/8HFxf/w8O//aT8z/3VtcP9elbf/aTgq/17hcP81pkT/K5I4/zKiQP86skv/QcJU/1dt - TP/i1tb/TU1N1////wD///8A////AP///wD///8Af4GB7/r39f//8ub//OHG/+vGpv9xcG//oYp3/7Cd - jf/Qz8v/1dTQ/7iupP+wm4n/1ryo//////+aaFL/ckYz/2VDN/9sPS//YsZo/yqONf8miDL/LZc6/zSn - Rf88uE//V25M/+PY2P9NTU7P////AP///wD///8A////AP///wB/gIHn+vb0///x4//738P/+dCs//bD - mP/DnX//pIh0/4Bxaf+VhXf/xLCi//ri0f//4Mr/9enm//nx7f/z28v/ypt6/4pgS/+OfGb/pNyi/zeR - P/8ojDT/L5w+/zetR/9Zc1D/5t3d/05OTsf///8A////AP///wD///8A////AH1/gN/49fP///Di//rf - x//41Lb/9cuq//PFov/zwZ//xqGN//LXxP/+3MT/+7N+//2fV/+vUDj/vm5T/+vMvP/46+P/+te+/6yK - df/c5sT/z/vQ/6Pdpv9aqmH/MqJB/1F1Tf/q5OT/T09Pv////wD///8A////AP///wD///8AfH5/1/f1 - 8v//8eb/+uTR//jbxP/21b3/9tfD//nl2P/q2dD/7b2c//yUSv/6nVj//65w/6xNOP+zWDz/yXZM/9GL - Zv/xy7P/7N/X//fz6f/u9uX/3u3W/8TWu/+AnHf/VXFM/+Ti3/9QUFC3////AP///wD///8A////AP// - /wB7fX7P9/Xy///06v/66Nv/+ubX//rq3//66d//88u1/65nRv/bkFz//qVj//yudP/9uoX/p0c3/6pM - OP/Bb07/zX5V/+OSX/+4gmr//PXt//P07v+otJ7/jJh+/5abhf/r6N//6ufj/1NTU6////8A////AP// - /wD///8A////AHp8fcf39fL///fx//z07v/88uz/99/Q/+20lf/lmnP/tWM+/+Ojd//+tHz/+saZ//ng - x//84sf/7MKo/9COcf/Dd1n/z4Ni/6hdRv/Gu6z/lpqE/77EtP/s6+T/+vfv//r27//t6+b/V1dWp/// - /wD///8A////AP///wD///8AeXt8v/n5+f//+/j/+urh//DDqP/oqYb/6KiH/+Wlh/+6Yjr/1qCD//bi - z//47+T/9/Hq//nt4P/67uH/+u/k/+rNvv/UlHf/rGFM/9fPw//b18z/9/Ht//n28f/8+vX//fz2//Px - 6/9iYmGi////AP///wD///8A////AP///wB6e3zB9ebe//3axv/wupv/7LaZ/+q2nP/qtZv/46mR/82G - aP/Mim3/4r6q//Hi1f/16+D/+PDl//jw5v/57d//7NbH/9a2pP+tYU3/7+HZ//n07//38+7/9/Tw//n4 - 8//6+vb/19fV/4qMjeD///8A////AP///wD///8A////AIeJi9iIiIn1p5aO/ty6qP/3y7T/8sax/+3A - rf/rvqv/5bKe/+Cnk//XnIf/zIty/9ywm//oy73/8NzO/97Es/++mIb/0bap//bv6v/69fH/+fTv//n2 - 8v/29fL/zMzK/5ucnf6GiInkf4GCO////wD///8A////AP///wD///8A////AIaIihSChIaGhIWG5JKN - jPW7qaL/9NDC//fSxP/wzL7/7ci8/+3Gu//sw7n/3qyd/9KXgf/UoIz/28W6//jy7v/89/P/+/bx//v3 - 8//09O//y8zK/5+goP+IiovldXZ3Ov///wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wCJi40Dg4WHQoGDhLiJiYrwoJmY/NvFv//73tf/9trT//HVzv/v0sz/79DL/+7Oyf/47On//fn2//z5 - 9f/z8+//ycrL/6KjpP+KjI3ic3R2Pf///wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AImLjQ6BgoRvhYaH3o6Oj/i3sK//49TS//7s6f/45eL/9ePf//r0 - 8f/y8vL/xsjI/6Slp/+Pj5Dlc3R0Qf///wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wCJi40CgYOFJ4KDhauJiovpmpma+8G+ - v//w7+//xMXF/6aoqf+Sk5TldHV1Q////wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AImL - jQmBgoRdhIWGyImLjf+TlJbrdXd3R////wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wCJi40BiYuNA////wD///8A////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AOAAAP/AAAB/gAAAH4AAAAcAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAMAA - AADgAAAA8AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA/AAAA/8A - AA//4AA///gA////A////8//KAAAABgAAAAwAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// - /wD///8A////AP///wAAAAAWAgAANgIAADoAAAAmAAAADP///wD///8ALS0tASwsLAYsLCwHLCwsBP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8Af4GBIQ8PJWMIDU21Dhhy3Q0W - cNsMDz62BgUNcwICACMhISEGLS0tEiwsLCUsLCwqLC0tISwsLA8sLCwELCwsAf///wD///8A////AP// - /wD///8A////AP///wCChIYpHR1QnAoVrPoEIP3/AiL6/wMf7/8JGtn/EhaP9Q8OKKUVFA9IKSkpQScn - J3kiIiKyIiEgfCgpKTcsLCwaLCwsCSwsLAL///8A////AP///wD///8A////AIaIhwUYGleNDBKO/yoi - Tv8fII3/BB3v/wAY5/8AENr/Ag/e/xMWlv8ZFyrBJCMetlhYWOeoqKf/c3Jx8yYlJbIiICBdKSkpKy0t - LREsLCwF////AP///wD///8A////AICCj4IDCaXzCRHE/yggL/81IwD/Iy2V/wg1//8BJO7/AA3a/wUO - z/8cHmj/hYJ+/uXh3////////Pr6/7m5uP9fXV3sJiUlmiMjI0stLS0gLCwsDiwsLAP///8A////AGRl - mcwEDb//ABTw/wkjz/8jHyT/NSom/yU6sf8OLNr/ARXZ/wAN1P8XG5f/loyb/829t//l29n/9PDv//// - ///z8vL/o6Kg/0tKSdIgHx+AJycnOSsrKxgsLCwJLCwsAjU1kdACE9D/Azb3/wA+//8RK6L/KyIQ/0wu - Ef8/LUv/CBnS/wAN5v8TFpn/PkFu/0RXdf+pqrX/3c/L/9vPyv/39PP//////+Xk4/+Rj473OTg4tiEg - IVomJiYiLCwsCVlZlNMFG9H/BEj//wRV//8HPuT/MS07/1g6DP8oL5r/ABXu/wIM2P8dIJP/JEyW/wZM - nf9qkLj/mpqo/6ianf/Vxb//6+bk////////////1NLS/3FwbuU1NDSDJicnE4KCkIEOGqP6ADv8/wJV - //8ETP//ITih/1RAI/9bUVv/ICi8/wUIxf8uPpf/NXvD/wVVuv9todv/XJPE/zBcjP+JiJb/2MvL//ft - 7P/v6Ob////+//z8+/+/urf+UEtJn36AhQYUE0+ZDiLB/wE19v8AN/7/ASr9/x8qof9TPSz/OSpr/xoZ - nP87cLL/PqLn/wBKsf9sltH/Yafl/yCAzf86aJf/mI6U/6unl//Kurn/6Nvb//fu6v/66eD/g316/P// - /wASEC8VHBlgphIan/wAEb7/AA7K/wAL0v8EDqv/LjCJ/0Nxrf9Htez/Oqns/wA8qf9skMz/XJjX/xF/ - 3f9IdJv/XI5K/y2POv9Se1H/n5eP/9m9uf/ix73/d3Jw6P///wD///8AEhBDCyEeUndUVYr/RkWO/0hA - hP9kVoX/VYW4/0ey6/9FrOr/YrXr/zR9z/92n9f/WJDT/wVu1P9Ga47/XrdS/zrAUP8qmTv/L3o4/3OF - Zf/Qwrz/dnFy4P///wD///8A////AP///wC5urT/6+rq/+7ewP/Kron/WJbB/2q18f+94Pj/2PX//8Lw - ///M6Pj/iqjM/xt1zf9DXIX/X7BQ/zu+Uf8zpEL/N7hM/yyQOP+epJL/fnh72f///wD///8A////AP// - /wC4uLf////8///uzf+4oYn/kZyh/9/l4//y/Pv/4+zq/8zQzP/n5uL/oH5y/1tWW/9eUV3/XalR/yum - P/8qkzf/N7VK/zqlRv+jo5b/fXd60v///wD///8A////AP///wC0s7T6//zy//3hxP/atpj/r491/6OL - ef+lnJX/t6qf/9i+q//56d7/4dDJ/7aQev+KV0H/eIZa/1yuYf8iiC7/KJ85/zSZP/+oqpz/fnl8y/// - /wD///8A////AP///wCysrP0//vw//vfxv/90q//9cWg/9ewlv/Fq5z/78uy///Djv/hjmL/yIVz//PT - wf/v0r7/xKGR/8/hvv+m4Kr/aLlv/y+KOP+grJr/gn2Aw////wD///8A////AP///wCxsrLu//vz//vl - 0//43Mf/++PS//PbzP/ftZr/+6Jh//+oX//Tdkr/nzgj/8RyTP/lp4L/58i2//758v/s9eX/r8Ck/3iP - bP+7w7P/fnt8vP///wD///8A////AP///wCvsbDn///5//3z6v/77uT/99fF/9uZef/Ac0j/+atw//7E - kf/rvJ//z454/8V6W//Pe1L/vXha/9DEuP+1vKz/ub6u/93a0P//+/X/eXh2s////wD///8A////AP// - /wCzsrLg//////vm2f/uv6T/6qyK/9mNav/Dd1L/782y//zx4//9+e3///Xl//Pf0f/dq5X/smdP/8e4 - qf/b2tD//fn1//////////z/iIiGvP///wD///8A////AP///wCin5/24sy///LApP/1vaD/7bmg/+Gp - kf/RjXL/2amU/+XJuf/x4tX/+fHm/+/f0f/Vt6b/yZqK//Hi2///+/f///z3/+/v6//Q0c//kpOUuP// - /wD///8A////AP///wCDholliISEqqmblPfIr6T/7Me4//fOvf/uw7P/5rSl/9ymlf/ap5T/3bOg/9rB - s//i0Mf//Pfy////+//w7+r/zMzK/5qbm+F9f4B4f4GCIv///wD///8A////AP///wD///8AgoWHB3+E - hyyAhIWAlpKR07SopPnjy8T/9NnT//jb1P/yzcX/6MO6//ns6P//////8/Lv/8nJyP+foaHlfX6Adnp8 - fR////8A////AP///wD///8A////AP///wD///8A////AP///wD///8AgYWHBX+ChFOHiIqjnpyc4ci/ - vv/l2dj/+O3r/+7r6v/KzM3/m52e1IODhIR6fHwT////AP///wD///8A////AP///wD///8A////AP// - /wD///8A////AP///wD///8A////AP///wD///8AfoCCL4GEhWuNjo+/rq+x/56goeiIiYp5fH1+If// - /wD///8A////AP///wD///8A////APBh/wDAAD8AgAAfAAAADwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAA - AACAAAAAwAAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPgAAwD/AA8A/+A/ACgA - AAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8ABgYZRAcThMMHHbPwCRuk6wkO - V7YCAgQ9////AGNhYCVhYGBL////AP///wD///8A////AP///wD///8ABQUaOBQXifIrJHD/CBvM/wAX - 6f8DFNv/CQ5y1XJycv9ycnL/cnJy/2loaM9bWVkQ////AP///wD///8A////AA4RbLIGE83/LiI1/zcn - J/8CIOX/ABbg/wEKwP9WWX/35uHc//////+6urr+dnV18l1bW1j///8A////AP///wASFpbnACrv/wBI - 9f8+LBn/Oyov/xYgpf8AC9b/RGGi/6OZpv/cxcb/8uvr/+rq6v+hoaH7dXV1yFVTUw7///8AExaE0QBP - +f8AX/3/I0ir/041Gf8PHbn/AAzL/zuJ0P8OQZn/JXzL/6iYnf/q3d7/+/v7/9jY2P+IiIj2cnJyeRIR - Qm8HHc3/AEn9/wRA8v9GNzT/OCxK/zZjxf83oej/F1mu/x1nuf8lfMv/q5ae/42gfv/v5OX/9vb2/3Jy - cv8TEDUHFhZpmggVtPoAD9L/BBS4/zRnr/9Rj9X/Mp7o/xdYrP8dZrj/HGa4/zSuR/80biv/bZhl/+a9 - o/93d3b+////AP///wCSkpD/m5W4/42Xt/9ftO3/eMHx/3jB8f9wreD/LHG+/yZpuP8ytUX/Hmwb/zOK - Nf/qx6z/eHd3/v///wD///8AkpKQ////8P//5bv/otb2/7zi+f/i9f7/4fD3/6K5zf9wreD/LrNB/x9v - Hf8xijT/6t/E/3l5eP7///8A////AJGRkPX78eb//Ovc//rZv//ytIb/tXZO/8qXdf+caUn/kV9C/+/n - 0v9Jkkf/NHox//Lhyv97enr+////AP///wCRkY/r+vDo//vk0v/73cb/yoRV/+2bYP/xv5v/lmJE/5Vi - RP+XZUj/zePC/3+td//4+PD/gYGA/v///wD///8AkJCO4v76+P/47ur/+unc/+SmiP/tm2D/+NvG/6J2 - XP+RX0L/kV9C/93g1v/w8Oz//vv1/3p6ev7///8A////AJWUkvve19P/9efh//Lc0f/otp7/36uN//ru - 6f/m2dL/waSS/6uDbP/6+fn//Pv6//Py8P96enn+////AP///wCTk5HKkpGP6ru1sv3j19L+9Obf//HZ - zv/ku6H/5L2k//Xq4//6+Pb/+/v7/9DPzv+VlJL4jIyK/////wD///8A////AKKkpGaho6Kzjo6Mr5SS - kOe7t7X+59vX//Hb0f/98OX/1NPS/5iXlfSNjIq0lJORLf///wD///8A////AP///wD///8A////AP// - /wCipKRmnJycoI+Pjbycm5rrp6ak7IiHhpJQUFAB////AP///wD///8AgT8AAAAPAAAABwAAAAEAAAAA - AAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADgAQAA/AcAAA== + AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAABMLAAATCwAAAAAAAAAA + AAAxJKXfMSSl8jEkpe4uIqHuMCSk7lhC3e5eSOfuWELe7llD3+5ZQ9/uWUPf7llD3+5ZQ9/uWUPf7llD + 3+5ZQ9/uWUPf7llD3+5ZQ9/uWUPf7llD3+5ZQ9/uW0Th7ldC3e43KK3uVkDa7l5G5e5YQ97uYEnp7j4v + uO4hF47uQDC77mBI6e5ZQ9/uWUPf7llD3+5YQt3uW0Xi7mBJ6u5fSOfuWUPf7lhC3u5ZQ9/uWUPf7llD + 3+5ZQ9/uWUPf8llD398xJKX/MCOi/zIlqP84Kbz/LyKv/0Ewyf9oTvz/X0jm/19H5/9fR+f/X0fn/19H + 5/9fR+f/X0fn/19H5/9fR+f/X0fn/19H5/9fR+f/X0fn/19H5/9fR+f/Xkfm/2hO8v9MOdP/Py7H/2ZN + 9/9eR+X/ZUzx/1dB2f8rH6T/PS3D/2JK7P9gSOj/X0fn/19H5/9hSev/WELc/0w5zv9WQen/ZEv7/2FJ + 6/9eR+X/X0fn/19I6P9aROH/WELe/1lD3/8xJKXuMiWp/zAjoP8pHov/KR6L/yEYfv9GM7//W0To/1A8 + 0P9RPdT/UT3U/1E91P9RPdT/UT3U/1E91P9RPdT/UT3U/1E91P9RPdT/UT3U/1E91P9RPdP/UT3T/11G + 9f9PO8z/HBRu/z8vrf9ZQ+X/UT3U/1lD4/8tIY7/Jx2H/1VA3f9TPtX/UT3U/1E91P9WQdv/SDbK/ycd + kf8bFG//OSuk/1hC4P9SPtX/UT3U/1E90/9YQt3/WkTh/1lD3+4xJKXuOCm8/ykeiv8AAAD/AAAA/wAA + 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 + AP8AAAD/AAAA/wAAAP8rvdT/Nu3//zj2//8lobv/AAAA/wAAAP8AAAD/AAAA/wAAAP8KLTH/NOX//zLb + //86/f//F2Z0/wAAAP8AAAD/I5en/yGOm/8AAAD/AAAA/xx6hv86/P//Mtz//zXh//8VKlD/AAAA/wAA + AP8CAQf/HhZk/zkqwv81KLT/LiKf/zMmtf9aROb/WkTf/0Ixve4xJKXuNym6/ykejP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8rvdT/Nu3//zj2//8lobv/AAAA/wAAAP8AAAD/AAAA/wAA + AP8KLTH/NOX//zLb//86/f//F2Z0/wAAAP8AAAD/M+D8/zDU8f8AAAD/AAAA/xx6hv86/P//M93//zLg + /f8EIhf/BwIY/xsUXP8xJKX/OyvH/zEkpv81J7L/OivE/yYdgv81KJ//MyWt/ygdmO4xJKXuNym6/yke + jP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8rvdT/Nu3//zj2//8lobv/AAAA/wAA + AP8AAAD/AAAA/wAAAP8KLTH/NOX//zLb//86/f//F2d1/wAAAP8NPEH/Ofr//zj1//8LLjH/AAAA/xx7 + h/86/P//Mt3//zDe+f8IJCb/Jwh7/z4t0P81J7T/MCOg/zorxP8yJar/FA9D/wAAAP8gF3f/Nii6/zIl + pu4xJKXuNym6/ykejP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8rvdT/Nu3//zj2 + //8lobv/AAAA/wAAAP8AAAD/AAAA/wAAAP8KLTH/NOb//zLb//86/f//F2Zz/wAAAP8ilan/Ovz//zv/ + //8giJr/AAAA/xx6hv86/P//Mt3//zPg//8AHg3/FwFH/zgqvf8xJaf/PCzK/ykdiP8EAw7/AAAA/wAA + AP8qH4//Nym6/zEkpe4xJKXuNym6/ykejP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8rvdT/Nu3//zn7//8jmbD/AAAA/wAAAP8AAAD/AAAA/wAAAP8KLTL/NOX//zLc//86/f//E1Jd/wAA + AP8z4Pz/NOL//zXn//8x1vP/AAAA/xhpc/86/P//Mt3//zPg//8BHg3/CAAT/zkqvv89Lc3/Hxdq/wAA + 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 + Av8svNf/Nu3//zDT//8y2f//NOP//zLZ//8x1///OPf//zn1//8acHz/IpS2/zHR/P8y2v//Nu3//wgm + KP8AAAD/AAAA/wAAAP8AAAD/CzA1/zj0//8x2P//M97//zPf//8IJCf/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8pHoz/Nym6/zEkpe4qHpruMSSy/yQbhP8AAAD/AAAA/wAAAP8CAgf/CQcf/xAM + N/8aE1f/IhRw/yQNdP8v1/D/N////zn6//85+///Ofv//zr7//837v//LsfO/w9AQv8CCw3/OPT//zr+ + //9C////K7vV/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/y7H5P9B////Ov///zb///8JKiz/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8pHoz/Nym6/zEkpe5HNcTuUj7Y/0k3xf8lHIX/KR6M/ywg + lP8vIp3/NCaw/zkqvv86K8X/OCW6/y8dnP8uYrf/HG6G/xBeWv8XZXP/F2Vy/xRVYP8MNDL/AAAA/wAA + AP8EERT/GGt5/xhmc/8bdnb/Ci4z/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/ww0Of8adnH/FWNr/yJr + lv8BDwv/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8pHoz/Nym6/zEkpe5gSeruZUzv/1dB + 3v8zJbT/Nie5/zYotv81J7L/MyWq/zEkpf8wJKP/MSWj/zAloP8tBYz/JgBx/wUABP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/FAA4/y8Bkf8EAA7/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8pHoz/Nym6/zEk + pe5ZQ9/uX0fn/1E91P8tIZ//MCOk/zEkpf8xJKX/MSSl/zEkpf8xJKX/MSSk/zEkpP8wJKD/NCew/zYn + tP8aElb/AQAC/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wEAA/8jGXT/OCm8/zkswv8oHoj/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8pHoz/OCq7/y4ioO5ZQ9/uX0fn/1E91P8tIZ//MCOk/zEkpf8xJKX/MSSl/zEkpP8wJKP/MSSl/zMl + qv82KLX/OCm9/z4uz/9DMeD/LCGV/wkHH/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/Ew4+/y8inv87K8f/MiWn/zAkov87LMf/Ixp2/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8kGoL/LiGt/zIlp+5ZQ9/uX0fn/1E91P8tIZ//MSOm/zMmrP81J7P/Nym6/zkq + wf86K8P/OCm9/zUnsv8uIpv/Jx2B/xsUW/8QDDj/DAkp/wQDDP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8BAQL/CAYc/xcRTv8qH4z/OSrA/zcpuv8wI6H/MSSl/zEkpP8xJKX/OivE/ysg + kv8RDTr/AgEG/wAAAP8AAAD/AAAA/wAAAP8vI5b/SzjX/1lD3u5gSeruZ03w/1hC4f80Jrf/Nie3/zMl + q/8uIpv/Kh6M/yEYcf8bFFv/Eg08/woHIv8BAQX/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wgGHP8mG33/Ixp1/yUbfP8tIZb/NCav/zorxf84Kbz/MSSl/zAko/8xJKX/MSSl/zEk + pf8xJKT/MCOi/zgpvP85Kr7/LiKa/yQaeP8hGG//Ixp2/ycdjf9VQNz/aE71/1xF5O5EM8DuSTfQ/zor + qv8PCzb/DQks/wcFGP8BAQT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/Dgow/zYouP89Lc//OSrA/zgqv/82KLb/MyWr/zEko/8xJKT/MSSl/zEk + pf8xJKX/MSSl/zEkpf8xJKX/MSSl/zAko/8xJKb/NSe0/zkqwP85KsL/OCm//zIlsf9SPtb/Xkbl/1lD + 3+4pHpruMCOx/yIZf/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8UD0T/OSrB/zcpuP8vI5//MSSk/zEkpP8xJKX/MSSl/zEk + pf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEkpP8xJKT/MCOj/y0h + n/9RPdT/X0fn/1lD3+4xJKXuNym6/ykejP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xoTWf87LMn/NSey/zAjof8xJKX/MSSl/zEk + pf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEk + pf8xJKX/MCOk/y0hn/9RPdT/X0fn/1lD3+4xJKXuNym6/ykejP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/IRhw/z0tzf8zJa3/MCOi/zEk + pf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEk + pf8xJKX/MSSl/zEkpf8xJKX/MCOk/y0hn/9RPdT/X0fn/1lD3+4xJKXuNym6/ykei/8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8mHIL/PCzK/zEk + pv8wI6L/MCOk/zAjpP8wI6T/MCOk/zAjpP8wI6T/MCOk/zAjpP8wI6T/MCOk/zAjpP8wI6T/MCOk/zAj + pP8wI6T/MCOk/zAjpP8wI6T/MCOk/zAjpP8wI6T/LyKj/ywgnv9RPdT/X0fn/1lD3+4xJKXuOCm8/yke + iv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAM/ygd + jv84KcT/LSGd/ywhnv8tIZ//LSGf/y0hn/8tIZ//LSGf/y0hn/8tIZ//LSGf/y0hn/8tIZ//LSGf/y0h + n/8tIZ//LSGf/y0hn/8tIZ//LSGf/y0hn/8tIZ//LSGf/y0hn/8tIZ//LCCe/ygdmP9QPNP/YEjo/1lD + 3+4xJKXuMiWp/zAjoP8pHov/KR6L/ykejP8pHoz/KR6M/ykejP8pHoz/KR6M/ykejP8qHoz/Kx+N/yEX + f/8rIIz/Uz7U/1tE8P9QPdD/UT3U/1E91P9RPdT/UT3U/1E91P9RPdT/UT3U/1E91P9RPdT/UT3U/1E9 + 1P9RPdT/UT3U/1E91P9RPdT/UT3U/1E91P9RPdT/UT3U/1E91P9RPdT/UT3U/1E91P9RPdT/UT3U/1E9 + 0/9YQt3/WkTh/1lD3+4xJKX/MCOi/zIlqP83Kbv/Nym7/zcpuv83Kbr/Nym6/zcpuv83Kbr/Nym6/zcp + uv84Kbv/LyKu/zwswf9jSvv/Zk33/11H4/9fR+f/X0fn/19H5/9fR+f/X0fn/19H5/9fR+f/X0fn/19H + 5/9fR+f/X0fn/19H5/9fR+f/X0fn/19H5/9fR+f/X0fn/19H5/9fR+f/X0fn/19H5/9fR+f/X0fn/19H + 5/9fR+f/X0fn/19I6P9aROH/WELe/1lD3/8xJKXfMSSl8jEkpe4xJKXuMSSl7jEkpe4xJKXuMSSl7jEk + pe4xJKXuMSSl7jEkpe4sIJ3uOyyz7mBJ6e5fR+fuWELd7llD3+5ZQ9/uWUPf7llD3+5ZQ9/uWUPf7llD + 3+5ZQ9/uWUPf7llD3+5ZQ9/uWUPf7llD3+5ZQ9/uWUPf7llD3+5ZQ9/uWUPf7llD3+5ZQ9/uWUPf7llD + 3+5ZQ9/uWUPf7llD3+5ZQ9/uWUPf7llD3+5ZQ9/uWUPf8llD398AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAA= diff --git a/app/DD_PM_WINDREAM/frmValidator.vb b/app/DD_PM_WINDREAM/frmValidator.vb index 4afb84c..5f075ca 100644 --- a/app/DD_PM_WINDREAM/frmValidator.vb +++ b/app/DD_PM_WINDREAM/frmValidator.vb @@ -29,8 +29,8 @@ Public Class frmValidator 'speichert die DocumentDaten Private navStep As String = Nothing - Public Shared myWMDocumentPath As String - Public PathToWM_File As String + Public Shared WMDocPathWindows As String + Public WMDocFileString As String Dim OLD_Document_Path As String = "" Dim ValueDTP As Date @@ -97,7 +97,7 @@ Public Class frmValidator LOGGER.Error(ex) LOGGER.Info("Error in Load FormLayout: " & ex.Message) End Try - Select Case Path.GetExtension(myWMDocumentPath).ToLower + Select Case Path.GetExtension(WMDocPathWindows).ToLower Case ".pdf" Select Case VIEWER_PDF Case "internal" @@ -148,7 +148,7 @@ Public Class frmValidator Kill_PDFAcrobat() Else If pdfxchange = True Or sumatra = True Then - Close_PDF_Viewer(myWMDocumentPath) + Close_PDF_Viewer(WMDocPathWindows) End If KillU_Viewer() End If @@ -1283,9 +1283,9 @@ Public Class frmValidator End Try End Sub Sub Open_PDF_withStandard() - If myWMDocumentPath.ToLower.EndsWith(".pdf") = True Then + If WMDocPathWindows.ToLower.EndsWith(".pdf") = True Then Dim Proc As New System.Diagnostics.Process - Dim psi As New ProcessStartInfo(PathToWM_File) + Dim psi As New ProcessStartInfo(WMDocPathWindows) psi.WindowStyle = ProcessWindowStyle.Minimized Proc.EnableRaisingEvents = True Proc.StartInfo = psi @@ -1330,43 +1330,12 @@ Public Class frmValidator LOGGER.Debug("Old Document_Path: " & OLD_Document_Path) newGUID = Next_GUID(OLD_Document_Path, CURRENT_ProfilGUID, PROFIL_sortbynewest) - myWMDocumentPath = "" + WMDocPathWindows = "" CURRENT_DOC_PATH = "" + CURRENT_WMFILE = Nothing If newGUID > 0 Then LOGGER.Debug("newGUID: " & newGUID.ToString) - myWMDocumentPath = TBPM_PROFILE_FILESTableAdapter.CmdGetFilePath_2_GUID(newGUID) - LOGGER.Debug($"myWMDocumentPath: {myWMDocumentPath}") - myWMDocumentPath = myWMDocumentPath.Replace("W:", "\\windream\objects") - myWMDocumentPath = myWMDocumentPath.Replace("K:", "\\windream\objects") - PathToWM_File = GetFilesystemDocPath() - LOGGER.Debug("Filesystem_Document_Path: " & PathToWM_File) - CURRENT_DOC_PATH = myWMDocumentPath - LOGGER.Debug("CURRENT_DOC_PATH: " & CURRENT_DOC_PATH) - - LOGGER.Debug("Überprüfen ob File existiert?") - Dim i As Integer = 0 - Do While allgFunk.file_exists(myWMDocumentPath, _windream) = False And newGUID <> 0 - i = i + 1 - If i > 800 Then - allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "Get_Next_GUID - Datei nicht vorhanden!", Environment.UserName) - LOGGER.Info(" >> ACHTUNG: Ausnahme in GetNextGUID - Datei nicht vorhanden") - Dim Del = "DELETE FROM TBPM_PROFILE_FILES where GUID = " & newGUID - ClassDatabase.Execute_non_Query(Del, True) - oErrorMessage = "Die windream-Datei existiert nicht!" - myWMDocumentPath = "" - CURRENT_DOC_PATH = "" - Return 0 - End If - Loop - OLD_Document_Path = myWMDocumentPath - 'If PROFIL_sortbynewest Then - ' newGUID = TBPM_PROFILE_FILESTableAdapter.cmdgetNextFile_GUID_Newest(PROFIL_ID, Document_Path, Environment.UserName) - ' Document_Path = TBPM_PROFILE_FILESTableAdapter.CmdGetFilePath_2_GUID(newGUID) - 'Else - ' newGUID = TBPM_PROFILE_FILESTableAdapter.cmdGetNextFile_GUID(PROFIL_ID, Document_Path, Environment.UserName) - ' Document_Path = TBPM_PROFILE_FILESTableAdapter.CmdGetFilePath_2_GUID(newGUID) - 'End If Else LOGGER.Info(" >> ACHTUNG: Ausnahme in GetNextGUID - Es konnte keine GUID abgerufen werden!") newGUID = 0 @@ -1397,7 +1366,7 @@ Public Class frmValidator AnzDoks = DT.Rows.Count Else AnzDoks = 1 - myWMDocumentPath = CURRENT_DOC_PATH + WMDocPathWindows = CURRENT_DOC_PATH End If tsslblDocID.Text = "Document-ID: " & CURRENT_DOC_ID & " - GUID: " & CURRENT_DOC_GUID @@ -1413,7 +1382,7 @@ Public Class frmValidator End If End If If pdfxchange = True Or sumatra = True Or VIEWER_PDF = "system" Then - Close_PDF_Viewer(myWMDocumentPath) + Close_PDF_Viewer(WMDocPathWindows) End If If CURRENT_WMFILE Is Nothing = False Then If CURRENT_WMFILE.aLocked Then @@ -1433,32 +1402,63 @@ Public Class frmValidator pnlpdf.Visible = visible End Sub - Private Function GetFilesystemDocPath() As String - LOGGER.Debug($"in GetFilesystemDocumentPath...'") - Dim oWMRELPATH = CURRENT_DT_CONFIG.Rows.Item(0).Item("WM_REL_PATH") - If IsDBNull(oWMRELPATH) Then - LOGGER.Debug($"WM_REL_PATH is null'") - CURRENT_DT_CONFIG.Rows.Item(0).Item("WM_REL_PATH") = "\\windream\objects" - CURRENT_DT_CONFIG.AcceptChanges() + Private Function CreateWMObject() As String + LOGGER.Debug($"in GetWMDocFileString...'") + Dim oWMRELPATH As String = CURRENT_DT_CONFIG.Rows.Item(0).Item("WM_REL_PATH") + If oWMRELPATH.EndsWith("\") = False Then + oWMRELPATH = oWMRELPATH & "\" End If - Dim oResult As String - If myWMDocumentPath.StartsWith(oWMRELPATH) Then - oResult = myWMDocumentPath - Else - oResult = Path.Combine(oWMRELPATH, myWMDocumentPath) + Dim oWMOwnPath = WMDocPathWindows.Replace(oWMRELPATH, "") + LOGGER.Debug($"oWMOwnPath: {oWMOwnPath}") + Try + Dim oNormalizedPath = WINDREAM.NormalizePath(oWMOwnPath) + CURRENT_WMFILE = WINDREAM.oSession.GetWMObjectByPath(WMEntity.WMEntityDocument, oNormalizedPath) + WMDocFileString = oNormalizedPath + LOGGER.Debug("WMDocFileString: " & WMDocFileString) + Return True + Catch ex As Exception + Dim _err1 As Boolean = False + LOGGER.Error(ex) + allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "error in creatin WMObject - DocGUID: " & CURRENT_DOC_GUID & " - ERROR: " & ex.Message, Environment.UserName) + LOGGER.Info("Unexpected error creating WMObject(1) in GetWMDocFileString: " & ex.Message) + LOGGER.Info("Error Number: " & Err.Number.ToString) + errormessage = $"Could not create a WMObject(1) for [{oWMOwnPath}]!" + frmError.ShowDialog() + WMDocFileString = "" + Return False + + End Try - End If - Return oResult End Function + Private Function GetWMDocPathWindows(_CheckStandard As Integer) + Dim oResult As String + Dim oSQL = $"SELECT [dbo].[FNPM_GET_WM_FILE_PATH] ({CURRENT_DOC_GUID},{_CheckStandard})" + oResult = ClassDatabase.Execute_Scalar(oSQL, CONNECTION_STRING) + LOGGER.Debug($"Checking file [{oResult}] exists?...") + If File.Exists(oResult) = False Then + LOGGER.Debug($"GetWMDocPathWindows returned false - trying with standard again...") + oSQL = $"SELECT [dbo].[FNPM_GET_WM_FILE_PATH] ({CURRENT_DOC_GUID},1)" + oResult = ClassDatabase.Execute_Scalar(oSQL, CONNECTION_STRING) + LOGGER.Debug($"Checking file [{oResult}] exists?...") + If File.Exists(oResult) = False Then + Return False + End If + End If + WMDocPathWindows = oResult + OLD_Document_Path = WMDocPathWindows + CURRENT_DOC_PATH = WMDocPathWindows + LOGGER.Debug($"CURRENT_DOC_PATH: {CURRENT_DOC_PATH}") + Return True + End Function Sub Load_Next_Document(first As Boolean) CURRENT_WMFILE = Nothing LOGGER.Debug("CURRENT_WMFILE nothing gesetzt") activate_controls(False) oErrorMessage = "" - myWMDocumentPath = "" - PathToWM_File = "" + WMDocPathWindows = "" + WMDocFileString = "" CURRENT_HTML_DOC = "" @@ -1488,56 +1488,52 @@ Public Class frmValidator LOGGER.Debug($"CURRENT_JUMP_DOC_GUID: {CURRENT_JUMP_DOC_GUID}'") If CURRENT_JUMP_DOC_GUID = 0 Then CURRENT_DOC_GUID = Get_Next_GUID() - Else - LOGGER.Debug($"CURRENT_DOC_PATH: {CURRENT_DOC_PATH}' later: myWMDocumentPath") - myWMDocumentPath = CURRENT_DOC_PATH - PathToWM_File = GetFilesystemDocPath() End If - + GetWMDocPathWindows(0) LOGGER.Debug("Dokument-GUID: '" & CURRENT_DOC_GUID.ToString & "'") - If CURRENT_DOC_GUID > 0 Then + If CURRENT_DOC_GUID > 0 And CreateWMObject() = True Then 'Beschriftung des Navigators 'lblNavigator_anzDok.Text = position & " of " & Anzahl_ValDoks & " files" - If myWMDocumentPath <> String.Empty Then + If WMDocPathWindows <> String.Empty Then ' >> >> >> >> >> >>##### Das Dokument in Bearbeitung nehmen ########################### TBPM_PROFILE_FILESTableAdapter.CmdSETWORK(True, Environment.UserName, CURRENT_DOC_GUID) ' ############ Infos eintragen ################# tsslblDocID.Text = "Document-ID: " & CURRENT_DOC_ID & " - DocGUID: " & CURRENT_DOC_GUID ' txtDateipfad.Text = Document_Path tstrlbl_Info.Text = "Datei " & docCounter.ToString & " von " & Anzahl_ValDoks.ToString - LOGGER.Info(">> Validierung für Dokument '" & myWMDocumentPath & "' gestartet") + LOGGER.Info(">> Validierung für Dokument '" & WMDocPathWindows & "' gestartet") - Try - CURRENT_WMFILE = WINDREAM.oSession.GetWMObjectByPath(WMEntity.WMEntityDocument, WINDREAM.NormalizePath(myWMDocumentPath)) - Catch ex As Exception - LOGGER.Error(ex) - allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "Fehler bei Erzeugen windream-Objekt - DocGUID: " & CURRENT_DOC_GUID & " - ERROR: " & ex.Message, Environment.UserName) - LOGGER.Info("Fehler bei Erzeugen windream-Objekt in (LoadNextDokument): " & ex.Message) - LOGGER.Info("Error Number: " & Err.Number.ToString) - Dim _err1 As Boolean = False - 'Nochmaliger Versuch windream zu initialiseren - If Init_windream() = True Then - Try - CURRENT_WMFILE = WINDREAM.oSession.GetWMObjectByPath(WMEntity.WMEntityDocument, myWMDocumentPath) - Catch ex1 As Exception - LOGGER.Info("Fehler bei 2. Versuch windream-Objekt: " & ex1.Message) - oErrorMessage = "1-Es besteht ein Problem beim Anmelden an windream - Bitte wenden Sie sich an Digital Data!" - _err1 = True - End Try - Else - oErrorMessage = "2-Es besteht ein Problem beim Anmelden an windream - Bitte wenden Sie sich an Digital Data!" - _err1 = True - End If - If _err1 = True Then - errormessage = oErrorMessage - frmError.ShowDialog() - Exit Sub - End If + 'Try + ' CURRENT_WMFILE = WINDREAM.oSession.GetWMObjectByPath(WMEntity.WMEntityDocument, WINDREAM.NormalizePath(WMDocFileString)) + 'Catch ex As Exception + ' LOGGER.Error(ex) + ' allgFunk.Insert_LogEntry(CURRENT_ProfilGUID, "Fehler bei Erzeugen windream-Objekt - DocGUID: " & CURRENT_DOC_GUID & " - ERROR: " & ex.Message, Environment.UserName) + ' LOGGER.Info("Fehler bei Erzeugen windream-Objekt in (LoadNextDokument): " & ex.Message) + ' LOGGER.Info("Error Number: " & Err.Number.ToString) + ' Dim _err1 As Boolean = False + ' 'Nochmaliger Versuch windream zu initialiseren + ' If Init_windream() = True Then + ' Try + ' CURRENT_WMFILE = WINDREAM.oSession.GetWMObjectByPath(WMEntity.WMEntityDocument, WINDREAM.NormalizePath(WMDocPathWindows)) + ' Catch ex1 As Exception + ' LOGGER.Info("1- Fehler bei 2. Versuch windream-Objekt: " & ex1.Message) + ' oErrorMessage = $"1-Could not create a WMObject for [{WMDocPathWindows}]!" + ' _err1 = True + ' End Try + ' Else + ' oErrorMessage = "2-Could not login to ECM - Please check Your log for further details!" + ' _err1 = True + ' End If + ' If _err1 = True Then + ' errormessage = oErrorMessage + ' frmError.ShowDialog() + ' Exit Sub + ' End If - End Try + 'End Try - LOGGER.Debug("Windream-Dokument geladen und gelockt") + LOGGER.Debug("WMDoc created...") oErrorMessage = Windream_get_Doc_info() LOGGER.Debug("Windream-Dok Info geholt") @@ -1547,7 +1543,7 @@ Public Class frmValidator load_viewer() - If myWMDocumentPath.ToLower.EndsWith(".pdf") Then + If WMDocPathWindows.ToLower.EndsWith(".pdf") Then ToolStripButtonAnnotation.Visible = True Else ToolStripButtonAnnotation.Visible = False @@ -1591,6 +1587,7 @@ Public Class frmValidator End If End If activate_controls(True) + Me.BringToFront() Else errormessage = oErrorMessage frmError.ShowDialog() @@ -1625,19 +1622,19 @@ Public Class frmValidator If VIEWER_ALL = "uviewer" Then pdfxchange = False sumatra = False - If PathToWM_File.ToLower.EndsWith(".msg") Then + If WMDocPathWindows.ToLower.EndsWith(".msg") Then Show_Email() Else - ShowFile_UniversalViewer(PathToWM_File) + ShowFile_UniversalViewer(WMDocPathWindows) End If ElseIf VIEWER_ALL = "docview" Then PdfControls_visible(False) - If PathToWM_File.ToLower.EndsWith(".pdf") And VIEWER_PDF <> "none" Then + If WMDocPathWindows.ToLower.EndsWith(".pdf") And VIEWER_PDF <> "none" Then Select Case VIEWER_PDF Case "internal" SplitContainer1.Panel2Collapsed = False - PdfViewer1.LoadDocument(PathToWM_File) - LOGGER.Debug("Internal Viewer Path: " & PathToWM_File) + PdfViewer1.LoadDocument(WMDocPathWindows) + LOGGER.Debug("Internal Viewer Path: " & WMDocPathWindows) PdfControls_visible(True) Me.Size = My.Settings.frmValidation_Size_PDFViewer 'PdfViewer1.ZoomFactor = PDFViewer_ZoomMode @@ -1646,14 +1643,14 @@ Public Class frmValidator sumatra = False Case "pdfxchange" SplitContainer1.Panel2Collapsed = True - Open_PDFXCHANGE(PathToWM_File) + Open_PDFXCHANGE(WMDocPathWindows) pdfxchange = True sumatra = False System.Threading.Thread.Sleep(1000) Me.Size = My.Settings.frmValidatorSize Case "sumatra" SplitContainer1.Panel2Collapsed = True - Open_Sumatra(PathToWM_File) + Open_Sumatra(WMDocPathWindows) sumatra = True pdfxchange = False System.Threading.Thread.Sleep(1000) @@ -1666,7 +1663,7 @@ Public Class frmValidator System.Threading.Thread.Sleep(1000) Me.Size = My.Settings.frmValidatorSize End Select - ElseIf PathToWM_File.ToLower.EndsWith(".msg") Then + ElseIf WMDocPathWindows.ToLower.EndsWith(".msg") Then Show_Email() Else SplitContainer1.Panel2Collapsed = True @@ -1695,44 +1692,44 @@ Public Class frmValidator Sub Show_Email() Me.grpBetreff.Dock = DockStyle.Top - Me.grpbxMailBody.Dock = DockStyle.Fill - Dim msg_email As New Msg.Message(myWMDocumentPath) - 'Eine tempfile generieren - Dim tempFilename = My.Computer.FileSystem.GetTempFileName() - Dim name = Path.GetFileNameWithoutExtension(tempFilename) - tempFilename = Path.Combine(Path.GetDirectoryName(tempFilename), name & ".html") - 'tempfile löschen - If My.Computer.FileSystem.FileExists(tempFilename) Then - My.Computer.FileSystem.DeleteFile(tempFilename) - End If + Me.grpbxMailBody.Dock = DockStyle.Fill + Dim msg_email As New Msg.Message(WMDocPathWindows) + 'Eine tempfile generieren + Dim tempFilename = My.Computer.FileSystem.GetTempFileName() + Dim name = Path.GetFileNameWithoutExtension(tempFilename) + tempFilename = Path.Combine(Path.GetDirectoryName(tempFilename), name & ".html") + 'tempfile löschen + If My.Computer.FileSystem.FileExists(tempFilename) Then + My.Computer.FileSystem.DeleteFile(tempFilename) + End If - Me.txtBetreff.Text = msg_email.Subject - Try - Dim wFile As System.IO.FileStream - Dim byteData() As Byte - byteData = msg_email.BodyHtml + Me.txtBetreff.Text = msg_email.Subject + Try + Dim wFile As System.IO.FileStream + Dim byteData() As Byte + byteData = msg_email.BodyHtml - ' MsgBox(msg_email.InternetCodePage) - ' wFile = New FileStream(tempFilename, FileMode.Append) - ' wFile.Write(byteData, 0, byteData.Length) - ' wFile.Close() - 'Catch ex As IOException - ' MsgBox(ex.ToString) - 'End Try + ' MsgBox(msg_email.InternetCodePage) + ' wFile = New FileStream(tempFilename, FileMode.Append) + ' wFile.Write(byteData, 0, byteData.Length) + ' wFile.Close() + 'Catch ex As IOException + ' MsgBox(ex.ToString) + 'End Try - Dim vIn() As Byte = msg_email.BodyHtml - Dim vOut As String = System.Text.Encoding.UTF8.GetString(vIn) - File.WriteAllText(tempFilename, vOut, System.Text.Encoding.UTF8) + Dim vIn() As Byte = msg_email.BodyHtml + Dim vOut As String = System.Text.Encoding.UTF8.GetString(vIn) + File.WriteAllText(tempFilename, vOut, System.Text.Encoding.UTF8) - CURRENT_HTML_DOC = tempFilename - Me.tslblWebbrowser.Text = CURRENT_HTML_DOC - WebBrowser.Navigate("file:///" & CURRENT_HTML_DOC) - SplitContainer1.Panel2Collapsed = False - Me.Size = My.Settings.frmValidation_Size_Email - Me.grpbxMailBody.Visible = True - Me.grpBetreff.Visible = True - Catch ex As Exception - LOGGER.Error(ex) + CURRENT_HTML_DOC = tempFilename + Me.tslblWebbrowser.Text = CURRENT_HTML_DOC + WebBrowser.Navigate("file:///" & CURRENT_HTML_DOC) + SplitContainer1.Panel2Collapsed = False + Me.Size = My.Settings.frmValidation_Size_Email + Me.grpbxMailBody.Visible = True + Me.grpBetreff.Visible = True + Catch ex As Exception + LOGGER.Error(ex) errormessage = "Unvorhergesehener Fehler bei Show_Email:" & ex.Message LOGGER.Info("Unvorhergesehener Fehler in Show_Email: " & ex.Message) My.Settings.Save() @@ -1756,6 +1753,7 @@ Public Class frmValidator 'End If Try + LOGGER.Debug($"GetVariableValue [{INDEX_DMS_ERSTELLT}]...") CURRENT_DOC_CREATION_DATE = CURRENT_WMFILE.GetVariableValue(INDEX_DMS_ERSTELLT) Catch ex As Exception LOGGER.Error(ex) @@ -1791,9 +1789,10 @@ Public Class frmValidator LOGGER.Debug("DMS-Erstellt aus WD: " & CURRENT_DOC_CREATION_DATE) Try + LOGGER.Debug($"GetVariableValue [{INDEX_DMS_ERSTELLT_ZEIT}]...") CURRENT_DOC_CREATION_TIME = CURRENT_WMFILE.GetVariableValue(INDEX_DMS_ERSTELLT_ZEIT) Catch ex As Exception - LOGGER.Error(ex) + If ex.Message.Contains("Variable: " & INDEX_DMS_ERSTELLT_ZEIT & " not found!") Then LOGGER.Info("1. Ausnahme in Windream_get_Doc_info: Variable: " & INDEX_DMS_ERSTELLT_ZEIT & " not found", True) If INDEX_DMS_ERSTELLT = "DMS Created" Then @@ -1817,9 +1816,10 @@ Public Class frmValidator 'SaveMySettingsValue("IDX_DMS_ERSTELLT", "DMS Created") 'SaveMySettingsValue("IDX_DMS_ERSTELLT_ZEIT", "DMS Created Time") End If - + LOGGER.Debug($"GetVariableValue (2) [{INDEX_DMS_ERSTELLT_ZEIT}]...") CURRENT_DOC_CREATION_TIME = CURRENT_WMFILE.GetVariableValue(INDEX_DMS_ERSTELLT_ZEIT) Else + LOGGER.Error(ex) LOGGER.Info("Fehler in Windream_get_Doc_info 3: " & ex.Message) Return "Fehler in Windream_get_Doc_info 3: " & ex.Message End If @@ -2449,7 +2449,7 @@ Public Class frmValidator Dim oArrlist As New List(Of String) For Each oVectorRow As Object In oWindreamValue Dim Ocontent = oVectorRow.ToString - oArrlist.Add(oVectorRow.ToString) + oArrlist.Add(Ocontent) Next oLookup.SelectedValues = oArrlist _CURRENT_INDEX_ARRAY(oCount, 1) = oWindreamValue.ToString @@ -2787,7 +2787,7 @@ Public Class frmValidator ClassDatabase.Execute_non_Query(ins) Close_document_viewer() - If myWMDocumentPath.ToLower.EndsWith(".pdf") Then + If WMDocPathWindows.ToLower.EndsWith(".pdf") Then If Not IsNothing(WORK_HISTORY_ENTRY) Then If CBool(CURRENT_DT_PROFILE.Rows(0).Item("ANNOTATE_WORK_HISTORY_ENTRY")) = True Then sql = String.Format("SELECT * FROM TBPM_FILES_WORK_HISTORY WHERE GUID = (SELECT MAX(GUID) FROM TBPM_FILES_WORK_HISTORY WHERE PROFIL_ID = {0} AND DOC_ID = {1})", CURRENT_ProfilGUID, CURRENT_DOC_ID) @@ -2818,7 +2818,7 @@ Public Class frmValidator 'wenn Move2Folder aktiviert wurde If Move2Folder <> "" Then - idxerr_message = allgFunk.Move2Folder(myWMDocumentPath, Move2Folder, CURRENT_ProfilGUID, _windream) + idxerr_message = allgFunk.Move2Folder(WMDocPathWindows, Move2Folder, CURRENT_ProfilGUID, _windream) If idxerr_message <> "" Then errormessage = "Fehler bei Move2Folder:" & vbNewLine & idxerr_message My.Settings.Save() @@ -2827,7 +2827,7 @@ Public Class frmValidator End If End If 'Validierungsfile löschen wenn vorhanden - allgFunk.Delete_xffres(myWMDocumentPath, _windream) + allgFunk.Delete_xffres(WMDocPathWindows, _windream) LOGGER.Debug("Delete_xffres ausgeführt") LOGGER.Debug("All Input clear") Anzahl_validierte_Dok += 1 @@ -3082,7 +3082,12 @@ Public Class frmValidator Try If oRegexMatch <> String.Empty AndAlso Not Regex.IsMatch(oControl.Text, oRegexMatch) Then oMissing = True - oErrorMessage = "Falsche Eingabe in Textbox '" & oControl.Name & "'" + If USER_LANGUAGE <> "de-DE" Then + oErrorMessage = "Wrong input in textbox '" & oControl.Name & "'" + Else + oErrorMessage = "Falsche Eingabe in Textbox '" & oControl.Name & "'" + End If + If oRegexMessage <> String.Empty Then oErrorMessage &= ":" & vbCrLf & oRegexMessage @@ -3095,7 +3100,12 @@ Public Class frmValidator 'Als erstes überprüfen ob überhaupt etwas eingetragen worden ist If Check_Missing(oControl, "txt") = True And oIsRequired = True Then 'NICHTS EINGETRAGEN oMissing = True - oErrorMessage = "Fehlende Eingabe in Textbox '" & oControl.Name & "'" + If USER_LANGUAGE <> "de-DE" Then + oErrorMessage = "Missing input in textbox '" & oControl.Name & "'" + Else + oErrorMessage = "Fehlende Eingabe in Textbox '" & oControl.Name & "'" + End If + oControl.BackColor = Color.Red Exit For Else @@ -3610,7 +3620,7 @@ Public Class frmValidator Private Sub DateiÖffnenToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles DateiÖffnenToolStripMenuItem.Click Try Dim Proc As New System.Diagnostics.Process - Dim psi As New ProcessStartInfo(PathToWM_File) + Dim psi As New ProcessStartInfo(WMDocPathWindows) Proc.EnableRaisingEvents = True Proc.StartInfo = psi Proc.Start() @@ -3631,8 +3641,8 @@ Public Class frmValidator 'Das Dokument freigeben TBPM_PROFILE_FILESTableAdapter.CmdSETWORK(False, "", CURRENT_DOC_GUID) - If TBPM_FILES_USER_NOT_INDEXEDTableAdapter.FileExists(Environment.UserName, CURRENT_ProfilGUID, myWMDocumentPath) = 0 Then - TBPM_FILES_USER_NOT_INDEXEDTableAdapter.cmdInsert(Environment.UserName, CURRENT_ProfilGUID, myWMDocumentPath) + If TBPM_FILES_USER_NOT_INDEXEDTableAdapter.FileExists(Environment.UserName, CURRENT_ProfilGUID, WMDocPathWindows) = 0 Then + TBPM_FILES_USER_NOT_INDEXEDTableAdapter.cmdInsert(Environment.UserName, CURRENT_ProfilGUID, WMDocPathWindows) End If LOGGER.Debug("Dokument freigegeben") @@ -3652,7 +3662,7 @@ Public Class frmValidator Close_document_viewer() 'Aus der Tabelle löschen TBPM_PROFILE_FILESTableAdapter.CmdDelete(CURRENT_DOC_GUID) - Dim resul = allgFunk.Delete_xffres(PathToWM_File, _windream) + Dim resul = allgFunk.Delete_xffres(WMDocPathWindows, _windream) If resul = Nothing Or resul = True Then If Delete_File() = True Then 'MsgBox("Die Datei wurde erfolgreich aus windream gelöscht!" & vbNewLine & "Es wird nun die nächste Datei angezeigt!", MsgBoxStyle.Information, "Erfolgsmeldung:") @@ -3728,12 +3738,12 @@ Public Class frmValidator End Structure Private Sub DateieigenschaftenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateieigenschaftenToolStripMenuItem.Click - If myWMDocumentPath <> "" Then + If WMDocPathWindows <> "" Then Cursor = Cursors.WaitCursor Dim oShellExecuteInfo As New SHELLEXECUTEINFO oShellExecuteInfo.cbSize = Marshal.SizeOf(oShellExecuteInfo) oShellExecuteInfo.lpVerb = "properties" - oShellExecuteInfo.lpFile = PathToWM_File + oShellExecuteInfo.lpFile = WMDocPathWindows oShellExecuteInfo.nShow = SW_SHOW oShellExecuteInfo.fMask = SEE_MASK_INVOKEIDLIST If Not ShellExecuteEx(oShellExecuteInfo) Then @@ -3745,8 +3755,8 @@ Public Class frmValidator End Sub Private Sub frmValidation_ResizeEnd(sender As Object, e As EventArgs) Handles Me.ResizeEnd - If myWMDocumentPath Is Nothing = False Then - Select Case Path.GetExtension(myWMDocumentPath).ToLower + If WMDocPathWindows Is Nothing = False Then + Select Case Path.GetExtension(WMDocPathWindows).ToLower Case ".pdf" Select Case VIEWER_PDF Case "internal" @@ -3820,7 +3830,7 @@ Public Class frmValidator Private Sub ToolStripButtonAnnotation_Click(sender As Object, e As EventArgs) Handles ToolStripButtonAnnotation.Click PdfViewer1.CloseDocument() - Close_PDF_Viewer(myWMDocumentPath) + Close_PDF_Viewer(WMDocPathWindows) Application.DoEvents() frmAnnotations.ShowDialog()