diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/App.config b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/App.config new file mode 100644 index 0000000..61d0069 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/ET_Demo.sln b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/ET_Demo.sln new file mode 100644 index 0000000..cfdcadb --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/ET_Demo.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.32630.194 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ET_Demo", "ET_Demo.vbproj", "{735A5B4F-8D51-408F-9411-235CDB01F9F3}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {735A5B4F-8D51-408F-9411-235CDB01F9F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {735A5B4F-8D51-408F-9411-235CDB01F9F3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {735A5B4F-8D51-408F-9411-235CDB01F9F3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {735A5B4F-8D51-408F-9411-235CDB01F9F3}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {05370154-7301-4A5A-B360-EAF02EF9EFDA} + EndGlobalSection +EndGlobal diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/ET_Demo.vbproj b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/ET_Demo.vbproj new file mode 100644 index 0000000..7d56649 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/ET_Demo.vbproj @@ -0,0 +1,120 @@ + + + + + Debug + AnyCPU + {735A5B4F-8D51-408F-9411-235CDB01F9F3} + WinExe + ET_Demo.My.MyApplication + ET_Demo + ET_Demo + 512 + WindowsForms + v4.6.2 + true + true + + + AnyCPU + true + full + true + true + bin\Debug\ + ET_Demo.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + AnyCPU + pdbonly + false + true + true + bin\Release\ + ET_Demo.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + On + + + Binary + + + Off + + + On + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Form + + + Form1.vb + Form + + + + True + Application.myapp + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/Application.Designer.vb b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/Application.Designer.vb new file mode 100644 index 0000000..deffe98 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/Application.Designer.vb @@ -0,0 +1,38 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + 'NOTE: This file is auto-generated; do not modify it directly. To make changes, + ' or if you encounter build errors in this file, go to the Project Designer + ' (go to Project Properties or double-click the My Project node in + ' Solution Explorer), and make changes on the Application tab. + ' + Partial Friend Class MyApplication + + _ + Public Sub New() + MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows) + Me.IsSingleInstance = false + Me.EnableVisualStyles = true + Me.SaveMySettingsOnExit = true + Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses + End Sub + + _ + Protected Overrides Sub OnCreateMainForm() + Me.MainForm = Global.ET_Demo.frmDemo + End Sub + End Class +End Namespace diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/Application.myapp b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/Application.myapp new file mode 100644 index 0000000..1243847 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/Application.myapp @@ -0,0 +1,11 @@ + + + true + Form1 + false + 0 + true + 0 + 0 + true + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/AssemblyInfo.vb b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/AssemblyInfo.vb new file mode 100644 index 0000000..fd8a417 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' 有关程序集的一般信息由以下 +' 控制。更改这些特性值可修改 +' 与程序集关联的信息。 + +'查看程序集特性的值 + + + + + + + + + + +'如果此项目向 COM 公开,则下列 GUID 用于 typelib 的 ID + + +' 程序集的版本信息由下列四个值组成: +' +' 主版本 +' 次版本 +' 生成号 +' 修订号 +' +'可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +'通过使用 "*",如下所示: +' + + + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/Resources.Designer.vb b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/Resources.Designer.vb new file mode 100644 index 0000000..24dbe56 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/Resources.Designer.vb @@ -0,0 +1,62 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My.Resources + + 'This class was auto-generated by the StronglyTypedResourceBuilder + 'class via a tool like ResGen or Visual Studio. + 'To add or remove a member, edit your .ResX file then rerun ResGen + 'with the /str option, or rebuild your VS project. + ''' + ''' A strongly-typed resource class, for looking up localized strings, etc. + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' Returns the cached ResourceManager instance used by this class. + ''' + _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("ET_Demo.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' Overrides the current thread's CurrentUICulture property for all + ''' resource lookups using this strongly typed resource class. + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set(ByVal value As Global.System.Globalization.CultureInfo) + resourceCulture = value + End Set + End Property + End Module +End Namespace diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/Resources.resx b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/Settings.Designer.vb b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/Settings.Designer.vb new file mode 100644 index 0000000..551e93e --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + _ + Partial Friend NotInheritable Class MySettings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings) + +#Region "My.Settings Auto-Save Functionality" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + _ + Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub +#End If +#End Region + + Public Shared ReadOnly Property [Default]() As MySettings + Get + +#If _MyType = "WindowsForms" Then + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If +#End If + Return defaultInstance + End Get + End Property + End Class +End Namespace + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.ET_Demo.My.MySettings + Get + Return Global.ET_Demo.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/Settings.settings b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/Settings.settings new file mode 100644 index 0000000..85b890b --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/licenses.licx b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/licenses.licx new file mode 100644 index 0000000..e14ac4a --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/My Project/licenses.licx @@ -0,0 +1,7 @@ +Infragistics.Win.Misc.UltraPanel, Infragistics4.Win.Misc.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.Misc.UltraButton, Infragistics4.Win.Misc.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.UltraWinEditors.UltraTextEditor, Infragistics4.Win.UltraWinEditors.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.Misc.UltraSplitter, Infragistics4.Win.Misc.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.Misc.UltraLabel, Infragistics4.Win.Misc.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.UltraWinEditors.UltraRadioButton, Infragistics4.Win.UltraWinEditors.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.UltraWinEditors.UltraComboEditor, Infragistics4.Win.UltraWinEditors.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/frmDemo.Designer.vb b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/frmDemo.Designer.vb new file mode 100644 index 0000000..ee5dcb7 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/frmDemo.Designer.vb @@ -0,0 +1,236 @@ + _ +Partial Class frmDemo + ' Inherits System.Windows.Forms.Form + Inherits COM_Kit.frmBasisTemplat + 'Form 重写 Dispose,以清理组件列表。 + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Windows 窗体设计器所必需的 + Private components As System.ComponentModel.IContainer + + '注意: 以下过程是 Windows 窗体设计器所必需的 + '可以使用 Windows 窗体设计器修改它。 + '不要使用代码编辑器修改它。 + _ + Private Sub InitializeComponent() + Me.iugBasis = New iMESUltraGrid.iMESUltraGridControl() + Me.iugDetail = New iMESUltraGrid.iMESUltraGridControl() + Me.btnClose = New Infragistics.Win.Misc.UltraButton() + Me.btnApprove = New Infragistics.Win.Misc.UltraButton() + Me.btnEMail = New Infragistics.Win.Misc.UltraButton() + Me.btnDCopy = New Infragistics.Win.Misc.UltraButton() + Me.btnCopy = New Infragistics.Win.Misc.UltraButton() + Me.btnDDel = New Infragistics.Win.Misc.UltraButton() + Me.btnDEdit = New Infragistics.Win.Misc.UltraButton() + Me.btnAdd = New Infragistics.Win.Misc.UltraButton() + Me.btnDAdd = New Infragistics.Win.Misc.UltraButton() + Me.btnDel = New Infragistics.Win.Misc.UltraButton() + Me.btnEdit = New Infragistics.Win.Misc.UltraButton() + Me.SuspendLayout() + ' + 'iugBasis + ' + Me.iugBasis.EnterDirection = iMESUltraGrid.iMESUltraGridControl.EnterDirectionEnum.Down + Me.iugBasis.GroupBoxPromptText = "Drag a column header here to group by that column." + Me.iugBasis.GroupBoxTextForeColor = System.Drawing.Color.Red + Me.iugBasis.Identity = "iMES" + Me.iugBasis.IdentityForm = "" + Me.iugBasis.LayOutFilePath = "" + Me.iugBasis.Location = New System.Drawing.Point(12, 53) + Me.iugBasis.Name = "iugBasis" + Me.iugBasis.PrintFitWidthToPages = 0 + Me.iugBasis.PrintLandscape = True + Me.iugBasis.PrintPageFooter = "" + Me.iugBasis.PrintPageFooterHAlign = Infragistics.Win.HAlign.[Default] + Me.iugBasis.PrintPageFooterHeight = 20 + Me.iugBasis.PrintPageHeader = "" + Me.iugBasis.PrintPageHeaderHAlign = Infragistics.Win.HAlign.[Default] + Me.iugBasis.PrintPageHeaderHeight = 20 + Me.iugBasis.PrintZoom = 1.0R + Me.iugBasis.Size = New System.Drawing.Size(791, 200) + Me.iugBasis.TabIndex = 41 + Me.iugBasis.UserNo = "iMES" + ' + 'iugDetail + ' + Me.iugDetail.EnterDirection = iMESUltraGrid.iMESUltraGridControl.EnterDirectionEnum.Down + Me.iugDetail.GroupBoxPromptText = "Drag a column header here to group by that column." + Me.iugDetail.GroupBoxTextForeColor = System.Drawing.Color.Red + Me.iugDetail.Identity = "iMES" + Me.iugDetail.IdentityForm = "" + Me.iugDetail.LayOutFilePath = "" + Me.iugDetail.Location = New System.Drawing.Point(12, 260) + Me.iugDetail.Name = "iugDetail" + Me.iugDetail.PrintFitWidthToPages = 0 + Me.iugDetail.PrintLandscape = True + Me.iugDetail.PrintPageFooter = "" + Me.iugDetail.PrintPageFooterHAlign = Infragistics.Win.HAlign.[Default] + Me.iugDetail.PrintPageFooterHeight = 20 + Me.iugDetail.PrintPageHeader = "" + Me.iugDetail.PrintPageHeaderHAlign = Infragistics.Win.HAlign.[Default] + Me.iugDetail.PrintPageHeaderHeight = 20 + Me.iugDetail.PrintZoom = 1.0R + Me.iugDetail.Size = New System.Drawing.Size(791, 291) + Me.iugDetail.TabIndex = 42 + Me.iugDetail.UserNo = "iMES" + ' + 'btnClose + ' + Me.btnClose.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnClose.Location = New System.Drawing.Point(827, 523) + Me.btnClose.Name = "btnClose" + Me.btnClose.Size = New System.Drawing.Size(88, 32) + Me.btnClose.TabIndex = 48 + Me.btnClose.Text = "Close (&X)" + ' + 'btnApprove + ' + Me.btnApprove.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnApprove.Location = New System.Drawing.Point(827, 213) + Me.btnApprove.Name = "btnApprove" + Me.btnApprove.Size = New System.Drawing.Size(88, 32) + Me.btnApprove.TabIndex = 53 + Me.btnApprove.Text = "Approve(&Y)" + ' + 'btnEMail + ' + Me.btnEMail.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnEMail.Location = New System.Drawing.Point(827, 429) + Me.btnEMail.Name = "btnEMail" + Me.btnEMail.Size = New System.Drawing.Size(88, 32) + Me.btnEMail.TabIndex = 47 + Me.btnEMail.Text = "Mail" + ' + 'btnDCopy + ' + Me.btnDCopy.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDCopy.Location = New System.Drawing.Point(827, 389) + Me.btnDCopy.Name = "btnDCopy" + Me.btnDCopy.Size = New System.Drawing.Size(88, 32) + Me.btnDCopy.TabIndex = 46 + Me.btnDCopy.Text = "Copy" + ' + 'btnCopy + ' + Me.btnCopy.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnCopy.Location = New System.Drawing.Point(827, 173) + Me.btnCopy.Name = "btnCopy" + Me.btnCopy.Size = New System.Drawing.Size(88, 32) + Me.btnCopy.TabIndex = 52 + Me.btnCopy.Text = "Copy(&C)" + ' + 'btnDDel + ' + Me.btnDDel.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDDel.Location = New System.Drawing.Point(827, 349) + Me.btnDDel.Name = "btnDDel" + Me.btnDDel.Size = New System.Drawing.Size(88, 32) + Me.btnDDel.TabIndex = 45 + Me.btnDDel.Text = "DEL" + ' + 'btnDEdit + ' + Me.btnDEdit.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDEdit.Location = New System.Drawing.Point(827, 309) + Me.btnDEdit.Name = "btnDEdit" + Me.btnDEdit.Size = New System.Drawing.Size(88, 32) + Me.btnDEdit.TabIndex = 44 + Me.btnDEdit.Text = "EDIT" + ' + 'btnAdd + ' + Me.btnAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnAdd.Location = New System.Drawing.Point(827, 53) + Me.btnAdd.Name = "btnAdd" + Me.btnAdd.Size = New System.Drawing.Size(88, 32) + Me.btnAdd.TabIndex = 49 + Me.btnAdd.Text = "Add(&A)" + ' + 'btnDAdd + ' + Me.btnDAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDAdd.Location = New System.Drawing.Point(827, 269) + Me.btnDAdd.Name = "btnDAdd" + Me.btnDAdd.Size = New System.Drawing.Size(88, 32) + Me.btnDAdd.TabIndex = 43 + Me.btnDAdd.Text = "ADD" + ' + 'btnDel + ' + Me.btnDel.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDel.Location = New System.Drawing.Point(827, 133) + Me.btnDel.Name = "btnDel" + Me.btnDel.Size = New System.Drawing.Size(88, 32) + Me.btnDel.TabIndex = 51 + Me.btnDel.Text = "Del(&D)" + ' + 'btnEdit + ' + Me.btnEdit.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnEdit.Location = New System.Drawing.Point(827, 93) + Me.btnEdit.Name = "btnEdit" + Me.btnEdit.Size = New System.Drawing.Size(88, 32) + Me.btnEdit.TabIndex = 50 + Me.btnEdit.Text = "Edit(&E)" + ' + 'frmDemo + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 15.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(927, 562) + Me.Controls.Add(Me.btnClose) + Me.Controls.Add(Me.btnApprove) + Me.Controls.Add(Me.btnEMail) + Me.Controls.Add(Me.btnDCopy) + Me.Controls.Add(Me.btnCopy) + Me.Controls.Add(Me.btnDDel) + Me.Controls.Add(Me.btnDEdit) + Me.Controls.Add(Me.btnAdd) + Me.Controls.Add(Me.btnDAdd) + Me.Controls.Add(Me.btnDel) + Me.Controls.Add(Me.btnEdit) + Me.Controls.Add(Me.iugDetail) + Me.Controls.Add(Me.iugBasis) + Me.Margin = New System.Windows.Forms.Padding(3, 4, 3, 4) + Me.Name = "frmDemo" + Me.Text = "Demo" + Me.Controls.SetChildIndex(Me.iugBasis, 0) + Me.Controls.SetChildIndex(Me.iugDetail, 0) + Me.Controls.SetChildIndex(Me.btnEdit, 0) + Me.Controls.SetChildIndex(Me.btnDel, 0) + Me.Controls.SetChildIndex(Me.btnDAdd, 0) + Me.Controls.SetChildIndex(Me.btnAdd, 0) + Me.Controls.SetChildIndex(Me.btnDEdit, 0) + Me.Controls.SetChildIndex(Me.btnDDel, 0) + Me.Controls.SetChildIndex(Me.btnCopy, 0) + Me.Controls.SetChildIndex(Me.btnDCopy, 0) + Me.Controls.SetChildIndex(Me.btnEMail, 0) + Me.Controls.SetChildIndex(Me.btnApprove, 0) + Me.Controls.SetChildIndex(Me.btnClose, 0) + Me.ResumeLayout(False) + + End Sub + + Friend WithEvents iugBasis As iMESUltraGrid.iMESUltraGridControl + Friend WithEvents iugDetail As iMESUltraGrid.iMESUltraGridControl + Friend WithEvents btnClose As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnApprove As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnEMail As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDCopy As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnCopy As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDDel As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDEdit As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnAdd As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDAdd As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDel As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnEdit As Infragistics.Win.Misc.UltraButton +End Class diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/frmDemo.resx b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/frmDemo.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/frmDemo.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/frmDemo.vb b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/frmDemo.vb new file mode 100644 index 0000000..4d5c94c --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Demo/frmDemo.vb @@ -0,0 +1,14 @@ +Imports iMESExceptionManager + +Imports Infragistics.Win +Imports Infragistics.Win.UltraWinGrid +Public Class frmDemo + + Private Sub frmDemo_Load(sender As Object, e As EventArgs) Handles MyBase.Load + + End Sub + + Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click + + End Sub +End Class diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/ET_Subcontractor.sln b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/ET_Subcontractor.sln new file mode 100644 index 0000000..85b1902 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/ET_Subcontractor.sln @@ -0,0 +1,39 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25123.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ET_Subcontractor", "ET_Subcontractor.vbproj", "{D6EE7B96-F10E-44E2-9731-162B70B4C8DD}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Test", "..\..\Test\Test.vbproj", "{C4A48E3F-38E4-4E88-A47D-FA5510686E57}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x86 = Debug|x86 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D6EE7B96-F10E-44E2-9731-162B70B4C8DD}.Debug|x86.ActiveCfg = Debug|x86 + {D6EE7B96-F10E-44E2-9731-162B70B4C8DD}.Debug|x86.Build.0 = Debug|x86 + {D6EE7B96-F10E-44E2-9731-162B70B4C8DD}.Release|x86.ActiveCfg = Release|x86 + {D6EE7B96-F10E-44E2-9731-162B70B4C8DD}.Release|x86.Build.0 = Release|x86 + {C4A48E3F-38E4-4E88-A47D-FA5510686E57}.Debug|x86.ActiveCfg = Debug|x86 + {C4A48E3F-38E4-4E88-A47D-FA5510686E57}.Debug|x86.Build.0 = Debug|x86 + {C4A48E3F-38E4-4E88-A47D-FA5510686E57}.Release|x86.ActiveCfg = Release|x86 + {C4A48E3F-38E4-4E88-A47D-FA5510686E57}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(TeamFoundationVersionControl) = preSolution + SccNumberOfProjects = 3 + SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccTeamFoundationServer = http://tfs.imestech.com:8080/tfs/messeries6 + SccProjectUniqueName0 = ET_Subcontractor.vbproj + SccLocalPath0 = . + SccProjectUniqueName1 = ..\\..\\Test\\Test.vbproj + SccProjectName1 = ../../Test + SccLocalPath1 = ..\\..\\Test + SccLocalPath2 = . + EndGlobalSection +EndGlobal diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/ET_Subcontractor.vbproj b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/ET_Subcontractor.vbproj new file mode 100644 index 0000000..0c339dc --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/ET_Subcontractor.vbproj @@ -0,0 +1,205 @@ + + + + + Debug + x86 + {D6EE7B96-F10E-44E2-9731-162B70B4C8DD} + Library + ET_Subcontractor + ET_Subcontractor + 512 + Windows + v4.6.2 + + SAK + SAK + SAK + SAK + + + On + + + Binary + + + Off + + + On + + + true + true + true + ..\..\..\MESClient\ + ET_Subcontractor.xml + 0 + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + full + x86 + MinimumRecommendedRules.ruleset + false + + + true + ..\..\..\MESClient\ + ET_Subcontractor.xml + true + 0 + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + pdbonly + x86 + MinimumRecommendedRules.ruleset + false + + + true + + + iMES.snk + + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Win.v19.1.dll + False + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Win.UltraWinGrid.v19.1.dll + False + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Win.UltraWinEditors.v19.1.dll + False + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Win.Misc.v19.1.dll + False + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Shared.v19.1.dll + False + + + ..\..\..\MESClient\COM_Kit.dll + False + + + ..\..\..\MES_C_DLL\iMESExceptionManager.dll + False + + + ..\..\..\MES_C_DLL\iMESUltraGrid.dll + False + + + + + + + + + + + + + + + + + + + + + + + + + + + + modConstant.vb + + + Form1.vb + + + Form + + + Form + + + Form + + + Form + + + Form + + + + True + Application.myapp + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + frmBusiness21670.vb + + + frmSubcontractor.vb + + + frmSubcontractorContDef.vb + + + frmSubcontractorDef.vb + + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/ET_Subcontractor.vbproj.vspscc b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/ET_Subcontractor.vbproj.vspscc new file mode 100644 index 0000000..b6d3289 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/ET_Subcontractor.vbproj.vspscc @@ -0,0 +1,10 @@ +"" +{ +"FILE_VERSION" = "9237" +"ENLISTMENT_CHOICE" = "NEVER" +"PROJECT_FILE_RELATIVE_PATH" = "" +"NUMBER_OF_EXCLUDED_FILES" = "0" +"ORIGINAL_PROJECT_FILE_PATH" = "" +"NUMBER_OF_NESTED_PROJECTS" = "0" +"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER" +} diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/Form1.Designer.vb b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/Form1.Designer.vb new file mode 100644 index 0000000..c29cf72 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/Form1.Designer.vb @@ -0,0 +1,32 @@ + +Partial Class Form1 + + + Inherits COM_Kit.frmBasisTemplat + + 'Form 重写 Dispose,以清理组件列表。 + + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Windows 窗体设计器所必需的 + Private components As System.ComponentModel.IContainer + + '注意: 以下过程是 Windows 窗体设计器所必需的 + '可以使用 Windows 窗体设计器修改它。 + '不要使用代码编辑器修改它。 + + Private Sub InitializeComponent() + components = New System.ComponentModel.Container + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(800, 450) + Me.Text = "Form1" + End Sub +End Class diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/Form1.vb b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/Form1.vb new file mode 100644 index 0000000..10d55d4 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/Form1.vb @@ -0,0 +1,3 @@ +Public Class Form1 + +End Class \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/Application.Designer.vb b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/Application.Designer.vb new file mode 100644 index 0000000..4f9342a --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/Application.Designer.vb @@ -0,0 +1,13 @@ +'------------------------------------------------------------------------------ +' +' 這段程式碼是由工具產生的。 +' 執行階段版本:4.0.30319.42000 +' +' 對這個檔案所做的變更可能會造成錯誤的行為,而且如果重新產生程式碼, +' 變更將會遺失。 +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/Application.myapp b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/Application.myapp new file mode 100644 index 0000000..758895d --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + false + false + 0 + true + 0 + 1 + true + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/AssemblyInfo.vb b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/AssemblyInfo.vb new file mode 100644 index 0000000..b0cdd98 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' 組件的一般資訊是由下列的屬性集控制。 +' 變更這些屬性的值即可修改組件的相關 +' 資訊。 + +' 檢閱組件屬性的值 + + + + + + + + + + +'下列 GUID 為專案公開 (Expose) 至 COM 時所要使用的 typelib ID + + +' 組件的版本資訊由下列四個值所組成: +' +' 主要版本 +' 次要版本 +' 組建編號 +' 修訂編號 +' +' 您可以指定所有的值,也可以依照以下的方式,使用 '*' 將組建和修訂編號 +' 指定為預設值: +' + + + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/BuildIncrementVersionInfo.vb b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/BuildIncrementVersionInfo.vb new file mode 100644 index 0000000..755cff8 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/BuildIncrementVersionInfo.vb @@ -0,0 +1 @@ + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/Resources.Designer.vb b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/Resources.Designer.vb new file mode 100644 index 0000000..4bb7628 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/Resources.Designer.vb @@ -0,0 +1,63 @@ +'------------------------------------------------------------------------------ +' +' 這段程式碼是由工具產生的。 +' 執行階段版本:4.0.30319.42000 +' +' 對這個檔案所做的變更可能會造成錯誤的行為,而且如果重新產生程式碼, +' 變更將會遺失。 +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + +Imports System + +Namespace My.Resources + + '這個類別是自動產生的,是利用 StronglyTypedResourceBuilder + '類別透過 ResGen 或 Visual Studio 這類工具。 + '若要加入或移除成員,請編輯您的 .ResX 檔,然後重新執行 ResGen + '(利用 /str 選項),或重建您的 VS 專案。 + ''' + ''' 用於查詢當地語系化字串等的強類型資源類別。 + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' 傳回這個類別使用的快取的 ResourceManager 執行個體。 + ''' + _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("ET_Subcontractor.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' 覆寫目前執行緒的 CurrentUICulture 屬性,對象是所有 + ''' 使用這個強類型資源類別的資源查閱。 + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set + resourceCulture = value + End Set + End Property + End Module +End Namespace diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/Resources.resx b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/Settings.Designer.vb b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/Settings.Designer.vb new file mode 100644 index 0000000..1ba8a79 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' 這段程式碼是由工具產生的。 +' 執行階段版本:4.0.30319.42000 +' +' 對這個檔案所做的變更可能會造成錯誤的行為,而且如果重新產生程式碼, +' 變更將會遺失。 +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + _ + Partial Friend NotInheritable Class MySettings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) + +#Region "My.Settings 自動儲存功能" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + _ + Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub +#End If +#End Region + + Public Shared ReadOnly Property [Default]() As MySettings + Get + +#If _MyType = "WindowsForms" Then + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If +#End If + Return defaultInstance + End Get + End Property + End Class +End Namespace + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.ET_Subcontractor.My.MySettings + Get + Return Global.ET_Subcontractor.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/Settings.settings b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/Settings.settings new file mode 100644 index 0000000..85b890b --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/licenses.licx b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/licenses.licx new file mode 100644 index 0000000..e3f40e2 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/My Project/licenses.licx @@ -0,0 +1,7 @@ +Infragistics.Win.Misc.UltraButton, Infragistics4.Win.Misc.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.UltraWinEditors.UltraRadioButton, Infragistics4.Win.UltraWinEditors.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.UltraWinEditors.UltraComboEditor, Infragistics4.Win.UltraWinEditors.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.Misc.UltraGroupBox, Infragistics4.Win.Misc.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.UltraWinEditors.UltraTextEditor, Infragistics4.Win.UltraWinEditors.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.Misc.UltraLabel, Infragistics4.Win.Misc.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.Misc.UltraPanel, Infragistics4.Win.Misc.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmBusiness21670.resx b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmBusiness21670.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmBusiness21670.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmBusiness21670.vb b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmBusiness21670.vb new file mode 100644 index 0000000..cbad98c --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmBusiness21670.vb @@ -0,0 +1,1129 @@ +Imports iMESExceptionManager + +Imports Infragistics.Win +Imports Infragistics.Win.UltraWinGrid +Public Class frmSubcontractor1 + + Inherits COM_Kit.frmBasisTemplat + + Public PrivFunNo As String = defString + + '//WS相關變數 + ' 2016 YF, Dim wsENT As New wsENT.wsENT '宣告Web Service物件? + Dim tmpStringReader As System.IO.StringReader '將字串轉換成可讀入DataSet的物件 + Dim XmlData As String '儲存取回之資料 + Dim XmlSchema As String '儲存取回之資料結構 + Dim InXml As String '儲存呼叫Web Service的傳入參數(Request字串) + Dim OutXml As String '儲存Web Service的傳回值(Response字串) + Dim strIdentity As String '儲存Identity XML字串? + Dim strParameter As String '儲存Parameter XML字串 + + '//資料表相關變數 + + Dim dsENT As New DataSet '資料集:儲存取回之資料? + + Dim tblENTSubcontractor As String '儲存取回資料表的名稱(master)? + Dim tblENTSubcontractorCont As String '明細資料表名稱(detail) + Dim strFilter As String 'Filter string及列印的過濾條件 + + '//其他共用變數 + Dim SubcontractorNo As String 'for Gird to Focus + Dim ContactorName As String 'for DetailGrid to Focus + Dim ugrRow As Infragistics.Win.UltraWinGrid.UltraGridRow + Friend WithEvents btnAdd As Misc.UltraButton + Friend WithEvents btnEdit As Misc.UltraButton + Friend WithEvents btnDel As Misc.UltraButton + Friend WithEvents btnCopy As Misc.UltraButton + Friend WithEvents btnApprove As Misc.UltraButton + Friend WithEvents iugSubcontractor As iMESUltraGrid.iMESUltraGridControl + Dim i As Integer + +#Region " Windows Form Designer generated code " + + Public Sub New() + MyBase.New() + + 'This call is required by the Windows Form Designer. + InitializeComponent() + + 'Add any initialization after the InitializeComponent() call + + End Sub + + 'Form overrides dispose to clean up the component list. + Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing Then + If Not (components Is Nothing) Then + components.Dispose() + End If + End If + MyBase.Dispose(disposing) + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.Container + Friend WithEvents iugDetail As iMESUltraGrid.iMESUltraGridControl + Friend WithEvents btnClose As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnEMail As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDCopy As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDDel As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDEdit As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDAdd As Infragistics.Win.Misc.UltraButton + Private Sub InitializeComponent() + Me.btnClose = New Infragistics.Win.Misc.UltraButton() + Me.btnEMail = New Infragistics.Win.Misc.UltraButton() + Me.btnDCopy = New Infragistics.Win.Misc.UltraButton() + Me.btnDDel = New Infragistics.Win.Misc.UltraButton() + Me.btnDEdit = New Infragistics.Win.Misc.UltraButton() + Me.btnDAdd = New Infragistics.Win.Misc.UltraButton() + Me.iugDetail = New iMESUltraGrid.iMESUltraGridControl() + Me.btnAdd = New Infragistics.Win.Misc.UltraButton() + Me.btnEdit = New Infragistics.Win.Misc.UltraButton() + Me.btnDel = New Infragistics.Win.Misc.UltraButton() + Me.btnCopy = New Infragistics.Win.Misc.UltraButton() + Me.btnApprove = New Infragistics.Win.Misc.UltraButton() + Me.iugSubcontractor = New iMESUltraGrid.iMESUltraGridControl() + Me.SuspendLayout() + ' + 'btnClose + ' + Me.btnClose.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnClose.Location = New System.Drawing.Point(912, 552) + Me.btnClose.Name = "btnClose" + Me.btnClose.Size = New System.Drawing.Size(88, 32) + Me.btnClose.TabIndex = 18 + Me.btnClose.Text = "Close (&X)" + ' + 'btnEMail + ' + Me.btnEMail.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnEMail.Location = New System.Drawing.Point(912, 429) + Me.btnEMail.Name = "btnEMail" + Me.btnEMail.Size = New System.Drawing.Size(88, 32) + Me.btnEMail.TabIndex = 17 + Me.btnEMail.Text = "Mail" + ' + 'btnDCopy + ' + Me.btnDCopy.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDCopy.Location = New System.Drawing.Point(912, 389) + Me.btnDCopy.Name = "btnDCopy" + Me.btnDCopy.Size = New System.Drawing.Size(88, 32) + Me.btnDCopy.TabIndex = 16 + Me.btnDCopy.Text = "Copy" + ' + 'btnDDel + ' + Me.btnDDel.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDDel.Location = New System.Drawing.Point(912, 349) + Me.btnDDel.Name = "btnDDel" + Me.btnDDel.Size = New System.Drawing.Size(88, 32) + Me.btnDDel.TabIndex = 15 + Me.btnDDel.Text = "DEL" + ' + 'btnDEdit + ' + Me.btnDEdit.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDEdit.Location = New System.Drawing.Point(912, 309) + Me.btnDEdit.Name = "btnDEdit" + Me.btnDEdit.Size = New System.Drawing.Size(88, 32) + Me.btnDEdit.TabIndex = 14 + Me.btnDEdit.Text = "EDIT" + ' + 'btnDAdd + ' + Me.btnDAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDAdd.Location = New System.Drawing.Point(912, 269) + Me.btnDAdd.Name = "btnDAdd" + Me.btnDAdd.Size = New System.Drawing.Size(88, 32) + Me.btnDAdd.TabIndex = 13 + Me.btnDAdd.Text = "ADD" + ' + 'iugDetail + ' + Me.iugDetail.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.iugDetail.EnterDirection = iMESUltraGrid.iMESUltraGridControl.EnterDirectionEnum.Down + Me.iugDetail.GroupBoxPromptText = "Drag a column header here to group by that column." + Me.iugDetail.GroupBoxTextForeColor = System.Drawing.Color.Red + Me.iugDetail.Identity = "IMes" + Me.iugDetail.IdentityForm = "" + Me.iugDetail.LayOutFilePath = "" + Me.iugDetail.Location = New System.Drawing.Point(12, 270) + Me.iugDetail.Name = "iugDetail" + Me.iugDetail.PrintFitWidthToPages = 0 + Me.iugDetail.PrintLandscape = True + Me.iugDetail.PrintPageFooter = "" + Me.iugDetail.PrintPageFooterHAlign = Infragistics.Win.HAlign.[Default] + Me.iugDetail.PrintPageFooterHeight = 20 + Me.iugDetail.PrintPageHeader = "" + Me.iugDetail.PrintPageHeaderHAlign = Infragistics.Win.HAlign.[Default] + Me.iugDetail.PrintPageHeaderHeight = 20 + Me.iugDetail.PrintZoom = 1.0R + Me.iugDetail.Size = New System.Drawing.Size(894, 314) + Me.iugDetail.TabIndex = 12 + Me.iugDetail.UserNo = "IMes" + ' + 'btnAdd + ' + Me.btnAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnAdd.Location = New System.Drawing.Point(912, 53) + Me.btnAdd.Name = "btnAdd" + Me.btnAdd.Size = New System.Drawing.Size(88, 32) + Me.btnAdd.TabIndex = 20 + Me.btnAdd.Text = "Add(&A)" + ' + 'btnEdit + ' + Me.btnEdit.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnEdit.Location = New System.Drawing.Point(912, 93) + Me.btnEdit.Name = "btnEdit" + Me.btnEdit.Size = New System.Drawing.Size(88, 32) + Me.btnEdit.TabIndex = 21 + Me.btnEdit.Text = "Edit(&E)" + ' + 'btnDel + ' + Me.btnDel.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDel.Location = New System.Drawing.Point(912, 133) + Me.btnDel.Name = "btnDel" + Me.btnDel.Size = New System.Drawing.Size(88, 32) + Me.btnDel.TabIndex = 22 + Me.btnDel.Text = "Del(&D)" + ' + 'btnCopy + ' + Me.btnCopy.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnCopy.Location = New System.Drawing.Point(912, 173) + Me.btnCopy.Name = "btnCopy" + Me.btnCopy.Size = New System.Drawing.Size(88, 32) + Me.btnCopy.TabIndex = 23 + Me.btnCopy.Text = "Copy(&C)" + ' + 'btnApprove + ' + Me.btnApprove.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnApprove.Location = New System.Drawing.Point(912, 213) + Me.btnApprove.Name = "btnApprove" + Me.btnApprove.Size = New System.Drawing.Size(88, 32) + Me.btnApprove.TabIndex = 24 + Me.btnApprove.Text = "Approve(&Y)" + ' + 'iugSubcontractor + ' + Me.iugSubcontractor.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.iugSubcontractor.EnterDirection = iMESUltraGrid.iMESUltraGridControl.EnterDirectionEnum.Down + Me.iugSubcontractor.GroupBoxPromptText = "Drag a column header here to group by that column." + Me.iugSubcontractor.GroupBoxTextForeColor = System.Drawing.Color.Red + Me.iugSubcontractor.Identity = "IMes" + Me.iugSubcontractor.IdentityForm = "" + Me.iugSubcontractor.LayOutFilePath = "" + Me.iugSubcontractor.Location = New System.Drawing.Point(12, 53) + Me.iugSubcontractor.Name = "iugSubcontractor" + Me.iugSubcontractor.PrintFitWidthToPages = 0 + Me.iugSubcontractor.PrintLandscape = True + Me.iugSubcontractor.PrintPageFooter = "" + Me.iugSubcontractor.PrintPageFooterHAlign = Infragistics.Win.HAlign.[Default] + Me.iugSubcontractor.PrintPageFooterHeight = 20 + Me.iugSubcontractor.PrintPageHeader = "" + Me.iugSubcontractor.PrintPageHeaderHAlign = Infragistics.Win.HAlign.[Default] + Me.iugSubcontractor.PrintPageHeaderHeight = 20 + Me.iugSubcontractor.PrintZoom = 1.0R + Me.iugSubcontractor.Size = New System.Drawing.Size(894, 192) + Me.iugSubcontractor.TabIndex = 25 + Me.iugSubcontractor.UserNo = "IMes" + ' + 'frmSubcontractor + ' + Me.ClientSize = New System.Drawing.Size(1008, 591) + Me.Controls.Add(Me.btnClose) + Me.Controls.Add(Me.btnApprove) + Me.Controls.Add(Me.btnEMail) + Me.Controls.Add(Me.btnDCopy) + Me.Controls.Add(Me.btnCopy) + Me.Controls.Add(Me.btnDDel) + Me.Controls.Add(Me.iugSubcontractor) + Me.Controls.Add(Me.btnDEdit) + Me.Controls.Add(Me.btnAdd) + Me.Controls.Add(Me.btnDAdd) + Me.Controls.Add(Me.btnDel) + Me.Controls.Add(Me.iugDetail) + Me.Controls.Add(Me.btnEdit) + Me.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Name = "frmSubcontractor" + Me.Text = "ENT Subcontractor & Contactor" + Me.WindowState = System.Windows.Forms.FormWindowState.Maximized + Me.Controls.SetChildIndex(Me.btnEdit, 0) + Me.Controls.SetChildIndex(Me.iugDetail, 0) + Me.Controls.SetChildIndex(Me.btnDel, 0) + Me.Controls.SetChildIndex(Me.btnDAdd, 0) + Me.Controls.SetChildIndex(Me.btnAdd, 0) + Me.Controls.SetChildIndex(Me.btnDEdit, 0) + Me.Controls.SetChildIndex(Me.iugSubcontractor, 0) + Me.Controls.SetChildIndex(Me.btnDDel, 0) + Me.Controls.SetChildIndex(Me.btnCopy, 0) + Me.Controls.SetChildIndex(Me.btnDCopy, 0) + Me.Controls.SetChildIndex(Me.btnEMail, 0) + Me.Controls.SetChildIndex(Me.btnApprove, 0) + Me.Controls.SetChildIndex(Me.btnClose, 0) + Me.ResumeLayout(False) + + End Sub + +#End Region + + Private Sub frmSubcontractor_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + + Cursor.Current = Cursors.WaitCursor + + ' 2016 YF, wsENT.Url = LocalizeWebService(wsENT.Url.ToString) + ' 2016 YF, wsENT.EnableDecompression = True + + Call funiMESUltraGridIni() 'Grid初始設定 + + '//取出資料 + Call funLoadSubcontractor() + + SetIssueState(Issue.Unfrozen) '預設在Unforzen上 + SetSearchFieldName(New String() {"SubcontractorNo", "SubcontractorNaME"}) '設置搜尋欄位 + + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + ExeGroupControlPriv(Me, PrivFunNo) + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub frmSubcontractor_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing + If Not dsENT Is Nothing Then dsENT.Dispose() + ' 2016 YF, If Not wsENT Is Nothing Then wsENT.Dispose() + End Sub + + Protected Overrides Sub rdoIssue_CheckedChanged(sender As Object, e As EventArgs) + If IsNothing(dsENT) Then Exit Sub + + Select Case GetIssueState() + Case Issue.Unfrozen + dsENT.Tables(tblENTSubcontractor).DefaultView.RowFilter = "IssueState=0" + Case Issue.Pending + dsENT.Tables(tblENTSubcontractor).DefaultView.RowFilter = "IssueState=1" + Case Issue.Active + dsENT.Tables(tblENTSubcontractor).DefaultView.RowFilter = "IssueState=2" + Case Issue.Unused + dsENT.Tables(tblENTSubcontractor).DefaultView.RowFilter = "IssueState=-1" + End Select + Me.iugSubcontractor.iMESUltraGrid.DataSource = dsENT.Tables(tblENTSubcontractor).DefaultView + Call funShowActiveDetail() + End Sub + + Protected Overrides Sub Finalize() + MyBase.Finalize() + End Sub + + Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click + + Dim fSubcontractorDef As New frmSubcontractorDef + + fSubcontractorDef.DefMode = 0 + fSubcontractorDef.ShowDialog(Me) + fSubcontractorDef.Dispose() + + If gReturnKeyValue = "" Then Exit Sub + + SubcontractorNo = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractor() + + If GetIssueState() = Issue.Unfrozen Then + ugrRow = FindRecordPosition(iugSubcontractor, "SubcontractorNo", SubcontractorNo) + If Not ugrRow Is Nothing Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow = ugrRow + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + End If + + End Sub + + Private Sub btnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEdit.Click + + + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + 'IsGroupByRow不做任何處理 + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then + Exit Sub + End If + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractor).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'") + + '核准狀態為"Unfrozen"者才可修改 + + If Rows(0).Item("IssueState") <> 0 Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-202202", "[%NOT ALLOWED TO EDIT%]"), MsgBoxStyle.Exclamation, Me.Text) + Exit Sub + End If + + Dim fSubcontractorDef As New frmSubcontractorDef + fSubcontractorDef.DefMode = 1 + fSubcontractorDef.EditDataRow = Rows(0) + fSubcontractorDef.ShowDialog(Me) + fSubcontractorDef.Dispose() + + If gReturnKeyValue = "" Then Exit Sub + + SubcontractorNo = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractor() + + If GetIssueState() = Issue.Unfrozen Then + ugrRow = FindRecordPosition(iugSubcontractor, "SubcontractorNo", SubcontractorNo) + If Not ugrRow Is Nothing Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow = ugrRow + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + End If + + End If + End Sub + + Private Sub btnDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDel.Click + + + + '1.先檢查是否為單筆,是:將其Selecte + If Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then Exit Sub + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Cursor.Current = Cursors.WaitCursor + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + + '2.Multi + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count > 0 Then + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Item(0).IsGroupByRow Then + Exit Sub 'Selected.Rows,不會包含GroupRow & 一般的Row在一起,故若是GroupRow不做任何處理 + End If + If iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-100001", "[%ARE YOU SURE TO DELETE ALL SELECTED RECORDS%]"), MsgBoxStyle.OkCancel + MsgBoxStyle.Question + MsgBoxStyle.DefaultButton2, Me.Text) = MsgBoxResult.Cancel Then + Exit Sub + End If + + '共用資料 + Dim XmlDoc As New XmlDocument + Dim blnReLoad As Boolean = False + Dim intIssueState As Integer + + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + For i = 0 To Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count - 1 + intIssueState = Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("IssueState").Value + If intIssueState = 0 Or intIssueState = -1 Or intIssueState = 2 Then '狀態為Unforzen或Unused時直接刪除 + + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", CInput(Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("SubcontractorNo").Value.ToString), "") + strParameter = strParameter & CombineXMLParameter("issuestate", "IssueState", "String", CInput(intIssueState), "") + strParameter = strParameter & CombineXMLParameter("datastamp", "DataStamp", "Integer", iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("DataStamp").Value, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + Try + ' 2016 YF, OutXml = wsENT.DelSubcontractor(InXml) + 'OutXml = InvokeSrv("wsENT.DelSubcontractor", InXml) + OutXml = InvokeSrv("SXS.wsENT.DelSubcontractor", InXml) + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + If Not blnReLoad Then blnReLoad = True + Else + '找出Exception訊並顯示出來 + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit For + End If + Catch ex As Exception + 'MsgBox("Unexpected Error. Delete failed," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + Exit For + End Try + Else + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200021", "[%NOT ALLOWED TO delete%]"), MsgBoxStyle.Exclamation, Me.Text) + End If + Next + + XmlDoc = Nothing + + If blnReLoad Then + + Call funLoadSubcontractor() + + Call funShowActiveDetail() + + End If + + End If + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub btnCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCopy.Click + + + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + 'IsGroupByRow不做任何處理 + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then + Exit Sub + End If + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractor).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'") + + Dim fSubcontractorDef As New frmSubcontractorDef + fSubcontractorDef.DefMode = 2 + fSubcontractorDef.EditDataRow = Rows(0) + fSubcontractorDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + SubcontractorNo = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractor() + + If GetIssueState() = Issue.Unfrozen Then + ugrRow = FindRecordPosition(iugSubcontractor, "SubcontractorNo", SubcontractorNo) + If Not ugrRow Is Nothing Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow = ugrRow + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + End If + + End If + End Sub + + Private Sub btnApprove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnApprove.Click + + + + '1.先檢查是否為單筆,是:將其Selecte + If Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then Exit Sub + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Cursor.Current = Cursors.WaitCursor + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + + '2.Multi + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count > 0 Then + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Item(0).IsGroupByRow Then + Exit Sub 'Selected.Rows,不會包含GroupRow & 一般的Row在一起,故若是GroupRow不做任何處理 + End If + If iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-100002", "[%ARE YOU SURE TO APPROVE ALL SELECTED RECORDS%]"), MsgBoxStyle.OkCancel + MsgBoxStyle.Question + MsgBoxStyle.DefaultButton2, Me.Text) = MsgBoxResult.Cancel Then + Exit Sub + End If + + '共用資料 + Dim XmlDoc As New XmlDocument + Dim blnReLoad As Boolean = False + Dim intIssueState As Integer + + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + For i = 0 To Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count - 1 + intIssueState = Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("IssueState").Value + If intIssueState = 0 Then + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", CInput(Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("SubcontractorNo").Value.ToString), "") + strParameter += CombineXMLParameter("issuestate", "IssueState", "String", intIssueState, "") + strParameter += CombineXMLParameter("creator", "Creator", "String", gUserNo, "") + strParameter = strParameter & CombineXMLParameter("datastamp", "DataStamp", "Integer", iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("DataStamp").Value, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + Try + ' 2016 YF, OutXml = wsENT.ApproveSubcontractor(InXml) + 'OutXml = InvokeSrv("wsENT.ApproveSubcontractor", InXml) + OutXml = InvokeSrv("SXS.wsENT.ApproveSubcontractor", InXml) + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + If Not blnReLoad Then blnReLoad = True + Else + '找出Exception訊並顯示出來 + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit For + End If + Catch ex As Exception + 'MsgBox("Unexpected Error. Approve failed," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + Exit For + End Try + Else + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200021", "[%NOT ALLOW TO APPROVE%]"), MsgBoxStyle.Exclamation, Me.Text) + End If + Next + + XmlDoc = Nothing + + If blnReLoad Then + + Call funLoadSubcontractor() + + Call funShowActiveDetail() + + End If + + End If + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub btnDAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDAdd.Click + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + + 'Dim Rows As DataRow() + Dim fSubcontractorContDef As New frmSubcontractorContDef + + fSubcontractorContDef.DefMode = 0 + fSubcontractorContDef.SubcontractorNo = Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString + fSubcontractorContDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + ContactorName = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + ugrRow = FindRecordPosition(iugDetail, "ContactorName", ContactorName) + If Not ugrRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.ActiveRow = ugrRow + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + + End If + End Sub + + Private Sub btnDEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDEdit.Click + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing And Not Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow OrElse iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractorCont).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'" _ + & " And ContactorName = '" & Replace(Me.iugDetail.iMESUltraGrid.ActiveRow.Cells("ContactorName").Value.ToString, "'", "''") & "'") + + Dim fSubcontractorContDef As New frmSubcontractorContDef + fSubcontractorContDef.DefMode = 1 + fSubcontractorContDef.EditDataRow = Rows(0) + fSubcontractorContDef.SubcontractorNo = Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString + fSubcontractorContDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + ContactorName = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + ugrRow = FindRecordPosition(iugDetail, "ContactorName", ContactorName) + If Not ugrRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.ActiveRow = ugrRow + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + Else + + Exit Sub + End If + + End Sub + + Private Sub btnDDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDDel.Click + + + '1.先檢查是否為單筆,是:將其Selecte + If Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then Exit Sub + If iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + + Cursor.Current = Cursors.WaitCursor + + If Not Me.iugDetail.iMESUltraGrid.ActiveRow.Selected Then + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + + '2.Multi + If Me.iugDetail.iMESUltraGrid.Selected.Rows.Count > 0 Then + If Me.iugDetail.iMESUltraGrid.Selected.Rows.Item(0).IsGroupByRow Then + Exit Sub 'Selected.Rows,不會包含GroupRow & 一般的Row在一起,故若是GroupRow不做任何處理 + End If + If iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-100001", "[%ARE YOU SURE TO DELETE ALL SELECTED RECORDS%]"), MsgBoxStyle.OkCancel + MsgBoxStyle.Question + MsgBoxStyle.DefaultButton2, Me.Text) = MsgBoxResult.Cancel Then + Exit Sub + End If + + '共用資料 + Dim XmlDoc As New XmlDocument + Dim blnReLoad As Boolean = False + Dim intIssueState As Integer + + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + For i = 0 To Me.iugDetail.iMESUltraGrid.Selected.Rows.Count - 1 + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", CInput(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString), "") + strParameter = strParameter & CombineXMLParameter("ContactorName", "ContactorName", "String", CInput(Me.iugDetail.iMESUltraGrid.Selected.Rows(i).Cells("ContactorName").Value.ToString), "") + InXml = CombineXMLRequest(strIdentity, strParameter) + Try + ' 2016 YF, OutXml = wsENT.DelSubcontractorCont(InXml) + 'OutXml = InvokeSrv("wsENT.DelSubcontractorCont", InXml) + OutXml = InvokeSrv("SXS.wsENT.DelSubcontractorCont", InXml) + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + If Not blnReLoad Then blnReLoad = True + Else + '找出Exception訊並顯示出來 + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit For + End If + Catch ex As Exception + 'MsgBox("Unexpected Error. Delete failed," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + Exit For + End Try + + Next + + XmlDoc = Nothing + + If blnReLoad Then Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + End If + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub btnDCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDCopy.Click + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing And Not Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow OrElse iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractorCont).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'" _ + & " And ContactorName = '" & Replace(Me.iugDetail.iMESUltraGrid.ActiveRow.Cells("ContactorName").Value.ToString, "'", "''") & "'") + + Dim fSubcontractorContDef As New frmSubcontractorContDef + fSubcontractorContDef.DefMode = 2 + fSubcontractorContDef.EditDataRow = Rows(0) + fSubcontractorContDef.SubcontractorNo = Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString + fSubcontractorContDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + ContactorName = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + ugrRow = FindRecordPosition(iugDetail, "ContactorName", ContactorName) + If Not ugrRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.ActiveRow = ugrRow + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + Else + + Exit Sub + End If + + End Sub + + Private Sub btnEMail_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEMail.Click + + If Not Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then + If iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Dim Rows As DataRow() + Dim proMail As New System.Diagnostics.Process + Dim strAccount As String + + Rows = dsENT.Tables(tblENTSubcontractorCont).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'" _ + & " And ContactorName = '" & Replace(Me.iugDetail.iMESUltraGrid.ActiveRow.Cells("ContactorName").Value.ToString, "'", "''") & "'") + + strAccount = "mailto:" & Rows(0).Item("EMail").ToString + proMail.Start(strAccount) + + End If + + End Sub + + Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click + Me.Close() + End Sub + + Protected Overrides Sub btnQuery_Click(sender As Object, e As EventArgs) + Cursor.Current = Cursors.WaitCursor + + funLoadSubcontractor() + + Cursor.Current = Cursors.Default + End Sub + +#Region "Ultra Grid" + + Private Sub iugSubcontractor_iMESUltraGrid_InitializeLayOut(ByVal sender As System.Object, ByVal e As Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs) Handles iugSubcontractor.iMESUltraGrid_InitializeLayOut + + With e.Layout + With .Bands(0).Columns("SubcontractorNo") + .Header.Caption = "SubcontractorNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 0 + End With + With .Bands(0).Columns("SubcontractorName") + .Header.Caption = "SubcontractorName" + .Width = 110 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 1 + End With + With .Bands(0).Columns("Description") + .Header.Caption = "Description" + .Width = 110 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 2 + End With + With .Bands(0).Columns("Creator") + .Header.Caption = "Creator" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 3 + End With + With .Bands(0).Columns("CreateDate") + .Header.Caption = "CreateDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 4 + End With + With .Bands(0).Columns("IssueState") + .Header.Caption = "IssueState" + .Width = 114 + .Hidden = True + .Header.VisiblePosition = 5 + End With + With .Bands(0).Columns("Reviser") + .Header.Caption = "Reviser" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 6 + End With + With .Bands(0).Columns("ReviseDate") + .Header.Caption = "ReviseDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 7 + End With + With e.Layout.Bands(0).Columns("DataStamp") + .Hidden = True + End With + End With + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + End Sub + + Private Sub iugSubcontractor_iMESUltraGrid_AfterRowActivate(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles iugSubcontractor.iMESUltraGrid_AfterRowActivate + + 'IsGroupByRow不做任何處理 + If Not iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + Else + Exit Sub + End If + + End Sub + + Private Sub iugDetail_iMESUltraGrid_InitializeLayOut(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs) Handles iugDetail.iMESUltraGrid_InitializeLayOut + + With e.Layout + With .Bands(0).Columns("SubcontractorNo") + .Header.Caption = "SubcontractorNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 0 + End With + With .Bands(0).Columns("ContactorName") + .Header.Caption = "ContactorName" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 1 + End With + With .Bands(0).Columns("TelNo") + .Header.Caption = "TelNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 2 + End With + With .Bands(0).Columns("FaxNo") + .Header.Caption = "FaxNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 3 + End With + With .Bands(0).Columns("Title") + .Header.Caption = "Title" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 4 + End With + With .Bands(0).Columns("Address") + .Header.Caption = "Address" + .Width = 110 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 5 + End With + With .Bands(0).Columns("EMail") + .Header.Caption = "EMail" + .Width = 150 + .Hidden = False + .CellAppearance.ForeColor = System.Drawing.Color.Blue + .CellAppearance.FontData.Underline = DefaultableBoolean.True + .Header.VisiblePosition = 6 + End With + With .Bands(0).Columns("Description") + .Header.Caption = "Description" + .Width = 200 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 7 + End With + With .Bands(0).Columns("Creator") + .Header.Caption = "Creator" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 8 + End With + With .Bands(0).Columns("CreateDate") + .Header.Caption = "CreateDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 9 + End With + With .Bands(0).Columns("Reviser") + .Header.Caption = "Reviser" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 10 + End With + With .Bands(0).Columns("ReviseDate") + .Header.Caption = "ReviseDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 11 + End With + With e.Layout.Bands(0).Columns("DataStamp") + .Hidden = True + End With + End With + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + End Sub + +#End Region + +#Region "Load Function" + + '//取出tblENTSubcontractor 外包商資料 + + Private Sub funLoadSubcontractor() + + '先判斷是否dataset中已有ENTSubcontractor之datatable,若有,需先remove否則會有錯誤 + If Not IsNothing(dsENT.Tables(tblENTSubcontractor)) Then + dsENT.Tables.Remove(tblENTSubcontractor) + End If + + '組InXml的字串 + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + '加上IssueState要求取出所有資料 + strParameter = CombineXMLParameter("issuestate", "IssueState", "Integer", defInteger, "") + '加上查詢條件 cboSearchFieldName,txtSearchFieldValue + strParameter += CombineXMLQueryCondition() + InXml = CombineXMLRequest(strIdentity, strParameter) + + Try + ' 2016 YF, OutXml = wsENT.LoadSubcontractor(InXml) + 'OutXml = InvokeSrv("wsENT.LoadSubcontractor", InXml) + OutXml = InvokeSrv("SXS.wsENT.LoadSubcontractor", InXml) + + Dim XmlDoc As New XmlDocument '處理Xml字串之物件? + + '利用XmlDoc物件處理ReturnValue + XmlDoc.LoadXml(OutXml) + + If ChkExecutionSuccess(XmlDoc) Then + '讀取取出資料表之名稱 + + tblENTSubcontractor = XmlDoc.GetElementsByTagName("returnvalue").Item(0).SelectNodes("loadSubcontractor").Item(0).SelectNodes("name").Item(0).InnerXml + '取出Schema,dataset讀取Schema可防止Null Field及DateTime的問題 + + XmlSchema = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractor").Item(0).SelectNodes("schema").Item(0).InnerXml + If XmlSchema <> "" Then + '將XML讀入String Reader object中,因為Dataset讀入XML時必須透過String Reader物件 + tmpStringReader = New System.IO.StringReader(XmlSchema) + dsENT.ReadXmlSchema(tmpStringReader) + tmpStringReader.Close() + End If + + '取出Data + XmlData = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractor").Item(0).SelectNodes("value").Item(0).InnerXml + If XmlData <> "" Then + tmpStringReader = New System.IO.StringReader(XmlData) + dsENT.ReadXml(tmpStringReader, XmlReadMode.InferSchema) + tmpStringReader.Close() + End If + + strFilter = "" + Select Case GetIssueState() + Case Issue.Unfrozen + strFilter = FilterByInteger(strFilter, "IssueState", 0) + Case Issue.Pending + strFilter = FilterByInteger(strFilter, "IssueState", 1) + Case Issue.Active + strFilter = FilterByInteger(strFilter, "IssueState", 2) + Case Issue.Unused + strFilter = FilterByInteger(strFilter, "IssueState", -1) + End Select + + dsENT.Tables(tblENTSubcontractor).DefaultView.RowFilter = strFilter + dsENT.Tables(tblENTSubcontractor).DefaultView.Sort = "SubcontractorNo" + + Me.iugSubcontractor.iMESUltraGrid.DataSource = dsENT.Tables(tblENTSubcontractor).DefaultView + + Else + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit Sub + End If + + XmlDoc = Nothing + + Catch ex As Exception + 'MsgBox("Unexpected Error. Load ENT Subcontractor Failed!!," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + End Try + + End Sub + + '//取出tblENTSubcontractorCont聯絡人資料 + + Private Sub funLoadSubcontractorCont(ByRef SubcontractorNo As String) + + If Not IsNothing(dsENT.Tables(tblENTSubcontractorCont)) Then + dsENT.Tables.Remove(tblENTSubcontractorCont) + End If + + '組InXml的字串 + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", SubcontractorNo, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + + Try + ' 2016 YF, OutXml = wsENT.LoadSubcontractorCont(InXml) + 'OutXml = InvokeSrv("wsENT.LoadSubcontractorCont", InXml) + OutXml = InvokeSrv("SXS.wsENT.LoadSubcontractorCont", InXml) + + Dim XmlDoc As New XmlDocument '處理Xml字串之物件? + + '利用XmlDoc物件處理ReturnValue + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + '讀取取出資料表之名稱 + + tblENTSubcontractorCont = XmlDoc.GetElementsByTagName("returnvalue").Item(0).SelectNodes("loadSubcontractorcont").Item(0).SelectNodes("name").Item(0).InnerXml + '取出Schema,dataset讀取Schema可防止Null Field及DateTime的問題 + XmlSchema = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractorcont").Item(0).SelectNodes("schema").Item(0).InnerXml + If XmlSchema <> "" Then + '將XML讀入String Reader object中,因為Dataset讀入XML時必須透過String Reader物件 + tmpStringReader = New System.IO.StringReader(XmlSchema) + dsENT.ReadXmlSchema(tmpStringReader) + tmpStringReader.Close() + End If + + '取出Data + XmlData = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractorcont").Item(0).SelectNodes("value").Item(0).InnerXml + If XmlData <> "" Then + tmpStringReader = New System.IO.StringReader(XmlData) + dsENT.ReadXml(tmpStringReader, XmlReadMode.InferSchema) + tmpStringReader.Close() + End If + + Me.iugDetail.iMESUltraGrid.DataSource = dsENT.Tables(tblENTSubcontractorCont).DefaultView + + Else + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + End If + + XmlDoc = Nothing + + Catch ex As Exception + 'MsgBox("Unexpected Error. Load ENT Subcontractor Cont Failed!!," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + End Try + + End Sub + + Private Sub funShowActiveDetail() + + If Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.DataSource = Nothing + Else + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + End If + + End Sub + + Private Sub funiMESUltraGridIni() + + 'iugSubcontractor 初始設定 + With Me.iugSubcontractor.iMESUltraGrid + .Text = "" + .DisplayLayout.GroupByBox.Hidden = True + .DisplayLayout.UseFixedHeaders = False + End With + + '系統會以UserNo做為Layout的檔名 + + iugSubcontractor.UserNo = gUserNo + + 'iugDetail 初始設定 + With Me.iugDetail.iMESUltraGrid.DisplayLayout + .GroupByBox.Hidden = True + .Override.ExpansionIndicator = ShowExpansionIndicator.Default + .ViewStyle = ViewStyle.SingleBand + .RowConnectorStyle = RowConnectorStyle.Default + + End With + + '系統會以UserNo做為Layout的檔名 + + iugDetail.UserNo = gUserNo + + End Sub + + +#End Region + +End Class + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmSubcontractor.resx b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmSubcontractor.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmSubcontractor.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmSubcontractor.vb b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmSubcontractor.vb new file mode 100644 index 0000000..64a05ce --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmSubcontractor.vb @@ -0,0 +1,1129 @@ +Imports iMESExceptionManager + +Imports Infragistics.Win +Imports Infragistics.Win.UltraWinGrid +Public Class frmSubcontractor + + Inherits COM_Kit.frmBasisTemplat + + Public PrivFunNo As String = defString + + '//WS相關變數 + ' 2016 YF, Dim wsENT As New wsENT.wsENT '宣告Web Service物件? + Dim tmpStringReader As System.IO.StringReader '將字串轉換成可讀入DataSet的物件 + Dim XmlData As String '儲存取回之資料 + Dim XmlSchema As String '儲存取回之資料結構 + Dim InXml As String '儲存呼叫Web Service的傳入參數(Request字串) + Dim OutXml As String '儲存Web Service的傳回值(Response字串) + Dim strIdentity As String '儲存Identity XML字串? + Dim strParameter As String '儲存Parameter XML字串 + + '//資料表相關變數 + + Dim dsENT As New DataSet '資料集:儲存取回之資料? + + Dim tblENTSubcontractor As String '儲存取回資料表的名稱(master)? + Dim tblENTSubcontractorCont As String '明細資料表名稱(detail) + Dim strFilter As String 'Filter string及列印的過濾條件 + + '//其他共用變數 + Dim SubcontractorNo As String 'for Gird to Focus + Dim ContactorName As String 'for DetailGrid to Focus + Dim ugrRow As Infragistics.Win.UltraWinGrid.UltraGridRow + Friend WithEvents btnAdd As Misc.UltraButton + Friend WithEvents btnEdit As Misc.UltraButton + Friend WithEvents btnDel As Misc.UltraButton + Friend WithEvents btnCopy As Misc.UltraButton + Friend WithEvents btnApprove As Misc.UltraButton + Friend WithEvents iugSubcontractor As iMESUltraGrid.iMESUltraGridControl + Dim i As Integer + +#Region " Windows Form Designer generated code " + + Public Sub New() + MyBase.New() + + 'This call is required by the Windows Form Designer. + InitializeComponent() + + 'Add any initialization after the InitializeComponent() call + + End Sub + + 'Form overrides dispose to clean up the component list. + Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing Then + If Not (components Is Nothing) Then + components.Dispose() + End If + End If + MyBase.Dispose(disposing) + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.Container + Friend WithEvents iugDetail As iMESUltraGrid.iMESUltraGridControl + Friend WithEvents btnClose As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnEMail As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDCopy As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDDel As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDEdit As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDAdd As Infragistics.Win.Misc.UltraButton + Private Sub InitializeComponent() + Me.btnClose = New Infragistics.Win.Misc.UltraButton() + Me.btnEMail = New Infragistics.Win.Misc.UltraButton() + Me.btnDCopy = New Infragistics.Win.Misc.UltraButton() + Me.btnDDel = New Infragistics.Win.Misc.UltraButton() + Me.btnDEdit = New Infragistics.Win.Misc.UltraButton() + Me.btnDAdd = New Infragistics.Win.Misc.UltraButton() + Me.iugDetail = New iMESUltraGrid.iMESUltraGridControl() + Me.btnAdd = New Infragistics.Win.Misc.UltraButton() + Me.btnEdit = New Infragistics.Win.Misc.UltraButton() + Me.btnDel = New Infragistics.Win.Misc.UltraButton() + Me.btnCopy = New Infragistics.Win.Misc.UltraButton() + Me.btnApprove = New Infragistics.Win.Misc.UltraButton() + Me.iugSubcontractor = New iMESUltraGrid.iMESUltraGridControl() + Me.SuspendLayout() + ' + 'btnClose + ' + Me.btnClose.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnClose.Location = New System.Drawing.Point(912, 552) + Me.btnClose.Name = "btnClose" + Me.btnClose.Size = New System.Drawing.Size(88, 32) + Me.btnClose.TabIndex = 18 + Me.btnClose.Text = "Close (&X)" + ' + 'btnEMail + ' + Me.btnEMail.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnEMail.Location = New System.Drawing.Point(912, 429) + Me.btnEMail.Name = "btnEMail" + Me.btnEMail.Size = New System.Drawing.Size(88, 32) + Me.btnEMail.TabIndex = 17 + Me.btnEMail.Text = "Mail" + ' + 'btnDCopy + ' + Me.btnDCopy.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDCopy.Location = New System.Drawing.Point(912, 389) + Me.btnDCopy.Name = "btnDCopy" + Me.btnDCopy.Size = New System.Drawing.Size(88, 32) + Me.btnDCopy.TabIndex = 16 + Me.btnDCopy.Text = "Copy" + ' + 'btnDDel + ' + Me.btnDDel.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDDel.Location = New System.Drawing.Point(912, 349) + Me.btnDDel.Name = "btnDDel" + Me.btnDDel.Size = New System.Drawing.Size(88, 32) + Me.btnDDel.TabIndex = 15 + Me.btnDDel.Text = "DEL" + ' + 'btnDEdit + ' + Me.btnDEdit.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDEdit.Location = New System.Drawing.Point(912, 309) + Me.btnDEdit.Name = "btnDEdit" + Me.btnDEdit.Size = New System.Drawing.Size(88, 32) + Me.btnDEdit.TabIndex = 14 + Me.btnDEdit.Text = "EDIT" + ' + 'btnDAdd + ' + Me.btnDAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDAdd.Location = New System.Drawing.Point(912, 269) + Me.btnDAdd.Name = "btnDAdd" + Me.btnDAdd.Size = New System.Drawing.Size(88, 32) + Me.btnDAdd.TabIndex = 13 + Me.btnDAdd.Text = "ADD" + ' + 'iugDetail + ' + Me.iugDetail.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.iugDetail.EnterDirection = iMESUltraGrid.iMESUltraGridControl.EnterDirectionEnum.Down + Me.iugDetail.GroupBoxPromptText = "Drag a column header here to group by that column." + Me.iugDetail.GroupBoxTextForeColor = System.Drawing.Color.Red + Me.iugDetail.Identity = "IMes" + Me.iugDetail.IdentityForm = "" + Me.iugDetail.LayOutFilePath = "" + Me.iugDetail.Location = New System.Drawing.Point(12, 269) + Me.iugDetail.Name = "iugDetail" + Me.iugDetail.PrintFitWidthToPages = 0 + Me.iugDetail.PrintLandscape = True + Me.iugDetail.PrintPageFooter = "" + Me.iugDetail.PrintPageFooterHAlign = Infragistics.Win.HAlign.[Default] + Me.iugDetail.PrintPageFooterHeight = 20 + Me.iugDetail.PrintPageHeader = "" + Me.iugDetail.PrintPageHeaderHAlign = Infragistics.Win.HAlign.[Default] + Me.iugDetail.PrintPageHeaderHeight = 20 + Me.iugDetail.PrintZoom = 1.0R + Me.iugDetail.Size = New System.Drawing.Size(894, 314) + Me.iugDetail.TabIndex = 12 + Me.iugDetail.UserNo = "IMes" + ' + 'btnAdd + ' + Me.btnAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnAdd.Location = New System.Drawing.Point(912, 53) + Me.btnAdd.Name = "btnAdd" + Me.btnAdd.Size = New System.Drawing.Size(88, 32) + Me.btnAdd.TabIndex = 20 + Me.btnAdd.Text = "Add(&A)" + ' + 'btnEdit + ' + Me.btnEdit.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnEdit.Location = New System.Drawing.Point(912, 93) + Me.btnEdit.Name = "btnEdit" + Me.btnEdit.Size = New System.Drawing.Size(88, 32) + Me.btnEdit.TabIndex = 21 + Me.btnEdit.Text = "Edit(&E)" + ' + 'btnDel + ' + Me.btnDel.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDel.Location = New System.Drawing.Point(912, 133) + Me.btnDel.Name = "btnDel" + Me.btnDel.Size = New System.Drawing.Size(88, 32) + Me.btnDel.TabIndex = 22 + Me.btnDel.Text = "Del(&D)" + ' + 'btnCopy + ' + Me.btnCopy.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnCopy.Location = New System.Drawing.Point(912, 173) + Me.btnCopy.Name = "btnCopy" + Me.btnCopy.Size = New System.Drawing.Size(88, 32) + Me.btnCopy.TabIndex = 23 + Me.btnCopy.Text = "Copy(&C)" + ' + 'btnApprove + ' + Me.btnApprove.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnApprove.Location = New System.Drawing.Point(912, 213) + Me.btnApprove.Name = "btnApprove" + Me.btnApprove.Size = New System.Drawing.Size(88, 32) + Me.btnApprove.TabIndex = 24 + Me.btnApprove.Text = "Approve(&Y)" + ' + 'iugSubcontractor + ' + Me.iugSubcontractor.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.iugSubcontractor.EnterDirection = iMESUltraGrid.iMESUltraGridControl.EnterDirectionEnum.Down + Me.iugSubcontractor.GroupBoxPromptText = "Drag a column header here to group by that column." + Me.iugSubcontractor.GroupBoxTextForeColor = System.Drawing.Color.Red + Me.iugSubcontractor.Identity = "IMes" + Me.iugSubcontractor.IdentityForm = "" + Me.iugSubcontractor.LayOutFilePath = "" + Me.iugSubcontractor.Location = New System.Drawing.Point(12, 53) + Me.iugSubcontractor.Name = "iugSubcontractor" + Me.iugSubcontractor.PrintFitWidthToPages = 0 + Me.iugSubcontractor.PrintLandscape = True + Me.iugSubcontractor.PrintPageFooter = "" + Me.iugSubcontractor.PrintPageFooterHAlign = Infragistics.Win.HAlign.[Default] + Me.iugSubcontractor.PrintPageFooterHeight = 20 + Me.iugSubcontractor.PrintPageHeader = "" + Me.iugSubcontractor.PrintPageHeaderHAlign = Infragistics.Win.HAlign.[Default] + Me.iugSubcontractor.PrintPageHeaderHeight = 20 + Me.iugSubcontractor.PrintZoom = 1.0R + Me.iugSubcontractor.Size = New System.Drawing.Size(894, 192) + Me.iugSubcontractor.TabIndex = 25 + Me.iugSubcontractor.UserNo = "IMes" + ' + 'frmSubcontractor + ' + Me.ClientSize = New System.Drawing.Size(1008, 591) + Me.Controls.Add(Me.btnClose) + Me.Controls.Add(Me.btnApprove) + Me.Controls.Add(Me.btnEMail) + Me.Controls.Add(Me.btnDCopy) + Me.Controls.Add(Me.btnCopy) + Me.Controls.Add(Me.btnDDel) + Me.Controls.Add(Me.iugSubcontractor) + Me.Controls.Add(Me.btnDEdit) + Me.Controls.Add(Me.btnAdd) + Me.Controls.Add(Me.btnDAdd) + Me.Controls.Add(Me.btnDel) + Me.Controls.Add(Me.iugDetail) + Me.Controls.Add(Me.btnEdit) + Me.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Name = "frmSubcontractor" + Me.Text = "ENT Subcontractor & Contactor" + Me.WindowState = System.Windows.Forms.FormWindowState.Maximized + Me.Controls.SetChildIndex(Me.btnEdit, 0) + Me.Controls.SetChildIndex(Me.iugDetail, 0) + Me.Controls.SetChildIndex(Me.btnDel, 0) + Me.Controls.SetChildIndex(Me.btnDAdd, 0) + Me.Controls.SetChildIndex(Me.btnAdd, 0) + Me.Controls.SetChildIndex(Me.btnDEdit, 0) + Me.Controls.SetChildIndex(Me.iugSubcontractor, 0) + Me.Controls.SetChildIndex(Me.btnDDel, 0) + Me.Controls.SetChildIndex(Me.btnCopy, 0) + Me.Controls.SetChildIndex(Me.btnDCopy, 0) + Me.Controls.SetChildIndex(Me.btnEMail, 0) + Me.Controls.SetChildIndex(Me.btnApprove, 0) + Me.Controls.SetChildIndex(Me.btnClose, 0) + Me.ResumeLayout(False) + + End Sub + +#End Region + + Private Sub frmSubcontractor_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + + Cursor.Current = Cursors.WaitCursor + + ' 2016 YF, wsENT.Url = LocalizeWebService(wsENT.Url.ToString) + ' 2016 YF, wsENT.EnableDecompression = True + + Call funiMESUltraGridIni() 'Grid初始設定 + + '//取出資料 + Call funLoadSubcontractor() + + SetIssueState(Issue.Unfrozen) '預設在Unforzen上 + SetSearchFieldName(New String() {"SubcontractorNo", "SubcontractorNaME"}) '設置搜尋欄位 + + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + ExeGroupControlPriv(Me, PrivFunNo) + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub frmSubcontractor_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing + If Not dsENT Is Nothing Then dsENT.Dispose() + ' 2016 YF, If Not wsENT Is Nothing Then wsENT.Dispose() + End Sub + + Protected Overrides Sub rdoIssue_CheckedChanged(sender As Object, e As EventArgs) + If IsNothing(dsENT) Then Exit Sub + + Select Case GetIssueState() + Case Issue.Unfrozen + dsENT.Tables(tblENTSubcontractor).DefaultView.RowFilter = "IssueState=0" + Case Issue.Pending + dsENT.Tables(tblENTSubcontractor).DefaultView.RowFilter = "IssueState=1" + Case Issue.Active + dsENT.Tables(tblENTSubcontractor).DefaultView.RowFilter = "IssueState=2" + Case Issue.Unused + dsENT.Tables(tblENTSubcontractor).DefaultView.RowFilter = "IssueState=-1" + End Select + Me.iugSubcontractor.iMESUltraGrid.DataSource = dsENT.Tables(tblENTSubcontractor).DefaultView + Call funShowActiveDetail() + End Sub + + Protected Overrides Sub Finalize() + MyBase.Finalize() + End Sub + + Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click + + Dim fSubcontractorDef As New frmSubcontractorDef + + fSubcontractorDef.DefMode = 0 + fSubcontractorDef.ShowDialog(Me) + fSubcontractorDef.Dispose() + + If gReturnKeyValue = "" Then Exit Sub + + SubcontractorNo = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractor() + + If GetIssueState() = Issue.Unfrozen Then + ugrRow = FindRecordPosition(iugSubcontractor, "SubcontractorNo", SubcontractorNo) + If Not ugrRow Is Nothing Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow = ugrRow + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + End If + + End Sub + + Private Sub btnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEdit.Click + + + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + 'IsGroupByRow不做任何處理 + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then + Exit Sub + End If + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractor).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'") + + '核准狀態為"Unfrozen"者才可修改 + + If Rows(0).Item("IssueState") <> 0 Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-202202", "[%NOT ALLOWED TO EDIT%]"), MsgBoxStyle.Exclamation, Me.Text) + Exit Sub + End If + + Dim fSubcontractorDef As New frmSubcontractorDef + fSubcontractorDef.DefMode = 1 + fSubcontractorDef.EditDataRow = Rows(0) + fSubcontractorDef.ShowDialog(Me) + fSubcontractorDef.Dispose() + + If gReturnKeyValue = "" Then Exit Sub + + SubcontractorNo = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractor() + + If GetIssueState() = Issue.Unfrozen Then + ugrRow = FindRecordPosition(iugSubcontractor, "SubcontractorNo", SubcontractorNo) + If Not ugrRow Is Nothing Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow = ugrRow + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + End If + + End If + End Sub + + Private Sub btnDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDel.Click + + + + '1.先檢查是否為單筆,是:將其Selecte + If Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then Exit Sub + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Cursor.Current = Cursors.WaitCursor + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + + '2.Multi + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count > 0 Then + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Item(0).IsGroupByRow Then + Exit Sub 'Selected.Rows,不會包含GroupRow & 一般的Row在一起,故若是GroupRow不做任何處理 + End If + If iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-100001", "[%ARE YOU SURE TO DELETE ALL SELECTED RECORDS%]"), MsgBoxStyle.OkCancel + MsgBoxStyle.Question + MsgBoxStyle.DefaultButton2, Me.Text) = MsgBoxResult.Cancel Then + Exit Sub + End If + + '共用資料 + Dim XmlDoc As New XmlDocument + Dim blnReLoad As Boolean = False + Dim intIssueState As Integer + + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + For i = 0 To Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count - 1 + intIssueState = Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("IssueState").Value + If intIssueState = 0 Or intIssueState = -1 Or intIssueState = 2 Then '狀態為Unforzen或Unused時直接刪除 + + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", CInput(Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("SubcontractorNo").Value.ToString), "") + strParameter = strParameter & CombineXMLParameter("issuestate", "IssueState", "String", CInput(intIssueState), "") + strParameter = strParameter & CombineXMLParameter("datastamp", "DataStamp", "Integer", iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("DataStamp").Value, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + Try + ' 2016 YF, OutXml = wsENT.DelSubcontractor(InXml) + 'OutXml = InvokeSrv("wsENT.DelSubcontractor", InXml) + OutXml = InvokeSrv("SXS.wsENT.DelSubcontractor", InXml) + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + If Not blnReLoad Then blnReLoad = True + Else + '找出Exception訊並顯示出來 + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit For + End If + Catch ex As Exception + 'MsgBox("Unexpected Error. Delete failed," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + Exit For + End Try + Else + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200021", "[%NOT ALLOWED TO delete%]"), MsgBoxStyle.Exclamation, Me.Text) + End If + Next + + XmlDoc = Nothing + + If blnReLoad Then + + Call funLoadSubcontractor() + + Call funShowActiveDetail() + + End If + + End If + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub btnCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCopy.Click + + + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + 'IsGroupByRow不做任何處理 + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then + Exit Sub + End If + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractor).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'") + + Dim fSubcontractorDef As New frmSubcontractorDef + fSubcontractorDef.DefMode = 2 + fSubcontractorDef.EditDataRow = Rows(0) + fSubcontractorDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + SubcontractorNo = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractor() + + If GetIssueState() = Issue.Unfrozen Then + ugrRow = FindRecordPosition(iugSubcontractor, "SubcontractorNo", SubcontractorNo) + If Not ugrRow Is Nothing Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow = ugrRow + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + End If + + End If + End Sub + + Private Sub btnApprove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnApprove.Click + + + + '1.先檢查是否為單筆,是:將其Selecte + If Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then Exit Sub + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Cursor.Current = Cursors.WaitCursor + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + + '2.Multi + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count > 0 Then + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Item(0).IsGroupByRow Then + Exit Sub 'Selected.Rows,不會包含GroupRow & 一般的Row在一起,故若是GroupRow不做任何處理 + End If + If iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-100002", "[%ARE YOU SURE TO APPROVE ALL SELECTED RECORDS%]"), MsgBoxStyle.OkCancel + MsgBoxStyle.Question + MsgBoxStyle.DefaultButton2, Me.Text) = MsgBoxResult.Cancel Then + Exit Sub + End If + + '共用資料 + Dim XmlDoc As New XmlDocument + Dim blnReLoad As Boolean = False + Dim intIssueState As Integer + + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + For i = 0 To Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count - 1 + intIssueState = Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("IssueState").Value + If intIssueState = 0 Then + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", CInput(Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("SubcontractorNo").Value.ToString), "") + strParameter += CombineXMLParameter("issuestate", "IssueState", "String", intIssueState, "") + strParameter += CombineXMLParameter("creator", "Creator", "String", gUserNo, "") + strParameter = strParameter & CombineXMLParameter("datastamp", "DataStamp", "Integer", iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("DataStamp").Value, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + Try + ' 2016 YF, OutXml = wsENT.ApproveSubcontractor(InXml) + 'OutXml = InvokeSrv("wsENT.ApproveSubcontractor", InXml) + OutXml = InvokeSrv("SXS.wsENT.ApproveSubcontractor", InXml) + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + If Not blnReLoad Then blnReLoad = True + Else + '找出Exception訊並顯示出來 + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit For + End If + Catch ex As Exception + 'MsgBox("Unexpected Error. Approve failed," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + Exit For + End Try + Else + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200021", "[%NOT ALLOW TO APPROVE%]"), MsgBoxStyle.Exclamation, Me.Text) + End If + Next + + XmlDoc = Nothing + + If blnReLoad Then + + Call funLoadSubcontractor() + + Call funShowActiveDetail() + + End If + + End If + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub btnDAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDAdd.Click + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + + 'Dim Rows As DataRow() + Dim fSubcontractorContDef As New frmSubcontractorContDef + + fSubcontractorContDef.DefMode = 0 + fSubcontractorContDef.SubcontractorNo = Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString + fSubcontractorContDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + ContactorName = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + ugrRow = FindRecordPosition(iugDetail, "ContactorName", ContactorName) + If Not ugrRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.ActiveRow = ugrRow + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + + End If + End Sub + + Private Sub btnDEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDEdit.Click + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing And Not Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow OrElse iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractorCont).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'" _ + & " And ContactorName = '" & Replace(Me.iugDetail.iMESUltraGrid.ActiveRow.Cells("ContactorName").Value.ToString, "'", "''") & "'") + + Dim fSubcontractorContDef As New frmSubcontractorContDef + fSubcontractorContDef.DefMode = 1 + fSubcontractorContDef.EditDataRow = Rows(0) + fSubcontractorContDef.SubcontractorNo = Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString + fSubcontractorContDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + ContactorName = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + ugrRow = FindRecordPosition(iugDetail, "ContactorName", ContactorName) + If Not ugrRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.ActiveRow = ugrRow + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + Else + + Exit Sub + End If + + End Sub + + Private Sub btnDDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDDel.Click + + + '1.先檢查是否為單筆,是:將其Selecte + If Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then Exit Sub + If iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + + Cursor.Current = Cursors.WaitCursor + + If Not Me.iugDetail.iMESUltraGrid.ActiveRow.Selected Then + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + + '2.Multi + If Me.iugDetail.iMESUltraGrid.Selected.Rows.Count > 0 Then + If Me.iugDetail.iMESUltraGrid.Selected.Rows.Item(0).IsGroupByRow Then + Exit Sub 'Selected.Rows,不會包含GroupRow & 一般的Row在一起,故若是GroupRow不做任何處理 + End If + If iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-100001", "[%ARE YOU SURE TO DELETE ALL SELECTED RECORDS%]"), MsgBoxStyle.OkCancel + MsgBoxStyle.Question + MsgBoxStyle.DefaultButton2, Me.Text) = MsgBoxResult.Cancel Then + Exit Sub + End If + + '共用資料 + Dim XmlDoc As New XmlDocument + Dim blnReLoad As Boolean = False + Dim intIssueState As Integer + + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + For i = 0 To Me.iugDetail.iMESUltraGrid.Selected.Rows.Count - 1 + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", CInput(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString), "") + strParameter = strParameter & CombineXMLParameter("ContactorName", "ContactorName", "String", CInput(Me.iugDetail.iMESUltraGrid.Selected.Rows(i).Cells("ContactorName").Value.ToString), "") + InXml = CombineXMLRequest(strIdentity, strParameter) + Try + ' 2016 YF, OutXml = wsENT.DelSubcontractorCont(InXml) + 'OutXml = InvokeSrv("wsENT.DelSubcontractorCont", InXml) + OutXml = InvokeSrv("SXS.wsENT.DelSubcontractorCont", InXml) + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + If Not blnReLoad Then blnReLoad = True + Else + '找出Exception訊並顯示出來 + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit For + End If + Catch ex As Exception + 'MsgBox("Unexpected Error. Delete failed," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + Exit For + End Try + + Next + + XmlDoc = Nothing + + If blnReLoad Then Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + End If + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub btnDCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDCopy.Click + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing And Not Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow OrElse iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractorCont).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'" _ + & " And ContactorName = '" & Replace(Me.iugDetail.iMESUltraGrid.ActiveRow.Cells("ContactorName").Value.ToString, "'", "''") & "'") + + Dim fSubcontractorContDef As New frmSubcontractorContDef + fSubcontractorContDef.DefMode = 2 + fSubcontractorContDef.EditDataRow = Rows(0) + fSubcontractorContDef.SubcontractorNo = Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString + fSubcontractorContDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + ContactorName = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + ugrRow = FindRecordPosition(iugDetail, "ContactorName", ContactorName) + If Not ugrRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.ActiveRow = ugrRow + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + Else + + Exit Sub + End If + + End Sub + + Private Sub btnEMail_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEMail.Click + + If Not Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then + If iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Dim Rows As DataRow() + Dim proMail As New System.Diagnostics.Process + Dim strAccount As String + + Rows = dsENT.Tables(tblENTSubcontractorCont).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'" _ + & " And ContactorName = '" & Replace(Me.iugDetail.iMESUltraGrid.ActiveRow.Cells("ContactorName").Value.ToString, "'", "''") & "'") + + strAccount = "mailto:" & Rows(0).Item("EMail").ToString + proMail.Start(strAccount) + + End If + + End Sub + + Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click + Me.Close() + End Sub + + Protected Overrides Sub btnQuery_Click(sender As Object, e As EventArgs) + Cursor.Current = Cursors.WaitCursor + + funLoadSubcontractor() + + Cursor.Current = Cursors.Default + End Sub + +#Region "Ultra Grid" + + Private Sub iugSubcontractor_iMESUltraGrid_InitializeLayOut(ByVal sender As System.Object, ByVal e As Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs) Handles iugSubcontractor.iMESUltraGrid_InitializeLayOut + + With e.Layout + With .Bands(0).Columns("SubcontractorNo") + .Header.Caption = "SubcontractorNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 0 + End With + With .Bands(0).Columns("SubcontractorName") + .Header.Caption = "SubcontractorName" + .Width = 110 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 1 + End With + With .Bands(0).Columns("Description") + .Header.Caption = "Description" + .Width = 110 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 2 + End With + With .Bands(0).Columns("Creator") + .Header.Caption = "Creator" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 3 + End With + With .Bands(0).Columns("CreateDate") + .Header.Caption = "CreateDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 4 + End With + With .Bands(0).Columns("IssueState") + .Header.Caption = "IssueState" + .Width = 114 + .Hidden = True + .Header.VisiblePosition = 5 + End With + With .Bands(0).Columns("Reviser") + .Header.Caption = "Reviser" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 6 + End With + With .Bands(0).Columns("ReviseDate") + .Header.Caption = "ReviseDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 7 + End With + With e.Layout.Bands(0).Columns("DataStamp") + .Hidden = True + End With + End With + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + End Sub + + Private Sub iugSubcontractor_iMESUltraGrid_AfterRowActivate(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles iugSubcontractor.iMESUltraGrid_AfterRowActivate + + 'IsGroupByRow不做任何處理 + If Not iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + Else + Exit Sub + End If + + End Sub + + Private Sub iugDetail_iMESUltraGrid_InitializeLayOut(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs) Handles iugDetail.iMESUltraGrid_InitializeLayOut + + With e.Layout + With .Bands(0).Columns("SubcontractorNo") + .Header.Caption = "SubcontractorNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 0 + End With + With .Bands(0).Columns("ContactorName") + .Header.Caption = "ContactorName" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 1 + End With + With .Bands(0).Columns("TelNo") + .Header.Caption = "TelNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 2 + End With + With .Bands(0).Columns("FaxNo") + .Header.Caption = "FaxNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 3 + End With + With .Bands(0).Columns("Title") + .Header.Caption = "Title" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 4 + End With + With .Bands(0).Columns("Address") + .Header.Caption = "Address" + .Width = 110 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 5 + End With + With .Bands(0).Columns("EMail") + .Header.Caption = "EMail" + .Width = 150 + .Hidden = False + .CellAppearance.ForeColor = System.Drawing.Color.Blue + .CellAppearance.FontData.Underline = DefaultableBoolean.True + .Header.VisiblePosition = 6 + End With + With .Bands(0).Columns("Description") + .Header.Caption = "Description" + .Width = 200 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 7 + End With + With .Bands(0).Columns("Creator") + .Header.Caption = "Creator" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 8 + End With + With .Bands(0).Columns("CreateDate") + .Header.Caption = "CreateDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 9 + End With + With .Bands(0).Columns("Reviser") + .Header.Caption = "Reviser" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 10 + End With + With .Bands(0).Columns("ReviseDate") + .Header.Caption = "ReviseDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 11 + End With + With e.Layout.Bands(0).Columns("DataStamp") + .Hidden = True + End With + End With + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + End Sub + +#End Region + +#Region "Load Function" + + '//取出tblENTSubcontractor 外包商資料 + + Private Sub funLoadSubcontractor() + + '先判斷是否dataset中已有ENTSubcontractor之datatable,若有,需先remove否則會有錯誤 + If Not IsNothing(dsENT.Tables(tblENTSubcontractor)) Then + dsENT.Tables.Remove(tblENTSubcontractor) + End If + + '組InXml的字串 + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + '加上IssueState要求取出所有資料 + strParameter = CombineXMLParameter("issuestate", "IssueState", "Integer", defInteger, "") + '加上查詢條件 cboSearchFieldName,txtSearchFieldValue + strParameter += CombineXMLQueryCondition() + InXml = CombineXMLRequest(strIdentity, strParameter) + + Try + ' 2016 YF, OutXml = wsENT.LoadSubcontractor(InXml) + 'OutXml = InvokeSrv("wsENT.LoadSubcontractor", InXml) + OutXml = InvokeSrv("SXS.wsENT.LoadSubcontractor", InXml) + + Dim XmlDoc As New XmlDocument '處理Xml字串之物件? + + '利用XmlDoc物件處理ReturnValue + XmlDoc.LoadXml(OutXml) + + If ChkExecutionSuccess(XmlDoc) Then + '讀取取出資料表之名稱 + + tblENTSubcontractor = XmlDoc.GetElementsByTagName("returnvalue").Item(0).SelectNodes("loadSubcontractor").Item(0).SelectNodes("name").Item(0).InnerXml + '取出Schema,dataset讀取Schema可防止Null Field及DateTime的問題 + + XmlSchema = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractor").Item(0).SelectNodes("schema").Item(0).InnerXml + If XmlSchema <> "" Then + '將XML讀入String Reader object中,因為Dataset讀入XML時必須透過String Reader物件 + tmpStringReader = New System.IO.StringReader(XmlSchema) + dsENT.ReadXmlSchema(tmpStringReader) + tmpStringReader.Close() + End If + + '取出Data + XmlData = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractor").Item(0).SelectNodes("value").Item(0).InnerXml + If XmlData <> "" Then + tmpStringReader = New System.IO.StringReader(XmlData) + dsENT.ReadXml(tmpStringReader, XmlReadMode.InferSchema) + tmpStringReader.Close() + End If + + strFilter = "" + Select Case GetIssueState() + Case Issue.Unfrozen + strFilter = FilterByInteger(strFilter, "IssueState", 0) + Case Issue.Pending + strFilter = FilterByInteger(strFilter, "IssueState", 1) + Case Issue.Active + strFilter = FilterByInteger(strFilter, "IssueState", 2) + Case Issue.Unused + strFilter = FilterByInteger(strFilter, "IssueState", -1) + End Select + + dsENT.Tables(tblENTSubcontractor).DefaultView.RowFilter = strFilter + dsENT.Tables(tblENTSubcontractor).DefaultView.Sort = "SubcontractorNo" + + Me.iugSubcontractor.iMESUltraGrid.DataSource = dsENT.Tables(tblENTSubcontractor).DefaultView + + Else + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit Sub + End If + + XmlDoc = Nothing + + Catch ex As Exception + 'MsgBox("Unexpected Error. Load ENT Subcontractor Failed!!," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + End Try + + End Sub + + '//取出tblENTSubcontractorCont聯絡人資料 + + Private Sub funLoadSubcontractorCont(ByRef SubcontractorNo As String) + + If Not IsNothing(dsENT.Tables(tblENTSubcontractorCont)) Then + dsENT.Tables.Remove(tblENTSubcontractorCont) + End If + + '組InXml的字串 + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", SubcontractorNo, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + + Try + ' 2016 YF, OutXml = wsENT.LoadSubcontractorCont(InXml) + 'OutXml = InvokeSrv("wsENT.LoadSubcontractorCont", InXml) + OutXml = InvokeSrv("SXS.wsENT.LoadSubcontractorCont", InXml) + + Dim XmlDoc As New XmlDocument '處理Xml字串之物件? + + '利用XmlDoc物件處理ReturnValue + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + '讀取取出資料表之名稱 + + tblENTSubcontractorCont = XmlDoc.GetElementsByTagName("returnvalue").Item(0).SelectNodes("loadSubcontractorcont").Item(0).SelectNodes("name").Item(0).InnerXml + '取出Schema,dataset讀取Schema可防止Null Field及DateTime的問題 + XmlSchema = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractorcont").Item(0).SelectNodes("schema").Item(0).InnerXml + If XmlSchema <> "" Then + '將XML讀入String Reader object中,因為Dataset讀入XML時必須透過String Reader物件 + tmpStringReader = New System.IO.StringReader(XmlSchema) + dsENT.ReadXmlSchema(tmpStringReader) + tmpStringReader.Close() + End If + + '取出Data + XmlData = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractorcont").Item(0).SelectNodes("value").Item(0).InnerXml + If XmlData <> "" Then + tmpStringReader = New System.IO.StringReader(XmlData) + dsENT.ReadXml(tmpStringReader, XmlReadMode.InferSchema) + tmpStringReader.Close() + End If + + Me.iugDetail.iMESUltraGrid.DataSource = dsENT.Tables(tblENTSubcontractorCont).DefaultView + + Else + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + End If + + XmlDoc = Nothing + + Catch ex As Exception + 'MsgBox("Unexpected Error. Load ENT Subcontractor Cont Failed!!," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + End Try + + End Sub + + Private Sub funShowActiveDetail() + + If Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.DataSource = Nothing + Else + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + End If + + End Sub + + Private Sub funiMESUltraGridIni() + + 'iugSubcontractor 初始設定 + With Me.iugSubcontractor.iMESUltraGrid + .Text = "" + .DisplayLayout.GroupByBox.Hidden = True + .DisplayLayout.UseFixedHeaders = False + End With + + '系統會以UserNo做為Layout的檔名 + + iugSubcontractor.UserNo = gUserNo + + 'iugDetail 初始設定 + With Me.iugDetail.iMESUltraGrid.DisplayLayout + .GroupByBox.Hidden = True + .Override.ExpansionIndicator = ShowExpansionIndicator.Default + .ViewStyle = ViewStyle.SingleBand + .RowConnectorStyle = RowConnectorStyle.Default + + End With + + '系統會以UserNo做為Layout的檔名 + + iugDetail.UserNo = gUserNo + + End Sub + + +#End Region + +End Class + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmSubcontractorContDef.resx b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmSubcontractorContDef.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmSubcontractorContDef.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmSubcontractorContDef.vb b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmSubcontractorContDef.vb new file mode 100644 index 0000000..c489735 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmSubcontractorContDef.vb @@ -0,0 +1,656 @@ +Imports iMESExceptionManager + +Public Class frmSubcontractorContDef + + Inherits COM_Kit.frmDefTemplat + + '//Public Variables + Public EditDataRow As DataRow + Public DefMode As Integer = 0 '0. ADD, 1.Edit, 2. Copy + + Public SubcontractorNo As String = defString + Public PrivFunNo As String = defString + + '//Web Service相關變數 + ' 2016 YF, Dim wsENT As New wsENT.wsENT + Dim InXml As String + Dim OutXml As String + + Dim strIdentity As String + Dim strParameter As String + Dim intDataStamp As Integer '紀錄DataStamp + +#Region " Windows Form Designer generated code " + + Public Sub New() + MyBase.New() + + 'This call is required by the Windows Form Designer. + InitializeComponent() + + 'Add any initialization after the InitializeComponent() call + + End Sub + + 'Form overrides dispose to clean up the component list. + Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing Then + If Not (components Is Nothing) Then + components.Dispose() + End If + End If + MyBase.Dispose(disposing) + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + Friend WithEvents txtDescription As System.Windows.Forms.RichTextBox + Friend WithEvents lblAddress As System.Windows.Forms.Label + Friend WithEvents lblEMail As System.Windows.Forms.Label + Friend WithEvents lblTitle As System.Windows.Forms.Label + Friend WithEvents lblFaxNo As System.Windows.Forms.Label + Friend WithEvents lblTelNo As System.Windows.Forms.Label + Friend WithEvents lblDescription As System.Windows.Forms.Label + Friend WithEvents lblContactorName As System.Windows.Forms.Label + Friend WithEvents lblSubcontractorNo As System.Windows.Forms.Label + Friend WithEvents gbxSubcontractorContData As System.Windows.Forms.GroupBox + Friend WithEvents txtSubcontractorNo As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtContactorName As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtFaxNo As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtTelNo As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtEMail As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtTitle As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtAddress As Infragistics.Win.UltraWinEditors.UltraTextEditor + Private Sub InitializeComponent() + Dim Appearance1 As Infragistics.Win.Appearance = New Infragistics.Win.Appearance() + Me.gbxSubcontractorContData = New System.Windows.Forms.GroupBox() + Me.txtAddress = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtEMail = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtTitle = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtFaxNo = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.lblAddress = New System.Windows.Forms.Label() + Me.lblEMail = New System.Windows.Forms.Label() + Me.lblTitle = New System.Windows.Forms.Label() + Me.lblFaxNo = New System.Windows.Forms.Label() + Me.lblTelNo = New System.Windows.Forms.Label() + Me.txtDescription = New System.Windows.Forms.RichTextBox() + Me.lblDescription = New System.Windows.Forms.Label() + Me.lblSubcontractorNo = New System.Windows.Forms.Label() + Me.lblContactorName = New System.Windows.Forms.Label() + Me.txtSubcontractorNo = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtContactorName = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtTelNo = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + CType(Me.gbxBasisData, System.ComponentModel.ISupportInitialize).BeginInit() + Me.gbxSubcontractorContData.SuspendLayout() + CType(Me.txtAddress, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtEMail, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtTitle, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtFaxNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtSubcontractorNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtContactorName, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtTelNo, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SuspendLayout() + ' + 'gbxBasisData + ' + Me.gbxBasisData.Location = New System.Drawing.Point(12, 322) + Me.gbxBasisData.Size = New System.Drawing.Size(472, 70) + ' + 'btnApply + ' + Me.btnApply.Location = New System.Drawing.Point(396, 401) + ' + 'btnConfirm + ' + Me.btnConfirm.Location = New System.Drawing.Point(208, 401) + ' + 'btnClose + ' + Me.btnClose.Location = New System.Drawing.Point(302, 401) + ' + 'gbxSubcontractorContData + ' + Me.gbxSubcontractorContData.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.gbxSubcontractorContData.Controls.Add(Me.txtAddress) + Me.gbxSubcontractorContData.Controls.Add(Me.txtEMail) + Me.gbxSubcontractorContData.Controls.Add(Me.txtTitle) + Me.gbxSubcontractorContData.Controls.Add(Me.txtFaxNo) + Me.gbxSubcontractorContData.Controls.Add(Me.lblAddress) + Me.gbxSubcontractorContData.Controls.Add(Me.lblEMail) + Me.gbxSubcontractorContData.Controls.Add(Me.lblTitle) + Me.gbxSubcontractorContData.Controls.Add(Me.lblFaxNo) + Me.gbxSubcontractorContData.Controls.Add(Me.lblTelNo) + Me.gbxSubcontractorContData.Controls.Add(Me.txtDescription) + Me.gbxSubcontractorContData.Controls.Add(Me.lblDescription) + Me.gbxSubcontractorContData.Controls.Add(Me.lblSubcontractorNo) + Me.gbxSubcontractorContData.Controls.Add(Me.lblContactorName) + Me.gbxSubcontractorContData.Controls.Add(Me.txtSubcontractorNo) + Me.gbxSubcontractorContData.Controls.Add(Me.txtContactorName) + Me.gbxSubcontractorContData.Controls.Add(Me.txtTelNo) + Me.gbxSubcontractorContData.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.gbxSubcontractorContData.Location = New System.Drawing.Point(15, 8) + Me.gbxSubcontractorContData.Name = "gbxSubcontractorContData" + Me.gbxSubcontractorContData.Size = New System.Drawing.Size(469, 306) + Me.gbxSubcontractorContData.TabIndex = 0 + Me.gbxSubcontractorContData.TabStop = False + Me.gbxSubcontractorContData.Text = "ENT Subcontractor Contactor Data" + ' + 'txtAddress + ' + Me.txtAddress.Location = New System.Drawing.Point(120, 152) + Me.txtAddress.Name = "txtAddress" + Me.txtAddress.Size = New System.Drawing.Size(336, 22) + Me.txtAddress.TabIndex = 13 + ' + 'txtEMail + ' + Me.txtEMail.Location = New System.Drawing.Point(320, 120) + Me.txtEMail.Name = "txtEMail" + Me.txtEMail.Size = New System.Drawing.Size(136, 22) + Me.txtEMail.TabIndex = 11 + ' + 'txtTitle + ' + Me.txtTitle.Location = New System.Drawing.Point(120, 120) + Me.txtTitle.Name = "txtTitle" + Me.txtTitle.Size = New System.Drawing.Size(114, 22) + Me.txtTitle.TabIndex = 9 + ' + 'txtFaxNo + ' + Me.txtFaxNo.Location = New System.Drawing.Point(320, 88) + Me.txtFaxNo.Name = "txtFaxNo" + Me.txtFaxNo.Size = New System.Drawing.Size(136, 22) + Me.txtFaxNo.TabIndex = 7 + ' + 'lblAddress + ' + Me.lblAddress.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblAddress.Location = New System.Drawing.Point(24, 154) + Me.lblAddress.Name = "lblAddress" + Me.lblAddress.Size = New System.Drawing.Size(86, 14) + Me.lblAddress.TabIndex = 12 + Me.lblAddress.Text = "Address" + Me.lblAddress.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblEMail + ' + Me.lblEMail.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblEMail.Location = New System.Drawing.Point(248, 123) + Me.lblEMail.Name = "lblEMail" + Me.lblEMail.Size = New System.Drawing.Size(64, 14) + Me.lblEMail.TabIndex = 10 + Me.lblEMail.Text = "EMail" + Me.lblEMail.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblTitle + ' + Me.lblTitle.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblTitle.Location = New System.Drawing.Point(24, 121) + Me.lblTitle.Name = "lblTitle" + Me.lblTitle.Size = New System.Drawing.Size(86, 14) + Me.lblTitle.TabIndex = 8 + Me.lblTitle.Text = "Title" + Me.lblTitle.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblFaxNo + ' + Me.lblFaxNo.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblFaxNo.Location = New System.Drawing.Point(248, 90) + Me.lblFaxNo.Name = "lblFaxNo" + Me.lblFaxNo.Size = New System.Drawing.Size(64, 14) + Me.lblFaxNo.TabIndex = 6 + Me.lblFaxNo.Text = "FaxNo" + Me.lblFaxNo.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblTelNo + ' + Me.lblTelNo.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblTelNo.Location = New System.Drawing.Point(24, 90) + Me.lblTelNo.Name = "lblTelNo" + Me.lblTelNo.Size = New System.Drawing.Size(86, 14) + Me.lblTelNo.TabIndex = 4 + Me.lblTelNo.Text = "TelNo" + Me.lblTelNo.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'txtDescription + ' + Me.txtDescription.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.txtDescription.Location = New System.Drawing.Point(120, 184) + Me.txtDescription.Name = "txtDescription" + Me.txtDescription.Size = New System.Drawing.Size(336, 108) + Me.txtDescription.TabIndex = 15 + Me.txtDescription.Text = "" + ' + 'lblDescription + ' + Me.lblDescription.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblDescription.Location = New System.Drawing.Point(24, 186) + Me.lblDescription.Name = "lblDescription" + Me.lblDescription.Size = New System.Drawing.Size(86, 14) + Me.lblDescription.TabIndex = 14 + Me.lblDescription.Text = "Description" + Me.lblDescription.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblSubcontractorNo + ' + Me.lblSubcontractorNo.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblSubcontractorNo.Location = New System.Drawing.Point(14, 29) + Me.lblSubcontractorNo.Name = "lblSubcontractorNo" + Me.lblSubcontractorNo.Size = New System.Drawing.Size(96, 14) + Me.lblSubcontractorNo.TabIndex = 0 + Me.lblSubcontractorNo.Text = "Subcontractor No" + Me.lblSubcontractorNo.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblContactorName + ' + Me.lblContactorName.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblContactorName.Location = New System.Drawing.Point(24, 59) + Me.lblContactorName.Name = "lblContactorName" + Me.lblContactorName.Size = New System.Drawing.Size(86, 14) + Me.lblContactorName.TabIndex = 2 + Me.lblContactorName.Text = "Contactor Name" + Me.lblContactorName.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'txtSubcontractorNo + ' + Me.txtSubcontractorNo.Location = New System.Drawing.Point(120, 24) + Me.txtSubcontractorNo.Name = "txtSubcontractorNo" + Me.txtSubcontractorNo.ReadOnly = True + Me.txtSubcontractorNo.Size = New System.Drawing.Size(114, 22) + Me.txtSubcontractorNo.TabIndex = 1 + Me.txtSubcontractorNo.TabStop = False + ' + 'txtContactorName + ' + Appearance1.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtContactorName.Appearance = Appearance1 + Me.txtContactorName.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtContactorName.Location = New System.Drawing.Point(120, 56) + Me.txtContactorName.Name = "txtContactorName" + Me.txtContactorName.Size = New System.Drawing.Size(160, 22) + Me.txtContactorName.TabIndex = 3 + ' + 'txtTelNo + ' + Me.txtTelNo.Location = New System.Drawing.Point(120, 88) + Me.txtTelNo.Name = "txtTelNo" + Me.txtTelNo.Size = New System.Drawing.Size(114, 22) + Me.txtTelNo.TabIndex = 5 + ' + 'frmSubcontractorContDef + ' + Me.ClientSize = New System.Drawing.Size(496, 446) + Me.Controls.Add(Me.gbxSubcontractorContData) + Me.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Name = "frmSubcontractorContDef" + Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen + Me.Text = "ENT Subcontractor Contactor Define" + Me.Controls.SetChildIndex(Me.btnClose, 0) + Me.Controls.SetChildIndex(Me.btnConfirm, 0) + Me.Controls.SetChildIndex(Me.btnApply, 0) + Me.Controls.SetChildIndex(Me.gbxBasisData, 0) + Me.Controls.SetChildIndex(Me.gbxSubcontractorContData, 0) + CType(Me.gbxBasisData, System.ComponentModel.ISupportInitialize).EndInit() + Me.gbxSubcontractorContData.ResumeLayout(False) + Me.gbxSubcontractorContData.PerformLayout() + CType(Me.txtAddress, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtEMail, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtTitle, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtFaxNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtSubcontractorNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtContactorName, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtTelNo, System.ComponentModel.ISupportInitialize).EndInit() + Me.ResumeLayout(False) + + End Sub + +#End Region + + Private Sub frmSubcontractorContDef_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + + Cursor.Current = Cursors.WaitCursor + + Select Case DefMode + Case 0 + Me.Text = Me.Text & "(ADD)" + Case 1 + Me.Text = Me.Text & "(EDIT)" + Case 2 + Me.Text = Me.Text & "(Copy)" + Case Else + Me.Text = Me.Text & "(Unknown)" + End Select + + '做為MainForm判斷是否重新LoadData的依據() + gReturnKeyValue = "" + + ' 2016 YF, wsENT.Url = LocalizeWebService(wsENT.Url.ToString) + ' 2016 YF, wsENT.EnableDecompression = True + If DefMode = 0 Or DefMode = 2 Then + SetCreateDate(Now) + SetCreator(gUserNo) + End If + If Not EditDataRow Is Nothing Then '修改 or Copy + txtSubcontractorNo.Text = EditDataRow.Item("SubcontractorNo").ToString + txtContactorName.Text = EditDataRow.Item("ContactorName").ToString + txtTelNo.Text = EditDataRow.Item("TelNo").ToString + txtFaxNo.Text = EditDataRow.Item("FaxNo").ToString + txtTitle.Text = EditDataRow.Item("Title").ToString + txtAddress.Text = EditDataRow.Item("Address").ToString + txtEMail.Text = EditDataRow.Item("EMail").ToString + 'txtDescription是RichTextBox(Control, 因為TextBox無法正常顯示多行換行的資料) + txtDescription.Text = EditDataRow.Item("Description").ToString + If DefMode = 1 Then + If (Not IsDBNull(EditDataRow("Creator"))) Then + SetCreateDate(Convert.ToDateTime(EditDataRow.Item("CreateDate"))) + SetCreator(EditDataRow.Item("Creator").ToString) + End If + End If + End If + + If DefMode = 0 Then 'Add + txtSubcontractorNo.Text = SubcontractorNo + SetCreateDate(Now) + SetCreator(gUserNo) + ElseIf DefMode = 1 Then 'Edit + txtContactorName.ReadOnly = True + SetReviseDate(Now) + SetReviser(gUserNo) + intDataStamp = EditDataRow.Item("DataStamp") + End If + + btnApplyEnabled = False + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + ExeGroupControlPriv(Me, PrivFunNo) + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub frmSubcontractorContDef_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Activated + If DefMode = 0 Or DefMode = 2 Then + txtContactorName.Focus() + Else + txtTelNo.Focus() + End If + End Sub + + Protected Overrides Sub btnConfirm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + + Cursor.Current = Cursors.WaitCursor + + If funAddorEdit(sender) < 0 Then Exit Sub + + Me.Close() + + Cursor.Current = Cursors.Default + + End Sub + + Protected Overrides Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + Me.Close() + End Sub + + Protected Overrides Sub btnApply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + + Cursor.Current = Cursors.WaitCursor + + If funAddorEdit(sender) < 0 Then Exit Sub + + If DefMode = 0 Or DefMode = 2 Then + txtContactorName.Focus() + Else + txtTelNo.Focus() + End If + + txtEMail.Text = "" + btnApplyEnabled = False + Cursor.Current = Cursors.Default + + End Sub + +#Region "Control KeyPress" + + Private Sub txtSubcontractorNo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.Click + txtSubcontractorNo.SelectAll() + End Sub + + Private Sub txtSubcontractorNo_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.Enter + txtSubcontractorNo.SelectAll() + End Sub + + Private Sub txtSubcontractorNo_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtSubcontractorNo.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtSubcontractorNo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtContactorName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtContactorName.Click + txtContactorName.SelectAll() + End Sub + + Private Sub txtContactorName_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtContactorName.Enter + txtContactorName.SelectAll() + End Sub + + Private Sub txtContactorName_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtContactorName.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtContactorName_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtContactorName.Leave + If txtContactorName.Text <> "" And txtEMail.Text = "" Then + txtEMail.Text = txtContactorName.Text & "@" + End If + txtContactorName.Text = UCase(txtContactorName.Text) + End Sub + + Private Sub txtContactorName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtContactorName.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtTelNo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTelNo.Click + txtTelNo.SelectAll() + End Sub + + Private Sub txtTelNo_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTelNo.Enter + txtTelNo.SelectAll() + End Sub + + Private Sub txtTelNo_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtTelNo.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtTelNo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTelNo.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtFaxNo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtFaxNo.Click + txtFaxNo.SelectAll() + End Sub + + Private Sub txtFaxNo_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtFaxNo.Enter + txtFaxNo.SelectAll() + End Sub + + Private Sub txtFaxNo_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtFaxNo.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtFaxNo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtFaxNo.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtTitle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTitle.Click + txtTitle.SelectAll() + End Sub + + Private Sub txtTitle_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTitle.Enter + txtTitle.SelectAll() + End Sub + + Private Sub txtTitle_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtTitle.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtTitle_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTitle.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtEMail_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtEMail.Click + txtEMail.SelectAll() + End Sub + + Private Sub txtEMail_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtEMail.Enter + txtEMail.SelectAll() + End Sub + + Private Sub txtEMail_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtEMail.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtEMail_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtEMail.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtAddress_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAddress.Click + txtAddress.SelectAll() + End Sub + + Private Sub txtAddress_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAddress.Enter + txtAddress.SelectAll() + End Sub + + Private Sub txtAddress_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtAddress.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtAddress_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAddress.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtDescription_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDescription.Click + txtDescription.SelectAll() + End Sub + + Private Sub txtDescription_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDescription.Enter + txtDescription.SelectAll() + End Sub + + Private Sub txtDescription_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtDescription.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtDescription_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtDescription.TextChanged + btnApplyEnabled = True + End Sub + +#End Region + +#Region "Others" + + Private Function funAddorEdit(sender As Object) As Integer + + funAddorEdit = -1 + + '****************************************************************************** + '1.基本檢查() + '****************************************************************************** + If txtSubcontractorNo.Text = "" Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200001", "[%SubcontractorNo%]"), MsgBoxStyle.Exclamation, Me.Text) + txtSubcontractorNo.Focus() + Exit Function + End If + If txtContactorName.Text = "" Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200001", "[%ContactorName%]"), MsgBoxStyle.Exclamation, Me.Text) + txtContactorName.Focus() + Exit Function + End If + + '****************************************************************************** + '2.寫回資料庫() + '****************************************************************************** + Dim XmlDoc As New XmlDocument + + Try + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + strParameter = CombineXMLParameter("subcontractorno", "SubcontractorNo", "String", CInput(txtSubcontractorNo.Text), "") + strParameter = strParameter & CombineXMLParameter("contactorname", "ContactorName", "String", CInput(txtContactorName.Text), "") + strParameter = strParameter & CombineXMLParameter("telno", "TelNo", "String", txtTelNo.Text, "") + strParameter = strParameter & CombineXMLParameter("faxno", "FaxNo", "String", txtFaxNo.Text, "") + strParameter = strParameter & CombineXMLParameter("title", "Title", "String", CInput(txtTitle.Text), "") + strParameter = strParameter & CombineXMLParameter("address", "Address", "String", CInput(txtAddress.Text), "") + strParameter = strParameter & CombineXMLParameter("email", "EMail", "String", CInput(txtEMail.Text), "") + strParameter = strParameter & CombineXMLParameter("description", "Description", "String", CInput(txtDescription.Text), "") + + + If DefMode = 0 Or DefMode = 2 Then 'Add or Copy + strParameter += CombineXMLParameter("creator", "Creator", "String", gUserNo, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + ' 2016 YF, OutXml = wsENT.AddSubcontractorCont(InXml) + OutXml = InvokeSrv("SXS.wsENT.AddSubcontractorCont", InXml) + + Else 'Edit + ' 增加Datastamp + strParameter += CombineXMLParameter("datastamp", "Datastamp", "Integer", intDataStamp, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + ' 2016 YF, OutXml = wsENT.EditSubcontractorCont(InXml) + OutXml = InvokeSrv("SXS.wsENT.EditSubcontractorCont", InXml) + + End If + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + gReturnKeyValue = txtContactorName.Text + + funAddorEdit = 0 + If sender.Equals(btnApply) Then + intDataStamp += 1 + End If + Else + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + End If + + Catch ex As Exception + 'MsgBox("Unexpected Error. Add or Edit ENT Subcontractor Contactor Failed!," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + End Try + + XmlDoc = Nothing + + End Function +#End Region + + + Private Sub frmSubcontractorContDef_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing + ' 2016 YF, If Not wsENT Is Nothing Then wsENT.Dispose() + End Sub +End Class + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmSubcontractorDef.resx b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmSubcontractorDef.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmSubcontractorDef.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmSubcontractorDef.vb b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmSubcontractorDef.vb new file mode 100644 index 0000000..ff97a9a --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/frmSubcontractorDef.vb @@ -0,0 +1,421 @@ +Imports iMESExceptionManager + +Public Class frmSubcontractorDef + + Inherits COM_Kit.frmDefTemplat + + '//Public Variables + Public EditDataRow As DataRow + Public DefMode As Integer = 0 '0. ADD, 1.Edit, 2. Copy + Public PrivFunNo As String = defString + + '//Web Service相關變數 + ' 2016 YF, Dim wsENT As New wsENT.wsENT + Dim InXml As String + Dim OutXml As String + + Dim strIdentity As String + Dim strParameter As String + Dim intDataStamp As Integer '紀錄DataStamp + +#Region " Windows Form Designer generated code " + + Public Sub New() + MyBase.New() + + 'This call is required by the Windows Form Designer. + InitializeComponent() + + 'Add any initialization after the InitializeComponent() call + + End Sub + + 'Form overrides dispose to clean up the component list. + Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing Then + If Not (components Is Nothing) Then + components.Dispose() + End If + End If + MyBase.Dispose(disposing) + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + Friend WithEvents txtDescription As System.Windows.Forms.RichTextBox + Friend WithEvents lblDescription As System.Windows.Forms.Label + Friend WithEvents lblSubcontractorNo As System.Windows.Forms.Label + Friend WithEvents lblSubcontractorName As System.Windows.Forms.Label + Friend WithEvents gbxSubcontractorData As System.Windows.Forms.GroupBox + Friend WithEvents txtSubcontractorNo As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtSubcontractorName As Infragistics.Win.UltraWinEditors.UltraTextEditor + Private Sub InitializeComponent() + Dim Appearance1 As Infragistics.Win.Appearance = New Infragistics.Win.Appearance() + Dim Appearance2 As Infragistics.Win.Appearance = New Infragistics.Win.Appearance() + Me.gbxSubcontractorData = New System.Windows.Forms.GroupBox() + Me.txtDescription = New System.Windows.Forms.RichTextBox() + Me.lblDescription = New System.Windows.Forms.Label() + Me.lblSubcontractorNo = New System.Windows.Forms.Label() + Me.lblSubcontractorName = New System.Windows.Forms.Label() + Me.txtSubcontractorNo = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtSubcontractorName = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + CType(Me.gbxBasisData, System.ComponentModel.ISupportInitialize).BeginInit() + Me.gbxSubcontractorData.SuspendLayout() + CType(Me.txtSubcontractorNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtSubcontractorName, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SuspendLayout() + ' + 'gbxBasisData + ' + Me.gbxBasisData.Location = New System.Drawing.Point(12, 185) + Me.gbxBasisData.Size = New System.Drawing.Size(479, 70) + ' + 'btnApply + ' + Me.btnApply.Location = New System.Drawing.Point(403, 264) + ' + 'btnConfirm + ' + Me.btnConfirm.Location = New System.Drawing.Point(215, 264) + ' + 'btnClose + ' + Me.btnClose.Location = New System.Drawing.Point(309, 264) + ' + 'gbxSubcontractorData + ' + Me.gbxSubcontractorData.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.gbxSubcontractorData.Controls.Add(Me.txtDescription) + Me.gbxSubcontractorData.Controls.Add(Me.lblDescription) + Me.gbxSubcontractorData.Controls.Add(Me.lblSubcontractorNo) + Me.gbxSubcontractorData.Controls.Add(Me.lblSubcontractorName) + Me.gbxSubcontractorData.Controls.Add(Me.txtSubcontractorNo) + Me.gbxSubcontractorData.Controls.Add(Me.txtSubcontractorName) + Me.gbxSubcontractorData.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.gbxSubcontractorData.Location = New System.Drawing.Point(12, 8) + Me.gbxSubcontractorData.Name = "gbxSubcontractorData" + Me.gbxSubcontractorData.Size = New System.Drawing.Size(479, 169) + Me.gbxSubcontractorData.TabIndex = 7 + Me.gbxSubcontractorData.TabStop = False + Me.gbxSubcontractorData.Text = "Subcontractor Data" + ' + 'txtDescription + ' + Me.txtDescription.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.txtDescription.Location = New System.Drawing.Point(128, 86) + Me.txtDescription.Name = "txtDescription" + Me.txtDescription.Size = New System.Drawing.Size(334, 67) + Me.txtDescription.TabIndex = 2 + Me.txtDescription.Text = "" + ' + 'lblDescription + ' + Me.lblDescription.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblDescription.Location = New System.Drawing.Point(56, 88) + Me.lblDescription.Name = "lblDescription" + Me.lblDescription.Size = New System.Drawing.Size(64, 14) + Me.lblDescription.TabIndex = 13 + Me.lblDescription.Text = "Description" + Me.lblDescription.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblSubcontractorNo + ' + Me.lblSubcontractorNo.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblSubcontractorNo.Location = New System.Drawing.Point(24, 24) + Me.lblSubcontractorNo.Name = "lblSubcontractorNo" + Me.lblSubcontractorNo.Size = New System.Drawing.Size(96, 32) + Me.lblSubcontractorNo.TabIndex = 5 + Me.lblSubcontractorNo.Text = "Subcontractor No" + Me.lblSubcontractorNo.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblSubcontractorName + ' + Me.lblSubcontractorName.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblSubcontractorName.Location = New System.Drawing.Point(8, 56) + Me.lblSubcontractorName.Name = "lblSubcontractorName" + Me.lblSubcontractorName.Size = New System.Drawing.Size(112, 32) + Me.lblSubcontractorName.TabIndex = 9 + Me.lblSubcontractorName.Text = "Subcontractor Name" + Me.lblSubcontractorName.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'txtSubcontractorNo + ' + Appearance1.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtSubcontractorNo.Appearance = Appearance1 + Me.txtSubcontractorNo.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtSubcontractorNo.Location = New System.Drawing.Point(128, 24) + Me.txtSubcontractorNo.Name = "txtSubcontractorNo" + Me.txtSubcontractorNo.Size = New System.Drawing.Size(152, 22) + Me.txtSubcontractorNo.TabIndex = 0 + ' + 'txtSubcontractorName + ' + Appearance2.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtSubcontractorName.Appearance = Appearance2 + Me.txtSubcontractorName.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtSubcontractorName.Location = New System.Drawing.Point(128, 55) + Me.txtSubcontractorName.Name = "txtSubcontractorName" + Me.txtSubcontractorName.Size = New System.Drawing.Size(334, 22) + Me.txtSubcontractorName.TabIndex = 1 + ' + 'frmSubcontractorDef + ' + Me.ClientSize = New System.Drawing.Size(503, 309) + Me.Controls.Add(Me.gbxSubcontractorData) + Me.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Name = "frmSubcontractorDef" + Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen + Me.Text = "ENT Subcontractor Define" + Me.Controls.SetChildIndex(Me.btnClose, 0) + Me.Controls.SetChildIndex(Me.btnConfirm, 0) + Me.Controls.SetChildIndex(Me.btnApply, 0) + Me.Controls.SetChildIndex(Me.gbxBasisData, 0) + Me.Controls.SetChildIndex(Me.gbxSubcontractorData, 0) + CType(Me.gbxBasisData, System.ComponentModel.ISupportInitialize).EndInit() + Me.gbxSubcontractorData.ResumeLayout(False) + Me.gbxSubcontractorData.PerformLayout() + CType(Me.txtSubcontractorNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtSubcontractorName, System.ComponentModel.ISupportInitialize).EndInit() + Me.ResumeLayout(False) + + End Sub + +#End Region + + Private Sub frmSubcontractorDef_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + + Cursor.Current = Cursors.WaitCursor + + Select Case DefMode + Case 0 + Me.Text = Me.Text & "(ADD)" + Case 1 + Me.Text = Me.Text & "(EDIT)" + Case 2 + Me.Text = Me.Text & "(Copy)" + Case Else + Me.Text = Me.Text & "(Unknown)" + End Select + + '做為MainForm判斷是否重新LoadData的依據 + gReturnKeyValue = "" + + ' 2016 YF, wsENT.Url = LocalizeWebService(wsENT.Url.ToString) + ' 2016 YF, wsENT.EnableDecompression = True + + If Not EditDataRow Is Nothing Then + txtSubcontractorNo.Text = EditDataRow.Item("SubcontractorNo").ToString + txtSubcontractorName.Text = EditDataRow.Item("SubcontractorName").ToString + 'txtDescription是RichTextBox Control,因為TextBox無法正常顯示多行換行的資料 + txtDescription.Text = EditDataRow.Item("Description").ToString + End If + + If DefMode = 0 Or DefMode = 2 Then 'Add or Copy + SetCreator(gUserNo) + SetCreateDate(Now) + ElseIf DefMode = 1 Then 'Edit + txtSubcontractorNo.ReadOnly = True + SetCreator(EditDataRow.Item("Creator").ToString) + SetCreateDate(Convert.ToDateTime(EditDataRow.Item("CreateDate"))) + SetReviser(gUserNo) + SetReviseDate(Now) + intDataStamp = EditDataRow.Item("DataStamp") + End If + + btnApplyEnabled = False + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + ExeGroupControlPriv(Me, PrivFunNo) + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub frmSubcontractorDef_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Activated + If DefMode = 0 Or DefMode = 2 Then + txtSubcontractorNo.Focus() + Else + txtSubcontractorName.Focus() + End If + End Sub + + Protected Overrides Sub btnConfirm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + + Cursor.Current = Cursors.WaitCursor + + If funAddorEdit(sender) < 0 Then Exit Sub + + Me.Close() + + Cursor.Current = Cursors.Default + + End Sub + + Protected Overrides Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + Me.Close() + End Sub + + Protected Overrides Sub btnApply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + + Cursor.Current = Cursors.WaitCursor + + If funAddorEdit(sender) < 0 Then Exit Sub + + If DefMode = 0 Or DefMode = 2 Then + txtSubcontractorNo.Focus() + Else + txtSubcontractorName.Focus() + + End If + + Cursor.Current = Cursors.Default + btnApplyEnabled = False + + End Sub + + Private Sub frmSubcontractorDef_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing + ' 2016 YF, If Not wsENT Is Nothing Then wsENT.Dispose() + End Sub + +#Region "Control KeyPress" + + Private Sub txtSubcontractorNo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.Click + txtSubcontractorNo.SelectAll() + End Sub + + Private Sub txtSubcontractorNo_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.Enter + txtSubcontractorNo.SelectAll() + End Sub + + Private Sub txtSubcontractorNo_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtSubcontractorNo.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtSubcontractorNo_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.Leave + txtSubcontractorNo.Text = UCase(txtSubcontractorNo.Text) + End Sub + + Private Sub txtSubcontractorNo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtSubcontractorName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorName.Click + txtSubcontractorName.SelectAll() + End Sub + + Private Sub txtSubcontractorName_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorName.Enter + txtSubcontractorName.SelectAll() + End Sub + + Private Sub txtSubcontractorName_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtSubcontractorName.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtSubcontractorName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorName.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtDescription_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDescription.Click + txtDescription.SelectAll() + End Sub + + Private Sub txtDescription_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDescription.Enter + txtDescription.SelectAll() + End Sub + + Private Sub txtDescription_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtDescription.TextChanged + btnApplyEnabled = True + End Sub + +#End Region + +#Region "Others" + + Private Function funAddorEdit(sender As Object) As Integer + + funAddorEdit = -1 + + '****************************************************************************** + '1.基本檢查 + '****************************************************************************** + If txtSubcontractorNo.Text = "" Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200001", "[%SubcontractorNo%]"), MsgBoxStyle.Exclamation, Me.Text) + txtSubcontractorNo.Focus() + Exit Function + End If + + If txtSubcontractorName.Text = "" Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200001", "[%SubcontractorName%]"), MsgBoxStyle.Exclamation, Me.Text) + txtSubcontractorName.Focus() + Exit Function + End If + + '2. + '****************************************************************************** + '寫回資料庫 + '****************************************************************************** + Dim XmlDoc As New XmlDocument + + Try + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + strParameter = CombineXMLParameter("subcontractorno", "SubcontractorNo", "String", CInput(txtSubcontractorNo.Text), "") + strParameter = strParameter & CombineXMLParameter("subcontractorname", "SubcontractorName", "String", CInput(txtSubcontractorName.Text), "") + strParameter = strParameter & CombineXMLParameter("description", "Description", "String", CInput(txtDescription.Text), "") + + If DefMode = 0 Or DefMode = 2 Then 'Add or Copy + strParameter = strParameter & CombineXMLParameter("creator", "Creator", "String", gUserNo, "") + strParameter = strParameter & CombineXMLParameter("createdate", "CreateDate", "DateTime", Format(Now, "yyyy/MM/dd HH:mm:ss"), "") + InXml = CombineXMLRequest(strIdentity, strParameter) + + ' 2016 YF, OutXml = wsENT.AddSubcontractor(InXml) + OutXml = InvokeSrv("wsENT.AddSubcontractor", InXml) + + Else + '修改 + strParameter = strParameter & CombineXMLParameter("issuestate", "IssueState", "String", EditDataRow.Item("IssueState").ToString, "") + ' 增加Datastamp + strParameter += CombineXMLParameter("datastamp", "Datastamp", "Integer", intDataStamp, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + + ' 2016 YF, OutXml = wsENT.EditSubcontractor(InXml) + OutXml = InvokeSrv("wsENT.EditSubcontractor", InXml) + + End If + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + gReturnKeyValue = txtSubcontractorNo.Text + + funAddorEdit = 0 + If sender.Equals(btnApply) Then + intDataStamp += 1 + End If + Else + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + End If + + Catch ex As Exception + 'MsgBox("Unexpected Error. Add or Edit ENT Subcontractor Failed!," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + End Try + + XmlDoc = Nothing + + End Function + +#End Region + +End Class + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/iMES.snk b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/iMES.snk new file mode 100644 index 0000000..4206cdc Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/ENT/ET_Subcontractor/iMES.snk differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/AUT.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/AUT.png new file mode 100644 index 0000000..a0b4091 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/AUT.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/AutoRPTMeasureData.xls b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/AutoRPTMeasureData.xls new file mode 100644 index 0000000..471b5c5 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/AutoRPTMeasureData.xls differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/AutoRPTPareto.xls b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/AutoRPTPareto.xls new file mode 100644 index 0000000..251060d Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/AutoRPTPareto.xls differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/AutoRPTVarMonthReport.xls b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/AutoRPTVarMonthReport.xls new file mode 100644 index 0000000..f781fe3 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/AutoRPTVarMonthReport.xls differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/DEFAULT.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/DEFAULT.png new file mode 100644 index 0000000..b566b9f Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/DEFAULT.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/DT.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/DT.png new file mode 100644 index 0000000..38f7231 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/DT.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/DirectionDown.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/DirectionDown.png new file mode 100644 index 0000000..8f89533 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/DirectionDown.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/DirectionLeft.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/DirectionLeft.png new file mode 100644 index 0000000..80ea854 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/DirectionLeft.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/DirectionRight.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/DirectionRight.png new file mode 100644 index 0000000..cc26c41 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/DirectionRight.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/DirectionUp.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/DirectionUp.png new file mode 100644 index 0000000..1f2c2ab Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/DirectionUp.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/EMS.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/EMS.png new file mode 100644 index 0000000..80b96c7 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/EMS.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ENT.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ENT.png new file mode 100644 index 0000000..fa35ea8 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ENT.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/EQP.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/EQP.png new file mode 100644 index 0000000..c317f14 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/EQP.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/FINIAL WEEKLY REPORT.xls b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/FINIAL WEEKLY REPORT.xls new file mode 100644 index 0000000..e4a86f2 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/FINIAL WEEKLY REPORT.xls differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/IEW.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/IEW.png new file mode 100644 index 0000000..4268fb0 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/IEW.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/INV.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/INV.png new file mode 100644 index 0000000..b3a8a61 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/INV.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ISU.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ISU.png new file mode 100644 index 0000000..1993304 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ISU.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ImportSample-AttributesQCItem.xls b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ImportSample-AttributesQCItem.xls new file mode 100644 index 0000000..0ddf7e0 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ImportSample-AttributesQCItem.xls differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ImportSample-Equipment1.csv b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ImportSample-Equipment1.csv new file mode 100644 index 0000000..d13f678 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ImportSample-Equipment1.csv @@ -0,0 +1,17 @@ +Lot No.,80501,,,,,,,,,,,,,, +Type,CEBHM13-X10-1,,,,,,,,,,,,,, +Date,2007/3/8 AM 11:29:11,,,,,,,,,,,,,, +Q'ty,,,,,,,,,,,,,,, + ,Min,Max,,,,,,,,,,,,, +Vf2(V),,,,,,,,,,,,,,, +Iv(mcd),,,,,,,,,,,,,,, +Wd(nm),,,,,,,,,,,,,,, +Calibrate File,blue(450~475)-06.03.23.cal,,,,,,,,,,,,,, +Condition,If1(uA)=10.0\If2(mA)=20.0,,,,,,,,,,,,,, +Condition,Ir(uA)=0.5\Vr(V)=5.0\If4(mA)=1.0,,,,,,,,,,,,,, +QCItemNo.,IPQC-ԤO,Vf2(V),Vr(V),Ir(uA),Iv(mcd),fd(nm),fp(nm),Gf(nm),CIE-x,CIE-y,Vf4(V),PeakData,Vf3(V),Vscr(V),Vth(V) +1,2.38,3.17,10,0,49.47,469.9,465.3,21.2,0.13,0.0632,2.27,2130,0,0,0 +2,2.38,3.17,10,0,50.58,469.7,467.2,20.3,0.1307,0.0616,2.27,2350,0,0,0 +3,2.38,3.12,10,0,48.93,470.4,468.2,20.1,0.1289,0.0656,2.27,2228.8,0,0,0 +4,2.38,3.12,10,0,48.95,470.4,468.2,20.1,0.1289,0.0657,2.27,2218.6,0,0,0 +5,2.34,3.16,10,0,50.27,469.7,465.3,21.4,0.1305,0.0621,2.22,2196.6,0,0,0 diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ImportSample-Equipment2.txt b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ImportSample-Equipment2.txt new file mode 100644 index 0000000..4f9d025 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ImportSample-Equipment2.txt @@ -0,0 +1,29 @@ +Printer Report +Date:03/07/2007 +Time:14:22:19 +Method :7 +Sample : +Lot : +Operator : +Note : + 1 009.4c + 2 009.6c + 3 010.0c + 4 010.0 + 5 010.0c + 6 009.8c + 7 009.9c + 8 009.6c + 9 009.9c + 10 009.1c + 11 009.7 + 12 009.3c + 13 010.0c + 14 009.9c + 15 009.6c + 16 010.3c + 17 009.8 + 18 010.0c + 19 009.5 + 20 010.1c + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ImportSample-QCChar.xls b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ImportSample-QCChar.xls new file mode 100644 index 0000000..f6ec43e Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ImportSample-QCChar.xls differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ImportSample-SPCData.xls b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ImportSample-SPCData.xls new file mode 100644 index 0000000..d44a766 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ImportSample-SPCData.xls differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ImportSample-VariablesQCItem.xls b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ImportSample-VariablesQCItem.xls new file mode 100644 index 0000000..e345d80 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/ImportSample-VariablesQCItem.xls differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/MSA.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/MSA.png new file mode 100644 index 0000000..51a87c7 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/MSA.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/MTL.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/MTL.png new file mode 100644 index 0000000..01ce547 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/MTL.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/OE.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/OE.png new file mode 100644 index 0000000..4b61ef0 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/OE.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/OP.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/OP.png new file mode 100644 index 0000000..a3d8f6c Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/OP.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/PM.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/PM.png new file mode 100644 index 0000000..7bbc6d5 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/PM.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/PRD.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/PRD.png new file mode 100644 index 0000000..975164b Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/PRD.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/PRS.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/PRS.png new file mode 100644 index 0000000..cca6bd8 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/PRS.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/QC.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/QC.png new file mode 100644 index 0000000..4434746 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/QC.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/RPT.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/RPT.png new file mode 100644 index 0000000..dc0400e Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/RPT.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SMD.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SMD.png new file mode 100644 index 0000000..3c3d88e Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SMD.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPC.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPC.png new file mode 100644 index 0000000..40edf2a Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPC.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPCExport_2003_Standard.xls b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPCExport_2003_Standard.xls new file mode 100644 index 0000000..b27df0a Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPCExport_2003_Standard.xls differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPCExport_STD.xls b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPCExport_STD.xls new file mode 100644 index 0000000..ca1cc0b Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPCExport_STD.xls differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPCExport_STD02.xls b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPCExport_STD02.xls new file mode 100644 index 0000000..ddf4bd4 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPCExport_STD02.xls differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPCExport_STD02_2003.xls b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPCExport_STD02_2003.xls new file mode 100644 index 0000000..02056c1 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPCExport_STD02_2003.xls differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPCExport_STD_190111.xls b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPCExport_STD_190111.xls new file mode 100644 index 0000000..f5851ee Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPCExport_STD_190111.xls differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPCExport_STD_190111H.xlsm b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPCExport_STD_190111H.xlsm new file mode 100644 index 0000000..ae66fc3 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPCExport_STD_190111H.xlsm differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPCReport.xls b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPCReport.xls new file mode 100644 index 0000000..7f45579 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SPCReport.xls differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SYS.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SYS.png new file mode 100644 index 0000000..63e3dbb Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/SYS.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/USR.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/USR.png new file mode 100644 index 0000000..d3c0d1c Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/USR.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/WIP.png b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/WIP.png new file mode 100644 index 0000000..a390d74 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/WIP.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/WIPReport.xls b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/WIPReport.xls new file mode 100644 index 0000000..3a9694e Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/WIPReport.xls differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/mesresource.en.resources91 b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/mesresource.en.resources91 new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/mesresource.en.resources91 differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/mesresource.zh-chs.resources91 b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/mesresource.zh-chs.resources91 new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/mesresource.zh-chs.resources91 differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/mesresource.zh-cht.resources91 b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/mesresource.zh-cht.resources91 new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/mesresource.zh-cht.resources91 differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/msg_action.en.resources b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/msg_action.en.resources new file mode 100644 index 0000000..19fb658 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/msg_action.en.resources differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/msg_action.zh-chs.resources b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/msg_action.zh-chs.resources new file mode 100644 index 0000000..1c99d89 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/msg_action.zh-chs.resources differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/msg_action.zh-cht.resources b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/msg_action.zh-cht.resources new file mode 100644 index 0000000..1709fdc Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/msg_action.zh-cht.resources differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/msg_name.en.resources b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/msg_name.en.resources new file mode 100644 index 0000000..614b483 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/msg_name.en.resources differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/msg_name.zh-chs.resources b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/msg_name.zh-chs.resources new file mode 100644 index 0000000..336b894 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/msg_name.zh-chs.resources differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Resources/msg_name.zh-cht.resources b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/msg_name.zh-cht.resources new file mode 100644 index 0000000..5b51a68 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Resources/msg_name.zh-cht.resources differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS1/新建 文本文档.txt b/SRC/MESWin/SYS4/21670ll/MESWin/SYS1/新建 文本文档.txt new file mode 100644 index 0000000..e69de29 diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS2/新建 文本文档.txt b/SRC/MESWin/SYS4/21670ll/MESWin/SYS2/新建 文本文档.txt new file mode 100644 index 0000000..e69de29 diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS3/新建 文本文档.txt b/SRC/MESWin/SYS4/21670ll/MESWin/SYS3/新建 文本文档.txt new file mode 100644 index 0000000..e69de29 diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/ET_Subcontractor.sln b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/ET_Subcontractor.sln new file mode 100644 index 0000000..85b1902 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/ET_Subcontractor.sln @@ -0,0 +1,39 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25123.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ET_Subcontractor", "ET_Subcontractor.vbproj", "{D6EE7B96-F10E-44E2-9731-162B70B4C8DD}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Test", "..\..\Test\Test.vbproj", "{C4A48E3F-38E4-4E88-A47D-FA5510686E57}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x86 = Debug|x86 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D6EE7B96-F10E-44E2-9731-162B70B4C8DD}.Debug|x86.ActiveCfg = Debug|x86 + {D6EE7B96-F10E-44E2-9731-162B70B4C8DD}.Debug|x86.Build.0 = Debug|x86 + {D6EE7B96-F10E-44E2-9731-162B70B4C8DD}.Release|x86.ActiveCfg = Release|x86 + {D6EE7B96-F10E-44E2-9731-162B70B4C8DD}.Release|x86.Build.0 = Release|x86 + {C4A48E3F-38E4-4E88-A47D-FA5510686E57}.Debug|x86.ActiveCfg = Debug|x86 + {C4A48E3F-38E4-4E88-A47D-FA5510686E57}.Debug|x86.Build.0 = Debug|x86 + {C4A48E3F-38E4-4E88-A47D-FA5510686E57}.Release|x86.ActiveCfg = Release|x86 + {C4A48E3F-38E4-4E88-A47D-FA5510686E57}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(TeamFoundationVersionControl) = preSolution + SccNumberOfProjects = 3 + SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccTeamFoundationServer = http://tfs.imestech.com:8080/tfs/messeries6 + SccProjectUniqueName0 = ET_Subcontractor.vbproj + SccLocalPath0 = . + SccProjectUniqueName1 = ..\\..\\Test\\Test.vbproj + SccProjectName1 = ../../Test + SccLocalPath1 = ..\\..\\Test + SccLocalPath2 = . + EndGlobalSection +EndGlobal diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/ET_Subcontractor.vbproj b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/ET_Subcontractor.vbproj new file mode 100644 index 0000000..8059f21 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/ET_Subcontractor.vbproj @@ -0,0 +1,194 @@ + + + + + Debug + x86 + {D6EE7B96-F10E-44E2-9731-162B70B4C8DD} + Library + ET_Subcontractor_21670 + ET_Subcontractor_21670 + 512 + Windows + v4.6.2 + + SAK + SAK + SAK + SAK + + + On + + + Binary + + + Off + + + On + + + true + true + true + ..\..\..\MESClient\ + ET_Subcontractor_21670.xml + 0 + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + full + x86 + MinimumRecommendedRules.ruleset + false + + + true + ..\..\..\MESClient\ + ET_Subcontractor_21670.xml + true + 0 + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + pdbonly + x86 + MinimumRecommendedRules.ruleset + false + + + true + + + iMES.snk + + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Win.v19.1.dll + False + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Win.UltraWinGrid.v19.1.dll + False + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Win.UltraWinEditors.v19.1.dll + False + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Win.Misc.v19.1.dll + False + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Shared.v19.1.dll + False + + + ..\..\..\MESClient\COM_Kit.dll + False + + + ..\..\..\MES_C_DLL\iMESExceptionManager.dll + False + + + ..\..\..\MES_C_DLL\iMESUltraGrid.dll + False + + + + + + + + + + + + + + + + + + + + + + + + + + + + modConstant.vb + + + Form + + + Form + + + Form + + + + True + Application.myapp + True + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + frmSubcontractor.vb + + + frmSubcontractorContDef.vb + + + frmSubcontractorDef.vb + + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/ET_Subcontractor.vbproj.vspscc b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/ET_Subcontractor.vbproj.vspscc new file mode 100644 index 0000000..b6d3289 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/ET_Subcontractor.vbproj.vspscc @@ -0,0 +1,10 @@ +"" +{ +"FILE_VERSION" = "9237" +"ENLISTMENT_CHOICE" = "NEVER" +"PROJECT_FILE_RELATIVE_PATH" = "" +"NUMBER_OF_EXCLUDED_FILES" = "0" +"ORIGINAL_PROJECT_FILE_PATH" = "" +"NUMBER_OF_NESTED_PROJECTS" = "0" +"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER" +} diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/Application.Designer.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/Application.Designer.vb new file mode 100644 index 0000000..537244b --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/Application.Designer.vb @@ -0,0 +1,13 @@ +'------------------------------------------------------------------------------ +' +' 此代码由工具生成。 +' 运行时版本:4.0.30319.42000 +' +' 对此文件的更改可能会导致不正确的行为,并且如果 +' 重新生成代码,这些更改将会丢失。 +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/Application.myapp b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/Application.myapp new file mode 100644 index 0000000..758895d --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + false + false + 0 + true + 0 + 1 + true + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/AssemblyInfo.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/AssemblyInfo.vb new file mode 100644 index 0000000..b0cdd98 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' 組件的一般資訊是由下列的屬性集控制。 +' 變更這些屬性的值即可修改組件的相關 +' 資訊。 + +' 檢閱組件屬性的值 + + + + + + + + + + +'下列 GUID 為專案公開 (Expose) 至 COM 時所要使用的 typelib ID + + +' 組件的版本資訊由下列四個值所組成: +' +' 主要版本 +' 次要版本 +' 組建編號 +' 修訂編號 +' +' 您可以指定所有的值,也可以依照以下的方式,使用 '*' 將組建和修訂編號 +' 指定為預設值: +' + + + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/BuildIncrementVersionInfo.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/BuildIncrementVersionInfo.vb new file mode 100644 index 0000000..d2f2e21 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/BuildIncrementVersionInfo.vb @@ -0,0 +1 @@ + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/Resources.Designer.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/Resources.Designer.vb new file mode 100644 index 0000000..718820f --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/Resources.Designer.vb @@ -0,0 +1,63 @@ +'------------------------------------------------------------------------------ +' +' 此代码由工具生成。 +' 运行时版本:4.0.30319.42000 +' +' 对此文件的更改可能会导致不正确的行为,并且如果 +' 重新生成代码,这些更改将会丢失。 +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + +Imports System + +Namespace My.Resources + + '此类是由 StronglyTypedResourceBuilder + '类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + '若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + '(以 /str 作为命令选项),或重新生成 VS 项目。 + ''' + ''' 一个强类型的资源类,用于查找本地化的字符串等。 + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' 返回此类使用的缓存的 ResourceManager 实例。 + ''' + _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("ET_Subcontractor_21670.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' 重写当前线程的 CurrentUICulture 属性,对 + ''' 使用此强类型资源类的所有资源查找执行重写。 + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set + resourceCulture = value + End Set + End Property + End Module +End Namespace diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/Resources.resx b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/Settings.Designer.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/Settings.Designer.vb new file mode 100644 index 0000000..59fb44f --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' 此代码由工具生成。 +' 运行时版本:4.0.30319.42000 +' +' 对此文件的更改可能会导致不正确的行为,并且如果 +' 重新生成代码,这些更改将会丢失。 +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + _ + Partial Friend NotInheritable Class MySettings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) + +#Region "My.Settings 自动保存功能" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + _ + Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub +#End If +#End Region + + Public Shared ReadOnly Property [Default]() As MySettings + Get + +#If _MyType = "WindowsForms" Then + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If +#End If + Return defaultInstance + End Get + End Property + End Class +End Namespace + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.ET_Subcontractor_21670.My.MySettings + Get + Return Global.ET_Subcontractor_21670.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/Settings.settings b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/Settings.settings new file mode 100644 index 0000000..85b890b --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/licenses.licx b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/licenses.licx new file mode 100644 index 0000000..e3f40e2 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/My Project/licenses.licx @@ -0,0 +1,7 @@ +Infragistics.Win.Misc.UltraButton, Infragistics4.Win.Misc.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.UltraWinEditors.UltraRadioButton, Infragistics4.Win.UltraWinEditors.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.UltraWinEditors.UltraComboEditor, Infragistics4.Win.UltraWinEditors.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.Misc.UltraGroupBox, Infragistics4.Win.Misc.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.UltraWinEditors.UltraTextEditor, Infragistics4.Win.UltraWinEditors.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.Misc.UltraLabel, Infragistics4.Win.Misc.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.Misc.UltraPanel, Infragistics4.Win.Misc.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/frmSubcontractor.resx b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/frmSubcontractor.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/frmSubcontractor.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/frmSubcontractor.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/frmSubcontractor.vb new file mode 100644 index 0000000..af66c78 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/frmSubcontractor.vb @@ -0,0 +1,1137 @@ +Imports iMESExceptionManager + +Imports Infragistics.Win +Imports Infragistics.Win.UltraWinGrid +Public Class frmSubcontractor + + Inherits COM_Kit.frmBasisTemplat + + Public PrivFunNo As String = defString + + '//WS相關變數 + ' 2016 YF, Dim wsENT As New wsENT.wsENT '宣告Web Service物件? + Dim tmpStringReader As System.IO.StringReader '將字串轉換成可讀入DataSet的物件 + Dim XmlData As String '儲存取回之資料 + Dim XmlSchema As String '儲存取回之資料結構 + Dim InXml As String '儲存呼叫Web Service的傳入參數(Request字串) + Dim OutXml As String '儲存Web Service的傳回值(Response字串) + Dim strIdentity As String '儲存Identity XML字串? + Dim strParameter As String '儲存Parameter XML字串 + + '//資料表相關變數 + + Dim dsENT As New DataSet '資料集:儲存取回之資料? + + Dim tblENTSubcontractor_21670 As String '儲存取回資料表的名稱(master)? + Dim tblENTSubcontractorCont_21670 As String '明細資料表名稱(detail) + Dim strFilter As String 'Filter string及列印的過濾條件 + + '//其他共用變數 + Dim SubcontractorNo As String 'for Gird to Focus + Dim ContactorName As String 'for DetailGrid to Focus + Dim ugrRow As Infragistics.Win.UltraWinGrid.UltraGridRow + Friend WithEvents btnAdd As Misc.UltraButton + Friend WithEvents btnEdit As Misc.UltraButton + Friend WithEvents btnDel As Misc.UltraButton + Friend WithEvents btnCopy As Misc.UltraButton + Friend WithEvents btnApprove As Misc.UltraButton + Friend WithEvents iugSubcontractor As iMESUltraGrid.iMESUltraGridControl + Dim i As Integer + +#Region " Windows Form Designer generated code " + + Public Sub New() + MyBase.New() + + 'This call is required by the Windows Form Designer. + InitializeComponent() + + 'Add any initialization after the InitializeComponent() call + + End Sub + + 'Form overrides dispose to clean up the component list. + Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing Then + If Not (components Is Nothing) Then + components.Dispose() + End If + End If + MyBase.Dispose(disposing) + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.Container + Friend WithEvents iugDetail As iMESUltraGrid.iMESUltraGridControl + Friend WithEvents btnClose As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnEMail As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDCopy As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDDel As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDEdit As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDAdd As Infragistics.Win.Misc.UltraButton + Private Sub InitializeComponent() + Me.btnClose = New Infragistics.Win.Misc.UltraButton() + Me.btnEMail = New Infragistics.Win.Misc.UltraButton() + Me.btnDCopy = New Infragistics.Win.Misc.UltraButton() + Me.btnDDel = New Infragistics.Win.Misc.UltraButton() + Me.btnDEdit = New Infragistics.Win.Misc.UltraButton() + Me.btnDAdd = New Infragistics.Win.Misc.UltraButton() + Me.iugDetail = New iMESUltraGrid.iMESUltraGridControl() + Me.btnAdd = New Infragistics.Win.Misc.UltraButton() + Me.btnEdit = New Infragistics.Win.Misc.UltraButton() + Me.btnDel = New Infragistics.Win.Misc.UltraButton() + Me.btnCopy = New Infragistics.Win.Misc.UltraButton() + Me.btnApprove = New Infragistics.Win.Misc.UltraButton() + Me.iugSubcontractor = New iMESUltraGrid.iMESUltraGridControl() + Me.SuspendLayout() + ' + 'btnClose + ' + Me.btnClose.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnClose.Location = New System.Drawing.Point(912, 552) + Me.btnClose.Name = "btnClose" + Me.btnClose.Size = New System.Drawing.Size(88, 32) + Me.btnClose.TabIndex = 18 + Me.btnClose.Text = "Close (&X)" + ' + 'btnEMail + ' + Me.btnEMail.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnEMail.Location = New System.Drawing.Point(912, 429) + Me.btnEMail.Name = "btnEMail" + Me.btnEMail.Size = New System.Drawing.Size(88, 32) + Me.btnEMail.TabIndex = 17 + Me.btnEMail.Text = "Mail" + ' + 'btnDCopy + ' + Me.btnDCopy.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDCopy.Location = New System.Drawing.Point(912, 389) + Me.btnDCopy.Name = "btnDCopy" + Me.btnDCopy.Size = New System.Drawing.Size(88, 32) + Me.btnDCopy.TabIndex = 16 + Me.btnDCopy.Text = "Copy" + ' + 'btnDDel + ' + Me.btnDDel.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDDel.Location = New System.Drawing.Point(912, 349) + Me.btnDDel.Name = "btnDDel" + Me.btnDDel.Size = New System.Drawing.Size(88, 32) + Me.btnDDel.TabIndex = 15 + Me.btnDDel.Text = "DEL" + ' + 'btnDEdit + ' + Me.btnDEdit.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDEdit.Location = New System.Drawing.Point(912, 309) + Me.btnDEdit.Name = "btnDEdit" + Me.btnDEdit.Size = New System.Drawing.Size(88, 32) + Me.btnDEdit.TabIndex = 14 + Me.btnDEdit.Text = "EDIT" + ' + 'btnDAdd + ' + Me.btnDAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDAdd.Location = New System.Drawing.Point(912, 269) + Me.btnDAdd.Name = "btnDAdd" + Me.btnDAdd.Size = New System.Drawing.Size(88, 32) + Me.btnDAdd.TabIndex = 13 + Me.btnDAdd.Text = "ADD" + ' + 'iugDetail + ' + Me.iugDetail.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.iugDetail.EnterDirection = iMESUltraGrid.iMESUltraGridControl.EnterDirectionEnum.Down + Me.iugDetail.GroupBoxPromptText = "Drag a column header here to group by that column." + Me.iugDetail.GroupBoxTextForeColor = System.Drawing.Color.Red + Me.iugDetail.Identity = "IMes" + Me.iugDetail.IdentityForm = "" + Me.iugDetail.LayOutFilePath = "" + Me.iugDetail.Location = New System.Drawing.Point(12, 269) + Me.iugDetail.Name = "iugDetail" + Me.iugDetail.PrintFitWidthToPages = 0 + Me.iugDetail.PrintLandscape = True + Me.iugDetail.PrintPageFooter = "" + Me.iugDetail.PrintPageFooterHAlign = Infragistics.Win.HAlign.[Default] + Me.iugDetail.PrintPageFooterHeight = 20 + Me.iugDetail.PrintPageHeader = "" + Me.iugDetail.PrintPageHeaderHAlign = Infragistics.Win.HAlign.[Default] + Me.iugDetail.PrintPageHeaderHeight = 20 + Me.iugDetail.PrintZoom = 1.0R + Me.iugDetail.Size = New System.Drawing.Size(894, 314) + Me.iugDetail.TabIndex = 12 + Me.iugDetail.UserNo = "IMes" + ' + 'btnAdd + ' + Me.btnAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnAdd.Location = New System.Drawing.Point(912, 53) + Me.btnAdd.Name = "btnAdd" + Me.btnAdd.Size = New System.Drawing.Size(88, 32) + Me.btnAdd.TabIndex = 20 + Me.btnAdd.Text = "Add(&A)" + ' + 'btnEdit + ' + Me.btnEdit.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnEdit.Location = New System.Drawing.Point(912, 93) + Me.btnEdit.Name = "btnEdit" + Me.btnEdit.Size = New System.Drawing.Size(88, 32) + Me.btnEdit.TabIndex = 21 + Me.btnEdit.Text = "Edit(&E)" + ' + 'btnDel + ' + Me.btnDel.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDel.Location = New System.Drawing.Point(912, 133) + Me.btnDel.Name = "btnDel" + Me.btnDel.Size = New System.Drawing.Size(88, 32) + Me.btnDel.TabIndex = 22 + Me.btnDel.Text = "Del(&D)" + ' + 'btnCopy + ' + Me.btnCopy.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnCopy.Location = New System.Drawing.Point(912, 173) + Me.btnCopy.Name = "btnCopy" + Me.btnCopy.Size = New System.Drawing.Size(88, 32) + Me.btnCopy.TabIndex = 23 + Me.btnCopy.Text = "Copy(&C)" + ' + 'btnApprove + ' + Me.btnApprove.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnApprove.Location = New System.Drawing.Point(912, 213) + Me.btnApprove.Name = "btnApprove" + Me.btnApprove.Size = New System.Drawing.Size(88, 32) + Me.btnApprove.TabIndex = 24 + Me.btnApprove.Text = "Approve(&Y)" + ' + 'iugSubcontractor + ' + Me.iugSubcontractor.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.iugSubcontractor.EnterDirection = iMESUltraGrid.iMESUltraGridControl.EnterDirectionEnum.Down + Me.iugSubcontractor.GroupBoxPromptText = "Drag a column header here to group by that column." + Me.iugSubcontractor.GroupBoxTextForeColor = System.Drawing.Color.Red + Me.iugSubcontractor.Identity = "IMes" + Me.iugSubcontractor.IdentityForm = "" + Me.iugSubcontractor.LayOutFilePath = "" + Me.iugSubcontractor.Location = New System.Drawing.Point(12, 53) + Me.iugSubcontractor.Name = "iugSubcontractor" + Me.iugSubcontractor.PrintFitWidthToPages = 0 + Me.iugSubcontractor.PrintLandscape = True + Me.iugSubcontractor.PrintPageFooter = "" + Me.iugSubcontractor.PrintPageFooterHAlign = Infragistics.Win.HAlign.[Default] + Me.iugSubcontractor.PrintPageFooterHeight = 20 + Me.iugSubcontractor.PrintPageHeader = "" + Me.iugSubcontractor.PrintPageHeaderHAlign = Infragistics.Win.HAlign.[Default] + Me.iugSubcontractor.PrintPageHeaderHeight = 20 + Me.iugSubcontractor.PrintZoom = 1.0R + Me.iugSubcontractor.Size = New System.Drawing.Size(894, 192) + Me.iugSubcontractor.TabIndex = 25 + Me.iugSubcontractor.UserNo = "IMes" + ' + 'frmSubcontractor + ' + Me.ClientSize = New System.Drawing.Size(1008, 591) + Me.Controls.Add(Me.btnClose) + Me.Controls.Add(Me.btnApprove) + Me.Controls.Add(Me.btnEMail) + Me.Controls.Add(Me.btnDCopy) + Me.Controls.Add(Me.btnCopy) + Me.Controls.Add(Me.btnDDel) + Me.Controls.Add(Me.iugSubcontractor) + Me.Controls.Add(Me.btnDEdit) + Me.Controls.Add(Me.btnAdd) + Me.Controls.Add(Me.btnDAdd) + Me.Controls.Add(Me.btnDel) + Me.Controls.Add(Me.iugDetail) + Me.Controls.Add(Me.btnEdit) + Me.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Name = "frmSubcontractor" + Me.Text = "ENT Subcontractor & Contactor" + Me.WindowState = System.Windows.Forms.FormWindowState.Maximized + Me.Controls.SetChildIndex(Me.btnEdit, 0) + Me.Controls.SetChildIndex(Me.iugDetail, 0) + Me.Controls.SetChildIndex(Me.btnDel, 0) + Me.Controls.SetChildIndex(Me.btnDAdd, 0) + Me.Controls.SetChildIndex(Me.btnAdd, 0) + Me.Controls.SetChildIndex(Me.btnDEdit, 0) + Me.Controls.SetChildIndex(Me.iugSubcontractor, 0) + Me.Controls.SetChildIndex(Me.btnDDel, 0) + Me.Controls.SetChildIndex(Me.btnCopy, 0) + Me.Controls.SetChildIndex(Me.btnDCopy, 0) + Me.Controls.SetChildIndex(Me.btnEMail, 0) + Me.Controls.SetChildIndex(Me.btnApprove, 0) + Me.Controls.SetChildIndex(Me.btnClose, 0) + Me.ResumeLayout(False) + + End Sub + +#End Region + + Private Sub frmSubcontractor_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + + Cursor.Current = Cursors.WaitCursor + + ' 2016 YF, wsENT.Url = LocalizeWebService(wsENT.Url.ToString) + ' 2016 YF, wsENT.EnableDecompression = True + + Call funiMESUltraGridIni() 'Grid初始設定 + + '//取出資料 + Call funLoadSubcontractor() + + SetIssueState(Issue.Unfrozen) '預設在Unforzen上 + SetSearchFieldName(New String() {"SubcontractorNo", "SubcontractorNaME"}) '設置搜尋欄位 + + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + ExeGroupControlPriv(Me, PrivFunNo) + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub frmSubcontractor_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing + If Not dsENT Is Nothing Then dsENT.Dispose() + ' 2016 YF, If Not wsENT Is Nothing Then wsENT.Dispose() + End Sub + + Protected Overrides Sub rdoIssue_CheckedChanged(sender As Object, e As EventArgs) + If IsNothing(dsENT) Then Exit Sub + + Select Case GetIssueState() + Case Issue.Unfrozen + dsENT.Tables(tblENTSubcontractor_21670).DefaultView.RowFilter = "IssueState=0" + Case Issue.Pending + dsENT.Tables(tblENTSubcontractor_21670).DefaultView.RowFilter = "IssueState=1" + Case Issue.Active + dsENT.Tables(tblENTSubcontractor_21670).DefaultView.RowFilter = "IssueState=2" + Case Issue.Unused + dsENT.Tables(tblENTSubcontractor_21670).DefaultView.RowFilter = "IssueState=-1" + End Select + Me.iugSubcontractor.iMESUltraGrid.DataSource = dsENT.Tables(tblENTSubcontractor_21670).DefaultView + Call funShowActiveDetail() + End Sub + + Protected Overrides Sub Finalize() + MyBase.Finalize() + End Sub + + Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click + + Dim fSubcontractorDef As New frmSubcontractorDef + + fSubcontractorDef.DefMode = 0 + fSubcontractorDef.ShowDialog(Me) + fSubcontractorDef.Dispose() + + If gReturnKeyValue = "" Then Exit Sub + + SubcontractorNo = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractor() + + If GetIssueState() = Issue.Unfrozen Then + ugrRow = FindRecordPosition(iugSubcontractor, "SubcontractorNo", SubcontractorNo) + If Not ugrRow Is Nothing Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow = ugrRow + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + End If + + End Sub + + Private Sub btnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEdit.Click + + + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + 'IsGroupByRow不做任何處理 + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then + Exit Sub + End If + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractor_21670).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'") + + '核准狀態為"Unfrozen"者才可修改 + + If Rows(0).Item("IssueState") <> 0 Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-202202", "[%NOT ALLOWED TO EDIT%]"), MsgBoxStyle.Exclamation, Me.Text) + Exit Sub + End If + + Dim fSubcontractorDef As New frmSubcontractorDef + fSubcontractorDef.DefMode = 1 + fSubcontractorDef.EditDataRow = Rows(0) + fSubcontractorDef.ShowDialog(Me) + fSubcontractorDef.Dispose() + + If gReturnKeyValue = "" Then Exit Sub + + SubcontractorNo = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractor() + + If GetIssueState() = Issue.Unfrozen Then + ugrRow = FindRecordPosition(iugSubcontractor, "SubcontractorNo", SubcontractorNo) + If Not ugrRow Is Nothing Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow = ugrRow + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + End If + + End If + End Sub + + Private Sub btnDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDel.Click + + + + '1.先檢查是否為單筆,是:將其Selecte + If Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then Exit Sub + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Cursor.Current = Cursors.WaitCursor + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + + '2.Multi + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count > 0 Then + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Item(0).IsGroupByRow Then + Exit Sub 'Selected.Rows,不會包含GroupRow & 一般的Row在一起,故若是GroupRow不做任何處理 + End If + If iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-100001", "[%ARE YOU SURE TO DELETE ALL SELECTED RECORDS%]"), MsgBoxStyle.OkCancel + MsgBoxStyle.Question + MsgBoxStyle.DefaultButton2, Me.Text) = MsgBoxResult.Cancel Then + Exit Sub + End If + + '共用資料 + Dim XmlDoc As New XmlDocument + Dim blnReLoad As Boolean = False + Dim intIssueState As Integer + + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + For i = 0 To Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count - 1 + intIssueState = Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("IssueState").Value + If intIssueState = 0 Or intIssueState = -1 Or intIssueState = 2 Then '狀態為Unforzen或Unused時直接刪除 + + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", CInput(Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("SubcontractorNo").Value.ToString), "") + strParameter = strParameter & CombineXMLParameter("issuestate", "IssueState", "String", CInput(intIssueState), "") + strParameter = strParameter & CombineXMLParameter("datastamp", "DataStamp", "Integer", iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("DataStamp").Value, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + Try + ' 2016 YF, OutXml = wsENT.DelSubcontractor(InXml) + 'OutXml = InvokeSrv("wsENT.DelSubcontractor", InXml) + OutXml = InvokeSrv("SXS.wsENT.DelSubcontractor", InXml) + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + If Not blnReLoad Then blnReLoad = True + Else + '找出Exception訊並顯示出來 + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit For + End If + Catch ex As Exception + 'MsgBox("Unexpected Error. Delete failed," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + Exit For + End Try + Else + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200021", "[%NOT ALLOWED TO delete%]"), MsgBoxStyle.Exclamation, Me.Text) + End If + Next + + XmlDoc = Nothing + + If blnReLoad Then + + Call funLoadSubcontractor() + + Call funShowActiveDetail() + + End If + + End If + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub btnCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCopy.Click + + + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + 'IsGroupByRow不做任何處理 + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then + Exit Sub + End If + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractor_21670).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'") + + Dim fSubcontractorDef As New frmSubcontractorDef + fSubcontractorDef.DefMode = 2 + fSubcontractorDef.EditDataRow = Rows(0) + fSubcontractorDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + SubcontractorNo = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractor() + + If GetIssueState() = Issue.Unfrozen Then + ugrRow = FindRecordPosition(iugSubcontractor, "SubcontractorNo", SubcontractorNo) + If Not ugrRow Is Nothing Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow = ugrRow + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + End If + + End If + End Sub + + Private Sub btnApprove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnApprove.Click + + + + '1.先檢查是否為單筆,是:將其Selecte + If Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then Exit Sub + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Cursor.Current = Cursors.WaitCursor + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + + '2.Multi + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count > 0 Then + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Item(0).IsGroupByRow Then + Exit Sub 'Selected.Rows,不會包含GroupRow & 一般的Row在一起,故若是GroupRow不做任何處理 + End If + If iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-100002", "[%ARE YOU SURE TO APPROVE ALL SELECTED RECORDS%]"), MsgBoxStyle.OkCancel + MsgBoxStyle.Question + MsgBoxStyle.DefaultButton2, Me.Text) = MsgBoxResult.Cancel Then + Exit Sub + End If + + '共用資料 + Dim XmlDoc As New XmlDocument + Dim blnReLoad As Boolean = False + Dim intIssueState As Integer + + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + For i = 0 To Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count - 1 + intIssueState = Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("IssueState").Value + If intIssueState = 0 Then + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", CInput(Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("SubcontractorNo").Value.ToString), "") + strParameter += CombineXMLParameter("issuestate", "IssueState", "String", intIssueState, "") + strParameter += CombineXMLParameter("creator", "Creator", "String", gUserNo, "") + strParameter = strParameter & CombineXMLParameter("datastamp", "DataStamp", "Integer", iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("DataStamp").Value, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + Try + ' 2016 YF, OutXml = wsENT.ApproveSubcontractor(InXml) + 'OutXml = InvokeSrv("wsENT.ApproveSubcontractor", InXml) + OutXml = InvokeSrv("SXS.wsENT.ApproveSubcontractor", InXml) + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + If Not blnReLoad Then blnReLoad = True + Else + '找出Exception訊並顯示出來 + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit For + End If + Catch ex As Exception + 'MsgBox("Unexpected Error. Approve failed," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + Exit For + End Try + Else + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200021", "[%NOT ALLOW TO APPROVE%]"), MsgBoxStyle.Exclamation, Me.Text) + End If + Next + + XmlDoc = Nothing + + If blnReLoad Then + + Call funLoadSubcontractor() + + Call funShowActiveDetail() + + End If + + End If + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub btnDAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDAdd.Click + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + + 'Dim Rows As DataRow() + Dim fSubcontractorContDef As New frmSubcontractorContDef + + fSubcontractorContDef.DefMode = 0 + fSubcontractorContDef.SubcontractorNo = Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString + fSubcontractorContDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + ContactorName = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + ugrRow = FindRecordPosition(iugDetail, "ContactorName", ContactorName) + If Not ugrRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.ActiveRow = ugrRow + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + + End If + End Sub + + Private Sub btnDEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDEdit.Click + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing And Not Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow OrElse iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractorCont_21670).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'" _ + & " And ContactorName = '" & Replace(Me.iugDetail.iMESUltraGrid.ActiveRow.Cells("ContactorName").Value.ToString, "'", "''") & "'") + + Dim fSubcontractorContDef As New frmSubcontractorContDef + fSubcontractorContDef.DefMode = 1 + fSubcontractorContDef.EditDataRow = Rows(0) + fSubcontractorContDef.SubcontractorNo = Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString + fSubcontractorContDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + ContactorName = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + ugrRow = FindRecordPosition(iugDetail, "ContactorName", ContactorName) + If Not ugrRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.ActiveRow = ugrRow + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + Else + + Exit Sub + End If + + End Sub + + Private Sub btnDDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDDel.Click + + + '1.先檢查是否為單筆,是:將其Selecte + If Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then Exit Sub + If iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + + Cursor.Current = Cursors.WaitCursor + + If Not Me.iugDetail.iMESUltraGrid.ActiveRow.Selected Then + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + + '2.Multi + If Me.iugDetail.iMESUltraGrid.Selected.Rows.Count > 0 Then + If Me.iugDetail.iMESUltraGrid.Selected.Rows.Item(0).IsGroupByRow Then + Exit Sub 'Selected.Rows,不會包含GroupRow & 一般的Row在一起,故若是GroupRow不做任何處理 + End If + If iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-100001", "[%ARE YOU SURE TO DELETE ALL SELECTED RECORDS%]"), MsgBoxStyle.OkCancel + MsgBoxStyle.Question + MsgBoxStyle.DefaultButton2, Me.Text) = MsgBoxResult.Cancel Then + Exit Sub + End If + + '共用資料 + Dim XmlDoc As New XmlDocument + Dim blnReLoad As Boolean = False + Dim intIssueState As Integer + + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + For i = 0 To Me.iugDetail.iMESUltraGrid.Selected.Rows.Count - 1 + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", CInput(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString), "") + strParameter = strParameter & CombineXMLParameter("ContactorName", "ContactorName", "String", CInput(Me.iugDetail.iMESUltraGrid.Selected.Rows(i).Cells("ContactorName").Value.ToString), "") + InXml = CombineXMLRequest(strIdentity, strParameter) + Try + ' 2016 YF, OutXml = wsENT.DelSubcontractorCont(InXml) + 'OutXml = InvokeSrv("wsENT.DelSubcontractorCont", InXml) + OutXml = InvokeSrv("SXS.wsENT.DelSubcontractorCont", InXml) + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + If Not blnReLoad Then blnReLoad = True + Else + '找出Exception訊並顯示出來 + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit For + End If + Catch ex As Exception + 'MsgBox("Unexpected Error. Delete failed," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + Exit For + End Try + + Next + + XmlDoc = Nothing + + If blnReLoad Then Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + End If + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub btnDCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDCopy.Click + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing And Not Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow OrElse iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractorCont_21670).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'" _ + & " And ContactorName = '" & Replace(Me.iugDetail.iMESUltraGrid.ActiveRow.Cells("ContactorName").Value.ToString, "'", "''") & "'") + + Dim fSubcontractorContDef As New frmSubcontractorContDef + fSubcontractorContDef.DefMode = 2 + fSubcontractorContDef.EditDataRow = Rows(0) + fSubcontractorContDef.SubcontractorNo = Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString + fSubcontractorContDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + ContactorName = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + ugrRow = FindRecordPosition(iugDetail, "ContactorName", ContactorName) + If Not ugrRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.ActiveRow = ugrRow + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + Else + + Exit Sub + End If + + End Sub + + Private Sub btnEMail_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEMail.Click + + If Not Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then + If iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Dim Rows As DataRow() + Dim proMail As New System.Diagnostics.Process + Dim strAccount As String + + Rows = dsENT.Tables(tblENTSubcontractorCont_21670).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'" _ + & " And ContactorName = '" & Replace(Me.iugDetail.iMESUltraGrid.ActiveRow.Cells("ContactorName").Value.ToString, "'", "''") & "'") + + strAccount = "mailto:" & Rows(0).Item("EMail").ToString + proMail.Start(strAccount) + + End If + + End Sub + + Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click + Me.Close() + End Sub + + Protected Overrides Sub btnQuery_Click(sender As Object, e As EventArgs) + Cursor.Current = Cursors.WaitCursor + + funLoadSubcontractor() + + Cursor.Current = Cursors.Default + End Sub + +#Region "Ultra Grid" + + Private Sub iugSubcontractor_iMESUltraGrid_InitializeLayOut(ByVal sender As System.Object, ByVal e As Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs) Handles iugSubcontractor.iMESUltraGrid_InitializeLayOut + + With e.Layout + With .Bands(0).Columns("SubcontractorNo") + .Header.Caption = "SubcontractorNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 0 + End With + With .Bands(0).Columns("SubcontractorName") + .Header.Caption = "SubcontractorName" + .Width = 110 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 1 + End With + With .Bands(0).Columns("Description") + .Header.Caption = "Description" + .Width = 110 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 2 + End With + With .Bands(0).Columns("Creator") + .Header.Caption = "Creator" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 3 + End With + With .Bands(0).Columns("CreateDate") + .Header.Caption = "CreateDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 4 + End With + With .Bands(0).Columns("IssueState") + .Header.Caption = "IssueState" + .Width = 114 + .Hidden = True + .Header.VisiblePosition = 5 + End With + With .Bands(0).Columns("Reviser") + .Header.Caption = "Reviser" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 6 + End With + With .Bands(0).Columns("ReviseDate") + .Header.Caption = "ReviseDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 7 + End With + With e.Layout.Bands(0).Columns("DataStamp") + .Hidden = True + End With + End With + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + End Sub + + Private Sub iugSubcontractor_iMESUltraGrid_AfterRowActivate(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles iugSubcontractor.iMESUltraGrid_AfterRowActivate + + 'IsGroupByRow不做任何處理 + If Not iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + Else + Exit Sub + End If + + End Sub + + Private Sub iugDetail_iMESUltraGrid_InitializeLayOut(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs) Handles iugDetail.iMESUltraGrid_InitializeLayOut + + With e.Layout + With .Bands(0).Columns("SubcontractorNo") + .Header.Caption = "SubcontractorNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 0 + End With + With .Bands(0).Columns("ContactorName") + .Header.Caption = "ContactorName" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 1 + End With + With .Bands(0).Columns("TelNo") + .Header.Caption = "TelNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 2 + End With + With .Bands(0).Columns("FaxNo") + .Header.Caption = "FaxNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 3 + End With + With .Bands(0).Columns("Title") + .Header.Caption = "Title" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 4 + End With + With .Bands(0).Columns("Address") + .Header.Caption = "Address" + .Width = 110 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 5 + End With + With .Bands(0).Columns("EMail") + .Header.Caption = "EMail" + .Width = 150 + .Hidden = False + .CellAppearance.ForeColor = System.Drawing.Color.Blue + .CellAppearance.FontData.Underline = DefaultableBoolean.True + .Header.VisiblePosition = 6 + End With + With .Bands(0).Columns("Description") + .Header.Caption = "Description" + .Width = 200 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 7 + End With + With .Bands(0).Columns("Creator") + .Header.Caption = "Creator" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 8 + End With + With .Bands(0).Columns("CreateDate") + .Header.Caption = "CreateDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 9 + End With + With .Bands(0).Columns("Reviser") + .Header.Caption = "Reviser" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 10 + End With + With .Bands(0).Columns("ReviseDate") + .Header.Caption = "ReviseDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 11 + End With + With e.Layout.Bands(0).Columns("DataStamp") + .Hidden = True + End With + End With + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + End Sub + +#End Region + +#Region "Load Function" + + '//取出tblENTSubcontractor_21670 外包商資料 + + Private Sub funLoadSubcontractor() + + '先判斷是否dataset中已有ENTSubcontractor之datatable,若有,需先remove否則會有錯誤 + If Not IsNothing(dsENT.Tables(tblENTSubcontractor_21670)) Then + dsENT.Tables.Remove(tblENTSubcontractor_21670) + End If + + '組InXml的字串 + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + '加上IssueState要求取出所有資料 + strParameter = CombineXMLParameter("issuestate", "IssueState", "Integer", defInteger, "") + '加上查詢條件 cboSearchFieldName,txtSearchFieldValue + strParameter += CombineXMLQueryCondition() + InXml = CombineXMLRequest(strIdentity, strParameter) + + Try + ' 2016 YF, OutXml = wsENT.LoadSubcontractor(InXml) + 'OutXml = InvokeSrv("wsENT.LoadSubcontractor", InXml) + OutXml = InvokeSrv("SXS.wsENT.LoadSubcontractor", InXml) + + Dim XmlDoc As New XmlDocument '處理Xml字串之物件? + + '利用XmlDoc物件處理ReturnValue + XmlDoc.LoadXml(OutXml) + + If ChkExecutionSuccess(XmlDoc) Then + '讀取取出資料表之名稱 + + tblENTSubcontractor_21670 = XmlDoc.GetElementsByTagName("returnvalue").Item(0).SelectNodes("loadSubcontractor").Item(0).SelectNodes("name").Item(0).InnerXml + '取出Schema,dataset讀取Schema可防止Null Field及DateTime的問題 + + XmlSchema = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractor").Item(0).SelectNodes("schema").Item(0).InnerXml + If XmlSchema <> "" Then + '將XML讀入String Reader object中,因為Dataset讀入XML時必須透過String Reader物件 + tmpStringReader = New System.IO.StringReader(XmlSchema) + dsENT.ReadXmlSchema(tmpStringReader) + tmpStringReader.Close() + End If + + '取出Data + XmlData = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractor").Item(0).SelectNodes("value").Item(0).InnerXml + If XmlData <> "" Then + tmpStringReader = New System.IO.StringReader(XmlData) + dsENT.ReadXml(tmpStringReader, XmlReadMode.InferSchema) + tmpStringReader.Close() + End If + + strFilter = "" + Select Case GetIssueState() + Case Issue.Unfrozen + strFilter = FilterByInteger(strFilter, "IssueState", 0) + Case Issue.Pending + strFilter = FilterByInteger(strFilter, "IssueState", 1) + Case Issue.Active + strFilter = FilterByInteger(strFilter, "IssueState", 2) + Case Issue.Unused + strFilter = FilterByInteger(strFilter, "IssueState", -1) + End Select + + dsENT.Tables(tblENTSubcontractor_21670).DefaultView.RowFilter = strFilter + dsENT.Tables(tblENTSubcontractor_21670).DefaultView.Sort = "SubcontractorNo" + + Me.iugSubcontractor.iMESUltraGrid.DataSource = dsENT.Tables(tblENTSubcontractor_21670).DefaultView + + Else + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit Sub + End If + + XmlDoc = Nothing + + Catch ex As Exception + 'MsgBox("Unexpected Error. Load ENT Subcontractor Failed!!," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + End Try + + End Sub + + '//取出tblENTSubcontractorCont_21670聯絡人資料 + + Private Sub funLoadSubcontractorCont(ByRef SubcontractorNo As String) + + If Not IsNothing(dsENT.Tables(tblENTSubcontractorCont_21670)) Then + dsENT.Tables.Remove(tblENTSubcontractorCont_21670) + End If + + '組InXml的字串 + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", SubcontractorNo, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + + Try + ' 2016 YF, OutXml = wsENT.LoadSubcontractorCont(InXml) + 'OutXml = InvokeSrv("wsENT.LoadSubcontractorCont", InXml) + OutXml = InvokeSrv("SXS.wsENT.LoadSubcontractorCont", InXml) + + Dim XmlDoc As New XmlDocument '處理Xml字串之物件? + + '利用XmlDoc物件處理ReturnValue + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + '讀取取出資料表之名稱 + + tblENTSubcontractorCont_21670 = XmlDoc.GetElementsByTagName("returnvalue").Item(0).SelectNodes("loadSubcontractorcont").Item(0).SelectNodes("name").Item(0).InnerXml + '取出Schema,dataset讀取Schema可防止Null Field及DateTime的問題 + XmlSchema = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractorcont").Item(0).SelectNodes("schema").Item(0).InnerXml + If XmlSchema <> "" Then + '將XML讀入String Reader object中,因為Dataset讀入XML時必須透過String Reader物件 + tmpStringReader = New System.IO.StringReader(XmlSchema) + dsENT.ReadXmlSchema(tmpStringReader) + tmpStringReader.Close() + End If + + '取出Data + XmlData = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractorcont").Item(0).SelectNodes("value").Item(0).InnerXml + If XmlData <> "" Then + tmpStringReader = New System.IO.StringReader(XmlData) + dsENT.ReadXml(tmpStringReader, XmlReadMode.InferSchema) + tmpStringReader.Close() + End If + + Me.iugDetail.iMESUltraGrid.DataSource = dsENT.Tables(tblENTSubcontractorCont_21670).DefaultView + + Else + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + End If + + XmlDoc = Nothing + + Catch ex As Exception + 'MsgBox("Unexpected Error. Load ENT Subcontractor Cont Failed!!," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + End Try + + End Sub + + Private Sub funShowActiveDetail() + + If Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.DataSource = Nothing + Else + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + End If + + End Sub + + Private Sub funiMESUltraGridIni() + + 'iugSubcontractor 初始設定 + With Me.iugSubcontractor.iMESUltraGrid + .Text = "" + .DisplayLayout.GroupByBox.Hidden = True + .DisplayLayout.UseFixedHeaders = False + End With + + '系統會以UserNo做為Layout的檔名 + + iugSubcontractor.UserNo = gUserNo + + 'iugDetail 初始設定 + With Me.iugDetail.iMESUltraGrid.DisplayLayout + .GroupByBox.Hidden = True + .Override.ExpansionIndicator = ShowExpansionIndicator.Default + .ViewStyle = ViewStyle.SingleBand + .RowConnectorStyle = RowConnectorStyle.Default + + End With + + '系統會以UserNo做為Layout的檔名 + + iugDetail.UserNo = gUserNo + + End Sub + + Private Sub iugDetail_Load(sender As Object, e As EventArgs) Handles iugDetail.Load + + End Sub + + Private Sub iugSubcontractor_Load(sender As Object, e As EventArgs) Handles iugSubcontractor.Load + + End Sub + + +#End Region + +End Class + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/frmSubcontractorContDef.resx b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/frmSubcontractorContDef.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/frmSubcontractorContDef.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/frmSubcontractorContDef.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/frmSubcontractorContDef.vb new file mode 100644 index 0000000..cb67e7c --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/frmSubcontractorContDef.vb @@ -0,0 +1,660 @@ +Imports iMESExceptionManager + +Public Class frmSubcontractorContDef + + Inherits COM_Kit.frmDefTemplat + + '//Public Variables + Public EditDataRow As DataRow + Public DefMode As Integer = 0 '0. ADD, 1.Edit, 2. Copy + + Public SubcontractorNo As String = defString + Public PrivFunNo As String = defString + + '//Web Service相關變數 + ' 2016 YF, Dim wsENT As New wsENT.wsENT + Dim InXml As String + Dim OutXml As String + + Dim strIdentity As String + Dim strParameter As String + Dim intDataStamp As Integer '紀錄DataStamp + +#Region " Windows Form Designer generated code " + + Public Sub New() + MyBase.New() + + 'This call is required by the Windows Form Designer. + InitializeComponent() + + 'Add any initialization after the InitializeComponent() call + + End Sub + + 'Form overrides dispose to clean up the component list. + Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing Then + If Not (components Is Nothing) Then + components.Dispose() + End If + End If + MyBase.Dispose(disposing) + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + Friend WithEvents txtDescription As System.Windows.Forms.RichTextBox + Friend WithEvents lblAddress As System.Windows.Forms.Label + Friend WithEvents lblEMail As System.Windows.Forms.Label + Friend WithEvents lblTitle As System.Windows.Forms.Label + Friend WithEvents lblFaxNo As System.Windows.Forms.Label + Friend WithEvents lblTelNo As System.Windows.Forms.Label + Friend WithEvents lblDescription As System.Windows.Forms.Label + Friend WithEvents lblContactorName As System.Windows.Forms.Label + Friend WithEvents lblSubcontractorNo As System.Windows.Forms.Label + Friend WithEvents gbxSubcontractorContData As System.Windows.Forms.GroupBox + Friend WithEvents txtSubcontractorNo As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtContactorName As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtFaxNo As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtTelNo As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtEMail As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtTitle As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtAddress As Infragistics.Win.UltraWinEditors.UltraTextEditor + Private Sub InitializeComponent() + Dim Appearance1 As Infragistics.Win.Appearance = New Infragistics.Win.Appearance() + Me.gbxSubcontractorContData = New System.Windows.Forms.GroupBox() + Me.txtAddress = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtEMail = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtTitle = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtFaxNo = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.lblAddress = New System.Windows.Forms.Label() + Me.lblEMail = New System.Windows.Forms.Label() + Me.lblTitle = New System.Windows.Forms.Label() + Me.lblFaxNo = New System.Windows.Forms.Label() + Me.lblTelNo = New System.Windows.Forms.Label() + Me.txtDescription = New System.Windows.Forms.RichTextBox() + Me.lblDescription = New System.Windows.Forms.Label() + Me.lblSubcontractorNo = New System.Windows.Forms.Label() + Me.lblContactorName = New System.Windows.Forms.Label() + Me.txtSubcontractorNo = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtContactorName = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtTelNo = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + CType(Me.gbxBasisData, System.ComponentModel.ISupportInitialize).BeginInit() + Me.gbxSubcontractorContData.SuspendLayout() + CType(Me.txtAddress, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtEMail, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtTitle, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtFaxNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtSubcontractorNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtContactorName, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtTelNo, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SuspendLayout() + ' + 'gbxBasisData + ' + Me.gbxBasisData.Location = New System.Drawing.Point(12, 322) + Me.gbxBasisData.Size = New System.Drawing.Size(472, 70) + ' + 'btnApply + ' + Me.btnApply.Location = New System.Drawing.Point(396, 401) + ' + 'btnConfirm + ' + Me.btnConfirm.Location = New System.Drawing.Point(208, 401) + ' + 'btnClose + ' + Me.btnClose.Location = New System.Drawing.Point(302, 401) + ' + 'gbxSubcontractorContData + ' + Me.gbxSubcontractorContData.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.gbxSubcontractorContData.Controls.Add(Me.txtAddress) + Me.gbxSubcontractorContData.Controls.Add(Me.txtEMail) + Me.gbxSubcontractorContData.Controls.Add(Me.txtTitle) + Me.gbxSubcontractorContData.Controls.Add(Me.txtFaxNo) + Me.gbxSubcontractorContData.Controls.Add(Me.lblAddress) + Me.gbxSubcontractorContData.Controls.Add(Me.lblEMail) + Me.gbxSubcontractorContData.Controls.Add(Me.lblTitle) + Me.gbxSubcontractorContData.Controls.Add(Me.lblFaxNo) + Me.gbxSubcontractorContData.Controls.Add(Me.lblTelNo) + Me.gbxSubcontractorContData.Controls.Add(Me.txtDescription) + Me.gbxSubcontractorContData.Controls.Add(Me.lblDescription) + Me.gbxSubcontractorContData.Controls.Add(Me.lblSubcontractorNo) + Me.gbxSubcontractorContData.Controls.Add(Me.lblContactorName) + Me.gbxSubcontractorContData.Controls.Add(Me.txtSubcontractorNo) + Me.gbxSubcontractorContData.Controls.Add(Me.txtContactorName) + Me.gbxSubcontractorContData.Controls.Add(Me.txtTelNo) + Me.gbxSubcontractorContData.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.gbxSubcontractorContData.Location = New System.Drawing.Point(15, 8) + Me.gbxSubcontractorContData.Name = "gbxSubcontractorContData" + Me.gbxSubcontractorContData.Size = New System.Drawing.Size(469, 306) + Me.gbxSubcontractorContData.TabIndex = 0 + Me.gbxSubcontractorContData.TabStop = False + Me.gbxSubcontractorContData.Text = "ENT Subcontractor Contactor Data" + ' + 'txtAddress + ' + Me.txtAddress.Location = New System.Drawing.Point(120, 152) + Me.txtAddress.Name = "txtAddress" + Me.txtAddress.Size = New System.Drawing.Size(336, 26) + Me.txtAddress.TabIndex = 13 + ' + 'txtEMail + ' + Me.txtEMail.Location = New System.Drawing.Point(320, 120) + Me.txtEMail.Name = "txtEMail" + Me.txtEMail.Size = New System.Drawing.Size(136, 26) + Me.txtEMail.TabIndex = 11 + ' + 'txtTitle + ' + Me.txtTitle.Location = New System.Drawing.Point(120, 120) + Me.txtTitle.Name = "txtTitle" + Me.txtTitle.Size = New System.Drawing.Size(114, 26) + Me.txtTitle.TabIndex = 9 + ' + 'txtFaxNo + ' + Me.txtFaxNo.Location = New System.Drawing.Point(320, 88) + Me.txtFaxNo.Name = "txtFaxNo" + Me.txtFaxNo.Size = New System.Drawing.Size(136, 26) + Me.txtFaxNo.TabIndex = 7 + ' + 'lblAddress + ' + Me.lblAddress.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblAddress.Location = New System.Drawing.Point(24, 154) + Me.lblAddress.Name = "lblAddress" + Me.lblAddress.Size = New System.Drawing.Size(86, 14) + Me.lblAddress.TabIndex = 12 + Me.lblAddress.Text = "Address" + Me.lblAddress.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblEMail + ' + Me.lblEMail.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblEMail.Location = New System.Drawing.Point(248, 123) + Me.lblEMail.Name = "lblEMail" + Me.lblEMail.Size = New System.Drawing.Size(64, 14) + Me.lblEMail.TabIndex = 10 + Me.lblEMail.Text = "EMail" + Me.lblEMail.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblTitle + ' + Me.lblTitle.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblTitle.Location = New System.Drawing.Point(24, 121) + Me.lblTitle.Name = "lblTitle" + Me.lblTitle.Size = New System.Drawing.Size(86, 14) + Me.lblTitle.TabIndex = 8 + Me.lblTitle.Text = "Title" + Me.lblTitle.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblFaxNo + ' + Me.lblFaxNo.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblFaxNo.Location = New System.Drawing.Point(248, 90) + Me.lblFaxNo.Name = "lblFaxNo" + Me.lblFaxNo.Size = New System.Drawing.Size(64, 14) + Me.lblFaxNo.TabIndex = 6 + Me.lblFaxNo.Text = "FaxNo" + Me.lblFaxNo.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblTelNo + ' + Me.lblTelNo.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblTelNo.Location = New System.Drawing.Point(24, 90) + Me.lblTelNo.Name = "lblTelNo" + Me.lblTelNo.Size = New System.Drawing.Size(86, 14) + Me.lblTelNo.TabIndex = 4 + Me.lblTelNo.Text = "TelNo" + Me.lblTelNo.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'txtDescription + ' + Me.txtDescription.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.txtDescription.Location = New System.Drawing.Point(120, 184) + Me.txtDescription.Name = "txtDescription" + Me.txtDescription.Size = New System.Drawing.Size(336, 108) + Me.txtDescription.TabIndex = 15 + Me.txtDescription.Text = "" + ' + 'lblDescription + ' + Me.lblDescription.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblDescription.Location = New System.Drawing.Point(24, 186) + Me.lblDescription.Name = "lblDescription" + Me.lblDescription.Size = New System.Drawing.Size(86, 14) + Me.lblDescription.TabIndex = 14 + Me.lblDescription.Text = "Description" + Me.lblDescription.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblSubcontractorNo + ' + Me.lblSubcontractorNo.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblSubcontractorNo.Location = New System.Drawing.Point(14, 29) + Me.lblSubcontractorNo.Name = "lblSubcontractorNo" + Me.lblSubcontractorNo.Size = New System.Drawing.Size(96, 14) + Me.lblSubcontractorNo.TabIndex = 0 + Me.lblSubcontractorNo.Text = "Subcontractor No" + Me.lblSubcontractorNo.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblContactorName + ' + Me.lblContactorName.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblContactorName.Location = New System.Drawing.Point(24, 59) + Me.lblContactorName.Name = "lblContactorName" + Me.lblContactorName.Size = New System.Drawing.Size(86, 14) + Me.lblContactorName.TabIndex = 2 + Me.lblContactorName.Text = "Contactor Name" + Me.lblContactorName.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'txtSubcontractorNo + ' + Me.txtSubcontractorNo.Location = New System.Drawing.Point(120, 24) + Me.txtSubcontractorNo.Name = "txtSubcontractorNo" + Me.txtSubcontractorNo.ReadOnly = True + Me.txtSubcontractorNo.Size = New System.Drawing.Size(114, 26) + Me.txtSubcontractorNo.TabIndex = 1 + Me.txtSubcontractorNo.TabStop = False + ' + 'txtContactorName + ' + Appearance1.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtContactorName.Appearance = Appearance1 + Me.txtContactorName.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtContactorName.Location = New System.Drawing.Point(120, 56) + Me.txtContactorName.Name = "txtContactorName" + Me.txtContactorName.Size = New System.Drawing.Size(160, 26) + Me.txtContactorName.TabIndex = 3 + ' + 'txtTelNo + ' + Me.txtTelNo.Location = New System.Drawing.Point(120, 88) + Me.txtTelNo.Name = "txtTelNo" + Me.txtTelNo.Size = New System.Drawing.Size(114, 26) + Me.txtTelNo.TabIndex = 5 + ' + 'frmSubcontractorContDef + ' + Me.ClientSize = New System.Drawing.Size(496, 446) + Me.Controls.Add(Me.gbxSubcontractorContData) + Me.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Name = "frmSubcontractorContDef" + Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen + Me.Text = "ENT Subcontractor Contactor Define" + Me.Controls.SetChildIndex(Me.btnClose, 0) + Me.Controls.SetChildIndex(Me.btnConfirm, 0) + Me.Controls.SetChildIndex(Me.btnApply, 0) + Me.Controls.SetChildIndex(Me.gbxBasisData, 0) + Me.Controls.SetChildIndex(Me.gbxSubcontractorContData, 0) + CType(Me.gbxBasisData, System.ComponentModel.ISupportInitialize).EndInit() + Me.gbxSubcontractorContData.ResumeLayout(False) + Me.gbxSubcontractorContData.PerformLayout() + CType(Me.txtAddress, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtEMail, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtTitle, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtFaxNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtSubcontractorNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtContactorName, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtTelNo, System.ComponentModel.ISupportInitialize).EndInit() + Me.ResumeLayout(False) + + End Sub + +#End Region + + Private Sub frmSubcontractorContDef_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + + Cursor.Current = Cursors.WaitCursor + + Select Case DefMode + Case 0 + Me.Text = Me.Text & "(ADD)" + Case 1 + Me.Text = Me.Text & "(EDIT)" + Case 2 + Me.Text = Me.Text & "(Copy)" + Case Else + Me.Text = Me.Text & "(Unknown)" + End Select + + '做為MainForm判斷是否重新LoadData的依據() + gReturnKeyValue = "" + + ' 2016 YF, wsENT.Url = LocalizeWebService(wsENT.Url.ToString) + ' 2016 YF, wsENT.EnableDecompression = True + If DefMode = 0 Or DefMode = 2 Then + SetCreateDate(Now) + SetCreator(gUserNo) + End If + If Not EditDataRow Is Nothing Then '修改 or Copy + txtSubcontractorNo.Text = EditDataRow.Item("SubcontractorNo").ToString + txtContactorName.Text = EditDataRow.Item("ContactorName").ToString + txtTelNo.Text = EditDataRow.Item("TelNo").ToString + txtFaxNo.Text = EditDataRow.Item("FaxNo").ToString + txtTitle.Text = EditDataRow.Item("Title").ToString + txtAddress.Text = EditDataRow.Item("Address").ToString + txtEMail.Text = EditDataRow.Item("EMail").ToString + 'txtDescription是RichTextBox(Control, 因為TextBox無法正常顯示多行換行的資料) + txtDescription.Text = EditDataRow.Item("Description").ToString + If DefMode = 1 Then + If (Not IsDBNull(EditDataRow("Creator"))) Then + SetCreateDate(Convert.ToDateTime(EditDataRow.Item("CreateDate"))) + SetCreator(EditDataRow.Item("Creator").ToString) + End If + End If + End If + + If DefMode = 0 Then 'Add + txtSubcontractorNo.Text = SubcontractorNo + SetCreateDate(Now) + SetCreator(gUserNo) + ElseIf DefMode = 1 Then 'Edit + txtContactorName.ReadOnly = True + SetReviseDate(Now) + SetReviser(gUserNo) + intDataStamp = EditDataRow.Item("DataStamp") + End If + + btnApplyEnabled = False + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + ExeGroupControlPriv(Me, PrivFunNo) + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub frmSubcontractorContDef_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Activated + If DefMode = 0 Or DefMode = 2 Then + txtContactorName.Focus() + Else + txtTelNo.Focus() + End If + End Sub + + Protected Overrides Sub btnConfirm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + + Cursor.Current = Cursors.WaitCursor + + If funAddorEdit(sender) < 0 Then Exit Sub + + Me.Close() + + Cursor.Current = Cursors.Default + + End Sub + + Protected Overrides Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + Me.Close() + End Sub + + Protected Overrides Sub btnApply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + + Cursor.Current = Cursors.WaitCursor + + If funAddorEdit(sender) < 0 Then Exit Sub + + If DefMode = 0 Or DefMode = 2 Then + txtContactorName.Focus() + Else + txtTelNo.Focus() + End If + + txtEMail.Text = "" + btnApplyEnabled = False + Cursor.Current = Cursors.Default + + End Sub + +#Region "Control KeyPress" + + Private Sub txtSubcontractorNo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.Click + txtSubcontractorNo.SelectAll() + End Sub + + Private Sub txtSubcontractorNo_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.Enter + txtSubcontractorNo.SelectAll() + End Sub + + Private Sub txtSubcontractorNo_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtSubcontractorNo.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtSubcontractorNo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtContactorName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtContactorName.Click + txtContactorName.SelectAll() + End Sub + + Private Sub txtContactorName_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtContactorName.Enter + txtContactorName.SelectAll() + End Sub + + Private Sub txtContactorName_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtContactorName.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtContactorName_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtContactorName.Leave + If txtContactorName.Text <> "" And txtEMail.Text = "" Then + txtEMail.Text = txtContactorName.Text & "@" + End If + txtContactorName.Text = UCase(txtContactorName.Text) + End Sub + + Private Sub txtContactorName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtContactorName.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtTelNo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTelNo.Click + txtTelNo.SelectAll() + End Sub + + Private Sub txtTelNo_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTelNo.Enter + txtTelNo.SelectAll() + End Sub + + Private Sub txtTelNo_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtTelNo.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtTelNo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTelNo.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtFaxNo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtFaxNo.Click + txtFaxNo.SelectAll() + End Sub + + Private Sub txtFaxNo_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtFaxNo.Enter + txtFaxNo.SelectAll() + End Sub + + Private Sub txtFaxNo_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtFaxNo.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtFaxNo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtFaxNo.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtTitle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTitle.Click + txtTitle.SelectAll() + End Sub + + Private Sub txtTitle_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTitle.Enter + txtTitle.SelectAll() + End Sub + + Private Sub txtTitle_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtTitle.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtTitle_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTitle.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtEMail_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtEMail.Click + txtEMail.SelectAll() + End Sub + + Private Sub txtEMail_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtEMail.Enter + txtEMail.SelectAll() + End Sub + + Private Sub txtEMail_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtEMail.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtEMail_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtEMail.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtAddress_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAddress.Click + txtAddress.SelectAll() + End Sub + + Private Sub txtAddress_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAddress.Enter + txtAddress.SelectAll() + End Sub + + Private Sub txtAddress_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtAddress.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtAddress_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAddress.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtDescription_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDescription.Click + txtDescription.SelectAll() + End Sub + + Private Sub txtDescription_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDescription.Enter + txtDescription.SelectAll() + End Sub + + Private Sub txtDescription_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtDescription.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtDescription_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtDescription.TextChanged + btnApplyEnabled = True + End Sub + +#End Region + +#Region "Others" + + Private Function funAddorEdit(sender As Object) As Integer + + funAddorEdit = -1 + + '****************************************************************************** + '1.基本檢查() + '****************************************************************************** + If txtSubcontractorNo.Text = "" Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200001", "[%SubcontractorNo%]"), MsgBoxStyle.Exclamation, Me.Text) + txtSubcontractorNo.Focus() + Exit Function + End If + If txtContactorName.Text = "" Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200001", "[%ContactorName%]"), MsgBoxStyle.Exclamation, Me.Text) + txtContactorName.Focus() + Exit Function + End If + + '****************************************************************************** + '2.寫回資料庫() + '****************************************************************************** + Dim XmlDoc As New XmlDocument + + Try + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + strParameter = CombineXMLParameter("subcontractorno", "SubcontractorNo", "String", CInput(txtSubcontractorNo.Text), "") + strParameter = strParameter & CombineXMLParameter("contactorname", "ContactorName", "String", CInput(txtContactorName.Text), "") + strParameter = strParameter & CombineXMLParameter("telno", "TelNo", "String", txtTelNo.Text, "") + strParameter = strParameter & CombineXMLParameter("faxno", "FaxNo", "String", txtFaxNo.Text, "") + strParameter = strParameter & CombineXMLParameter("title", "Title", "String", CInput(txtTitle.Text), "") + strParameter = strParameter & CombineXMLParameter("address", "Address", "String", CInput(txtAddress.Text), "") + strParameter = strParameter & CombineXMLParameter("email", "EMail", "String", CInput(txtEMail.Text), "") + strParameter = strParameter & CombineXMLParameter("description", "Description", "String", CInput(txtDescription.Text), "") + + + If DefMode = 0 Or DefMode = 2 Then 'Add or Copy + strParameter += CombineXMLParameter("creator", "Creator", "String", gUserNo, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + ' 2016 YF, OutXml = wsENT.AddSubcontractorCont(InXml) + OutXml = InvokeSrv("SXS.wsENT.AddSubcontractorCont", InXml) + + Else 'Edit + ' 增加Datastamp + strParameter += CombineXMLParameter("datastamp", "Datastamp", "Integer", intDataStamp, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + ' 2016 YF, OutXml = wsENT.EditSubcontractorCont(InXml) + OutXml = InvokeSrv("SXS.wsENT.EditSubcontractorCont", InXml) + + End If + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + gReturnKeyValue = txtContactorName.Text + + funAddorEdit = 0 + If sender.Equals(btnApply) Then + intDataStamp += 1 + End If + Else + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + End If + + Catch ex As Exception + 'MsgBox("Unexpected Error. Add or Edit ENT Subcontractor Contactor Failed!," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + End Try + + XmlDoc = Nothing + + End Function +#End Region + + + Private Sub frmSubcontractorContDef_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing + ' 2016 YF, If Not wsENT Is Nothing Then wsENT.Dispose() + End Sub + + Private Sub btnConfirm_Click_1(sender As Object, e As EventArgs) Handles btnConfirm.Click + + End Sub +End Class + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/frmSubcontractorDef.resx b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/frmSubcontractorDef.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/frmSubcontractorDef.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/frmSubcontractorDef.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/frmSubcontractorDef.vb new file mode 100644 index 0000000..4736fa5 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/frmSubcontractorDef.vb @@ -0,0 +1,460 @@ +Imports iMESExceptionManager + +Public Class frmSubcontractorDef + + Inherits COM_Kit.frmDefTemplat + + '//Public Variables + Public EditDataRow As DataRow + Public DefMode As Integer = 0 '0. ADD, 1.Edit, 2. Copy + Public PrivFunNo As String = defString + + '//Web Service相關變數 + ' 2016 YF, Dim wsENT As New wsENT.wsENT + Dim InXml As String + Dim OutXml As String + + Dim strIdentity As String + Dim strParameter As String + Friend WithEvents txtWZ216670 As TextBox + Friend WithEvents Label1 As Label + Dim intDataStamp As Integer '紀錄DataStamp + +#Region " Windows Form Designer generated code " + + Public Sub New() + MyBase.New() + + 'This call is required by the Windows Form Designer. + InitializeComponent() + + 'Add any initialization after the InitializeComponent() call + + End Sub + + 'Form overrides dispose to clean up the component list. + Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing Then + If Not (components Is Nothing) Then + components.Dispose() + End If + End If + MyBase.Dispose(disposing) + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + Friend WithEvents txtDescription As System.Windows.Forms.RichTextBox + Friend WithEvents lblDescription As System.Windows.Forms.Label + Friend WithEvents lblSubcontractorNo As System.Windows.Forms.Label + Friend WithEvents lblSubcontractorName As System.Windows.Forms.Label + Friend WithEvents gbxSubcontractorData As System.Windows.Forms.GroupBox + Friend WithEvents txtSubcontractorNo As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtSubcontractorName As Infragistics.Win.UltraWinEditors.UltraTextEditor + Private Sub InitializeComponent() + Dim Appearance1 As Infragistics.Win.Appearance = New Infragistics.Win.Appearance() + Dim Appearance2 As Infragistics.Win.Appearance = New Infragistics.Win.Appearance() + Me.gbxSubcontractorData = New System.Windows.Forms.GroupBox() + Me.txtDescription = New System.Windows.Forms.RichTextBox() + Me.lblDescription = New System.Windows.Forms.Label() + Me.lblSubcontractorNo = New System.Windows.Forms.Label() + Me.lblSubcontractorName = New System.Windows.Forms.Label() + Me.txtSubcontractorNo = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtSubcontractorName = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtWZ216670 = New System.Windows.Forms.TextBox() + Me.Label1 = New System.Windows.Forms.Label() + CType(Me.gbxBasisData, System.ComponentModel.ISupportInitialize).BeginInit() + Me.gbxSubcontractorData.SuspendLayout() + CType(Me.txtSubcontractorNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtSubcontractorName, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SuspendLayout() + ' + 'gbxBasisData + ' + Me.gbxBasisData.Location = New System.Drawing.Point(12, 185) + Me.gbxBasisData.Size = New System.Drawing.Size(479, 70) + ' + 'btnApply + ' + Me.btnApply.Location = New System.Drawing.Point(403, 264) + ' + 'btnConfirm + ' + Me.btnConfirm.Location = New System.Drawing.Point(215, 264) + ' + 'btnClose + ' + Me.btnClose.Location = New System.Drawing.Point(309, 264) + ' + 'gbxSubcontractorData + ' + Me.gbxSubcontractorData.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.gbxSubcontractorData.Controls.Add(Me.Label1) + Me.gbxSubcontractorData.Controls.Add(Me.txtWZ216670) + Me.gbxSubcontractorData.Controls.Add(Me.txtDescription) + Me.gbxSubcontractorData.Controls.Add(Me.lblDescription) + Me.gbxSubcontractorData.Controls.Add(Me.lblSubcontractorNo) + Me.gbxSubcontractorData.Controls.Add(Me.lblSubcontractorName) + Me.gbxSubcontractorData.Controls.Add(Me.txtSubcontractorNo) + Me.gbxSubcontractorData.Controls.Add(Me.txtSubcontractorName) + Me.gbxSubcontractorData.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.gbxSubcontractorData.Location = New System.Drawing.Point(12, 8) + Me.gbxSubcontractorData.Name = "gbxSubcontractorData" + Me.gbxSubcontractorData.Size = New System.Drawing.Size(479, 169) + Me.gbxSubcontractorData.TabIndex = 7 + Me.gbxSubcontractorData.TabStop = False + Me.gbxSubcontractorData.Text = "Subcontractor Data" + ' + 'txtDescription + ' + Me.txtDescription.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.txtDescription.Location = New System.Drawing.Point(128, 86) + Me.txtDescription.Name = "txtDescription" + Me.txtDescription.Size = New System.Drawing.Size(334, 67) + Me.txtDescription.TabIndex = 2 + Me.txtDescription.Text = "" + ' + 'lblDescription + ' + Me.lblDescription.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblDescription.Location = New System.Drawing.Point(56, 88) + Me.lblDescription.Name = "lblDescription" + Me.lblDescription.Size = New System.Drawing.Size(64, 14) + Me.lblDescription.TabIndex = 13 + Me.lblDescription.Text = "Description" + Me.lblDescription.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblSubcontractorNo + ' + Me.lblSubcontractorNo.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblSubcontractorNo.Location = New System.Drawing.Point(24, 24) + Me.lblSubcontractorNo.Name = "lblSubcontractorNo" + Me.lblSubcontractorNo.Size = New System.Drawing.Size(96, 32) + Me.lblSubcontractorNo.TabIndex = 5 + Me.lblSubcontractorNo.Text = "Subcontractor No" + Me.lblSubcontractorNo.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblSubcontractorName + ' + Me.lblSubcontractorName.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblSubcontractorName.Location = New System.Drawing.Point(8, 56) + Me.lblSubcontractorName.Name = "lblSubcontractorName" + Me.lblSubcontractorName.Size = New System.Drawing.Size(112, 32) + Me.lblSubcontractorName.TabIndex = 9 + Me.lblSubcontractorName.Text = "Subcontractor Name" + Me.lblSubcontractorName.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'txtSubcontractorNo + ' + Appearance1.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtSubcontractorNo.Appearance = Appearance1 + Me.txtSubcontractorNo.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtSubcontractorNo.Location = New System.Drawing.Point(128, 24) + Me.txtSubcontractorNo.Name = "txtSubcontractorNo" + Me.txtSubcontractorNo.Size = New System.Drawing.Size(152, 26) + Me.txtSubcontractorNo.TabIndex = 0 + ' + 'txtSubcontractorName + ' + Appearance2.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtSubcontractorName.Appearance = Appearance2 + Me.txtSubcontractorName.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtSubcontractorName.Location = New System.Drawing.Point(128, 55) + Me.txtSubcontractorName.Name = "txtSubcontractorName" + Me.txtSubcontractorName.Size = New System.Drawing.Size(334, 26) + Me.txtSubcontractorName.TabIndex = 1 + ' + 'txtWZ216670 + ' + Me.txtWZ216670.Location = New System.Drawing.Point(362, 25) + Me.txtWZ216670.Name = "txtWZ216670" + Me.txtWZ216670.Size = New System.Drawing.Size(100, 25) + Me.txtWZ216670.TabIndex = 14 + ' + 'Label1 + ' + Me.Label1.AutoSize = True + Me.Label1.Location = New System.Drawing.Point(297, 24) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(66, 17) + Me.Label1.TabIndex = 15 + Me.Label1.Text = "WZ21670" + ' + 'frmSubcontractorDef + ' + Me.ClientSize = New System.Drawing.Size(503, 309) + Me.Controls.Add(Me.gbxSubcontractorData) + Me.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Name = "frmSubcontractorDef" + Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen + Me.Text = "ENT Subcontractor Define" + Me.Controls.SetChildIndex(Me.btnClose, 0) + Me.Controls.SetChildIndex(Me.btnConfirm, 0) + Me.Controls.SetChildIndex(Me.btnApply, 0) + Me.Controls.SetChildIndex(Me.gbxBasisData, 0) + Me.Controls.SetChildIndex(Me.gbxSubcontractorData, 0) + CType(Me.gbxBasisData, System.ComponentModel.ISupportInitialize).EndInit() + Me.gbxSubcontractorData.ResumeLayout(False) + Me.gbxSubcontractorData.PerformLayout() + CType(Me.txtSubcontractorNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtSubcontractorName, System.ComponentModel.ISupportInitialize).EndInit() + Me.ResumeLayout(False) + + End Sub + +#End Region + + Private Sub frmSubcontractorDef_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + + Cursor.Current = Cursors.WaitCursor + + Select Case DefMode + Case 0 + Me.Text = Me.Text & "(ADD)" + Case 1 + Me.Text = Me.Text & "(EDIT)" + Case 2 + Me.Text = Me.Text & "(Copy)" + Case Else + Me.Text = Me.Text & "(Unknown)" + End Select + + '做為MainForm判斷是否重新LoadData的依據 + gReturnKeyValue = "" + + ' 2016 YF, wsENT.Url = LocalizeWebService(wsENT.Url.ToString) + ' 2016 YF, wsENT.EnableDecompression = True + + If Not EditDataRow Is Nothing Then + txtSubcontractorNo.Text = EditDataRow.Item("SubcontractorNo").ToString + txtSubcontractorName.Text = EditDataRow.Item("SubcontractorName").ToString + 'txtDescription是RichTextBox Control,因為TextBox無法正常顯示多行換行的資料 + txtDescription.Text = EditDataRow.Item("Description").ToString + End If + + If DefMode = 0 Or DefMode = 2 Then 'Add or Copy + SetCreator(gUserNo) + SetCreateDate(Now) + ElseIf DefMode = 1 Then 'Edit + txtSubcontractorNo.ReadOnly = True + SetCreator(EditDataRow.Item("Creator").ToString) + SetCreateDate(Convert.ToDateTime(EditDataRow.Item("CreateDate"))) + SetReviser(gUserNo) + SetReviseDate(Now) + intDataStamp = EditDataRow.Item("DataStamp") + End If + + btnApplyEnabled = False + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + ExeGroupControlPriv(Me, PrivFunNo) + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub frmSubcontractorDef_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Activated + If DefMode = 0 Or DefMode = 2 Then + txtSubcontractorNo.Focus() + Else + txtSubcontractorName.Focus() + End If + End Sub + + Protected Overrides Sub btnConfirm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + + Cursor.Current = Cursors.WaitCursor + + If funAddorEdit(sender) < 0 Then Exit Sub + + Me.Close() + + Cursor.Current = Cursors.Default + + End Sub + + Protected Overrides Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + Me.Close() + End Sub + + Protected Overrides Sub btnApply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + + Cursor.Current = Cursors.WaitCursor + + If funAddorEdit(sender) < 0 Then Exit Sub + + If DefMode = 0 Or DefMode = 2 Then + txtSubcontractorNo.Focus() + Else + txtSubcontractorName.Focus() + + End If + + Cursor.Current = Cursors.Default + btnApplyEnabled = False + + End Sub + + Private Sub frmSubcontractorDef_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing + ' 2016 YF, If Not wsENT Is Nothing Then wsENT.Dispose() + End Sub + +#Region "Control KeyPress" + + Private Sub txtSubcontractorNo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.Click + txtSubcontractorNo.SelectAll() + End Sub + + Private Sub txtSubcontractorNo_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.Enter + txtSubcontractorNo.SelectAll() + End Sub + + Private Sub txtSubcontractorNo_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtSubcontractorNo.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtSubcontractorNo_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.Leave + txtSubcontractorNo.Text = UCase(txtSubcontractorNo.Text) + End Sub + + Private Sub txtSubcontractorNo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtSubcontractorName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorName.Click + txtSubcontractorName.SelectAll() + End Sub + + Private Sub txtSubcontractorName_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorName.Enter + txtSubcontractorName.SelectAll() + End Sub + + Private Sub txtSubcontractorName_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtSubcontractorName.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtSubcontractorName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorName.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtDescription_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDescription.Click + txtDescription.SelectAll() + End Sub + + Private Sub txtDescription_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDescription.Enter + txtDescription.SelectAll() + End Sub + + Private Sub txtDescription_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtDescription.TextChanged + btnApplyEnabled = True + End Sub + +#End Region + +#Region "Others" + + Private Function funAddorEdit(sender As Object) As Integer + + funAddorEdit = -1 + + '****************************************************************************** + '1.基本檢查 + '****************************************************************************** + If txtSubcontractorNo.Text = "" Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200001", "[%SubcontractorNo%]"), MsgBoxStyle.Exclamation, Me.Text) + txtSubcontractorNo.Focus() + Exit Function + End If + + If txtSubcontractorName.Text = "" Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200001", "[%SubcontractorName%]"), MsgBoxStyle.Exclamation, Me.Text) + txtSubcontractorName.Focus() + Exit Function + End If + + '2. + '****************************************************************************** + '寫回資料庫 + '****************************************************************************** + Dim XmlDoc As New XmlDocument + + Try + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + strParameter = CombineXMLParameter("subcontractorno", "SubcontractorNo", "String", CInput(txtSubcontractorNo.Text), "") + strParameter = strParameter & CombineXMLParameter("subcontractorname", "SubcontractorName", "String", CInput(txtSubcontractorName.Text), "") + strParameter = strParameter & CombineXMLParameter("description", "Description", "String", CInput(txtDescription.Text), "") + strParameter = strParameter & CombineXMLParameter("wz21670", "WZ21670", "String", CInput(txtWZ216670.Text), "") + + If DefMode = 0 Or DefMode = 2 Then 'Add or Copy + strParameter = strParameter & CombineXMLParameter("creator", "Creator", "String", gUserNo, "") + strParameter = strParameter & CombineXMLParameter("createdate", "CreateDate", "DateTime", Format(Now, "yyyy/MM/dd HH:mm:ss"), "") + InXml = CombineXMLRequest(strIdentity, strParameter) + + ' 2016 YF, OutXml = wsENT.AddSubcontractor(InXml) + OutXml = InvokeSrv("SXS.wsENT.AddSubcontractor", InXml) + + Else + '修改 + strParameter = strParameter & CombineXMLParameter("issuestate", "IssueState", "String", EditDataRow.Item("IssueState").ToString, "") + ' 增加Datastamp + strParameter += CombineXMLParameter("datastamp", "Datastamp", "Integer", intDataStamp, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + + ' 2016 YF, OutXml = wsENT.EditSubcontractor(InXml) + OutXml = InvokeSrv("SXS.wsENT.EditSubcontractor", InXml) + + End If + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + gReturnKeyValue = txtSubcontractorNo.Text + + funAddorEdit = 0 + If sender.Equals(btnApply) Then + intDataStamp += 1 + End If + Else + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + End If + + Catch ex As Exception + 'MsgBox("Unexpected Error. Add or Edit ENT Subcontractor Failed!," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + End Try + + XmlDoc = Nothing + + End Function + + Private Sub btnConfirm_Click_1(sender As Object, e As EventArgs) Handles btnConfirm.Click + + End Sub + + Private Sub txtSubcontractorNo_ValueChanged(sender As Object, e As EventArgs) Handles txtSubcontractorNo.ValueChanged + + End Sub + + Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles txtWZ216670.TextChanged + + End Sub + + Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click + + End Sub + +#End Region + +End Class + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/iMES.snk b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/iMES.snk new file mode 100644 index 0000000..4206cdc Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670/iMES.snk differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor.sln b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor.sln new file mode 100644 index 0000000..85b1902 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor.sln @@ -0,0 +1,39 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25123.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ET_Subcontractor", "ET_Subcontractor.vbproj", "{D6EE7B96-F10E-44E2-9731-162B70B4C8DD}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Test", "..\..\Test\Test.vbproj", "{C4A48E3F-38E4-4E88-A47D-FA5510686E57}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x86 = Debug|x86 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D6EE7B96-F10E-44E2-9731-162B70B4C8DD}.Debug|x86.ActiveCfg = Debug|x86 + {D6EE7B96-F10E-44E2-9731-162B70B4C8DD}.Debug|x86.Build.0 = Debug|x86 + {D6EE7B96-F10E-44E2-9731-162B70B4C8DD}.Release|x86.ActiveCfg = Release|x86 + {D6EE7B96-F10E-44E2-9731-162B70B4C8DD}.Release|x86.Build.0 = Release|x86 + {C4A48E3F-38E4-4E88-A47D-FA5510686E57}.Debug|x86.ActiveCfg = Debug|x86 + {C4A48E3F-38E4-4E88-A47D-FA5510686E57}.Debug|x86.Build.0 = Debug|x86 + {C4A48E3F-38E4-4E88-A47D-FA5510686E57}.Release|x86.ActiveCfg = Release|x86 + {C4A48E3F-38E4-4E88-A47D-FA5510686E57}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(TeamFoundationVersionControl) = preSolution + SccNumberOfProjects = 3 + SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccTeamFoundationServer = http://tfs.imestech.com:8080/tfs/messeries6 + SccProjectUniqueName0 = ET_Subcontractor.vbproj + SccLocalPath0 = . + SccProjectUniqueName1 = ..\\..\\Test\\Test.vbproj + SccProjectName1 = ../../Test + SccLocalPath1 = ..\\..\\Test + SccLocalPath2 = . + EndGlobalSection +EndGlobal diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor.vbproj b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor.vbproj new file mode 100644 index 0000000..2069bd0 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor.vbproj @@ -0,0 +1,194 @@ + + + + + Debug + x86 + {D6EE7B96-F10E-44E2-9731-162B70B4C8DD} + Library + ET_Subcontractor_21670_1 + ET_Subcontractor_21670_1 + 512 + Windows + v4.6.2 + + SAK + SAK + SAK + SAK + + + On + + + Binary + + + Off + + + On + + + true + true + true + ..\..\..\MESClient\ + ET_Subcontractor_21670_1.xml + 0 + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + full + x86 + MinimumRecommendedRules.ruleset + false + + + true + ..\..\..\MESClient\ + ET_Subcontractor_21670_1.xml + true + 0 + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + pdbonly + x86 + MinimumRecommendedRules.ruleset + false + + + true + + + iMES.snk + + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Win.v19.1.dll + False + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Win.UltraWinGrid.v19.1.dll + False + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Win.UltraWinEditors.v19.1.dll + False + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Win.Misc.v19.1.dll + False + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Shared.v19.1.dll + False + + + ..\..\..\MESClient\COM_Kit.dll + False + + + ..\..\..\MES_C_DLL\iMESExceptionManager.dll + False + + + ..\..\..\MES_C_DLL\iMESUltraGrid.dll + False + + + + + + + + + + + + + + + + + + + + + + + + + + + + modConstant.vb + + + Form + + + Form + + + Form + + + + True + Application.myapp + True + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + frmSubcontractor.vb + + + frmSubcontractorContDef.vb + + + frmSubcontractorDef.vb + + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor.vbproj.vspscc b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor.vbproj.vspscc new file mode 100644 index 0000000..b6d3289 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor.vbproj.vspscc @@ -0,0 +1,10 @@ +"" +{ +"FILE_VERSION" = "9237" +"ENLISTMENT_CHOICE" = "NEVER" +"PROJECT_FILE_RELATIVE_PATH" = "" +"NUMBER_OF_EXCLUDED_FILES" = "0" +"ORIGINAL_PROJECT_FILE_PATH" = "" +"NUMBER_OF_NESTED_PROJECTS" = "0" +"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER" +} diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/ET_Subcontractor.sln b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/ET_Subcontractor.sln new file mode 100644 index 0000000..85b1902 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/ET_Subcontractor.sln @@ -0,0 +1,39 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25123.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ET_Subcontractor", "ET_Subcontractor.vbproj", "{D6EE7B96-F10E-44E2-9731-162B70B4C8DD}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Test", "..\..\Test\Test.vbproj", "{C4A48E3F-38E4-4E88-A47D-FA5510686E57}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x86 = Debug|x86 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D6EE7B96-F10E-44E2-9731-162B70B4C8DD}.Debug|x86.ActiveCfg = Debug|x86 + {D6EE7B96-F10E-44E2-9731-162B70B4C8DD}.Debug|x86.Build.0 = Debug|x86 + {D6EE7B96-F10E-44E2-9731-162B70B4C8DD}.Release|x86.ActiveCfg = Release|x86 + {D6EE7B96-F10E-44E2-9731-162B70B4C8DD}.Release|x86.Build.0 = Release|x86 + {C4A48E3F-38E4-4E88-A47D-FA5510686E57}.Debug|x86.ActiveCfg = Debug|x86 + {C4A48E3F-38E4-4E88-A47D-FA5510686E57}.Debug|x86.Build.0 = Debug|x86 + {C4A48E3F-38E4-4E88-A47D-FA5510686E57}.Release|x86.ActiveCfg = Release|x86 + {C4A48E3F-38E4-4E88-A47D-FA5510686E57}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(TeamFoundationVersionControl) = preSolution + SccNumberOfProjects = 3 + SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccTeamFoundationServer = http://tfs.imestech.com:8080/tfs/messeries6 + SccProjectUniqueName0 = ET_Subcontractor.vbproj + SccLocalPath0 = . + SccProjectUniqueName1 = ..\\..\\Test\\Test.vbproj + SccProjectName1 = ../../Test + SccLocalPath1 = ..\\..\\Test + SccLocalPath2 = . + EndGlobalSection +EndGlobal diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/ET_Subcontractor.vbproj b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/ET_Subcontractor.vbproj new file mode 100644 index 0000000..0f2302d --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/ET_Subcontractor.vbproj @@ -0,0 +1,206 @@ + + + + + Debug + x86 + {D6EE7B96-F10E-44E2-9731-162B70B4C8DD} + Library + ET_Subcontractor_21670_1 + ET_Subcontractor_21670_1 + 512 + Windows + v4.6.2 + + SAK + SAK + SAK + SAK + + + On + + + Binary + + + Off + + + On + + + true + true + true + ..\..\..\MESClient\ + ET_Subcontractor_21670_1.xml + 0 + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + full + x86 + MinimumRecommendedRules.ruleset + false + + + true + ..\..\..\MESClient\ + ET_Subcontractor_21670_1.xml + true + 0 + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + pdbonly + x86 + MinimumRecommendedRules.ruleset + false + + + true + + + iMES.snk + + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Win.v19.1.dll + False + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Win.UltraWinGrid.v19.1.dll + False + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Win.UltraWinEditors.v19.1.dll + False + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Win.Misc.v19.1.dll + False + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Shared.v19.1.dll + False + + + ..\..\..\MESClient\COM_Kit.dll + False + + + ..\..\..\MES_C_DLL\iMESExceptionManager.dll + False + + + ..\..\..\MES_C_DLL\iMESUltraGrid.dll + False + + + + + + + + + + + + + + + + + + + + + + + + + + + + modConstant.vb + + + Form1.vb + + + Form + + + Form + + + Form + + + Form + + + Form + + + + True + Application.myapp + True + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + frmBusiness21670.vb + + + frmSubcontractor.vb + + + frmSubcontractorContDef.vb + + + frmSubcontractorDef.vb + + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/ET_Subcontractor.vbproj.user b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/ET_Subcontractor.vbproj.user new file mode 100644 index 0000000..7273a11 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/ET_Subcontractor.vbproj.user @@ -0,0 +1,6 @@ + + + + D:\iMES\MES_Env\607.4\DefaultSite\MESws_STD\bin\ + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/ET_Subcontractor.vbproj.vspscc b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/ET_Subcontractor.vbproj.vspscc new file mode 100644 index 0000000..b6d3289 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/ET_Subcontractor.vbproj.vspscc @@ -0,0 +1,10 @@ +"" +{ +"FILE_VERSION" = "9237" +"ENLISTMENT_CHOICE" = "NEVER" +"PROJECT_FILE_RELATIVE_PATH" = "" +"NUMBER_OF_EXCLUDED_FILES" = "0" +"ORIGINAL_PROJECT_FILE_PATH" = "" +"NUMBER_OF_NESTED_PROJECTS" = "0" +"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER" +} diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/Form1.Designer.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/Form1.Designer.vb new file mode 100644 index 0000000..c29cf72 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/Form1.Designer.vb @@ -0,0 +1,32 @@ + +Partial Class Form1 + + + Inherits COM_Kit.frmBasisTemplat + + 'Form 重写 Dispose,以清理组件列表。 + + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Windows 窗体设计器所必需的 + Private components As System.ComponentModel.IContainer + + '注意: 以下过程是 Windows 窗体设计器所必需的 + '可以使用 Windows 窗体设计器修改它。 + '不要使用代码编辑器修改它。 + + Private Sub InitializeComponent() + components = New System.ComponentModel.Container + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(800, 450) + Me.Text = "Form1" + End Sub +End Class diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/Form1.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/Form1.vb new file mode 100644 index 0000000..10d55d4 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/Form1.vb @@ -0,0 +1,3 @@ +Public Class Form1 + +End Class \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/Application.Designer.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/Application.Designer.vb new file mode 100644 index 0000000..537244b --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/Application.Designer.vb @@ -0,0 +1,13 @@ +'------------------------------------------------------------------------------ +' +' 此代码由工具生成。 +' 运行时版本:4.0.30319.42000 +' +' 对此文件的更改可能会导致不正确的行为,并且如果 +' 重新生成代码,这些更改将会丢失。 +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/Application.myapp b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/Application.myapp new file mode 100644 index 0000000..758895d --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + false + false + 0 + true + 0 + 1 + true + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/AssemblyInfo.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/AssemblyInfo.vb new file mode 100644 index 0000000..b0cdd98 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' 組件的一般資訊是由下列的屬性集控制。 +' 變更這些屬性的值即可修改組件的相關 +' 資訊。 + +' 檢閱組件屬性的值 + + + + + + + + + + +'下列 GUID 為專案公開 (Expose) 至 COM 時所要使用的 typelib ID + + +' 組件的版本資訊由下列四個值所組成: +' +' 主要版本 +' 次要版本 +' 組建編號 +' 修訂編號 +' +' 您可以指定所有的值,也可以依照以下的方式,使用 '*' 將組建和修訂編號 +' 指定為預設值: +' + + + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/BuildIncrementVersionInfo.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/BuildIncrementVersionInfo.vb new file mode 100644 index 0000000..755cff8 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/BuildIncrementVersionInfo.vb @@ -0,0 +1 @@ + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/Resources.Designer.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/Resources.Designer.vb new file mode 100644 index 0000000..af2b746 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/Resources.Designer.vb @@ -0,0 +1,63 @@ +'------------------------------------------------------------------------------ +' +' 此代码由工具生成。 +' 运行时版本:4.0.30319.42000 +' +' 对此文件的更改可能会导致不正确的行为,并且如果 +' 重新生成代码,这些更改将会丢失。 +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + +Imports System + +Namespace My.Resources + + '此类是由 StronglyTypedResourceBuilder + '类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + '若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + '(以 /str 作为命令选项),或重新生成 VS 项目。 + ''' + ''' 一个强类型的资源类,用于查找本地化的字符串等。 + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' 返回此类使用的缓存的 ResourceManager 实例。 + ''' + _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("ET_Subcontractor_21670_1.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' 重写当前线程的 CurrentUICulture 属性,对 + ''' 使用此强类型资源类的所有资源查找执行重写。 + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set + resourceCulture = value + End Set + End Property + End Module +End Namespace diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/Resources.resx b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/Settings.Designer.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/Settings.Designer.vb new file mode 100644 index 0000000..1c9fffa --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' 此代码由工具生成。 +' 运行时版本:4.0.30319.42000 +' +' 对此文件的更改可能会导致不正确的行为,并且如果 +' 重新生成代码,这些更改将会丢失。 +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + _ + Partial Friend NotInheritable Class MySettings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) + +#Region "My.Settings 自动保存功能" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + _ + Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub +#End If +#End Region + + Public Shared ReadOnly Property [Default]() As MySettings + Get + +#If _MyType = "WindowsForms" Then + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If +#End If + Return defaultInstance + End Get + End Property + End Class +End Namespace + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.ET_Subcontractor_21670_1.My.MySettings + Get + Return Global.ET_Subcontractor_21670_1.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/Settings.settings b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/Settings.settings new file mode 100644 index 0000000..85b890b --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/licenses.licx b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/licenses.licx new file mode 100644 index 0000000..e3f40e2 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/My Project/licenses.licx @@ -0,0 +1,7 @@ +Infragistics.Win.Misc.UltraButton, Infragistics4.Win.Misc.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.UltraWinEditors.UltraRadioButton, Infragistics4.Win.UltraWinEditors.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.UltraWinEditors.UltraComboEditor, Infragistics4.Win.UltraWinEditors.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.Misc.UltraGroupBox, Infragistics4.Win.Misc.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.UltraWinEditors.UltraTextEditor, Infragistics4.Win.UltraWinEditors.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.Misc.UltraLabel, Infragistics4.Win.Misc.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.Misc.UltraPanel, Infragistics4.Win.Misc.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmBusiness21670.resx b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmBusiness21670.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmBusiness21670.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmBusiness21670.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmBusiness21670.vb new file mode 100644 index 0000000..cbad98c --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmBusiness21670.vb @@ -0,0 +1,1129 @@ +Imports iMESExceptionManager + +Imports Infragistics.Win +Imports Infragistics.Win.UltraWinGrid +Public Class frmSubcontractor1 + + Inherits COM_Kit.frmBasisTemplat + + Public PrivFunNo As String = defString + + '//WS相關變數 + ' 2016 YF, Dim wsENT As New wsENT.wsENT '宣告Web Service物件? + Dim tmpStringReader As System.IO.StringReader '將字串轉換成可讀入DataSet的物件 + Dim XmlData As String '儲存取回之資料 + Dim XmlSchema As String '儲存取回之資料結構 + Dim InXml As String '儲存呼叫Web Service的傳入參數(Request字串) + Dim OutXml As String '儲存Web Service的傳回值(Response字串) + Dim strIdentity As String '儲存Identity XML字串? + Dim strParameter As String '儲存Parameter XML字串 + + '//資料表相關變數 + + Dim dsENT As New DataSet '資料集:儲存取回之資料? + + Dim tblENTSubcontractor As String '儲存取回資料表的名稱(master)? + Dim tblENTSubcontractorCont As String '明細資料表名稱(detail) + Dim strFilter As String 'Filter string及列印的過濾條件 + + '//其他共用變數 + Dim SubcontractorNo As String 'for Gird to Focus + Dim ContactorName As String 'for DetailGrid to Focus + Dim ugrRow As Infragistics.Win.UltraWinGrid.UltraGridRow + Friend WithEvents btnAdd As Misc.UltraButton + Friend WithEvents btnEdit As Misc.UltraButton + Friend WithEvents btnDel As Misc.UltraButton + Friend WithEvents btnCopy As Misc.UltraButton + Friend WithEvents btnApprove As Misc.UltraButton + Friend WithEvents iugSubcontractor As iMESUltraGrid.iMESUltraGridControl + Dim i As Integer + +#Region " Windows Form Designer generated code " + + Public Sub New() + MyBase.New() + + 'This call is required by the Windows Form Designer. + InitializeComponent() + + 'Add any initialization after the InitializeComponent() call + + End Sub + + 'Form overrides dispose to clean up the component list. + Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing Then + If Not (components Is Nothing) Then + components.Dispose() + End If + End If + MyBase.Dispose(disposing) + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.Container + Friend WithEvents iugDetail As iMESUltraGrid.iMESUltraGridControl + Friend WithEvents btnClose As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnEMail As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDCopy As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDDel As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDEdit As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDAdd As Infragistics.Win.Misc.UltraButton + Private Sub InitializeComponent() + Me.btnClose = New Infragistics.Win.Misc.UltraButton() + Me.btnEMail = New Infragistics.Win.Misc.UltraButton() + Me.btnDCopy = New Infragistics.Win.Misc.UltraButton() + Me.btnDDel = New Infragistics.Win.Misc.UltraButton() + Me.btnDEdit = New Infragistics.Win.Misc.UltraButton() + Me.btnDAdd = New Infragistics.Win.Misc.UltraButton() + Me.iugDetail = New iMESUltraGrid.iMESUltraGridControl() + Me.btnAdd = New Infragistics.Win.Misc.UltraButton() + Me.btnEdit = New Infragistics.Win.Misc.UltraButton() + Me.btnDel = New Infragistics.Win.Misc.UltraButton() + Me.btnCopy = New Infragistics.Win.Misc.UltraButton() + Me.btnApprove = New Infragistics.Win.Misc.UltraButton() + Me.iugSubcontractor = New iMESUltraGrid.iMESUltraGridControl() + Me.SuspendLayout() + ' + 'btnClose + ' + Me.btnClose.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnClose.Location = New System.Drawing.Point(912, 552) + Me.btnClose.Name = "btnClose" + Me.btnClose.Size = New System.Drawing.Size(88, 32) + Me.btnClose.TabIndex = 18 + Me.btnClose.Text = "Close (&X)" + ' + 'btnEMail + ' + Me.btnEMail.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnEMail.Location = New System.Drawing.Point(912, 429) + Me.btnEMail.Name = "btnEMail" + Me.btnEMail.Size = New System.Drawing.Size(88, 32) + Me.btnEMail.TabIndex = 17 + Me.btnEMail.Text = "Mail" + ' + 'btnDCopy + ' + Me.btnDCopy.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDCopy.Location = New System.Drawing.Point(912, 389) + Me.btnDCopy.Name = "btnDCopy" + Me.btnDCopy.Size = New System.Drawing.Size(88, 32) + Me.btnDCopy.TabIndex = 16 + Me.btnDCopy.Text = "Copy" + ' + 'btnDDel + ' + Me.btnDDel.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDDel.Location = New System.Drawing.Point(912, 349) + Me.btnDDel.Name = "btnDDel" + Me.btnDDel.Size = New System.Drawing.Size(88, 32) + Me.btnDDel.TabIndex = 15 + Me.btnDDel.Text = "DEL" + ' + 'btnDEdit + ' + Me.btnDEdit.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDEdit.Location = New System.Drawing.Point(912, 309) + Me.btnDEdit.Name = "btnDEdit" + Me.btnDEdit.Size = New System.Drawing.Size(88, 32) + Me.btnDEdit.TabIndex = 14 + Me.btnDEdit.Text = "EDIT" + ' + 'btnDAdd + ' + Me.btnDAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDAdd.Location = New System.Drawing.Point(912, 269) + Me.btnDAdd.Name = "btnDAdd" + Me.btnDAdd.Size = New System.Drawing.Size(88, 32) + Me.btnDAdd.TabIndex = 13 + Me.btnDAdd.Text = "ADD" + ' + 'iugDetail + ' + Me.iugDetail.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.iugDetail.EnterDirection = iMESUltraGrid.iMESUltraGridControl.EnterDirectionEnum.Down + Me.iugDetail.GroupBoxPromptText = "Drag a column header here to group by that column." + Me.iugDetail.GroupBoxTextForeColor = System.Drawing.Color.Red + Me.iugDetail.Identity = "IMes" + Me.iugDetail.IdentityForm = "" + Me.iugDetail.LayOutFilePath = "" + Me.iugDetail.Location = New System.Drawing.Point(12, 270) + Me.iugDetail.Name = "iugDetail" + Me.iugDetail.PrintFitWidthToPages = 0 + Me.iugDetail.PrintLandscape = True + Me.iugDetail.PrintPageFooter = "" + Me.iugDetail.PrintPageFooterHAlign = Infragistics.Win.HAlign.[Default] + Me.iugDetail.PrintPageFooterHeight = 20 + Me.iugDetail.PrintPageHeader = "" + Me.iugDetail.PrintPageHeaderHAlign = Infragistics.Win.HAlign.[Default] + Me.iugDetail.PrintPageHeaderHeight = 20 + Me.iugDetail.PrintZoom = 1.0R + Me.iugDetail.Size = New System.Drawing.Size(894, 314) + Me.iugDetail.TabIndex = 12 + Me.iugDetail.UserNo = "IMes" + ' + 'btnAdd + ' + Me.btnAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnAdd.Location = New System.Drawing.Point(912, 53) + Me.btnAdd.Name = "btnAdd" + Me.btnAdd.Size = New System.Drawing.Size(88, 32) + Me.btnAdd.TabIndex = 20 + Me.btnAdd.Text = "Add(&A)" + ' + 'btnEdit + ' + Me.btnEdit.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnEdit.Location = New System.Drawing.Point(912, 93) + Me.btnEdit.Name = "btnEdit" + Me.btnEdit.Size = New System.Drawing.Size(88, 32) + Me.btnEdit.TabIndex = 21 + Me.btnEdit.Text = "Edit(&E)" + ' + 'btnDel + ' + Me.btnDel.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDel.Location = New System.Drawing.Point(912, 133) + Me.btnDel.Name = "btnDel" + Me.btnDel.Size = New System.Drawing.Size(88, 32) + Me.btnDel.TabIndex = 22 + Me.btnDel.Text = "Del(&D)" + ' + 'btnCopy + ' + Me.btnCopy.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnCopy.Location = New System.Drawing.Point(912, 173) + Me.btnCopy.Name = "btnCopy" + Me.btnCopy.Size = New System.Drawing.Size(88, 32) + Me.btnCopy.TabIndex = 23 + Me.btnCopy.Text = "Copy(&C)" + ' + 'btnApprove + ' + Me.btnApprove.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnApprove.Location = New System.Drawing.Point(912, 213) + Me.btnApprove.Name = "btnApprove" + Me.btnApprove.Size = New System.Drawing.Size(88, 32) + Me.btnApprove.TabIndex = 24 + Me.btnApprove.Text = "Approve(&Y)" + ' + 'iugSubcontractor + ' + Me.iugSubcontractor.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.iugSubcontractor.EnterDirection = iMESUltraGrid.iMESUltraGridControl.EnterDirectionEnum.Down + Me.iugSubcontractor.GroupBoxPromptText = "Drag a column header here to group by that column." + Me.iugSubcontractor.GroupBoxTextForeColor = System.Drawing.Color.Red + Me.iugSubcontractor.Identity = "IMes" + Me.iugSubcontractor.IdentityForm = "" + Me.iugSubcontractor.LayOutFilePath = "" + Me.iugSubcontractor.Location = New System.Drawing.Point(12, 53) + Me.iugSubcontractor.Name = "iugSubcontractor" + Me.iugSubcontractor.PrintFitWidthToPages = 0 + Me.iugSubcontractor.PrintLandscape = True + Me.iugSubcontractor.PrintPageFooter = "" + Me.iugSubcontractor.PrintPageFooterHAlign = Infragistics.Win.HAlign.[Default] + Me.iugSubcontractor.PrintPageFooterHeight = 20 + Me.iugSubcontractor.PrintPageHeader = "" + Me.iugSubcontractor.PrintPageHeaderHAlign = Infragistics.Win.HAlign.[Default] + Me.iugSubcontractor.PrintPageHeaderHeight = 20 + Me.iugSubcontractor.PrintZoom = 1.0R + Me.iugSubcontractor.Size = New System.Drawing.Size(894, 192) + Me.iugSubcontractor.TabIndex = 25 + Me.iugSubcontractor.UserNo = "IMes" + ' + 'frmSubcontractor + ' + Me.ClientSize = New System.Drawing.Size(1008, 591) + Me.Controls.Add(Me.btnClose) + Me.Controls.Add(Me.btnApprove) + Me.Controls.Add(Me.btnEMail) + Me.Controls.Add(Me.btnDCopy) + Me.Controls.Add(Me.btnCopy) + Me.Controls.Add(Me.btnDDel) + Me.Controls.Add(Me.iugSubcontractor) + Me.Controls.Add(Me.btnDEdit) + Me.Controls.Add(Me.btnAdd) + Me.Controls.Add(Me.btnDAdd) + Me.Controls.Add(Me.btnDel) + Me.Controls.Add(Me.iugDetail) + Me.Controls.Add(Me.btnEdit) + Me.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Name = "frmSubcontractor" + Me.Text = "ENT Subcontractor & Contactor" + Me.WindowState = System.Windows.Forms.FormWindowState.Maximized + Me.Controls.SetChildIndex(Me.btnEdit, 0) + Me.Controls.SetChildIndex(Me.iugDetail, 0) + Me.Controls.SetChildIndex(Me.btnDel, 0) + Me.Controls.SetChildIndex(Me.btnDAdd, 0) + Me.Controls.SetChildIndex(Me.btnAdd, 0) + Me.Controls.SetChildIndex(Me.btnDEdit, 0) + Me.Controls.SetChildIndex(Me.iugSubcontractor, 0) + Me.Controls.SetChildIndex(Me.btnDDel, 0) + Me.Controls.SetChildIndex(Me.btnCopy, 0) + Me.Controls.SetChildIndex(Me.btnDCopy, 0) + Me.Controls.SetChildIndex(Me.btnEMail, 0) + Me.Controls.SetChildIndex(Me.btnApprove, 0) + Me.Controls.SetChildIndex(Me.btnClose, 0) + Me.ResumeLayout(False) + + End Sub + +#End Region + + Private Sub frmSubcontractor_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + + Cursor.Current = Cursors.WaitCursor + + ' 2016 YF, wsENT.Url = LocalizeWebService(wsENT.Url.ToString) + ' 2016 YF, wsENT.EnableDecompression = True + + Call funiMESUltraGridIni() 'Grid初始設定 + + '//取出資料 + Call funLoadSubcontractor() + + SetIssueState(Issue.Unfrozen) '預設在Unforzen上 + SetSearchFieldName(New String() {"SubcontractorNo", "SubcontractorNaME"}) '設置搜尋欄位 + + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + ExeGroupControlPriv(Me, PrivFunNo) + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub frmSubcontractor_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing + If Not dsENT Is Nothing Then dsENT.Dispose() + ' 2016 YF, If Not wsENT Is Nothing Then wsENT.Dispose() + End Sub + + Protected Overrides Sub rdoIssue_CheckedChanged(sender As Object, e As EventArgs) + If IsNothing(dsENT) Then Exit Sub + + Select Case GetIssueState() + Case Issue.Unfrozen + dsENT.Tables(tblENTSubcontractor).DefaultView.RowFilter = "IssueState=0" + Case Issue.Pending + dsENT.Tables(tblENTSubcontractor).DefaultView.RowFilter = "IssueState=1" + Case Issue.Active + dsENT.Tables(tblENTSubcontractor).DefaultView.RowFilter = "IssueState=2" + Case Issue.Unused + dsENT.Tables(tblENTSubcontractor).DefaultView.RowFilter = "IssueState=-1" + End Select + Me.iugSubcontractor.iMESUltraGrid.DataSource = dsENT.Tables(tblENTSubcontractor).DefaultView + Call funShowActiveDetail() + End Sub + + Protected Overrides Sub Finalize() + MyBase.Finalize() + End Sub + + Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click + + Dim fSubcontractorDef As New frmSubcontractorDef + + fSubcontractorDef.DefMode = 0 + fSubcontractorDef.ShowDialog(Me) + fSubcontractorDef.Dispose() + + If gReturnKeyValue = "" Then Exit Sub + + SubcontractorNo = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractor() + + If GetIssueState() = Issue.Unfrozen Then + ugrRow = FindRecordPosition(iugSubcontractor, "SubcontractorNo", SubcontractorNo) + If Not ugrRow Is Nothing Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow = ugrRow + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + End If + + End Sub + + Private Sub btnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEdit.Click + + + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + 'IsGroupByRow不做任何處理 + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then + Exit Sub + End If + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractor).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'") + + '核准狀態為"Unfrozen"者才可修改 + + If Rows(0).Item("IssueState") <> 0 Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-202202", "[%NOT ALLOWED TO EDIT%]"), MsgBoxStyle.Exclamation, Me.Text) + Exit Sub + End If + + Dim fSubcontractorDef As New frmSubcontractorDef + fSubcontractorDef.DefMode = 1 + fSubcontractorDef.EditDataRow = Rows(0) + fSubcontractorDef.ShowDialog(Me) + fSubcontractorDef.Dispose() + + If gReturnKeyValue = "" Then Exit Sub + + SubcontractorNo = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractor() + + If GetIssueState() = Issue.Unfrozen Then + ugrRow = FindRecordPosition(iugSubcontractor, "SubcontractorNo", SubcontractorNo) + If Not ugrRow Is Nothing Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow = ugrRow + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + End If + + End If + End Sub + + Private Sub btnDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDel.Click + + + + '1.先檢查是否為單筆,是:將其Selecte + If Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then Exit Sub + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Cursor.Current = Cursors.WaitCursor + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + + '2.Multi + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count > 0 Then + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Item(0).IsGroupByRow Then + Exit Sub 'Selected.Rows,不會包含GroupRow & 一般的Row在一起,故若是GroupRow不做任何處理 + End If + If iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-100001", "[%ARE YOU SURE TO DELETE ALL SELECTED RECORDS%]"), MsgBoxStyle.OkCancel + MsgBoxStyle.Question + MsgBoxStyle.DefaultButton2, Me.Text) = MsgBoxResult.Cancel Then + Exit Sub + End If + + '共用資料 + Dim XmlDoc As New XmlDocument + Dim blnReLoad As Boolean = False + Dim intIssueState As Integer + + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + For i = 0 To Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count - 1 + intIssueState = Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("IssueState").Value + If intIssueState = 0 Or intIssueState = -1 Or intIssueState = 2 Then '狀態為Unforzen或Unused時直接刪除 + + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", CInput(Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("SubcontractorNo").Value.ToString), "") + strParameter = strParameter & CombineXMLParameter("issuestate", "IssueState", "String", CInput(intIssueState), "") + strParameter = strParameter & CombineXMLParameter("datastamp", "DataStamp", "Integer", iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("DataStamp").Value, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + Try + ' 2016 YF, OutXml = wsENT.DelSubcontractor(InXml) + 'OutXml = InvokeSrv("wsENT.DelSubcontractor", InXml) + OutXml = InvokeSrv("SXS.wsENT.DelSubcontractor", InXml) + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + If Not blnReLoad Then blnReLoad = True + Else + '找出Exception訊並顯示出來 + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit For + End If + Catch ex As Exception + 'MsgBox("Unexpected Error. Delete failed," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + Exit For + End Try + Else + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200021", "[%NOT ALLOWED TO delete%]"), MsgBoxStyle.Exclamation, Me.Text) + End If + Next + + XmlDoc = Nothing + + If blnReLoad Then + + Call funLoadSubcontractor() + + Call funShowActiveDetail() + + End If + + End If + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub btnCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCopy.Click + + + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + 'IsGroupByRow不做任何處理 + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then + Exit Sub + End If + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractor).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'") + + Dim fSubcontractorDef As New frmSubcontractorDef + fSubcontractorDef.DefMode = 2 + fSubcontractorDef.EditDataRow = Rows(0) + fSubcontractorDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + SubcontractorNo = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractor() + + If GetIssueState() = Issue.Unfrozen Then + ugrRow = FindRecordPosition(iugSubcontractor, "SubcontractorNo", SubcontractorNo) + If Not ugrRow Is Nothing Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow = ugrRow + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + End If + + End If + End Sub + + Private Sub btnApprove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnApprove.Click + + + + '1.先檢查是否為單筆,是:將其Selecte + If Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then Exit Sub + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Cursor.Current = Cursors.WaitCursor + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + + '2.Multi + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count > 0 Then + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Item(0).IsGroupByRow Then + Exit Sub 'Selected.Rows,不會包含GroupRow & 一般的Row在一起,故若是GroupRow不做任何處理 + End If + If iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-100002", "[%ARE YOU SURE TO APPROVE ALL SELECTED RECORDS%]"), MsgBoxStyle.OkCancel + MsgBoxStyle.Question + MsgBoxStyle.DefaultButton2, Me.Text) = MsgBoxResult.Cancel Then + Exit Sub + End If + + '共用資料 + Dim XmlDoc As New XmlDocument + Dim blnReLoad As Boolean = False + Dim intIssueState As Integer + + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + For i = 0 To Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count - 1 + intIssueState = Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("IssueState").Value + If intIssueState = 0 Then + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", CInput(Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("SubcontractorNo").Value.ToString), "") + strParameter += CombineXMLParameter("issuestate", "IssueState", "String", intIssueState, "") + strParameter += CombineXMLParameter("creator", "Creator", "String", gUserNo, "") + strParameter = strParameter & CombineXMLParameter("datastamp", "DataStamp", "Integer", iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("DataStamp").Value, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + Try + ' 2016 YF, OutXml = wsENT.ApproveSubcontractor(InXml) + 'OutXml = InvokeSrv("wsENT.ApproveSubcontractor", InXml) + OutXml = InvokeSrv("SXS.wsENT.ApproveSubcontractor", InXml) + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + If Not blnReLoad Then blnReLoad = True + Else + '找出Exception訊並顯示出來 + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit For + End If + Catch ex As Exception + 'MsgBox("Unexpected Error. Approve failed," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + Exit For + End Try + Else + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200021", "[%NOT ALLOW TO APPROVE%]"), MsgBoxStyle.Exclamation, Me.Text) + End If + Next + + XmlDoc = Nothing + + If blnReLoad Then + + Call funLoadSubcontractor() + + Call funShowActiveDetail() + + End If + + End If + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub btnDAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDAdd.Click + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + + 'Dim Rows As DataRow() + Dim fSubcontractorContDef As New frmSubcontractorContDef + + fSubcontractorContDef.DefMode = 0 + fSubcontractorContDef.SubcontractorNo = Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString + fSubcontractorContDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + ContactorName = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + ugrRow = FindRecordPosition(iugDetail, "ContactorName", ContactorName) + If Not ugrRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.ActiveRow = ugrRow + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + + End If + End Sub + + Private Sub btnDEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDEdit.Click + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing And Not Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow OrElse iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractorCont).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'" _ + & " And ContactorName = '" & Replace(Me.iugDetail.iMESUltraGrid.ActiveRow.Cells("ContactorName").Value.ToString, "'", "''") & "'") + + Dim fSubcontractorContDef As New frmSubcontractorContDef + fSubcontractorContDef.DefMode = 1 + fSubcontractorContDef.EditDataRow = Rows(0) + fSubcontractorContDef.SubcontractorNo = Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString + fSubcontractorContDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + ContactorName = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + ugrRow = FindRecordPosition(iugDetail, "ContactorName", ContactorName) + If Not ugrRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.ActiveRow = ugrRow + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + Else + + Exit Sub + End If + + End Sub + + Private Sub btnDDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDDel.Click + + + '1.先檢查是否為單筆,是:將其Selecte + If Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then Exit Sub + If iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + + Cursor.Current = Cursors.WaitCursor + + If Not Me.iugDetail.iMESUltraGrid.ActiveRow.Selected Then + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + + '2.Multi + If Me.iugDetail.iMESUltraGrid.Selected.Rows.Count > 0 Then + If Me.iugDetail.iMESUltraGrid.Selected.Rows.Item(0).IsGroupByRow Then + Exit Sub 'Selected.Rows,不會包含GroupRow & 一般的Row在一起,故若是GroupRow不做任何處理 + End If + If iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-100001", "[%ARE YOU SURE TO DELETE ALL SELECTED RECORDS%]"), MsgBoxStyle.OkCancel + MsgBoxStyle.Question + MsgBoxStyle.DefaultButton2, Me.Text) = MsgBoxResult.Cancel Then + Exit Sub + End If + + '共用資料 + Dim XmlDoc As New XmlDocument + Dim blnReLoad As Boolean = False + Dim intIssueState As Integer + + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + For i = 0 To Me.iugDetail.iMESUltraGrid.Selected.Rows.Count - 1 + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", CInput(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString), "") + strParameter = strParameter & CombineXMLParameter("ContactorName", "ContactorName", "String", CInput(Me.iugDetail.iMESUltraGrid.Selected.Rows(i).Cells("ContactorName").Value.ToString), "") + InXml = CombineXMLRequest(strIdentity, strParameter) + Try + ' 2016 YF, OutXml = wsENT.DelSubcontractorCont(InXml) + 'OutXml = InvokeSrv("wsENT.DelSubcontractorCont", InXml) + OutXml = InvokeSrv("SXS.wsENT.DelSubcontractorCont", InXml) + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + If Not blnReLoad Then blnReLoad = True + Else + '找出Exception訊並顯示出來 + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit For + End If + Catch ex As Exception + 'MsgBox("Unexpected Error. Delete failed," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + Exit For + End Try + + Next + + XmlDoc = Nothing + + If blnReLoad Then Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + End If + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub btnDCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDCopy.Click + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing And Not Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow OrElse iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractorCont).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'" _ + & " And ContactorName = '" & Replace(Me.iugDetail.iMESUltraGrid.ActiveRow.Cells("ContactorName").Value.ToString, "'", "''") & "'") + + Dim fSubcontractorContDef As New frmSubcontractorContDef + fSubcontractorContDef.DefMode = 2 + fSubcontractorContDef.EditDataRow = Rows(0) + fSubcontractorContDef.SubcontractorNo = Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString + fSubcontractorContDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + ContactorName = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + ugrRow = FindRecordPosition(iugDetail, "ContactorName", ContactorName) + If Not ugrRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.ActiveRow = ugrRow + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + Else + + Exit Sub + End If + + End Sub + + Private Sub btnEMail_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEMail.Click + + If Not Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then + If iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Dim Rows As DataRow() + Dim proMail As New System.Diagnostics.Process + Dim strAccount As String + + Rows = dsENT.Tables(tblENTSubcontractorCont).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'" _ + & " And ContactorName = '" & Replace(Me.iugDetail.iMESUltraGrid.ActiveRow.Cells("ContactorName").Value.ToString, "'", "''") & "'") + + strAccount = "mailto:" & Rows(0).Item("EMail").ToString + proMail.Start(strAccount) + + End If + + End Sub + + Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click + Me.Close() + End Sub + + Protected Overrides Sub btnQuery_Click(sender As Object, e As EventArgs) + Cursor.Current = Cursors.WaitCursor + + funLoadSubcontractor() + + Cursor.Current = Cursors.Default + End Sub + +#Region "Ultra Grid" + + Private Sub iugSubcontractor_iMESUltraGrid_InitializeLayOut(ByVal sender As System.Object, ByVal e As Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs) Handles iugSubcontractor.iMESUltraGrid_InitializeLayOut + + With e.Layout + With .Bands(0).Columns("SubcontractorNo") + .Header.Caption = "SubcontractorNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 0 + End With + With .Bands(0).Columns("SubcontractorName") + .Header.Caption = "SubcontractorName" + .Width = 110 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 1 + End With + With .Bands(0).Columns("Description") + .Header.Caption = "Description" + .Width = 110 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 2 + End With + With .Bands(0).Columns("Creator") + .Header.Caption = "Creator" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 3 + End With + With .Bands(0).Columns("CreateDate") + .Header.Caption = "CreateDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 4 + End With + With .Bands(0).Columns("IssueState") + .Header.Caption = "IssueState" + .Width = 114 + .Hidden = True + .Header.VisiblePosition = 5 + End With + With .Bands(0).Columns("Reviser") + .Header.Caption = "Reviser" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 6 + End With + With .Bands(0).Columns("ReviseDate") + .Header.Caption = "ReviseDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 7 + End With + With e.Layout.Bands(0).Columns("DataStamp") + .Hidden = True + End With + End With + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + End Sub + + Private Sub iugSubcontractor_iMESUltraGrid_AfterRowActivate(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles iugSubcontractor.iMESUltraGrid_AfterRowActivate + + 'IsGroupByRow不做任何處理 + If Not iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + Else + Exit Sub + End If + + End Sub + + Private Sub iugDetail_iMESUltraGrid_InitializeLayOut(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs) Handles iugDetail.iMESUltraGrid_InitializeLayOut + + With e.Layout + With .Bands(0).Columns("SubcontractorNo") + .Header.Caption = "SubcontractorNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 0 + End With + With .Bands(0).Columns("ContactorName") + .Header.Caption = "ContactorName" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 1 + End With + With .Bands(0).Columns("TelNo") + .Header.Caption = "TelNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 2 + End With + With .Bands(0).Columns("FaxNo") + .Header.Caption = "FaxNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 3 + End With + With .Bands(0).Columns("Title") + .Header.Caption = "Title" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 4 + End With + With .Bands(0).Columns("Address") + .Header.Caption = "Address" + .Width = 110 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 5 + End With + With .Bands(0).Columns("EMail") + .Header.Caption = "EMail" + .Width = 150 + .Hidden = False + .CellAppearance.ForeColor = System.Drawing.Color.Blue + .CellAppearance.FontData.Underline = DefaultableBoolean.True + .Header.VisiblePosition = 6 + End With + With .Bands(0).Columns("Description") + .Header.Caption = "Description" + .Width = 200 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 7 + End With + With .Bands(0).Columns("Creator") + .Header.Caption = "Creator" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 8 + End With + With .Bands(0).Columns("CreateDate") + .Header.Caption = "CreateDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 9 + End With + With .Bands(0).Columns("Reviser") + .Header.Caption = "Reviser" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 10 + End With + With .Bands(0).Columns("ReviseDate") + .Header.Caption = "ReviseDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 11 + End With + With e.Layout.Bands(0).Columns("DataStamp") + .Hidden = True + End With + End With + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + End Sub + +#End Region + +#Region "Load Function" + + '//取出tblENTSubcontractor 外包商資料 + + Private Sub funLoadSubcontractor() + + '先判斷是否dataset中已有ENTSubcontractor之datatable,若有,需先remove否則會有錯誤 + If Not IsNothing(dsENT.Tables(tblENTSubcontractor)) Then + dsENT.Tables.Remove(tblENTSubcontractor) + End If + + '組InXml的字串 + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + '加上IssueState要求取出所有資料 + strParameter = CombineXMLParameter("issuestate", "IssueState", "Integer", defInteger, "") + '加上查詢條件 cboSearchFieldName,txtSearchFieldValue + strParameter += CombineXMLQueryCondition() + InXml = CombineXMLRequest(strIdentity, strParameter) + + Try + ' 2016 YF, OutXml = wsENT.LoadSubcontractor(InXml) + 'OutXml = InvokeSrv("wsENT.LoadSubcontractor", InXml) + OutXml = InvokeSrv("SXS.wsENT.LoadSubcontractor", InXml) + + Dim XmlDoc As New XmlDocument '處理Xml字串之物件? + + '利用XmlDoc物件處理ReturnValue + XmlDoc.LoadXml(OutXml) + + If ChkExecutionSuccess(XmlDoc) Then + '讀取取出資料表之名稱 + + tblENTSubcontractor = XmlDoc.GetElementsByTagName("returnvalue").Item(0).SelectNodes("loadSubcontractor").Item(0).SelectNodes("name").Item(0).InnerXml + '取出Schema,dataset讀取Schema可防止Null Field及DateTime的問題 + + XmlSchema = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractor").Item(0).SelectNodes("schema").Item(0).InnerXml + If XmlSchema <> "" Then + '將XML讀入String Reader object中,因為Dataset讀入XML時必須透過String Reader物件 + tmpStringReader = New System.IO.StringReader(XmlSchema) + dsENT.ReadXmlSchema(tmpStringReader) + tmpStringReader.Close() + End If + + '取出Data + XmlData = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractor").Item(0).SelectNodes("value").Item(0).InnerXml + If XmlData <> "" Then + tmpStringReader = New System.IO.StringReader(XmlData) + dsENT.ReadXml(tmpStringReader, XmlReadMode.InferSchema) + tmpStringReader.Close() + End If + + strFilter = "" + Select Case GetIssueState() + Case Issue.Unfrozen + strFilter = FilterByInteger(strFilter, "IssueState", 0) + Case Issue.Pending + strFilter = FilterByInteger(strFilter, "IssueState", 1) + Case Issue.Active + strFilter = FilterByInteger(strFilter, "IssueState", 2) + Case Issue.Unused + strFilter = FilterByInteger(strFilter, "IssueState", -1) + End Select + + dsENT.Tables(tblENTSubcontractor).DefaultView.RowFilter = strFilter + dsENT.Tables(tblENTSubcontractor).DefaultView.Sort = "SubcontractorNo" + + Me.iugSubcontractor.iMESUltraGrid.DataSource = dsENT.Tables(tblENTSubcontractor).DefaultView + + Else + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit Sub + End If + + XmlDoc = Nothing + + Catch ex As Exception + 'MsgBox("Unexpected Error. Load ENT Subcontractor Failed!!," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + End Try + + End Sub + + '//取出tblENTSubcontractorCont聯絡人資料 + + Private Sub funLoadSubcontractorCont(ByRef SubcontractorNo As String) + + If Not IsNothing(dsENT.Tables(tblENTSubcontractorCont)) Then + dsENT.Tables.Remove(tblENTSubcontractorCont) + End If + + '組InXml的字串 + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", SubcontractorNo, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + + Try + ' 2016 YF, OutXml = wsENT.LoadSubcontractorCont(InXml) + 'OutXml = InvokeSrv("wsENT.LoadSubcontractorCont", InXml) + OutXml = InvokeSrv("SXS.wsENT.LoadSubcontractorCont", InXml) + + Dim XmlDoc As New XmlDocument '處理Xml字串之物件? + + '利用XmlDoc物件處理ReturnValue + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + '讀取取出資料表之名稱 + + tblENTSubcontractorCont = XmlDoc.GetElementsByTagName("returnvalue").Item(0).SelectNodes("loadSubcontractorcont").Item(0).SelectNodes("name").Item(0).InnerXml + '取出Schema,dataset讀取Schema可防止Null Field及DateTime的問題 + XmlSchema = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractorcont").Item(0).SelectNodes("schema").Item(0).InnerXml + If XmlSchema <> "" Then + '將XML讀入String Reader object中,因為Dataset讀入XML時必須透過String Reader物件 + tmpStringReader = New System.IO.StringReader(XmlSchema) + dsENT.ReadXmlSchema(tmpStringReader) + tmpStringReader.Close() + End If + + '取出Data + XmlData = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractorcont").Item(0).SelectNodes("value").Item(0).InnerXml + If XmlData <> "" Then + tmpStringReader = New System.IO.StringReader(XmlData) + dsENT.ReadXml(tmpStringReader, XmlReadMode.InferSchema) + tmpStringReader.Close() + End If + + Me.iugDetail.iMESUltraGrid.DataSource = dsENT.Tables(tblENTSubcontractorCont).DefaultView + + Else + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + End If + + XmlDoc = Nothing + + Catch ex As Exception + 'MsgBox("Unexpected Error. Load ENT Subcontractor Cont Failed!!," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + End Try + + End Sub + + Private Sub funShowActiveDetail() + + If Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.DataSource = Nothing + Else + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + End If + + End Sub + + Private Sub funiMESUltraGridIni() + + 'iugSubcontractor 初始設定 + With Me.iugSubcontractor.iMESUltraGrid + .Text = "" + .DisplayLayout.GroupByBox.Hidden = True + .DisplayLayout.UseFixedHeaders = False + End With + + '系統會以UserNo做為Layout的檔名 + + iugSubcontractor.UserNo = gUserNo + + 'iugDetail 初始設定 + With Me.iugDetail.iMESUltraGrid.DisplayLayout + .GroupByBox.Hidden = True + .Override.ExpansionIndicator = ShowExpansionIndicator.Default + .ViewStyle = ViewStyle.SingleBand + .RowConnectorStyle = RowConnectorStyle.Default + + End With + + '系統會以UserNo做為Layout的檔名 + + iugDetail.UserNo = gUserNo + + End Sub + + +#End Region + +End Class + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmSubcontractor.resx b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmSubcontractor.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmSubcontractor.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmSubcontractor.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmSubcontractor.vb new file mode 100644 index 0000000..64a05ce --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmSubcontractor.vb @@ -0,0 +1,1129 @@ +Imports iMESExceptionManager + +Imports Infragistics.Win +Imports Infragistics.Win.UltraWinGrid +Public Class frmSubcontractor + + Inherits COM_Kit.frmBasisTemplat + + Public PrivFunNo As String = defString + + '//WS相關變數 + ' 2016 YF, Dim wsENT As New wsENT.wsENT '宣告Web Service物件? + Dim tmpStringReader As System.IO.StringReader '將字串轉換成可讀入DataSet的物件 + Dim XmlData As String '儲存取回之資料 + Dim XmlSchema As String '儲存取回之資料結構 + Dim InXml As String '儲存呼叫Web Service的傳入參數(Request字串) + Dim OutXml As String '儲存Web Service的傳回值(Response字串) + Dim strIdentity As String '儲存Identity XML字串? + Dim strParameter As String '儲存Parameter XML字串 + + '//資料表相關變數 + + Dim dsENT As New DataSet '資料集:儲存取回之資料? + + Dim tblENTSubcontractor As String '儲存取回資料表的名稱(master)? + Dim tblENTSubcontractorCont As String '明細資料表名稱(detail) + Dim strFilter As String 'Filter string及列印的過濾條件 + + '//其他共用變數 + Dim SubcontractorNo As String 'for Gird to Focus + Dim ContactorName As String 'for DetailGrid to Focus + Dim ugrRow As Infragistics.Win.UltraWinGrid.UltraGridRow + Friend WithEvents btnAdd As Misc.UltraButton + Friend WithEvents btnEdit As Misc.UltraButton + Friend WithEvents btnDel As Misc.UltraButton + Friend WithEvents btnCopy As Misc.UltraButton + Friend WithEvents btnApprove As Misc.UltraButton + Friend WithEvents iugSubcontractor As iMESUltraGrid.iMESUltraGridControl + Dim i As Integer + +#Region " Windows Form Designer generated code " + + Public Sub New() + MyBase.New() + + 'This call is required by the Windows Form Designer. + InitializeComponent() + + 'Add any initialization after the InitializeComponent() call + + End Sub + + 'Form overrides dispose to clean up the component list. + Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing Then + If Not (components Is Nothing) Then + components.Dispose() + End If + End If + MyBase.Dispose(disposing) + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.Container + Friend WithEvents iugDetail As iMESUltraGrid.iMESUltraGridControl + Friend WithEvents btnClose As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnEMail As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDCopy As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDDel As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDEdit As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDAdd As Infragistics.Win.Misc.UltraButton + Private Sub InitializeComponent() + Me.btnClose = New Infragistics.Win.Misc.UltraButton() + Me.btnEMail = New Infragistics.Win.Misc.UltraButton() + Me.btnDCopy = New Infragistics.Win.Misc.UltraButton() + Me.btnDDel = New Infragistics.Win.Misc.UltraButton() + Me.btnDEdit = New Infragistics.Win.Misc.UltraButton() + Me.btnDAdd = New Infragistics.Win.Misc.UltraButton() + Me.iugDetail = New iMESUltraGrid.iMESUltraGridControl() + Me.btnAdd = New Infragistics.Win.Misc.UltraButton() + Me.btnEdit = New Infragistics.Win.Misc.UltraButton() + Me.btnDel = New Infragistics.Win.Misc.UltraButton() + Me.btnCopy = New Infragistics.Win.Misc.UltraButton() + Me.btnApprove = New Infragistics.Win.Misc.UltraButton() + Me.iugSubcontractor = New iMESUltraGrid.iMESUltraGridControl() + Me.SuspendLayout() + ' + 'btnClose + ' + Me.btnClose.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnClose.Location = New System.Drawing.Point(912, 552) + Me.btnClose.Name = "btnClose" + Me.btnClose.Size = New System.Drawing.Size(88, 32) + Me.btnClose.TabIndex = 18 + Me.btnClose.Text = "Close (&X)" + ' + 'btnEMail + ' + Me.btnEMail.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnEMail.Location = New System.Drawing.Point(912, 429) + Me.btnEMail.Name = "btnEMail" + Me.btnEMail.Size = New System.Drawing.Size(88, 32) + Me.btnEMail.TabIndex = 17 + Me.btnEMail.Text = "Mail" + ' + 'btnDCopy + ' + Me.btnDCopy.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDCopy.Location = New System.Drawing.Point(912, 389) + Me.btnDCopy.Name = "btnDCopy" + Me.btnDCopy.Size = New System.Drawing.Size(88, 32) + Me.btnDCopy.TabIndex = 16 + Me.btnDCopy.Text = "Copy" + ' + 'btnDDel + ' + Me.btnDDel.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDDel.Location = New System.Drawing.Point(912, 349) + Me.btnDDel.Name = "btnDDel" + Me.btnDDel.Size = New System.Drawing.Size(88, 32) + Me.btnDDel.TabIndex = 15 + Me.btnDDel.Text = "DEL" + ' + 'btnDEdit + ' + Me.btnDEdit.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDEdit.Location = New System.Drawing.Point(912, 309) + Me.btnDEdit.Name = "btnDEdit" + Me.btnDEdit.Size = New System.Drawing.Size(88, 32) + Me.btnDEdit.TabIndex = 14 + Me.btnDEdit.Text = "EDIT" + ' + 'btnDAdd + ' + Me.btnDAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDAdd.Location = New System.Drawing.Point(912, 269) + Me.btnDAdd.Name = "btnDAdd" + Me.btnDAdd.Size = New System.Drawing.Size(88, 32) + Me.btnDAdd.TabIndex = 13 + Me.btnDAdd.Text = "ADD" + ' + 'iugDetail + ' + Me.iugDetail.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.iugDetail.EnterDirection = iMESUltraGrid.iMESUltraGridControl.EnterDirectionEnum.Down + Me.iugDetail.GroupBoxPromptText = "Drag a column header here to group by that column." + Me.iugDetail.GroupBoxTextForeColor = System.Drawing.Color.Red + Me.iugDetail.Identity = "IMes" + Me.iugDetail.IdentityForm = "" + Me.iugDetail.LayOutFilePath = "" + Me.iugDetail.Location = New System.Drawing.Point(12, 269) + Me.iugDetail.Name = "iugDetail" + Me.iugDetail.PrintFitWidthToPages = 0 + Me.iugDetail.PrintLandscape = True + Me.iugDetail.PrintPageFooter = "" + Me.iugDetail.PrintPageFooterHAlign = Infragistics.Win.HAlign.[Default] + Me.iugDetail.PrintPageFooterHeight = 20 + Me.iugDetail.PrintPageHeader = "" + Me.iugDetail.PrintPageHeaderHAlign = Infragistics.Win.HAlign.[Default] + Me.iugDetail.PrintPageHeaderHeight = 20 + Me.iugDetail.PrintZoom = 1.0R + Me.iugDetail.Size = New System.Drawing.Size(894, 314) + Me.iugDetail.TabIndex = 12 + Me.iugDetail.UserNo = "IMes" + ' + 'btnAdd + ' + Me.btnAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnAdd.Location = New System.Drawing.Point(912, 53) + Me.btnAdd.Name = "btnAdd" + Me.btnAdd.Size = New System.Drawing.Size(88, 32) + Me.btnAdd.TabIndex = 20 + Me.btnAdd.Text = "Add(&A)" + ' + 'btnEdit + ' + Me.btnEdit.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnEdit.Location = New System.Drawing.Point(912, 93) + Me.btnEdit.Name = "btnEdit" + Me.btnEdit.Size = New System.Drawing.Size(88, 32) + Me.btnEdit.TabIndex = 21 + Me.btnEdit.Text = "Edit(&E)" + ' + 'btnDel + ' + Me.btnDel.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDel.Location = New System.Drawing.Point(912, 133) + Me.btnDel.Name = "btnDel" + Me.btnDel.Size = New System.Drawing.Size(88, 32) + Me.btnDel.TabIndex = 22 + Me.btnDel.Text = "Del(&D)" + ' + 'btnCopy + ' + Me.btnCopy.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnCopy.Location = New System.Drawing.Point(912, 173) + Me.btnCopy.Name = "btnCopy" + Me.btnCopy.Size = New System.Drawing.Size(88, 32) + Me.btnCopy.TabIndex = 23 + Me.btnCopy.Text = "Copy(&C)" + ' + 'btnApprove + ' + Me.btnApprove.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnApprove.Location = New System.Drawing.Point(912, 213) + Me.btnApprove.Name = "btnApprove" + Me.btnApprove.Size = New System.Drawing.Size(88, 32) + Me.btnApprove.TabIndex = 24 + Me.btnApprove.Text = "Approve(&Y)" + ' + 'iugSubcontractor + ' + Me.iugSubcontractor.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.iugSubcontractor.EnterDirection = iMESUltraGrid.iMESUltraGridControl.EnterDirectionEnum.Down + Me.iugSubcontractor.GroupBoxPromptText = "Drag a column header here to group by that column." + Me.iugSubcontractor.GroupBoxTextForeColor = System.Drawing.Color.Red + Me.iugSubcontractor.Identity = "IMes" + Me.iugSubcontractor.IdentityForm = "" + Me.iugSubcontractor.LayOutFilePath = "" + Me.iugSubcontractor.Location = New System.Drawing.Point(12, 53) + Me.iugSubcontractor.Name = "iugSubcontractor" + Me.iugSubcontractor.PrintFitWidthToPages = 0 + Me.iugSubcontractor.PrintLandscape = True + Me.iugSubcontractor.PrintPageFooter = "" + Me.iugSubcontractor.PrintPageFooterHAlign = Infragistics.Win.HAlign.[Default] + Me.iugSubcontractor.PrintPageFooterHeight = 20 + Me.iugSubcontractor.PrintPageHeader = "" + Me.iugSubcontractor.PrintPageHeaderHAlign = Infragistics.Win.HAlign.[Default] + Me.iugSubcontractor.PrintPageHeaderHeight = 20 + Me.iugSubcontractor.PrintZoom = 1.0R + Me.iugSubcontractor.Size = New System.Drawing.Size(894, 192) + Me.iugSubcontractor.TabIndex = 25 + Me.iugSubcontractor.UserNo = "IMes" + ' + 'frmSubcontractor + ' + Me.ClientSize = New System.Drawing.Size(1008, 591) + Me.Controls.Add(Me.btnClose) + Me.Controls.Add(Me.btnApprove) + Me.Controls.Add(Me.btnEMail) + Me.Controls.Add(Me.btnDCopy) + Me.Controls.Add(Me.btnCopy) + Me.Controls.Add(Me.btnDDel) + Me.Controls.Add(Me.iugSubcontractor) + Me.Controls.Add(Me.btnDEdit) + Me.Controls.Add(Me.btnAdd) + Me.Controls.Add(Me.btnDAdd) + Me.Controls.Add(Me.btnDel) + Me.Controls.Add(Me.iugDetail) + Me.Controls.Add(Me.btnEdit) + Me.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Name = "frmSubcontractor" + Me.Text = "ENT Subcontractor & Contactor" + Me.WindowState = System.Windows.Forms.FormWindowState.Maximized + Me.Controls.SetChildIndex(Me.btnEdit, 0) + Me.Controls.SetChildIndex(Me.iugDetail, 0) + Me.Controls.SetChildIndex(Me.btnDel, 0) + Me.Controls.SetChildIndex(Me.btnDAdd, 0) + Me.Controls.SetChildIndex(Me.btnAdd, 0) + Me.Controls.SetChildIndex(Me.btnDEdit, 0) + Me.Controls.SetChildIndex(Me.iugSubcontractor, 0) + Me.Controls.SetChildIndex(Me.btnDDel, 0) + Me.Controls.SetChildIndex(Me.btnCopy, 0) + Me.Controls.SetChildIndex(Me.btnDCopy, 0) + Me.Controls.SetChildIndex(Me.btnEMail, 0) + Me.Controls.SetChildIndex(Me.btnApprove, 0) + Me.Controls.SetChildIndex(Me.btnClose, 0) + Me.ResumeLayout(False) + + End Sub + +#End Region + + Private Sub frmSubcontractor_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + + Cursor.Current = Cursors.WaitCursor + + ' 2016 YF, wsENT.Url = LocalizeWebService(wsENT.Url.ToString) + ' 2016 YF, wsENT.EnableDecompression = True + + Call funiMESUltraGridIni() 'Grid初始設定 + + '//取出資料 + Call funLoadSubcontractor() + + SetIssueState(Issue.Unfrozen) '預設在Unforzen上 + SetSearchFieldName(New String() {"SubcontractorNo", "SubcontractorNaME"}) '設置搜尋欄位 + + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + ExeGroupControlPriv(Me, PrivFunNo) + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub frmSubcontractor_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing + If Not dsENT Is Nothing Then dsENT.Dispose() + ' 2016 YF, If Not wsENT Is Nothing Then wsENT.Dispose() + End Sub + + Protected Overrides Sub rdoIssue_CheckedChanged(sender As Object, e As EventArgs) + If IsNothing(dsENT) Then Exit Sub + + Select Case GetIssueState() + Case Issue.Unfrozen + dsENT.Tables(tblENTSubcontractor).DefaultView.RowFilter = "IssueState=0" + Case Issue.Pending + dsENT.Tables(tblENTSubcontractor).DefaultView.RowFilter = "IssueState=1" + Case Issue.Active + dsENT.Tables(tblENTSubcontractor).DefaultView.RowFilter = "IssueState=2" + Case Issue.Unused + dsENT.Tables(tblENTSubcontractor).DefaultView.RowFilter = "IssueState=-1" + End Select + Me.iugSubcontractor.iMESUltraGrid.DataSource = dsENT.Tables(tblENTSubcontractor).DefaultView + Call funShowActiveDetail() + End Sub + + Protected Overrides Sub Finalize() + MyBase.Finalize() + End Sub + + Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click + + Dim fSubcontractorDef As New frmSubcontractorDef + + fSubcontractorDef.DefMode = 0 + fSubcontractorDef.ShowDialog(Me) + fSubcontractorDef.Dispose() + + If gReturnKeyValue = "" Then Exit Sub + + SubcontractorNo = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractor() + + If GetIssueState() = Issue.Unfrozen Then + ugrRow = FindRecordPosition(iugSubcontractor, "SubcontractorNo", SubcontractorNo) + If Not ugrRow Is Nothing Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow = ugrRow + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + End If + + End Sub + + Private Sub btnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEdit.Click + + + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + 'IsGroupByRow不做任何處理 + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then + Exit Sub + End If + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractor).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'") + + '核准狀態為"Unfrozen"者才可修改 + + If Rows(0).Item("IssueState") <> 0 Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-202202", "[%NOT ALLOWED TO EDIT%]"), MsgBoxStyle.Exclamation, Me.Text) + Exit Sub + End If + + Dim fSubcontractorDef As New frmSubcontractorDef + fSubcontractorDef.DefMode = 1 + fSubcontractorDef.EditDataRow = Rows(0) + fSubcontractorDef.ShowDialog(Me) + fSubcontractorDef.Dispose() + + If gReturnKeyValue = "" Then Exit Sub + + SubcontractorNo = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractor() + + If GetIssueState() = Issue.Unfrozen Then + ugrRow = FindRecordPosition(iugSubcontractor, "SubcontractorNo", SubcontractorNo) + If Not ugrRow Is Nothing Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow = ugrRow + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + End If + + End If + End Sub + + Private Sub btnDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDel.Click + + + + '1.先檢查是否為單筆,是:將其Selecte + If Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then Exit Sub + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Cursor.Current = Cursors.WaitCursor + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + + '2.Multi + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count > 0 Then + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Item(0).IsGroupByRow Then + Exit Sub 'Selected.Rows,不會包含GroupRow & 一般的Row在一起,故若是GroupRow不做任何處理 + End If + If iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-100001", "[%ARE YOU SURE TO DELETE ALL SELECTED RECORDS%]"), MsgBoxStyle.OkCancel + MsgBoxStyle.Question + MsgBoxStyle.DefaultButton2, Me.Text) = MsgBoxResult.Cancel Then + Exit Sub + End If + + '共用資料 + Dim XmlDoc As New XmlDocument + Dim blnReLoad As Boolean = False + Dim intIssueState As Integer + + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + For i = 0 To Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count - 1 + intIssueState = Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("IssueState").Value + If intIssueState = 0 Or intIssueState = -1 Or intIssueState = 2 Then '狀態為Unforzen或Unused時直接刪除 + + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", CInput(Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("SubcontractorNo").Value.ToString), "") + strParameter = strParameter & CombineXMLParameter("issuestate", "IssueState", "String", CInput(intIssueState), "") + strParameter = strParameter & CombineXMLParameter("datastamp", "DataStamp", "Integer", iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("DataStamp").Value, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + Try + ' 2016 YF, OutXml = wsENT.DelSubcontractor(InXml) + 'OutXml = InvokeSrv("wsENT.DelSubcontractor", InXml) + OutXml = InvokeSrv("SXS.wsENT.DelSubcontractor", InXml) + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + If Not blnReLoad Then blnReLoad = True + Else + '找出Exception訊並顯示出來 + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit For + End If + Catch ex As Exception + 'MsgBox("Unexpected Error. Delete failed," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + Exit For + End Try + Else + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200021", "[%NOT ALLOWED TO delete%]"), MsgBoxStyle.Exclamation, Me.Text) + End If + Next + + XmlDoc = Nothing + + If blnReLoad Then + + Call funLoadSubcontractor() + + Call funShowActiveDetail() + + End If + + End If + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub btnCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCopy.Click + + + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + 'IsGroupByRow不做任何處理 + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then + Exit Sub + End If + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractor).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'") + + Dim fSubcontractorDef As New frmSubcontractorDef + fSubcontractorDef.DefMode = 2 + fSubcontractorDef.EditDataRow = Rows(0) + fSubcontractorDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + SubcontractorNo = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractor() + + If GetIssueState() = Issue.Unfrozen Then + ugrRow = FindRecordPosition(iugSubcontractor, "SubcontractorNo", SubcontractorNo) + If Not ugrRow Is Nothing Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow = ugrRow + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + End If + + End If + End Sub + + Private Sub btnApprove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnApprove.Click + + + + '1.先檢查是否為單筆,是:將其Selecte + If Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then Exit Sub + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Cursor.Current = Cursors.WaitCursor + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + + '2.Multi + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count > 0 Then + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Item(0).IsGroupByRow Then + Exit Sub 'Selected.Rows,不會包含GroupRow & 一般的Row在一起,故若是GroupRow不做任何處理 + End If + If iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-100002", "[%ARE YOU SURE TO APPROVE ALL SELECTED RECORDS%]"), MsgBoxStyle.OkCancel + MsgBoxStyle.Question + MsgBoxStyle.DefaultButton2, Me.Text) = MsgBoxResult.Cancel Then + Exit Sub + End If + + '共用資料 + Dim XmlDoc As New XmlDocument + Dim blnReLoad As Boolean = False + Dim intIssueState As Integer + + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + For i = 0 To Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count - 1 + intIssueState = Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("IssueState").Value + If intIssueState = 0 Then + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", CInput(Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("SubcontractorNo").Value.ToString), "") + strParameter += CombineXMLParameter("issuestate", "IssueState", "String", intIssueState, "") + strParameter += CombineXMLParameter("creator", "Creator", "String", gUserNo, "") + strParameter = strParameter & CombineXMLParameter("datastamp", "DataStamp", "Integer", iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("DataStamp").Value, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + Try + ' 2016 YF, OutXml = wsENT.ApproveSubcontractor(InXml) + 'OutXml = InvokeSrv("wsENT.ApproveSubcontractor", InXml) + OutXml = InvokeSrv("SXS.wsENT.ApproveSubcontractor", InXml) + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + If Not blnReLoad Then blnReLoad = True + Else + '找出Exception訊並顯示出來 + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit For + End If + Catch ex As Exception + 'MsgBox("Unexpected Error. Approve failed," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + Exit For + End Try + Else + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200021", "[%NOT ALLOW TO APPROVE%]"), MsgBoxStyle.Exclamation, Me.Text) + End If + Next + + XmlDoc = Nothing + + If blnReLoad Then + + Call funLoadSubcontractor() + + Call funShowActiveDetail() + + End If + + End If + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub btnDAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDAdd.Click + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + + 'Dim Rows As DataRow() + Dim fSubcontractorContDef As New frmSubcontractorContDef + + fSubcontractorContDef.DefMode = 0 + fSubcontractorContDef.SubcontractorNo = Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString + fSubcontractorContDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + ContactorName = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + ugrRow = FindRecordPosition(iugDetail, "ContactorName", ContactorName) + If Not ugrRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.ActiveRow = ugrRow + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + + End If + End Sub + + Private Sub btnDEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDEdit.Click + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing And Not Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow OrElse iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractorCont).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'" _ + & " And ContactorName = '" & Replace(Me.iugDetail.iMESUltraGrid.ActiveRow.Cells("ContactorName").Value.ToString, "'", "''") & "'") + + Dim fSubcontractorContDef As New frmSubcontractorContDef + fSubcontractorContDef.DefMode = 1 + fSubcontractorContDef.EditDataRow = Rows(0) + fSubcontractorContDef.SubcontractorNo = Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString + fSubcontractorContDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + ContactorName = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + ugrRow = FindRecordPosition(iugDetail, "ContactorName", ContactorName) + If Not ugrRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.ActiveRow = ugrRow + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + Else + + Exit Sub + End If + + End Sub + + Private Sub btnDDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDDel.Click + + + '1.先檢查是否為單筆,是:將其Selecte + If Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then Exit Sub + If iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + + Cursor.Current = Cursors.WaitCursor + + If Not Me.iugDetail.iMESUltraGrid.ActiveRow.Selected Then + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + + '2.Multi + If Me.iugDetail.iMESUltraGrid.Selected.Rows.Count > 0 Then + If Me.iugDetail.iMESUltraGrid.Selected.Rows.Item(0).IsGroupByRow Then + Exit Sub 'Selected.Rows,不會包含GroupRow & 一般的Row在一起,故若是GroupRow不做任何處理 + End If + If iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-100001", "[%ARE YOU SURE TO DELETE ALL SELECTED RECORDS%]"), MsgBoxStyle.OkCancel + MsgBoxStyle.Question + MsgBoxStyle.DefaultButton2, Me.Text) = MsgBoxResult.Cancel Then + Exit Sub + End If + + '共用資料 + Dim XmlDoc As New XmlDocument + Dim blnReLoad As Boolean = False + Dim intIssueState As Integer + + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + For i = 0 To Me.iugDetail.iMESUltraGrid.Selected.Rows.Count - 1 + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", CInput(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString), "") + strParameter = strParameter & CombineXMLParameter("ContactorName", "ContactorName", "String", CInput(Me.iugDetail.iMESUltraGrid.Selected.Rows(i).Cells("ContactorName").Value.ToString), "") + InXml = CombineXMLRequest(strIdentity, strParameter) + Try + ' 2016 YF, OutXml = wsENT.DelSubcontractorCont(InXml) + 'OutXml = InvokeSrv("wsENT.DelSubcontractorCont", InXml) + OutXml = InvokeSrv("SXS.wsENT.DelSubcontractorCont", InXml) + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + If Not blnReLoad Then blnReLoad = True + Else + '找出Exception訊並顯示出來 + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit For + End If + Catch ex As Exception + 'MsgBox("Unexpected Error. Delete failed," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + Exit For + End Try + + Next + + XmlDoc = Nothing + + If blnReLoad Then Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + End If + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub btnDCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDCopy.Click + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing And Not Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow OrElse iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractorCont).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'" _ + & " And ContactorName = '" & Replace(Me.iugDetail.iMESUltraGrid.ActiveRow.Cells("ContactorName").Value.ToString, "'", "''") & "'") + + Dim fSubcontractorContDef As New frmSubcontractorContDef + fSubcontractorContDef.DefMode = 2 + fSubcontractorContDef.EditDataRow = Rows(0) + fSubcontractorContDef.SubcontractorNo = Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString + fSubcontractorContDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + ContactorName = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + ugrRow = FindRecordPosition(iugDetail, "ContactorName", ContactorName) + If Not ugrRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.ActiveRow = ugrRow + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + Else + + Exit Sub + End If + + End Sub + + Private Sub btnEMail_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEMail.Click + + If Not Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then + If iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Dim Rows As DataRow() + Dim proMail As New System.Diagnostics.Process + Dim strAccount As String + + Rows = dsENT.Tables(tblENTSubcontractorCont).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'" _ + & " And ContactorName = '" & Replace(Me.iugDetail.iMESUltraGrid.ActiveRow.Cells("ContactorName").Value.ToString, "'", "''") & "'") + + strAccount = "mailto:" & Rows(0).Item("EMail").ToString + proMail.Start(strAccount) + + End If + + End Sub + + Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click + Me.Close() + End Sub + + Protected Overrides Sub btnQuery_Click(sender As Object, e As EventArgs) + Cursor.Current = Cursors.WaitCursor + + funLoadSubcontractor() + + Cursor.Current = Cursors.Default + End Sub + +#Region "Ultra Grid" + + Private Sub iugSubcontractor_iMESUltraGrid_InitializeLayOut(ByVal sender As System.Object, ByVal e As Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs) Handles iugSubcontractor.iMESUltraGrid_InitializeLayOut + + With e.Layout + With .Bands(0).Columns("SubcontractorNo") + .Header.Caption = "SubcontractorNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 0 + End With + With .Bands(0).Columns("SubcontractorName") + .Header.Caption = "SubcontractorName" + .Width = 110 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 1 + End With + With .Bands(0).Columns("Description") + .Header.Caption = "Description" + .Width = 110 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 2 + End With + With .Bands(0).Columns("Creator") + .Header.Caption = "Creator" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 3 + End With + With .Bands(0).Columns("CreateDate") + .Header.Caption = "CreateDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 4 + End With + With .Bands(0).Columns("IssueState") + .Header.Caption = "IssueState" + .Width = 114 + .Hidden = True + .Header.VisiblePosition = 5 + End With + With .Bands(0).Columns("Reviser") + .Header.Caption = "Reviser" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 6 + End With + With .Bands(0).Columns("ReviseDate") + .Header.Caption = "ReviseDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 7 + End With + With e.Layout.Bands(0).Columns("DataStamp") + .Hidden = True + End With + End With + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + End Sub + + Private Sub iugSubcontractor_iMESUltraGrid_AfterRowActivate(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles iugSubcontractor.iMESUltraGrid_AfterRowActivate + + 'IsGroupByRow不做任何處理 + If Not iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + Else + Exit Sub + End If + + End Sub + + Private Sub iugDetail_iMESUltraGrid_InitializeLayOut(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs) Handles iugDetail.iMESUltraGrid_InitializeLayOut + + With e.Layout + With .Bands(0).Columns("SubcontractorNo") + .Header.Caption = "SubcontractorNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 0 + End With + With .Bands(0).Columns("ContactorName") + .Header.Caption = "ContactorName" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 1 + End With + With .Bands(0).Columns("TelNo") + .Header.Caption = "TelNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 2 + End With + With .Bands(0).Columns("FaxNo") + .Header.Caption = "FaxNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 3 + End With + With .Bands(0).Columns("Title") + .Header.Caption = "Title" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 4 + End With + With .Bands(0).Columns("Address") + .Header.Caption = "Address" + .Width = 110 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 5 + End With + With .Bands(0).Columns("EMail") + .Header.Caption = "EMail" + .Width = 150 + .Hidden = False + .CellAppearance.ForeColor = System.Drawing.Color.Blue + .CellAppearance.FontData.Underline = DefaultableBoolean.True + .Header.VisiblePosition = 6 + End With + With .Bands(0).Columns("Description") + .Header.Caption = "Description" + .Width = 200 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 7 + End With + With .Bands(0).Columns("Creator") + .Header.Caption = "Creator" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 8 + End With + With .Bands(0).Columns("CreateDate") + .Header.Caption = "CreateDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 9 + End With + With .Bands(0).Columns("Reviser") + .Header.Caption = "Reviser" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 10 + End With + With .Bands(0).Columns("ReviseDate") + .Header.Caption = "ReviseDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 11 + End With + With e.Layout.Bands(0).Columns("DataStamp") + .Hidden = True + End With + End With + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + End Sub + +#End Region + +#Region "Load Function" + + '//取出tblENTSubcontractor 外包商資料 + + Private Sub funLoadSubcontractor() + + '先判斷是否dataset中已有ENTSubcontractor之datatable,若有,需先remove否則會有錯誤 + If Not IsNothing(dsENT.Tables(tblENTSubcontractor)) Then + dsENT.Tables.Remove(tblENTSubcontractor) + End If + + '組InXml的字串 + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + '加上IssueState要求取出所有資料 + strParameter = CombineXMLParameter("issuestate", "IssueState", "Integer", defInteger, "") + '加上查詢條件 cboSearchFieldName,txtSearchFieldValue + strParameter += CombineXMLQueryCondition() + InXml = CombineXMLRequest(strIdentity, strParameter) + + Try + ' 2016 YF, OutXml = wsENT.LoadSubcontractor(InXml) + 'OutXml = InvokeSrv("wsENT.LoadSubcontractor", InXml) + OutXml = InvokeSrv("SXS.wsENT.LoadSubcontractor", InXml) + + Dim XmlDoc As New XmlDocument '處理Xml字串之物件? + + '利用XmlDoc物件處理ReturnValue + XmlDoc.LoadXml(OutXml) + + If ChkExecutionSuccess(XmlDoc) Then + '讀取取出資料表之名稱 + + tblENTSubcontractor = XmlDoc.GetElementsByTagName("returnvalue").Item(0).SelectNodes("loadSubcontractor").Item(0).SelectNodes("name").Item(0).InnerXml + '取出Schema,dataset讀取Schema可防止Null Field及DateTime的問題 + + XmlSchema = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractor").Item(0).SelectNodes("schema").Item(0).InnerXml + If XmlSchema <> "" Then + '將XML讀入String Reader object中,因為Dataset讀入XML時必須透過String Reader物件 + tmpStringReader = New System.IO.StringReader(XmlSchema) + dsENT.ReadXmlSchema(tmpStringReader) + tmpStringReader.Close() + End If + + '取出Data + XmlData = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractor").Item(0).SelectNodes("value").Item(0).InnerXml + If XmlData <> "" Then + tmpStringReader = New System.IO.StringReader(XmlData) + dsENT.ReadXml(tmpStringReader, XmlReadMode.InferSchema) + tmpStringReader.Close() + End If + + strFilter = "" + Select Case GetIssueState() + Case Issue.Unfrozen + strFilter = FilterByInteger(strFilter, "IssueState", 0) + Case Issue.Pending + strFilter = FilterByInteger(strFilter, "IssueState", 1) + Case Issue.Active + strFilter = FilterByInteger(strFilter, "IssueState", 2) + Case Issue.Unused + strFilter = FilterByInteger(strFilter, "IssueState", -1) + End Select + + dsENT.Tables(tblENTSubcontractor).DefaultView.RowFilter = strFilter + dsENT.Tables(tblENTSubcontractor).DefaultView.Sort = "SubcontractorNo" + + Me.iugSubcontractor.iMESUltraGrid.DataSource = dsENT.Tables(tblENTSubcontractor).DefaultView + + Else + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit Sub + End If + + XmlDoc = Nothing + + Catch ex As Exception + 'MsgBox("Unexpected Error. Load ENT Subcontractor Failed!!," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + End Try + + End Sub + + '//取出tblENTSubcontractorCont聯絡人資料 + + Private Sub funLoadSubcontractorCont(ByRef SubcontractorNo As String) + + If Not IsNothing(dsENT.Tables(tblENTSubcontractorCont)) Then + dsENT.Tables.Remove(tblENTSubcontractorCont) + End If + + '組InXml的字串 + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", SubcontractorNo, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + + Try + ' 2016 YF, OutXml = wsENT.LoadSubcontractorCont(InXml) + 'OutXml = InvokeSrv("wsENT.LoadSubcontractorCont", InXml) + OutXml = InvokeSrv("SXS.wsENT.LoadSubcontractorCont", InXml) + + Dim XmlDoc As New XmlDocument '處理Xml字串之物件? + + '利用XmlDoc物件處理ReturnValue + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + '讀取取出資料表之名稱 + + tblENTSubcontractorCont = XmlDoc.GetElementsByTagName("returnvalue").Item(0).SelectNodes("loadSubcontractorcont").Item(0).SelectNodes("name").Item(0).InnerXml + '取出Schema,dataset讀取Schema可防止Null Field及DateTime的問題 + XmlSchema = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractorcont").Item(0).SelectNodes("schema").Item(0).InnerXml + If XmlSchema <> "" Then + '將XML讀入String Reader object中,因為Dataset讀入XML時必須透過String Reader物件 + tmpStringReader = New System.IO.StringReader(XmlSchema) + dsENT.ReadXmlSchema(tmpStringReader) + tmpStringReader.Close() + End If + + '取出Data + XmlData = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractorcont").Item(0).SelectNodes("value").Item(0).InnerXml + If XmlData <> "" Then + tmpStringReader = New System.IO.StringReader(XmlData) + dsENT.ReadXml(tmpStringReader, XmlReadMode.InferSchema) + tmpStringReader.Close() + End If + + Me.iugDetail.iMESUltraGrid.DataSource = dsENT.Tables(tblENTSubcontractorCont).DefaultView + + Else + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + End If + + XmlDoc = Nothing + + Catch ex As Exception + 'MsgBox("Unexpected Error. Load ENT Subcontractor Cont Failed!!," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + End Try + + End Sub + + Private Sub funShowActiveDetail() + + If Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.DataSource = Nothing + Else + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + End If + + End Sub + + Private Sub funiMESUltraGridIni() + + 'iugSubcontractor 初始設定 + With Me.iugSubcontractor.iMESUltraGrid + .Text = "" + .DisplayLayout.GroupByBox.Hidden = True + .DisplayLayout.UseFixedHeaders = False + End With + + '系統會以UserNo做為Layout的檔名 + + iugSubcontractor.UserNo = gUserNo + + 'iugDetail 初始設定 + With Me.iugDetail.iMESUltraGrid.DisplayLayout + .GroupByBox.Hidden = True + .Override.ExpansionIndicator = ShowExpansionIndicator.Default + .ViewStyle = ViewStyle.SingleBand + .RowConnectorStyle = RowConnectorStyle.Default + + End With + + '系統會以UserNo做為Layout的檔名 + + iugDetail.UserNo = gUserNo + + End Sub + + +#End Region + +End Class + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmSubcontractorContDef.resx b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmSubcontractorContDef.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmSubcontractorContDef.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmSubcontractorContDef.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmSubcontractorContDef.vb new file mode 100644 index 0000000..c489735 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmSubcontractorContDef.vb @@ -0,0 +1,656 @@ +Imports iMESExceptionManager + +Public Class frmSubcontractorContDef + + Inherits COM_Kit.frmDefTemplat + + '//Public Variables + Public EditDataRow As DataRow + Public DefMode As Integer = 0 '0. ADD, 1.Edit, 2. Copy + + Public SubcontractorNo As String = defString + Public PrivFunNo As String = defString + + '//Web Service相關變數 + ' 2016 YF, Dim wsENT As New wsENT.wsENT + Dim InXml As String + Dim OutXml As String + + Dim strIdentity As String + Dim strParameter As String + Dim intDataStamp As Integer '紀錄DataStamp + +#Region " Windows Form Designer generated code " + + Public Sub New() + MyBase.New() + + 'This call is required by the Windows Form Designer. + InitializeComponent() + + 'Add any initialization after the InitializeComponent() call + + End Sub + + 'Form overrides dispose to clean up the component list. + Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing Then + If Not (components Is Nothing) Then + components.Dispose() + End If + End If + MyBase.Dispose(disposing) + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + Friend WithEvents txtDescription As System.Windows.Forms.RichTextBox + Friend WithEvents lblAddress As System.Windows.Forms.Label + Friend WithEvents lblEMail As System.Windows.Forms.Label + Friend WithEvents lblTitle As System.Windows.Forms.Label + Friend WithEvents lblFaxNo As System.Windows.Forms.Label + Friend WithEvents lblTelNo As System.Windows.Forms.Label + Friend WithEvents lblDescription As System.Windows.Forms.Label + Friend WithEvents lblContactorName As System.Windows.Forms.Label + Friend WithEvents lblSubcontractorNo As System.Windows.Forms.Label + Friend WithEvents gbxSubcontractorContData As System.Windows.Forms.GroupBox + Friend WithEvents txtSubcontractorNo As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtContactorName As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtFaxNo As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtTelNo As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtEMail As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtTitle As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtAddress As Infragistics.Win.UltraWinEditors.UltraTextEditor + Private Sub InitializeComponent() + Dim Appearance1 As Infragistics.Win.Appearance = New Infragistics.Win.Appearance() + Me.gbxSubcontractorContData = New System.Windows.Forms.GroupBox() + Me.txtAddress = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtEMail = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtTitle = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtFaxNo = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.lblAddress = New System.Windows.Forms.Label() + Me.lblEMail = New System.Windows.Forms.Label() + Me.lblTitle = New System.Windows.Forms.Label() + Me.lblFaxNo = New System.Windows.Forms.Label() + Me.lblTelNo = New System.Windows.Forms.Label() + Me.txtDescription = New System.Windows.Forms.RichTextBox() + Me.lblDescription = New System.Windows.Forms.Label() + Me.lblSubcontractorNo = New System.Windows.Forms.Label() + Me.lblContactorName = New System.Windows.Forms.Label() + Me.txtSubcontractorNo = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtContactorName = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtTelNo = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + CType(Me.gbxBasisData, System.ComponentModel.ISupportInitialize).BeginInit() + Me.gbxSubcontractorContData.SuspendLayout() + CType(Me.txtAddress, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtEMail, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtTitle, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtFaxNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtSubcontractorNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtContactorName, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtTelNo, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SuspendLayout() + ' + 'gbxBasisData + ' + Me.gbxBasisData.Location = New System.Drawing.Point(12, 322) + Me.gbxBasisData.Size = New System.Drawing.Size(472, 70) + ' + 'btnApply + ' + Me.btnApply.Location = New System.Drawing.Point(396, 401) + ' + 'btnConfirm + ' + Me.btnConfirm.Location = New System.Drawing.Point(208, 401) + ' + 'btnClose + ' + Me.btnClose.Location = New System.Drawing.Point(302, 401) + ' + 'gbxSubcontractorContData + ' + Me.gbxSubcontractorContData.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.gbxSubcontractorContData.Controls.Add(Me.txtAddress) + Me.gbxSubcontractorContData.Controls.Add(Me.txtEMail) + Me.gbxSubcontractorContData.Controls.Add(Me.txtTitle) + Me.gbxSubcontractorContData.Controls.Add(Me.txtFaxNo) + Me.gbxSubcontractorContData.Controls.Add(Me.lblAddress) + Me.gbxSubcontractorContData.Controls.Add(Me.lblEMail) + Me.gbxSubcontractorContData.Controls.Add(Me.lblTitle) + Me.gbxSubcontractorContData.Controls.Add(Me.lblFaxNo) + Me.gbxSubcontractorContData.Controls.Add(Me.lblTelNo) + Me.gbxSubcontractorContData.Controls.Add(Me.txtDescription) + Me.gbxSubcontractorContData.Controls.Add(Me.lblDescription) + Me.gbxSubcontractorContData.Controls.Add(Me.lblSubcontractorNo) + Me.gbxSubcontractorContData.Controls.Add(Me.lblContactorName) + Me.gbxSubcontractorContData.Controls.Add(Me.txtSubcontractorNo) + Me.gbxSubcontractorContData.Controls.Add(Me.txtContactorName) + Me.gbxSubcontractorContData.Controls.Add(Me.txtTelNo) + Me.gbxSubcontractorContData.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.gbxSubcontractorContData.Location = New System.Drawing.Point(15, 8) + Me.gbxSubcontractorContData.Name = "gbxSubcontractorContData" + Me.gbxSubcontractorContData.Size = New System.Drawing.Size(469, 306) + Me.gbxSubcontractorContData.TabIndex = 0 + Me.gbxSubcontractorContData.TabStop = False + Me.gbxSubcontractorContData.Text = "ENT Subcontractor Contactor Data" + ' + 'txtAddress + ' + Me.txtAddress.Location = New System.Drawing.Point(120, 152) + Me.txtAddress.Name = "txtAddress" + Me.txtAddress.Size = New System.Drawing.Size(336, 22) + Me.txtAddress.TabIndex = 13 + ' + 'txtEMail + ' + Me.txtEMail.Location = New System.Drawing.Point(320, 120) + Me.txtEMail.Name = "txtEMail" + Me.txtEMail.Size = New System.Drawing.Size(136, 22) + Me.txtEMail.TabIndex = 11 + ' + 'txtTitle + ' + Me.txtTitle.Location = New System.Drawing.Point(120, 120) + Me.txtTitle.Name = "txtTitle" + Me.txtTitle.Size = New System.Drawing.Size(114, 22) + Me.txtTitle.TabIndex = 9 + ' + 'txtFaxNo + ' + Me.txtFaxNo.Location = New System.Drawing.Point(320, 88) + Me.txtFaxNo.Name = "txtFaxNo" + Me.txtFaxNo.Size = New System.Drawing.Size(136, 22) + Me.txtFaxNo.TabIndex = 7 + ' + 'lblAddress + ' + Me.lblAddress.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblAddress.Location = New System.Drawing.Point(24, 154) + Me.lblAddress.Name = "lblAddress" + Me.lblAddress.Size = New System.Drawing.Size(86, 14) + Me.lblAddress.TabIndex = 12 + Me.lblAddress.Text = "Address" + Me.lblAddress.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblEMail + ' + Me.lblEMail.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblEMail.Location = New System.Drawing.Point(248, 123) + Me.lblEMail.Name = "lblEMail" + Me.lblEMail.Size = New System.Drawing.Size(64, 14) + Me.lblEMail.TabIndex = 10 + Me.lblEMail.Text = "EMail" + Me.lblEMail.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblTitle + ' + Me.lblTitle.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblTitle.Location = New System.Drawing.Point(24, 121) + Me.lblTitle.Name = "lblTitle" + Me.lblTitle.Size = New System.Drawing.Size(86, 14) + Me.lblTitle.TabIndex = 8 + Me.lblTitle.Text = "Title" + Me.lblTitle.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblFaxNo + ' + Me.lblFaxNo.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblFaxNo.Location = New System.Drawing.Point(248, 90) + Me.lblFaxNo.Name = "lblFaxNo" + Me.lblFaxNo.Size = New System.Drawing.Size(64, 14) + Me.lblFaxNo.TabIndex = 6 + Me.lblFaxNo.Text = "FaxNo" + Me.lblFaxNo.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblTelNo + ' + Me.lblTelNo.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblTelNo.Location = New System.Drawing.Point(24, 90) + Me.lblTelNo.Name = "lblTelNo" + Me.lblTelNo.Size = New System.Drawing.Size(86, 14) + Me.lblTelNo.TabIndex = 4 + Me.lblTelNo.Text = "TelNo" + Me.lblTelNo.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'txtDescription + ' + Me.txtDescription.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.txtDescription.Location = New System.Drawing.Point(120, 184) + Me.txtDescription.Name = "txtDescription" + Me.txtDescription.Size = New System.Drawing.Size(336, 108) + Me.txtDescription.TabIndex = 15 + Me.txtDescription.Text = "" + ' + 'lblDescription + ' + Me.lblDescription.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblDescription.Location = New System.Drawing.Point(24, 186) + Me.lblDescription.Name = "lblDescription" + Me.lblDescription.Size = New System.Drawing.Size(86, 14) + Me.lblDescription.TabIndex = 14 + Me.lblDescription.Text = "Description" + Me.lblDescription.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblSubcontractorNo + ' + Me.lblSubcontractorNo.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblSubcontractorNo.Location = New System.Drawing.Point(14, 29) + Me.lblSubcontractorNo.Name = "lblSubcontractorNo" + Me.lblSubcontractorNo.Size = New System.Drawing.Size(96, 14) + Me.lblSubcontractorNo.TabIndex = 0 + Me.lblSubcontractorNo.Text = "Subcontractor No" + Me.lblSubcontractorNo.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblContactorName + ' + Me.lblContactorName.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblContactorName.Location = New System.Drawing.Point(24, 59) + Me.lblContactorName.Name = "lblContactorName" + Me.lblContactorName.Size = New System.Drawing.Size(86, 14) + Me.lblContactorName.TabIndex = 2 + Me.lblContactorName.Text = "Contactor Name" + Me.lblContactorName.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'txtSubcontractorNo + ' + Me.txtSubcontractorNo.Location = New System.Drawing.Point(120, 24) + Me.txtSubcontractorNo.Name = "txtSubcontractorNo" + Me.txtSubcontractorNo.ReadOnly = True + Me.txtSubcontractorNo.Size = New System.Drawing.Size(114, 22) + Me.txtSubcontractorNo.TabIndex = 1 + Me.txtSubcontractorNo.TabStop = False + ' + 'txtContactorName + ' + Appearance1.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtContactorName.Appearance = Appearance1 + Me.txtContactorName.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtContactorName.Location = New System.Drawing.Point(120, 56) + Me.txtContactorName.Name = "txtContactorName" + Me.txtContactorName.Size = New System.Drawing.Size(160, 22) + Me.txtContactorName.TabIndex = 3 + ' + 'txtTelNo + ' + Me.txtTelNo.Location = New System.Drawing.Point(120, 88) + Me.txtTelNo.Name = "txtTelNo" + Me.txtTelNo.Size = New System.Drawing.Size(114, 22) + Me.txtTelNo.TabIndex = 5 + ' + 'frmSubcontractorContDef + ' + Me.ClientSize = New System.Drawing.Size(496, 446) + Me.Controls.Add(Me.gbxSubcontractorContData) + Me.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Name = "frmSubcontractorContDef" + Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen + Me.Text = "ENT Subcontractor Contactor Define" + Me.Controls.SetChildIndex(Me.btnClose, 0) + Me.Controls.SetChildIndex(Me.btnConfirm, 0) + Me.Controls.SetChildIndex(Me.btnApply, 0) + Me.Controls.SetChildIndex(Me.gbxBasisData, 0) + Me.Controls.SetChildIndex(Me.gbxSubcontractorContData, 0) + CType(Me.gbxBasisData, System.ComponentModel.ISupportInitialize).EndInit() + Me.gbxSubcontractorContData.ResumeLayout(False) + Me.gbxSubcontractorContData.PerformLayout() + CType(Me.txtAddress, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtEMail, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtTitle, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtFaxNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtSubcontractorNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtContactorName, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtTelNo, System.ComponentModel.ISupportInitialize).EndInit() + Me.ResumeLayout(False) + + End Sub + +#End Region + + Private Sub frmSubcontractorContDef_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + + Cursor.Current = Cursors.WaitCursor + + Select Case DefMode + Case 0 + Me.Text = Me.Text & "(ADD)" + Case 1 + Me.Text = Me.Text & "(EDIT)" + Case 2 + Me.Text = Me.Text & "(Copy)" + Case Else + Me.Text = Me.Text & "(Unknown)" + End Select + + '做為MainForm判斷是否重新LoadData的依據() + gReturnKeyValue = "" + + ' 2016 YF, wsENT.Url = LocalizeWebService(wsENT.Url.ToString) + ' 2016 YF, wsENT.EnableDecompression = True + If DefMode = 0 Or DefMode = 2 Then + SetCreateDate(Now) + SetCreator(gUserNo) + End If + If Not EditDataRow Is Nothing Then '修改 or Copy + txtSubcontractorNo.Text = EditDataRow.Item("SubcontractorNo").ToString + txtContactorName.Text = EditDataRow.Item("ContactorName").ToString + txtTelNo.Text = EditDataRow.Item("TelNo").ToString + txtFaxNo.Text = EditDataRow.Item("FaxNo").ToString + txtTitle.Text = EditDataRow.Item("Title").ToString + txtAddress.Text = EditDataRow.Item("Address").ToString + txtEMail.Text = EditDataRow.Item("EMail").ToString + 'txtDescription是RichTextBox(Control, 因為TextBox無法正常顯示多行換行的資料) + txtDescription.Text = EditDataRow.Item("Description").ToString + If DefMode = 1 Then + If (Not IsDBNull(EditDataRow("Creator"))) Then + SetCreateDate(Convert.ToDateTime(EditDataRow.Item("CreateDate"))) + SetCreator(EditDataRow.Item("Creator").ToString) + End If + End If + End If + + If DefMode = 0 Then 'Add + txtSubcontractorNo.Text = SubcontractorNo + SetCreateDate(Now) + SetCreator(gUserNo) + ElseIf DefMode = 1 Then 'Edit + txtContactorName.ReadOnly = True + SetReviseDate(Now) + SetReviser(gUserNo) + intDataStamp = EditDataRow.Item("DataStamp") + End If + + btnApplyEnabled = False + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + ExeGroupControlPriv(Me, PrivFunNo) + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub frmSubcontractorContDef_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Activated + If DefMode = 0 Or DefMode = 2 Then + txtContactorName.Focus() + Else + txtTelNo.Focus() + End If + End Sub + + Protected Overrides Sub btnConfirm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + + Cursor.Current = Cursors.WaitCursor + + If funAddorEdit(sender) < 0 Then Exit Sub + + Me.Close() + + Cursor.Current = Cursors.Default + + End Sub + + Protected Overrides Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + Me.Close() + End Sub + + Protected Overrides Sub btnApply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + + Cursor.Current = Cursors.WaitCursor + + If funAddorEdit(sender) < 0 Then Exit Sub + + If DefMode = 0 Or DefMode = 2 Then + txtContactorName.Focus() + Else + txtTelNo.Focus() + End If + + txtEMail.Text = "" + btnApplyEnabled = False + Cursor.Current = Cursors.Default + + End Sub + +#Region "Control KeyPress" + + Private Sub txtSubcontractorNo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.Click + txtSubcontractorNo.SelectAll() + End Sub + + Private Sub txtSubcontractorNo_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.Enter + txtSubcontractorNo.SelectAll() + End Sub + + Private Sub txtSubcontractorNo_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtSubcontractorNo.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtSubcontractorNo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtContactorName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtContactorName.Click + txtContactorName.SelectAll() + End Sub + + Private Sub txtContactorName_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtContactorName.Enter + txtContactorName.SelectAll() + End Sub + + Private Sub txtContactorName_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtContactorName.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtContactorName_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtContactorName.Leave + If txtContactorName.Text <> "" And txtEMail.Text = "" Then + txtEMail.Text = txtContactorName.Text & "@" + End If + txtContactorName.Text = UCase(txtContactorName.Text) + End Sub + + Private Sub txtContactorName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtContactorName.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtTelNo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTelNo.Click + txtTelNo.SelectAll() + End Sub + + Private Sub txtTelNo_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTelNo.Enter + txtTelNo.SelectAll() + End Sub + + Private Sub txtTelNo_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtTelNo.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtTelNo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTelNo.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtFaxNo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtFaxNo.Click + txtFaxNo.SelectAll() + End Sub + + Private Sub txtFaxNo_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtFaxNo.Enter + txtFaxNo.SelectAll() + End Sub + + Private Sub txtFaxNo_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtFaxNo.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtFaxNo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtFaxNo.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtTitle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTitle.Click + txtTitle.SelectAll() + End Sub + + Private Sub txtTitle_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTitle.Enter + txtTitle.SelectAll() + End Sub + + Private Sub txtTitle_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtTitle.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtTitle_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTitle.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtEMail_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtEMail.Click + txtEMail.SelectAll() + End Sub + + Private Sub txtEMail_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtEMail.Enter + txtEMail.SelectAll() + End Sub + + Private Sub txtEMail_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtEMail.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtEMail_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtEMail.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtAddress_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAddress.Click + txtAddress.SelectAll() + End Sub + + Private Sub txtAddress_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAddress.Enter + txtAddress.SelectAll() + End Sub + + Private Sub txtAddress_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtAddress.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtAddress_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAddress.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtDescription_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDescription.Click + txtDescription.SelectAll() + End Sub + + Private Sub txtDescription_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDescription.Enter + txtDescription.SelectAll() + End Sub + + Private Sub txtDescription_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtDescription.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtDescription_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtDescription.TextChanged + btnApplyEnabled = True + End Sub + +#End Region + +#Region "Others" + + Private Function funAddorEdit(sender As Object) As Integer + + funAddorEdit = -1 + + '****************************************************************************** + '1.基本檢查() + '****************************************************************************** + If txtSubcontractorNo.Text = "" Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200001", "[%SubcontractorNo%]"), MsgBoxStyle.Exclamation, Me.Text) + txtSubcontractorNo.Focus() + Exit Function + End If + If txtContactorName.Text = "" Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200001", "[%ContactorName%]"), MsgBoxStyle.Exclamation, Me.Text) + txtContactorName.Focus() + Exit Function + End If + + '****************************************************************************** + '2.寫回資料庫() + '****************************************************************************** + Dim XmlDoc As New XmlDocument + + Try + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + strParameter = CombineXMLParameter("subcontractorno", "SubcontractorNo", "String", CInput(txtSubcontractorNo.Text), "") + strParameter = strParameter & CombineXMLParameter("contactorname", "ContactorName", "String", CInput(txtContactorName.Text), "") + strParameter = strParameter & CombineXMLParameter("telno", "TelNo", "String", txtTelNo.Text, "") + strParameter = strParameter & CombineXMLParameter("faxno", "FaxNo", "String", txtFaxNo.Text, "") + strParameter = strParameter & CombineXMLParameter("title", "Title", "String", CInput(txtTitle.Text), "") + strParameter = strParameter & CombineXMLParameter("address", "Address", "String", CInput(txtAddress.Text), "") + strParameter = strParameter & CombineXMLParameter("email", "EMail", "String", CInput(txtEMail.Text), "") + strParameter = strParameter & CombineXMLParameter("description", "Description", "String", CInput(txtDescription.Text), "") + + + If DefMode = 0 Or DefMode = 2 Then 'Add or Copy + strParameter += CombineXMLParameter("creator", "Creator", "String", gUserNo, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + ' 2016 YF, OutXml = wsENT.AddSubcontractorCont(InXml) + OutXml = InvokeSrv("SXS.wsENT.AddSubcontractorCont", InXml) + + Else 'Edit + ' 增加Datastamp + strParameter += CombineXMLParameter("datastamp", "Datastamp", "Integer", intDataStamp, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + ' 2016 YF, OutXml = wsENT.EditSubcontractorCont(InXml) + OutXml = InvokeSrv("SXS.wsENT.EditSubcontractorCont", InXml) + + End If + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + gReturnKeyValue = txtContactorName.Text + + funAddorEdit = 0 + If sender.Equals(btnApply) Then + intDataStamp += 1 + End If + Else + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + End If + + Catch ex As Exception + 'MsgBox("Unexpected Error. Add or Edit ENT Subcontractor Contactor Failed!," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + End Try + + XmlDoc = Nothing + + End Function +#End Region + + + Private Sub frmSubcontractorContDef_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing + ' 2016 YF, If Not wsENT Is Nothing Then wsENT.Dispose() + End Sub +End Class + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmSubcontractorDef.resx b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmSubcontractorDef.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmSubcontractorDef.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmSubcontractorDef.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmSubcontractorDef.vb new file mode 100644 index 0000000..ff97a9a --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/frmSubcontractorDef.vb @@ -0,0 +1,421 @@ +Imports iMESExceptionManager + +Public Class frmSubcontractorDef + + Inherits COM_Kit.frmDefTemplat + + '//Public Variables + Public EditDataRow As DataRow + Public DefMode As Integer = 0 '0. ADD, 1.Edit, 2. Copy + Public PrivFunNo As String = defString + + '//Web Service相關變數 + ' 2016 YF, Dim wsENT As New wsENT.wsENT + Dim InXml As String + Dim OutXml As String + + Dim strIdentity As String + Dim strParameter As String + Dim intDataStamp As Integer '紀錄DataStamp + +#Region " Windows Form Designer generated code " + + Public Sub New() + MyBase.New() + + 'This call is required by the Windows Form Designer. + InitializeComponent() + + 'Add any initialization after the InitializeComponent() call + + End Sub + + 'Form overrides dispose to clean up the component list. + Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing Then + If Not (components Is Nothing) Then + components.Dispose() + End If + End If + MyBase.Dispose(disposing) + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + Friend WithEvents txtDescription As System.Windows.Forms.RichTextBox + Friend WithEvents lblDescription As System.Windows.Forms.Label + Friend WithEvents lblSubcontractorNo As System.Windows.Forms.Label + Friend WithEvents lblSubcontractorName As System.Windows.Forms.Label + Friend WithEvents gbxSubcontractorData As System.Windows.Forms.GroupBox + Friend WithEvents txtSubcontractorNo As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtSubcontractorName As Infragistics.Win.UltraWinEditors.UltraTextEditor + Private Sub InitializeComponent() + Dim Appearance1 As Infragistics.Win.Appearance = New Infragistics.Win.Appearance() + Dim Appearance2 As Infragistics.Win.Appearance = New Infragistics.Win.Appearance() + Me.gbxSubcontractorData = New System.Windows.Forms.GroupBox() + Me.txtDescription = New System.Windows.Forms.RichTextBox() + Me.lblDescription = New System.Windows.Forms.Label() + Me.lblSubcontractorNo = New System.Windows.Forms.Label() + Me.lblSubcontractorName = New System.Windows.Forms.Label() + Me.txtSubcontractorNo = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtSubcontractorName = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + CType(Me.gbxBasisData, System.ComponentModel.ISupportInitialize).BeginInit() + Me.gbxSubcontractorData.SuspendLayout() + CType(Me.txtSubcontractorNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtSubcontractorName, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SuspendLayout() + ' + 'gbxBasisData + ' + Me.gbxBasisData.Location = New System.Drawing.Point(12, 185) + Me.gbxBasisData.Size = New System.Drawing.Size(479, 70) + ' + 'btnApply + ' + Me.btnApply.Location = New System.Drawing.Point(403, 264) + ' + 'btnConfirm + ' + Me.btnConfirm.Location = New System.Drawing.Point(215, 264) + ' + 'btnClose + ' + Me.btnClose.Location = New System.Drawing.Point(309, 264) + ' + 'gbxSubcontractorData + ' + Me.gbxSubcontractorData.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.gbxSubcontractorData.Controls.Add(Me.txtDescription) + Me.gbxSubcontractorData.Controls.Add(Me.lblDescription) + Me.gbxSubcontractorData.Controls.Add(Me.lblSubcontractorNo) + Me.gbxSubcontractorData.Controls.Add(Me.lblSubcontractorName) + Me.gbxSubcontractorData.Controls.Add(Me.txtSubcontractorNo) + Me.gbxSubcontractorData.Controls.Add(Me.txtSubcontractorName) + Me.gbxSubcontractorData.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.gbxSubcontractorData.Location = New System.Drawing.Point(12, 8) + Me.gbxSubcontractorData.Name = "gbxSubcontractorData" + Me.gbxSubcontractorData.Size = New System.Drawing.Size(479, 169) + Me.gbxSubcontractorData.TabIndex = 7 + Me.gbxSubcontractorData.TabStop = False + Me.gbxSubcontractorData.Text = "Subcontractor Data" + ' + 'txtDescription + ' + Me.txtDescription.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.txtDescription.Location = New System.Drawing.Point(128, 86) + Me.txtDescription.Name = "txtDescription" + Me.txtDescription.Size = New System.Drawing.Size(334, 67) + Me.txtDescription.TabIndex = 2 + Me.txtDescription.Text = "" + ' + 'lblDescription + ' + Me.lblDescription.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblDescription.Location = New System.Drawing.Point(56, 88) + Me.lblDescription.Name = "lblDescription" + Me.lblDescription.Size = New System.Drawing.Size(64, 14) + Me.lblDescription.TabIndex = 13 + Me.lblDescription.Text = "Description" + Me.lblDescription.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblSubcontractorNo + ' + Me.lblSubcontractorNo.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblSubcontractorNo.Location = New System.Drawing.Point(24, 24) + Me.lblSubcontractorNo.Name = "lblSubcontractorNo" + Me.lblSubcontractorNo.Size = New System.Drawing.Size(96, 32) + Me.lblSubcontractorNo.TabIndex = 5 + Me.lblSubcontractorNo.Text = "Subcontractor No" + Me.lblSubcontractorNo.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblSubcontractorName + ' + Me.lblSubcontractorName.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblSubcontractorName.Location = New System.Drawing.Point(8, 56) + Me.lblSubcontractorName.Name = "lblSubcontractorName" + Me.lblSubcontractorName.Size = New System.Drawing.Size(112, 32) + Me.lblSubcontractorName.TabIndex = 9 + Me.lblSubcontractorName.Text = "Subcontractor Name" + Me.lblSubcontractorName.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'txtSubcontractorNo + ' + Appearance1.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtSubcontractorNo.Appearance = Appearance1 + Me.txtSubcontractorNo.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtSubcontractorNo.Location = New System.Drawing.Point(128, 24) + Me.txtSubcontractorNo.Name = "txtSubcontractorNo" + Me.txtSubcontractorNo.Size = New System.Drawing.Size(152, 22) + Me.txtSubcontractorNo.TabIndex = 0 + ' + 'txtSubcontractorName + ' + Appearance2.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtSubcontractorName.Appearance = Appearance2 + Me.txtSubcontractorName.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtSubcontractorName.Location = New System.Drawing.Point(128, 55) + Me.txtSubcontractorName.Name = "txtSubcontractorName" + Me.txtSubcontractorName.Size = New System.Drawing.Size(334, 22) + Me.txtSubcontractorName.TabIndex = 1 + ' + 'frmSubcontractorDef + ' + Me.ClientSize = New System.Drawing.Size(503, 309) + Me.Controls.Add(Me.gbxSubcontractorData) + Me.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Name = "frmSubcontractorDef" + Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen + Me.Text = "ENT Subcontractor Define" + Me.Controls.SetChildIndex(Me.btnClose, 0) + Me.Controls.SetChildIndex(Me.btnConfirm, 0) + Me.Controls.SetChildIndex(Me.btnApply, 0) + Me.Controls.SetChildIndex(Me.gbxBasisData, 0) + Me.Controls.SetChildIndex(Me.gbxSubcontractorData, 0) + CType(Me.gbxBasisData, System.ComponentModel.ISupportInitialize).EndInit() + Me.gbxSubcontractorData.ResumeLayout(False) + Me.gbxSubcontractorData.PerformLayout() + CType(Me.txtSubcontractorNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtSubcontractorName, System.ComponentModel.ISupportInitialize).EndInit() + Me.ResumeLayout(False) + + End Sub + +#End Region + + Private Sub frmSubcontractorDef_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + + Cursor.Current = Cursors.WaitCursor + + Select Case DefMode + Case 0 + Me.Text = Me.Text & "(ADD)" + Case 1 + Me.Text = Me.Text & "(EDIT)" + Case 2 + Me.Text = Me.Text & "(Copy)" + Case Else + Me.Text = Me.Text & "(Unknown)" + End Select + + '做為MainForm判斷是否重新LoadData的依據 + gReturnKeyValue = "" + + ' 2016 YF, wsENT.Url = LocalizeWebService(wsENT.Url.ToString) + ' 2016 YF, wsENT.EnableDecompression = True + + If Not EditDataRow Is Nothing Then + txtSubcontractorNo.Text = EditDataRow.Item("SubcontractorNo").ToString + txtSubcontractorName.Text = EditDataRow.Item("SubcontractorName").ToString + 'txtDescription是RichTextBox Control,因為TextBox無法正常顯示多行換行的資料 + txtDescription.Text = EditDataRow.Item("Description").ToString + End If + + If DefMode = 0 Or DefMode = 2 Then 'Add or Copy + SetCreator(gUserNo) + SetCreateDate(Now) + ElseIf DefMode = 1 Then 'Edit + txtSubcontractorNo.ReadOnly = True + SetCreator(EditDataRow.Item("Creator").ToString) + SetCreateDate(Convert.ToDateTime(EditDataRow.Item("CreateDate"))) + SetReviser(gUserNo) + SetReviseDate(Now) + intDataStamp = EditDataRow.Item("DataStamp") + End If + + btnApplyEnabled = False + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + ExeGroupControlPriv(Me, PrivFunNo) + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub frmSubcontractorDef_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Activated + If DefMode = 0 Or DefMode = 2 Then + txtSubcontractorNo.Focus() + Else + txtSubcontractorName.Focus() + End If + End Sub + + Protected Overrides Sub btnConfirm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + + Cursor.Current = Cursors.WaitCursor + + If funAddorEdit(sender) < 0 Then Exit Sub + + Me.Close() + + Cursor.Current = Cursors.Default + + End Sub + + Protected Overrides Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + Me.Close() + End Sub + + Protected Overrides Sub btnApply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + + Cursor.Current = Cursors.WaitCursor + + If funAddorEdit(sender) < 0 Then Exit Sub + + If DefMode = 0 Or DefMode = 2 Then + txtSubcontractorNo.Focus() + Else + txtSubcontractorName.Focus() + + End If + + Cursor.Current = Cursors.Default + btnApplyEnabled = False + + End Sub + + Private Sub frmSubcontractorDef_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing + ' 2016 YF, If Not wsENT Is Nothing Then wsENT.Dispose() + End Sub + +#Region "Control KeyPress" + + Private Sub txtSubcontractorNo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.Click + txtSubcontractorNo.SelectAll() + End Sub + + Private Sub txtSubcontractorNo_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.Enter + txtSubcontractorNo.SelectAll() + End Sub + + Private Sub txtSubcontractorNo_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtSubcontractorNo.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtSubcontractorNo_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.Leave + txtSubcontractorNo.Text = UCase(txtSubcontractorNo.Text) + End Sub + + Private Sub txtSubcontractorNo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtSubcontractorName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorName.Click + txtSubcontractorName.SelectAll() + End Sub + + Private Sub txtSubcontractorName_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorName.Enter + txtSubcontractorName.SelectAll() + End Sub + + Private Sub txtSubcontractorName_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtSubcontractorName.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtSubcontractorName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorName.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtDescription_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDescription.Click + txtDescription.SelectAll() + End Sub + + Private Sub txtDescription_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDescription.Enter + txtDescription.SelectAll() + End Sub + + Private Sub txtDescription_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtDescription.TextChanged + btnApplyEnabled = True + End Sub + +#End Region + +#Region "Others" + + Private Function funAddorEdit(sender As Object) As Integer + + funAddorEdit = -1 + + '****************************************************************************** + '1.基本檢查 + '****************************************************************************** + If txtSubcontractorNo.Text = "" Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200001", "[%SubcontractorNo%]"), MsgBoxStyle.Exclamation, Me.Text) + txtSubcontractorNo.Focus() + Exit Function + End If + + If txtSubcontractorName.Text = "" Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200001", "[%SubcontractorName%]"), MsgBoxStyle.Exclamation, Me.Text) + txtSubcontractorName.Focus() + Exit Function + End If + + '2. + '****************************************************************************** + '寫回資料庫 + '****************************************************************************** + Dim XmlDoc As New XmlDocument + + Try + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + strParameter = CombineXMLParameter("subcontractorno", "SubcontractorNo", "String", CInput(txtSubcontractorNo.Text), "") + strParameter = strParameter & CombineXMLParameter("subcontractorname", "SubcontractorName", "String", CInput(txtSubcontractorName.Text), "") + strParameter = strParameter & CombineXMLParameter("description", "Description", "String", CInput(txtDescription.Text), "") + + If DefMode = 0 Or DefMode = 2 Then 'Add or Copy + strParameter = strParameter & CombineXMLParameter("creator", "Creator", "String", gUserNo, "") + strParameter = strParameter & CombineXMLParameter("createdate", "CreateDate", "DateTime", Format(Now, "yyyy/MM/dd HH:mm:ss"), "") + InXml = CombineXMLRequest(strIdentity, strParameter) + + ' 2016 YF, OutXml = wsENT.AddSubcontractor(InXml) + OutXml = InvokeSrv("wsENT.AddSubcontractor", InXml) + + Else + '修改 + strParameter = strParameter & CombineXMLParameter("issuestate", "IssueState", "String", EditDataRow.Item("IssueState").ToString, "") + ' 增加Datastamp + strParameter += CombineXMLParameter("datastamp", "Datastamp", "Integer", intDataStamp, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + + ' 2016 YF, OutXml = wsENT.EditSubcontractor(InXml) + OutXml = InvokeSrv("wsENT.EditSubcontractor", InXml) + + End If + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + gReturnKeyValue = txtSubcontractorNo.Text + + funAddorEdit = 0 + If sender.Equals(btnApply) Then + intDataStamp += 1 + End If + Else + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + End If + + Catch ex As Exception + 'MsgBox("Unexpected Error. Add or Edit ENT Subcontractor Failed!," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + End Try + + XmlDoc = Nothing + + End Function + +#End Region + +End Class + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/iMES.snk b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/iMES.snk new file mode 100644 index 0000000..4206cdc Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/ET_Subcontractor/iMES.snk differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/Application.Designer.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/Application.Designer.vb new file mode 100644 index 0000000..537244b --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/Application.Designer.vb @@ -0,0 +1,13 @@ +'------------------------------------------------------------------------------ +' +' 此代码由工具生成。 +' 运行时版本:4.0.30319.42000 +' +' 对此文件的更改可能会导致不正确的行为,并且如果 +' 重新生成代码,这些更改将会丢失。 +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/Application.myapp b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/Application.myapp new file mode 100644 index 0000000..758895d --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + false + false + 0 + true + 0 + 1 + true + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/AssemblyInfo.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/AssemblyInfo.vb new file mode 100644 index 0000000..b0cdd98 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' 組件的一般資訊是由下列的屬性集控制。 +' 變更這些屬性的值即可修改組件的相關 +' 資訊。 + +' 檢閱組件屬性的值 + + + + + + + + + + +'下列 GUID 為專案公開 (Expose) 至 COM 時所要使用的 typelib ID + + +' 組件的版本資訊由下列四個值所組成: +' +' 主要版本 +' 次要版本 +' 組建編號 +' 修訂編號 +' +' 您可以指定所有的值,也可以依照以下的方式,使用 '*' 將組建和修訂編號 +' 指定為預設值: +' + + + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/BuildIncrementVersionInfo.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/BuildIncrementVersionInfo.vb new file mode 100644 index 0000000..d2f2e21 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/BuildIncrementVersionInfo.vb @@ -0,0 +1 @@ + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/Resources.Designer.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/Resources.Designer.vb new file mode 100644 index 0000000..af2b746 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/Resources.Designer.vb @@ -0,0 +1,63 @@ +'------------------------------------------------------------------------------ +' +' 此代码由工具生成。 +' 运行时版本:4.0.30319.42000 +' +' 对此文件的更改可能会导致不正确的行为,并且如果 +' 重新生成代码,这些更改将会丢失。 +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + +Imports System + +Namespace My.Resources + + '此类是由 StronglyTypedResourceBuilder + '类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + '若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + '(以 /str 作为命令选项),或重新生成 VS 项目。 + ''' + ''' 一个强类型的资源类,用于查找本地化的字符串等。 + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' 返回此类使用的缓存的 ResourceManager 实例。 + ''' + _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("ET_Subcontractor_21670_1.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' 重写当前线程的 CurrentUICulture 属性,对 + ''' 使用此强类型资源类的所有资源查找执行重写。 + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set + resourceCulture = value + End Set + End Property + End Module +End Namespace diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/Resources.resx b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/Settings.Designer.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/Settings.Designer.vb new file mode 100644 index 0000000..1c9fffa --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' 此代码由工具生成。 +' 运行时版本:4.0.30319.42000 +' +' 对此文件的更改可能会导致不正确的行为,并且如果 +' 重新生成代码,这些更改将会丢失。 +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + _ + Partial Friend NotInheritable Class MySettings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) + +#Region "My.Settings 自动保存功能" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + _ + Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub +#End If +#End Region + + Public Shared ReadOnly Property [Default]() As MySettings + Get + +#If _MyType = "WindowsForms" Then + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If +#End If + Return defaultInstance + End Get + End Property + End Class +End Namespace + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.ET_Subcontractor_21670_1.My.MySettings + Get + Return Global.ET_Subcontractor_21670_1.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/Settings.settings b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/Settings.settings new file mode 100644 index 0000000..85b890b --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/licenses.licx b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/licenses.licx new file mode 100644 index 0000000..e3f40e2 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/My Project/licenses.licx @@ -0,0 +1,7 @@ +Infragistics.Win.Misc.UltraButton, Infragistics4.Win.Misc.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.UltraWinEditors.UltraRadioButton, Infragistics4.Win.UltraWinEditors.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.UltraWinEditors.UltraComboEditor, Infragistics4.Win.UltraWinEditors.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.Misc.UltraGroupBox, Infragistics4.Win.Misc.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.UltraWinEditors.UltraTextEditor, Infragistics4.Win.UltraWinEditors.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.Misc.UltraLabel, Infragistics4.Win.Misc.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb +Infragistics.Win.Misc.UltraPanel, Infragistics4.Win.Misc.v19.1, Version=19.1.20191.294, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/frmSubcontractor.resx b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/frmSubcontractor.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/frmSubcontractor.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/frmSubcontractor.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/frmSubcontractor.vb new file mode 100644 index 0000000..9978384 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/frmSubcontractor.vb @@ -0,0 +1,1137 @@ +Imports iMESExceptionManager + +Imports Infragistics.Win +Imports Infragistics.Win.UltraWinGrid +Public Class frmSubcontractor + + Inherits COM_Kit.frmBasisTemplat + + Public PrivFunNo As String = defString + + '//WS相關變數 + ' 2016 YF, Dim wsENT As New wsENT.wsENT '宣告Web Service物件? + Dim tmpStringReader As System.IO.StringReader '將字串轉換成可讀入DataSet的物件 + Dim XmlData As String '儲存取回之資料 + Dim XmlSchema As String '儲存取回之資料結構 + Dim InXml As String '儲存呼叫Web Service的傳入參數(Request字串) + Dim OutXml As String '儲存Web Service的傳回值(Response字串) + Dim strIdentity As String '儲存Identity XML字串? + Dim strParameter As String '儲存Parameter XML字串 + + '//資料表相關變數 + + Dim dsENT As New DataSet '資料集:儲存取回之資料? + + Dim tblENTSubcontractor21670 As String '儲存取回資料表的名稱(master)? + Dim tblENTSubcontractorCont21670 As String '明細資料表名稱(detail) + Dim strFilter As String 'Filter string及列印的過濾條件 + + '//其他共用變數 + Dim SubcontractorNo As String 'for Gird to Focus + Dim ContactorName As String 'for DetailGrid to Focus + Dim ugrRow As Infragistics.Win.UltraWinGrid.UltraGridRow + Friend WithEvents btnAdd As Misc.UltraButton + Friend WithEvents btnEdit As Misc.UltraButton + Friend WithEvents btnDel As Misc.UltraButton + Friend WithEvents btnCopy As Misc.UltraButton + Friend WithEvents btnApprove As Misc.UltraButton + Friend WithEvents iugSubcontractor As iMESUltraGrid.iMESUltraGridControl + Dim i As Integer + +#Region " Windows Form Designer generated code " + + Public Sub New() + MyBase.New() + + 'This call is required by the Windows Form Designer. + InitializeComponent() + + 'Add any initialization after the InitializeComponent() call + + End Sub + + 'Form overrides dispose to clean up the component list. + Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing Then + If Not (components Is Nothing) Then + components.Dispose() + End If + End If + MyBase.Dispose(disposing) + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.Container + Friend WithEvents iugDetail As iMESUltraGrid.iMESUltraGridControl + Friend WithEvents btnClose As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnEMail As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDCopy As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDDel As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDEdit As Infragistics.Win.Misc.UltraButton + Friend WithEvents btnDAdd As Infragistics.Win.Misc.UltraButton + Private Sub InitializeComponent() + Me.btnClose = New Infragistics.Win.Misc.UltraButton() + Me.btnEMail = New Infragistics.Win.Misc.UltraButton() + Me.btnDCopy = New Infragistics.Win.Misc.UltraButton() + Me.btnDDel = New Infragistics.Win.Misc.UltraButton() + Me.btnDEdit = New Infragistics.Win.Misc.UltraButton() + Me.btnDAdd = New Infragistics.Win.Misc.UltraButton() + Me.iugDetail = New iMESUltraGrid.iMESUltraGridControl() + Me.btnAdd = New Infragistics.Win.Misc.UltraButton() + Me.btnEdit = New Infragistics.Win.Misc.UltraButton() + Me.btnDel = New Infragistics.Win.Misc.UltraButton() + Me.btnCopy = New Infragistics.Win.Misc.UltraButton() + Me.btnApprove = New Infragistics.Win.Misc.UltraButton() + Me.iugSubcontractor = New iMESUltraGrid.iMESUltraGridControl() + Me.SuspendLayout() + ' + 'btnClose + ' + Me.btnClose.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnClose.Location = New System.Drawing.Point(912, 552) + Me.btnClose.Name = "btnClose" + Me.btnClose.Size = New System.Drawing.Size(88, 32) + Me.btnClose.TabIndex = 18 + Me.btnClose.Text = "Close (&X)" + ' + 'btnEMail + ' + Me.btnEMail.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnEMail.Location = New System.Drawing.Point(912, 429) + Me.btnEMail.Name = "btnEMail" + Me.btnEMail.Size = New System.Drawing.Size(88, 32) + Me.btnEMail.TabIndex = 17 + Me.btnEMail.Text = "Mail" + ' + 'btnDCopy + ' + Me.btnDCopy.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDCopy.Location = New System.Drawing.Point(912, 389) + Me.btnDCopy.Name = "btnDCopy" + Me.btnDCopy.Size = New System.Drawing.Size(88, 32) + Me.btnDCopy.TabIndex = 16 + Me.btnDCopy.Text = "Copy" + ' + 'btnDDel + ' + Me.btnDDel.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDDel.Location = New System.Drawing.Point(912, 349) + Me.btnDDel.Name = "btnDDel" + Me.btnDDel.Size = New System.Drawing.Size(88, 32) + Me.btnDDel.TabIndex = 15 + Me.btnDDel.Text = "DEL" + ' + 'btnDEdit + ' + Me.btnDEdit.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDEdit.Location = New System.Drawing.Point(912, 309) + Me.btnDEdit.Name = "btnDEdit" + Me.btnDEdit.Size = New System.Drawing.Size(88, 32) + Me.btnDEdit.TabIndex = 14 + Me.btnDEdit.Text = "EDIT" + ' + 'btnDAdd + ' + Me.btnDAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDAdd.Location = New System.Drawing.Point(912, 269) + Me.btnDAdd.Name = "btnDAdd" + Me.btnDAdd.Size = New System.Drawing.Size(88, 32) + Me.btnDAdd.TabIndex = 13 + Me.btnDAdd.Text = "ADD" + ' + 'iugDetail + ' + Me.iugDetail.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.iugDetail.EnterDirection = iMESUltraGrid.iMESUltraGridControl.EnterDirectionEnum.Down + Me.iugDetail.GroupBoxPromptText = "Drag a column header here to group by that column." + Me.iugDetail.GroupBoxTextForeColor = System.Drawing.Color.Red + Me.iugDetail.Identity = "IMes" + Me.iugDetail.IdentityForm = "" + Me.iugDetail.LayOutFilePath = "" + Me.iugDetail.Location = New System.Drawing.Point(12, 269) + Me.iugDetail.Name = "iugDetail" + Me.iugDetail.PrintFitWidthToPages = 0 + Me.iugDetail.PrintLandscape = True + Me.iugDetail.PrintPageFooter = "" + Me.iugDetail.PrintPageFooterHAlign = Infragistics.Win.HAlign.[Default] + Me.iugDetail.PrintPageFooterHeight = 20 + Me.iugDetail.PrintPageHeader = "" + Me.iugDetail.PrintPageHeaderHAlign = Infragistics.Win.HAlign.[Default] + Me.iugDetail.PrintPageHeaderHeight = 20 + Me.iugDetail.PrintZoom = 1.0R + Me.iugDetail.Size = New System.Drawing.Size(894, 314) + Me.iugDetail.TabIndex = 12 + Me.iugDetail.UserNo = "IMes" + ' + 'btnAdd + ' + Me.btnAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnAdd.Location = New System.Drawing.Point(912, 53) + Me.btnAdd.Name = "btnAdd" + Me.btnAdd.Size = New System.Drawing.Size(88, 32) + Me.btnAdd.TabIndex = 20 + Me.btnAdd.Text = "Add(&A)" + ' + 'btnEdit + ' + Me.btnEdit.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnEdit.Location = New System.Drawing.Point(912, 93) + Me.btnEdit.Name = "btnEdit" + Me.btnEdit.Size = New System.Drawing.Size(88, 32) + Me.btnEdit.TabIndex = 21 + Me.btnEdit.Text = "Edit(&E)" + ' + 'btnDel + ' + Me.btnDel.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnDel.Location = New System.Drawing.Point(912, 133) + Me.btnDel.Name = "btnDel" + Me.btnDel.Size = New System.Drawing.Size(88, 32) + Me.btnDel.TabIndex = 22 + Me.btnDel.Text = "Del(&D)" + ' + 'btnCopy + ' + Me.btnCopy.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnCopy.Location = New System.Drawing.Point(912, 173) + Me.btnCopy.Name = "btnCopy" + Me.btnCopy.Size = New System.Drawing.Size(88, 32) + Me.btnCopy.TabIndex = 23 + Me.btnCopy.Text = "Copy(&C)" + ' + 'btnApprove + ' + Me.btnApprove.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btnApprove.Location = New System.Drawing.Point(912, 213) + Me.btnApprove.Name = "btnApprove" + Me.btnApprove.Size = New System.Drawing.Size(88, 32) + Me.btnApprove.TabIndex = 24 + Me.btnApprove.Text = "Approve(&Y)" + ' + 'iugSubcontractor + ' + Me.iugSubcontractor.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.iugSubcontractor.EnterDirection = iMESUltraGrid.iMESUltraGridControl.EnterDirectionEnum.Down + Me.iugSubcontractor.GroupBoxPromptText = "Drag a column header here to group by that column." + Me.iugSubcontractor.GroupBoxTextForeColor = System.Drawing.Color.Red + Me.iugSubcontractor.Identity = "IMes" + Me.iugSubcontractor.IdentityForm = "" + Me.iugSubcontractor.LayOutFilePath = "" + Me.iugSubcontractor.Location = New System.Drawing.Point(12, 53) + Me.iugSubcontractor.Name = "iugSubcontractor" + Me.iugSubcontractor.PrintFitWidthToPages = 0 + Me.iugSubcontractor.PrintLandscape = True + Me.iugSubcontractor.PrintPageFooter = "" + Me.iugSubcontractor.PrintPageFooterHAlign = Infragistics.Win.HAlign.[Default] + Me.iugSubcontractor.PrintPageFooterHeight = 20 + Me.iugSubcontractor.PrintPageHeader = "" + Me.iugSubcontractor.PrintPageHeaderHAlign = Infragistics.Win.HAlign.[Default] + Me.iugSubcontractor.PrintPageHeaderHeight = 20 + Me.iugSubcontractor.PrintZoom = 1.0R + Me.iugSubcontractor.Size = New System.Drawing.Size(894, 192) + Me.iugSubcontractor.TabIndex = 25 + Me.iugSubcontractor.UserNo = "IMes" + ' + 'frmSubcontractor + ' + Me.ClientSize = New System.Drawing.Size(1008, 591) + Me.Controls.Add(Me.btnClose) + Me.Controls.Add(Me.btnApprove) + Me.Controls.Add(Me.btnEMail) + Me.Controls.Add(Me.btnDCopy) + Me.Controls.Add(Me.btnCopy) + Me.Controls.Add(Me.btnDDel) + Me.Controls.Add(Me.iugSubcontractor) + Me.Controls.Add(Me.btnDEdit) + Me.Controls.Add(Me.btnAdd) + Me.Controls.Add(Me.btnDAdd) + Me.Controls.Add(Me.btnDel) + Me.Controls.Add(Me.iugDetail) + Me.Controls.Add(Me.btnEdit) + Me.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Name = "frmSubcontractor" + Me.Text = "ENT Subcontractor & Contactor" + Me.WindowState = System.Windows.Forms.FormWindowState.Maximized + Me.Controls.SetChildIndex(Me.btnEdit, 0) + Me.Controls.SetChildIndex(Me.iugDetail, 0) + Me.Controls.SetChildIndex(Me.btnDel, 0) + Me.Controls.SetChildIndex(Me.btnDAdd, 0) + Me.Controls.SetChildIndex(Me.btnAdd, 0) + Me.Controls.SetChildIndex(Me.btnDEdit, 0) + Me.Controls.SetChildIndex(Me.iugSubcontractor, 0) + Me.Controls.SetChildIndex(Me.btnDDel, 0) + Me.Controls.SetChildIndex(Me.btnCopy, 0) + Me.Controls.SetChildIndex(Me.btnDCopy, 0) + Me.Controls.SetChildIndex(Me.btnEMail, 0) + Me.Controls.SetChildIndex(Me.btnApprove, 0) + Me.Controls.SetChildIndex(Me.btnClose, 0) + Me.ResumeLayout(False) + + End Sub + +#End Region + + Private Sub frmSubcontractor_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + + Cursor.Current = Cursors.WaitCursor + + ' 2016 YF, wsENT.Url = LocalizeWebService(wsENT.Url.ToString) + ' 2016 YF, wsENT.EnableDecompression = True + + Call funiMESUltraGridIni() 'Grid初始設定 + + '//取出資料 + Call funLoadSubcontractor() + + SetIssueState(Issue.Unfrozen) '預設在Unforzen上 + SetSearchFieldName(New String() {"SubcontractorNo", "SubcontractorNaME"}) '設置搜尋欄位 + + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + ExeGroupControlPriv(Me, PrivFunNo) + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub frmSubcontractor_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing + If Not dsENT Is Nothing Then dsENT.Dispose() + ' 2016 YF, If Not wsENT Is Nothing Then wsENT.Dispose() + End Sub + + Protected Overrides Sub rdoIssue_CheckedChanged(sender As Object, e As EventArgs) + If IsNothing(dsENT) Then Exit Sub + + Select Case GetIssueState() + Case Issue.Unfrozen + dsENT.Tables(tblENTSubcontractor21670).DefaultView.RowFilter = "IssueState=0" + Case Issue.Pending + dsENT.Tables(tblENTSubcontractor21670).DefaultView.RowFilter = "IssueState=1" + Case Issue.Active + dsENT.Tables(tblENTSubcontractor21670).DefaultView.RowFilter = "IssueState=2" + Case Issue.Unused + dsENT.Tables(tblENTSubcontractor21670).DefaultView.RowFilter = "IssueState=-1" + End Select + Me.iugSubcontractor.iMESUltraGrid.DataSource = dsENT.Tables(tblENTSubcontractor21670).DefaultView + Call funShowActiveDetail() + End Sub + + Protected Overrides Sub Finalize() + MyBase.Finalize() + End Sub + + Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click + + Dim fSubcontractorDef As New frmSubcontractorDef + + fSubcontractorDef.DefMode = 0 + fSubcontractorDef.ShowDialog(Me) + fSubcontractorDef.Dispose() + + If gReturnKeyValue = "" Then Exit Sub + + SubcontractorNo = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractor() + + If GetIssueState() = Issue.Unfrozen Then + ugrRow = FindRecordPosition(iugSubcontractor, "SubcontractorNo", SubcontractorNo) + If Not ugrRow Is Nothing Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow = ugrRow + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + End If + + End Sub + + Private Sub btnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEdit.Click + + + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + 'IsGroupByRow不做任何處理 + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then + Exit Sub + End If + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractor21670).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'") + + '核准狀態為"Unfrozen"者才可修改 + + If Rows(0).Item("IssueState") <> 0 Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-202202", "[%NOT ALLOWED TO EDIT%]"), MsgBoxStyle.Exclamation, Me.Text) + Exit Sub + End If + + Dim fSubcontractorDef As New frmSubcontractorDef + fSubcontractorDef.DefMode = 1 + fSubcontractorDef.EditDataRow = Rows(0) + fSubcontractorDef.ShowDialog(Me) + fSubcontractorDef.Dispose() + + If gReturnKeyValue = "" Then Exit Sub + + SubcontractorNo = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractor() + + If GetIssueState() = Issue.Unfrozen Then + ugrRow = FindRecordPosition(iugSubcontractor, "SubcontractorNo", SubcontractorNo) + If Not ugrRow Is Nothing Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow = ugrRow + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + End If + + End If + End Sub + + Private Sub btnDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDel.Click + + + + '1.先檢查是否為單筆,是:將其Selecte + If Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then Exit Sub + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Cursor.Current = Cursors.WaitCursor + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + + '2.Multi + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count > 0 Then + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Item(0).IsGroupByRow Then + Exit Sub 'Selected.Rows,不會包含GroupRow & 一般的Row在一起,故若是GroupRow不做任何處理 + End If + If iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-100001", "[%ARE YOU SURE TO DELETE ALL SELECTED RECORDS%]"), MsgBoxStyle.OkCancel + MsgBoxStyle.Question + MsgBoxStyle.DefaultButton2, Me.Text) = MsgBoxResult.Cancel Then + Exit Sub + End If + + '共用資料 + Dim XmlDoc As New XmlDocument + Dim blnReLoad As Boolean = False + Dim intIssueState As Integer + + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + For i = 0 To Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count - 1 + intIssueState = Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("IssueState").Value + If intIssueState = 0 Or intIssueState = -1 Or intIssueState = 2 Then '狀態為Unforzen或Unused時直接刪除 + + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", CInput(Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("SubcontractorNo").Value.ToString), "") + strParameter = strParameter & CombineXMLParameter("issuestate", "IssueState", "String", CInput(intIssueState), "") + strParameter = strParameter & CombineXMLParameter("datastamp", "DataStamp", "Integer", iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("DataStamp").Value, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + Try + ' 2016 YF, OutXml = wsENT.DelSubcontractor(InXml) + 'OutXml = InvokeSrv("wsENT.DelSubcontractor", InXml) + OutXml = InvokeSrv("SXS.wsENT.DelSubcontractor", InXml) + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + If Not blnReLoad Then blnReLoad = True + Else + '找出Exception訊並顯示出來 + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit For + End If + Catch ex As Exception + 'MsgBox("Unexpected Error. Delete failed," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + Exit For + End Try + Else + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200021", "[%NOT ALLOWED TO delete%]"), MsgBoxStyle.Exclamation, Me.Text) + End If + Next + + XmlDoc = Nothing + + If blnReLoad Then + + Call funLoadSubcontractor() + + Call funShowActiveDetail() + + End If + + End If + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub btnCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCopy.Click + + + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + 'IsGroupByRow不做任何處理 + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then + Exit Sub + End If + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractor21670).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'") + + Dim fSubcontractorDef As New frmSubcontractorDef + fSubcontractorDef.DefMode = 2 + fSubcontractorDef.EditDataRow = Rows(0) + fSubcontractorDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + SubcontractorNo = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractor() + + If GetIssueState() = Issue.Unfrozen Then + ugrRow = FindRecordPosition(iugSubcontractor, "SubcontractorNo", SubcontractorNo) + If Not ugrRow Is Nothing Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow = ugrRow + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + End If + + End If + End Sub + + Private Sub btnApprove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnApprove.Click + + + + '1.先檢查是否為單筆,是:將其Selecte + If Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then Exit Sub + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Cursor.Current = Cursors.WaitCursor + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected Then + Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Selected = True + End If + + '2.Multi + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count > 0 Then + If Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Item(0).IsGroupByRow Then + Exit Sub 'Selected.Rows,不會包含GroupRow & 一般的Row在一起,故若是GroupRow不做任何處理 + End If + If iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-100002", "[%ARE YOU SURE TO APPROVE ALL SELECTED RECORDS%]"), MsgBoxStyle.OkCancel + MsgBoxStyle.Question + MsgBoxStyle.DefaultButton2, Me.Text) = MsgBoxResult.Cancel Then + Exit Sub + End If + + '共用資料 + Dim XmlDoc As New XmlDocument + Dim blnReLoad As Boolean = False + Dim intIssueState As Integer + + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + For i = 0 To Me.iugSubcontractor.iMESUltraGrid.Selected.Rows.Count - 1 + intIssueState = Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("IssueState").Value + If intIssueState = 0 Then + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", CInput(Me.iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("SubcontractorNo").Value.ToString), "") + strParameter += CombineXMLParameter("issuestate", "IssueState", "String", intIssueState, "") + strParameter += CombineXMLParameter("creator", "Creator", "String", gUserNo, "") + strParameter = strParameter & CombineXMLParameter("datastamp", "DataStamp", "Integer", iugSubcontractor.iMESUltraGrid.Selected.Rows(i).Cells("DataStamp").Value, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + Try + ' 2016 YF, OutXml = wsENT.ApproveSubcontractor(InXml) + 'OutXml = InvokeSrv("wsENT.ApproveSubcontractor", InXml) + OutXml = InvokeSrv("SXS.wsENT.ApproveSubcontractor", InXml) + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + If Not blnReLoad Then blnReLoad = True + Else + '找出Exception訊並顯示出來 + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit For + End If + Catch ex As Exception + 'MsgBox("Unexpected Error. Approve failed," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + Exit For + End Try + Else + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200021", "[%NOT ALLOW TO APPROVE%]"), MsgBoxStyle.Exclamation, Me.Text) + End If + Next + + XmlDoc = Nothing + + If blnReLoad Then + + Call funLoadSubcontractor() + + Call funShowActiveDetail() + + End If + + End If + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub btnDAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDAdd.Click + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + + 'Dim Rows As DataRow() + Dim fSubcontractorContDef As New frmSubcontractorContDef + + fSubcontractorContDef.DefMode = 0 + fSubcontractorContDef.SubcontractorNo = Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString + fSubcontractorContDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + ContactorName = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + ugrRow = FindRecordPosition(iugDetail, "ContactorName", ContactorName) + If Not ugrRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.ActiveRow = ugrRow + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + + End If + End Sub + + Private Sub btnDEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDEdit.Click + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing And Not Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow OrElse iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractorCont21670).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'" _ + & " And ContactorName = '" & Replace(Me.iugDetail.iMESUltraGrid.ActiveRow.Cells("ContactorName").Value.ToString, "'", "''") & "'") + + Dim fSubcontractorContDef As New frmSubcontractorContDef + fSubcontractorContDef.DefMode = 1 + fSubcontractorContDef.EditDataRow = Rows(0) + fSubcontractorContDef.SubcontractorNo = Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString + fSubcontractorContDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + ContactorName = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + ugrRow = FindRecordPosition(iugDetail, "ContactorName", ContactorName) + If Not ugrRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.ActiveRow = ugrRow + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + Else + + Exit Sub + End If + + End Sub + + Private Sub btnDDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDDel.Click + + + '1.先檢查是否為單筆,是:將其Selecte + If Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then Exit Sub + If iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + + Cursor.Current = Cursors.WaitCursor + + If Not Me.iugDetail.iMESUltraGrid.ActiveRow.Selected Then + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + + '2.Multi + If Me.iugDetail.iMESUltraGrid.Selected.Rows.Count > 0 Then + If Me.iugDetail.iMESUltraGrid.Selected.Rows.Item(0).IsGroupByRow Then + Exit Sub 'Selected.Rows,不會包含GroupRow & 一般的Row在一起,故若是GroupRow不做任何處理 + End If + If iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-100001", "[%ARE YOU SURE TO DELETE ALL SELECTED RECORDS%]"), MsgBoxStyle.OkCancel + MsgBoxStyle.Question + MsgBoxStyle.DefaultButton2, Me.Text) = MsgBoxResult.Cancel Then + Exit Sub + End If + + '共用資料 + Dim XmlDoc As New XmlDocument + Dim blnReLoad As Boolean = False + Dim intIssueState As Integer + + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + For i = 0 To Me.iugDetail.iMESUltraGrid.Selected.Rows.Count - 1 + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", CInput(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString), "") + strParameter = strParameter & CombineXMLParameter("ContactorName", "ContactorName", "String", CInput(Me.iugDetail.iMESUltraGrid.Selected.Rows(i).Cells("ContactorName").Value.ToString), "") + InXml = CombineXMLRequest(strIdentity, strParameter) + Try + ' 2016 YF, OutXml = wsENT.DelSubcontractorCont(InXml) + 'OutXml = InvokeSrv("wsENT.DelSubcontractorCont", InXml) + OutXml = InvokeSrv("SXS.wsENT.DelSubcontractorCont", InXml) + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + If Not blnReLoad Then blnReLoad = True + Else + '找出Exception訊並顯示出來 + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit For + End If + Catch ex As Exception + 'MsgBox("Unexpected Error. Delete failed," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + Exit For + End Try + + Next + + XmlDoc = Nothing + + If blnReLoad Then Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + End If + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub btnDCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDCopy.Click + + If Not Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing And Not Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then + If iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow OrElse iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Dim Rows As DataRow() + + '找出DataSet中在目前游標列的資料列(DataRow) + Rows = dsENT.Tables(tblENTSubcontractorCont21670).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'" _ + & " And ContactorName = '" & Replace(Me.iugDetail.iMESUltraGrid.ActiveRow.Cells("ContactorName").Value.ToString, "'", "''") & "'") + + Dim fSubcontractorContDef As New frmSubcontractorContDef + fSubcontractorContDef.DefMode = 2 + fSubcontractorContDef.EditDataRow = Rows(0) + fSubcontractorContDef.SubcontractorNo = Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString + fSubcontractorContDef.ShowDialog(Me) + + If gReturnKeyValue = "" Then Exit Sub + + ContactorName = gReturnKeyValue + + '重新取出資料 + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + + ugrRow = FindRecordPosition(iugDetail, "ContactorName", ContactorName) + If Not ugrRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.ActiveRow = ugrRow + Me.iugDetail.iMESUltraGrid.ActiveRow.Selected = True + End If + Else + + Exit Sub + End If + + End Sub + + Private Sub btnEMail_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEMail.Click + + If Not Me.iugDetail.iMESUltraGrid.ActiveRow Is Nothing Then + If iugDetail.iMESUltraGrid.ActiveRow.IsGroupByRow Then Exit Sub + Dim Rows As DataRow() + Dim proMail As New System.Diagnostics.Process + Dim strAccount As String + + Rows = dsENT.Tables(tblENTSubcontractorCont21670).Select("SubcontractorNo = '" _ + & Replace(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString, "'", "''") & "'" _ + & " And ContactorName = '" & Replace(Me.iugDetail.iMESUltraGrid.ActiveRow.Cells("ContactorName").Value.ToString, "'", "''") & "'") + + strAccount = "mailto:" & Rows(0).Item("EMail").ToString + proMail.Start(strAccount) + + End If + + End Sub + + Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click + Me.Close() + End Sub + + Protected Overrides Sub btnQuery_Click(sender As Object, e As EventArgs) + Cursor.Current = Cursors.WaitCursor + + funLoadSubcontractor() + + Cursor.Current = Cursors.Default + End Sub + +#Region "Ultra Grid" + + Private Sub iugSubcontractor_iMESUltraGrid_InitializeLayOut(ByVal sender As System.Object, ByVal e As Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs) Handles iugSubcontractor.iMESUltraGrid_InitializeLayOut + + With e.Layout + With .Bands(0).Columns("SubcontractorNo") + .Header.Caption = "SubcontractorNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 0 + End With + With .Bands(0).Columns("SubcontractorName") + .Header.Caption = "SubcontractorName" + .Width = 110 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 1 + End With + With .Bands(0).Columns("Description") + .Header.Caption = "Description" + .Width = 110 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 2 + End With + With .Bands(0).Columns("Creator") + .Header.Caption = "Creator" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 3 + End With + With .Bands(0).Columns("CreateDate") + .Header.Caption = "CreateDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 4 + End With + With .Bands(0).Columns("IssueState") + .Header.Caption = "IssueState" + .Width = 114 + .Hidden = True + .Header.VisiblePosition = 5 + End With + With .Bands(0).Columns("Reviser") + .Header.Caption = "Reviser" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 6 + End With + With .Bands(0).Columns("ReviseDate") + .Header.Caption = "ReviseDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 7 + End With + With e.Layout.Bands(0).Columns("DataStamp") + .Hidden = True + End With + End With + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + End Sub + + Private Sub iugSubcontractor_iMESUltraGrid_AfterRowActivate(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles iugSubcontractor.iMESUltraGrid_AfterRowActivate + + 'IsGroupByRow不做任何處理 + If Not iugSubcontractor.iMESUltraGrid.ActiveRow.IsGroupByRow Then + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + Else + Exit Sub + End If + + End Sub + + Private Sub iugDetail_iMESUltraGrid_InitializeLayOut(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs) Handles iugDetail.iMESUltraGrid_InitializeLayOut + + With e.Layout + With .Bands(0).Columns("SubcontractorNo") + .Header.Caption = "SubcontractorNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 0 + End With + With .Bands(0).Columns("ContactorName") + .Header.Caption = "ContactorName" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 1 + End With + With .Bands(0).Columns("TelNo") + .Header.Caption = "TelNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 2 + End With + With .Bands(0).Columns("FaxNo") + .Header.Caption = "FaxNo" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 3 + End With + With .Bands(0).Columns("Title") + .Header.Caption = "Title" + .Width = 110 + .Hidden = False + .Header.VisiblePosition = 4 + End With + With .Bands(0).Columns("Address") + .Header.Caption = "Address" + .Width = 110 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 5 + End With + With .Bands(0).Columns("EMail") + .Header.Caption = "EMail" + .Width = 150 + .Hidden = False + .CellAppearance.ForeColor = System.Drawing.Color.Blue + .CellAppearance.FontData.Underline = DefaultableBoolean.True + .Header.VisiblePosition = 6 + End With + With .Bands(0).Columns("Description") + .Header.Caption = "Description" + .Width = 200 + .Hidden = False + .CellMultiLine = DefaultableBoolean.True + .Header.VisiblePosition = 7 + End With + With .Bands(0).Columns("Creator") + .Header.Caption = "Creator" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 8 + End With + With .Bands(0).Columns("CreateDate") + .Header.Caption = "CreateDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 9 + End With + With .Bands(0).Columns("Reviser") + .Header.Caption = "Reviser" + .Width = 80 + .Hidden = False + .Header.VisiblePosition = 10 + End With + With .Bands(0).Columns("ReviseDate") + .Header.Caption = "ReviseDate" + .Width = 150 + .Format = "yyyy/MM/dd HH:mm:ss" + .Hidden = False + .Header.VisiblePosition = 11 + End With + With e.Layout.Bands(0).Columns("DataStamp") + .Hidden = True + End With + End With + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + End Sub + +#End Region + +#Region "Load Function" + + '//取出tblENTSubcontractor21670 外包商資料 + + Private Sub funLoadSubcontractor() + + '先判斷是否dataset中已有ENTSubcontractor之datatable,若有,需先remove否則會有錯誤 + If Not IsNothing(dsENT.Tables(tblENTSubcontractor21670)) Then + dsENT.Tables.Remove(tblENTSubcontractor21670) + End If + + '組InXml的字串 + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + '加上IssueState要求取出所有資料 + strParameter = CombineXMLParameter("issuestate", "IssueState", "Integer", defInteger, "") + '加上查詢條件 cboSearchFieldName,txtSearchFieldValue + strParameter += CombineXMLQueryCondition() + InXml = CombineXMLRequest(strIdentity, strParameter) + + Try + ' 2016 YF, OutXml = wsENT.LoadSubcontractor(InXml) + 'OutXml = InvokeSrv("wsENT.LoadSubcontractor", InXml) + OutXml = InvokeSrv("SXS.wsENT.LoadSubcontractor", InXml) + + Dim XmlDoc As New XmlDocument '處理Xml字串之物件? + + '利用XmlDoc物件處理ReturnValue + XmlDoc.LoadXml(OutXml) + + If ChkExecutionSuccess(XmlDoc) Then + '讀取取出資料表之名稱 + + tblENTSubcontractor21670 = XmlDoc.GetElementsByTagName("returnvalue").Item(0).SelectNodes("loadSubcontractor").Item(0).SelectNodes("name").Item(0).InnerXml + '取出Schema,dataset讀取Schema可防止Null Field及DateTime的問題 + + XmlSchema = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractor").Item(0).SelectNodes("schema").Item(0).InnerXml + If XmlSchema <> "" Then + '將XML讀入String Reader object中,因為Dataset讀入XML時必須透過String Reader物件 + tmpStringReader = New System.IO.StringReader(XmlSchema) + dsENT.ReadXmlSchema(tmpStringReader) + tmpStringReader.Close() + End If + + '取出Data + XmlData = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractor").Item(0).SelectNodes("value").Item(0).InnerXml + If XmlData <> "" Then + tmpStringReader = New System.IO.StringReader(XmlData) + dsENT.ReadXml(tmpStringReader, XmlReadMode.InferSchema) + tmpStringReader.Close() + End If + + strFilter = "" + Select Case GetIssueState() + Case Issue.Unfrozen + strFilter = FilterByInteger(strFilter, "IssueState", 0) + Case Issue.Pending + strFilter = FilterByInteger(strFilter, "IssueState", 1) + Case Issue.Active + strFilter = FilterByInteger(strFilter, "IssueState", 2) + Case Issue.Unused + strFilter = FilterByInteger(strFilter, "IssueState", -1) + End Select + + dsENT.Tables(tblENTSubcontractor21670).DefaultView.RowFilter = strFilter + dsENT.Tables(tblENTSubcontractor21670).DefaultView.Sort = "SubcontractorNo" + + Me.iugSubcontractor.iMESUltraGrid.DataSource = dsENT.Tables(tblENTSubcontractor21670).DefaultView + + Else + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + Exit Sub + End If + + XmlDoc = Nothing + + Catch ex As Exception + 'MsgBox("Unexpected Error. Load ENT Subcontractor Failed!!," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + End Try + + End Sub + + '//取出tblENTSubcontractorCont21670聯絡人資料 + + Private Sub funLoadSubcontractorCont(ByRef SubcontractorNo As String) + + If Not IsNothing(dsENT.Tables(tblENTSubcontractorCont21670)) Then + dsENT.Tables.Remove(tblENTSubcontractorCont21670) + End If + + '組InXml的字串 + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + strParameter = CombineXMLParameter("SubcontractorNo", "SubcontractorNo", "String", SubcontractorNo, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + + Try + ' 2016 YF, OutXml = wsENT.LoadSubcontractorCont(InXml) + 'OutXml = InvokeSrv("wsENT.LoadSubcontractorCont", InXml) + OutXml = InvokeSrv("SXS.wsENT.LoadSubcontractorCont", InXml) + + Dim XmlDoc As New XmlDocument '處理Xml字串之物件? + + '利用XmlDoc物件處理ReturnValue + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + '讀取取出資料表之名稱 + + tblENTSubcontractorCont21670 = XmlDoc.GetElementsByTagName("returnvalue").Item(0).SelectNodes("loadSubcontractorcont").Item(0).SelectNodes("name").Item(0).InnerXml + '取出Schema,dataset讀取Schema可防止Null Field及DateTime的問題 + XmlSchema = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractorcont").Item(0).SelectNodes("schema").Item(0).InnerXml + If XmlSchema <> "" Then + '將XML讀入String Reader object中,因為Dataset讀入XML時必須透過String Reader物件 + tmpStringReader = New System.IO.StringReader(XmlSchema) + dsENT.ReadXmlSchema(tmpStringReader) + tmpStringReader.Close() + End If + + '取出Data + XmlData = XmlDoc.DocumentElement.GetElementsByTagName("loadSubcontractorcont").Item(0).SelectNodes("value").Item(0).InnerXml + If XmlData <> "" Then + tmpStringReader = New System.IO.StringReader(XmlData) + dsENT.ReadXml(tmpStringReader, XmlReadMode.InferSchema) + tmpStringReader.Close() + End If + + Me.iugDetail.iMESUltraGrid.DataSource = dsENT.Tables(tblENTSubcontractorCont21670).DefaultView + + Else + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + End If + + XmlDoc = Nothing + + Catch ex As Exception + 'MsgBox("Unexpected Error. Load ENT Subcontractor Cont Failed!!," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + End Try + + End Sub + + Private Sub funShowActiveDetail() + + If Me.iugSubcontractor.iMESUltraGrid.ActiveRow Is Nothing Then + Me.iugDetail.iMESUltraGrid.DataSource = Nothing + Else + Call funLoadSubcontractorCont(Me.iugSubcontractor.iMESUltraGrid.ActiveRow.Cells("SubcontractorNo").Value.ToString) + End If + + End Sub + + Private Sub funiMESUltraGridIni() + + 'iugSubcontractor 初始設定 + With Me.iugSubcontractor.iMESUltraGrid + .Text = "" + .DisplayLayout.GroupByBox.Hidden = True + .DisplayLayout.UseFixedHeaders = False + End With + + '系統會以UserNo做為Layout的檔名 + + iugSubcontractor.UserNo = gUserNo + + 'iugDetail 初始設定 + With Me.iugDetail.iMESUltraGrid.DisplayLayout + .GroupByBox.Hidden = True + .Override.ExpansionIndicator = ShowExpansionIndicator.Default + .ViewStyle = ViewStyle.SingleBand + .RowConnectorStyle = RowConnectorStyle.Default + + End With + + '系統會以UserNo做為Layout的檔名 + + iugDetail.UserNo = gUserNo + + End Sub + + Private Sub iugDetail_Load(sender As Object, e As EventArgs) Handles iugDetail.Load + + End Sub + + Private Sub iugSubcontractor_Load(sender As Object, e As EventArgs) Handles iugSubcontractor.Load + + End Sub + + +#End Region + +End Class + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/frmSubcontractorContDef.resx b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/frmSubcontractorContDef.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/frmSubcontractorContDef.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/frmSubcontractorContDef.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/frmSubcontractorContDef.vb new file mode 100644 index 0000000..1910010 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/frmSubcontractorContDef.vb @@ -0,0 +1,660 @@ +Imports iMESExceptionManager + +Public Class frmSubcontractorContDef21670 + + Inherits COM_Kit.frmDefTemplat + + '//Public Variables + Public EditDataRow As DataRow + Public DefMode As Integer = 0 '0. ADD, 1.Edit, 2. Copy + + Public SubcontractorNo As String = defString + Public PrivFunNo As String = defString + + '//Web Service相關變數 + ' 2016 YF, Dim wsENT As New wsENT.wsENT + Dim InXml As String + Dim OutXml As String + + Dim strIdentity As String + Dim strParameter As String + Dim intDataStamp As Integer '紀錄DataStamp + +#Region " Windows Form Designer generated code " + + Public Sub New() + MyBase.New() + + 'This call is required by the Windows Form Designer. + InitializeComponent() + + 'Add any initialization after the InitializeComponent() call + + End Sub + + 'Form overrides dispose to clean up the component list. + Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing Then + If Not (components Is Nothing) Then + components.Dispose() + End If + End If + MyBase.Dispose(disposing) + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + Friend WithEvents txtDescription As System.Windows.Forms.RichTextBox + Friend WithEvents lblAddress As System.Windows.Forms.Label + Friend WithEvents lblEMail As System.Windows.Forms.Label + Friend WithEvents lblTitle As System.Windows.Forms.Label + Friend WithEvents lblFaxNo As System.Windows.Forms.Label + Friend WithEvents lblTelNo As System.Windows.Forms.Label + Friend WithEvents lblDescription As System.Windows.Forms.Label + Friend WithEvents lblContactorName As System.Windows.Forms.Label + Friend WithEvents lblSubcontractorNo As System.Windows.Forms.Label + Friend WithEvents gbxSubcontractorContData As System.Windows.Forms.GroupBox + Friend WithEvents txtSubcontractorNo As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtContactorName As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtFaxNo As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtTelNo As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtEMail As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtTitle As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtAddress As Infragistics.Win.UltraWinEditors.UltraTextEditor + Private Sub InitializeComponent() + Dim Appearance1 As Infragistics.Win.Appearance = New Infragistics.Win.Appearance() + Me.gbxSubcontractorContData = New System.Windows.Forms.GroupBox() + Me.txtAddress = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtEMail = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtTitle = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtFaxNo = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.lblAddress = New System.Windows.Forms.Label() + Me.lblEMail = New System.Windows.Forms.Label() + Me.lblTitle = New System.Windows.Forms.Label() + Me.lblFaxNo = New System.Windows.Forms.Label() + Me.lblTelNo = New System.Windows.Forms.Label() + Me.txtDescription = New System.Windows.Forms.RichTextBox() + Me.lblDescription = New System.Windows.Forms.Label() + Me.lblSubcontractorNo = New System.Windows.Forms.Label() + Me.lblContactorName = New System.Windows.Forms.Label() + Me.txtSubcontractorNo = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtContactorName = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtTelNo = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + CType(Me.gbxBasisData, System.ComponentModel.ISupportInitialize).BeginInit() + Me.gbxSubcontractorContData.SuspendLayout() + CType(Me.txtAddress, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtEMail, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtTitle, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtFaxNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtSubcontractorNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtContactorName, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtTelNo, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SuspendLayout() + ' + 'gbxBasisData + ' + Me.gbxBasisData.Location = New System.Drawing.Point(12, 322) + Me.gbxBasisData.Size = New System.Drawing.Size(472, 70) + ' + 'btnApply + ' + Me.btnApply.Location = New System.Drawing.Point(396, 401) + ' + 'btnConfirm + ' + Me.btnConfirm.Location = New System.Drawing.Point(208, 401) + ' + 'btnClose + ' + Me.btnClose.Location = New System.Drawing.Point(302, 401) + ' + 'gbxSubcontractorContData + ' + Me.gbxSubcontractorContData.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.gbxSubcontractorContData.Controls.Add(Me.txtAddress) + Me.gbxSubcontractorContData.Controls.Add(Me.txtEMail) + Me.gbxSubcontractorContData.Controls.Add(Me.txtTitle) + Me.gbxSubcontractorContData.Controls.Add(Me.txtFaxNo) + Me.gbxSubcontractorContData.Controls.Add(Me.lblAddress) + Me.gbxSubcontractorContData.Controls.Add(Me.lblEMail) + Me.gbxSubcontractorContData.Controls.Add(Me.lblTitle) + Me.gbxSubcontractorContData.Controls.Add(Me.lblFaxNo) + Me.gbxSubcontractorContData.Controls.Add(Me.lblTelNo) + Me.gbxSubcontractorContData.Controls.Add(Me.txtDescription) + Me.gbxSubcontractorContData.Controls.Add(Me.lblDescription) + Me.gbxSubcontractorContData.Controls.Add(Me.lblSubcontractorNo) + Me.gbxSubcontractorContData.Controls.Add(Me.lblContactorName) + Me.gbxSubcontractorContData.Controls.Add(Me.txtSubcontractorNo) + Me.gbxSubcontractorContData.Controls.Add(Me.txtContactorName) + Me.gbxSubcontractorContData.Controls.Add(Me.txtTelNo) + Me.gbxSubcontractorContData.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.gbxSubcontractorContData.Location = New System.Drawing.Point(15, 8) + Me.gbxSubcontractorContData.Name = "gbxSubcontractorContData" + Me.gbxSubcontractorContData.Size = New System.Drawing.Size(469, 306) + Me.gbxSubcontractorContData.TabIndex = 0 + Me.gbxSubcontractorContData.TabStop = False + Me.gbxSubcontractorContData.Text = "ENT Subcontractor Contactor Data" + ' + 'txtAddress + ' + Me.txtAddress.Location = New System.Drawing.Point(120, 152) + Me.txtAddress.Name = "txtAddress" + Me.txtAddress.Size = New System.Drawing.Size(336, 26) + Me.txtAddress.TabIndex = 13 + ' + 'txtEMail + ' + Me.txtEMail.Location = New System.Drawing.Point(320, 120) + Me.txtEMail.Name = "txtEMail" + Me.txtEMail.Size = New System.Drawing.Size(136, 26) + Me.txtEMail.TabIndex = 11 + ' + 'txtTitle + ' + Me.txtTitle.Location = New System.Drawing.Point(120, 120) + Me.txtTitle.Name = "txtTitle" + Me.txtTitle.Size = New System.Drawing.Size(114, 26) + Me.txtTitle.TabIndex = 9 + ' + 'txtFaxNo + ' + Me.txtFaxNo.Location = New System.Drawing.Point(320, 88) + Me.txtFaxNo.Name = "txtFaxNo" + Me.txtFaxNo.Size = New System.Drawing.Size(136, 26) + Me.txtFaxNo.TabIndex = 7 + ' + 'lblAddress + ' + Me.lblAddress.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblAddress.Location = New System.Drawing.Point(24, 154) + Me.lblAddress.Name = "lblAddress" + Me.lblAddress.Size = New System.Drawing.Size(86, 14) + Me.lblAddress.TabIndex = 12 + Me.lblAddress.Text = "Address" + Me.lblAddress.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblEMail + ' + Me.lblEMail.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblEMail.Location = New System.Drawing.Point(248, 123) + Me.lblEMail.Name = "lblEMail" + Me.lblEMail.Size = New System.Drawing.Size(64, 14) + Me.lblEMail.TabIndex = 10 + Me.lblEMail.Text = "EMail" + Me.lblEMail.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblTitle + ' + Me.lblTitle.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblTitle.Location = New System.Drawing.Point(24, 121) + Me.lblTitle.Name = "lblTitle" + Me.lblTitle.Size = New System.Drawing.Size(86, 14) + Me.lblTitle.TabIndex = 8 + Me.lblTitle.Text = "Title" + Me.lblTitle.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblFaxNo + ' + Me.lblFaxNo.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblFaxNo.Location = New System.Drawing.Point(248, 90) + Me.lblFaxNo.Name = "lblFaxNo" + Me.lblFaxNo.Size = New System.Drawing.Size(64, 14) + Me.lblFaxNo.TabIndex = 6 + Me.lblFaxNo.Text = "FaxNo" + Me.lblFaxNo.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblTelNo + ' + Me.lblTelNo.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblTelNo.Location = New System.Drawing.Point(24, 90) + Me.lblTelNo.Name = "lblTelNo" + Me.lblTelNo.Size = New System.Drawing.Size(86, 14) + Me.lblTelNo.TabIndex = 4 + Me.lblTelNo.Text = "TelNo" + Me.lblTelNo.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'txtDescription + ' + Me.txtDescription.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.txtDescription.Location = New System.Drawing.Point(120, 184) + Me.txtDescription.Name = "txtDescription" + Me.txtDescription.Size = New System.Drawing.Size(336, 108) + Me.txtDescription.TabIndex = 15 + Me.txtDescription.Text = "" + ' + 'lblDescription + ' + Me.lblDescription.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblDescription.Location = New System.Drawing.Point(24, 186) + Me.lblDescription.Name = "lblDescription" + Me.lblDescription.Size = New System.Drawing.Size(86, 14) + Me.lblDescription.TabIndex = 14 + Me.lblDescription.Text = "Description" + Me.lblDescription.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblSubcontractorNo + ' + Me.lblSubcontractorNo.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblSubcontractorNo.Location = New System.Drawing.Point(14, 29) + Me.lblSubcontractorNo.Name = "lblSubcontractorNo" + Me.lblSubcontractorNo.Size = New System.Drawing.Size(96, 14) + Me.lblSubcontractorNo.TabIndex = 0 + Me.lblSubcontractorNo.Text = "Subcontractor No" + Me.lblSubcontractorNo.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblContactorName + ' + Me.lblContactorName.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblContactorName.Location = New System.Drawing.Point(24, 59) + Me.lblContactorName.Name = "lblContactorName" + Me.lblContactorName.Size = New System.Drawing.Size(86, 14) + Me.lblContactorName.TabIndex = 2 + Me.lblContactorName.Text = "Contactor Name" + Me.lblContactorName.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'txtSubcontractorNo + ' + Me.txtSubcontractorNo.Location = New System.Drawing.Point(120, 24) + Me.txtSubcontractorNo.Name = "txtSubcontractorNo" + Me.txtSubcontractorNo.ReadOnly = True + Me.txtSubcontractorNo.Size = New System.Drawing.Size(114, 26) + Me.txtSubcontractorNo.TabIndex = 1 + Me.txtSubcontractorNo.TabStop = False + ' + 'txtContactorName + ' + Appearance1.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtContactorName.Appearance = Appearance1 + Me.txtContactorName.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtContactorName.Location = New System.Drawing.Point(120, 56) + Me.txtContactorName.Name = "txtContactorName" + Me.txtContactorName.Size = New System.Drawing.Size(160, 26) + Me.txtContactorName.TabIndex = 3 + ' + 'txtTelNo + ' + Me.txtTelNo.Location = New System.Drawing.Point(120, 88) + Me.txtTelNo.Name = "txtTelNo" + Me.txtTelNo.Size = New System.Drawing.Size(114, 26) + Me.txtTelNo.TabIndex = 5 + ' + 'frmSubcontractorContDef + ' + Me.ClientSize = New System.Drawing.Size(496, 446) + Me.Controls.Add(Me.gbxSubcontractorContData) + Me.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Name = "frmSubcontractorContDef" + Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen + Me.Text = "ENT Subcontractor Contactor Define" + Me.Controls.SetChildIndex(Me.btnClose, 0) + Me.Controls.SetChildIndex(Me.btnConfirm, 0) + Me.Controls.SetChildIndex(Me.btnApply, 0) + Me.Controls.SetChildIndex(Me.gbxBasisData, 0) + Me.Controls.SetChildIndex(Me.gbxSubcontractorContData, 0) + CType(Me.gbxBasisData, System.ComponentModel.ISupportInitialize).EndInit() + Me.gbxSubcontractorContData.ResumeLayout(False) + Me.gbxSubcontractorContData.PerformLayout() + CType(Me.txtAddress, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtEMail, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtTitle, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtFaxNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtSubcontractorNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtContactorName, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtTelNo, System.ComponentModel.ISupportInitialize).EndInit() + Me.ResumeLayout(False) + + End Sub + +#End Region + + Private Sub frmSubcontractorContDef_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + + Cursor.Current = Cursors.WaitCursor + + Select Case DefMode + Case 0 + Me.Text = Me.Text & "(ADD)" + Case 1 + Me.Text = Me.Text & "(EDIT)" + Case 2 + Me.Text = Me.Text & "(Copy)" + Case Else + Me.Text = Me.Text & "(Unknown)" + End Select + + '做為MainForm判斷是否重新LoadData的依據() + gReturnKeyValue = "" + + ' 2016 YF, wsENT.Url = LocalizeWebService(wsENT.Url.ToString) + ' 2016 YF, wsENT.EnableDecompression = True + If DefMode = 0 Or DefMode = 2 Then + SetCreateDate(Now) + SetCreator(gUserNo) + End If + If Not EditDataRow Is Nothing Then '修改 or Copy + txtSubcontractorNo.Text = EditDataRow.Item("SubcontractorNo").ToString + txtContactorName.Text = EditDataRow.Item("ContactorName").ToString + txtTelNo.Text = EditDataRow.Item("TelNo").ToString + txtFaxNo.Text = EditDataRow.Item("FaxNo").ToString + txtTitle.Text = EditDataRow.Item("Title").ToString + txtAddress.Text = EditDataRow.Item("Address").ToString + txtEMail.Text = EditDataRow.Item("EMail").ToString + 'txtDescription是RichTextBox(Control, 因為TextBox無法正常顯示多行換行的資料) + txtDescription.Text = EditDataRow.Item("Description").ToString + If DefMode = 1 Then + If (Not IsDBNull(EditDataRow("Creator"))) Then + SetCreateDate(Convert.ToDateTime(EditDataRow.Item("CreateDate"))) + SetCreator(EditDataRow.Item("Creator").ToString) + End If + End If + End If + + If DefMode = 0 Then 'Add + txtSubcontractorNo.Text = SubcontractorNo + SetCreateDate(Now) + SetCreator(gUserNo) + ElseIf DefMode = 1 Then 'Edit + txtContactorName.ReadOnly = True + SetReviseDate(Now) + SetReviser(gUserNo) + intDataStamp = EditDataRow.Item("DataStamp") + End If + + btnApplyEnabled = False + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + ExeGroupControlPriv(Me, PrivFunNo) + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub frmSubcontractorContDef_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Activated + If DefMode = 0 Or DefMode = 2 Then + txtContactorName.Focus() + Else + txtTelNo.Focus() + End If + End Sub + + Protected Overrides Sub btnConfirm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + + Cursor.Current = Cursors.WaitCursor + + If funAddorEdit(sender) < 0 Then Exit Sub + + Me.Close() + + Cursor.Current = Cursors.Default + + End Sub + + Protected Overrides Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + Me.Close() + End Sub + + Protected Overrides Sub btnApply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + + Cursor.Current = Cursors.WaitCursor + + If funAddorEdit(sender) < 0 Then Exit Sub + + If DefMode = 0 Or DefMode = 2 Then + txtContactorName.Focus() + Else + txtTelNo.Focus() + End If + + txtEMail.Text = "" + btnApplyEnabled = False + Cursor.Current = Cursors.Default + + End Sub + +#Region "Control KeyPress" + + Private Sub txtSubcontractorNo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.Click + txtSubcontractorNo.SelectAll() + End Sub + + Private Sub txtSubcontractorNo_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.Enter + txtSubcontractorNo.SelectAll() + End Sub + + Private Sub txtSubcontractorNo_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtSubcontractorNo.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtSubcontractorNo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtContactorName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtContactorName.Click + txtContactorName.SelectAll() + End Sub + + Private Sub txtContactorName_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtContactorName.Enter + txtContactorName.SelectAll() + End Sub + + Private Sub txtContactorName_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtContactorName.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtContactorName_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtContactorName.Leave + If txtContactorName.Text <> "" And txtEMail.Text = "" Then + txtEMail.Text = txtContactorName.Text & "@" + End If + txtContactorName.Text = UCase(txtContactorName.Text) + End Sub + + Private Sub txtContactorName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtContactorName.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtTelNo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTelNo.Click + txtTelNo.SelectAll() + End Sub + + Private Sub txtTelNo_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTelNo.Enter + txtTelNo.SelectAll() + End Sub + + Private Sub txtTelNo_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtTelNo.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtTelNo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTelNo.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtFaxNo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtFaxNo.Click + txtFaxNo.SelectAll() + End Sub + + Private Sub txtFaxNo_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtFaxNo.Enter + txtFaxNo.SelectAll() + End Sub + + Private Sub txtFaxNo_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtFaxNo.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtFaxNo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtFaxNo.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtTitle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTitle.Click + txtTitle.SelectAll() + End Sub + + Private Sub txtTitle_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTitle.Enter + txtTitle.SelectAll() + End Sub + + Private Sub txtTitle_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtTitle.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtTitle_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTitle.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtEMail_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtEMail.Click + txtEMail.SelectAll() + End Sub + + Private Sub txtEMail_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtEMail.Enter + txtEMail.SelectAll() + End Sub + + Private Sub txtEMail_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtEMail.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtEMail_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtEMail.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtAddress_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAddress.Click + txtAddress.SelectAll() + End Sub + + Private Sub txtAddress_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAddress.Enter + txtAddress.SelectAll() + End Sub + + Private Sub txtAddress_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtAddress.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtAddress_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAddress.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtDescription_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDescription.Click + txtDescription.SelectAll() + End Sub + + Private Sub txtDescription_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDescription.Enter + txtDescription.SelectAll() + End Sub + + Private Sub txtDescription_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtDescription.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtDescription_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtDescription.TextChanged + btnApplyEnabled = True + End Sub + +#End Region + +#Region "Others" + + Private Function funAddorEdit(sender As Object) As Integer + + funAddorEdit = -1 + + '****************************************************************************** + '1.基本檢查() + '****************************************************************************** + If txtSubcontractorNo.Text = "" Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200001", "[%SubcontractorNo%]"), MsgBoxStyle.Exclamation, Me.Text) + txtSubcontractorNo.Focus() + Exit Function + End If + If txtContactorName.Text = "" Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200001", "[%ContactorName%]"), MsgBoxStyle.Exclamation, Me.Text) + txtContactorName.Focus() + Exit Function + End If + + '****************************************************************************** + '2.寫回資料庫() + '****************************************************************************** + Dim XmlDoc As New XmlDocument + + Try + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + strParameter = CombineXMLParameter("subcontractorno", "SubcontractorNo", "String", CInput(txtSubcontractorNo.Text), "") + strParameter = strParameter & CombineXMLParameter("contactorname", "ContactorName", "String", CInput(txtContactorName.Text), "") + strParameter = strParameter & CombineXMLParameter("telno", "TelNo", "String", txtTelNo.Text, "") + strParameter = strParameter & CombineXMLParameter("faxno", "FaxNo", "String", txtFaxNo.Text, "") + strParameter = strParameter & CombineXMLParameter("title", "Title", "String", CInput(txtTitle.Text), "") + strParameter = strParameter & CombineXMLParameter("address", "Address", "String", CInput(txtAddress.Text), "") + strParameter = strParameter & CombineXMLParameter("email", "EMail", "String", CInput(txtEMail.Text), "") + strParameter = strParameter & CombineXMLParameter("description", "Description", "String", CInput(txtDescription.Text), "") + + + If DefMode = 0 Or DefMode = 2 Then 'Add or Copy + strParameter += CombineXMLParameter("creator", "Creator", "String", gUserNo, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + ' 2016 YF, OutXml = wsENT.AddSubcontractorCont(InXml) + OutXml = InvokeSrv("SXS.wsENT.AddSubcontractorCont", InXml) + + Else 'Edit + ' 增加Datastamp + strParameter += CombineXMLParameter("datastamp", "Datastamp", "Integer", intDataStamp, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + ' 2016 YF, OutXml = wsENT.EditSubcontractorCont(InXml) + OutXml = InvokeSrv("SXS.wsENT.EditSubcontractorCont", InXml) + + End If + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + gReturnKeyValue = txtContactorName.Text + + funAddorEdit = 0 + If sender.Equals(btnApply) Then + intDataStamp += 1 + End If + Else + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + End If + + Catch ex As Exception + 'MsgBox("Unexpected Error. Add or Edit ENT Subcontractor Contactor Failed!," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + End Try + + XmlDoc = Nothing + + End Function +#End Region + + + Private Sub frmSubcontractorContDef_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing + ' 2016 YF, If Not wsENT Is Nothing Then wsENT.Dispose() + End Sub + + Private Sub btnConfirm_Click_1(sender As Object, e As EventArgs) Handles btnConfirm.Click + + End Sub +End Class + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/frmSubcontractorDef.resx b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/frmSubcontractorDef.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/frmSubcontractorDef.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/frmSubcontractorDef.vb b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/frmSubcontractorDef.vb new file mode 100644 index 0000000..c738f71 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/frmSubcontractorDef.vb @@ -0,0 +1,460 @@ +Imports iMESExceptionManager + +Public Class frmSubcontractorDef21670 + + Inherits COM_Kit.frmDefTemplat + + '//Public Variables + Public EditDataRow As DataRow + Public DefMode As Integer = 0 '0. ADD, 1.Edit, 2. Copy + Public PrivFunNo As String = defString + + '//Web Service相關變數 + ' 2016 YF, Dim wsENT As New wsENT.wsENT + Dim InXml As String + Dim OutXml As String + + Dim strIdentity As String + Dim strParameter As String + Friend WithEvents txtWZ216670 As TextBox + Friend WithEvents Label1 As Label + Dim intDataStamp As Integer '紀錄DataStamp + +#Region " Windows Form Designer generated code " + + Public Sub New() + MyBase.New() + + 'This call is required by the Windows Form Designer. + InitializeComponent() + + 'Add any initialization after the InitializeComponent() call + + End Sub + + 'Form overrides dispose to clean up the component list. + Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing Then + If Not (components Is Nothing) Then + components.Dispose() + End If + End If + MyBase.Dispose(disposing) + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + Friend WithEvents txtDescription As System.Windows.Forms.RichTextBox + Friend WithEvents lblDescription As System.Windows.Forms.Label + Friend WithEvents lblSubcontractorNo As System.Windows.Forms.Label + Friend WithEvents lblSubcontractorName As System.Windows.Forms.Label + Friend WithEvents gbxSubcontractorData As System.Windows.Forms.GroupBox + Friend WithEvents txtSubcontractorNo As Infragistics.Win.UltraWinEditors.UltraTextEditor + Friend WithEvents txtSubcontractorName As Infragistics.Win.UltraWinEditors.UltraTextEditor + Private Sub InitializeComponent() + Dim Appearance1 As Infragistics.Win.Appearance = New Infragistics.Win.Appearance() + Dim Appearance2 As Infragistics.Win.Appearance = New Infragistics.Win.Appearance() + Me.gbxSubcontractorData = New System.Windows.Forms.GroupBox() + Me.txtDescription = New System.Windows.Forms.RichTextBox() + Me.lblDescription = New System.Windows.Forms.Label() + Me.lblSubcontractorNo = New System.Windows.Forms.Label() + Me.lblSubcontractorName = New System.Windows.Forms.Label() + Me.txtSubcontractorNo = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtSubcontractorName = New Infragistics.Win.UltraWinEditors.UltraTextEditor() + Me.txtWZ216670 = New System.Windows.Forms.TextBox() + Me.Label1 = New System.Windows.Forms.Label() + CType(Me.gbxBasisData, System.ComponentModel.ISupportInitialize).BeginInit() + Me.gbxSubcontractorData.SuspendLayout() + CType(Me.txtSubcontractorNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtSubcontractorName, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SuspendLayout() + ' + 'gbxBasisData + ' + Me.gbxBasisData.Location = New System.Drawing.Point(12, 185) + Me.gbxBasisData.Size = New System.Drawing.Size(479, 70) + ' + 'btnApply + ' + Me.btnApply.Location = New System.Drawing.Point(403, 264) + ' + 'btnConfirm + ' + Me.btnConfirm.Location = New System.Drawing.Point(215, 264) + ' + 'btnClose + ' + Me.btnClose.Location = New System.Drawing.Point(309, 264) + ' + 'gbxSubcontractorData + ' + Me.gbxSubcontractorData.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.gbxSubcontractorData.Controls.Add(Me.Label1) + Me.gbxSubcontractorData.Controls.Add(Me.txtWZ216670) + Me.gbxSubcontractorData.Controls.Add(Me.txtDescription) + Me.gbxSubcontractorData.Controls.Add(Me.lblDescription) + Me.gbxSubcontractorData.Controls.Add(Me.lblSubcontractorNo) + Me.gbxSubcontractorData.Controls.Add(Me.lblSubcontractorName) + Me.gbxSubcontractorData.Controls.Add(Me.txtSubcontractorNo) + Me.gbxSubcontractorData.Controls.Add(Me.txtSubcontractorName) + Me.gbxSubcontractorData.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.gbxSubcontractorData.Location = New System.Drawing.Point(12, 8) + Me.gbxSubcontractorData.Name = "gbxSubcontractorData" + Me.gbxSubcontractorData.Size = New System.Drawing.Size(479, 169) + Me.gbxSubcontractorData.TabIndex = 7 + Me.gbxSubcontractorData.TabStop = False + Me.gbxSubcontractorData.Text = "Subcontractor Data" + ' + 'txtDescription + ' + Me.txtDescription.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.txtDescription.Location = New System.Drawing.Point(128, 86) + Me.txtDescription.Name = "txtDescription" + Me.txtDescription.Size = New System.Drawing.Size(334, 67) + Me.txtDescription.TabIndex = 2 + Me.txtDescription.Text = "" + ' + 'lblDescription + ' + Me.lblDescription.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblDescription.Location = New System.Drawing.Point(56, 88) + Me.lblDescription.Name = "lblDescription" + Me.lblDescription.Size = New System.Drawing.Size(64, 14) + Me.lblDescription.TabIndex = 13 + Me.lblDescription.Text = "Description" + Me.lblDescription.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblSubcontractorNo + ' + Me.lblSubcontractorNo.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblSubcontractorNo.Location = New System.Drawing.Point(24, 24) + Me.lblSubcontractorNo.Name = "lblSubcontractorNo" + Me.lblSubcontractorNo.Size = New System.Drawing.Size(96, 32) + Me.lblSubcontractorNo.TabIndex = 5 + Me.lblSubcontractorNo.Text = "Subcontractor No" + Me.lblSubcontractorNo.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'lblSubcontractorName + ' + Me.lblSubcontractorName.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.lblSubcontractorName.Location = New System.Drawing.Point(8, 56) + Me.lblSubcontractorName.Name = "lblSubcontractorName" + Me.lblSubcontractorName.Size = New System.Drawing.Size(112, 32) + Me.lblSubcontractorName.TabIndex = 9 + Me.lblSubcontractorName.Text = "Subcontractor Name" + Me.lblSubcontractorName.TextAlign = System.Drawing.ContentAlignment.TopRight + ' + 'txtSubcontractorNo + ' + Appearance1.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtSubcontractorNo.Appearance = Appearance1 + Me.txtSubcontractorNo.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtSubcontractorNo.Location = New System.Drawing.Point(128, 24) + Me.txtSubcontractorNo.Name = "txtSubcontractorNo" + Me.txtSubcontractorNo.Size = New System.Drawing.Size(152, 26) + Me.txtSubcontractorNo.TabIndex = 0 + ' + 'txtSubcontractorName + ' + Appearance2.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtSubcontractorName.Appearance = Appearance2 + Me.txtSubcontractorName.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.txtSubcontractorName.Location = New System.Drawing.Point(128, 55) + Me.txtSubcontractorName.Name = "txtSubcontractorName" + Me.txtSubcontractorName.Size = New System.Drawing.Size(334, 26) + Me.txtSubcontractorName.TabIndex = 1 + ' + 'txtWZ216670 + ' + Me.txtWZ216670.Location = New System.Drawing.Point(362, 25) + Me.txtWZ216670.Name = "txtWZ216670" + Me.txtWZ216670.Size = New System.Drawing.Size(100, 25) + Me.txtWZ216670.TabIndex = 14 + ' + 'Label1 + ' + Me.Label1.AutoSize = True + Me.Label1.Location = New System.Drawing.Point(297, 24) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(66, 17) + Me.Label1.TabIndex = 15 + Me.Label1.Text = "WZ21670" + ' + 'frmSubcontractorDef + ' + Me.ClientSize = New System.Drawing.Size(503, 309) + Me.Controls.Add(Me.gbxSubcontractorData) + Me.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Name = "frmSubcontractorDef" + Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen + Me.Text = "ENT Subcontractor Define" + Me.Controls.SetChildIndex(Me.btnClose, 0) + Me.Controls.SetChildIndex(Me.btnConfirm, 0) + Me.Controls.SetChildIndex(Me.btnApply, 0) + Me.Controls.SetChildIndex(Me.gbxBasisData, 0) + Me.Controls.SetChildIndex(Me.gbxSubcontractorData, 0) + CType(Me.gbxBasisData, System.ComponentModel.ISupportInitialize).EndInit() + Me.gbxSubcontractorData.ResumeLayout(False) + Me.gbxSubcontractorData.PerformLayout() + CType(Me.txtSubcontractorNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtSubcontractorName, System.ComponentModel.ISupportInitialize).EndInit() + Me.ResumeLayout(False) + + End Sub + +#End Region + + Private Sub frmSubcontractorDef_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + + Cursor.Current = Cursors.WaitCursor + + Select Case DefMode + Case 0 + Me.Text = Me.Text & "(ADD)" + Case 1 + Me.Text = Me.Text & "(EDIT)" + Case 2 + Me.Text = Me.Text & "(Copy)" + Case Else + Me.Text = Me.Text & "(Unknown)" + End Select + + '做為MainForm判斷是否重新LoadData的依據 + gReturnKeyValue = "" + + ' 2016 YF, wsENT.Url = LocalizeWebService(wsENT.Url.ToString) + ' 2016 YF, wsENT.EnableDecompression = True + + If Not EditDataRow Is Nothing Then + txtSubcontractorNo.Text = EditDataRow.Item("SubcontractorNo").ToString + txtSubcontractorName.Text = EditDataRow.Item("SubcontractorName").ToString + 'txtDescription是RichTextBox Control,因為TextBox無法正常顯示多行換行的資料 + txtDescription.Text = EditDataRow.Item("Description").ToString + End If + + If DefMode = 0 Or DefMode = 2 Then 'Add or Copy + SetCreator(gUserNo) + SetCreateDate(Now) + ElseIf DefMode = 1 Then 'Edit + txtSubcontractorNo.ReadOnly = True + SetCreator(EditDataRow.Item("Creator").ToString) + SetCreateDate(Convert.ToDateTime(EditDataRow.Item("CreateDate"))) + SetReviser(gUserNo) + SetReviseDate(Now) + intDataStamp = EditDataRow.Item("DataStamp") + End If + + btnApplyEnabled = False + + '語系切換 + Call ExeChangeResource(Me, gLanguageMode) + ExeGroupControlPriv(Me, PrivFunNo) + + Cursor.Current = Cursors.Default + + End Sub + + Private Sub frmSubcontractorDef_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Activated + If DefMode = 0 Or DefMode = 2 Then + txtSubcontractorNo.Focus() + Else + txtSubcontractorName.Focus() + End If + End Sub + + Protected Overrides Sub btnConfirm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + + Cursor.Current = Cursors.WaitCursor + + If funAddorEdit(sender) < 0 Then Exit Sub + + Me.Close() + + Cursor.Current = Cursors.Default + + End Sub + + Protected Overrides Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + Me.Close() + End Sub + + Protected Overrides Sub btnApply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + + Cursor.Current = Cursors.WaitCursor + + If funAddorEdit(sender) < 0 Then Exit Sub + + If DefMode = 0 Or DefMode = 2 Then + txtSubcontractorNo.Focus() + Else + txtSubcontractorName.Focus() + + End If + + Cursor.Current = Cursors.Default + btnApplyEnabled = False + + End Sub + + Private Sub frmSubcontractorDef_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing + ' 2016 YF, If Not wsENT Is Nothing Then wsENT.Dispose() + End Sub + +#Region "Control KeyPress" + + Private Sub txtSubcontractorNo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.Click + txtSubcontractorNo.SelectAll() + End Sub + + Private Sub txtSubcontractorNo_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.Enter + txtSubcontractorNo.SelectAll() + End Sub + + Private Sub txtSubcontractorNo_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtSubcontractorNo.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtSubcontractorNo_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.Leave + txtSubcontractorNo.Text = UCase(txtSubcontractorNo.Text) + End Sub + + Private Sub txtSubcontractorNo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorNo.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtSubcontractorName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorName.Click + txtSubcontractorName.SelectAll() + End Sub + + Private Sub txtSubcontractorName_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorName.Enter + txtSubcontractorName.SelectAll() + End Sub + + Private Sub txtSubcontractorName_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtSubcontractorName.KeyPress + If e.KeyChar = Convert.ToChar(13) Then + SendKeys.Send("{TAB}") + End If + End Sub + + Private Sub txtSubcontractorName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSubcontractorName.TextChanged + btnApplyEnabled = True + End Sub + + Private Sub txtDescription_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDescription.Click + txtDescription.SelectAll() + End Sub + + Private Sub txtDescription_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDescription.Enter + txtDescription.SelectAll() + End Sub + + Private Sub txtDescription_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtDescription.TextChanged + btnApplyEnabled = True + End Sub + +#End Region + +#Region "Others" + + Private Function funAddorEdit(sender As Object) As Integer + + funAddorEdit = -1 + + '****************************************************************************** + '1.基本檢查 + '****************************************************************************** + If txtSubcontractorNo.Text = "" Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200001", "[%SubcontractorNo%]"), MsgBoxStyle.Exclamation, Me.Text) + txtSubcontractorNo.Focus() + Exit Function + End If + + If txtSubcontractorName.Text = "" Then + iMESExceptionManager.ExceptionManager.iMESMsgBoxShowDialog(ChgTranslateName_Msg("0000-200001", "[%SubcontractorName%]"), MsgBoxStyle.Exclamation, Me.Text) + txtSubcontractorName.Focus() + Exit Function + End If + + '2. + '****************************************************************************** + '寫回資料庫 + '****************************************************************************** + Dim XmlDoc As New XmlDocument + + Try + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + strParameter = CombineXMLParameter("subcontractorno", "SubcontractorNo", "String", CInput(txtSubcontractorNo.Text), "") + strParameter = strParameter & CombineXMLParameter("subcontractorname", "SubcontractorName", "String", CInput(txtSubcontractorName.Text), "") + strParameter = strParameter & CombineXMLParameter("description", "Description", "String", CInput(txtDescription.Text), "") + strParameter = strParameter & CombineXMLParameter("wz21670", "WZ21670", "String", CInput(txtWZ216670.Text), "") + + If DefMode = 0 Or DefMode = 2 Then 'Add or Copy + strParameter = strParameter & CombineXMLParameter("creator", "Creator", "String", gUserNo, "") + strParameter = strParameter & CombineXMLParameter("createdate", "CreateDate", "DateTime", Format(Now, "yyyy/MM/dd HH:mm:ss"), "") + InXml = CombineXMLRequest(strIdentity, strParameter) + + ' 2016 YF, OutXml = wsENT.AddSubcontractor(InXml) + OutXml = InvokeSrv("SXS.wsENT.AddSubcontractor", InXml) + + Else + '修改 + strParameter = strParameter & CombineXMLParameter("issuestate", "IssueState", "String", EditDataRow.Item("IssueState").ToString, "") + ' 增加Datastamp + strParameter += CombineXMLParameter("datastamp", "Datastamp", "Integer", intDataStamp, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + + ' 2016 YF, OutXml = wsENT.EditSubcontractor(InXml) + OutXml = InvokeSrv("SXS.wsENT.EditSubcontractor", InXml) + + End If + + XmlDoc.LoadXml(OutXml) + If ChkExecutionSuccess(XmlDoc) Then + gReturnKeyValue = txtSubcontractorNo.Text + + funAddorEdit = 0 + If sender.Equals(btnApply) Then + intDataStamp += 1 + End If + Else + ExceptionManager.iMESShowDialog(GetExceptionCode(XmlDoc), GetExceptionSysMsg(XmlDoc), GetExceptionStack(XmlDoc)) + End If + + Catch ex As Exception + 'MsgBox("Unexpected Error. Add or Edit ENT Subcontractor Failed!," & e1.Message, MsgBoxStyle.Exclamation) + ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + End Try + + XmlDoc = Nothing + + End Function + + Private Sub btnConfirm_Click_1(sender As Object, e As EventArgs) Handles btnConfirm.Click + + End Sub + + Private Sub txtSubcontractorNo_ValueChanged(sender As Object, e As EventArgs) Handles txtSubcontractorNo.ValueChanged + + End Sub + + Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles txtWZ216670.TextChanged + + End Sub + + Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click + + End Sub + +#End Region + +End Class + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/iMES.snk b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/iMES.snk new file mode 100644 index 0000000..4206cdc Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/21670_1/iMES.snk differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/新建 文本文档.txt b/SRC/MESWin/SYS4/21670ll/MESWin/SYS4/新建 文本文档.txt new file mode 100644 index 0000000..e69de29 diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS5/新建 文本文档.txt b/SRC/MESWin/SYS4/21670ll/MESWin/SYS5/新建 文本文档.txt new file mode 100644 index 0000000..e69de29 diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/SYS6/新建 文本文档.txt b/SRC/MESWin/SYS4/21670ll/MESWin/SYS6/新建 文本文档.txt new file mode 100644 index 0000000..e69de29 diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Test/MDI_Panel.resx b/SRC/MESWin/SYS4/21670ll/MESWin/Test/MDI_Panel.resx new file mode 100644 index 0000000..2d7050a --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/Test/MDI_Panel.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 254, 17 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Test/MDI_Panel.vb b/SRC/MESWin/SYS4/21670ll/MESWin/Test/MDI_Panel.vb new file mode 100644 index 0000000..e57dab1 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/Test/MDI_Panel.vb @@ -0,0 +1,1016 @@ +Imports iMESMainMenu +Imports Infragistics.Win +Imports Infragistics.Win.UltraWinToolbars +Public Class MDI_Panel + + Inherits System.Windows.Forms.Form + + '//Data + Dim dsData As New DataSet + Dim ModuleNo As String + Dim strUserPriv As String + + '//其他共用變數 + Dim i As Integer + Dim blnShow As Boolean + Dim imlMDI As New ImageList + + '// MainMenu & ToolBar變數 + Dim utbMDI As Infragistics.Win.UltraWinToolbars.UltraToolbar = New UltraToolbar("ToolBar") + Dim utbMDIMenu As Infragistics.Win.UltraWinToolbars.UltraToolbar = New UltraToolbar("MainMenu") + Dim OptionSet1 As Infragistics.Win.UltraWinToolbars.OptionSet = New Infragistics.Win.UltraWinToolbars.OptionSet("LanguageMode") + Dim btlMDI As ButtonTool + Dim popMDI As PopupMenuTool + Dim sbtMDI As StateButtonTool + + +#Region " Windows Form 設計工具產生的程式碼 " + + Public Sub New() + MyBase.New() + + '此呼叫為 Windows Form 設計工具的必要項。 + InitializeComponent() + + '在 InitializeComponent() 呼叫之後加入所有的初始設定 + + End Sub + + 'Form 覆寫 Dispose 以清除元件清單。 + Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing Then + If Not (components Is Nothing) Then + components.Dispose() + End If + End If + MyBase.Dispose(disposing) + End Sub + + '為 Windows Form 設計工具的必要項 + Private components As System.ComponentModel.IContainer + + '注意: 以下為 Windows Form 設計工具所需的程序 + '您可以使用 Windows Form 設計工具進行修改。 + '請勿使用程式碼編輯器來修改這些程序。 + Friend WithEvents UltraToolbarsManager1 As Infragistics.Win.UltraWinToolbars.UltraToolbarsManager + Friend WithEvents _MDIENT_Panel_Toolbars_Dock_Area_Left As Infragistics.Win.UltraWinToolbars.UltraToolbarsDockArea + Friend WithEvents _MDIENT_Panel_Toolbars_Dock_Area_Right As Infragistics.Win.UltraWinToolbars.UltraToolbarsDockArea + Friend WithEvents _MDIENT_Panel_Toolbars_Dock_Area_Top As Infragistics.Win.UltraWinToolbars.UltraToolbarsDockArea + Friend WithEvents _MDIENT_Panel_Toolbars_Dock_Area_Bottom As Infragistics.Win.UltraWinToolbars.UltraToolbarsDockArea + Friend WithEvents UltraDockManager1 As Infragistics.Win.UltraWinDock.UltraDockManager + Friend WithEvents _MDIENT_PanelUnpinnedTabAreaLeft As Infragistics.Win.UltraWinDock.UnpinnedTabArea + Friend WithEvents _MDIENT_PanelUnpinnedTabAreaRight As Infragistics.Win.UltraWinDock.UnpinnedTabArea + Friend WithEvents _MDIENT_PanelUnpinnedTabAreaTop As Infragistics.Win.UltraWinDock.UnpinnedTabArea + Friend WithEvents _MDIENT_PanelUnpinnedTabAreaBottom As Infragistics.Win.UltraWinDock.UnpinnedTabArea + Friend WithEvents _MDIENT_PanelAutoHideControl As Infragistics.Win.UltraWinDock.AutoHideControl + Friend WithEvents uebMenu As Infragistics.Win.UltraWinExplorerBar.UltraExplorerBar + Friend WithEvents WindowDockingArea1 As Infragistics.Win.UltraWinDock.WindowDockingArea + Friend WithEvents DockableWindow1 As Infragistics.Win.UltraWinDock.DockableWindow + Private Sub InitializeComponent() + Me.components = New System.ComponentModel.Container() + Dim DockAreaPane2 As Infragistics.Win.UltraWinDock.DockAreaPane = New Infragistics.Win.UltraWinDock.DockAreaPane(Infragistics.Win.UltraWinDock.DockedLocation.DockedLeft, New System.Guid("8666bbed-9885-4c68-819e-c049f9eac535")) + Dim DockableControlPane2 As Infragistics.Win.UltraWinDock.DockableControlPane = New Infragistics.Win.UltraWinDock.DockableControlPane(New System.Guid("5a475b0e-96d9-4cd0-973b-da8cba709615"), New System.Guid("00000000-0000-0000-0000-000000000000"), -1, New System.Guid("8666bbed-9885-4c68-819e-c049f9eac535"), -1) + Me.uebMenu = New Infragistics.Win.UltraWinExplorerBar.UltraExplorerBar() + Me.UltraToolbarsManager1 = New Infragistics.Win.UltraWinToolbars.UltraToolbarsManager(Me.components) + Me._MDIENT_Panel_Toolbars_Dock_Area_Left = New Infragistics.Win.UltraWinToolbars.UltraToolbarsDockArea() + Me._MDIENT_Panel_Toolbars_Dock_Area_Right = New Infragistics.Win.UltraWinToolbars.UltraToolbarsDockArea() + Me._MDIENT_Panel_Toolbars_Dock_Area_Top = New Infragistics.Win.UltraWinToolbars.UltraToolbarsDockArea() + Me._MDIENT_Panel_Toolbars_Dock_Area_Bottom = New Infragistics.Win.UltraWinToolbars.UltraToolbarsDockArea() + Me.UltraDockManager1 = New Infragistics.Win.UltraWinDock.UltraDockManager(Me.components) + Me._MDIENT_PanelUnpinnedTabAreaLeft = New Infragistics.Win.UltraWinDock.UnpinnedTabArea() + Me._MDIENT_PanelUnpinnedTabAreaRight = New Infragistics.Win.UltraWinDock.UnpinnedTabArea() + Me._MDIENT_PanelUnpinnedTabAreaTop = New Infragistics.Win.UltraWinDock.UnpinnedTabArea() + Me._MDIENT_PanelUnpinnedTabAreaBottom = New Infragistics.Win.UltraWinDock.UnpinnedTabArea() + Me._MDIENT_PanelAutoHideControl = New Infragistics.Win.UltraWinDock.AutoHideControl() + Me.DockableWindow1 = New Infragistics.Win.UltraWinDock.DockableWindow() + Me.WindowDockingArea1 = New Infragistics.Win.UltraWinDock.WindowDockingArea() + CType(Me.uebMenu, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.UltraToolbarsManager1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.UltraDockManager1, System.ComponentModel.ISupportInitialize).BeginInit() + Me._MDIENT_PanelAutoHideControl.SuspendLayout() + Me.DockableWindow1.SuspendLayout() + Me.SuspendLayout() + ' + 'uebMenu + ' + Me.uebMenu.Location = New System.Drawing.Point(0, 18) + Me.uebMenu.Name = "uebMenu" + Me.uebMenu.Size = New System.Drawing.Size(300, 424) + Me.uebMenu.TabIndex = 10 + ' + 'UltraToolbarsManager1 + ' + Me.UltraToolbarsManager1.DesignerFlags = 1 + Me.UltraToolbarsManager1.DockWithinContainer = Me + Me.UltraToolbarsManager1.DockWithinContainerBaseType = GetType(System.Windows.Forms.Form) + ' + '_MDIENT_Panel_Toolbars_Dock_Area_Left + ' + Me._MDIENT_Panel_Toolbars_Dock_Area_Left.AccessibleRole = System.Windows.Forms.AccessibleRole.Grouping + Me._MDIENT_Panel_Toolbars_Dock_Area_Left.BackColor = System.Drawing.SystemColors.Control + Me._MDIENT_Panel_Toolbars_Dock_Area_Left.DockedPosition = Infragistics.Win.UltraWinToolbars.DockedPosition.Left + Me._MDIENT_Panel_Toolbars_Dock_Area_Left.ForeColor = System.Drawing.SystemColors.ControlText + Me._MDIENT_Panel_Toolbars_Dock_Area_Left.Location = New System.Drawing.Point(0, 0) + Me._MDIENT_Panel_Toolbars_Dock_Area_Left.Name = "_MDIENT_Panel_Toolbars_Dock_Area_Left" + Me._MDIENT_Panel_Toolbars_Dock_Area_Left.Size = New System.Drawing.Size(0, 442) + Me._MDIENT_Panel_Toolbars_Dock_Area_Left.ToolbarsManager = Me.UltraToolbarsManager1 + ' + '_MDIENT_Panel_Toolbars_Dock_Area_Right + ' + Me._MDIENT_Panel_Toolbars_Dock_Area_Right.AccessibleRole = System.Windows.Forms.AccessibleRole.Grouping + Me._MDIENT_Panel_Toolbars_Dock_Area_Right.BackColor = System.Drawing.SystemColors.Control + Me._MDIENT_Panel_Toolbars_Dock_Area_Right.DockedPosition = Infragistics.Win.UltraWinToolbars.DockedPosition.Right + Me._MDIENT_Panel_Toolbars_Dock_Area_Right.ForeColor = System.Drawing.SystemColors.ControlText + Me._MDIENT_Panel_Toolbars_Dock_Area_Right.Location = New System.Drawing.Point(624, 0) + Me._MDIENT_Panel_Toolbars_Dock_Area_Right.Name = "_MDIENT_Panel_Toolbars_Dock_Area_Right" + Me._MDIENT_Panel_Toolbars_Dock_Area_Right.Size = New System.Drawing.Size(0, 442) + Me._MDIENT_Panel_Toolbars_Dock_Area_Right.ToolbarsManager = Me.UltraToolbarsManager1 + ' + '_MDIENT_Panel_Toolbars_Dock_Area_Top + ' + Me._MDIENT_Panel_Toolbars_Dock_Area_Top.AccessibleRole = System.Windows.Forms.AccessibleRole.Grouping + Me._MDIENT_Panel_Toolbars_Dock_Area_Top.BackColor = System.Drawing.SystemColors.Control + Me._MDIENT_Panel_Toolbars_Dock_Area_Top.DockedPosition = Infragistics.Win.UltraWinToolbars.DockedPosition.Top + Me._MDIENT_Panel_Toolbars_Dock_Area_Top.ForeColor = System.Drawing.SystemColors.ControlText + Me._MDIENT_Panel_Toolbars_Dock_Area_Top.Location = New System.Drawing.Point(0, 0) + Me._MDIENT_Panel_Toolbars_Dock_Area_Top.Name = "_MDIENT_Panel_Toolbars_Dock_Area_Top" + Me._MDIENT_Panel_Toolbars_Dock_Area_Top.Size = New System.Drawing.Size(624, 0) + Me._MDIENT_Panel_Toolbars_Dock_Area_Top.ToolbarsManager = Me.UltraToolbarsManager1 + ' + '_MDIENT_Panel_Toolbars_Dock_Area_Bottom + ' + Me._MDIENT_Panel_Toolbars_Dock_Area_Bottom.AccessibleRole = System.Windows.Forms.AccessibleRole.Grouping + Me._MDIENT_Panel_Toolbars_Dock_Area_Bottom.BackColor = System.Drawing.SystemColors.Control + Me._MDIENT_Panel_Toolbars_Dock_Area_Bottom.DockedPosition = Infragistics.Win.UltraWinToolbars.DockedPosition.Bottom + Me._MDIENT_Panel_Toolbars_Dock_Area_Bottom.ForeColor = System.Drawing.SystemColors.ControlText + Me._MDIENT_Panel_Toolbars_Dock_Area_Bottom.Location = New System.Drawing.Point(0, 442) + Me._MDIENT_Panel_Toolbars_Dock_Area_Bottom.Name = "_MDIENT_Panel_Toolbars_Dock_Area_Bottom" + Me._MDIENT_Panel_Toolbars_Dock_Area_Bottom.Size = New System.Drawing.Size(624, 0) + Me._MDIENT_Panel_Toolbars_Dock_Area_Bottom.ToolbarsManager = Me.UltraToolbarsManager1 + ' + 'UltraDockManager1 + ' + DockableControlPane2.Control = Me.uebMenu + DockableControlPane2.FlyoutSize = New System.Drawing.Size(239, -1) + DockableControlPane2.Key = "WIPModule" + DockableControlPane2.OriginalControlBounds = New System.Drawing.Rectangle(208, 112, 175, 230) + DockableControlPane2.Pinned = False + DockableControlPane2.Size = New System.Drawing.Size(100, 100) + DockableControlPane2.Text = "WIP" + DockAreaPane2.Panes.AddRange(New Infragistics.Win.UltraWinDock.DockablePaneBase() {DockableControlPane2}) + DockAreaPane2.Size = New System.Drawing.Size(239, 294) + Me.UltraDockManager1.DockAreas.AddRange(New Infragistics.Win.UltraWinDock.DockAreaPane() {DockAreaPane2}) + Me.UltraDockManager1.HostControl = Me + Me.UltraDockManager1.ShowCloseButton = False + ' + '_MDIENT_PanelUnpinnedTabAreaLeft + ' + Me._MDIENT_PanelUnpinnedTabAreaLeft.Dock = System.Windows.Forms.DockStyle.Left + Me._MDIENT_PanelUnpinnedTabAreaLeft.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(136, Byte)) + Me._MDIENT_PanelUnpinnedTabAreaLeft.Location = New System.Drawing.Point(0, 0) + Me._MDIENT_PanelUnpinnedTabAreaLeft.Name = "_MDIENT_PanelUnpinnedTabAreaLeft" + Me._MDIENT_PanelUnpinnedTabAreaLeft.Owner = Me.UltraDockManager1 + Me._MDIENT_PanelUnpinnedTabAreaLeft.Size = New System.Drawing.Size(21, 442) + Me._MDIENT_PanelUnpinnedTabAreaLeft.TabIndex = 5 + ' + '_MDIENT_PanelUnpinnedTabAreaRight + ' + Me._MDIENT_PanelUnpinnedTabAreaRight.Dock = System.Windows.Forms.DockStyle.Right + Me._MDIENT_PanelUnpinnedTabAreaRight.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(136, Byte)) + Me._MDIENT_PanelUnpinnedTabAreaRight.Location = New System.Drawing.Point(624, 0) + Me._MDIENT_PanelUnpinnedTabAreaRight.Name = "_MDIENT_PanelUnpinnedTabAreaRight" + Me._MDIENT_PanelUnpinnedTabAreaRight.Owner = Me.UltraDockManager1 + Me._MDIENT_PanelUnpinnedTabAreaRight.Size = New System.Drawing.Size(0, 442) + Me._MDIENT_PanelUnpinnedTabAreaRight.TabIndex = 6 + ' + '_MDIENT_PanelUnpinnedTabAreaTop + ' + Me._MDIENT_PanelUnpinnedTabAreaTop.Dock = System.Windows.Forms.DockStyle.Top + Me._MDIENT_PanelUnpinnedTabAreaTop.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(136, Byte)) + Me._MDIENT_PanelUnpinnedTabAreaTop.Location = New System.Drawing.Point(21, 0) + Me._MDIENT_PanelUnpinnedTabAreaTop.Name = "_MDIENT_PanelUnpinnedTabAreaTop" + Me._MDIENT_PanelUnpinnedTabAreaTop.Owner = Me.UltraDockManager1 + Me._MDIENT_PanelUnpinnedTabAreaTop.Size = New System.Drawing.Size(603, 0) + Me._MDIENT_PanelUnpinnedTabAreaTop.TabIndex = 7 + ' + '_MDIENT_PanelUnpinnedTabAreaBottom + ' + Me._MDIENT_PanelUnpinnedTabAreaBottom.Dock = System.Windows.Forms.DockStyle.Bottom + Me._MDIENT_PanelUnpinnedTabAreaBottom.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(136, Byte)) + Me._MDIENT_PanelUnpinnedTabAreaBottom.Location = New System.Drawing.Point(21, 442) + Me._MDIENT_PanelUnpinnedTabAreaBottom.Name = "_MDIENT_PanelUnpinnedTabAreaBottom" + Me._MDIENT_PanelUnpinnedTabAreaBottom.Owner = Me.UltraDockManager1 + Me._MDIENT_PanelUnpinnedTabAreaBottom.Size = New System.Drawing.Size(603, 0) + Me._MDIENT_PanelUnpinnedTabAreaBottom.TabIndex = 8 + ' + '_MDIENT_PanelAutoHideControl + ' + Me._MDIENT_PanelAutoHideControl.Controls.Add(Me.DockableWindow1) + Me._MDIENT_PanelAutoHideControl.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(136, Byte)) + Me._MDIENT_PanelAutoHideControl.Location = New System.Drawing.Point(21, 0) + Me._MDIENT_PanelAutoHideControl.Name = "_MDIENT_PanelAutoHideControl" + Me._MDIENT_PanelAutoHideControl.Owner = Me.UltraDockManager1 + Me._MDIENT_PanelAutoHideControl.Size = New System.Drawing.Size(14, 442) + Me._MDIENT_PanelAutoHideControl.TabIndex = 9 + ' + 'DockableWindow1 + ' + Me.DockableWindow1.Controls.Add(Me.uebMenu) + Me.DockableWindow1.Location = New System.Drawing.Point(0, 0) + Me.DockableWindow1.Name = "DockableWindow1" + Me.DockableWindow1.Owner = Me.UltraDockManager1 + Me.DockableWindow1.Size = New System.Drawing.Size(239, 442) + Me.DockableWindow1.TabIndex = 17 + ' + 'WindowDockingArea1 + ' + Me.WindowDockingArea1.Dock = System.Windows.Forms.DockStyle.Left + Me.WindowDockingArea1.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(136, Byte)) + Me.WindowDockingArea1.Location = New System.Drawing.Point(21, 0) + Me.WindowDockingArea1.Name = "WindowDockingArea1" + Me.WindowDockingArea1.Owner = Me.UltraDockManager1 + Me.WindowDockingArea1.Size = New System.Drawing.Size(244, 294) + Me.WindowDockingArea1.TabIndex = 11 + ' + 'MDI_Panel + ' + Me.AutoScaleBaseSize = New System.Drawing.Size(5, 14) + Me.ClientSize = New System.Drawing.Size(624, 442) + Me.Controls.Add(Me._MDIENT_PanelAutoHideControl) + Me.Controls.Add(Me.WindowDockingArea1) + Me.Controls.Add(Me._MDIENT_PanelUnpinnedTabAreaTop) + Me.Controls.Add(Me._MDIENT_PanelUnpinnedTabAreaBottom) + Me.Controls.Add(Me._MDIENT_PanelUnpinnedTabAreaLeft) + Me.Controls.Add(Me._MDIENT_PanelUnpinnedTabAreaRight) + Me.Controls.Add(Me._MDIENT_Panel_Toolbars_Dock_Area_Left) + Me.Controls.Add(Me._MDIENT_Panel_Toolbars_Dock_Area_Right) + Me.Controls.Add(Me._MDIENT_Panel_Toolbars_Dock_Area_Bottom) + Me.Controls.Add(Me._MDIENT_Panel_Toolbars_Dock_Area_Top) + Me.Font = New System.Drawing.Font("Times New Roman", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(136, Byte)) + Me.IsMdiContainer = True + Me.Name = "MDI_Panel" + Me.Text = "Test" + Me.WindowState = System.Windows.Forms.FormWindowState.Maximized + CType(Me.uebMenu, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.UltraToolbarsManager1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.UltraDockManager1, System.ComponentModel.ISupportInitialize).EndInit() + Me._MDIENT_PanelAutoHideControl.ResumeLayout(False) + Me.DockableWindow1.ResumeLayout(False) + Me.ResumeLayout(False) + + End Sub + +#End Region + + Private Sub MDIENT_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + + Cursor.Current = Cursors.WaitCursor + + ''---掛載Online Help---- + Dim clsHelp As New clsOnlineHelp + clsHelp.AddEventToForm(Me) + + 'set BackColor + Call setMDIBackColor(Me) + + ModuleNo = "SYS" + + ' 2016/05/09 YF, 產生選單 + GenerateMenu() + + '3.Get EnterpriseNo----------------------------------------------------------------------------------------------------------- + Call funGetEnterpriseNo() + + '4.版本檢查 + Call ChkVersion() + + 'Me.Text = Me.Text & " - " & GetClientVersion() 'Gary Lu 20120718:標題加上版本編號 + + '5.Execute Change Resource----------------------------------------------------------------------------------------------------- + 'Call ExeChangeResource(Me, gLanguageMode) + + '6.Set iMESExceptionManager LanguageMode--------------------------------------------------------------------------------------- + iMESExceptionManager.ExceptionManager.LanguageMode = gLanguageMode + + Cursor.Current = Cursors.Default + + End Sub + +#Region " UltraWinToolbars Menu & ToolBar Function " + + Private Function funCreateUltraPopupMenuToolbar(ByRef ParentMenuItem As iMESMenuItem) As PopupMenuTool + + + 'PopupMenuTool + popMDI = New PopupMenuTool(ParentMenuItem.Name) + popMDI.SharedProps.Tag = ParentMenuItem.Name + popMDI.SharedProps.ToolTipText = ParentMenuItem.Name + UltraToolbarsManager1.Tools.Add(popMDI) + + Return popMDI + + End Function + + Private Function funCreateUltraButtonMenuToolbar(ByRef ParentMenuItem As iMESMenuItem) + + 'Button Tool + btlMDI = New ButtonTool(ParentMenuItem.Name) + btlMDI.SharedProps.Tag = ParentMenuItem.Name + btlMDI.SharedProps.ToolTipText = ParentMenuItem.Name + UltraToolbarsManager1.Tools.Add(btlMDI) + + utbMDIMenu.Tools.AddRange(New Infragistics.Win.UltraWinToolbars.ToolBase() {btlMDI}) + + End Function + + Private Sub funCreateUltraMenuItemToolbar(ByRef tmppopMDI As PopupMenuTool, ByRef ParentMenuItem As iMESMenuItem, Optional ByVal btlEnabled As Boolean = True) + + If ParentMenuItem.Name.ToUpper = "EN" Or ParentMenuItem.Name.ToUpper = "ZH-CHT" Or + ParentMenuItem.Name.ToUpper = "ZH-CHS" Or ParentMenuItem.Name.ToUpper = "JP" Or + ParentMenuItem.Name.ToUpper = "KOR" Or ParentMenuItem.Name.ToUpper = "THAI" Or + ParentMenuItem.Name.ToUpper = "VIET" Then + + funCreateUltraStatButtonToolbar(tmppopMDI, ParentMenuItem, , "LanguageMode") + + ElseIf ParentMenuItem.Checkable = True Then + + funCreateUltraStatButtonToolbar(tmppopMDI, ParentMenuItem, btlEnabled) + + Else + + '產生UltraToolBar Button + btlMDI = New ButtonTool(ParentMenuItem.Name) + btlMDI.SharedProps.Tag = ParentMenuItem.Name + btlMDI.SharedProps.ToolTipText = ParentMenuItem.Name + btlMDI.SharedProps.Enabled = btlEnabled + + If Not ParentMenuItem.Icon Is Nothing Then + 'Image + imlMDI.Images.Add(ParentMenuItem.Icon) + + btlMDI.SharedProps.AppearancesSmall.Appearance.Image = imlMDI.Images.Count - 1 + + End If + + + btlMDI.SharedProps.Shortcut = ParentMenuItem.Shortcut + + UltraToolbarsManager1.Tools.Add(btlMDI) + tmppopMDI.Tools.AddRange(New Infragistics.Win.UltraWinToolbars.ToolBase() {btlMDI}) + + End If + + + End Sub + + Private Sub funCreateUltraStatButtonToolbar(ByRef tmppopMDI As PopupMenuTool, ByRef ParentMenuItem As iMESMenuItem, Optional ByVal btlEnabled As Boolean = True, Optional ByVal tmpOptionSetKey As String = "") + + '產生UltraToolBar Button + sbtMDI = New StateButtonTool(ParentMenuItem.Name) + sbtMDI.MenuDisplayStyle = Infragistics.Win.UltraWinToolbars.StateButtonMenuDisplayStyle.DisplayCheckmark + sbtMDI.SharedProps.Tag = ParentMenuItem.Name + sbtMDI.SharedProps.ToolTipText = ParentMenuItem.Name + sbtMDI.SharedProps.Enabled = btlEnabled + sbtMDI.OptionSetKey = tmpOptionSetKey + + If gLanguageMode.ToUpper = ParentMenuItem.Name.ToUpper Or ParentMenuItem.Checked = True Then + sbtMDI.Checked = True + End If + + + If Not ParentMenuItem.Icon Is Nothing Then + 'Image + imlMDI.Images.Add(ParentMenuItem.Icon) + + sbtMDI.SharedProps.AppearancesSmall.Appearance.Image = imlMDI.Images.Count - 1 + + End If + + sbtMDI.SharedProps.Shortcut = ParentMenuItem.Shortcut + + UltraToolbarsManager1.Tools.Add(sbtMDI) + tmppopMDI.Tools.AddRange(New Infragistics.Win.UltraWinToolbars.ToolBase() {sbtMDI}) + + End Sub + + Private Sub funCreateUltraToolbar(ByRef ParentMenuItem As iMESMenuItem) + + '產生UltraToolBar Button + If Not ParentMenuItem.Icon Is Nothing Then + 'Image + imlMDI.Images.Add(ParentMenuItem.Icon) + 'Button + btlMDI = New ButtonTool(ParentMenuItem.Name) + btlMDI.SharedProps.Tag = ParentMenuItem.Name + btlMDI.SharedProps.ToolTipText = ParentMenuItem.Name + btlMDI.SharedProps.AppearancesSmall.Appearance.Image = imlMDI.Images.Count - 1 + utbMDI.Tools.AddRange(New Infragistics.Win.UltraWinToolbars.ToolBase() {btlMDI}) + End If + + End Sub + +#End Region + + +#Region " UltraWinExplorerBar & UltraWinToolbars Events " + + + Private Sub uebRPTMenu_ItemClick(ByVal sender As System.Object, ByVal e As Infragistics.Win.UltraWinExplorerBar.ItemEventArgs) Handles uebMenu.ItemClick + ExecutingFunction(e.Item.Key) + End Sub + + Private Sub uebRPTMenu_ItemDoubleClick(ByVal sender As System.Object, ByVal e As Infragistics.Win.UltraWinExplorerBar.ItemEventArgs) Handles uebMenu.ItemDoubleClick + ExecutingFunction(e.Item.Key) + End Sub + + Private Sub UltraToolbarsManager1_ToolClick(ByVal sender As System.Object, ByVal e As Infragistics.Win.UltraWinToolbars.ToolClickEventArgs) Handles UltraToolbarsManager1.ToolClick + + Dim strOptionSetKey As String = "" + + If (e.Tool.GetType Is GetType(StateButtonTool)) Then + strOptionSetKey = CType(e.Tool, StateButtonTool).OptionSetKey + End If + + ExecutingFunction(e.Tool.Key, strOptionSetKey) + + End Sub + + Protected Sub ExecutingFunction(ByVal FunctionKey As String, Optional OptionSetKey As String = "") + Dim strFormName As String + Dim TempChild As Form + Dim CurrentForm As Form + Cursor.Current = Cursors.WaitCursor + Try + + ' 2016/05/09 YF, 重新產生選單 + If OptionSetKey = "MODULE" Then + ModuleNo = FunctionKey.Replace("Module", "") + GenerateMenu() + Exit Sub + End If + + Select Case FunctionKey.ToUpper + Case "EXIT" + 'End + Me.Close() + Case "CASCADE" + Me.LayoutMdi(MdiLayout.Cascade) + Case "VERTICAL" + Me.LayoutMdi(MdiLayout.TileVertical) + Case "HORIZONTAL" + Me.LayoutMdi(MdiLayout.TileHorizontal) + + 'Change Language Mode + Case "zh-CHT".ToUpper + gLanguageMode = "zh-CHT" + + iMESExceptionManager.ExceptionManager.LanguageMode = gLanguageMode + + CurrentForm = Form.ActiveForm + + If Not CurrentForm Is Nothing Then + Call ExeChangeResource(CurrentForm, gLanguageMode) + End If + + '變更畫面上的表單(僅限MDI Child Form) + + For Each TempChild In Me.MdiChildren + If Not (TempChild Is CurrentForm) Then + Call ExeChangeResource(TempChild, gLanguageMode) + End If + Next + + '變更其他語系的Checked為False + 'Call funChangeChecked(mnuMenuItem) + + Case "zh-CHS".ToUpper + gLanguageMode = "zh-CHS" + + iMESExceptionManager.ExceptionManager.LanguageMode = gLanguageMode + + CurrentForm = Form.ActiveForm + + If Not CurrentForm Is Nothing Then + Call ExeChangeResource(CurrentForm, gLanguageMode) + End If + + '變更畫面上的表單(僅限MDI Child Form) + + For Each TempChild In Me.MdiChildren + If Not (TempChild Is CurrentForm) Then + Call ExeChangeResource(TempChild, gLanguageMode) + End If + Next + + '變更其他語系的Checked為False + 'Call funChangeChecked(mnuMenuItem) + + Case "en".ToUpper + gLanguageMode = "en" + + iMESExceptionManager.ExceptionManager.LanguageMode = gLanguageMode + + CurrentForm = Form.ActiveForm + + If Not CurrentForm Is Nothing Then + Call ExeChangeResource(CurrentForm, gLanguageMode) + End If + + '變更畫面上的表單(僅限MDI Child Form) + For Each TempChild In Me.MdiChildren + If Not (TempChild Is CurrentForm) Then + Call ExeChangeResource(TempChild, gLanguageMode) + End If + Next + + '變更其他語系的Checked為False + 'Call funChangeChecked(mnuMenuItem) + + Case "jp".ToUpper + gLanguageMode = "jp" + + iMESExceptionManager.ExceptionManager.LanguageMode = gLanguageMode + + CurrentForm = Form.ActiveForm + + If Not CurrentForm Is Nothing Then + Call ExeChangeResource(CurrentForm, gLanguageMode) + End If + + '變更畫面上的表單(僅限MDI Child Form) + For Each TempChild In Me.MdiChildren + If Not (TempChild Is CurrentForm) Then + Call ExeChangeResource(TempChild, gLanguageMode) + End If + Next + + '變更其他語系的Checked為False + 'Call funChangeChecked(mnuMenuItem) + + Case "kor".ToUpper 'Korea(韓國語系) + gLanguageMode = "kor" + + iMESExceptionManager.ExceptionManager.LanguageMode = gLanguageMode + + CurrentForm = Form.ActiveForm + + If Not CurrentForm Is Nothing Then + Call ExeChangeResource(CurrentForm, gLanguageMode) + End If + + '變更畫面上的表單(僅限MDI Child Form) + For Each TempChild In Me.MdiChildren + If Not (TempChild Is CurrentForm) Then + Call ExeChangeResource(TempChild, gLanguageMode) + End If + Next + + '變更其他語系的Checked為False + 'Call funChangeChecked(mnuMenuItem) + + Case "thai".ToUpper 'Thailand(泰國語系) + gLanguageMode = "thai" + + iMESExceptionManager.ExceptionManager.LanguageMode = gLanguageMode + + CurrentForm = Form.ActiveForm + + If Not CurrentForm Is Nothing Then + Call ExeChangeResource(CurrentForm, gLanguageMode) + End If + + '變更畫面上的表單(僅限MDI Child Form) + For Each TempChild In Me.MdiChildren + If Not (TempChild Is CurrentForm) Then + Call ExeChangeResource(TempChild, gLanguageMode) + End If + Next + + '變更其他語系的Checked為False + 'Call funChangeChecked(mnuMenuItem) + + Case "viet".ToUpper 'VietNam(越南語系) + gLanguageMode = "viet" + + iMESExceptionManager.ExceptionManager.LanguageMode = gLanguageMode + + CurrentForm = Form.ActiveForm + + If Not CurrentForm Is Nothing Then + Call ExeChangeResource(CurrentForm, gLanguageMode) + End If + + '變更畫面上的表單(僅限MDI Child Form) + For Each TempChild In Me.MdiChildren + If Not (TempChild Is CurrentForm) Then + Call ExeChangeResource(TempChild, gLanguageMode) + End If + Next + + '變更其他語系的Checked為False + 'Call funChangeChecked(mnuMenuItem) + + Case "ABOUTME" + strFormName = "frmAboutMe" + blnShow = False + For i = 0 To Me.MdiChildren.Length - 1 + If Me.MdiChildren(i).Name = strFormName Then + Me.MdiChildren(i).Focus() + blnShow = True + Exit For + End If + Next + + If blnShow = False Then '目前沒有顯示 + + Dim mainAssembly As System.Reflection.Assembly = LoadAssembly("COM_AboutMe.dll") + + If (mainAssembly Is Nothing) Then + Exit Sub + End If + + Dim objForm As Form = mainAssembly.CreateInstance(mainAssembly.GetName.Name & "." & strFormName) + + If objForm Is Nothing Then 'Form不存在 + MsgBox("Form : " & strFormName & " is not exist!!", MsgBoxStyle.Exclamation) + Exit Sub + End If + + objForm.MdiParent = MDI_Panel.ActiveForm + objForm.AutoScaleMode = Windows.Forms.AutoScaleMode.None + objForm.Show() + + End If + + Case Else + + Dim strExecutionFile As String = dsData.Tables(strUserPriv).Select("FunctionNo='" & FunctionKey & "'")(0)("ExecutionFile") + strFormName = dsData.Tables(strUserPriv).Select("FunctionNo='" & FunctionKey & "'")(0)("FormName") + + If (Not Application.OpenForms.Item(strFormName) Is Nothing) AndAlso (strFormName <> "frmRPT_Script") Then + If Application.OpenForms.Item(strFormName).WindowState <> FormWindowState.Normal Then Application.OpenForms.Item(strFormName).WindowState = FormWindowState.Normal + Application.OpenForms.Item(strFormName).Focus() + Exit Sub + End If + + Dim mainAssembly As System.Reflection.Assembly = LoadAssembly(strExecutionFile) + + If (mainAssembly Is Nothing) Then + Exit Sub + End If + + 'Show Form + 'Dim mainAssembly As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly + 'Dim objForm As Form = mainAssembly.CreateInstance(mainAssembly.EntryPoint.ReflectedType.Namespace & "." & strFormName) + Dim objForm As Form = mainAssembly.CreateInstance(mainAssembly.GetName.Name & "." & strFormName) + + If objForm Is Nothing Then 'Form不存在 + MsgBox("Form : " & strFormName & " is not exist!!", MsgBoxStyle.Exclamation) + Exit Sub + End If + + objForm.MdiParent = MDI_Panel.ActiveForm + + '設定值予公用變數 + Dim myfieldinfo() As System.Reflection.FieldInfo + Dim myType As Type = objForm.GetType + Dim i As Integer + myfieldinfo = myType.GetFields() + For i = 0 To myfieldinfo.Length - 1 + If myfieldinfo(i).Name.ToUpper = "PrivFunNo".ToUpper Then + myfieldinfo(i).SetValue(objForm, FunctionKey) + End If + Next i + objForm.AutoScaleMode = Windows.Forms.AutoScaleMode.None + objForm.Show() + + End Select + + Catch ex As Exception + MsgBox("This Function can not be executed. " & ex.Message, MsgBoxStyle.Exclamation, "Warning") + 'ExceptionManager.iMESShowDialog(defWinErrCode, ex.Message, ex.StackTrace) + End Try + Cursor.Current = Cursors.Default + End Sub + +#End Region + + Private Sub funLoadUserPriv() + + If (Not dsData.Tables(strUserPriv) Is Nothing) Then + dsData.Tables.Remove(strUserPriv) + End If + + Dim XmlDoc As New XmlDocument '處理Xml字串之物件? + Dim tmpStringReader As System.IO.StringReader '將字串轉換成可讀入DataSet的物件 + Dim InXml, OutXml, strIdentity, strParameter As String '呼叫WS的字串參數 + Dim XmlData, XmlSchema As String '儲存取回之資料及資料結構 + + '組InXml的字串 + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + strParameter = CombineXMLParameter("userno", "UserNo", "String", gUserNo, "") + strParameter = strParameter & CombineXMLParameter("moduleno", "ModuleNo", "String", ModuleNo, "") + InXml = CombineXMLRequest(strIdentity, strParameter) + + Try + OutXml = InvokeSrv("wsUSR.LoadUserPriv", InXml) + XmlDoc.LoadXml(OutXml) + + If ChkExecutionSuccess(XmlDoc) Then + strUserPriv = XmlDoc.GetElementsByTagName("returnvalue").Item(0).SelectNodes("loaduserpriv").Item(0).SelectNodes("name").Item(0).InnerXml + '取出Data + XmlData = XmlDoc.DocumentElement.GetElementsByTagName("loaduserpriv").Item(0).SelectNodes("value").Item(0).InnerXml + If XmlData <> "" Then + tmpStringReader = New System.IO.StringReader(XmlData) + dsData.ReadXml(tmpStringReader, XmlReadMode.InferSchema) + tmpStringReader.Close() + End If + Else + MsgBox(GetExceptionSysMsg(XmlDoc) & Chr(13) & GetExceptionMesMsg(XmlDoc), MsgBoxStyle.Exclamation) + Exit Sub + End If + + Catch e1 As Exception + MsgBox("Unexpected Error. Load User's Priv Failed," & e1.Message, MsgBoxStyle.Exclamation) + Finally + XmlDoc = Nothing + tmpStringReader = Nothing + + End Try + + End Sub + + Protected Overrides Sub Finalize() + MyBase.Finalize() + End Sub + + Public Sub funGetEnterpriseNo() + + Dim XmlDoc As New XmlDocument + Dim tmpStringReader As System.IO.StringReader + Dim InXml, OutXml, strIdentity, strParameter, XmlData, XmlSchema, strPara As String + Dim dsTemp As New DataSet + + strIdentity = CombineXMLIdentity(gComputerName, gUserNo, GetNow()) + strParameter = CombineXMLParameter("parameterno", "ParameterNo", "String", "EnterpriseNo", "") + InXml = CombineXMLRequest(strIdentity, strParameter) + + Try + + OutXml = InvokeSrv("wsSYS.LoadParameter", InXml) + + XmlDoc.LoadXml(OutXml) + + If ChkExecutionSuccess(XmlDoc) Then + + strPara = XmlDoc.GetElementsByTagName("returnvalue").Item(0).SelectNodes("loadparameter").Item(0).SelectNodes("name").Item(0).InnerXml + + XmlSchema = XmlDoc.DocumentElement.GetElementsByTagName("loadparameter").Item(0).SelectNodes("schema").Item(0).InnerXml + + If XmlSchema <> "" Then + '將XML讀入String Reader object中,因為Dataset讀入XML時必須透過String Reader物件 + tmpStringReader = New System.IO.StringReader(XmlSchema) + dsTemp.ReadXmlSchema(tmpStringReader) + tmpStringReader.Close() + End If + + XmlData = XmlDoc.DocumentElement.GetElementsByTagName("loadparameter").Item(0).SelectNodes("value").Item(0).InnerXml + + If XmlData <> "" Then + tmpStringReader = New System.IO.StringReader(XmlData) + dsTemp.ReadXml(tmpStringReader, XmlReadMode.InferSchema) + tmpStringReader.Close() + End If + + If dsTemp.Tables(strPara).Rows.Count > 0 Then + gEnterpriseNo = dsTemp.Tables(strPara).Rows(0)("ParameterValue").ToString.ToUpper + End If + + Else + MsgBox(GetExceptionSysMsg(XmlDoc) & Chr(13) & GetExceptionMesMsg(XmlDoc), MsgBoxStyle.Exclamation) + End If + + Catch ex As Exception + MsgBox("Unexpected Error. GetEnterpriseNo failed, " & ex.Message, MsgBoxStyle.Exclamation) + Finally + XmlDoc = Nothing + tmpStringReader = Nothing + dsTemp = Nothing + End Try + + End Sub + + ' 2016/05/09 YF, 產生模組選單 + Private Sub GenerateModuleItems() + + Dim aryModule() As String = {"AUT", "DT", "EMS", "ENT", "EQP", "IEW", "INV", "ISU", "MSA", "MTL", "OE", "OP", "PM", "PRD", "PRS", "QC", "RPT", "SMD", "SPC", "SYS", "USR", "WIP"} + Dim popModule As PopupMenuTool + Dim sbt As StateButtonTool + + Try + + popModule = New PopupMenuTool("MODULE") + popModule.SharedProps.Tag = "MODULE" + popModule.SharedProps.ToolTipText = "MODULE" + UltraToolbarsManager1.Tools.Add(popModule) + + '產生UltraToolBar Button + For Each m As String In aryModule + + sbt = New StateButtonTool(m & "Module") + sbt.MenuDisplayStyle = Infragistics.Win.UltraWinToolbars.StateButtonMenuDisplayStyle.DisplayCheckmark + sbt.CustomizedCaption = m + sbt.SharedProps.Tag = m + sbt.SharedProps.ToolTipText = m + sbt.SharedProps.Enabled = True + sbt.OptionSetKey = "MODULE" + + If ModuleNo = m Then + sbt.Checked = True + End If + + UltraToolbarsManager1.Tools.Add(sbt) + popModule.Tools.AddRange(New Infragistics.Win.UltraWinToolbars.ToolBase() {sbt}) + + Next + + Me.utbMDIMenu.Tools.AddRange(New Infragistics.Win.UltraWinToolbars.ToolBase() {popModule}) + + Me.utbMDIMenu.Tools.Item("MODULE").CustomizedIsFirstInGroup = DefaultableBoolean.True + + Catch ex As Exception + MsgBox("GenerateModuleMenu failed, " & ex.Message, MsgBoxStyle.Exclamation) + End Try + + End Sub + + Private Sub GenerateMenu() + + Try + + ' 2016/05/09 YF, 清空選單 + RemoveObject() + + '取出User Privileges + Call funLoadUserPriv() + + '1.Create MainMenu------------------------------------------------------------------------------------------------------------- + Dim strFileName As String + strFileName = GetMainMenuFileName() + + '檢查檔案是否存在 + If Dir(strFileName) = "" Then 'File not exist + MsgBox(strFileName & vbCrLf & "is not exist,Load MDI Form failed!!", MsgBoxStyle.Exclamation) + Exit Sub + End If + + '將處理 MenuItem 被點選的函數以 EventHandler Delegation 傳給 mnuMainMenu + Dim mnuMainMenu As New iMESMainMenu.iMESMainMenuControl(strFileName, Nothing) + + 'Add ExplorerBar MainMenu By carl 2007.08.14 + Dim j As Integer + Dim tempMenuSplit As Integer = defInteger + Dim panelmenu As MainMenu = New MainMenu(mnuMainMenu.CreateMainMenu(ModuleNo)) + Dim tmpMenuItem1 As iMESMenuItem + Dim tmpPopMenu As PopupMenuTool + UltraDockManager1.ControlPanes(0).Pinned = False + UltraDockManager1.ShowCloseButton = False + + uebMenu.GroupSettings.AllowDrag = DefaultableBoolean.False + uebMenu.GroupSettings.AllowEdit = DefaultableBoolean.False + uebMenu.GroupSettings.AllowItemDrop = DefaultableBoolean.False + uebMenu.ItemSettings.AllowDragCopy = UltraWinExplorerBar.ItemDragStyle.None + uebMenu.ItemSettings.AllowDragMove = UltraWinExplorerBar.ItemDragStyle.None + uebMenu.ItemSettings.AllowEdit = DefaultableBoolean.False + uebMenu.ShowDefaultContextMenu = False + + uebMenu.ItemSettings.UseDefaultImage = Infragistics.Win.DefaultableBoolean.False + uebMenu.ItemSettings.MaxLines = 2 + + If Not dsData.Tables(strUserPriv) Is Nothing Then '沒有任何權限,所有Privilege MenuItem都不可使用 + + For i = 0 To panelmenu.MenuItems.Count - 1 + tmpMenuItem1 = CType(panelmenu.MenuItems(i), iMESMenuItem) + + If i <= panelmenu.MenuItems.Count - 4 Then + uebMenu.Groups.Add(tmpMenuItem1.Text.ToUpper) + uebMenu.Groups(i).Expanded = True + End If + + If tmpMenuItem1.Name.ToUpper = "EXIT" Then + + funCreateUltraButtonMenuToolbar(tmpMenuItem1) + + Else + + tmpPopMenu = funCreateUltraPopupMenuToolbar(tmpMenuItem1) + + For j = 0 To tmpMenuItem1.MenuItems.Count - 1 + If CType(tmpMenuItem1.MenuItems(j), iMESMenuItem).MenuType = iMESMenuItem.mesMenuType.MenuPrivilege Then + If dsData.Tables(strUserPriv).Select("FunctionNo='" & tmpMenuItem1.MenuItems(j).Text.ToUpper & "'").Length > 0 Then + funCreateUltraMenuItemToolbar(tmpPopMenu, CType(tmpMenuItem1.MenuItems(j), iMESMenuItem)) + + uebMenu.Groups(i).Items.Add(tmpMenuItem1.MenuItems(j).Text) + + funCreateUltraToolbar(CType(tmpMenuItem1.MenuItems(j), iMESMenuItem)) + + If tempMenuSplit = j Then + tmpPopMenu.Tools(tmpMenuItem1.MenuItems(j).Text).InstanceProps.IsFirstInGroup = True + End If + + Else + funCreateUltraMenuItemToolbar(tmpPopMenu, CType(tmpMenuItem1.MenuItems(j), iMESMenuItem), False) + + If tempMenuSplit = j Then + tmpPopMenu.Tools(tmpMenuItem1.MenuItems(j).Text).InstanceProps.IsFirstInGroup = True + End If + + End If + + ElseIf CType(tmpMenuItem1.MenuItems(j), iMESMenuItem).MenuType = iMESMenuItem.mesMenuType.MenuString Then + + + funCreateUltraMenuItemToolbar(tmpPopMenu, CType(tmpMenuItem1.MenuItems(j), iMESMenuItem)) + + If tempMenuSplit = j Then + tmpPopMenu.Tools(tmpMenuItem1.MenuItems(j).Text).InstanceProps.IsFirstInGroup = True + End If + + ElseIf CType(tmpMenuItem1.MenuItems(j), iMESMenuItem).MenuType = iMESMenuItem.mesMenuType.MenuSplit Then + + tempMenuSplit = j + 1 + + End If + + Next + + utbMDIMenu.Tools.AddRange(New Infragistics.Win.UltraWinToolbars.ToolBase() {tmpPopMenu}) + + End If + + Next + + End If + + 'Add UltraToolBar----------------------------------------------------------------------------------------------------------------- + If utbMDI.Tools.Count > 0 Then + imlMDI.ImageSize = New Size(24, 24) + utbMDI.Text = "Toolbar" + utbMDI.Settings.ToolDisplayStyle = ToolDisplayStyle.ImageAndText + utbMDI.Settings.CaptionPlacement = TextPlacement.Default + utbMDI.IsMainMenuBar = False + utbMDI.DockedPosition = DockedPosition.Top + UltraToolbarsManager1.Style = ToolbarStyle.Office2003 + UltraToolbarsManager1.ImageListSmall = imlMDI + UltraToolbarsManager1.Toolbars.Add(utbMDI) + End If + + 'Add Menu UltraToolBar----------------------------------------------------------------------------------------------------------------- + If utbMDIMenu.Tools.Count > 0 Then + imlMDI.ImageSize = New Size(24, 24) + utbMDIMenu.Text = "MainMenu" + utbMDIMenu.Settings.ToolDisplayStyle = ToolDisplayStyle.ImageAndText + utbMDIMenu.Settings.CaptionPlacement = TextPlacement.Default + utbMDIMenu.IsMainMenuBar = True + utbMDIMenu.DockedPosition = DockedPosition.Top + UltraToolbarsManager1.OptionSets.Add(OptionSet1) + UltraToolbarsManager1.Style = ToolbarStyle.Office2003 + UltraToolbarsManager1.ImageListSmall = imlMDI + UltraToolbarsManager1.Toolbars.Add(utbMDIMenu) + UltraToolbarsManager1.Toolbars("MainMenu").ToolbarsManager.ToolbarSettings.ToolSpacing = 5 + End If + + ' 2016/05/09 YF, 產生模組選單 + GenerateModuleItems() + + Catch ex As Exception + MsgBox("GenerateMenuItem failed, " & ex.Message, MsgBoxStyle.Exclamation) + Finally + Me.Text = "Test" + ExeChangeResource(Me, gLanguageMode) + End Try + + End Sub + + Private Sub RemoveObject() + + uebMenu.Groups.Clear() + utbMDIMenu.Tools.Clear() + utbMDI.Tools.Clear() + UltraToolbarsManager1.Toolbars.Clear() + UltraToolbarsManager1.Tools.Clear() + UltraToolbarsManager1.OptionSets.Clear() + Me.UltraDockManager1.DockAreas(0).Panes.Item(0).Text = ModuleNo + Me.UltraDockManager1.DockAreas(0).Panes.Item(0).Key = ModuleNo & "Module" + + For i As Integer = Application.OpenForms.Count - 1 To 0 Step -1 + + If (Application.OpenForms.Item(i).Name <> "MDI_Panel") Then + Application.OpenForms.Item(i).Close() + End If + + Next + + End Sub + +End Class diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/Application.Designer.vb b/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/Application.Designer.vb new file mode 100644 index 0000000..4f9342a --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/Application.Designer.vb @@ -0,0 +1,13 @@ +'------------------------------------------------------------------------------ +' +' 這段程式碼是由工具產生的。 +' 執行階段版本:4.0.30319.42000 +' +' 對這個檔案所做的變更可能會造成錯誤的行為,而且如果重新產生程式碼, +' 變更將會遺失。 +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/Application.myapp b/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/Application.myapp new file mode 100644 index 0000000..758895d --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + false + false + 0 + true + 0 + 1 + true + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/AssemblyInfo.vb b/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/AssemblyInfo.vb new file mode 100644 index 0000000..d43ca3b --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' 組件的一般資訊是由下列的屬性集控制。 +' 變更這些屬性的值即可修改組件的相關 +' 資訊。 + +' 檢閱組件屬性的值 + + + + + + + + + + +'下列 GUID 為專案公開 (Expose) 至 COM 時所要使用的 typelib ID + + +' 組件的版本資訊由下列四個值所組成: +' +' 主要版本 +' 次要版本 +' 組建編號 +' 修訂編號 +' +' 您可以指定所有的值,也可以依照以下的方式,使用 '*' 將組建和修訂編號 +' 指定為預設值: +' + + + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/Resources.Designer.vb b/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/Resources.Designer.vb new file mode 100644 index 0000000..3995654 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/Resources.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' 這段程式碼是由工具產生的。 +' 執行階段版本:4.0.30319.42000 +' +' 對這個檔案所做的變更可能會造成錯誤的行為,而且如果重新產生程式碼, +' 變更將會遺失。 +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + +Imports System + +Namespace My.Resources + + '這個類別是自動產生的,是利用 StronglyTypedResourceBuilder + '類別透過 ResGen 或 Visual Studio 這類工具。 + '若要加入或移除成員,請編輯您的 .ResX 檔,然後重新執行 ResGen + '(利用 /str 選項),或重建您的 VS 專案。 + ''' + ''' 用於查詢當地語系化字串等的強類型資源類別。 + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' 傳回這個類別使用的快取的 ResourceManager 執行個體。 + ''' + _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Test.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' 覆寫目前執行緒的 CurrentUICulture 屬性,對象是所有 + ''' 使用這個強類型資源類別的資源查閱。 + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set + resourceCulture = value + End Set + End Property + + ''' + ''' 查詢類型 System.Byte[] 的當地語系化資源。 + ''' + Friend ReadOnly Property iMES() As Byte() + Get + Dim obj As Object = ResourceManager.GetObject("iMES", resourceCulture) + Return CType(obj,Byte()) + End Get + End Property + End Module +End Namespace diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/Resources.resx b/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/Resources.resx new file mode 100644 index 0000000..c14f0b3 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/Resources.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\resources\imes.isl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/Settings.Designer.vb b/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/Settings.Designer.vb new file mode 100644 index 0000000..d0b470b --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' 這段程式碼是由工具產生的。 +' 執行階段版本:4.0.30319.42000 +' +' 對這個檔案所做的變更可能會造成錯誤的行為,而且如果重新產生程式碼, +' 變更將會遺失。 +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + _ + Partial Friend NotInheritable Class MySettings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) + +#Region "My.Settings 自動儲存功能" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + _ + Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub +#End If +#End Region + + Public Shared ReadOnly Property [Default]() As MySettings + Get + +#If _MyType = "WindowsForms" Then + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If +#End If + Return defaultInstance + End Get + End Property + End Class +End Namespace + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.Test.My.MySettings + Get + Return Global.Test.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/Settings.settings b/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/Settings.settings new file mode 100644 index 0000000..f7f176a --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/Settings.settings @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/licenses.licx b/SRC/MESWin/SYS4/21670ll/MESWin/Test/My Project/licenses.licx new file mode 100644 index 0000000..e69de29 diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Test/Resources/iMES.isl b/SRC/MESWin/SYS4/21670ll/MESWin/Test/Resources/iMES.isl new file mode 100644 index 0000000..0679a67 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/Test/Resources/iMES.isl @@ -0,0 +1,4303 @@ + + + + 2015-02-05T03:06:30 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA3gMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADgElEQVRoQ+2XzWsTQRjGq/Qk1YOgFz3qHyLFi4LeRAri0YMHTx68eCseBMFL8W+waGPRIoixYkUrUmgVaZKaNJ/bbNpNm48mjUle531lttPpZGcm0IvMAw+Tncy7s89vZ2eTkVwuB7aOx+PWnpyctPax52k4bmEcP0wNQWi328auVCoUykYcQqPRMDaOx4u0EQ9mIxzvIDgIDgLJQWByEJgcBCYHgclBYHIQmBwEphACBjN1sVikULbGULbmoY7aI6urq2BrVUidVSF1tv0zNIzpDxSGspHneRTKRhyCatkPMo7Hi7QRD2YjHO8gmEDodrtQKBSgWq3SsQmErb0eXF/YgGe/a3RsAiFfrcHVj0V4+qtCxyYQ5HlMIKhqIiEggFKpRPsAgkDpIOAkE199GGEnv7ZQpj4dBARwY6FENVfmi9Sng6CaRwdhUM1ACP1+nwLj9/gGQSCoKAidXh9uf/Npsxmf92Cj9a8mCkK11oCJzyWqufS+AOmgRv1REAbNEwUhqiaEgL8BMGyz2aTjIAggkUhAOp2G3d1d6kOJEJa39+DyR3bst4DNAY8T23DiRQYuzuXhU6VFY1AihEVvG8bjBZjLBlCrs7ArPtVceJOFd/kghCNCMJ1HhGBTE0Iol8t019fW1sD3fUgmk5BKpaDV2i9AiRDuLm0S2fOvc3B/eQtOzazD2dksfNls0/dcIoQ7ix7VnJtdh3vfN+DkywycebUOH/LVEIAMwXQeEYJNzYHHAQPi3cc+BMBXhSj5cbi1WIbR6Qw9Z6djWXjr7a8aLhEC+iZb/qPTbHKsmclALLO/ArhFCCiTeUQIKNOaAxB6vR79KsRVgI8D7guyZAjNPz14+DOAMXZHnyR3oNU9XCND8Hfq8GCpDGNseT764cNmrX4AAFqGYDKPDMG05tDGiME7nY4SAEqGgMKTp+od2nxUkiGgMfiKv0Mbo9jPLUNA6eaRIaBMag5B0EkFQScVBJ1VEHRSQdAphIDBTI1vCwxlawxlax7qqE3/Im2tCqmzKqTOuLurLnqQcfwwNQTBRhyCjTgEG8ViMbpIG+FbYJiaEAK/y1Hm4zgEOoHGKBGCaoxslAhBNUY2HzdMjYOAn8VwOvNxDgJrHQTWOgisdRBY6yCw1kFg7X8LwVQiBFOJEEwlQjAVBhqmhiDYGkPZGiFgMFNPTU2Fd+xonYa/RnTXOFz4kRIAAAAASUVORK5CYIILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + + 249, 249, 249 + MiddleCenter + + + + + White + Segoe UI, 9pt + 75, 75, 75 + MiddleLeft + MiddleLeft + + + + + White + Segoe UI, 8.25pt + 75, 75, 75 + + + + + White + Segoe UI, 9pt + 75, 75, 75 + + + + + 75, 75, 75 + White + 0, 170, 222 + White + Silver + Left + Long + False + False + + + + + White + Segoe UI, 9pt + 75, 75, 75 + + + + + White + Flat + Segoe UI, 9pt + 75, 75, 75 + + + + + White + None + Microsoft Sans Serif, 12pt + 0, 170, 222 + MiddleCenter + + + + + 0, 170, 222 + White + None + Gainsboro + Flat + Segoe UI, 9.75pt, style=Bold + MiddleCenter + AlwaysUnderline + 133, 133, 133 + MiddleCenter + 179, 230, 245 + + + + + White + FixedSingle + Segoe UI, 9pt + 75, 75, 75 + + + + + True + White + FixedSingle + Segoe UI, 9pt + 75, 75, 75 + Nonclickable + LargeIcon + + + + + White + 75, 75, 75 + True + True + 0, 170, 222 + White + 191, 191, 191 + + + + + White + None + Segoe UI, 8.25pt + 75, 75, 75 + + + + + White + None + + + + + White + White + 75, 75, 75 + Segoe UI, 9pt + White + White + True + White + True + White + 75, 75, 75 + + + + + White + Segoe UI, 9pt + 75, 75, 75 + MiddleCenter + MiddleLeft + + + + + White + None + 75, 75, 75 + + + + + White + None + 75, 75, 75 + + + + + 133, 133, 133 + None + + + + + Segoe UI, 9pt + True + + + + + White + FixedSingle + Segoe UI, 9pt + 75, 75, 75 + Left + + + + + White + + + + + White + None + False + Segoe UI, 9pt + 75, 75, 75 + False + False + True + 25 + False + True + True + + + + + White + Segoe UI, 8.25pt + 75, 75, 75 + + + + + + True + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA7QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADj0lEQVRoQ+2YzWsTQRiHq/Qk1YOgFz0q/h1SvCjoTaQgXgQPHjx58OKteBAEL8W/waKNRasgxhYrpiqFVrFNUpPmu9k0SZuPJo1JXuf3ym4n2012JuBtHvgddjNvZt9nZycfI8lkknQTDAa1Mzk5qZ0jz2N0VCMYP0wNS2g2m8opFArclA5ra2vcVK1WU04gEOCL1OH2t8JQNUaCkWAkMEaCwEgQGAkCI0FgJAiMBIGRIHAkoDHVZDIZloDGVBMKhVgCGlPN1NQUf6/HRarmwtvUUDUj6+vrpBtI0A0k6GaYH0PD1LAEHXK5HDelgy3Ba9n3C8bjInWwG9MB440EFQntdpvS6TSVy2U+VpFQ3O/QtcUteva7wscqElLlCl1ZyNDTXwU+VpHgnkdFglfNQAkQkM1meR+ACOAnAZNMhCwaEW9+dTHP5/wkQMD1xSzXXJ7P8Dk/CV7z+EnoV9NXQrfb5YbxOj5BIAQMktDqdOnWV4s3m/H5HG01/tUMklCu1Gjic5ZrLn5IU6xU4fODJPSbZ5CEQTWOBHwHQLP1ep2PS6UShcNhisVitLe3x+eALGFlZ58uLYhjq0FiDnoc3qFjL+J0fi5FnwoNHgNkCUu5HRoPpmkuUaJKVTS7anHNuTcJep8qOXJkCarzyBJ0ahwJ+Xye7/rGxgZZlkWRSISi0Sg1GgcFQJZwd3mbzZ59naT7K0U6MbNJp2cT9GW7ya/byBLuLOW45szsJt37vkXHX8bp1KtN+pgqOwLcElTnkSXo1PQ8DmgQdx/nIMBeFTLux+HmUp5Gp+P8nJ0MJOhd7mDV2MgSkBti+Y9Oi8lRMxOnQPxgBdiRJQCVeWQJQLWmR0Kn0+FvhVgFeBywL7hxS6j/6dDDnyUaE3f0SWSXGu3DNW4J1m6VHiznaUwsz0c/LNquVHsEIG4JKvO4JajWHNoY0Xir1fIUANwSAN48Wm3x5uOFWwKCxletXd4Y5fN23BKA3zxuCUCl5pAEP7wk+OElwS9eEvzwkuCHIwGNqQafFmhKN2hKN3ZT/zv8K1I3Xk36xatJv2B397rofsH4YWpYgg7FYpGb0sGWoAPG4yJ1sBvTAeMdCfKd7hcgS8BHj1+ALMFrjDtAluA1xh0gS/Aa4w4wEgRGgsBIEBgJAiNBYCQIjASBkSDokaCKLEEVWYIqsgRVZAmqOBLQmGrwxyua0g2a0o3d1P9NjP4C33z6NGMDUeMAAAAASUVORK5CYIILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2zXFsx4kTZ/GWw/2d+GbevFz7Oe7IXzqy/XLPu/f871kTEg+y2azs7u7K4uLitayvr0s6nS6uuInz83OZm5uTvr4+6e3tVRkbG5NkMimXl5fFVc/j+PhYuru7pa6uTmpra1UaGxtle3u7pM7maU6+/DcmrzStyUuNV/JWeFfC++dScKtUrKMkFAoFicfjanAsFlOjLy4u5OzsTJ9vbW1JJBJRkizy+bxsbm6qwXyyHlgip6amlET7HGQyGRkdHZWmpibVOzk5UaMhcnZ2Vtra2pREnluksgX5ZeFQ3g5H5NfFIzWM8ycyBfljNSUfPYnKt2Nx2T7NXykY3FZHSUgkEnpwa7xfTk9PJRqN6k3lcjlVxPClpSU1wAXIgFTIwHgwPj6uHoMnuADpw8PD0t7ernsCjPjOHNga4kfsIi8/zh8aw/Yken5l1G11Qhx2Y2NDN3URYAVjd3Z21M35zk2WIsCCW15YWFDyuN3m5uaSBFjgleFwWCYnJ9WId3oisnX27JZdyJt9vh6JyW9PU1XphPCA/f19p+F+wQAMIgdAXCVAZ3p6WnMAoVAq5r0gJDs6OjSefzZuXSg+L4fxZEY++SdalU6IuC0VBn7BXQkD4jbICyzwNG6VJBjkBRbs09raKi+bRLaefpaHyiF+UZD3H+9VpaMkuAx2CYbjCT09PcXXBAP3xnNqamoq8gJA0u3q6pIX/l4rmfn9yJiFnw/FqtK5tSdQKfAEflcCEinhQBn0Zv1yIJFSKShpO2dXiTgIR6YifGiyfjU6ITI41cFvsEswglxAUtzb2yu+qjxIuIQDfQBJshKQfAkHavrDjcpCaOE4K+89jlSlE8ILcHFu2WW4VyiTJC0OSV339g2lAMmrq6u6R2dnZ0W5ZGRkRAYHB7Wp+WxgXxImdoPwkyl5P0wnq9LRPoFGCHEZbgVvwSC+E9uE0crKir7MBdbgLRgE0fwml/T39xdX3AT5A29paGiQg4MDje1vRuPyYPKguOImcsbWP9dP5M3uXZlPZavSURK4UW4KSaVS6sLcGN5BCFBC19bW9LcFZBDr8/PzcnR0pO/ACHIA+lQRGh/eZ8G7aIQolxDE+0iCvAujKaH19fXPhdq2ie+PTRn7ypS+wcSFyeh5TWjE81wqo+XwjUc7MmT+ZnFbnevZgcPj5hBB3POJIXwnBDioHyQw1s3MzGjcUwXoECcmJjQE8AA/IIg19AHEPVWAJNjS0iIDAwNKhh90db+bpubT/qiWtC+G9uUD0+292xuR7407c5t+3EbnmgQAEYQF7TDujthushTwmDszQHED3Dyfdj7AVXF12mVc1JsI79wAheFk/lLZHoNJjNyUJQjD78wAhVEYxCe3ws0Tz9zi8vKyJkVI4G8Q5R+gssavHm6cyOsdWxIy3dq91k2TmROSNKyj4xqgyumUGqDK6ZQaoCrVCZEDbDKCAG8+sEIocDhcm9DwDlB/mU1ebV7XTazQut4fjkna1CLXABWk4xqggnRcA1SlOiGMtmFgPcAveARr8AjbNtsweK39imW/3GvdkNWTrOr5B6ggHcLCP0AF6bgGqEp1dHaw8BvvFeKaW8RzvAOUaxMrtKV4kH+Acq21gg5k+wco11or6LgGKNdaK14dJcEmO27cbzxivQWDiG/vAAWrrk1ww6eGbd7tH6CCdFwDVJCOa4CqVCdEbJMLAEnQRQIhwO1wOL57B6gHUwfyotnYvxFNSSKT1yzvH6CCdFwDVJCOHYaq0QlxSOo6RiIYZz0CD8Bo2y5TJvnHq3eAItPeH45fsw7LbPIkfpUzXANUkI5rgArScQ1Qlepon2CnQ4DLYxy3jkAMscwMgNcQBvyGJDtApXOXsprOKbO42YHZnDUQWmqAcumwd7kByqXjH4aq0VESMNp2hdyUNZxDQYSdIO/8AMVhDg8PlQxclyrAJ8YQApDhB89Y8/8eoET+A46Kvwl1DPddAAAAAElFTkSuQmCCCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAAvQMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADX0lEQVRoQ+2Xz2sTQRTHq/Qk1YOgFz3qHyLFi4LeRAri0YMHTx68eCseBMGbf4NFW4sWQYwtVrRFCq0iTVKT5kezzabdtPnRpDHJc97IbCfTyc68gEVhPvA97HReZt9nZyfN0OrqKlATi8XIGR8fJ+fY8xQcJwTnD1LDJTSbTesICRSEhFqtZh2cjzdJQTRGAec7CU6Ck8BxEhhOAsNJYDgJDCeB4SQwnARGKIEabIoabIoa0dTfzj8tgfpjCDNIDZdAQUigICTotn2/4Hy8QQqiKQpOAsNKQrvdhnw+D+VymV/bSNje78D1+U149rPCr20k5MoVuDq3AU9/lPi1jQR1HRsJuppICSigUCjwxlEEYpKAi4x98WGIffi1+SIfM0lAATfmC7zmyuwGHzNJ0K1jktCvpq+EbrcLnufxprPZLBeCRElodbpwe9Hnh9PorAebjT81URLKlRqMfSrwmkvv85AKKnw8SkK/daIkRNWEEvB/AGy2Xq/z6yAIIB6PQyqVgr29PT6GyBKWd/bh8pwHMb8BbA14HN+BEy/ScHEmBx9LDT4HkSUseDswGsvDTCaASpU1u+LzmgtvMvAuF4RyZAm268gSKDWhhGKxyBtcW1sD3/chkUhAMpmERuOgAJEl3F3a4mbPv87C/eVtODW5DmenM/B5q8n/LpAl3FnweM256XW493UTTr5Mw5lX6/AhVw4FqBJs15ElUGp6Xgfc/vj0cQwFiF0hI0tAbi0UYXgizd+z01MZeOsd7BqBLAFzk23/4Qm2ONZMpmEqfbADRGQJiM06sgTEtqZHQqfTgVKpxHcBvg54LqioEuq/OvDwewAj7Ik+SexCo324RpXg71bhwVIRRtj2fPTNh61KtUcARpVgs44qwbbm0MGIjbdaLa0ARJWA4Icnqy1++OhQJWCw8RV/lx+M8riIKgExraNKQGxqDkkwoZNgQifBFJ0EEzoJJkIJ1GBT1GBT1ODBJhqzzSA1Q/i1SI2uSVN0TZpypBIoCAkUhAQKOB9vkIJoikKPBPGUoyLmCQn41WMKIkvQzVGDyBJ0c9QgsgTdHDWIk8BwEhhOAsNJYDgJDCeB4SQw/hsJ/EYNEfMGqQkl2CJLsEWWYIsswRZZgi2hBGqwKWqwKWqO5rdDCn4DepjAZpDd1xAAAAAASUVORK5CYIILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA8QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADk0lEQVRoQ+2YTWsTURSGq3Ql1YWgG10q/g4pbhR0J1IQN4ILF65cuHEXXAiCm+JvsGhj0SqIscWKqUqhVWyT1KT5biZN0uajSWOS432PJL2ZTjL3DggK94EXOpM5uXOeuXNn0pFEIkG6CQQC2vH5fNo59DRKhzWC473UsIRGo6GcfD7PTemwurrKTVWrVeX4/X4+SR1ufsl7qjESjAQjgTESBEaCwEgQGAkCI0FgJAiMBEFPAhpTTTqdZgloTDXBYJAloDHVTE5O8ns9TlI1514nPdWMrK2tkW4gQTeQoBsvP4a81LAEHbLZLDelSiQS4dmAppym/aBgNuAkdcCV9VLz1yXkcrn/X0Kr1aJUKkWlUom3VSQU9tp0ZWGTnvws87aKhGSpTJfm0/T4R563VSTYx1GR4FQzVAIEZDIZXgcgArhJwCATQYtGxMlcXsjxPjcJEHB1IcM1F+fSvM9NgtM4bhIG1QyU0Ol0uGF8jicIhIBhEprtDt34bPFiMz6Xpc36n5phEkrlKk18zHDN+XcpihbLvH+YhEHjDJMwrKYnAe8AaLZWq/F2sVikUChE0WiUdnd3eR+QJSxv79GFebFt1UmMQQ9D23TkWYzOzibpQ77OxwBZwmJ2m8YDKZqNF6lcqZJvxeKaM6/i9DZZ7MmRJaiOI0vQqelJwAKGv9fX18myLAqHw7yy1+v7BUCWcHtpi82efpmgu8sFOja9QSdn4vRpq8Gfd5El3FrMcs2pmQ2683WTjj6P0YkXG/Q+WeoJsEtQHUeWoFPTdzugQVx97IOA7qyQsd8O1xdzNDoV4/vsuD9Ob7L7s6aL/Xa4Jqb/6JR4PqNmOkb+2P4M6MZ+O6iMI0sAqjV9EtrtNr8VYhbgdsC6YMcuofarTfe/F2lMXNFH4R2qtw7W2CVYOxW6t5SjMTE9H3yzaKtc6ROA2CWojGOXoFpzYGFE481m01EAsEsA+PJIpcmLjxNOCyMaX7F2eGGU93fjtDC6jWOXAFRqDkhww0mCG04S3OIkwQ0nCW70JKAx1eBpAQloTDX//A8oPBZ1Awm6gQTdoCFcWdXgeC81LEGHQqHATemA2YCmdMBswEnqgCvrpaYnQb7SgwJkCXj0uAXIEpyOsQfIEpyOsQfIEpyOsQcYCQIjQWAkCIwEgZEgMBIERoLASBD0SVBFlqCKLEEVWYIqsgRVehLQmGrwj1dIQGOq+bd/QCXpN3LrT59/MUO0AAAAAElFTkSuQmCCCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAASAIAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAAB6klEQVRoQ+2ZQUsCQRTHLTpFdOjQqWv0QaJr3YPo0q1z126ego7SZygqiahOS5GQFQRCICVlrqCuumFlmaa93hvMJtlwZmFDdt8P/gd33+C+3+7MOhgCFxiGoZ1wOKyd/8K1BB2SyaRoqlqtKicajbZHew9LQFgCwhIQloCwBIQlICwBYQkIS0BYAuJaAjWmmng8LiRQY6qJRCLtb/Me1xJ00894Ph1SqZR4GvoZzyVYlhVMCXa9BXOxAmzcPYvPgZNAAubjRQht3sNszBLHAiWh0fqExYsiDKCA6eM8FGpNcdzXEhKVOsyc5MEo1gD7h7WbCgxvp2HyIAunpZqoIXwtYfmqLO76xL4JKwkbRncfYHwvA2fld3H+G99Ph4VzC4a20mINGItm4Cj/1j7zg+8lvH60YPX6EUZ20rB++wS1Js6LLgKxMFLjqZeGWBidCISEXvhWAjWmGtpA9TMh0zRBNyRBN7SL1A29eQY1QvVuxggJOti2LZrSgZ4GakoH2k7TReqwdFlyNaYjQb7Tf4WQJdBrsVcIWYJTTXcIWYJTTXcIWYJTTXcIloCwBIQlICwBYQkIS0BYAsISkF8SVJElqCJLUEWWoIosQZWOBGpMNblcTkigxlTj9h8o+l1PF6maqcOsizFZ+AIGcQg8msEiNgAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA+QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADm0lEQVRoQ+2YzWsTQRjGq/Qk1YOgFz0q/h1SvCjoTaQgXgQPHjx58OIteBAEL8W/waKNRasgxhYrpiqFVrFNUpPmu9k0SZuPJo1JXud5Jel0u8nOrAgq88AD2ck+mX1/87G7GUokEqTrQCCgbZ/Pp+0Dj6N0UMM430uGITQaDWXn83kuSkfLy8tcVLVaVbbf7+eL1NH1T3lPGQPBQDAQWAaCkIEgZCAIGQhCBoKQgSBkIAj1IKAwVafTaYaAwlQdDAYZAgpT9fj4OD/X4yJVfeZl0lNmaGVlhXQNCLoGBF17eRnykmEIOspms1yUqiKRCM8GFOU07fsZswEXqSOMrJfMH4eQy+X+fQitVotSqRSVSiU+VoFQ2GnTpbl1evS9zMcqEJKlMl2YTdPDb3k+VoFg70cFglNmIAQAyGQyvA8ABOQGAZ2MBS0aEhdzcS7HbW4QAODyXIYz52fS3OYGwakfNwj9Mn0hdDodLhjf4w4CINAgCM12h659tHizGZ3J0nr9V2YQhFK5SmPvM5w5+yZF0WKZ2wdB6NfPIAiDMj0IeAZAsbVajY+LxSKFQiGKRqO0vb3NbZAMYXFzh87NimOrTqIPuh/apENPYnR6Oknv8nU+B5IhzGc3aTSQoul4kcqVKvmWLM6cehGn18liD44MQbUfGYJOpgcBGxg+r66ukmVZFA6HeWev13cDkAzh5sIGkz35PEG3Fwt0ZHKNjk/F6cNGg7/vSoZwYz7LmRNTa3Tr8zodfhqjY8/W6G2y1ANgh6DajwxBJ7NnOaBAjD7aAKA7K2TZl8PV+RwNT8R4nR31x+lVdnfWdGVfDlfE9B+eEPdnZCZj5I/tzoCu7ctBpR8ZAqSa2QOh3W7zUyFmAZYD9gW77BBqP9p092uRRsSIPghvUb21P2OHYG1V6M5CjkbE9Lz3xaKNcmUPANgOQaUfOwTVzL6NEYU3m01HAJAdAoQfj1SavPk4yWljROFL1hZvjHJ7104bo1s/dgiQSmYfBDc5QXCTEwQ3O0FwkxMEN/UgoDBV424BCChM1X/9CxRui7oGBF0Dgq5REEZW1dgAvWQYgo4KhQIXpSPMBhSlI8wGXKSOUJCXTA+CPNL9DMkQ+AdcDMkQnM6xG5IhOJ1jd/c8LxkDAZ+7xdkLdjJkIAgZCEIGgpCBIGQgCBkIQv81BFXJEFQlQ1CVDEFVKMhLhiGgMFXjj1dAQGGq/p0XqO6oqVo/E6WfdBY2E/BzX6AAAAAASUVORK5CYIILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA6wMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADjUlEQVRoQ+2XT2sTQRjGq/Qk1YOgFz0qfg4pXhT0JlIQL4IHD548ePEWPAiCl+JnsGhj0SqIscWKqUqhVWyT1KT532zapM2fJo1JXud5ZdPpdpOdWRAU5gcPdDfzdvb97exsMpRKpUg3oVBIO4FAQDuHnsbpsEYw3k8NS2g2m8opFovclA7Ly8vcVK1WU04wGOSL1OHml6KvGiPBSDASGCNBYCQIjASBkSAwEgRGgsBIEPQkoDHVZLNZloDGVBMOh1kCGlPN+Pg4f6/HRarm3Ou0r5qhlZUV0g0k6AYSdOPnx5CfGpagQz6f56ZUicVivBrQlNuy7xesBlykDrizfmr+uoRCofD/S2i325TJZKhcLvOxioTN3Q5dmVunJz8rfKwiIV2u0KXZLD3+UeRjFQnOeVQkuNUMlAABuVyO9wGIAF4SMMlY2KIhcTGX5wp8zksCBFydy3HNxZksn/OS4DaPl4R+NX0ldLtdbhif4w0CIWCQhFanSzc+W7zZjM7kab3xp2aQhHKlRmMfc1xz/l2G4qUKnx8kod88gyQMqulJwHcANFuv1/m4VCpRJBKheDxOOzs7fA7IEha3dunCrDi2GiTmoIeRLTryLEFnp9P0odjgMUCWMJ/fotFQhqaTJapUaxRYsrjmzKskvU2XenJkCarzyBJ0anoSsIHh79XVVbIsi6LRKO/sjcZeAZAl3F7YYLOnX6bo7uImHZtco5NTSfq00eTPbWQJt+bzXHNqao3ufF2no88TdOLFGr1Pl3sCnBJU55El6NTsexzQIO4+zkGAvSpknI/D9fkCDU8k+Dk7HkzSm/zeqrFxPg7XxPIfnhDvZ9RMJiiY2FsBdpyPg8o8sgSgWrNPQqfT4W+FWAV4HLAvOHFKqP/q0P3vJRoRd/RRdJsa7YM1TgnWdpXuLRRoRCzPB98s2qhU9wlAnBJU5nFKUK05sDGi8Var5SoAOCUA/PNYtcWbjxtuGyMaX7K2eWOUz9tx2xi95nFKACo1ByR44SbBCzcJXnGT4IWbBC96EtCYavC2gAQ0ppp//gcUXou6gQTdQIJu0BDurGow3k8NS9DBlqADVgOa0gGrARepA+6sn5qeBPsuD4o9zpaAV49XgCzBbYwzQJbgNsYZIEtwG+MMMBIERoLASBAYCQIjQWAkCIwEgZEg2CdBFVmCKrIEVWQJqsgSVOlJ0A0koDHV/Ns/oNL0G0NuTL0rh9nUAAAAAElFTkSuQmCCCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA+QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADm0lEQVRoQ+2YzWsTQRjGq/Qk1YOgFz0q/h1SvCjoTaQgXgQPHjx58OIteBAEL8W/waKNRasgxhYrpiqFVrFNUpPmu9k0SZuPJo1JXud5Jel0u8nOrAgq88AD2ck+mX1/87G7GUokEqTrQCCgbZ/Pp+0Dj6N0UMM430uGITQaDWXn83kuSkfLy8tcVLVaVbbf7+eL1NH1T3lPGQPBQDAQWAaCkIEgZCAIGQhCBoKQgSBkIAj1IKAwVafTaYaAwlQdDAYZAgpT9fj4OD/X4yJVfeZl0lNmaGVlhXQNCLoGBF17eRnykmEIOspms1yUqiKRCM8GFOU07fsZswEXqSOMrJfMH4eQy+X+fQitVotSqRSVSiU+VoFQ2GnTpbl1evS9zMcqEJKlMl2YTdPDb3k+VoFg70cFglNmIAQAyGQyvA8ABOQGAZ2MBS0aEhdzcS7HbW4QAODyXIYz52fS3OYGwakfNwj9Mn0hdDodLhjf4w4CINAgCM12h659tHizGZ3J0nr9V2YQhFK5SmPvM5w5+yZF0WKZ2wdB6NfPIAiDMj0IeAZAsbVajY+LxSKFQiGKRqO0vb3NbZAMYXFzh87NimOrTqIPuh/apENPYnR6Oknv8nU+B5IhzGc3aTSQoul4kcqVKvmWLM6cehGn18liD44MQbUfGYJOpgcBGxg+r66ukmVZFA6HeWev13cDkAzh5sIGkz35PEG3Fwt0ZHKNjk/F6cNGg7/vSoZwYz7LmRNTa3Tr8zodfhqjY8/W6G2y1ANgh6DajwxBJ7NnOaBAjD7aAKA7K2TZl8PV+RwNT8R4nR31x+lVdnfWdGVfDlfE9B+eEPdnZCZj5I/tzoCu7ctBpR8ZAqSa2QOh3W7zUyFmAZYD9gW77BBqP9p092uRRsSIPghvUb21P2OHYG1V6M5CjkbE9Lz3xaKNcmUPANgOQaUfOwTVzL6NEYU3m01HAJAdAoQfj1SavPk4yWljROFL1hZvjHJ7104bo1s/dgiQSmYfBDc5QXCTEwQ3O0FwkxMEN/UgoDBV424BCChM1X/9CxRui7oGBF0Dgq5REEZW1dgAvWQYgo4KhQIXpSPMBhSlI8wGXKSOUJCXTA+CPNL9DMkQ+AdcDMkQnM6xG5IhOJ1jd/c8LxkDAZ+7xdkLdjJkIAgZCEIGgpCBIGQgCBkIQv81BFXJEFQlQ1CVDEFVKMhLhiGgMFXjj1dAQGGq/p0XqO6oqVo/E6WfdBY2E/BzX6AAAAAASUVORK5CYIILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + + + + VisualStudio2008Vista + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAArQMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADT0lEQVRoQ+2ZzWsTURTFq3Ql1YWgG10q/h1S3CjoTqQgbgQXLly5cOMuuBAEN8W/waKNRasgxooVU5VCq9gmqUnzOc2knbT5aNKY5PrOlUyn00nmvQFB5R040HmZ0zf3N+/dmbRDmUyGVB2JRJQdCoWUfeBxkg4qGOcHyTCEZrMp7VKpxEWpaGlpiYuq1WrSDofDfJEquv65FCijIWgIGgJLQxDSEIQ0BCENQUhDENIQhDQEIRsCCpN1Pp9nCChM1tFolCGgMFmPj4/zez0uUtZnXmYDZYaWl5dJ1YCgakBQdZAvQ0EyDEFFhmFwUbJKJBK8GlCU17LvZ6wGXKSKcGeDZP44hGKx+O9DaLfblMvlqFwu87EMhI2dDl2aXaNHPyp8LAMhW67QhXd5evi9xMcyENzzyEDwygyEAACFQoH7AEBAfhAwyVjUpCFxMRdnizzmBwEALs8WOHN+Js9jfhC85vGD0C/TF0K32+WC8TmeIAACDYLQ6nTp2ieTm83ojEFrjd+ZQRDKlRqNfShw5uybHCWtCo8PgtBvnkEQBmVsCHgHQLH1ep2PLcuiWCxGyWSStre3eQxyQljY3KFz78Sx2SAxB92PbdKhJyk6PZ2l96UGnwM5IcwZmzQaydF02qJKtUahRZMzp16k6XXWsuE4IcjO44SgkrEhoIHh55WVFTJNk+LxOHf2RmM3ADkh3JxfZ7Inn2fo9sIGHZlcpeNTafq43uTPe3JCuDFncObE1Crd+rJGh5+m6NizVXqbLdsA3BBk53FCUMns2Q4oEHcfYwDQWxVOubfD1bkiDU+keJ8dDafplbG7anpyb4crYvkPT4jnMzKTKQqndldAz+7tIDOPEwIkm9kDodPp8FshVgG2A/qCW24I9Z8duvvNohFxRx/Et6jR3p9xQzC3qnRnvkgjYnne+2rSeqW6BwDshiAzjxuCbGZfY0ThrVbLEwDkhgDhlyeqLW4+XvJqjCh80dzixugc79mrMfrN44YAyWT2QfCTFwQ/eUHwsxcEP3lB8JMNAYXJGk8LQEBhsv7rv0DhsahqQFA1IKgaBeHOyhrnB8novyeIjIagIWgILA1BSEMQ0hCENAQhDUFIQxDSEIRsCChM1v/ff6Cy9AsSMSlLu0Av/QAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA+gMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADnElEQVRoQ+2YTWsTURSGq3Ql1YWgG10q/g4pbhR0J1IQN4ILF65cuHEXXAiCm+JvsGhj0SqItcWKqUqhVWyT1KT5biZN0uajaWOS432PTHo7nWTuHSio3AdeyEzm5M555s6dJAPJZJJ0MzU1pZ1AIKCdQ09jdFgjON5PDUvY3t5WTqFQ4KZ0WFpa4qZqtZpygsEgn6QON78UfNUYCUaCkcAYCQIjQWAkCIwEgZEgMBIERoKgKwGNqSaTybAENKaaUCjEEtCYakZHR/l7PU5SNedep3zVDCwvL5NuIEE3kKAbPz+G/NSwBB1yuRw3pUo0GuXZgKbcpn2vYDbgJHXAlfVTc+AS8vn8vy+h1WpROp2mcrnM2yoSijttujK7Rk9+VnhbRUKqXKFLMxl6/KPA2yoSnOOoSHCr6SsBArLZLK8DEAG8JGCQkZBFA+JkLs/meZ+XBAi4OpvlmovTGd7nJcFtHC8JvWp6Suh0Otww3scTBEJAPwnNdodufLZ4sRmeztFa409NPwnlSo1GPma55vy7NMVKFd7fT0KvcfpJ6FfTlYDvAGi2Xq/zdqlUonA4TLFYjLa2tngfkCUsbOzQhRmxbTVIjEEPwxt05Fmczk6m6EOhwccAWcJcboOGp9I0mShRpVqjwKLFNWdeJehtqtSVI0tQHUeWoFPTlYAFDK9XVlbIsiyKRCK8sjcauwVAlnB7fp3Nnn6ZpLsLRTo2vkonJxL0aX2b37eRJdyay3HNqYlVuvN1jY4+j9OJF6v0PlXuCnBKUB1HlqBTs+d2QIO4+tgHAfaskHHeDtfn8jQ4Fuf77HgwQW9yu7PGxnk7XBPTf3BMPJ9RMx6nYHx3Bthx3g4q48gSgGrNHgntdpu/FWIW4HbAuuDEKaH+q033v5doSFzRR5FNarT21zglWJtVujefpyExPR98s2i9Ut0jAHFKUBnHKUG1Zt/CiMabzaarAOCUAPDh0WqTFx833BZGNL5obfLCKO+347Yweo3jlABUavZJ8MJNghduErziJsELNwledCWgMdXgaQEJaEw1f/0PKDwWdQMJuoEE3aAhXFnVYAH0U8MSdCgWi9yUDpgNaEoHzAacpA5oyE9NV4J8pXsFyBL4AzwCZAluxzgDZAluxzhjH+enxkjAa7s5Z8NuAUaCwEgQGAkCI0FgJAiMBMF/LUEVWYIqsgRVIME+UVXk5lTpSkBjqsEfr5CAxlTj9weU3dTBJka/AW4uNg3p+taQAAAAAElFTkSuQmCCCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + + + Far + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA7AAAAAKJUE5HDQoaCgAAAA1JSERSAAAAFAAAABQIBgAAAI2JHQ0AAAAEZ0FNQQAAsY8L/GEFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH5JREFUOE+tzMEJwDAQA0G3kP47SFMp5WKbEwizryiPwWY5NKrqVxgTGBMYExgTGBMY3XU/Na1XZubbBaPrQY3u/3njMDofangnGF0PanT/6U4wOh9qM/PtgtH1oEb3/7xxGJ0PNbwTjK4HNbr/dCcYExgTGBMYExgTGL+r8QL1YYgBA3bF7AAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA4AAAAAKJUE5HDQoaCgAAAA1JSERSAAAAFAAAABQIBgAAAI2JHQ0AAAAEZ0FNQQAAsY8L/GEFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHJJREFUOE+tzMEJgEAQBMFLwfwzMClDWc/HQCP9cnwULM2wa2Z+pbGhsaGxobGhsaGRjvOKyW270Eh4FroLjcRHud8b0kh4Fjv79qGR+Ci37UIj4VnoLjQSH+V+b0gj4Vns7NuHxobGhsaGxobGhsbvZt1vy4gBqcW4UgAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + TopOnBorder + BottomToTop + + + + + HighlightEntireItem + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA9QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADl0lEQVRoQ+2XzWsTQRjGq/Qk1YOgFz0q/h1SvCjoTaQgXgQPHjx58OIteBAEL8W/waKNRasgxhYrpiqFVrFNUpPmu9m0SZuPpo1JXud5ZdPpdpOdWSiozAMPm53Mk9n3tzOzm4FUKkW6DoVC2g4EAto+9DROhzWM/n4yDGF7e1vZxWKRi9LR4uIiF1Wr1ZQdDAb5InV080vRV8ZAMBAMBJaBIGQgCBkIQgaCkIEgZCAIGQhCXQgoTNXZbJYhoDBVh8NhhoDCVD06Osrv9bhIVZ97nfaVGVhaWiJdA4KuAUHXfv4M+ckwBB3l83kuSlWxWIxnA4pym/a9jNmAi9QR7qyfzIFDKBQK/z6EVqtFmUyGyuUyn6tAWN9p05WZVXrys8LnKhDS5Qpdms7S4x9FPleB4BxHBYJbpi8EAMjlcrwPAATkBQGDjIQtGhAXc3mmwG1eEADg6kyOMxenstzmBcFtHC8IvTI9IXQ6HS4Y3+MJAiBQPwjNdodufLZ4sxmeytNq40+mH4RypUYjH3OcOf8uQ/FShdv7Qeg1Tj8I/TJdCHgHQLH1ep3PS6USRSIRisfjtLW1xW2QDGF+Y4cuTItzq0FiDHoY2aAjzxJ0djJNH4oN7gPJEGbzGzQcytBkskSVao0CCxZnzrxK0tt0qQtHhqA6jgxBJ9OFgA0Mn5eXl8myLIpGo7yzNxq7AUiGcHtujcmefpmiu/PrdGx8hU5OJOnT2jZ/b0uGcGs2z5lTEyt05+sqHX2eoBMvVuh9utwF4ISgOo4MQSezZzmgQNx9tAGAPStkOZfD9dkCDY4leJ0dDybpTX531thyLodrYvoPjonnMzLjCQomdmeAbedyUBlHhgCpZvZAaLfb/FaIWYDlgH3BKSeE+q823f9eoiFxRx9FN6nR2p9xQrA2q3RvrkBDYno++GbRWqW6BwDshKAyjhOCambfxojCm82mKwDICQHCj8eqTd583OS2MaLwBWuTN0a53bbbxug1jhMCpJLZB8FLbhC85AbBy24QvOQGwUtdCChM1XhaAAIKU/Vf/wcKj0VdA4KuAUHXKAh3VtXYAP1kGIKObAg6wmxAUTrCbMBF6ggF+cl0Idh3uZ/tfjYE/gEPQzIEtz5OQzIEtz5O2/38ZAwEfJaL87Ldz0AQRwNBHA0EcTQQxNFAEEcDQRz/WwiqkiGoSoagKhmCqlCQnwxD0DUgoDBV+/0DZd+xg3WcfgND/TMv156b9wAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA+AMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADmklEQVRoQ+2YzWsTQRjGq/Qk1YOgFz0q/h1SvCjoTaQgXgQPHjx58OIteBAEL8W/waKNRasgxhYrpiqFVrFNUpPmu9k0SZuPJo1JXud5Jel0u8nOLBRU5oEHspN9Mvv+5mN3M5RIJEjXgUBA2z6fT9uHnkbpsIZxvpcMQ2g0GsrO5/NclI6Wl5e5qGq1qmy/388XqaObX/KeMgaCgWAgsAwEIQNByEAQMhCEDAQhA0HIQBDqQUBhqk6n0wwBhak6GAwyBBSm6vHxcX6ux0Wq+tzrpKfM0MrKCukaEHQNCLr28jLkJcMQdJTNZrkoVUUiEZ4NKMpp2vczZgMuUkcYWS+ZA4eQy+X+fQitVotSqRSVSiU+VoFQ2GnTlbl1evKzzMcqEJKlMl2aTdPjH3k+VoFg70cFglNmIAQAyGQyvA8ABOQGAZ2MBS0aEhdzeS7HbW4QAODqXIYzF2fS3OYGwakfNwj9Mn0hdDodLhjf4w4CINAgCM12h258tnizGZ3J0nr9T2YQhFK5SmMfM5w5/y5F0WKZ2wdB6NfPIAiDMj0IeAZAsbVajY+LxSKFQiGKRqO0vb3NbZAMYXFzhy7MimOrTqIPehjapCPPYnR2Okkf8nU+B5IhzGc3aTSQoul4kcqVKvmWLM6ceRWnt8liD44MQbUfGYJOpgcBGxg+r66ukmVZFA6HeWev13cDkAzh9sIGkz39MkF3Fwt0bHKNTk7F6dNGg7/vSoZwaz7LmVNTa3Tn6zodfR6jEy/W6H2y1ANgh6DajwxBJ7NnOaBAjD7aAKA7K2TZl8P1+RwNT8R4nR33x+lNdnfWdGVfDtfE9B+eEPdnZCZj5I/tzoCu7ctBpR8ZAqSa2QOh3W7zUyFmAZYD9gW77BBqv9p0/3uRRsSIPgpvUb21P2OHYG1V6N5CjkbE9HzwzaKNcmUPANgOQaUfOwTVzL6NEYU3m01HAJAdAoQfj1SavPk4yWljROFL1hZvjHJ7104bo1s/dgiQSmYfBDc5QXCTEwQ3O0FwkxMEN/UgoDBV424BCChM1X/9CxRui7oGBF0Dgq5REEZW1dgAvWQYgo4KhQIXpSPMBhSlI8wGXKSOUJCXTA+CPNL9DMkQ+AdcDMkQnM6xG5IhOJ1jd/c8LxkDAZ+7xdkLdjJkIAgZCEIGgpCBIGQgCBkIQv81BFXJEFQlQ1CVDEFVKMhLhiGgMFXjj1dAQGGq9voC1R2xg3WUfgNzejYRjgB1CAAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA8QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADk0lEQVRoQ+2XzWsTQRjGq/Qk1YOgFz0q/h1SvCjoTaQgXgQPHjx58OIteBAEL8W/waKNRasgxhYrpiqFVrFNUpPmu9m0SZuPpo1JXud5ZdPpdpOdWSiozAMPk93Mk9n3N7Ozm4FUKkW6DoVC2g4EAto+9DROhzWM/n4yDGF7e1vZxWKRi9LR4uIiF1Wr1ZQdDAb5InV080vRV8ZAMBAMBJaBIGQgCBkIQgaCkIEgZCAIGQhCXQgoTNXZbJYhoDBVh8NhhoDCVD06Osrv9bhIVZ97nfaVGVhaWiJdA4KuAUHXfv4M+ckwBB3l83kuSlWxWIxXA4pyW/a9jNWAi9QRZtZP5sAhFAqFfx9Cq9WiTCZD5XKZj1UgrO+06crMKj35WeFjFQjpcoUuTWfp8Y8iH6tAcI6jAsEt0xcCAORyOd4HAALygoBBRsIWDYiLuTxT4HNeEADg6kyOMxensnzOC4LbOF4QemV6Quh0OlwwvscTBECgfhCa7Q7d+GzxZjM8lafVxp9MPwjlSo1GPuY4c/5dhuKlCp/vB6HXOP0g9Mt0IeAdAMXW63U+LpVKFIlEKB6P09bWFp+DZAjzGzt0YVocWw0SY9DDyAYdeZags5Np+lBscB9IhjCb36DhUIYmkyWqVGsUWLA4c+ZVkt6mS104MgTVcWQIOpkuBGxg+Ly8vEyWZVE0GuWdvdHYDUAyhNtza0z29MsU3Z1fp2PjK3RyIkmf1rb5e1syhFuzec6cmlihO19X6ejzBJ14sULv0+UuACcE1XFkCDqZPbcDCsTs4xwA2KtClvN2uD5boMGxBN9nx4NJepPfXTW2nLfDNbH8B8fE8xmZ8QQFE7srwLbzdlAZR4YAqWb2QGi32/xWiFWA2wH7glNOCPVfbbr/vURDYkYfRTep0dqfcUKwNqt0b65AQ2J5Pvhm0VqlugcA7ISgMo4Tgmpm38aIwpvNpisAyAkBwo/Hqk3efNzktjGi8AVrkzdG+bxtt43RaxwnBEglsw+Cl9wgeMkNgpfdIHjJDYKXuhBQmKrxtAAEFKbqv/4PFB6LugYEXQOCrlEQZlbV2AD9ZBiCjmwIOrIh6Aj9cZE6QkF+Ml0I9iz3s93PhsA/4GFIhuDWx2lIhuDWx2m7n5+MgYDPcnFetvsZCKI1EERrIIjWQBCtgSBaA0G0/y0EVckQVCVDUJUMQVUoyE+GIegaRekaRenanrGDdZx+AwQBIVZs5053AAAAAElFTkSuQmCCCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA8QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADk0lEQVRoQ+2XzWsTQRjGq/Qk1YOgFz0q/h1SvCjoTaQgXgQPHjx58OIteBAEL8W/waKNRasgxhYrpiqFVrFNUpPmu9m0SZuPpo1JXud5ZdPpdpOdWSiozAMPk93Mk9n3N7Ozm4FUKkW6DoVC2g4EAto+9DROhzWM/n4yDGF7e1vZxWKRi9LR4uIiF1Wr1ZQdDAb5InV080vRV8ZAMBAMBJaBIGQgCBkIQgaCkIEgZCAIGQhCXQgoTNXZbJYhoDBVh8NhhoDCVD06Osrv9bhIVZ97nfaVGVhaWiJdA4KuAUHXfv4M+ckwBB3l83kuSlWxWIxXA4pyW/a9jNWAi9QRZtZP5sAhFAqFfx9Cq9WiTCZD5XKZj1UgrO+06crMKj35WeFjFQjpcoUuTWfp8Y8iH6tAcI6jAsEt0xcCAORyOd4HAALygoBBRsIWDYiLuTxT4HNeEADg6kyOMxensnzOC4LbOF4QemV6Quh0OlwwvscTBECgfhCa7Q7d+GzxZjM8lafVxp9MPwjlSo1GPuY4c/5dhuKlCp/vB6HXOP0g9Mt0IeAdAMXW63U+LpVKFIlEKB6P09bWFp+DZAjzGzt0YVocWw0SY9DDyAYdeZags5Np+lBscB9IhjCb36DhUIYmkyWqVGsUWLA4c+ZVkt6mS104MgTVcWQIOpkuBGxg+Ly8vEyWZVE0GuWdvdHYDUAyhNtza0z29MsU3Z1fp2PjK3RyIkmf1rb5e1syhFuzec6cmlihO19X6ejzBJ14sULv0+UuACcE1XFkCDqZPbcDCsTs4xwA2KtClvN2uD5boMGxBN9nx4NJepPfXTW2nLfDNbH8B8fE8xmZ8QQFE7srwLbzdlAZR4YAqWb2QGi32/xWiFWA2wH7glNOCPVfbbr/vURDYkYfRTep0dqfcUKwNqt0b65AQ2J5Pvhm0VqlugcA7ISgMo4Tgmpm38aIwpvNpisAyAkBwo/Hqk3efNzktjGi8AVrkzdG+bxtt43RaxwnBEglsw+Cl9wgeMkNgpfdIHjJDYKXuhBQmKrxtAAEFKbqv/4PFB6LugYEXQOCrlEQZlbV2AD9ZBiCjmwIOrIh6Aj9cZE6QkF+Ml0I9iz3s93PhsA/4GFIhuDWx2lIhuDWx2m7n5+MgYDPcnFetvsZCKI1EERrIIjWQBCtgSBaA0G0/y0EVckQVCVDUJUMQVUoyE+GIegaRekaRenanrGDdZx+AwQBIVZs5053AAAAAElFTkSuQmCCCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + Office2013RadioButtonGlyphInfo + + -1 + 0, 170, 222 + Solid + 0, 170, 222 + White + 135, 135, 135 + None + Transparent + 0 + 0, 170, 222 + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA9QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADl0lEQVRoQ+2XzWsTQRjGq/Qk1YOgFz0q/h1SvCjoTaQgXgQPHjx58OIteBAEL8W/waKNRasgxhYrpiqFVrFNUpPmu9m0SZuPpo1JXud5ZdPpdpOdWSiozAMPk93Mk9n3N7Ozm4FUKkW6DoVC2g4EAto+9DROhzWM/n4yDGF7e1vZxWKRi9LR4uIiF1Wr1ZQdDAb5InV080vRV8ZAMBAMBJaBIGQgCBkIQgaCkIEgZCAIGQhCXQgoTNXZbJYhoDBVh8NhhoDCVD06Osrv9bhIVZ97nfaVGVhaWiJdA4KuAUHXfv4M+ckwBB3l83kuSlWxWIxXA4pyW/a9jNWAi9QRZtZP5sAhFAqFfx9Cq9WiTCZD5XKZj1UgrO+06crMKj35WeFjFQjpcoUuTWfp8Y8iH6tAcI6jAsEt0xcCAORyOd4HAALygoBBRsIWDYiLuTxT4HNeEADg6kyOMxensnzOC4LbOF4QemV6Quh0OlwwvscTBECgfhCa7Q7d+GzxZjM8lafVxp9MPwjlSo1GPuY4c/5dhuKlCp/vB6HXOP0g9Mt0IeAdAMXW63U+LpVKFIlEKB6P09bWFp+DZAjzGzt0YVocWw0SY9DDyAYdeZags5Np+lBscB9IhjCb36DhUIYmkyWqVGsUWLA4c+ZVkt6mS104MgTVcWQIOpkuBGxg+Ly8vEyWZVE0GuWdvdHYDUAyhNtza0z29MsU3Z1fp2PjK3RyIkmf1rb5e1syhFuzec6cmlihO19X6ejzBJ14sULv0+UuACcE1XFkCDqZPbcDCsTs4xwA2KtClvN2uD5boMGxBN9nx4NJepPfXTW2nLfDNbH8B8fE8xmZ8QQFE7srwLbzdlAZR4YAqWb2QGi32/xWiFWA2wH7glNOCPVfbbr/vURDYkYfRTep0dqfcUKwNqt0b65AQ2J5Pvhm0VqlugcA7ISgMo4Tgmpm38aIwpvNpisAyAkBwo/Hqk3efNzktjGi8AVrkzdG+bxtt43RaxwnBEglsw+Cl9wgeMkNgpfdIHjJDYKXuhBQmKrxtAAEFKbqv/4PFB6LugYEXQOCrlEQZlbV6O8nwxB0ZEPQEVYDitIR+uMidYSngJ9MF4I9y/1s97Mh8A94GJIhuPVxGpIhuPVx2u7nJ2Mg4LNcnJftfgaCaA0E0RoIojUQRGsgiNZAEO1/C0FVMgRVyRBUJUNQFQryk2EIugYEFKZq+w+Uru0ZO1jH6Tc1kyfofk37EgAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + + RectangularSolid + None + TopOnBorder + BottomToTop + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA6gMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADjElEQVRoQ+2YT2sTQRjGq/Qk1YOgFz0qfg4pXhT0JlIQL4IHD548ePFWPAiCNz+DRVuLVkGMLVaaqhRaxTZJTZr/zaZJ2vxp0pjkdZ5Xsp1sN9mZBaHC/OCB7nbezr6/nZ1NOpRIJEg3gUBAO+Pj49o58jxKRzWC8X5qWEKj0VBOPp/npnRYXV3lpqrVqnIwHhepw+2veV81RoKRYCQwRoLASBAYCQIjQWAkCIwEgZEgsCWgMdWk02mWgMZUEwwGuSnd4HM9LlI1F94mfdUMra2tkW4gQTduTXrFz5chPzUsQYdsNstNqRKJRHg1oCm3Zd8vGI+L1AF31k/NP5eQy+X+fwmtVotSqRSVSiU+VpFQ2GvTtflNevarzMcqEpKlMl2ZS9PTn3k+VpHgnEdFglvNQAkQkMlkeB+ACOAlAZOMBS0aEhdzdT7H57wkQMD1+QzXXJ5N8zkvCW7zeEnoV9NXQqfT4Ybxe7xBIAQMktBsd+jWF4s3m9HZLG3W/9YMklAqV2nsc4ZrLn5IUbRY5vODJPSbZ5CEQTW2BHwGQLO1Wo2Pi8UihUIhikajtLu7y+eALGF5e48uzYljq05iDnoc2qZjL2J0fiZJn/J1HgNkCYvZbRoNpGgmXqRyRTS7YnHNuTdxep8s2nJkCarzyBJ0amwJ2MDw8/r6OlmWReFwmHf2en2/AMgS7i5tsdmzrxN0f7lAJyY36PR0nBa2Gvz7LrKEO4tZrjkzvUH3vm3S8ZcxOvVqgz4mS7YApwTVeWQJOjU9jwMaxN3HOQjorgoZ5+NwczFHwxMxfs5OTsXpXXZ/1XRxPg43xPIfnhDvZ9RMxmgqtr8CupElAJV5ZAlAtaZHQrvd5k+FWAV4HLAvOHFKqP1u08MfRRoRd/RJeIfqrYM1TgnWToUeLOVoRCzPR98t2ipXegQgTgkq8zglqNYc2BjReLPZdBUAnBIA/nik0uTNxw23jRGNr1g7vDHK57txSgBe8zglAJWaAxK8cJPghZsEr7hJ8MJNghe2BDSmGrwtIAGNqebQf4HCa1E3kKAbtya9goZwZ1WD8X5qWIIOhUKBm9IBqwFN6YDxuEgdcGf91NgS5DvdL0CWgFePV4AswW2MM0CW4DbGGSBLcBvjDDASBEaCwEgQGAkCI0FgJAiMBIGRIOiRoIosQRVZgiqyBFVkCarYEtCYavCPV0hAY6o53F+gkvQHK6ctxANB/y4AAAAASUVORK5CYIILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + + White + + + + + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA+wMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADnUlEQVRoQ+2XT2sTQRjGq/Qk1YOgFz0qfg4pXhT0JlIQL4IHD548ePEWPAiCl+JnsGhj0SqIscWKqUqhVWyT1KT532zapE3TJo1JXud5ZdPJdpOdWSiozAMPyW7mycz725nZ3YFUKkW6DoVC2g4EAto+9DROhzWM9n4yDKFeryu7WCxyUTpaXFzkoqrVqrKDwSAPUkc3vxR9ZQwEA8FAYBkIQgaCkIEgZCAIGQhCBoKQgSDUgYDCVJ3NZhkCClN1OBxmCChM1aOjo/xcj0Gq+tzrtK/MwNLSEukaEHQNCLr28zLkJ8MQdJTP57koVcViMZ4NKMpt2vcyZgMGqSNcWT+ZA4dQKBT+fQjNZpMymQyVy2U+VoGwvtuiKzOr9ORnhY9VIKTLFbo0naXHP4p8rALB2Y8KBLdMXwgAkMvleB8ACMgLAjoZCVs0IAZzeabA57wgAMDVmRxnLk5l+ZwXBLd+vCD0yvSE0G63uWD8jjsIgED9IDRabbrx2eLNZngqT6u1P5l+EMqVKo18zHHm/LsMxUsVPt8PQq9++kHol+lAwDMAit3e3ubjUqlEkUiE4vE47ezs8DlIhjC/sUsXpsWxVSPRBz2MbNCRZwk6O5mmD8Uat4FkCLP5DRoOZWgyWaLKVpUCCxZnzrxK0tt0qQNHhqDajwxBJ9OBgA0M35eXl8myLIpGo7yz12p7AUiGcHtujcmefpmiu/PrdGx8hU5OJOnTWp1/tyVDuDWb58ypiRW683WVjj5P0IkXK/Q+Xe4AcEJQ7UeGoJPpWg4oEFcf5wDAnhWynMvh+myBBscSvM6OB5P0Jr83a2w5l8M1Mf0Hx8T9GZnxBAUTezPAtnM5qPQjQ4BUM10QWq0WPxViFmA5YF9wyglh+1eL7n8v0ZC4oo+im1Rr7s84IVibW3RvrkBDYno++GbRWmWrCwDshKDSjxOCambfxojCG42GKwDICQHCn8e2Grz5uMltY0ThC9Ymb4zyedtuG6NXP04IkEpmHwQvuUHwkhsEL7tB8JIbBC91IKAwVeNuAQgoTNV//QsUbou6BgRdA4KuURCurI79ZBiCjmwIOsJsQFE6wmzAAHVkF6WjLgj2Ve5nu50NAbceL0MyBLc2TkMyBLc2TkMyBLc2TkMGgpCBIPTPQOCBethu5ydjIOC7XJyX7XYGgvg0EMSngSA+/1sIqpIhqEqGoCoZgqpkCKrqQNA1IKAwVft9gbKLOljH6TcHdzOr6BQ8HAAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAArQMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADT0lEQVRoQ+2ZzWsTURTFq3Ql1YWgG10q/h1S3CjoTqQgbgQXLly5cOMuuBAEN8W/waKNRasgxooVU5VCq9gmqUnzOc2knbT5aNKY5PrOlUyn00nmvQFB5R040HmZ0zf3N+/dmbRDmUyGVB2JRJQdCoWUfeBxkg4qGOcHyTCEZrMp7VKpxEWpaGlpiYuq1WrSDofDfJEquv65FCijIWgIGgJLQxDSEIQ0BCENQUhDENIQhDQEIRsCCpN1Pp9nCChM1tFolCGgMFmPj4/zez0uUtZnXmYDZYaWl5dJ1YCgakBQdZAvQ0EyDEFFhmFwUbJKJBK8GlCU17LvZ6wGXKSKcGeDZP44hGKx+O9DaLfblMvlqFwu87EMhI2dDl2aXaNHPyp8LAMhW67QhXd5evi9xMcyENzzyEDwygyEAACFQoH7AEBAfhAwyVjUpCFxMRdnizzmBwEALs8WOHN+Js9jfhC85vGD0C/TF0K32+WC8TmeIAACDYLQ6nTp2ieTm83ojEFrjd+ZQRDKlRqNfShw5uybHCWtCo8PgtBvnkEQBmVsCHgHQLH1ep2PLcuiWCxGyWSStre3eQxyQljY3KFz78Sx2SAxB92PbdKhJyk6PZ2l96UGnwM5IcwZmzQaydF02qJKtUahRZMzp16k6XXWsuE4IcjO44SgkrEhoIHh55WVFTJNk+LxOHf2RmM3ADkh3JxfZ7Inn2fo9sIGHZlcpeNTafq43uTPe3JCuDFncObE1Crd+rJGh5+m6NizVXqbLdsA3BBk53FCUMns2Q4oEHcfYwDQWxVOubfD1bkiDU+keJ8dDafplbG7anpyb4crYvkPT4jnMzKTKQqndldAz+7tIDOPEwIkm9kDodPp8FshVgG2A/qCW24I9Z8duvvNohFxRx/Et6jR3p9xQzC3qnRnvkgjYnne+2rSeqW6BwDshiAzjxuCbGZfY0ThrVbLEwDkhgDhlyeqLW4+XvJqjCh80dzixugc79mrMfrN44YAyWT2QfCTFwQ/eUHwsxcEP3lB8JMNAYXJGk8LQEBhsv7rv0DhsahqQFA1IKgaBeHOyhrnB8novyeIjIagIWgILA1BSEMQ0hCENAQhDUFIQxDSEIRsCChM1v/ff6Cy9AsSMSlLu0Av/QAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + Office2013RadioButtonGlyphInfo + + + + + + + + + 0, 170, 222 + Gray + Gray + Gray + + + + + + + + + Flat + True + + + + + Flat + True + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA8QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADk0lEQVRoQ+2YTWsTURSGq3Ql1YWgG10q/g4pbhR0J1IQN4ILF65cuHEXXAiCm+JvsGhj0SqIscWKqUqhVWyT1KT5biZN0uajSWOS432PJL2ZTjL3DggK94EXOpM5uXOeuXNn0pFEIkG6CQQC2vH5fNo59DRKhzWC473UsIRGo6GcfD7PTemwurrKTVWrVeX4/X4+SR1ufsl7qjESjAQjgTESBEaCwEgQGAkCI0FgJAiMBEFPAhpTTTqdZgloTDXBYJAloDHVTE5O8ns9TlI1514nPdWMrK2tkW4gQTeQoBsvP4a81LAEHbLZLDelSiQS4dmAppym/aBgNuAkdcCV9VLz1yXkcrn/X0Kr1aJUKkWlUom3VSQU9tp0ZWGTnvws87aKhGSpTJfm0/T4R563VSTYx1GR4FQzVAIEZDIZXgcgArhJwCATQYtGxMlcXsjxPjcJEHB1IcM1F+fSvM9NgtM4bhIG1QyU0Ol0uGF8jicIhIBhEprtDt34bPFiMz6Xpc36n5phEkrlKk18zHDN+XcpihbLvH+YhEHjDJMwrKYnAe8AaLZWq/F2sVikUChE0WiUdnd3eR+QJSxv79GFebFt1UmMQQ9D23TkWYzOzibpQ77OxwBZwmJ2m8YDKZqNF6lcqZJvxeKaM6/i9DZZ7MmRJaiOI0vQqelJwAKGv9fX18myLAqHw7yy1+v7BUCWcHtpi82efpmgu8sFOja9QSdn4vRpq8Gfd5El3FrMcs2pmQ2683WTjj6P0YkXG/Q+WeoJsEtQHUeWoFPTdzugQVx97IOA7qyQsd8O1xdzNDoV4/vsuD9Ob7L7s6aL/Xa4Jqb/6JR4PqNmOkb+2P4M6MZ+O6iMI0sAqjV9EtrtNr8VYhbgdsC6YMcuofarTfe/F2lMXNFH4R2qtw7W2CVYOxW6t5SjMTE9H3yzaKtc6ROA2CWojGOXoFpzYGFE481m01EAsEsA+PJIpcmLjxNOCyMaX7F2eGGU93fjtDC6jWOXAFRqDkhww0mCG04S3OIkwQ0nCW70JKAx1eBpAQloTDX//A8oPBZ1Awm6gQTdoCFcWdXgeC81LEGHQqHATemA2YCmdMBswEnqgCvrpaYnQb7SgwJkCXj0uAXIEpyOsQfIEpyOsQfIEpyOsQcYCQIjQWAkCIwEgZEgMBIERoLASBD0SVBFlqCKLEEVWYIqsgRVehLQmGrwj1dIQGOq+bd/QCXpN3LrT59/MUO0AAAAAElFTkSuQmCCCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA8QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADk0lEQVRoQ+2YTWsTURSGq3Ql1YWgG10q/g4pbhR0J1IQN4ILF65cuHEXXAiCm+JvsGhj0SqIscWKqUqhVWyT1KT5biZN0uajSWOS432PJL2ZTjL3DggK94EXOpM5uXOeuXNn0pFEIkG6CQQC2vH5fNo59DRKhzWC473UsIRGo6GcfD7PTemwurrKTVWrVeX4/X4+SR1ufsl7qjESjAQjgTESBEaCwEgQGAkCI0FgJAiMBEFPAhpTTTqdZgloTDXBYJAloDHVTE5O8ns9TlI1514nPdWMrK2tkW4gQTeQoBsvP4a81LAEHbLZLDelSiQS4dmAppym/aBgNuAkdcCV9VLz1yXkcrn/X0Kr1aJUKkWlUom3VSQU9tp0ZWGTnvws87aKhGSpTJfm0/T4R563VSTYx1GR4FQzVAIEZDIZXgcgArhJwCATQYtGxMlcXsjxPjcJEHB1IcM1F+fSvM9NgtM4bhIG1QyU0Ol0uGF8jicIhIBhEprtDt34bPFiMz6Xpc36n5phEkrlKk18zHDN+XcpihbLvH+YhEHjDJMwrKYnAe8AaLZWq/F2sVikUChE0WiUdnd3eR+QJSxv79GFebFt1UmMQQ9D23TkWYzOzibpQ77OxwBZwmJ2m8YDKZqNF6lcqZJvxeKaM6/i9DZZ7MmRJaiOI0vQqelJwAKGv9fX18myLAqHw7yy1+v7BUCWcHtpi82efpmgu8sFOja9QSdn4vRpq8Gfd5El3FrMcs2pmQ2683WTjj6P0YkXG/Q+WeoJsEtQHUeWoFPTdzugQVx97IOA7qyQsd8O1xdzNDoV4/vsuD9Ob7L7s6aL/Xa4Jqb/6JR4PqNmOkb+2P4M6MZ+O6iMI0sAqjV9EtrtNr8VYhbgdsC6YMcuofarTfe/F2lMXNFH4R2qtw7W2CVYOxW6t5SjMTE9H3yzaKtc6ROA2CWojGOXoFpzYGFE481m01EAsEsA+PJIpcmLjxNOCyMaX7F2eGGU93fjtDC6jWOXAFRqDkhww0mCG04S3OIkwQ0nCW70JKAx1eBpAQloTDX//A8oPBZ1Awm6gQTdoCFcWdXgeC81LEGHQqHATemA2YCmdMBswEnqgCvrpaYnQb7SgwJkCXj0uAXIEpyOsQfIEpyOsQfIEpyOsQcYCQIjQWAkCIwEgZEgMBIERoLASBD0SVBFlqCKLEEVWYIqsgRVehLQmGrwj1dIQGOq+bd/QCXpN3LrT59/MUO0AAAAAElFTkSuQmCCCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA7AMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADjklEQVRoQ+2XT2sTQRjGq/Qk1YOgFz0qfg4pXhT0JlIQL4IHD548ePEWPAiCl+JnsGhj0SqIscWKqUqhVWyT1KT532zapM2fJo1JXud5ZdPJdpOdiRQU5gcPdDfzdvb97exsMpRIJEg3gUBAOz6fTzuHnkbpsEYwfpAallCv15WTz+e5KR2Wl5e5qUqlohy/388XqcPNL/mBaowEI8FIYIwEgZEgMBIERoLASBAYCQIjQdCRgMZUk06nWQIaU00wGGQJaEw14+Pj/L0eF6mac6+TA9UMrayskG4gQTeQoJtBfgwNUsMSdMhms9yUKpFIhFcDmnJb9r2C1YCL1AF3dpCaA5eQy+X+fwnNZpNSqRQVi0U+VpGwuduiK3Pr9ORniY9VJCSLJbo0m6bHP/J8rCLBOY+KBLeavhIgIJPJ8D4AEcBLAiYZC1o0JC7m8lyOz3lJgICrcxmuuTiT5nNeEtzm8ZLQq6anhHa7zQ3jc7xBIAT0k9BotenGZ4s3m9GZLK3X/tT0k1AsVWjsY4Zrzr9LUbRQ4vP9JPSap5+EfjUdCfgOgGar1SofFwoFCoVCFI1GaWdnh88BWcLi1i5dmBXHVo3EHPQwtEVHnsXo7HSSPuRrPAbIEuazWzQaSNF0vEClcoV8SxbXnHkVp7fJQkeOLEF1HlmCTk1HAjYw/L26ukqWZVE4HOadvVbbKwCyhNsLG2z29MsE3V3cpGOTa3RyKk6fNur8uY0s4dZ8lmtOTa3Rna/rdPR5jE68WKP3yWJHgFOC6jyyBJ2arscBDeLu4xwE2KtCxvk4XJ/P0fBEjJ+z4/44vcnurRob5+NwTSz/4QnxfkbNZIz8sb0VYMf5OKjMI0sAqjVdElqtFn8rxCrA44B9wYlTQvVXi+5/L9CIuKOPwttUa+6vcUqwtst0byFHI2J5Pvhm0Uap3CUAcUpQmccpQbVm38aIxhuNhqsA4JQA8M8j5QZvPm64bYxofMna5o1RPm/HbWP0mscpAajU7JPghZsEL9wkeMVNghduErzoSEBjqsHbAhLQmGr++R9QeC3qBhJ0Awm6QUO4s6rB+EFqWIIOtgQdsBrQlA5YDbhIHWwBOnRJsO9yv9jjbAl49XgFyBLcxjgDZAluY5wBsgS3Mc4AI0FgJAiMBIGRIDASBEaCwEgQGAmCLgmqyBJUkSWoIktQRZagSkeCbiABjanmb35AHXyi9BvrVTNhLiUFpAAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAArQMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADT0lEQVRoQ+2ZzWsTURTFq3Ql1YWgG10q/h1S3CjoTqQgbgQXLly5cOMuuBAEN8W/waKNRasgxooVU5VCq9gmqUnzOc2knbT5aNKY5PrOlUyn00nmvQFB5R040HmZ0zf3N+/dmbRDmUyGVB2JRJQdCoWUfeBxkg4qGOcHyTCEZrMp7VKpxEWpaGlpiYuq1WrSDofDfJEquv65FCijIWgIGgJLQxDSEIQ0BCENQUhDENIQhDQEIRsCCpN1Pp9nCChM1tFolCGgMFmPj4/zez0uUtZnXmYDZYaWl5dJ1YCgakBQdZAvQ0EyDEFFhmFwUbJKJBK8GlCU17LvZ6wGXKSKcGeDZP44hGKx+O9DaLfblMvlqFwu87EMhI2dDl2aXaNHPyp8LAMhW67QhXd5evi9xMcyENzzyEDwygyEAACFQoH7AEBAfhAwyVjUpCFxMRdnizzmBwEALs8WOHN+Js9jfhC85vGD0C/TF0K32+WC8TmeIAACDYLQ6nTp2ieTm83ojEFrjd+ZQRDKlRqNfShw5uybHCWtCo8PgtBvnkEQBmVsCHgHQLH1ep2PLcuiWCxGyWSStre3eQxyQljY3KFz78Sx2SAxB92PbdKhJyk6PZ2l96UGnwM5IcwZmzQaydF02qJKtUahRZMzp16k6XXWsuE4IcjO44SgkrEhoIHh55WVFTJNk+LxOHf2RmM3ADkh3JxfZ7Inn2fo9sIGHZlcpeNTafq43uTPe3JCuDFncObE1Crd+rJGh5+m6NizVXqbLdsA3BBk53FCUMns2Q4oEHcfYwDQWxVOubfD1bkiDU+keJ8dDafplbG7anpyb4crYvkPT4jnMzKTKQqndldAz+7tIDOPEwIkm9kDodPp8FshVgG2A/qCW24I9Z8duvvNohFxRx/Et6jR3p9xQzC3qnRnvkgjYnne+2rSeqW6BwDshiAzjxuCbGZfY0ThrVbLEwDkhgDhlyeqLW4+XvJqjCh80dzixugc79mrMfrN44YAyWT2QfCTFwQ/eUHwsxcEP3lB8JMNAYXJGk8LQEBhsv7rv0DhsahqQFA1IKgaBeHOyhrnB8novyeIjIagIWgILA1BSEMQ0hCENAQhDUFIQxDSEIRsCChM1v/ff6Cy9AsSMSlLu0Av/QAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA/QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADn0lEQVRoQ+2YT2sTQRjGq/Qk1YOgFz0qfg4pXhT0JlIQL4IHD548ePEWPAiCl+JnsGhj0SqIscWKqUqhVWyT1KT532yapM2fJo1JXud5Jel0u8nOrBQU5gcPdLfzdvb97exs0qFEIkG6CQQC2vH5fNo59DRKhzWC8V5qWEKj0VBOPp/npnRYXl7mpqrVqnL8fj9fpA43v+Q91RgJRoKRwBgJAiNBYCQIjASBkSAwEgRGgqAnAY2pJp1OswQ0pppgMMgS0JhqxsfH+XM9LlI1514nPdUMrayskG4gQTeQoBsvX4a81LAEHbLZLDelSiQS4dWAppyWfb9gNeAidcCd9VJz4BJyudz/L6HValEqlaJSqcTHKhIKO226MrdOT36W+VhFQrJUpkuzaXr8I8/HKhLs86hIcKoZKAECMpkM7wMQAdwkYJKxoEVD4mIuz+X4nJsECLg6l+GaizNpPucmwWkeNwn9avpK6HQ63DB+jzcIhIBBEprtDt34bPFmMzqTpfX6n5pBEkrlKo19zHDN+XcpihbLfH6QhH7zDJIwqKYnAZ8B0GytVuPjYrFIoVCIotEobW9v8zkgS1jc3KELs+LYqpOYgx6GNunIsxidnU7Sh3ydxwBZwnx2k0YDKZqOF6lcqZJvyeKaM6/i9DZZ7MmRJajOI0vQqelJwAaGn1dXV8myLAqHw7yz1+u7BUCWcHthg82efpmgu4sFOja5Rien4vRpo8G/7yJLuDWf5ZpTU2t05+s6HX0eoxMv1uh9stQTYJegOo8sQadmz+OABnH3cQ4CuqtCxv44XJ/P0fBEjJ+z4/44vcnurpou9sfhmlj+wxPi/YyayRj5Y7sroBv746AyjywBqNbskdBut/lTIVYBHgfsC3bsEmq/2nT/e5FGxB19FN6iemt/jV2CtVWhews5GhHL88E3izbKlT0CELsElXnsElRr9m2MaLzZbDoKAHYJAH88Umny5uOE08aIxpesLd4Y5fPdOG2MbvPYJQCVmn0S3HCS4IaTBLc4SXDDSYIbPQloTDV4W0ACGlPNP/8FCq9F3UCCbiBBN2gId1Y1GO+lhiXoUCgUuCkdsBrQlA5YDbhIHboCdNgjQb7T/QJkCXj1uAXIEpzG2ANkCU5j7AGyBKcx9gAjQWAkCIwEgZEgMBIERoLASBD88xJwgcBpjD0A473U9CSoIktQRZagiixBFVmCKj0JaEw1+McrJKAx1fzNF6iDT5R+AxOLNj+SFfOFAAAAAElFTkSuQmCCCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + 191, 191, 191 + White + 191, 191, 191 + Office2010 + 191, 191, 191 + + + + + Standard + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA8wMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADlUlEQVRoQ+2YTWsTURSGq3Ql1YWgG10q/g4pbhR0J1IQN4ILF65cuHEXXAiCm+JvsGhj0SqIsWLFVKXQKrZJatJ8N5MmafPRpDHJ8b5Hkt5MJ5l7BxSF+8ALncmc3DnP3Lkz6UgikSDdBAIB7fh8Pu0ceBylgxrB8V5qWEKj0VBOPp/npnRYWVnhpqrVqnL8fj+fpA7XP+c91RgJRoKRwBgJAiNBYCQIjASBkSAwEgRGgqAnAY2pJp1OswQ0pppgMMgS0JhqJicn+b0eJ6maMy+TnmpGVldXSTeQoBtI0I2XH0NealiCDtlslptSJRKJ8GxAU07TflAwG3CSOuDKeqn54xJyudz/L6HValEqlaJSqcTbKhIKu226NL9Bj36UeVtFQrJUpgvv0vTwe563VSTYx1GR4FQzVAIEZDIZXgcgArhJwCATQYtGxMlcnM/xPjcJEHB5PsM15+fSvM9NgtM4bhIG1QyU0Ol0uGF8jicIhIBhEprtDl37ZPFiMz6XpY3675phEkrlKk18yHDN2TcpihbLvH+YhEHjDJMwrKYnAe8AaLZWq/F2sVikUChE0WiUdnZ2eB+QJSxt7dK5d2LbqpMYg+6HtujQkxidnk3S+3ydjwGyhIXsFo0HUjQbL1K5UiXfssU1p17E6XWy2JMjS1AdR5agU9OTgAUMf6+trZFlWRQOh3llr9f3CoAs4ebiJps9+TxBt5cKdGR6nY7PxOnjZoM/7yJLuLGQ5ZoTM+t068sGHX4ao2PP1ultstQTYJegOo4sQaem73ZAg7j62AcB3VkhY78dri7kaHQqxvfZUX+cXmX3Zk0X++1wRUz/0SnxfEbNdIz8sb0Z0I39dlAZR5YAVGv6JLTbbX4rxCzA7YB1wY5dQu1nm+5+K9KYuKIPwttUb+2vsUuwtit0ZzFHY2J63vtq0Wa50icAsUtQGccuQbVm38KIxpvNpqMAYJcA8OWRSpMXHyecFkY0vmxt88Io7+/GaWF0G8cuAajU7JPghpMEN5wkuMVJghtOEtzoSUBjqsHTAhLQmGr++R9QeCzqBhJ0Awm6QUO4sqrB8V5qWIIOhUKBm9KhK0EHzAacpA64sl5qehLkKz0oQJaAR49bgCzB6Rh7gCzB6Rh7gCzB6Rh7gJEgMBIERoLASBAYCQIjQWAkCIwEQZ8EVWQJqsgSVJElqCJLUKUnAY2pBv94RVO6gQQ0ppq/9wMqSb8AWg1JD6G7pzMAAAAASUVORK5CYIILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + False + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA2wAAAAKJUE5HDQoaCgAAAA1JSERSAAAACgAAAAoIBgAAAI0yz70AAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M1cbXjNgAAAFVJREFUKFNj+P//Pxi3trZeAGIBGB8dwxlARf+B+AEQGyArgGE4A6oQhD8AcQCyIhDGphCGC4hVCMILqKqwASaHSyHIMwnIikAYXSFIEcHgwRPg/xkAphkSTK5IMV8AAAAASUVORK5CYIILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA6AAAAAKJUE5HDQoaCgAAAA1JSERSAAAACgAAAAoIBgAAAI0yz70AAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M1cbXjNgAAAGJJREFUKFNj+P//P1EYqyA2zMCw6t4FIP5PAF8AKRQA4g9Iguj4ARALQIxddc8AiLEpBokZgNXA3bDqXgKSAhgOgMvDGFDFDUiKClDkkDlggVX3FoAwhji6AC6MVRAT/2cAAJhQETR6tnZYAAAAAElFTkSuQmCCCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + Never + None + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Test/Test.sln b/SRC/MESWin/SYS4/21670ll/MESWin/Test/Test.sln new file mode 100644 index 0000000..dbab07c --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/Test/Test.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Test", "Test.vbproj", "{C4A48E3F-38E4-4E88-A47D-FA5510686E57}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x86 = Debug|x86 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C4A48E3F-38E4-4E88-A47D-FA5510686E57}.Debug|x86.ActiveCfg = Debug|x86 + {C4A48E3F-38E4-4E88-A47D-FA5510686E57}.Debug|x86.Build.0 = Debug|x86 + {C4A48E3F-38E4-4E88-A47D-FA5510686E57}.Release|x86.ActiveCfg = Release|x86 + {C4A48E3F-38E4-4E88-A47D-FA5510686E57}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Test/Test.vbproj b/SRC/MESWin/SYS4/21670ll/MESWin/Test/Test.vbproj new file mode 100644 index 0000000..dc4d40c --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/Test/Test.vbproj @@ -0,0 +1,195 @@ + + + + + Debug + AnyCPU + {C4A48E3F-38E4-4E88-A47D-FA5510686E57} + WinExe + Test + Test + 512 + WindowsFormsWithCustomSubMain + v4.6.2 + + + + + + + + + + + + On + + + Binary + + + Off + + + On + + + Sub Main + + + true + true + true + ..\..\MESClient\ + Test.xml + 0 + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + full + x86 + MinimumRecommendedRules.ruleset + false + + + true + bin\x86\Release\ + Test.xml + true + 0 + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + pdbonly + x86 + MinimumRecommendedRules.ruleset + false + + + true + + + iMES.snk + + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Shared.v19.1.dll + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Win.UltraWinDock.v19.1.dll + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Win.UltraWinExplorerBar.v19.1.dll + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Win.UltraWinToolbars.v19.1.dll + + + False + C:\Program Files (x86)\Infragistics\2019.1\Windows Forms\CLR4.0\Bin\Infragistics4.Win.v19.1.dll + + + ..\..\MESClient\COM_ChkPassword.dll + + + ..\..\MESClient\COM_Kit.dll + + + ..\..\MES_C_DLL\iMESException.dll + + + ..\..\MES_C_DLL\iMESExceptionManager.dll + + + ..\..\MES_C_DLL\iMESMainMenu.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Form + + + + + True + Application.myapp + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + MDI_Panel.vb + + + + VbMyResourcesResXFileCodeGenerator + My.Resources + Designer + Resources.Designer.vb + + + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + + + + + + + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Test/app.config b/SRC/MESWin/SYS4/21670ll/MESWin/Test/app.config new file mode 100644 index 0000000..48769a1 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/Test/app.config @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Test/iMES.snk b/SRC/MESWin/SYS4/21670ll/MESWin/Test/iMES.snk new file mode 100644 index 0000000..4206cdc Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/Test/iMES.snk differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/Test/modTest.vb b/SRC/MESWin/SYS4/21670ll/MESWin/Test/modTest.vb new file mode 100644 index 0000000..c16b586 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/Test/modTest.vb @@ -0,0 +1,183 @@ +Imports System.Deployment.Application +Imports System.IO +Imports System.Reflection +Imports iMESExceptionManager + +Module modTest + + Public Const defInteger As Integer = -999 '宣告整數使用的常數,用以辨識參數是否有傳入Function中。 + Public Const defString As String = "Null" '宣告字串使用的常數,用以辨識參數是否有傳入Function中。 + Public Const defDateTime As Date = #12/31/1900# '宣告日期使用的常數,用以辨識參數是否有傳入Function中。 + Public Const defSingle As Single = -999 '宣告單精準數使用的常數,用以辨識參數是否有傳入Function中。 + Public Const defDouble As Double = -999 '宣告雙精準數使用的常數,用以辨識參數是否有傳入Function中。 + Public Const strAddTagLabel As String = "extrabase" 'Add by py for Combine Addition XML doc + Public Const strAddTagName As String = "ExtraBase" 'Add by py for Combine Addition XML doc + Public Const defWinErrCode As String = "0000-899999" + Public Const defNullDate As Date = #12/31/1910# '宣告日期使用的常數,用以辨識參數是否要變更為Null。 + Public Const defNullInteger As Integer = -9999 '宣告數值使用的常數,用以辨識參數是否要變更為Null。 + + Sub Main() + Dim WinFormInfo As System.Windows.Forms.SystemInformation + + '***************************************************************************************************************** + + Dim ArgumentStr() As String = Split(Microsoft.VisualBasic.Command()) '取得傳給此執行檔的參數(應用程式路徑,UserID,Password) + Dim i As Integer + Dim App_Path As String = "" + + 'Modify By Peter 2005/06/21 Add /WSH + For i = LBound(ArgumentStr) To UBound(ArgumentStr) + If InStr(UCase(ArgumentStr(i)), "/DIR:") > 0 Then + App_Path = Mid(Trim(ArgumentStr(i)), 6, Trim(ArgumentStr(i)).Length) + ElseIf InStr(UCase(ArgumentStr(i)), "/UID:") > 0 Then + gUserNo = Mid(Trim(ArgumentStr(i)), 6, Trim(ArgumentStr(i)).Length) + ElseIf InStr(UCase(ArgumentStr(i)), "/UNA:") > 0 Then + gUserName = Mid(Trim(ArgumentStr(i)), 6, Trim(ArgumentStr(i)).Length) + ElseIf InStr(UCase(ArgumentStr(i)), "/LVL:") > 0 Then + gUserLevel = Mid(Trim(ArgumentStr(i)), 6, Trim(ArgumentStr(i)).Length) + ElseIf InStr(UCase(ArgumentStr(i)), "/LAN:") > 0 Then + gLanguageMode = Mid(Trim(ArgumentStr(i)), 6, Trim(ArgumentStr(i)).Length) + ElseIf InStr(UCase(ArgumentStr(i)), "/WSH:") > 0 Then + gMESWebServiceHost = Mid(Trim(ArgumentStr(i)), 6, Trim(ArgumentStr(i)).Length) + ElseIf InStr(UCase(ArgumentStr(i)), "/CSH:") > 0 Then + gCUSWebServiceHost = Mid(Trim(ArgumentStr(i)), 6, Trim(ArgumentStr(i)).Length) + ElseIf InStr(UCase(ArgumentStr(i)), "/ENV:") > 0 Then + gSettingMode = Mid(Trim(ArgumentStr(i)), 6, Trim(ArgumentStr(i)).Length) + ElseIf InStr(UCase(ArgumentStr(i)), "/SSH:") > 0 Then + gSFCWebServiceHost = Mid(Trim(ArgumentStr(i)), 6, Trim(ArgumentStr(i)).Length) + ElseIf InStr(UCase(ArgumentStr(i)), "/ESH:") > 0 Then + gERPWebServiceHost = Mid(Trim(ArgumentStr(i)), 6, Trim(ArgumentStr(i)).Length) + ElseIf InStr(UCase(ArgumentStr(i)), "/SSL:") > 0 Then + gEnableSSL = IIf(Mid(Trim(ArgumentStr(i)), 6, Trim(ArgumentStr(i)).Length).ToUpper = "TRUE", True, False) + End If + Next + + '***************************************************************************************************************** + If App_Path = "" Then + gAppPath = Application.StartupPath + Else + gAppPath = App_Path + End If + + If gUserNo = "" And gUserName = "" Then + + Using obj As New frmCOMChkPassword + obj.ShowDialog() + End Using + + Else + gReturnKeyValue = gUserNo + End If + + '用來做為是否可以進入系統的判斷 + If gReturnKeyValue <> "" Then + '取得電腦名稱 + gComputerName = WinFormInfo.ComputerName + + iMESExceptionManager.ExceptionManager.LanguageMode = gLanguageMode + + ' 2014/12/26 YF, Coding時套用Pro5 Style + Infragistics.Win.AppStyling.StyleManager.Load(New MemoryStream(Global.Test.My.Resources.Resources.iMES)) + gEnableStyle = True + + '進入之系統 + Dim fMain As New MDI_Panel + fMain.ShowDialog() + + End If + + End Sub + + Public Function LoadAssembly(ByVal pFileName As String) As Assembly + + Dim mainAssembly As System.Reflection.Assembly + Dim myfieldinfo() As System.Reflection.FieldInfo + Dim strAppBase As String = AppDomain.CurrentDomain.BaseDirectory + Dim strFilePath As String + Dim strNamespace As String + + Try + + '判斷是否使用ClickOnce + If ApplicationDeployment.IsNetworkDeployed Then + 'ClickOnce架構下將strAppBase改指回Smart Client + Dim tempUri As System.Uri = ApplicationDeployment.CurrentDeployment.UpdateLocation + strAppBase = tempUri.ToString.Replace("/ClickOnce/MESSeries.application", "") + End If + + strFilePath = strAppBase & "/" & pFileName + + '檢查檔案是否存在 + If (Not funCheckFileExist(strFilePath)) Then + Throw New iMESException.MESException("0000-202115", strFilePath) + End If + + mainAssembly = Assembly.LoadFrom(strFilePath) + + 'strNamespace = mainAssembly.GetExportedTypes(0).Namespace + + '設定值予Module Public變數 + 'myfieldinfo = mainAssembly.GetType(strNamespace & ".modWIN").GetFields() + + 'For i As Integer = 0 To myfieldinfo.Length - 1 + ' If myfieldinfo(i).Name.ToUpper = "gUserNo".ToUpper Then + ' myfieldinfo(i).SetValue(myfieldinfo(i), gUserNo) + ' ElseIf myfieldinfo(i).Name.ToUpper = "gUserName".ToUpper Then + ' myfieldinfo(i).SetValue(myfieldinfo(i), gUserName) + ' ElseIf myfieldinfo(i).Name.ToUpper = "gComputerName".ToUpper Then + ' myfieldinfo(i).SetValue(myfieldinfo(i), gComputerName) + ' ElseIf myfieldinfo(i).Name.ToUpper = "gUserLevel".ToUpper Then + ' myfieldinfo(i).SetValue(myfieldinfo(i), gUserLevel) + ' ElseIf myfieldinfo(i).Name.ToUpper = "gLanguageMode".ToUpper Then + ' myfieldinfo(i).SetValue(myfieldinfo(i), gLanguageMode) + ' ElseIf myfieldinfo(i).Name.ToUpper = "gAppPath".ToUpper Then + ' myfieldinfo(i).SetValue(myfieldinfo(i), gAppPath) + ' ElseIf myfieldinfo(i).Name.ToUpper = "gMESWebServiceHost".ToUpper Then + ' myfieldinfo(i).SetValue(myfieldinfo(i), gMESWebServiceHost) + ' ElseIf myfieldinfo(i).Name.ToUpper = "gCUSWebServiceHost".ToUpper Then + ' myfieldinfo(i).SetValue(myfieldinfo(i), gCUSWebServiceHost) + ' ElseIf myfieldinfo(i).Name.ToUpper = "gSFCWebServiceHost".ToUpper Then + ' myfieldinfo(i).SetValue(myfieldinfo(i), gSFCWebServiceHost) + ' ElseIf myfieldinfo(i).Name.ToUpper = "gERPWebServiceHost".ToUpper Then + ' myfieldinfo(i).SetValue(myfieldinfo(i), gERPWebServiceHost) + ' ElseIf myfieldinfo(i).Name.ToUpper = "gSettingMode".ToUpper Then + ' myfieldinfo(i).SetValue(myfieldinfo(i), gSettingMode) + ' ElseIf myfieldinfo(i).Name.ToUpper = "gEnterpriseNo".ToUpper Then + ' myfieldinfo(i).SetValue(myfieldinfo(i), gEnterpriseNo) + ' ElseIf myfieldinfo(i).Name.ToUpper = "gEnableSSL".ToUpper Then + ' myfieldinfo(i).SetValue(myfieldinfo(i), gEnableSSL) + ' ElseIf myfieldinfo(i).Name.ToUpper = "gConfigFile".ToUpper Then + ' myfieldinfo(i).SetValue(myfieldinfo(i), gConfigFile) + ' ElseIf myfieldinfo(i).Name.ToUpper = "gEnableStyle".ToUpper Then + ' myfieldinfo(i).SetValue(myfieldinfo(i), True) + ' ElseIf myfieldinfo(i).Name.ToUpper = "gSYSmode".ToUpper Then + ' myfieldinfo(i).SetValue(myfieldinfo(i), gSYSmode) + ' End If + 'Next + + Catch ex As Exception + mainAssembly = Nothing + ExceptionManager.iMESShowDialog(defWinErrCode, "Load Assembly Fail!" & vbCrLf & ex.Message, ex.StackTrace) + End Try + + Return mainAssembly + + End Function + + '檢查檔案是否存在 + Private Function funCheckFileExist(ByVal strFilePath As String) As Boolean + + 'Network架構下 + If ApplicationDeployment.IsNetworkDeployed OrElse + Application.ExecutablePath.ToLower.StartsWith("http") Then + '暫不檢查 + ElseIf IO.File.Exists(strFilePath) = False Then + '檔案架構下 + Return False + End If + + Return True + + End Function + +End Module diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/shared file/DirectionDown.png b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/DirectionDown.png new file mode 100644 index 0000000..8f89533 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/DirectionDown.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/shared file/DirectionLeft.png b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/DirectionLeft.png new file mode 100644 index 0000000..80ea854 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/DirectionLeft.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/shared file/DirectionRight.png b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/DirectionRight.png new file mode 100644 index 0000000..cc26c41 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/DirectionRight.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/shared file/DirectionUp.png b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/DirectionUp.png new file mode 100644 index 0000000..1f2c2ab Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/DirectionUp.png differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/shared file/Export16x16.ico b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/Export16x16.ico new file mode 100644 index 0000000..07fe93e Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/Export16x16.ico differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/shared file/MakeVersion.targets b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/MakeVersion.targets new file mode 100644 index 0000000..f07a58c --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/MakeVersion.targets @@ -0,0 +1,16 @@ + + + + + + + $([System.DateTime]::Now.ToString("yy").Substring(1, 1)) + $([System.DateTime]::Now.ToString("MM")) + $([System.DateTime]::Now.ToString("dd")) + + <Assembly: Reflection.AssemblyFileVersion("6.0.5.$(Year)$(Month)$(Date)")> + + + + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/shared file/MakeVersion_CS.targets b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/MakeVersion_CS.targets new file mode 100644 index 0000000..c5267d8 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/MakeVersion_CS.targets @@ -0,0 +1,16 @@ + + + + + + + $([System.DateTime]::Now.ToString("yy").Substring(1, 1)) + $([System.DateTime]::Now.ToString("MM")) + $([System.DateTime]::Now.ToString("dd")) + + [assembly: System.Reflection.AssemblyFileVersion("6.0.5.$(Year)$(Month)$(Date)")] + + + + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/shared file/Save16x16.ico b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/Save16x16.ico new file mode 100644 index 0000000..90af81e Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/Save16x16.ico differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/shared file/arERF_General.resx b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/arERF_General.resx new file mode 100644 index 0000000..f7c09a6 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/arERF_General.resx @@ -0,0 +1,411 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + #,##0.0000 + + + + + /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAICAgICAgICAgIDAgICBAUEAgIEBQYFBQUFBQYHBgYGBgYG + BwcICAkICAcKCgsLCgoODg4ODg4ODg4ODg4ODg7/2wBDAQMDAwYFBgsHBwsODAoMDhEQEBAQEREODg4O + Dg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg7/wAARCAA+ANEDAREAAhEBAxEB/8QA + HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh + MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW + V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG + x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQF + BgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV + YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE + hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq + 8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA + oAKACgAoAKACgAoAKACgAoAxdf1mx8N6HrXiHUmKadoNrNeX7qMkRQRmRyB34WtcNh3WqRpx+KTSXq3Z + GGJxCo05VJbRTb9Ernwl8Ov23ZPGPxI0nwpq3gyLS9D8T3qWOjXsUzPPFJO4jg85du1txIBxjbnPOK/S + 828Ofq2ElWjUvKEeaSa0aSu7dvLe5+a5V4ifWcWqMqdozlZO+qbdlfv57WP0Hr8vP1E8Z+IXxs8HfD+Q + aXK8uv8Aiebi28MWI8yclum/HCfjz6A18tnnFuFy98jvOr0hHV/Pt+fkfWZBwZi8yXtFaFJbzlpH5d/y + 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 + 5pDFoA//2Q== + + + + + AAEAAAD/////AQAAAAAAAAAEAQAAABZTeXN0ZW0uSU8uTWVtb3J5U3RyZWFtCgAAAAdfYnVmZmVyB19v + cmlnaW4JX3Bvc2l0aW9uB19sZW5ndGgJX2NhcGFjaXR5C19leHBhbmRhYmxlCV93cml0YWJsZQpfZXhw + b3NhYmxlB19pc09wZW4dTWFyc2hhbEJ5UmVmT2JqZWN0K19faWRlbnRpdHkHAAAAAAAAAAACAggICAgB + AQEBCQIAAAAAAAAAAAAAAMAeAADAHgAAAQEBAQoPAgAAAMAeAAACALseAAD/2P/gABBKRklGAAEBAQBg + AGAAAP/bAEMAAgICAgICAgICAgMCAgIEBQQCAgQFBgUFBQUFBgcGBgYGBgYHBwgICQgIBwoKCwsKCg4O + Dg4ODg4ODg4ODg4ODv/bAEMBAwMDBgUGCwcHCw4MCgwOERAQEBAREQ4ODg4ODg4ODg4ODg4ODg4ODg4O + Dg4ODg4ODg4ODg4ODg4ODg4ODg4ODv/AABEIAD4A0QMBEQACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAA + AAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgj + QrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2 + d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj + 5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIE + BAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYn + KCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqi + o6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEA + AhEDEQA/AP38oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC + 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 + + + + + + + + + + True + + + font-family: Arial; font-style: normal; font-variant: inherit; font-weight: normal; font-size: 10pt; font-size-adjust: inherit; font-stretch: inherit; color: rgb(0,0,0); background-repeat: inherit; background-attachment: inherit; opacity: inherit; word-spacing: inherit; letter-spacing: inherit; text-decoration: none; vertical-align: inherit; text-transform: inherit; text-align: inherit; text-indent: inherit; unicode-bidi: inherit; line-height: inherit; white-space: inherit; ddo-char-set: 0; + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/shared file/arERF_General.vb b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/arERF_General.vb new file mode 100644 index 0000000..11bede1 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/arERF_General.vb @@ -0,0 +1,1313 @@ +Imports GrapeCity.ActiveReports.Document +Imports GrapeCity.ActiveReports.Document.Section +Imports GrapeCity.ActiveReports.SectionReportModel +Imports GrapeCity.ActiveReports.Controls +Imports GrapeCity.ActiveReports +Imports System + + + +Public Class arERF_General + + Inherits GrapeCity.ActiveReports.SectionReport + + Public Sub New() + MyBase.New() + InitializeComponent() + End Sub + + '//Public Variables + Public ERFNo, LotNo, CustomerNo, OPNo, ProductNo, RuleNo, MClassNo, HoldDescription, Creator As String + Public CreateDate As DateTime + +#Region "ActiveReports Designer generated code" + Private WithEvents PageHeader As GrapeCity.ActiveReports.SectionReportModel.PageHeader = Nothing + Private WithEvents GroupHeader1 As GrapeCity.ActiveReports.SectionReportModel.GroupHeader = Nothing + Private WithEvents Detail As GrapeCity.ActiveReports.SectionReportModel.Detail = Nothing + Private WithEvents GroupFooter1 As GrapeCity.ActiveReports.SectionReportModel.GroupFooter = Nothing + Private WithEvents PageFooter As GrapeCity.ActiveReports.SectionReportModel.PageFooter = Nothing + Private Picture1 As GrapeCity.ActiveReports.SectionReportModel.Picture = Nothing + Private Shape1 As GrapeCity.ActiveReports.SectionReportModel.Shape = Nothing + Private lblERFReport As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private txtDate As GrapeCity.ActiveReports.SectionReportModel.TextBox = Nothing + Private lblPrintDate As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private lblERFNo As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private txtERFNo As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private Line2 As GrapeCity.ActiveReports.SectionReportModel.Line = Nothing + Private Line5 As GrapeCity.ActiveReports.SectionReportModel.Line = Nothing + Private lblCustomerNo As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private lblLotNo As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private lblProductNo As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private txtLotNo As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private txtCustomerNo As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private txtProductNo As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private Barcode1 As GrapeCity.ActiveReports.SectionReportModel.Barcode = Nothing + Private lblOPNo As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private txtOPNo As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private lblRuleNo As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private txtRuleNo As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private lblMClassNo As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private txtMClassNo As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private lblHoldDescription As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private lblCreator As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private txtCreator As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private lblCreateDate As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private Line27 As GrapeCity.ActiveReports.SectionReportModel.Line = Nothing + Private Line28 As GrapeCity.ActiveReports.SectionReportModel.Line = Nothing + Private Line29 As GrapeCity.ActiveReports.SectionReportModel.Line = Nothing + Private Line30 As GrapeCity.ActiveReports.SectionReportModel.Line = Nothing + Private Line31 As GrapeCity.ActiveReports.SectionReportModel.Line = Nothing + Private Line32 As GrapeCity.ActiveReports.SectionReportModel.Line = Nothing + Private txtCreateDate As GrapeCity.ActiveReports.SectionReportModel.TextBox = Nothing + Private txtHoldDescription As GrapeCity.ActiveReports.SectionReportModel.TextBox = Nothing + Private lblHoldItemNo As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private lblQty As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private lblHoldDisposition As GrapeCity.ActiveReports.SectionReportModel.Label = Nothing + Private Line33 As GrapeCity.ActiveReports.SectionReportModel.Line = Nothing + Private Line34 As GrapeCity.ActiveReports.SectionReportModel.Line = Nothing + Private Line35 As GrapeCity.ActiveReports.SectionReportModel.Line = Nothing + Private txtHoldItemNo As GrapeCity.ActiveReports.SectionReportModel.TextBox = Nothing + Private txtQty As GrapeCity.ActiveReports.SectionReportModel.TextBox = Nothing + Private txtHoldDisposition As GrapeCity.ActiveReports.SectionReportModel.TextBox = Nothing + Private Line36 As GrapeCity.ActiveReports.SectionReportModel.Line = Nothing + Friend WithEvents Line1 As GrapeCity.ActiveReports.SectionReportModel.Line + Friend WithEvents Label1 As GrapeCity.ActiveReports.SectionReportModel.Label + Friend WithEvents Label2 As GrapeCity.ActiveReports.SectionReportModel.Label + Friend WithEvents Label3 As GrapeCity.ActiveReports.SectionReportModel.Label + Friend WithEvents Label4 As GrapeCity.ActiveReports.SectionReportModel.Label + Friend WithEvents Label5 As GrapeCity.ActiveReports.SectionReportModel.Label + Private Line37 As GrapeCity.ActiveReports.SectionReportModel.Line = Nothing + Private Sub InitializeComponent() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(arERF_General)) + Me.Detail = New GrapeCity.ActiveReports.SectionReportModel.Detail + Me.txtHoldDisposition = New GrapeCity.ActiveReports.SectionReportModel.TextBox + Me.txtHoldItemNo = New GrapeCity.ActiveReports.SectionReportModel.TextBox + Me.txtQty = New GrapeCity.ActiveReports.SectionReportModel.TextBox + Me.Line36 = New GrapeCity.ActiveReports.SectionReportModel.Line + Me.Line37 = New GrapeCity.ActiveReports.SectionReportModel.Line + Me.Line1 = New GrapeCity.ActiveReports.SectionReportModel.Line + Me.PageHeader = New GrapeCity.ActiveReports.SectionReportModel.PageHeader + Me.Picture1 = New GrapeCity.ActiveReports.SectionReportModel.Picture + Me.Shape1 = New GrapeCity.ActiveReports.SectionReportModel.Shape + Me.Line29 = New GrapeCity.ActiveReports.SectionReportModel.Line + Me.txtCreateDate = New GrapeCity.ActiveReports.SectionReportModel.TextBox + Me.lblERFReport = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.txtDate = New GrapeCity.ActiveReports.SectionReportModel.TextBox + Me.lblPrintDate = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.lblERFNo = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.txtERFNo = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.Line2 = New GrapeCity.ActiveReports.SectionReportModel.Line + Me.Line5 = New GrapeCity.ActiveReports.SectionReportModel.Line + Me.lblCustomerNo = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.lblLotNo = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.lblProductNo = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.txtLotNo = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.txtCustomerNo = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.txtProductNo = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.Barcode1 = New GrapeCity.ActiveReports.SectionReportModel.Barcode + Me.lblOPNo = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.txtOPNo = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.lblRuleNo = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.txtRuleNo = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.lblMClassNo = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.txtMClassNo = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.lblHoldDescription = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.lblCreator = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.txtCreator = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.lblCreateDate = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.Line27 = New GrapeCity.ActiveReports.SectionReportModel.Line + Me.Line28 = New GrapeCity.ActiveReports.SectionReportModel.Line + Me.Line30 = New GrapeCity.ActiveReports.SectionReportModel.Line + Me.Line31 = New GrapeCity.ActiveReports.SectionReportModel.Line + Me.Line32 = New GrapeCity.ActiveReports.SectionReportModel.Line + Me.txtHoldDescription = New GrapeCity.ActiveReports.SectionReportModel.TextBox + Me.Label1 = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.Label2 = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.Label3 = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.Label4 = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.Label5 = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.PageFooter = New GrapeCity.ActiveReports.SectionReportModel.PageFooter + Me.GroupHeader1 = New GrapeCity.ActiveReports.SectionReportModel.GroupHeader + Me.lblHoldItemNo = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.lblQty = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.lblHoldDisposition = New GrapeCity.ActiveReports.SectionReportModel.Label + Me.Line33 = New GrapeCity.ActiveReports.SectionReportModel.Line + Me.Line34 = New GrapeCity.ActiveReports.SectionReportModel.Line + Me.Line35 = New GrapeCity.ActiveReports.SectionReportModel.Line + Me.GroupFooter1 = New GrapeCity.ActiveReports.SectionReportModel.GroupFooter + CType(Me.txtHoldDisposition, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtHoldItemNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtQty, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.Picture1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtCreateDate, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblERFReport, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtDate, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblPrintDate, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblERFNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtERFNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblCustomerNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblLotNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblProductNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtLotNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtCustomerNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtProductNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblOPNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtOPNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblRuleNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtRuleNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblMClassNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtMClassNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblHoldDescription, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblCreator, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtCreator, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblCreateDate, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtHoldDescription, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.Label1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.Label2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.Label3, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.Label4, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.Label5, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblHoldItemNo, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblQty, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.lblHoldDisposition, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me, System.ComponentModel.ISupportInitialize).BeginInit() + ' + 'Detail + ' + Me.Detail.ColumnSpacing = 0.0! + Me.Detail.Controls.AddRange(New GrapeCity.ActiveReports.SectionReportModel.ARControl() {Me.txtHoldDisposition, Me.txtHoldItemNo, Me.txtQty, Me.Line36, Me.Line37, Me.Line1}) + Me.Detail.Height = 0.3333333! + Me.Detail.KeepTogether = True + Me.Detail.Name = "Detail" + ' + 'txtHoldDisposition + ' + Me.txtHoldDisposition.Border.BottomColor = System.Drawing.Color.Black + Me.txtHoldDisposition.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtHoldDisposition.Border.LeftColor = System.Drawing.Color.Black + Me.txtHoldDisposition.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtHoldDisposition.Border.RightColor = System.Drawing.Color.Black + Me.txtHoldDisposition.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtHoldDisposition.Border.TopColor = System.Drawing.Color.Black + Me.txtHoldDisposition.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtHoldDisposition.DataField = "HoldDisposition" + Me.txtHoldDisposition.Height = 0.1968504! + Me.txtHoldDisposition.Left = 2.386811! + Me.txtHoldDisposition.Name = "txtHoldDisposition" + Me.txtHoldDisposition.Style = "ddo-char-set: 136; font-size: 9.75pt; font-family: 新細明體; " + Me.txtHoldDisposition.Text = Nothing + Me.txtHoldDisposition.Top = 0.0492126! + Me.txtHoldDisposition.Width = 5.364173! + ' + 'txtHoldItemNo + ' + Me.txtHoldItemNo.Border.BottomColor = System.Drawing.Color.Black + Me.txtHoldItemNo.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtHoldItemNo.Border.LeftColor = System.Drawing.Color.Black + Me.txtHoldItemNo.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtHoldItemNo.Border.RightColor = System.Drawing.Color.Black + Me.txtHoldItemNo.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtHoldItemNo.Border.TopColor = System.Drawing.Color.Black + Me.txtHoldItemNo.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtHoldItemNo.DataField = "HoldItemNo" + Me.txtHoldItemNo.Height = 0.1968504! + Me.txtHoldItemNo.Left = 0.1476378! + Me.txtHoldItemNo.Name = "txtHoldItemNo" + Me.txtHoldItemNo.Style = "font-size: 9.75pt; font-family: 新細明體; " + Me.txtHoldItemNo.Text = Nothing + Me.txtHoldItemNo.Top = 0.0492126! + Me.txtHoldItemNo.Width = 1.353346! + ' + 'txtQty + ' + Me.txtQty.Border.BottomColor = System.Drawing.Color.Black + Me.txtQty.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtQty.Border.LeftColor = System.Drawing.Color.Black + Me.txtQty.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtQty.Border.RightColor = System.Drawing.Color.Black + Me.txtQty.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtQty.Border.TopColor = System.Drawing.Color.Black + Me.txtQty.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtQty.DataField = "Qty" + Me.txtQty.Height = 0.2! + Me.txtQty.Left = 1.572917! + Me.txtQty.Name = "txtQty" + Me.txtQty.OutputFormat = resources.GetString("txtQty.OutputFormat") + Me.txtQty.Style = "font-size: 9.75pt; font-family: 新細明體; " + Me.txtQty.Text = Nothing + Me.txtQty.Top = 0.05298557! + Me.txtQty.Width = 0.75! + ' + 'Line36 + ' + Me.Line36.AnchorBottom = True + Me.Line36.Border.BottomColor = System.Drawing.Color.Black + Me.Line36.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line36.Border.LeftColor = System.Drawing.Color.Black + Me.Line36.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line36.Border.RightColor = System.Drawing.Color.Black + Me.Line36.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line36.Border.TopColor = System.Drawing.Color.Black + Me.Line36.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line36.Height = 0.31! + Me.Line36.Left = 0.0625! + Me.Line36.LineWeight = 1.0! + Me.Line36.Name = "Line36" + Me.Line36.Top = 0.0! + Me.Line36.Width = 0.0003187731! + Me.Line36.X1 = 0.0625! + Me.Line36.X2 = 0.06281877! + Me.Line36.Y1 = 0.0! + Me.Line36.Y2 = 0.31! + ' + 'Line37 + ' + Me.Line37.AnchorBottom = True + Me.Line37.Border.BottomColor = System.Drawing.Color.Black + Me.Line37.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line37.Border.LeftColor = System.Drawing.Color.Black + Me.Line37.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line37.Border.RightColor = System.Drawing.Color.Black + Me.Line37.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line37.Border.TopColor = System.Drawing.Color.Black + Me.Line37.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line37.Height = 0.31! + Me.Line37.Left = 7.8125! + Me.Line37.LineWeight = 1.0! + Me.Line37.Name = "Line37" + Me.Line37.Top = 0.0! + Me.Line37.Width = 0.0003190041! + Me.Line37.X1 = 7.8125! + Me.Line37.X2 = 7.812819! + Me.Line37.Y1 = 0.0! + Me.Line37.Y2 = 0.31! + ' + 'Line1 + ' + Me.Line1.Border.BottomColor = System.Drawing.Color.Black + Me.Line1.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line1.Border.LeftColor = System.Drawing.Color.Black + Me.Line1.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line1.Border.RightColor = System.Drawing.Color.Black + Me.Line1.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line1.Border.TopColor = System.Drawing.Color.Black + Me.Line1.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line1.Height = 0.0004101098! + Me.Line1.Left = 0.05856299! + Me.Line1.LineWeight = 1.0! + Me.Line1.Name = "Line1" + Me.Line1.Top = 0.3198819! + Me.Line1.Width = 7.756398! + Me.Line1.X1 = 0.05856299! + Me.Line1.X2 = 7.814961! + Me.Line1.Y1 = 0.3198819! + Me.Line1.Y2 = 0.320292! + ' + 'PageHeader + ' + Me.PageHeader.CanShrink = True + Me.PageHeader.Controls.AddRange(New GrapeCity.ActiveReports.SectionReportModel.ARControl() {Me.Picture1, Me.Shape1, Me.Line29, Me.txtCreateDate, Me.lblERFReport, Me.txtDate, Me.lblPrintDate, Me.lblERFNo, Me.txtERFNo, Me.Line2, Me.Line5, Me.lblCustomerNo, Me.lblLotNo, Me.lblProductNo, Me.txtLotNo, Me.txtCustomerNo, Me.txtProductNo, Me.Barcode1, Me.lblOPNo, Me.txtOPNo, Me.lblRuleNo, Me.txtRuleNo, Me.lblMClassNo, Me.txtMClassNo, Me.lblHoldDescription, Me.lblCreator, Me.txtCreator, Me.lblCreateDate, Me.Line27, Me.Line28, Me.Line30, Me.Line31, Me.Line32, Me.txtHoldDescription, Me.Label1, Me.Label2, Me.Label3, Me.Label4, Me.Label5}) + Me.PageHeader.Height = 2.760417! + Me.PageHeader.Name = "PageHeader" + ' + 'Picture1 + ' + Me.Picture1.Border.BottomColor = System.Drawing.Color.Black + Me.Picture1.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Picture1.Border.LeftColor = System.Drawing.Color.Black + Me.Picture1.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Picture1.Border.RightColor = System.Drawing.Color.Black + Me.Picture1.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Picture1.Border.TopColor = System.Drawing.Color.Black + Me.Picture1.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Picture1.Height = 0.5! + Me.Picture1.Image = CType(resources.GetObject("Picture1.Image"), System.Drawing.Image) + Me.Picture1.ImageData = CType(resources.GetObject("Picture1.ImageData"), System.IO.Stream) + Me.Picture1.Left = 0.0! + Me.Picture1.LineColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer)) + Me.Picture1.LineWeight = 0.0! + Me.Picture1.Name = "Picture1" + Me.Picture1.SizeMode = GrapeCity.ActiveReports.SectionReportModel.SizeModes.Zoom + Me.Picture1.Top = 0.0! + Me.Picture1.Width = 1.6875! + ' + 'Shape1 + ' + Me.Shape1.Border.BottomColor = System.Drawing.Color.Black + Me.Shape1.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Shape1.Border.LeftColor = System.Drawing.Color.Black + Me.Shape1.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Shape1.Border.RightColor = System.Drawing.Color.Black + Me.Shape1.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Shape1.Border.TopColor = System.Drawing.Color.Black + Me.Shape1.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Shape1.Height = 2.25! + Me.Shape1.Left = 0.0625! + Me.Shape1.Name = "Shape1" + Me.Shape1.RoundingRadius = New GrapeCity.ActiveReports.Controls.CornersRadius(9.999999!) + Me.Shape1.Top = 0.5! + Me.Shape1.Width = 7.75! + ' + 'Line29 + ' + Me.Line29.Border.BottomColor = System.Drawing.Color.Black + Me.Line29.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line29.Border.LeftColor = System.Drawing.Color.Black + Me.Line29.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line29.Border.RightColor = System.Drawing.Color.Black + Me.Line29.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line29.Border.TopColor = System.Drawing.Color.Black + Me.Line29.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line29.Height = 0.0001250505! + Me.Line29.Left = 0.0625! + Me.Line29.LineWeight = 1.0! + Me.Line29.Name = "Line29" + Me.Line29.Top = 1.6875! + Me.Line29.Width = 7.75! + Me.Line29.X1 = 7.8125! + Me.Line29.X2 = 0.0625! + Me.Line29.Y1 = 1.6875! + Me.Line29.Y2 = 1.687625! + ' + 'txtCreateDate + ' + Me.txtCreateDate.Border.BottomColor = System.Drawing.Color.Black + Me.txtCreateDate.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtCreateDate.Border.LeftColor = System.Drawing.Color.Black + Me.txtCreateDate.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtCreateDate.Border.RightColor = System.Drawing.Color.Black + Me.txtCreateDate.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtCreateDate.Border.TopColor = System.Drawing.Color.Black + Me.txtCreateDate.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtCreateDate.Height = 0.2! + Me.txtCreateDate.Left = 6.484375! + Me.txtCreateDate.Name = "txtCreateDate" + Me.txtCreateDate.OutputFormat = resources.GetString("txtCreateDate.OutputFormat") + Me.txtCreateDate.Style = "ddo-char-set: 136; font-size: 9.75pt; font-family: 新細明體; " + Me.txtCreateDate.Text = Nothing + Me.txtCreateDate.Top = 1.453125! + Me.txtCreateDate.Width = 1.328125! + ' + 'lblERFReport + ' + Me.lblERFReport.Border.BottomColor = System.Drawing.Color.Black + Me.lblERFReport.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblERFReport.Border.LeftColor = System.Drawing.Color.Black + Me.lblERFReport.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblERFReport.Border.RightColor = System.Drawing.Color.Black + Me.lblERFReport.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblERFReport.Border.TopColor = System.Drawing.Color.Black + Me.lblERFReport.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblERFReport.Height = 0.4429134! + Me.lblERFReport.HyperLink = "" + Me.lblERFReport.Left = 3.198819! + Me.lblERFReport.Name = "lblERFReport" + Me.lblERFReport.Style = "text-decoration: none; ddo-char-set: 0; font-weight: bold; font-style: normal; fo" & _ + "nt-size: 24pt; font-family: Times New Roman; " + Me.lblERFReport.Text = "ERF Report" + Me.lblERFReport.Top = 0.0! + Me.lblERFReport.Width = 2.26378! + ' + 'txtDate + ' + Me.txtDate.Border.BottomColor = System.Drawing.Color.Black + Me.txtDate.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtDate.Border.LeftColor = System.Drawing.Color.Black + Me.txtDate.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtDate.Border.RightColor = System.Drawing.Color.Black + Me.txtDate.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtDate.Border.TopColor = System.Drawing.Color.Black + Me.txtDate.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtDate.Height = 0.2! + Me.txtDate.Left = 6.5! + Me.txtDate.Name = "txtDate" + Me.txtDate.Style = "font-size: 9.75pt; font-family: Times New Roman; " + Me.txtDate.Text = Nothing + Me.txtDate.Top = 0.25! + Me.txtDate.Width = 1.25! + ' + 'lblPrintDate + ' + Me.lblPrintDate.Border.BottomColor = System.Drawing.Color.Black + Me.lblPrintDate.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblPrintDate.Border.LeftColor = System.Drawing.Color.Black + Me.lblPrintDate.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblPrintDate.Border.RightColor = System.Drawing.Color.Black + Me.lblPrintDate.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblPrintDate.Border.TopColor = System.Drawing.Color.Black + Me.lblPrintDate.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblPrintDate.Height = 0.2! + Me.lblPrintDate.HyperLink = "" + Me.lblPrintDate.Left = 5.75! + Me.lblPrintDate.Name = "lblPrintDate" + Me.lblPrintDate.Style = "font-size: 9.75pt; font-family: Times New Roman; " + Me.lblPrintDate.Text = "Print Date" + Me.lblPrintDate.Top = 0.25! + Me.lblPrintDate.Width = 0.75! + ' + 'lblERFNo + ' + Me.lblERFNo.Border.BottomColor = System.Drawing.Color.Black + Me.lblERFNo.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblERFNo.Border.LeftColor = System.Drawing.Color.Black + Me.lblERFNo.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblERFNo.Border.RightColor = System.Drawing.Color.Black + Me.lblERFNo.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblERFNo.Border.TopColor = System.Drawing.Color.Black + Me.lblERFNo.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblERFNo.Height = 0.2! + Me.lblERFNo.HyperLink = "" + Me.lblERFNo.Left = 0.125! + Me.lblERFNo.Name = "lblERFNo" + Me.lblERFNo.Style = "font-size: 9.75pt; font-family: Times New Roman; " + Me.lblERFNo.Text = "ERF No" + Me.lblERFNo.Top = 0.5625! + Me.lblERFNo.Width = 0.875! + ' + 'txtERFNo + ' + Me.txtERFNo.Border.BottomColor = System.Drawing.Color.Black + Me.txtERFNo.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtERFNo.Border.LeftColor = System.Drawing.Color.Black + Me.txtERFNo.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtERFNo.Border.RightColor = System.Drawing.Color.Black + Me.txtERFNo.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtERFNo.Border.TopColor = System.Drawing.Color.Black + Me.txtERFNo.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtERFNo.Height = 0.2! + Me.txtERFNo.HyperLink = "" + Me.txtERFNo.Left = 1.0625! + Me.txtERFNo.Name = "txtERFNo" + Me.txtERFNo.Style = "ddo-char-set: 136; font-size: 9.75pt; font-family: 新細明體; " + Me.txtERFNo.Text = "" + Me.txtERFNo.Top = 0.5625! + Me.txtERFNo.Width = 1.6875! + ' + 'Line2 + ' + Me.Line2.Border.BottomColor = System.Drawing.Color.Black + Me.Line2.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line2.Border.LeftColor = System.Drawing.Color.Black + Me.Line2.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line2.Border.RightColor = System.Drawing.Color.Black + Me.Line2.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line2.Border.TopColor = System.Drawing.Color.Black + Me.Line2.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line2.Height = 0.91! + Me.Line2.Left = 2.866! + Me.Line2.LineWeight = 1.0! + Me.Line2.Name = "Line2" + Me.Line2.Top = 0.5! + Me.Line2.Width = 0.0003190041! + Me.Line2.X1 = 2.866319! + Me.Line2.X2 = 2.866! + Me.Line2.Y1 = 0.5! + Me.Line2.Y2 = 1.41! + ' + 'Line5 + ' + Me.Line5.Border.BottomColor = System.Drawing.Color.Black + Me.Line5.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line5.Border.LeftColor = System.Drawing.Color.Black + Me.Line5.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line5.Border.RightColor = System.Drawing.Color.Black + Me.Line5.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line5.Border.TopColor = System.Drawing.Color.Black + Me.Line5.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line5.Height = 0.0! + Me.Line5.Left = 0.0625! + Me.Line5.LineWeight = 1.0! + Me.Line5.Name = "Line5" + Me.Line5.Top = 0.8125! + Me.Line5.Width = 5.54! + Me.Line5.X1 = 5.6025! + Me.Line5.X2 = 0.0625! + Me.Line5.Y1 = 0.8125! + Me.Line5.Y2 = 0.8125! + ' + 'lblCustomerNo + ' + Me.lblCustomerNo.Border.BottomColor = System.Drawing.Color.Black + Me.lblCustomerNo.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblCustomerNo.Border.LeftColor = System.Drawing.Color.Black + Me.lblCustomerNo.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblCustomerNo.Border.RightColor = System.Drawing.Color.Black + Me.lblCustomerNo.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblCustomerNo.Border.TopColor = System.Drawing.Color.Black + Me.lblCustomerNo.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblCustomerNo.Height = 0.2! + Me.lblCustomerNo.HyperLink = "" + Me.lblCustomerNo.Left = 0.125! + Me.lblCustomerNo.Name = "lblCustomerNo" + Me.lblCustomerNo.Style = "font-size: 9.75pt; font-family: Times New Roman; " + Me.lblCustomerNo.Text = "Customer No" + Me.lblCustomerNo.Top = 0.859375! + Me.lblCustomerNo.Width = 0.875! + ' + 'lblLotNo + ' + Me.lblLotNo.Border.BottomColor = System.Drawing.Color.Black + Me.lblLotNo.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblLotNo.Border.LeftColor = System.Drawing.Color.Black + Me.lblLotNo.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblLotNo.Border.RightColor = System.Drawing.Color.Black + Me.lblLotNo.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblLotNo.Border.TopColor = System.Drawing.Color.Black + Me.lblLotNo.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblLotNo.Height = 0.2! + Me.lblLotNo.HyperLink = "" + Me.lblLotNo.Left = 2.9375! + Me.lblLotNo.Name = "lblLotNo" + Me.lblLotNo.Style = "font-size: 9.75pt; font-family: Times New Roman; " + Me.lblLotNo.Text = "Lot No" + Me.lblLotNo.Top = 0.5625! + Me.lblLotNo.Width = 0.75! + ' + 'lblProductNo + ' + Me.lblProductNo.Border.BottomColor = System.Drawing.Color.Black + Me.lblProductNo.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblProductNo.Border.LeftColor = System.Drawing.Color.Black + Me.lblProductNo.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblProductNo.Border.RightColor = System.Drawing.Color.Black + Me.lblProductNo.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblProductNo.Border.TopColor = System.Drawing.Color.Black + Me.lblProductNo.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblProductNo.Height = 0.2! + Me.lblProductNo.HyperLink = "" + Me.lblProductNo.Left = 2.9375! + Me.lblProductNo.Name = "lblProductNo" + Me.lblProductNo.Style = "font-size: 9.75pt; font-family: Times New Roman; " + Me.lblProductNo.Text = "Product No" + Me.lblProductNo.Top = 0.859375! + Me.lblProductNo.Width = 0.75! + ' + 'txtLotNo + ' + Me.txtLotNo.Border.BottomColor = System.Drawing.Color.Black + Me.txtLotNo.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtLotNo.Border.LeftColor = System.Drawing.Color.Black + Me.txtLotNo.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtLotNo.Border.RightColor = System.Drawing.Color.Black + Me.txtLotNo.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtLotNo.Border.TopColor = System.Drawing.Color.Black + Me.txtLotNo.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtLotNo.Height = 0.1875! + Me.txtLotNo.HyperLink = "" + Me.txtLotNo.Left = 3.75! + Me.txtLotNo.Name = "txtLotNo" + Me.txtLotNo.Style = "ddo-char-set: 136; font-size: 9.75pt; font-family: 新細明體; " + Me.txtLotNo.Text = "" + Me.txtLotNo.Top = 0.5625! + Me.txtLotNo.Width = 1.8125! + ' + 'txtCustomerNo + ' + Me.txtCustomerNo.Border.BottomColor = System.Drawing.Color.Black + Me.txtCustomerNo.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtCustomerNo.Border.LeftColor = System.Drawing.Color.Black + Me.txtCustomerNo.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtCustomerNo.Border.RightColor = System.Drawing.Color.Black + Me.txtCustomerNo.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtCustomerNo.Border.TopColor = System.Drawing.Color.Black + Me.txtCustomerNo.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtCustomerNo.Height = 0.2! + Me.txtCustomerNo.HyperLink = "" + Me.txtCustomerNo.Left = 1.0625! + Me.txtCustomerNo.Name = "txtCustomerNo" + Me.txtCustomerNo.Style = "ddo-char-set: 136; font-size: 9.75pt; font-family: 新細明體; " + Me.txtCustomerNo.Text = "" + Me.txtCustomerNo.Top = 0.875! + Me.txtCustomerNo.Width = 1.6875! + ' + 'txtProductNo + ' + Me.txtProductNo.Border.BottomColor = System.Drawing.Color.Black + Me.txtProductNo.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtProductNo.Border.LeftColor = System.Drawing.Color.Black + Me.txtProductNo.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtProductNo.Border.RightColor = System.Drawing.Color.Black + Me.txtProductNo.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtProductNo.Border.TopColor = System.Drawing.Color.Black + Me.txtProductNo.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtProductNo.Height = 0.1875! + Me.txtProductNo.HyperLink = "" + Me.txtProductNo.Left = 3.75! + Me.txtProductNo.Name = "txtProductNo" + Me.txtProductNo.Style = "ddo-char-set: 136; font-size: 9.75pt; font-family: 新細明體; " + Me.txtProductNo.Text = "" + Me.txtProductNo.Top = 0.859375! + Me.txtProductNo.Width = 1.8125! + ' + 'Barcode1 + ' + Me.Barcode1.Border.BottomColor = System.Drawing.Color.Black + Me.Barcode1.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Barcode1.Border.LeftColor = System.Drawing.Color.Black + Me.Barcode1.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Barcode1.Border.RightColor = System.Drawing.Color.Black + Me.Barcode1.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Barcode1.Border.TopColor = System.Drawing.Color.Black + Me.Barcode1.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Barcode1.CaptionPosition = GrapeCity.ActiveReports.SectionReportModel.BarCodeCaptionPosition.Below + Me.Barcode1.Font = New System.Drawing.Font("Courier New", 8.0!) + Me.Barcode1.Height = 0.4375! + Me.Barcode1.Left = 5.6875! + Me.Barcode1.Name = "Barcode1" + Me.Barcode1.Text = "Barcode1" + Me.Barcode1.Top = 0.59375! + Me.Barcode1.Width = 2.0625! + ' + 'lblOPNo + ' + Me.lblOPNo.Border.BottomColor = System.Drawing.Color.Black + Me.lblOPNo.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblOPNo.Border.LeftColor = System.Drawing.Color.Black + Me.lblOPNo.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblOPNo.Border.RightColor = System.Drawing.Color.Black + Me.lblOPNo.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblOPNo.Border.TopColor = System.Drawing.Color.Black + Me.lblOPNo.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblOPNo.Height = 0.2! + Me.lblOPNo.HyperLink = "" + Me.lblOPNo.Left = 2.9375! + Me.lblOPNo.Name = "lblOPNo" + Me.lblOPNo.Style = "font-size: 9.75pt; font-family: Times New Roman; " + Me.lblOPNo.Text = "OP No" + Me.lblOPNo.Top = 1.1875! + Me.lblOPNo.Width = 0.75! + ' + 'txtOPNo + ' + Me.txtOPNo.Border.BottomColor = System.Drawing.Color.Black + Me.txtOPNo.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtOPNo.Border.LeftColor = System.Drawing.Color.Black + Me.txtOPNo.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtOPNo.Border.RightColor = System.Drawing.Color.Black + Me.txtOPNo.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtOPNo.Border.TopColor = System.Drawing.Color.Black + Me.txtOPNo.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtOPNo.Height = 0.1875! + Me.txtOPNo.HyperLink = "" + Me.txtOPNo.Left = 3.75! + Me.txtOPNo.Name = "txtOPNo" + Me.txtOPNo.Style = "ddo-char-set: 136; font-size: 9.75pt; font-family: 新細明體; " + Me.txtOPNo.Text = "" + Me.txtOPNo.Top = 1.1875! + Me.txtOPNo.Width = 1.8125! + ' + 'lblRuleNo + ' + Me.lblRuleNo.Border.BottomColor = System.Drawing.Color.Black + Me.lblRuleNo.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblRuleNo.Border.LeftColor = System.Drawing.Color.Black + Me.lblRuleNo.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblRuleNo.Border.RightColor = System.Drawing.Color.Black + Me.lblRuleNo.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblRuleNo.Border.TopColor = System.Drawing.Color.Black + Me.lblRuleNo.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblRuleNo.Height = 0.2! + Me.lblRuleNo.HyperLink = "" + Me.lblRuleNo.Left = 0.125! + Me.lblRuleNo.Name = "lblRuleNo" + Me.lblRuleNo.Style = "font-size: 9.75pt; font-family: Times New Roman; " + Me.lblRuleNo.Text = "Rule No" + Me.lblRuleNo.Top = 1.453125! + Me.lblRuleNo.Width = 0.75! + ' + 'txtRuleNo + ' + Me.txtRuleNo.Border.BottomColor = System.Drawing.Color.Black + Me.txtRuleNo.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtRuleNo.Border.LeftColor = System.Drawing.Color.Black + Me.txtRuleNo.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtRuleNo.Border.RightColor = System.Drawing.Color.Black + Me.txtRuleNo.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtRuleNo.Border.TopColor = System.Drawing.Color.Black + Me.txtRuleNo.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtRuleNo.Height = 0.2! + Me.txtRuleNo.HyperLink = "" + Me.txtRuleNo.Left = 1.0625! + Me.txtRuleNo.Name = "txtRuleNo" + Me.txtRuleNo.Style = "ddo-char-set: 136; font-size: 9.75pt; font-family: 新細明體; " + Me.txtRuleNo.Text = "" + Me.txtRuleNo.Top = 1.453125! + Me.txtRuleNo.Width = 1.6875! + ' + 'lblMClassNo + ' + Me.lblMClassNo.Border.BottomColor = System.Drawing.Color.Black + Me.lblMClassNo.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblMClassNo.Border.LeftColor = System.Drawing.Color.Black + Me.lblMClassNo.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblMClassNo.Border.RightColor = System.Drawing.Color.Black + Me.lblMClassNo.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblMClassNo.Border.TopColor = System.Drawing.Color.Black + Me.lblMClassNo.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblMClassNo.Height = 0.2! + Me.lblMClassNo.HyperLink = "" + Me.lblMClassNo.Left = 0.125! + Me.lblMClassNo.Name = "lblMClassNo" + Me.lblMClassNo.Style = "font-size: 9.75pt; font-family: Times New Roman; " + Me.lblMClassNo.Text = "MClass No" + Me.lblMClassNo.Top = 1.15625! + Me.lblMClassNo.Width = 0.75! + ' + 'txtMClassNo + ' + Me.txtMClassNo.Border.BottomColor = System.Drawing.Color.Black + Me.txtMClassNo.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtMClassNo.Border.LeftColor = System.Drawing.Color.Black + Me.txtMClassNo.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtMClassNo.Border.RightColor = System.Drawing.Color.Black + Me.txtMClassNo.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtMClassNo.Border.TopColor = System.Drawing.Color.Black + Me.txtMClassNo.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtMClassNo.Height = 0.2! + Me.txtMClassNo.HyperLink = "" + Me.txtMClassNo.Left = 1.0625! + Me.txtMClassNo.Name = "txtMClassNo" + Me.txtMClassNo.Style = "ddo-char-set: 136; font-size: 9.75pt; font-family: 新細明體; " + Me.txtMClassNo.Text = "" + Me.txtMClassNo.Top = 1.15625! + Me.txtMClassNo.Width = 1.6875! + ' + 'lblHoldDescription + ' + Me.lblHoldDescription.Border.BottomColor = System.Drawing.Color.Black + Me.lblHoldDescription.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblHoldDescription.Border.LeftColor = System.Drawing.Color.Black + Me.lblHoldDescription.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblHoldDescription.Border.RightColor = System.Drawing.Color.Black + Me.lblHoldDescription.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblHoldDescription.Border.TopColor = System.Drawing.Color.Black + Me.lblHoldDescription.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblHoldDescription.Height = 0.2! + Me.lblHoldDescription.HyperLink = "" + Me.lblHoldDescription.Left = 0.1230315! + Me.lblHoldDescription.Name = "lblHoldDescription" + Me.lblHoldDescription.Style = "font-size: 9.75pt; font-family: Times New Roman; " + Me.lblHoldDescription.Text = "Hold Description" + Me.lblHoldDescription.Top = 1.747047! + Me.lblHoldDescription.Width = 1.125! + ' + 'lblCreator + ' + Me.lblCreator.Border.BottomColor = System.Drawing.Color.Black + Me.lblCreator.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblCreator.Border.LeftColor = System.Drawing.Color.Black + Me.lblCreator.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblCreator.Border.RightColor = System.Drawing.Color.Black + Me.lblCreator.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblCreator.Border.TopColor = System.Drawing.Color.Black + Me.lblCreator.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblCreator.Height = 0.2! + Me.lblCreator.HyperLink = "" + Me.lblCreator.Left = 5.65625! + Me.lblCreator.Name = "lblCreator" + Me.lblCreator.Style = "font-size: 9.75pt; font-family: Times New Roman; " + Me.lblCreator.Text = "Creator" + Me.lblCreator.Top = 1.1875! + Me.lblCreator.Width = 0.8125! + ' + 'txtCreator + ' + Me.txtCreator.Border.BottomColor = System.Drawing.Color.Black + Me.txtCreator.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtCreator.Border.LeftColor = System.Drawing.Color.Black + Me.txtCreator.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtCreator.Border.RightColor = System.Drawing.Color.Black + Me.txtCreator.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtCreator.Border.TopColor = System.Drawing.Color.Black + Me.txtCreator.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtCreator.Height = 0.1875! + Me.txtCreator.HyperLink = "" + Me.txtCreator.Left = 6.484375! + Me.txtCreator.Name = "txtCreator" + Me.txtCreator.Style = "ddo-char-set: 136; font-size: 9.75pt; font-family: 新細明體; " + Me.txtCreator.Text = "" + Me.txtCreator.Top = 1.1875! + Me.txtCreator.Width = 1.3125! + ' + 'lblCreateDate + ' + Me.lblCreateDate.Border.BottomColor = System.Drawing.Color.Black + Me.lblCreateDate.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblCreateDate.Border.LeftColor = System.Drawing.Color.Black + Me.lblCreateDate.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblCreateDate.Border.RightColor = System.Drawing.Color.Black + Me.lblCreateDate.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblCreateDate.Border.TopColor = System.Drawing.Color.Black + Me.lblCreateDate.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblCreateDate.Height = 0.2! + Me.lblCreateDate.HyperLink = "" + Me.lblCreateDate.Left = 5.65625! + Me.lblCreateDate.Name = "lblCreateDate" + Me.lblCreateDate.Style = "font-size: 9.75pt; font-family: Times New Roman; " + Me.lblCreateDate.Text = "Create Date" + Me.lblCreateDate.Top = 1.453125! + Me.lblCreateDate.Width = 0.8125! + ' + 'Line27 + ' + Me.Line27.Border.BottomColor = System.Drawing.Color.Black + Me.Line27.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line27.Border.LeftColor = System.Drawing.Color.Black + Me.Line27.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line27.Border.RightColor = System.Drawing.Color.Black + Me.Line27.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line27.Border.TopColor = System.Drawing.Color.Black + Me.Line27.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line27.Height = 0.0001250505! + Me.Line27.Left = 0.0625! + Me.Line27.LineWeight = 1.0! + Me.Line27.Name = "Line27" + Me.Line27.Top = 1.124875! + Me.Line27.Width = 7.75! + Me.Line27.X1 = 7.8125! + Me.Line27.X2 = 0.0625! + Me.Line27.Y1 = 1.125! + Me.Line27.Y2 = 1.124875! + ' + 'Line28 + ' + Me.Line28.Border.BottomColor = System.Drawing.Color.Black + Me.Line28.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line28.Border.LeftColor = System.Drawing.Color.Black + Me.Line28.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line28.Border.RightColor = System.Drawing.Color.Black + Me.Line28.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line28.Border.TopColor = System.Drawing.Color.Black + Me.Line28.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line28.Height = 0.0001250505! + Me.Line28.Left = 0.0625! + Me.Line28.LineWeight = 1.0! + Me.Line28.Name = "Line28" + Me.Line28.Top = 1.40625! + Me.Line28.Width = 7.75! + Me.Line28.X1 = 7.8125! + Me.Line28.X2 = 0.0625! + Me.Line28.Y1 = 1.40625! + Me.Line28.Y2 = 1.406375! + ' + 'Line30 + ' + Me.Line30.Border.BottomColor = System.Drawing.Color.Black + Me.Line30.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line30.Border.LeftColor = System.Drawing.Color.Black + Me.Line30.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line30.Border.RightColor = System.Drawing.Color.Black + Me.Line30.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line30.Border.TopColor = System.Drawing.Color.Black + Me.Line30.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line30.Height = 1.180556! + Me.Line30.Left = 5.600695! + Me.Line30.LineWeight = 1.0! + Me.Line30.Name = "Line30" + Me.Line30.Top = 0.5069444! + Me.Line30.Width = 0.0003180504! + Me.Line30.X1 = 5.600695! + Me.Line30.X2 = 5.601013! + Me.Line30.Y1 = 0.5069444! + Me.Line30.Y2 = 1.6875! + ' + 'Line31 + ' + Me.Line31.Border.BottomColor = System.Drawing.Color.Black + Me.Line31.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line31.Border.LeftColor = System.Drawing.Color.Black + Me.Line31.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line31.Border.RightColor = System.Drawing.Color.Black + Me.Line31.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line31.Border.TopColor = System.Drawing.Color.Black + Me.Line31.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line31.Height = 0.91! + Me.Line31.Left = 3.71875! + Me.Line31.LineWeight = 1.0! + Me.Line31.Name = "Line31" + Me.Line31.Top = 0.5! + Me.Line31.Width = 0.0003190041! + Me.Line31.X1 = 3.71875! + Me.Line31.X2 = 3.719069! + Me.Line31.Y1 = 0.5! + Me.Line31.Y2 = 1.41! + ' + 'Line32 + ' + Me.Line32.Border.BottomColor = System.Drawing.Color.Black + Me.Line32.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line32.Border.LeftColor = System.Drawing.Color.Black + Me.Line32.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line32.Border.RightColor = System.Drawing.Color.Black + Me.Line32.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line32.Border.TopColor = System.Drawing.Color.Black + Me.Line32.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line32.Height = 1.180556! + Me.Line32.Left = 1.03125! + Me.Line32.LineWeight = 1.0! + Me.Line32.Name = "Line32" + Me.Line32.Top = 0.5069444! + Me.Line32.Width = 0.0003190041! + Me.Line32.X1 = 1.03125! + Me.Line32.X2 = 1.031569! + Me.Line32.Y1 = 0.5069444! + Me.Line32.Y2 = 1.6875! + ' + 'txtHoldDescription + ' + Me.txtHoldDescription.Border.BottomColor = System.Drawing.Color.Black + Me.txtHoldDescription.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtHoldDescription.Border.LeftColor = System.Drawing.Color.Black + Me.txtHoldDescription.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtHoldDescription.Border.RightColor = System.Drawing.Color.Black + Me.txtHoldDescription.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtHoldDescription.Border.TopColor = System.Drawing.Color.Black + Me.txtHoldDescription.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.txtHoldDescription.CanGrow = False + Me.txtHoldDescription.Height = 0.9375! + Me.txtHoldDescription.Left = 1.304134! + Me.txtHoldDescription.Name = "txtHoldDescription" + Me.txtHoldDescription.OutputFormat = resources.GetString("txtHoldDescription.OutputFormat") + Me.txtHoldDescription.Style = "ddo-char-set: 136; font-size: 9.75pt; font-family: 新細明體; " + Me.txtHoldDescription.Text = Nothing + Me.txtHoldDescription.Top = 1.747047! + Me.txtHoldDescription.Width = 6.4375! + ' + 'Label1 + ' + Me.Label1.Border.BottomColor = System.Drawing.Color.Black + Me.Label1.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Label1.Border.LeftColor = System.Drawing.Color.Black + Me.Label1.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Label1.Border.RightColor = System.Drawing.Color.Black + Me.Label1.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Label1.Border.TopColor = System.Drawing.Color.Black + Me.Label1.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Label1.Height = 0.2! + Me.Label1.HyperLink = "" + Me.Label1.Left = 1.058071! + Me.Label1.Name = "Label1" + Me.Label1.Style = "font-size: 9.75pt; font-family: 新細明體; " + Me.Label1.Text = "" + Me.Label1.Top = 0.5659449! + Me.Label1.Width = 1.6875! + ' + 'Label2 + ' + Me.Label2.Border.BottomColor = System.Drawing.Color.Black + Me.Label2.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Label2.Border.LeftColor = System.Drawing.Color.Black + Me.Label2.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Label2.Border.RightColor = System.Drawing.Color.Black + Me.Label2.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Label2.Border.TopColor = System.Drawing.Color.Black + Me.Label2.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Label2.Height = 0.2! + Me.Label2.HyperLink = "" + Me.Label2.Left = 1.058071! + Me.Label2.Name = "Label2" + Me.Label2.Style = "font-size: 9.75pt; font-family: Times New Roman; " + Me.Label2.Text = "" + Me.Label2.Top = 0.8858268! + Me.Label2.Width = 1.6875! + ' + 'Label3 + ' + Me.Label3.Border.BottomColor = System.Drawing.Color.Black + Me.Label3.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Label3.Border.LeftColor = System.Drawing.Color.Black + Me.Label3.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Label3.Border.RightColor = System.Drawing.Color.Black + Me.Label3.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Label3.Border.TopColor = System.Drawing.Color.Black + Me.Label3.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Label3.Height = 0.2! + Me.Label3.HyperLink = "" + Me.Label3.Left = 1.058071! + Me.Label3.Name = "Label3" + Me.Label3.Style = "font-size: 9.75pt; font-family: Times New Roman; " + Me.Label3.Text = "" + Me.Label3.Top = 1.156496! + Me.Label3.Width = 1.6875! + ' + 'Label4 + ' + Me.Label4.Border.BottomColor = System.Drawing.Color.Black + Me.Label4.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Label4.Border.LeftColor = System.Drawing.Color.Black + Me.Label4.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Label4.Border.RightColor = System.Drawing.Color.Black + Me.Label4.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Label4.Border.TopColor = System.Drawing.Color.Black + Me.Label4.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Label4.Height = 0.2! + Me.Label4.HyperLink = "" + Me.Label4.Left = 1.058071! + Me.Label4.Name = "Label4" + Me.Label4.Style = "font-size: 9.75pt; font-family: Times New Roman; " + Me.Label4.Text = "" + Me.Label4.Top = 1.451772! + Me.Label4.Width = 1.6875! + ' + 'Label5 + ' + Me.Label5.Border.BottomColor = System.Drawing.Color.Black + Me.Label5.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Label5.Border.LeftColor = System.Drawing.Color.Black + Me.Label5.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Label5.Border.RightColor = System.Drawing.Color.Black + Me.Label5.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Label5.Border.TopColor = System.Drawing.Color.Black + Me.Label5.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Label5.Height = 0.1875! + Me.Label5.HyperLink = "" + Me.Label5.Left = 3.740157! + Me.Label5.Name = "Label5" + Me.Label5.Style = "font-size: 9.75pt; font-family: Times New Roman; " + Me.Label5.Text = "" + Me.Label5.Top = 1.181102! + Me.Label5.Width = 1.8125! + ' + 'PageFooter + ' + Me.PageFooter.Height = 0.1451389! + Me.PageFooter.Name = "PageFooter" + Me.PageFooter.Visible = False + ' + 'GroupHeader1 + ' + Me.GroupHeader1.Controls.AddRange(New GrapeCity.ActiveReports.SectionReportModel.ARControl() {Me.lblHoldItemNo, Me.lblQty, Me.lblHoldDisposition, Me.Line33, Me.Line34, Me.Line35}) + Me.GroupHeader1.Height = 0.21875! + Me.GroupHeader1.Name = "GroupHeader1" + ' + 'lblHoldItemNo + ' + Me.lblHoldItemNo.Border.BottomColor = System.Drawing.Color.Black + Me.lblHoldItemNo.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblHoldItemNo.Border.LeftColor = System.Drawing.Color.Black + Me.lblHoldItemNo.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblHoldItemNo.Border.RightColor = System.Drawing.Color.Black + Me.lblHoldItemNo.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblHoldItemNo.Border.TopColor = System.Drawing.Color.Black + Me.lblHoldItemNo.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblHoldItemNo.Height = 0.2! + Me.lblHoldItemNo.HyperLink = "" + Me.lblHoldItemNo.Left = 0.0625! + Me.lblHoldItemNo.Name = "lblHoldItemNo" + Me.lblHoldItemNo.Style = "color: White; text-align: center; background-color: Blue; " + Me.lblHoldItemNo.Text = "HoldItem No" + Me.lblHoldItemNo.Top = 0.0! + Me.lblHoldItemNo.Width = 1.5! + ' + 'lblQty + ' + Me.lblQty.Border.BottomColor = System.Drawing.Color.Black + Me.lblQty.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblQty.Border.LeftColor = System.Drawing.Color.Black + Me.lblQty.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblQty.Border.RightColor = System.Drawing.Color.Black + Me.lblQty.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblQty.Border.TopColor = System.Drawing.Color.Black + Me.lblQty.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblQty.Height = 0.2! + Me.lblQty.HyperLink = "" + Me.lblQty.Left = 1.5625! + Me.lblQty.Name = "lblQty" + Me.lblQty.Style = "color: White; text-align: center; background-color: Blue; font-size: 9.75pt; " + Me.lblQty.Text = "Qty" + Me.lblQty.Top = 0.0! + Me.lblQty.Width = 0.75! + ' + 'lblHoldDisposition + ' + Me.lblHoldDisposition.Border.BottomColor = System.Drawing.Color.Black + Me.lblHoldDisposition.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblHoldDisposition.Border.LeftColor = System.Drawing.Color.Black + Me.lblHoldDisposition.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblHoldDisposition.Border.RightColor = System.Drawing.Color.Black + Me.lblHoldDisposition.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblHoldDisposition.Border.TopColor = System.Drawing.Color.Black + Me.lblHoldDisposition.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.lblHoldDisposition.Height = 0.2! + Me.lblHoldDisposition.HyperLink = "" + Me.lblHoldDisposition.Left = 2.3125! + Me.lblHoldDisposition.Name = "lblHoldDisposition" + Me.lblHoldDisposition.Style = "color: White; text-align: center; background-color: Blue; font-size: 9.75pt; " + Me.lblHoldDisposition.Text = "Hold Disposition" + Me.lblHoldDisposition.Top = 0.0! + Me.lblHoldDisposition.Width = 5.5! + ' + 'Line33 + ' + Me.Line33.Border.BottomColor = System.Drawing.Color.Black + Me.Line33.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line33.Border.LeftColor = System.Drawing.Color.Black + Me.Line33.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line33.Border.RightColor = System.Drawing.Color.Black + Me.Line33.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line33.Border.TopColor = System.Drawing.Color.Black + Me.Line33.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line33.Height = 0.0! + Me.Line33.Left = 0.0625! + Me.Line33.LineWeight = 1.0! + Me.Line33.Name = "Line33" + Me.Line33.Top = 0.203125! + Me.Line33.Width = 7.75! + Me.Line33.X1 = 0.0625! + Me.Line33.X2 = 7.8125! + Me.Line33.Y1 = 0.203125! + Me.Line33.Y2 = 0.203125! + ' + 'Line34 + ' + Me.Line34.Border.BottomColor = System.Drawing.Color.Black + Me.Line34.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line34.Border.LeftColor = System.Drawing.Color.Black + Me.Line34.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line34.Border.RightColor = System.Drawing.Color.Black + Me.Line34.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line34.Border.TopColor = System.Drawing.Color.Black + Me.Line34.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line34.Height = 0.2! + Me.Line34.Left = 0.0625! + Me.Line34.LineWeight = 1.0! + Me.Line34.Name = "Line34" + Me.Line34.Top = 0.0! + Me.Line34.Width = 0.0003187731! + Me.Line34.X1 = 0.0625! + Me.Line34.X2 = 0.06281877! + Me.Line34.Y1 = 0.0! + Me.Line34.Y2 = 0.2! + ' + 'Line35 + ' + Me.Line35.Border.BottomColor = System.Drawing.Color.Black + Me.Line35.Border.BottomStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line35.Border.LeftColor = System.Drawing.Color.Black + Me.Line35.Border.LeftStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line35.Border.RightColor = System.Drawing.Color.Black + Me.Line35.Border.RightStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line35.Border.TopColor = System.Drawing.Color.Black + Me.Line35.Border.TopStyle = GrapeCity.ActiveReports.BorderLineStyle.None + Me.Line35.Height = 0.2! + Me.Line35.Left = 7.812181! + Me.Line35.LineWeight = 1.0! + Me.Line35.Name = "Line35" + Me.Line35.Top = 0.0! + Me.Line35.Width = 0.0003190041! + Me.Line35.X1 = 7.812181! + Me.Line35.X2 = 7.8125! + Me.Line35.Y1 = 0.0! + Me.Line35.Y2 = 0.2! + ' + 'GroupFooter1 + ' + Me.GroupFooter1.Height = 0.01041667! + Me.GroupFooter1.Name = "GroupFooter1" + ' + 'arERF_General + ' + Me.MasterReport = False + Me.PageSettings.Margins.Left = 0.0! + Me.PageSettings.Margins.Right = 0.0! + Me.PageSettings.PaperHeight = 11.69! + Me.PageSettings.PaperWidth = 8.27! + Me.PrintWidth = 7.885417! + Me.Sections.Add(Me.PageHeader) + Me.Sections.Add(Me.GroupHeader1) + Me.Sections.Add(Me.Detail) + Me.Sections.Add(Me.GroupFooter1) + Me.Sections.Add(Me.PageFooter) + Me.StyleSheet.Add(New DDCssLib.StyleSheetRule(resources.GetString("$this.StyleSheet"), "Normal")) + Me.StyleSheet.Add(New DDCssLib.StyleSheetRule("font-family: inherit; font-style: inherit; font-variant: inherit; font-weight: bo" & _ + "ld; font-size: 16pt; font-size-adjust: inherit; font-stretch: inherit; ", "Heading1", "Normal")) + Me.StyleSheet.Add(New DDCssLib.StyleSheetRule("font-family: Times New Roman; font-style: italic; font-variant: inherit; font-wei" & _ + "ght: bold; font-size: 14pt; font-size-adjust: inherit; font-stretch: inherit; ", "Heading2", "Normal")) + Me.StyleSheet.Add(New DDCssLib.StyleSheetRule("font-family: inherit; font-style: inherit; font-variant: inherit; font-weight: bo" & _ + "ld; font-size: 13pt; font-size-adjust: inherit; font-stretch: inherit; ", "Heading3", "Normal")) + CType(Me.txtHoldDisposition, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtHoldItemNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtQty, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.Picture1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtCreateDate, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblERFReport, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtDate, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblPrintDate, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblERFNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtERFNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblCustomerNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblLotNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblProductNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtLotNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtCustomerNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtProductNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblOPNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtOPNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblRuleNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtRuleNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblMClassNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtMClassNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblHoldDescription, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblCreator, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtCreator, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblCreateDate, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtHoldDescription, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.Label1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.Label2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.Label3, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.Label4, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.Label5, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblHoldItemNo, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblQty, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.lblHoldDisposition, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me, System.ComponentModel.ISupportInitialize).EndInit() + + End Sub + +#End Region + + Private Sub arERF_General_ReportStart(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.ReportStart + 'steve,100401,在end user電腦上沒設定任何一台印表機時,Active report預設page size設成A4會有錯誤,預設Page size改成default時,在條碼機的特殊格式大小也會有錯,故加入下列指令 + Me.Document.Printer.PrinterName = "" + + Me.txtDate.Text = Now.ToShortDateString + Me.txtERFNo.Text = ERFNo + Me.Barcode1.Text = ERFNo + Me.txtLotNo.Text = LotNo + Me.txtCustomerNo.Text = CustomerNo + Me.txtOPNo.Text = OPNo + Me.txtProductNo.Text = ProductNo + Me.txtRuleNo.Text = RuleNo + Me.txtMClassNo.Text = MClassNo + Me.txtHoldDescription.Text = HoldDescription + Me.txtCreator.Text = Creator + Me.txtCreateDate.Text = Format(CreateDate, "yyyy/MM/dd HH:mm") + + Me.PageSettings.Margins.Left = 0.2 + Me.PageSettings.Margins.Top = 0.3 + Me.PageSettings.Margins.Bottom = 0.2 + Me.PageSettings.Orientation = PageOrientation.Landscape + Me.PageSettings.Orientation = PageOrientation.Portrait + + End Sub + + Private Sub Detail_Format(ByVal sender As Object, ByVal e As System.EventArgs) Handles Detail.Format + + 'If Me.intRow Mod 5 = 0 Then + ' Me.Detail.BackColor = Color.LightGray + 'Else + ' Me.Detail.BackColor = Color.White + 'End If + + 'Me.intRow = Me.intRow + 1 + + End Sub + + + + + + Private Sub PageHeader_Format(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PageHeader.Format + + End Sub +End Class diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/shared file/iMES.isl b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/iMES.isl new file mode 100644 index 0000000..0679a67 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/iMES.isl @@ -0,0 +1,4303 @@ + + + + 2015-02-05T03:06:30 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA3gMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADgElEQVRoQ+2XzWsTQRjGq/Qk1YOgFz3qHyLFi4LeRAri0YMHTx68eCseBMFL8W+waGPRIoixYkUrUmgVaZKaNJ/bbNpNm48mjUle531lttPpZGcm0IvMAw+Tncy7s89vZ2eTkVwuB7aOx+PWnpyctPax52k4bmEcP0wNQWi328auVCoUykYcQqPRMDaOx4u0EQ9mIxzvIDgIDgLJQWByEJgcBCYHgclBYHIQmBwEphACBjN1sVikULbGULbmoY7aI6urq2BrVUidVSF1tv0zNIzpDxSGspHneRTKRhyCatkPMo7Hi7QRD2YjHO8gmEDodrtQKBSgWq3SsQmErb0eXF/YgGe/a3RsAiFfrcHVj0V4+qtCxyYQ5HlMIKhqIiEggFKpRPsAgkDpIOAkE199GGEnv7ZQpj4dBARwY6FENVfmi9Sng6CaRwdhUM1ACP1+nwLj9/gGQSCoKAidXh9uf/Npsxmf92Cj9a8mCkK11oCJzyWqufS+AOmgRv1REAbNEwUhqiaEgL8BMGyz2aTjIAggkUhAOp2G3d1d6kOJEJa39+DyR3bst4DNAY8T23DiRQYuzuXhU6VFY1AihEVvG8bjBZjLBlCrs7ArPtVceJOFd/kghCNCMJ1HhGBTE0Iol8t019fW1sD3fUgmk5BKpaDV2i9AiRDuLm0S2fOvc3B/eQtOzazD2dksfNls0/dcIoQ7ix7VnJtdh3vfN+DkywycebUOH/LVEIAMwXQeEYJNzYHHAQPi3cc+BMBXhSj5cbi1WIbR6Qw9Z6djWXjr7a8aLhEC+iZb/qPTbHKsmclALLO/ArhFCCiTeUQIKNOaAxB6vR79KsRVgI8D7guyZAjNPz14+DOAMXZHnyR3oNU9XCND8Hfq8GCpDGNseT764cNmrX4AAFqGYDKPDMG05tDGiME7nY4SAEqGgMKTp+od2nxUkiGgMfiKv0Mbo9jPLUNA6eaRIaBMag5B0EkFQScVBJ1VEHRSQdAphIDBTI1vCwxlawxlax7qqE3/Im2tCqmzKqTOuLurLnqQcfwwNQTBRhyCjTgEG8ViMbpIG+FbYJiaEAK/y1Hm4zgEOoHGKBGCaoxslAhBNUY2HzdMjYOAn8VwOvNxDgJrHQTWOgisdRBY6yCw1kFg7X8LwVQiBFOJEEwlQjAVBhqmhiDYGkPZGiFgMFNPTU2Fd+xonYa/RnTXOFz4kRIAAAAASUVORK5CYIILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + + 249, 249, 249 + MiddleCenter + + + + + White + Segoe UI, 9pt + 75, 75, 75 + MiddleLeft + MiddleLeft + + + + + White + Segoe UI, 8.25pt + 75, 75, 75 + + + + + White + Segoe UI, 9pt + 75, 75, 75 + + + + + 75, 75, 75 + White + 0, 170, 222 + White + Silver + Left + Long + False + False + + + + + White + Segoe UI, 9pt + 75, 75, 75 + + + + + White + Flat + Segoe UI, 9pt + 75, 75, 75 + + + + + White + None + Microsoft Sans Serif, 12pt + 0, 170, 222 + MiddleCenter + + + + + 0, 170, 222 + White + None + Gainsboro + Flat + Segoe UI, 9.75pt, style=Bold + MiddleCenter + AlwaysUnderline + 133, 133, 133 + MiddleCenter + 179, 230, 245 + + + + + White + FixedSingle + Segoe UI, 9pt + 75, 75, 75 + + + + + True + White + FixedSingle + Segoe UI, 9pt + 75, 75, 75 + Nonclickable + LargeIcon + + + + + White + 75, 75, 75 + True + True + 0, 170, 222 + White + 191, 191, 191 + + + + + White + None + Segoe UI, 8.25pt + 75, 75, 75 + + + + + White + None + + + + + White + White + 75, 75, 75 + Segoe UI, 9pt + White + White + True + White + True + White + 75, 75, 75 + + + + + White + Segoe UI, 9pt + 75, 75, 75 + MiddleCenter + MiddleLeft + + + + + White + None + 75, 75, 75 + + + + + White + None + 75, 75, 75 + + + + + 133, 133, 133 + None + + + + + Segoe UI, 9pt + True + + + + + White + FixedSingle + Segoe UI, 9pt + 75, 75, 75 + Left + + + + + White + + + + + White + None + False + Segoe UI, 9pt + 75, 75, 75 + False + False + True + 25 + False + True + True + + + + + White + Segoe UI, 8.25pt + 75, 75, 75 + + + + + + True + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA7QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADj0lEQVRoQ+2YzWsTQRiHq/Qk1YOgFz0q/h1SvCjoTaQgXgQPHjx58OKteBAEL8W/waKNRasgxhYrpiqFVrFNUpPmu9k0SZuPJo1JXuf3ym4n2012JuBtHvgddjNvZt9nZycfI8lkknQTDAa1Mzk5qZ0jz2N0VCMYP0wNS2g2m8opFArclA5ra2vcVK1WU04gEOCL1OH2t8JQNUaCkWAkMEaCwEgQGAkCI0FgJAiMBIGRIHAkoDHVZDIZloDGVBMKhVgCGlPN1NQUf6/HRarmwtvUUDUj6+vrpBtI0A0k6GaYH0PD1LAEHXK5HDelgy3Ba9n3C8bjInWwG9MB440EFQntdpvS6TSVy2U+VpFQ3O/QtcUteva7wscqElLlCl1ZyNDTXwU+VpHgnkdFglfNQAkQkM1meR+ACOAnAZNMhCwaEW9+dTHP5/wkQMD1xSzXXJ7P8Dk/CV7z+EnoV9NXQrfb5YbxOj5BIAQMktDqdOnWV4s3m/H5HG01/tUMklCu1Gjic5ZrLn5IU6xU4fODJPSbZ5CEQTWOBHwHQLP1ep2PS6UShcNhisVitLe3x+eALGFlZ58uLYhjq0FiDnoc3qFjL+J0fi5FnwoNHgNkCUu5HRoPpmkuUaJKVTS7anHNuTcJep8qOXJkCarzyBJ0ahwJ+Xye7/rGxgZZlkWRSISi0Sg1GgcFQJZwd3mbzZ59naT7K0U6MbNJp2cT9GW7ya/byBLuLOW45szsJt37vkXHX8bp1KtN+pgqOwLcElTnkSXo1PQ8DmgQdx/nIMBeFTLux+HmUp5Gp+P8nJ0MJOhd7mDV2MgSkBti+Y9Oi8lRMxOnQPxgBdiRJQCVeWQJQLWmR0Kn0+FvhVgFeBywL7hxS6j/6dDDnyUaE3f0SWSXGu3DNW4J1m6VHiznaUwsz0c/LNquVHsEIG4JKvO4JajWHNoY0Xir1fIUANwSAN48Wm3x5uOFWwKCxletXd4Y5fN23BKA3zxuCUCl5pAEP7wk+OElwS9eEvzwkuCHIwGNqQafFmhKN2hKN3ZT/zv8K1I3Xk36xatJv2B397rofsH4YWpYgg7FYpGb0sGWoAPG4yJ1sBvTAeMdCfKd7hcgS8BHj1+ALMFrjDtAluA1xh0gS/Aa4w4wEgRGgsBIEBgJAiNBYCQIjASBkSDokaCKLEEVWYIqsgRVZAmqOBLQmGrwxyua0g2a0o3d1P9NjP4C33z6NGMDUeMAAAAASUVORK5CYIILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAAvQMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADX0lEQVRoQ+2Xz2sTQRTHq/Qk1YOgFz3qHyLFi4LeRAri0YMHTx68eCseBMGbf4NFW4sWQYwtVrRFCq0iTVKT5kezzabdtPnRpDHJc97IbCfTyc68gEVhPvA97HReZt9nZyfN0OrqKlATi8XIGR8fJ+fY8xQcJwTnD1LDJTSbTesICRSEhFqtZh2cjzdJQTRGAec7CU6Ck8BxEhhOAsNJYDgJDCeB4SQwnARGKIEabIoabIoa0dTfzj8tgfpjCDNIDZdAQUigICTotn2/4Hy8QQqiKQpOAsNKQrvdhnw+D+VymV/bSNje78D1+U149rPCr20k5MoVuDq3AU9/lPi1jQR1HRsJuppICSigUCjwxlEEYpKAi4x98WGIffi1+SIfM0lAATfmC7zmyuwGHzNJ0K1jktCvpq+EbrcLnufxprPZLBeCRElodbpwe9Hnh9PorAebjT81URLKlRqMfSrwmkvv85AKKnw8SkK/daIkRNWEEvB/AGy2Xq/z6yAIIB6PQyqVgr29PT6GyBKWd/bh8pwHMb8BbA14HN+BEy/ScHEmBx9LDT4HkSUseDswGsvDTCaASpU1u+LzmgtvMvAuF4RyZAm268gSKDWhhGKxyBtcW1sD3/chkUhAMpmERuOgAJEl3F3a4mbPv87C/eVtODW5DmenM/B5q8n/LpAl3FnweM256XW493UTTr5Mw5lX6/AhVw4FqBJs15ElUGp6Xgfc/vj0cQwFiF0hI0tAbi0UYXgizd+z01MZeOsd7BqBLAFzk23/4Qm2ONZMpmEqfbADRGQJiM06sgTEtqZHQqfTgVKpxHcBvg54LqioEuq/OvDwewAj7Ik+SexCo324RpXg71bhwVIRRtj2fPTNh61KtUcARpVgs44qwbbm0MGIjbdaLa0ARJWA4Icnqy1++OhQJWCw8RV/lx+M8riIKgExraNKQGxqDkkwoZNgQifBFJ0EEzoJJkIJ1GBT1GBT1ODBJhqzzSA1Q/i1SI2uSVN0TZpypBIoCAkUhAQKOB9vkIJoikKPBPGUoyLmCQn41WMKIkvQzVGDyBJ0c9QgsgTdHDWIk8BwEhhOAsNJYDgJDCeB4SQw/hsJ/EYNEfMGqQkl2CJLsEWWYIsswRZZgi2hBGqwKWqwKWqO5rdDCn4DepjAZpDd1xAAAAAASUVORK5CYIILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA8QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADk0lEQVRoQ+2YTWsTURSGq3Ql1YWgG10q/g4pbhR0J1IQN4ILF65cuHEXXAiCm+JvsGhj0SqIscWKqUqhVWyT1KT5biZN0uajSWOS432PJL2ZTjL3DggK94EXOpM5uXOeuXNn0pFEIkG6CQQC2vH5fNo59DRKhzWC473UsIRGo6GcfD7PTemwurrKTVWrVeX4/X4+SR1ufsl7qjESjAQjgTESBEaCwEgQGAkCI0FgJAiMBEFPAhpTTTqdZgloTDXBYJAloDHVTE5O8ns9TlI1514nPdWMrK2tkW4gQTeQoBsvP4a81LAEHbLZLDelSiQS4dmAppym/aBgNuAkdcCV9VLz1yXkcrn/X0Kr1aJUKkWlUom3VSQU9tp0ZWGTnvws87aKhGSpTJfm0/T4R563VSTYx1GR4FQzVAIEZDIZXgcgArhJwCATQYtGxMlcXsjxPjcJEHB1IcM1F+fSvM9NgtM4bhIG1QyU0Ol0uGF8jicIhIBhEprtDt34bPFiMz6Xpc36n5phEkrlKk18zHDN+XcpihbLvH+YhEHjDJMwrKYnAe8AaLZWq/F2sVikUChE0WiUdnd3eR+QJSxv79GFebFt1UmMQQ9D23TkWYzOzibpQ77OxwBZwmJ2m8YDKZqNF6lcqZJvxeKaM6/i9DZZ7MmRJaiOI0vQqelJwAKGv9fX18myLAqHw7yy1+v7BUCWcHtpi82efpmgu8sFOja9QSdn4vRpq8Gfd5El3FrMcs2pmQ2683WTjj6P0YkXG/Q+WeoJsEtQHUeWoFPTdzugQVx97IOA7qyQsd8O1xdzNDoV4/vsuD9Ob7L7s6aL/Xa4Jqb/6JR4PqNmOkb+2P4M6MZ+O6iMI0sAqjV9EtrtNr8VYhbgdsC6YMcuofarTfe/F2lMXNFH4R2qtw7W2CVYOxW6t5SjMTE9H3yzaKtc6ROA2CWojGOXoFpzYGFE481m01EAsEsA+PJIpcmLjxNOCyMaX7F2eGGU93fjtDC6jWOXAFRqDkhww0mCG04S3OIkwQ0nCW70JKAx1eBpAQloTDX//A8oPBZ1Awm6gQTdoCFcWdXgeC81LEGHQqHATemA2YCmdMBswEnqgCvrpaYnQb7SgwJkCXj0uAXIEpyOsQfIEpyOsQfIEpyOsQcYCQIjQWAkCIwEgZEgMBIERoLASBD0SVBFlqCKLEEVWYIqsgRVehLQmGrwj1dIQGOq+bd/QCXpN3LrT59/MUO0AAAAAElFTkSuQmCCCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAASAIAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAAB6klEQVRoQ+2ZQUsCQRTHLTpFdOjQqWv0QaJr3YPo0q1z126ego7SZygqiahOS5GQFQRCICVlrqCuumFlmaa93hvMJtlwZmFDdt8P/gd33+C+3+7MOhgCFxiGoZ1wOKyd/8K1BB2SyaRoqlqtKicajbZHew9LQFgCwhIQloCwBIQlICwBYQkIS0BYAuJaAjWmmng8LiRQY6qJRCLtb/Me1xJ00894Ph1SqZR4GvoZzyVYlhVMCXa9BXOxAmzcPYvPgZNAAubjRQht3sNszBLHAiWh0fqExYsiDKCA6eM8FGpNcdzXEhKVOsyc5MEo1gD7h7WbCgxvp2HyIAunpZqoIXwtYfmqLO76xL4JKwkbRncfYHwvA2fld3H+G99Ph4VzC4a20mINGItm4Cj/1j7zg+8lvH60YPX6EUZ20rB++wS1Js6LLgKxMFLjqZeGWBidCISEXvhWAjWmGtpA9TMh0zRBNyRBN7SL1A29eQY1QvVuxggJOti2LZrSgZ4GakoH2k7TReqwdFlyNaYjQb7Tf4WQJdBrsVcIWYJTTXcIWYJTTXcIWYJTTXcIloCwBIQlICwBYQkIS0BYAsISkF8SVJElqCJLUEWWoIosQZWOBGpMNblcTkigxlTj9h8o+l1PF6maqcOsizFZ+AIGcQg8msEiNgAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA+QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADm0lEQVRoQ+2YzWsTQRjGq/Qk1YOgFz0q/h1SvCjoTaQgXgQPHjx58OIteBAEL8W/waKNRasgxhYrpiqFVrFNUpPmu9k0SZuPJo1JXud5Jel0u8nOrAgq88AD2ck+mX1/87G7GUokEqTrQCCgbZ/Pp+0Dj6N0UMM430uGITQaDWXn83kuSkfLy8tcVLVaVbbf7+eL1NH1T3lPGQPBQDAQWAaCkIEgZCAIGQhCBoKQgSBkIAj1IKAwVafTaYaAwlQdDAYZAgpT9fj4OD/X4yJVfeZl0lNmaGVlhXQNCLoGBF17eRnykmEIOspms1yUqiKRCM8GFOU07fsZswEXqSOMrJfMH4eQy+X+fQitVotSqRSVSiU+VoFQ2GnTpbl1evS9zMcqEJKlMl2YTdPDb3k+VoFg70cFglNmIAQAyGQyvA8ABOQGAZ2MBS0aEhdzcS7HbW4QAODyXIYz52fS3OYGwakfNwj9Mn0hdDodLhjf4w4CINAgCM12h659tHizGZ3J0nr9V2YQhFK5SmPvM5w5+yZF0WKZ2wdB6NfPIAiDMj0IeAZAsbVajY+LxSKFQiGKRqO0vb3NbZAMYXFzh87NimOrTqIPuh/apENPYnR6Oknv8nU+B5IhzGc3aTSQoul4kcqVKvmWLM6cehGn18liD44MQbUfGYJOpgcBGxg+r66ukmVZFA6HeWev13cDkAzh5sIGkz35PEG3Fwt0ZHKNjk/F6cNGg7/vSoZwYz7LmRNTa3Tr8zodfhqjY8/W6G2y1ANgh6DajwxBJ7NnOaBAjD7aAKA7K2TZl8PV+RwNT8R4nR31x+lVdnfWdGVfDlfE9B+eEPdnZCZj5I/tzoCu7ctBpR8ZAqSa2QOh3W7zUyFmAZYD9gW77BBqP9p092uRRsSIPghvUb21P2OHYG1V6M5CjkbE9Lz3xaKNcmUPANgOQaUfOwTVzL6NEYU3m01HAJAdAoQfj1SavPk4yWljROFL1hZvjHJ7104bo1s/dgiQSmYfBDc5QXCTEwQ3O0FwkxMEN/UgoDBV424BCChM1X/9CxRui7oGBF0Dgq5REEZW1dgAvWQYgo4KhQIXpSPMBhSlI8wGXKSOUJCXTA+CPNL9DMkQ+AdcDMkQnM6xG5IhOJ1jd/c8LxkDAZ+7xdkLdjJkIAgZCEIGgpCBIGQgCBkIQv81BFXJEFQlQ1CVDEFVKMhLhiGgMFXjj1dAQGGq/p0XqO6oqVo/E6WfdBY2E/BzX6AAAAAASUVORK5CYIILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA6wMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADjUlEQVRoQ+2XT2sTQRjGq/Qk1YOgFz0qfg4pXhT0JlIQL4IHD548ePEWPAiCl+JnsGhj0SqIscWKqUqhVWyT1KT532zapM2fJo1JXud5ZdPpdpOdWRAU5gcPdDfzdvb97exsMpRKpUg3oVBIO4FAQDuHnsbpsEYw3k8NS2g2m8opFovclA7Ly8vcVK1WU04wGOSL1OHml6KvGiPBSDASGCNBYCQIjASBkSAwEgRGgsBIEPQkoDHVZLNZloDGVBMOh1kCGlPN+Pg4f6/HRarm3Ou0r5qhlZUV0g0k6AYSdOPnx5CfGpagQz6f56ZUicVivBrQlNuy7xesBlykDrizfmr+uoRCofD/S2i325TJZKhcLvOxioTN3Q5dmVunJz8rfKwiIV2u0KXZLD3+UeRjFQnOeVQkuNUMlAABuVyO9wGIAF4SMMlY2KIhcTGX5wp8zksCBFydy3HNxZksn/OS4DaPl4R+NX0ldLtdbhif4w0CIWCQhFanSzc+W7zZjM7kab3xp2aQhHKlRmMfc1xz/l2G4qUKnx8kod88gyQMqulJwHcANFuv1/m4VCpRJBKheDxOOzs7fA7IEha3dunCrDi2GiTmoIeRLTryLEFnp9P0odjgMUCWMJ/fotFQhqaTJapUaxRYsrjmzKskvU2XenJkCarzyBJ0anoSsIHh79XVVbIsi6LRKO/sjcZeAZAl3F7YYLOnX6bo7uImHZtco5NTSfq00eTPbWQJt+bzXHNqao3ufF2no88TdOLFGr1Pl3sCnBJU55El6NTsexzQIO4+zkGAvSpknI/D9fkCDU8k+Dk7HkzSm/zeqrFxPg7XxPIfnhDvZ9RMJiiY2FsBdpyPg8o8sgSgWrNPQqfT4W+FWAV4HLAvOHFKqP/q0P3vJRoRd/RRdJsa7YM1TgnWdpXuLRRoRCzPB98s2qhU9wlAnBJU5nFKUK05sDGi8Var5SoAOCUA/PNYtcWbjxtuGyMaX7K2eWOUz9tx2xi95nFKACo1ByR44SbBCzcJXnGT4IWbBC96EtCYavC2gAQ0ppp//gcUXou6gQTdQIJu0BDurGow3k8NS9DBlqADVgOa0gGrARepA+6sn5qeBPsuD4o9zpaAV49XgCzBbYwzQJbgNsYZIEtwG+MMMBIERoLASBAYCQIjQWAkCIwEgZEg2CdBFVmCKrIEVWQJqsgSVOlJ0A0koDHV/Ns/oNL0G0NuTL0rh9nUAAAAAElFTkSuQmCCCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA+QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADm0lEQVRoQ+2YzWsTQRjGq/Qk1YOgFz0q/h1SvCjoTaQgXgQPHjx58OIteBAEL8W/waKNRasgxhYrpiqFVrFNUpPmu9k0SZuPJo1JXud5Jel0u8nOrAgq88AD2ck+mX1/87G7GUokEqTrQCCgbZ/Pp+0Dj6N0UMM430uGITQaDWXn83kuSkfLy8tcVLVaVbbf7+eL1NH1T3lPGQPBQDAQWAaCkIEgZCAIGQhCBoKQgSBkIAj1IKAwVafTaYaAwlQdDAYZAgpT9fj4OD/X4yJVfeZl0lNmaGVlhXQNCLoGBF17eRnykmEIOspms1yUqiKRCM8GFOU07fsZswEXqSOMrJfMH4eQy+X+fQitVotSqRSVSiU+VoFQ2GnTpbl1evS9zMcqEJKlMl2YTdPDb3k+VoFg70cFglNmIAQAyGQyvA8ABOQGAZ2MBS0aEhdzcS7HbW4QAODyXIYz52fS3OYGwakfNwj9Mn0hdDodLhjf4w4CINAgCM12h659tHizGZ3J0nr9V2YQhFK5SmPvM5w5+yZF0WKZ2wdB6NfPIAiDMj0IeAZAsbVajY+LxSKFQiGKRqO0vb3NbZAMYXFzh87NimOrTqIPuh/apENPYnR6Oknv8nU+B5IhzGc3aTSQoul4kcqVKvmWLM6cehGn18liD44MQbUfGYJOpgcBGxg+r66ukmVZFA6HeWev13cDkAzh5sIGkz35PEG3Fwt0ZHKNjk/F6cNGg7/vSoZwYz7LmRNTa3Tr8zodfhqjY8/W6G2y1ANgh6DajwxBJ7NnOaBAjD7aAKA7K2TZl8PV+RwNT8R4nR31x+lVdnfWdGVfDlfE9B+eEPdnZCZj5I/tzoCu7ctBpR8ZAqSa2QOh3W7zUyFmAZYD9gW77BBqP9p092uRRsSIPghvUb21P2OHYG1V6M5CjkbE9Lz3xaKNcmUPANgOQaUfOwTVzL6NEYU3m01HAJAdAoQfj1SavPk4yWljROFL1hZvjHJ7104bo1s/dgiQSmYfBDc5QXCTEwQ3O0FwkxMEN/UgoDBV424BCChM1X/9CxRui7oGBF0Dgq5REEZW1dgAvWQYgo4KhQIXpSPMBhSlI8wGXKSOUJCXTA+CPNL9DMkQ+AdcDMkQnM6xG5IhOJ1jd/c8LxkDAZ+7xdkLdjJkIAgZCEIGgpCBIGQgCBkIQv81BFXJEFQlQ1CVDEFVKMhLhiGgMFXjj1dAQGGq/p0XqO6oqVo/E6WfdBY2E/BzX6AAAAAASUVORK5CYIILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2zXFsx4kTZ/GWw/2d+GbevFz7Oe7IXzqy/XLPu/f871kTEg+y2azs7u7K4uLitayvr0s6nS6uuInz83OZm5uTvr4+6e3tVRkbG5NkMimXl5fFVc/j+PhYuru7pa6uTmpra1UaGxtle3u7pM7maU6+/DcmrzStyUuNV/JWeFfC++dScKtUrKMkFAoFicfjanAsFlOjLy4u5OzsTJ9vbW1JJBJRkizy+bxsbm6qwXyyHlgip6amlET7HGQyGRkdHZWmpibVOzk5UaMhcnZ2Vtra2pREnluksgX5ZeFQ3g5H5NfFIzWM8ycyBfljNSUfPYnKt2Nx2T7NXykY3FZHSUgkEnpwa7xfTk9PJRqN6k3lcjlVxPClpSU1wAXIgFTIwHgwPj6uHoMnuADpw8PD0t7ernsCjPjOHNga4kfsIi8/zh8aw/Yken5l1G11Qhx2Y2NDN3URYAVjd3Z21M35zk2WIsCCW15YWFDyuN3m5uaSBFjgleFwWCYnJ9WId3oisnX27JZdyJt9vh6JyW9PU1XphPCA/f19p+F+wQAMIgdAXCVAZ3p6WnMAoVAq5r0gJDs6OjSefzZuXSg+L4fxZEY++SdalU6IuC0VBn7BXQkD4jbICyzwNG6VJBjkBRbs09raKi+bRLaefpaHyiF+UZD3H+9VpaMkuAx2CYbjCT09PcXXBAP3xnNqamoq8gJA0u3q6pIX/l4rmfn9yJiFnw/FqtK5tSdQKfAEflcCEinhQBn0Zv1yIJFSKShpO2dXiTgIR6YifGiyfjU6ITI41cFvsEswglxAUtzb2yu+qjxIuIQDfQBJshKQfAkHavrDjcpCaOE4K+89jlSlE8ILcHFu2WW4VyiTJC0OSV339g2lAMmrq6u6R2dnZ0W5ZGRkRAYHB7Wp+WxgXxImdoPwkyl5P0wnq9LRPoFGCHEZbgVvwSC+E9uE0crKir7MBdbgLRgE0fwml/T39xdX3AT5A29paGiQg4MDje1vRuPyYPKguOImcsbWP9dP5M3uXZlPZavSURK4UW4KSaVS6sLcGN5BCFBC19bW9LcFZBDr8/PzcnR0pO/ACHIA+lQRGh/eZ8G7aIQolxDE+0iCvAujKaH19fXPhdq2ie+PTRn7ypS+wcSFyeh5TWjE81wqo+XwjUc7MmT+ZnFbnevZgcPj5hBB3POJIXwnBDioHyQw1s3MzGjcUwXoECcmJjQE8AA/IIg19AHEPVWAJNjS0iIDAwNKhh90db+bpubT/qiWtC+G9uUD0+292xuR7407c5t+3EbnmgQAEYQF7TDujthushTwmDszQHED3Dyfdj7AVXF12mVc1JsI79wAheFk/lLZHoNJjNyUJQjD78wAhVEYxCe3ws0Tz9zi8vKyJkVI4G8Q5R+gssavHm6cyOsdWxIy3dq91k2TmROSNKyj4xqgyumUGqDK6ZQaoCrVCZEDbDKCAG8+sEIocDhcm9DwDlB/mU1ebV7XTazQut4fjkna1CLXABWk4xqggnRcA1SlOiGMtmFgPcAveARr8AjbNtsweK39imW/3GvdkNWTrOr5B6ggHcLCP0AF6bgGqEp1dHaw8BvvFeKaW8RzvAOUaxMrtKV4kH+Acq21gg5k+wco11or6LgGKNdaK14dJcEmO27cbzxivQWDiG/vAAWrrk1ww6eGbd7tH6CCdFwDVJCOa4CqVCdEbJMLAEnQRQIhwO1wOL57B6gHUwfyotnYvxFNSSKT1yzvH6CCdFwDVJCOHYaq0QlxSOo6RiIYZz0CD8Bo2y5TJvnHq3eAItPeH45fsw7LbPIkfpUzXANUkI5rgArScQ1Qlepon2CnQ4DLYxy3jkAMscwMgNcQBvyGJDtApXOXsprOKbO42YHZnDUQWmqAcumwd7kByqXjH4aq0VESMNp2hdyUNZxDQYSdIO/8AMVhDg8PlQxclyrAJ8YQApDhB89Y8/8eoET+A46Kvwl1DPddAAAAAElFTkSuQmCCCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + + + + VisualStudio2008Vista + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAArQMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADT0lEQVRoQ+2ZzWsTURTFq3Ql1YWgG10q/h1S3CjoTqQgbgQXLly5cOMuuBAEN8W/waKNRasgxooVU5VCq9gmqUnzOc2knbT5aNKY5PrOlUyn00nmvQFB5R040HmZ0zf3N+/dmbRDmUyGVB2JRJQdCoWUfeBxkg4qGOcHyTCEZrMp7VKpxEWpaGlpiYuq1WrSDofDfJEquv65FCijIWgIGgJLQxDSEIQ0BCENQUhDENIQhDQEIRsCCpN1Pp9nCChM1tFolCGgMFmPj4/zez0uUtZnXmYDZYaWl5dJ1YCgakBQdZAvQ0EyDEFFhmFwUbJKJBK8GlCU17LvZ6wGXKSKcGeDZP44hGKx+O9DaLfblMvlqFwu87EMhI2dDl2aXaNHPyp8LAMhW67QhXd5evi9xMcyENzzyEDwygyEAACFQoH7AEBAfhAwyVjUpCFxMRdnizzmBwEALs8WOHN+Js9jfhC85vGD0C/TF0K32+WC8TmeIAACDYLQ6nTp2ieTm83ojEFrjd+ZQRDKlRqNfShw5uybHCWtCo8PgtBvnkEQBmVsCHgHQLH1ep2PLcuiWCxGyWSStre3eQxyQljY3KFz78Sx2SAxB92PbdKhJyk6PZ2l96UGnwM5IcwZmzQaydF02qJKtUahRZMzp16k6XXWsuE4IcjO44SgkrEhoIHh55WVFTJNk+LxOHf2RmM3ADkh3JxfZ7Inn2fo9sIGHZlcpeNTafq43uTPe3JCuDFncObE1Crd+rJGh5+m6NizVXqbLdsA3BBk53FCUMns2Q4oEHcfYwDQWxVOubfD1bkiDU+keJ8dDafplbG7anpyb4crYvkPT4jnMzKTKQqndldAz+7tIDOPEwIkm9kDodPp8FshVgG2A/qCW24I9Z8duvvNohFxRx/Et6jR3p9xQzC3qnRnvkgjYnne+2rSeqW6BwDshiAzjxuCbGZfY0ThrVbLEwDkhgDhlyeqLW4+XvJqjCh80dzixugc79mrMfrN44YAyWT2QfCTFwQ/eUHwsxcEP3lB8JMNAYXJGk8LQEBhsv7rv0DhsahqQFA1IKgaBeHOyhrnB8novyeIjIagIWgILA1BSEMQ0hCENAQhDUFIQxDSEIRsCChM1v/ff6Cy9AsSMSlLu0Av/QAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA+gMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADnElEQVRoQ+2YTWsTURSGq3Ql1YWgG10q/g4pbhR0J1IQN4ILF65cuHEXXAiCm+JvsGhj0SqItcWKqUqhVWyT1KT5biZN0uajaWOS432PTHo7nWTuHSio3AdeyEzm5M555s6dJAPJZJJ0MzU1pZ1AIKCdQ09jdFgjON5PDUvY3t5WTqFQ4KZ0WFpa4qZqtZpygsEgn6QON78UfNUYCUaCkcAYCQIjQWAkCIwEgZEgMBIERoKgKwGNqSaTybAENKaaUCjEEtCYakZHR/l7PU5SNedep3zVDCwvL5NuIEE3kKAbPz+G/NSwBB1yuRw3pUo0GuXZgKbcpn2vYDbgJHXAlfVTc+AS8vn8vy+h1WpROp2mcrnM2yoSijttujK7Rk9+VnhbRUKqXKFLMxl6/KPA2yoSnOOoSHCr6SsBArLZLK8DEAG8JGCQkZBFA+JkLs/meZ+XBAi4OpvlmovTGd7nJcFtHC8JvWp6Suh0Otww3scTBEJAPwnNdodufLZ4sRmeztFa409NPwnlSo1GPma55vy7NMVKFd7fT0KvcfpJ6FfTlYDvAGi2Xq/zdqlUonA4TLFYjLa2tngfkCUsbOzQhRmxbTVIjEEPwxt05Fmczk6m6EOhwccAWcJcboOGp9I0mShRpVqjwKLFNWdeJehtqtSVI0tQHUeWoFPTlYAFDK9XVlbIsiyKRCK8sjcauwVAlnB7fp3Nnn6ZpLsLRTo2vkonJxL0aX2b37eRJdyay3HNqYlVuvN1jY4+j9OJF6v0PlXuCnBKUB1HlqBTs+d2QIO4+tgHAfaskHHeDtfn8jQ4Fuf77HgwQW9yu7PGxnk7XBPTf3BMPJ9RMx6nYHx3Bthx3g4q48gSgGrNHgntdpu/FWIW4HbAuuDEKaH+q033v5doSFzRR5FNarT21zglWJtVujefpyExPR98s2i9Ut0jAHFKUBnHKUG1Zt/CiMabzaarAOCUAPDh0WqTFx833BZGNL5obfLCKO+347Yweo3jlABUavZJ8MJNghduErziJsELNwledCWgMdXgaQEJaEw1f/0PKDwWdQMJuoEE3aAhXFnVYAH0U8MSdCgWi9yUDpgNaEoHzAacpA5oyE9NV4J8pXsFyBL4AzwCZAluxzgDZAluxzhjH+enxkjAa7s5Z8NuAUaCwEgQGAkCI0FgJAiMBMF/LUEVWYIqsgRVIME+UVXk5lTpSkBjqsEfr5CAxlTj9weU3dTBJka/AW4uNg3p+taQAAAAAElFTkSuQmCCCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + + + Far + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA7AAAAAKJUE5HDQoaCgAAAA1JSERSAAAAFAAAABQIBgAAAI2JHQ0AAAAEZ0FNQQAAsY8L/GEFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH5JREFUOE+tzMEJwDAQA0G3kP47SFMp5WKbEwizryiPwWY5NKrqVxgTGBMYExgTGBMY3XU/Na1XZubbBaPrQY3u/3njMDofangnGF0PanT/6U4wOh9qM/PtgtH1oEb3/7xxGJ0PNbwTjK4HNbr/dCcYExgTGBMYExgTGL+r8QL1YYgBA3bF7AAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA4AAAAAKJUE5HDQoaCgAAAA1JSERSAAAAFAAAABQIBgAAAI2JHQ0AAAAEZ0FNQQAAsY8L/GEFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHJJREFUOE+tzMEJgEAQBMFLwfwzMClDWc/HQCP9cnwULM2wa2Z+pbGhsaGxobGhsaGRjvOKyW270Eh4FroLjcRHud8b0kh4Fjv79qGR+Ci37UIj4VnoLjQSH+V+b0gj4Vns7NuHxobGhsaGxobGhsbvZt1vy4gBqcW4UgAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + TopOnBorder + BottomToTop + + + + + HighlightEntireItem + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA9QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADl0lEQVRoQ+2XzWsTQRjGq/Qk1YOgFz0q/h1SvCjoTaQgXgQPHjx58OIteBAEL8W/waKNRasgxhYrpiqFVrFNUpPmu9m0SZuPpo1JXud5ZdPpdpOdWSiozAMPm53Mk9n3tzOzm4FUKkW6DoVC2g4EAto+9DROhzWM/n4yDGF7e1vZxWKRi9LR4uIiF1Wr1ZQdDAb5InV080vRV8ZAMBAMBJaBIGQgCBkIQgaCkIEgZCAIGQhCXQgoTNXZbJYhoDBVh8NhhoDCVD06Osrv9bhIVZ97nfaVGVhaWiJdA4KuAUHXfv4M+ckwBB3l83kuSlWxWIxnA4pym/a9jNmAi9QR7qyfzIFDKBQK/z6EVqtFmUyGyuUyn6tAWN9p05WZVXrys8LnKhDS5Qpdms7S4x9FPleB4BxHBYJbpi8EAMjlcrwPAATkBQGDjIQtGhAXc3mmwG1eEADg6kyOMxenstzmBcFtHC8IvTI9IXQ6HS4Y3+MJAiBQPwjNdodufLZ4sxmeytNq40+mH4RypUYjH3OcOf8uQ/FShdv7Qeg1Tj8I/TJdCHgHQLH1ep3PS6USRSIRisfjtLW1xW2QDGF+Y4cuTItzq0FiDHoY2aAjzxJ0djJNH4oN7gPJEGbzGzQcytBkskSVao0CCxZnzrxK0tt0qQtHhqA6jgxBJ9OFgA0Mn5eXl8myLIpGo7yzNxq7AUiGcHtujcmefpmiu/PrdGx8hU5OJOnT2jZ/b0uGcGs2z5lTEyt05+sqHX2eoBMvVuh9utwF4ISgOo4MQSezZzmgQNx9tAGAPStkOZfD9dkCDY4leJ0dDybpTX531thyLodrYvoPjonnMzLjCQomdmeAbedyUBlHhgCpZvZAaLfb/FaIWYDlgH3BKSeE+q823f9eoiFxRx9FN6nR2p9xQrA2q3RvrkBDYno++GbRWqW6BwDshKAyjhOCambfxojCm82mKwDICQHCj8eqTd583OS2MaLwBWuTN0a53bbbxug1jhMCpJLZB8FLbhC85AbBy24QvOQGwUtdCChM1XhaAAIKU/Vf/wcKj0VdA4KuAUHXKAh3VtXYAP1kGIKObAg6wmxAUTrCbMBF6ggF+cl0Idh3uZ/tfjYE/gEPQzIEtz5OQzIEtz5O2/38ZAwEfJaL87Ldz0AQRwNBHA0EcTQQxNFAEEcDQRz/WwiqkiGoSoagKhmCqlCQnwxD0DUgoDBV+/0DZd+xg3WcfgND/TMv156b9wAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA+AMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADmklEQVRoQ+2YzWsTQRjGq/Qk1YOgFz0q/h1SvCjoTaQgXgQPHjx58OIteBAEL8W/waKNRasgxhYrpiqFVrFNUpPmu9k0SZuPJo1JXud5Jel0u8nOLBRU5oEHspN9Mvv+5mN3M5RIJEjXgUBA2z6fT9uHnkbpsIZxvpcMQ2g0GsrO5/NclI6Wl5e5qGq1qmy/388XqaObX/KeMgaCgWAgsAwEIQNByEAQMhCEDAQhA0HIQBDqQUBhqk6n0wwBhak6GAwyBBSm6vHxcX6ux0Wq+tzrpKfM0MrKCukaEHQNCLr28jLkJcMQdJTNZrkoVUUiEZ4NKMpp2vczZgMuUkcYWS+ZA4eQy+X+fQitVotSqRSVSiU+VoFQ2GnTlbl1evKzzMcqEJKlMl2aTdPjH3k+VoFg70cFglNmIAQAyGQyvA8ABOQGAZ2MBS0aEhdzeS7HbW4QAODqXIYzF2fS3OYGwakfNwj9Mn0hdDodLhjf4w4CINAgCM12h258tnizGZ3J0nr9T2YQhFK5SmMfM5w5/y5F0WKZ2wdB6NfPIAiDMj0IeAZAsbVajY+LxSKFQiGKRqO0vb3NbZAMYXFzhy7MimOrTqIPehjapCPPYnR2Okkf8nU+B5IhzGc3aTSQoul4kcqVKvmWLM6ceRWnt8liD44MQbUfGYJOpgcBGxg+r66ukmVZFA6HeWev13cDkAzh9sIGkz39MkF3Fwt0bHKNTk7F6dNGg7/vSoZwaz7LmVNTa3Tn6zodfR6jEy/W6H2y1ANgh6DajwxBJ7NnOaBAjD7aAKA7K2TZl8P1+RwNT8R4nR33x+lNdnfWdGVfDtfE9B+eEPdnZCZj5I/tzoCu7ctBpR8ZAqSa2QOh3W7zUyFmAZYD9gW77BBqv9p0/3uRRsSIPgpvUb21P2OHYG1V6N5CjkbE9HzwzaKNcmUPANgOQaUfOwTVzL6NEYU3m01HAJAdAoQfj1SavPk4yWljROFL1hZvjHJ7104bo1s/dgiQSmYfBDc5QXCTEwQ3O0FwkxMEN/UgoDBV424BCChM1X/9CxRui7oGBF0Dgq5REEZW1dgAvWQYgo4KhQIXpSPMBhSlI8wGXKSOUJCXTA+CPNL9DMkQ+AdcDMkQnM6xG5IhOJ1jd/c8LxkDAZ+7xdkLdjJkIAgZCEIGgpCBIGQgCBkIQv81BFXJEFQlQ1CVDEFVKMhLhiGgMFXjj1dAQGGq9voC1R2xg3WUfgNzejYRjgB1CAAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2zXFsx4kTZ/GWw/2d+GbevFz7Oe7IXzqy/XLPu/f871kTEg+y2azs7u7K4uLitayvr0s6nS6uuInz83OZm5uTvr4+6e3tVRkbG5NkMimXl5fFVc/j+PhYuru7pa6uTmpra1UaGxtle3u7pM7maU6+/DcmrzStyUuNV/JWeFfC++dScKtUrKMkFAoFicfjanAsFlOjLy4u5OzsTJ9vbW1JJBJRkizy+bxsbm6qwXyyHlgip6amlET7HGQyGRkdHZWmpibVOzk5UaMhcnZ2Vtra2pREnluksgX5ZeFQ3g5H5NfFIzWM8ycyBfljNSUfPYnKt2Nx2T7NXykY3FZHSUgkEnpwa7xfTk9PJRqN6k3lcjlVxPClpSU1wAXIgFTIwHgwPj6uHoMnuADpw8PD0t7ernsCjPjOHNga4kfsIi8/zh8aw/Yken5l1G11Qhx2Y2NDN3URYAVjd3Z21M35zk2WIsCCW15YWFDyuN3m5uaSBFjgleFwWCYnJ9WId3oisnX27JZdyJt9vh6JyW9PU1XphPCA/f19p+F+wQAMIgdAXCVAZ3p6WnMAoVAq5r0gJDs6OjSefzZuXSg+L4fxZEY++SdalU6IuC0VBn7BXQkD4jbICyzwNG6VJBjkBRbs09raKi+bRLaefpaHyiF+UZD3H+9VpaMkuAx2CYbjCT09PcXXBAP3xnNqamoq8gJA0u3q6pIX/l4rmfn9yJiFnw/FqtK5tSdQKfAEflcCEinhQBn0Zv1yIJFSKShpO2dXiTgIR6YifGiyfjU6ITI41cFvsEswglxAUtzb2yu+qjxIuIQDfQBJshKQfAkHavrDjcpCaOE4K+89jlSlE8ILcHFu2WW4VyiTJC0OSV339g2lAMmrq6u6R2dnZ0W5ZGRkRAYHB7Wp+WxgXxImdoPwkyl5P0wnq9LRPoFGCHEZbgVvwSC+E9uE0crKir7MBdbgLRgE0fwml/T39xdX3AT5A29paGiQg4MDje1vRuPyYPKguOImcsbWP9dP5M3uXZlPZavSURK4UW4KSaVS6sLcGN5BCFBC19bW9LcFZBDr8/PzcnR0pO/ACHIA+lQRGh/eZ8G7aIQolxDE+0iCvAujKaH19fXPhdq2ie+PTRn7ypS+wcSFyeh5TWjE81wqo+XwjUc7MmT+ZnFbnevZgcPj5hBB3POJIXwnBDioHyQw1s3MzGjcUwXoECcmJjQE8AA/IIg19AHEPVWAJNjS0iIDAwNKhh90db+bpubT/qiWtC+G9uUD0+292xuR7407c5t+3EbnmgQAEYQF7TDujthushTwmDszQHED3Dyfdj7AVXF12mVc1JsI79wAheFk/lLZHoNJjNyUJQjD78wAhVEYxCe3ws0Tz9zi8vKyJkVI4G8Q5R+gssavHm6cyOsdWxIy3dq91k2TmROSNKyj4xqgyumUGqDK6ZQaoCrVCZEDbDKCAG8+sEIocDhcm9DwDlB/mU1ebV7XTazQut4fjkna1CLXABWk4xqggnRcA1SlOiGMtmFgPcAveARr8AjbNtsweK39imW/3GvdkNWTrOr5B6ggHcLCP0AF6bgGqEp1dHaw8BvvFeKaW8RzvAOUaxMrtKV4kH+Acq21gg5k+wco11or6LgGKNdaK14dJcEmO27cbzxivQWDiG/vAAWrrk1ww6eGbd7tH6CCdFwDVJCOa4CqVCdEbJMLAEnQRQIhwO1wOL57B6gHUwfyotnYvxFNSSKT1yzvH6CCdFwDVJCOHYaq0QlxSOo6RiIYZz0CD8Bo2y5TJvnHq3eAItPeH45fsw7LbPIkfpUzXANUkI5rgArScQ1Qlepon2CnQ4DLYxy3jkAMscwMgNcQBvyGJDtApXOXsprOKbO42YHZnDUQWmqAcumwd7kByqXjH4aq0VESMNp2hdyUNZxDQYSdIO/8AMVhDg8PlQxclyrAJ8YQApDhB89Y8/8eoET+A46Kvwl1DPddAAAAAElFTkSuQmCCCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA8QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADk0lEQVRoQ+2XzWsTQRjGq/Qk1YOgFz0q/h1SvCjoTaQgXgQPHjx58OIteBAEL8W/waKNRasgxhYrpiqFVrFNUpPmu9m0SZuPpo1JXud5ZdPpdpOdWSiozAMPk93Mk9n3N7Ozm4FUKkW6DoVC2g4EAto+9DROhzWM/n4yDGF7e1vZxWKRi9LR4uIiF1Wr1ZQdDAb5InV080vRV8ZAMBAMBJaBIGQgCBkIQgaCkIEgZCAIGQhCXQgoTNXZbJYhoDBVh8NhhoDCVD06Osrv9bhIVZ97nfaVGVhaWiJdA4KuAUHXfv4M+ckwBB3l83kuSlWxWIxXA4pyW/a9jNWAi9QRZtZP5sAhFAqFfx9Cq9WiTCZD5XKZj1UgrO+06crMKj35WeFjFQjpcoUuTWfp8Y8iH6tAcI6jAsEt0xcCAORyOd4HAALygoBBRsIWDYiLuTxT4HNeEADg6kyOMxensnzOC4LbOF4QemV6Quh0OlwwvscTBECgfhCa7Q7d+GzxZjM8lafVxp9MPwjlSo1GPuY4c/5dhuKlCp/vB6HXOP0g9Mt0IeAdAMXW63U+LpVKFIlEKB6P09bWFp+DZAjzGzt0YVocWw0SY9DDyAYdeZags5Np+lBscB9IhjCb36DhUIYmkyWqVGsUWLA4c+ZVkt6mS104MgTVcWQIOpkuBGxg+Ly8vEyWZVE0GuWdvdHYDUAyhNtza0z29MsU3Z1fp2PjK3RyIkmf1rb5e1syhFuzec6cmlihO19X6ejzBJ14sULv0+UuACcE1XFkCDqZPbcDCsTs4xwA2KtClvN2uD5boMGxBN9nx4NJepPfXTW2nLfDNbH8B8fE8xmZ8QQFE7srwLbzdlAZR4YAqWb2QGi32/xWiFWA2wH7glNOCPVfbbr/vURDYkYfRTep0dqfcUKwNqt0b65AQ2J5Pvhm0VqlugcA7ISgMo4Tgmpm38aIwpvNpisAyAkBwo/Hqk3efNzktjGi8AVrkzdG+bxtt43RaxwnBEglsw+Cl9wgeMkNgpfdIHjJDYKXuhBQmKrxtAAEFKbqv/4PFB6LugYEXQOCrlEQZlbV2AD9ZBiCjmwIOrIh6Aj9cZE6QkF+Ml0I9iz3s93PhsA/4GFIhuDWx2lIhuDWx2m7n5+MgYDPcnFetvsZCKI1EERrIIjWQBCtgSBaA0G0/y0EVckQVCVDUJUMQVUoyE+GIegaRekaRenanrGDdZx+AwQBIVZs5053AAAAAElFTkSuQmCCCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA8QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADk0lEQVRoQ+2XzWsTQRjGq/Qk1YOgFz0q/h1SvCjoTaQgXgQPHjx58OIteBAEL8W/waKNRasgxhYrpiqFVrFNUpPmu9m0SZuPpo1JXud5ZdPpdpOdWSiozAMPk93Mk9n3N7Ozm4FUKkW6DoVC2g4EAto+9DROhzWM/n4yDGF7e1vZxWKRi9LR4uIiF1Wr1ZQdDAb5InV080vRV8ZAMBAMBJaBIGQgCBkIQgaCkIEgZCAIGQhCXQgoTNXZbJYhoDBVh8NhhoDCVD06Osrv9bhIVZ97nfaVGVhaWiJdA4KuAUHXfv4M+ckwBB3l83kuSlWxWIxXA4pyW/a9jNWAi9QRZtZP5sAhFAqFfx9Cq9WiTCZD5XKZj1UgrO+06crMKj35WeFjFQjpcoUuTWfp8Y8iH6tAcI6jAsEt0xcCAORyOd4HAALygoBBRsIWDYiLuTxT4HNeEADg6kyOMxensnzOC4LbOF4QemV6Quh0OlwwvscTBECgfhCa7Q7d+GzxZjM8lafVxp9MPwjlSo1GPuY4c/5dhuKlCp/vB6HXOP0g9Mt0IeAdAMXW63U+LpVKFIlEKB6P09bWFp+DZAjzGzt0YVocWw0SY9DDyAYdeZags5Np+lBscB9IhjCb36DhUIYmkyWqVGsUWLA4c+ZVkt6mS104MgTVcWQIOpkuBGxg+Ly8vEyWZVE0GuWdvdHYDUAyhNtza0z29MsU3Z1fp2PjK3RyIkmf1rb5e1syhFuzec6cmlihO19X6ejzBJ14sULv0+UuACcE1XFkCDqZPbcDCsTs4xwA2KtClvN2uD5boMGxBN9nx4NJepPfXTW2nLfDNbH8B8fE8xmZ8QQFE7srwLbzdlAZR4YAqWb2QGi32/xWiFWA2wH7glNOCPVfbbr/vURDYkYfRTep0dqfcUKwNqt0b65AQ2J5Pvhm0VqlugcA7ISgMo4Tgmpm38aIwpvNpisAyAkBwo/Hqk3efNzktjGi8AVrkzdG+bxtt43RaxwnBEglsw+Cl9wgeMkNgpfdIHjJDYKXuhBQmKrxtAAEFKbqv/4PFB6LugYEXQOCrlEQZlbV2AD9ZBiCjmwIOrIh6Aj9cZE6QkF+Ml0I9iz3s93PhsA/4GFIhuDWx2lIhuDWx2m7n5+MgYDPcnFetvsZCKI1EERrIIjWQBCtgSBaA0G0/y0EVckQVCVDUJUMQVUoyE+GIegaRekaRenanrGDdZx+AwQBIVZs5053AAAAAElFTkSuQmCCCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + Office2013RadioButtonGlyphInfo + + -1 + 0, 170, 222 + Solid + 0, 170, 222 + White + 135, 135, 135 + None + Transparent + 0 + 0, 170, 222 + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA9QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADl0lEQVRoQ+2XzWsTQRjGq/Qk1YOgFz0q/h1SvCjoTaQgXgQPHjx58OIteBAEL8W/waKNRasgxhYrpiqFVrFNUpPmu9m0SZuPpo1JXud5ZdPpdpOdWSiozAMPk93Mk9n3N7Ozm4FUKkW6DoVC2g4EAto+9DROhzWM/n4yDGF7e1vZxWKRi9LR4uIiF1Wr1ZQdDAb5InV080vRV8ZAMBAMBJaBIGQgCBkIQgaCkIEgZCAIGQhCXQgoTNXZbJYhoDBVh8NhhoDCVD06Osrv9bhIVZ97nfaVGVhaWiJdA4KuAUHXfv4M+ckwBB3l83kuSlWxWIxXA4pyW/a9jNWAi9QRZtZP5sAhFAqFfx9Cq9WiTCZD5XKZj1UgrO+06crMKj35WeFjFQjpcoUuTWfp8Y8iH6tAcI6jAsEt0xcCAORyOd4HAALygoBBRsIWDYiLuTxT4HNeEADg6kyOMxensnzOC4LbOF4QemV6Quh0OlwwvscTBECgfhCa7Q7d+GzxZjM8lafVxp9MPwjlSo1GPuY4c/5dhuKlCp/vB6HXOP0g9Mt0IeAdAMXW63U+LpVKFIlEKB6P09bWFp+DZAjzGzt0YVocWw0SY9DDyAYdeZags5Np+lBscB9IhjCb36DhUIYmkyWqVGsUWLA4c+ZVkt6mS104MgTVcWQIOpkuBGxg+Ly8vEyWZVE0GuWdvdHYDUAyhNtza0z29MsU3Z1fp2PjK3RyIkmf1rb5e1syhFuzec6cmlihO19X6ejzBJ14sULv0+UuACcE1XFkCDqZPbcDCsTs4xwA2KtClvN2uD5boMGxBN9nx4NJepPfXTW2nLfDNbH8B8fE8xmZ8QQFE7srwLbzdlAZR4YAqWb2QGi32/xWiFWA2wH7glNOCPVfbbr/vURDYkYfRTep0dqfcUKwNqt0b65AQ2J5Pvhm0VqlugcA7ISgMo4Tgmpm38aIwpvNpisAyAkBwo/Hqk3efNzktjGi8AVrkzdG+bxtt43RaxwnBEglsw+Cl9wgeMkNgpfdIHjJDYKXuhBQmKrxtAAEFKbqv/4PFB6LugYEXQOCrlEQZlbV6O8nwxB0ZEPQEVYDitIR+uMidYSngJ9MF4I9y/1s97Mh8A94GJIhuPVxGpIhuPVx2u7nJ2Mg4LNcnJftfgaCaA0E0RoIojUQRGsgiNZAEO1/C0FVMgRVyRBUJUNQFQryk2EIugYEFKZq+w+Uru0ZO1jH6Tc1kyfofk37EgAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + + RectangularSolid + None + TopOnBorder + BottomToTop + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA6gMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADjElEQVRoQ+2YT2sTQRjGq/Qk1YOgFz0qfg4pXhT0JlIQL4IHD548ePFWPAiCNz+DRVuLVkGMLVaaqhRaxTZJTZr/zaZJ2vxp0pjkdZ5Xsp1sN9mZBaHC/OCB7nbezr6/nZ1NOpRIJEg3gUBAO+Pj49o58jxKRzWC8X5qWEKj0VBOPp/npnRYXV3lpqrVqnIwHhepw+2veV81RoKRYCQwRoLASBAYCQIjQWAkCIwEgZEgsCWgMdWk02mWgMZUEwwGuSnd4HM9LlI1F94mfdUMra2tkW4gQTduTXrFz5chPzUsQYdsNstNqRKJRHg1oCm3Zd8vGI+L1AF31k/NP5eQy+X+fwmtVotSqRSVSiU+VpFQ2GvTtflNevarzMcqEpKlMl2ZS9PTn3k+VpHgnEdFglvNQAkQkMlkeB+ACOAlAZOMBS0aEhdzdT7H57wkQMD1+QzXXJ5N8zkvCW7zeEnoV9NXQqfT4Ybxe7xBIAQMktBsd+jWF4s3m9HZLG3W/9YMklAqV2nsc4ZrLn5IUbRY5vODJPSbZ5CEQTW2BHwGQLO1Wo2Pi8UihUIhikajtLu7y+eALGF5e48uzYljq05iDnoc2qZjL2J0fiZJn/J1HgNkCYvZbRoNpGgmXqRyRTS7YnHNuTdxep8s2nJkCarzyBJ0amwJ2MDw8/r6OlmWReFwmHf2en2/AMgS7i5tsdmzrxN0f7lAJyY36PR0nBa2Gvz7LrKEO4tZrjkzvUH3vm3S8ZcxOvVqgz4mS7YApwTVeWQJOjU9jwMaxN3HOQjorgoZ5+NwczFHwxMxfs5OTsXpXXZ/1XRxPg43xPIfnhDvZ9RMxmgqtr8CupElAJV5ZAlAtaZHQrvd5k+FWAV4HLAvOHFKqP1u08MfRRoRd/RJeIfqrYM1TgnWToUeLOVoRCzPR98t2ipXegQgTgkq8zglqNYc2BjReLPZdBUAnBIA/nik0uTNxw23jRGNr1g7vDHK57txSgBe8zglAJWaAxK8cJPghZsEr7hJ8MJNghe2BDSmGrwtIAGNqebQf4HCa1E3kKAbtya9goZwZ1WD8X5qWIIOhUKBm9IBqwFN6YDxuEgdcGf91NgS5DvdL0CWgFePV4AswW2MM0CW4DbGGSBLcBvjDDASBEaCwEgQGAkCI0FgJAiMBIGRIOiRoIosQRVZgiqyBFVkCarYEtCYavCPV0hAY6o53F+gkvQHK6ctxANB/y4AAAAASUVORK5CYIILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + + White + + + + + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA+wMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADnUlEQVRoQ+2XT2sTQRjGq/Qk1YOgFz0qfg4pXhT0JlIQL4IHD548ePEWPAiCl+JnsGhj0SqIscWKqUqhVWyT1KT532zapE3TJo1JXud5ZdPJdpOdWSiozAMPyW7mycz725nZ3YFUKkW6DoVC2g4EAto+9DROhzWM9n4yDKFeryu7WCxyUTpaXFzkoqrVqrKDwSAPUkc3vxR9ZQwEA8FAYBkIQgaCkIEgZCAIGQhCBoKQgSDUgYDCVJ3NZhkCClN1OBxmCChM1aOjo/xcj0Gq+tzrtK/MwNLSEukaEHQNCLr28zLkJ8MQdJTP57koVcViMZ4NKMpt2vcyZgMGqSNcWT+ZA4dQKBT+fQjNZpMymQyVy2U+VoGwvtuiKzOr9ORnhY9VIKTLFbo0naXHP4p8rALB2Y8KBLdMXwgAkMvleB8ACMgLAjoZCVs0IAZzeabA57wgAMDVmRxnLk5l+ZwXBLd+vCD0yvSE0G63uWD8jjsIgED9IDRabbrx2eLNZngqT6u1P5l+EMqVKo18zHHm/LsMxUsVPt8PQq9++kHol+lAwDMAit3e3ubjUqlEkUiE4vE47ezs8DlIhjC/sUsXpsWxVSPRBz2MbNCRZwk6O5mmD8Uat4FkCLP5DRoOZWgyWaLKVpUCCxZnzrxK0tt0qQNHhqDajwxBJ9OBgA0M35eXl8myLIpGo7yz12p7AUiGcHtujcmefpmiu/PrdGx8hU5OJOnTWp1/tyVDuDWb58ypiRW683WVjj5P0IkXK/Q+Xe4AcEJQ7UeGoJPpWg4oEFcf5wDAnhWynMvh+myBBscSvM6OB5P0Jr83a2w5l8M1Mf0Hx8T9GZnxBAUTezPAtnM5qPQjQ4BUM10QWq0WPxViFmA5YF9wyglh+1eL7n8v0ZC4oo+im1Rr7s84IVibW3RvrkBDYno++GbRWmWrCwDshKDSjxOCambfxojCG42GKwDICQHCn8e2Grz5uMltY0ThC9Ymb4zyedtuG6NXP04IkEpmHwQvuUHwkhsEL7tB8JIbBC91IKAwVeNuAQgoTNV//QsUbou6BgRdA4KuURCurI79ZBiCjmwIOsJsQFE6wmzAAHVkF6WjLgj2Ve5nu50NAbceL0MyBLc2TkMyBLc2TkMyBLc2TkMGgpCBIPTPQOCBethu5ydjIOC7XJyX7XYGgvg0EMSngSA+/1sIqpIhqEqGoCoZgqpkCKrqQNA1IKAwVft9gbKLOljH6TcHdzOr6BQ8HAAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAArQMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADT0lEQVRoQ+2ZzWsTURTFq3Ql1YWgG10q/h1S3CjoTqQgbgQXLly5cOMuuBAEN8W/waKNRasgxooVU5VCq9gmqUnzOc2knbT5aNKY5PrOlUyn00nmvQFB5R040HmZ0zf3N+/dmbRDmUyGVB2JRJQdCoWUfeBxkg4qGOcHyTCEZrMp7VKpxEWpaGlpiYuq1WrSDofDfJEquv65FCijIWgIGgJLQxDSEIQ0BCENQUhDENIQhDQEIRsCCpN1Pp9nCChM1tFolCGgMFmPj4/zez0uUtZnXmYDZYaWl5dJ1YCgakBQdZAvQ0EyDEFFhmFwUbJKJBK8GlCU17LvZ6wGXKSKcGeDZP44hGKx+O9DaLfblMvlqFwu87EMhI2dDl2aXaNHPyp8LAMhW67QhXd5evi9xMcyENzzyEDwygyEAACFQoH7AEBAfhAwyVjUpCFxMRdnizzmBwEALs8WOHN+Js9jfhC85vGD0C/TF0K32+WC8TmeIAACDYLQ6nTp2ieTm83ojEFrjd+ZQRDKlRqNfShw5uybHCWtCo8PgtBvnkEQBmVsCHgHQLH1ep2PLcuiWCxGyWSStre3eQxyQljY3KFz78Sx2SAxB92PbdKhJyk6PZ2l96UGnwM5IcwZmzQaydF02qJKtUahRZMzp16k6XXWsuE4IcjO44SgkrEhoIHh55WVFTJNk+LxOHf2RmM3ADkh3JxfZ7Inn2fo9sIGHZlcpeNTafq43uTPe3JCuDFncObE1Crd+rJGh5+m6NizVXqbLdsA3BBk53FCUMns2Q4oEHcfYwDQWxVOubfD1bkiDU+keJ8dDafplbG7anpyb4crYvkPT4jnMzKTKQqndldAz+7tIDOPEwIkm9kDodPp8FshVgG2A/qCW24I9Z8duvvNohFxRx/Et6jR3p9xQzC3qnRnvkgjYnne+2rSeqW6BwDshiAzjxuCbGZfY0ThrVbLEwDkhgDhlyeqLW4+XvJqjCh80dzixugc79mrMfrN44YAyWT2QfCTFwQ/eUHwsxcEP3lB8JMNAYXJGk8LQEBhsv7rv0DhsahqQFA1IKgaBeHOyhrnB8novyeIjIagIWgILA1BSEMQ0hCENAQhDUFIQxDSEIRsCChM1v/ff6Cy9AsSMSlLu0Av/QAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + Office2013RadioButtonGlyphInfo + + + + + + + + + 0, 170, 222 + Gray + Gray + Gray + + + + + + + + + Flat + True + + + + + Flat + True + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA8QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADk0lEQVRoQ+2YTWsTURSGq3Ql1YWgG10q/g4pbhR0J1IQN4ILF65cuHEXXAiCm+JvsGhj0SqIscWKqUqhVWyT1KT5biZN0uajSWOS432PJL2ZTjL3DggK94EXOpM5uXOeuXNn0pFEIkG6CQQC2vH5fNo59DRKhzWC473UsIRGo6GcfD7PTemwurrKTVWrVeX4/X4+SR1ufsl7qjESjAQjgTESBEaCwEgQGAkCI0FgJAiMBEFPAhpTTTqdZgloTDXBYJAloDHVTE5O8ns9TlI1514nPdWMrK2tkW4gQTeQoBsvP4a81LAEHbLZLDelSiQS4dmAppym/aBgNuAkdcCV9VLz1yXkcrn/X0Kr1aJUKkWlUom3VSQU9tp0ZWGTnvws87aKhGSpTJfm0/T4R563VSTYx1GR4FQzVAIEZDIZXgcgArhJwCATQYtGxMlcXsjxPjcJEHB1IcM1F+fSvM9NgtM4bhIG1QyU0Ol0uGF8jicIhIBhEprtDt34bPFiMz6Xpc36n5phEkrlKk18zHDN+XcpihbLvH+YhEHjDJMwrKYnAe8AaLZWq/F2sVikUChE0WiUdnd3eR+QJSxv79GFebFt1UmMQQ9D23TkWYzOzibpQ77OxwBZwmJ2m8YDKZqNF6lcqZJvxeKaM6/i9DZZ7MmRJaiOI0vQqelJwAKGv9fX18myLAqHw7yy1+v7BUCWcHtpi82efpmgu8sFOja9QSdn4vRpq8Gfd5El3FrMcs2pmQ2683WTjj6P0YkXG/Q+WeoJsEtQHUeWoFPTdzugQVx97IOA7qyQsd8O1xdzNDoV4/vsuD9Ob7L7s6aL/Xa4Jqb/6JR4PqNmOkb+2P4M6MZ+O6iMI0sAqjV9EtrtNr8VYhbgdsC6YMcuofarTfe/F2lMXNFH4R2qtw7W2CVYOxW6t5SjMTE9H3yzaKtc6ROA2CWojGOXoFpzYGFE481m01EAsEsA+PJIpcmLjxNOCyMaX7F2eGGU93fjtDC6jWOXAFRqDkhww0mCG04S3OIkwQ0nCW70JKAx1eBpAQloTDX//A8oPBZ1Awm6gQTdoCFcWdXgeC81LEGHQqHATemA2YCmdMBswEnqgCvrpaYnQb7SgwJkCXj0uAXIEpyOsQfIEpyOsQfIEpyOsQcYCQIjQWAkCIwEgZEgMBIERoLASBD0SVBFlqCKLEEVWYIqsgRVehLQmGrwj1dIQGOq+bd/QCXpN3LrT59/MUO0AAAAAElFTkSuQmCCCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA8QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADk0lEQVRoQ+2YTWsTURSGq3Ql1YWgG10q/g4pbhR0J1IQN4ILF65cuHEXXAiCm+JvsGhj0SqIscWKqUqhVWyT1KT5biZN0uajSWOS432PJL2ZTjL3DggK94EXOpM5uXOeuXNn0pFEIkG6CQQC2vH5fNo59DRKhzWC473UsIRGo6GcfD7PTemwurrKTVWrVeX4/X4+SR1ufsl7qjESjAQjgTESBEaCwEgQGAkCI0FgJAiMBEFPAhpTTTqdZgloTDXBYJAloDHVTE5O8ns9TlI1514nPdWMrK2tkW4gQTeQoBsvP4a81LAEHbLZLDelSiQS4dmAppym/aBgNuAkdcCV9VLz1yXkcrn/X0Kr1aJUKkWlUom3VSQU9tp0ZWGTnvws87aKhGSpTJfm0/T4R563VSTYx1GR4FQzVAIEZDIZXgcgArhJwCATQYtGxMlcXsjxPjcJEHB1IcM1F+fSvM9NgtM4bhIG1QyU0Ol0uGF8jicIhIBhEprtDt34bPFiMz6Xpc36n5phEkrlKk18zHDN+XcpihbLvH+YhEHjDJMwrKYnAe8AaLZWq/F2sVikUChE0WiUdnd3eR+QJSxv79GFebFt1UmMQQ9D23TkWYzOzibpQ77OxwBZwmJ2m8YDKZqNF6lcqZJvxeKaM6/i9DZZ7MmRJaiOI0vQqelJwAKGv9fX18myLAqHw7yy1+v7BUCWcHtpi82efpmgu8sFOja9QSdn4vRpq8Gfd5El3FrMcs2pmQ2683WTjj6P0YkXG/Q+WeoJsEtQHUeWoFPTdzugQVx97IOA7qyQsd8O1xdzNDoV4/vsuD9Ob7L7s6aL/Xa4Jqb/6JR4PqNmOkb+2P4M6MZ+O6iMI0sAqjV9EtrtNr8VYhbgdsC6YMcuofarTfe/F2lMXNFH4R2qtw7W2CVYOxW6t5SjMTE9H3yzaKtc6ROA2CWojGOXoFpzYGFE481m01EAsEsA+PJIpcmLjxNOCyMaX7F2eGGU93fjtDC6jWOXAFRqDkhww0mCG04S3OIkwQ0nCW70JKAx1eBpAQloTDX//A8oPBZ1Awm6gQTdoCFcWdXgeC81LEGHQqHATemA2YCmdMBswEnqgCvrpaYnQb7SgwJkCXj0uAXIEpyOsQfIEpyOsQfIEpyOsQcYCQIjQWAkCIwEgZEgMBIERoLASBD0SVBFlqCKLEEVWYIqsgRVehLQmGrwj1dIQGOq+bd/QCXpN3LrT59/MUO0AAAAAElFTkSuQmCCCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA7AMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADjklEQVRoQ+2XT2sTQRjGq/Qk1YOgFz0qfg4pXhT0JlIQL4IHD548ePEWPAiCl+JnsGhj0SqIscWKqUqhVWyT1KT532zapM2fJo1JXud5ZdPJdpOdiRQU5gcPdDfzdvb97exsMpRIJEg3gUBAOz6fTzuHnkbpsEYwfpAallCv15WTz+e5KR2Wl5e5qUqlohy/388XqcPNL/mBaowEI8FIYIwEgZEgMBIERoLASBAYCQIjQdCRgMZUk06nWQIaU00wGGQJaEw14+Pj/L0eF6mac6+TA9UMrayskG4gQTeQoJtBfgwNUsMSdMhms9yUKpFIhFcDmnJb9r2C1YCL1AF3dpCaA5eQy+X+fwnNZpNSqRQVi0U+VpGwuduiK3Pr9ORniY9VJCSLJbo0m6bHP/J8rCLBOY+KBLeavhIgIJPJ8D4AEcBLAiYZC1o0JC7m8lyOz3lJgICrcxmuuTiT5nNeEtzm8ZLQq6anhHa7zQ3jc7xBIAT0k9BotenGZ4s3m9GZLK3X/tT0k1AsVWjsY4Zrzr9LUbRQ4vP9JPSap5+EfjUdCfgOgGar1SofFwoFCoVCFI1GaWdnh88BWcLi1i5dmBXHVo3EHPQwtEVHnsXo7HSSPuRrPAbIEuazWzQaSNF0vEClcoV8SxbXnHkVp7fJQkeOLEF1HlmCTk1HAjYw/L26ukqWZVE4HOadvVbbKwCyhNsLG2z29MsE3V3cpGOTa3RyKk6fNur8uY0s4dZ8lmtOTa3Rna/rdPR5jE68WKP3yWJHgFOC6jyyBJ2arscBDeLu4xwE2KtCxvk4XJ/P0fBEjJ+z4/44vcnurRob5+NwTSz/4QnxfkbNZIz8sb0VYMf5OKjMI0sAqjVdElqtFn8rxCrA44B9wYlTQvVXi+5/L9CIuKOPwttUa+6vcUqwtst0byFHI2J5Pvhm0Uap3CUAcUpQmccpQbVm38aIxhuNhqsA4JQA8M8j5QZvPm64bYxofMna5o1RPm/HbWP0mscpAajU7JPghZsEL9wkeMVNghduErzoSEBjqsHbAhLQmGr++R9QeC3qBhJ0Awm6QUO4s6rB+EFqWIIOtgQdsBrQlA5YDbhIHWwBOnRJsO9yv9jjbAl49XgFyBLcxjgDZAluY5wBsgS3Mc4AI0FgJAiMBIGRIDASBEaCwEgQGAmCLgmqyBJUkSWoIktQRZagSkeCbiABjanmb35AHXyi9BvrVTNhLiUFpAAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAArQMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADT0lEQVRoQ+2ZzWsTURTFq3Ql1YWgG10q/h1S3CjoTqQgbgQXLly5cOMuuBAEN8W/waKNRasgxooVU5VCq9gmqUnzOc2knbT5aNKY5PrOlUyn00nmvQFB5R040HmZ0zf3N+/dmbRDmUyGVB2JRJQdCoWUfeBxkg4qGOcHyTCEZrMp7VKpxEWpaGlpiYuq1WrSDofDfJEquv65FCijIWgIGgJLQxDSEIQ0BCENQUhDENIQhDQEIRsCCpN1Pp9nCChM1tFolCGgMFmPj4/zez0uUtZnXmYDZYaWl5dJ1YCgakBQdZAvQ0EyDEFFhmFwUbJKJBK8GlCU17LvZ6wGXKSKcGeDZP44hGKx+O9DaLfblMvlqFwu87EMhI2dDl2aXaNHPyp8LAMhW67QhXd5evi9xMcyENzzyEDwygyEAACFQoH7AEBAfhAwyVjUpCFxMRdnizzmBwEALs8WOHN+Js9jfhC85vGD0C/TF0K32+WC8TmeIAACDYLQ6nTp2ieTm83ojEFrjd+ZQRDKlRqNfShw5uybHCWtCo8PgtBvnkEQBmVsCHgHQLH1ep2PLcuiWCxGyWSStre3eQxyQljY3KFz78Sx2SAxB92PbdKhJyk6PZ2l96UGnwM5IcwZmzQaydF02qJKtUahRZMzp16k6XXWsuE4IcjO44SgkrEhoIHh55WVFTJNk+LxOHf2RmM3ADkh3JxfZ7Inn2fo9sIGHZlcpeNTafq43uTPe3JCuDFncObE1Crd+rJGh5+m6NizVXqbLdsA3BBk53FCUMns2Q4oEHcfYwDQWxVOubfD1bkiDU+keJ8dDafplbG7anpyb4crYvkPT4jnMzKTKQqndldAz+7tIDOPEwIkm9kDodPp8FshVgG2A/qCW24I9Z8duvvNohFxRx/Et6jR3p9xQzC3qnRnvkgjYnne+2rSeqW6BwDshiAzjxuCbGZfY0ThrVbLEwDkhgDhlyeqLW4+XvJqjCh80dzixugc79mrMfrN44YAyWT2QfCTFwQ/eUHwsxcEP3lB8JMNAYXJGk8LQEBhsv7rv0DhsahqQFA1IKgaBeHOyhrnB8novyeIjIagIWgILA1BSEMQ0hCENAQhDUFIQxDSEIRsCChM1v/ff6Cy9AsSMSlLu0Av/QAAAABJRU5ErkJgggsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA/QMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADn0lEQVRoQ+2YT2sTQRjGq/Qk1YOgFz0qfg4pXhT0JlIQL4IHD548ePEWPAiCl+JnsGhj0SqIscWKqUqhVWyT1KT532yapM2fJo1JXud5Jel0u8nOrBQU5gcPdLfzdvb97exs0qFEIkG6CQQC2vH5fNo59DRKhzWC8V5qWEKj0VBOPp/npnRYXl7mpqrVqnL8fj9fpA43v+Q91RgJRoKRwBgJAiNBYCQIjASBkSAwEgRGgqAnAY2pJp1OswQ0pppgMMgS0JhqxsfH+XM9LlI1514nPdUMrayskG4gQTeQoBsvX4a81LAEHbLZLDelSiQS4dWAppyWfb9gNeAidcCd9VJz4BJyudz/L6HValEqlaJSqcTHKhIKO226MrdOT36W+VhFQrJUpkuzaXr8I8/HKhLs86hIcKoZKAECMpkM7wMQAdwkYJKxoEVD4mIuz+X4nJsECLg6l+GaizNpPucmwWkeNwn9avpK6HQ63DB+jzcIhIBBEprtDt34bPFmMzqTpfX6n5pBEkrlKo19zHDN+XcpihbLfH6QhH7zDJIwqKYnAZ8B0GytVuPjYrFIoVCIotEobW9v8zkgS1jc3KELs+LYqpOYgx6GNunIsxidnU7Sh3ydxwBZwnx2k0YDKZqOF6lcqZJvyeKaM6/i9DZZ7MmRJajOI0vQqelJwAaGn1dXV8myLAqHw7yz1+u7BUCWcHthg82efpmgu4sFOja5Rien4vRpo8G/7yJLuDWf5ZpTU2t05+s6HX0eoxMv1uh9stQTYJegOo8sQadmz+OABnH3cQ4CuqtCxv44XJ/P0fBEjJ+z4/44vcnurpou9sfhmlj+wxPi/YyayRj5Y7sroBv746AyjywBqNbskdBut/lTIVYBHgfsC3bsEmq/2nT/e5FGxB19FN6iemt/jV2CtVWhews5GhHL88E3izbKlT0CELsElXnsElRr9m2MaLzZbDoKAHYJAH88Umny5uOE08aIxpesLd4Y5fPdOG2MbvPYJQCVmn0S3HCS4IaTBLc4SXDDSYIbPQloTDV4W0ACGlPNP/8FCq9F3UCCbiBBN2gId1Y1GO+lhiXoUCgUuCkdsBrQlA5YDbhIHboCdNgjQb7T/QJkCXj1uAXIEpzG2ANkCU5j7AGyBKcx9gAjQWAkCIwEgZEgMBIERoLASBD88xJwgcBpjD0A473U9CSoIktQRZagiixBFVmCKj0JaEw1+McrJKAx1fzNF6iDT5R+AxOLNj+SFfOFAAAAAElFTkSuQmCCCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + 191, 191, 191 + White + 191, 191, 191 + Office2010 + 191, 191, 191 + + + + + Standard + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAnSW5mcmFnaXN0aWNzLldpbi5DaGVja0JveEltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAAAAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAFkN1c3RvbSBjaGVja2JveCBnbHlwaHMFBwAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgMAAAAJCQAAAA8JAAAA8wMAAAKJUE5HDQoaCgAAAA1JSERSAAAAQQAAACcIBgAAAFBaJQIAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADlUlEQVRoQ+2YTWsTURSGq3Ql1YWgG10q/g4pbhR0J1IQN4ILF65cuHEXXAiCm+JvsGhj0SqIsWLFVKXQKrZJatJ8N5MmafPRpDHJ8b5Hkt5MJ5l7BxSF+8ALncmc3DnP3Lkz6UgikSDdBAIB7fh8Pu0ceBylgxrB8V5qWEKj0VBOPp/npnRYWVnhpqrVqnL8fj+fpA7XP+c91RgJRoKRwBgJAiNBYCQIjASBkSAwEgRGgqAnAY2pJp1OswQ0pppgMMgS0JhqJicn+b0eJ6maMy+TnmpGVldXSTeQoBtI0I2XH0NealiCDtlslptSJRKJ8GxAU07TflAwG3CSOuDKeqn54xJyudz/L6HValEqlaJSqcTbKhIKu226NL9Bj36UeVtFQrJUpgvv0vTwe563VSTYx1GR4FQzVAIEZDIZXgcgArhJwCATQYtGxMlcnM/xPjcJEHB5PsM15+fSvM9NgtM4bhIG1QyU0Ol0uGF8jicIhIBhEprtDl37ZPFiMz6XpY3675phEkrlKk18yHDN2TcpihbLvH+YhEHjDJMwrKYnAe8AaLZWq/F2sVikUChE0WiUdnZ2eB+QJSxt7dK5d2LbqpMYg+6HtujQkxidnk3S+3ydjwGyhIXsFo0HUjQbL1K5UiXfssU1p17E6XWy2JMjS1AdR5agU9OTgAUMf6+trZFlWRQOh3llr9f3CoAs4ebiJps9+TxBt5cKdGR6nY7PxOnjZoM/7yJLuLGQ5ZoTM+t068sGHX4ao2PP1ultstQTYJegOo4sQaem73ZAg7j62AcB3VkhY78dri7kaHQqxvfZUX+cXmX3Zk0X++1wRUz/0SnxfEbNdIz8sb0Z0I39dlAZR5YAVGv6JLTbbX4rxCzA7YB1wY5dQu1nm+5+K9KYuKIPwttUb+2vsUuwtit0ZzFHY2J63vtq0Wa50icAsUtQGccuQbVm38KIxpvNpqMAYJcA8OWRSpMXHyecFkY0vmxt88Io7+/GaWF0G8cuAajU7JPghpMEN5wkuMVJghtOEtzoSUBjqsHTAhLQmGr++R9QeCzqBhJ0Awm6QUO4sqrB8V5qWIIOhUKBm9KhK0EHzAacpA64sl5qehLkKz0oQJaAR49bgCzB6Rh7gCzB6Rh7gCzB6Rh7gJEgMBIERoLASBAYCQIjQWAkCIwEQZ8EVWQJqsgSVJElqCJLUKUnAY2pBv94RVO6gQQ0ppq/9wMqSb8AWg1JD6G7pzMAAAAASUVORK5CYIILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAGJJbmZyYWdpc3RpY3M0Lldpbi52MTMuMiwgVmVyc2lvbj0xMy4yLjIwMTMyLjIwMjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2RkNWMzMTYzZjJjZDBjYgwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQwEAAAAZUluZnJhZ2lzdGljczQuU2hhcmVkLnYxMy4yLCBWZXJzaW9uPTEzLjIuMjAxMzIuMjAyMywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03ZGQ1YzMxNjNmMmNkMGNiBQEAAAAqSW5mcmFnaXN0aWNzLldpbi5SYWRpb0J1dHRvbkltYWdlR2x5cGhJbmZvBAAAAAlHbHlwaFR5cGUJR2x5cGhTaXplEkNvbWJpbmVkR2x5cGhJbWFnZQtEZXNjcmlwdGlvbgAEBAEIE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAL0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyBAAAAAIAAAABAAAABfv///8TU3lzdGVtLkRyYXdpbmcuU2l6ZQIAAAAFd2lkdGgGaGVpZ2h0AAAICAMAAAANAAAADQAAAAX6////L0luZnJhZ2lzdGljcy5TaGFyZWQuU2VyaWFsaXphdGlvbi5PYmplY3RXcmFwcGVyAQAAAAtvYmplY3RWYWx1ZQQVU3lzdGVtLkRyYXdpbmcuQml0bWFwAwAAAAQAAAAJBwAAAAYIAAAAGkN1c3RvbSByYWRpbyBidXR0b24gZ2x5cGhzBQcAAAAVU3lzdGVtLkRyYXdpbmcuQml0bWFwAQAAAAREYXRhBwIDAAAACQkAAAAPCQAAAFoGAAACiVBORw0KGgoAAAANSUhEUgAAAEEAAAAaCAYAAADovjFxAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvAAADrwBlbxySQAABfxJREFUWEfdmDlvY1UUxw1IIFHOJ4BvQEGDEAUFNGyioAEJoREC8QGmgRIhEBUiUQoqmCYKWRQpi5SJnGQ0ZCH7vkz2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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + False + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA2wAAAAKJUE5HDQoaCgAAAA1JSERSAAAACgAAAAoIBgAAAI0yz70AAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M1cbXjNgAAAFVJREFUKFNj+P//Pxi3trZeAGIBGB8dwxlARf+B+AEQGyArgGE4A6oQhD8AcQCyIhDGphCGC4hVCMILqKqwASaHSyHIMwnIikAYXSFIEcHgwRPg/xkAphkSTK5IMV8AAAAASUVORK5CYIILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA6AAAAAKJUE5HDQoaCgAAAA1JSERSAAAACgAAAAoIBgAAAI0yz70AAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M1cbXjNgAAAGJJREFUKFNj+P//P1EYqyA2zMCw6t4FIP5PAF8AKRQA4g9Iguj4ARALQIxddc8AiLEpBokZgNXA3bDqXgKSAhgOgMvDGFDFDUiKClDkkDlggVX3FoAwhji6AC6MVRAT/2cAAJhQETR6tnZYAAAAAElFTkSuQmCCCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + Never + None + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/shared file/iMES.pfx b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/iMES.pfx new file mode 100644 index 0000000..bf28015 Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/iMES.pfx differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/shared file/iMES.snk b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/iMES.snk new file mode 100644 index 0000000..4206cdc Binary files /dev/null and b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/iMES.snk differ diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/shared file/modConstant.vb b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/modConstant.vb new file mode 100644 index 0000000..b445f5e --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/modConstant.vb @@ -0,0 +1,22 @@ +Module modConstant + + Public Const defInteger As Integer = -999 '宣告整數使用的常數,用以辨識參數是否有傳入Function中。 + Public Const defString As String = "Null" '宣告字串使用的常數,用以辨識參數是否有傳入Function中。 + Public Const defDateTime As Date = #12/31/1900# '宣告日期使用的常數,用以辨識參數是否有傳入Function中。 + Public Const defSingle As Single = -999 '宣告單精準數使用的常數,用以辨識參數是否有傳入Function中。 + Public Const defDouble As Double = -999 '宣告雙精準數使用的常數,用以辨識參數是否有傳入Function中。 + Public Const strAddTagLabel As String = "extrabase" 'Add by py for Combine Addition XML doc + Public Const strAddTagName As String = "ExtraBase" 'Add by py for Combine Addition XML doc + Public Const defWinErrCode As String = "0000-899999" + Public Const defNullDate As Date = #12/31/1910# '宣告日期使用的常數,用以辨識參數是否要變更為Null。 + Public Const defNullInteger As Integer = -9999 '宣告數值使用的常數,用以辨識參數是否要變更為Null。 +End Module + +'2020/01/15 Shih Kai,供前端InvokeSrv_Module時使用,用以辨識是否存入EventLog (1,2,3 >存入) +Public Enum _enuInvokeType + _Load = 0 + _Add = 1 + _Edit = 2 + _Delete = 3 + _Get = 4 +End Enum diff --git a/SRC/MESWin/SYS4/21670ll/MESWin/shared file/modQCSetting.vb b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/modQCSetting.vb new file mode 100644 index 0000000..87e1b4e --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MESWin/shared file/modQCSetting.vb @@ -0,0 +1,61 @@ +Module modQCSetting + + Public Function LoadQCObjectInfo(ByVal pQCObjectType As String, + ByRef pRefTableName As String, + ByRef pData As DataSet, + Optional ByVal pQCObjectNo As String = defString, + Optional ByRef pFindColumnNo As String = "", + Optional ByRef pFindColumnName As String = "", + Optional ByVal pLikeSymbo As String = "", + Optional ByVal pQCObjectFrom As String = defString, + Optional ByVal pQCObjectTo As String = defString, + Optional ByVal pAdditional As String = "") As Boolean + + Dim strMethod As String + Dim strNode As String + Dim strConditionName As String = "QCObjectType" + Dim strConditionValue As String = pQCObjectType + + pQCObjectNo = pQCObjectNo & pLikeSymbo + + Select Case pQCObjectType + Case 0 + pFindColumnNo = "QCCategory" + pFindColumnName = "QCCategoryName" + + Case 1 + pFindColumnNo = "ProductNo" + pFindColumnName = "ProductName" + + Case 2 + pFindColumnNo = "QCCategory" + pFindColumnName = "QCCategoryName" + + Case 3 + pFindColumnNo = "MaterialNo" + pFindColumnName = "MaterialName" + + End Select + + If pQCObjectNo <> defString Then + strConditionName = strConditionName & ",QCObjectNo" + strConditionValue = strConditionValue & "," & pQCObjectNo + End If + + If pQCObjectFrom <> defString Then + strConditionName = strConditionName & ",QCObjectNoFrom" + strConditionValue = strConditionValue & "," & pQCObjectFrom + End If + + If pQCObjectTo <> defString Then + strConditionName = strConditionName & ",QCObjectNoTo" + strConditionValue = strConditionValue & "," & pQCObjectTo + End If + + LoadQCObjectInfo = COM_Utility.clsUtility.InvokeLoadFunction(gComputerName, gUserNo, "wsQC.LoadQCObjectRefInfo", "loadqcobjectrefinfo", + Split(strConditionName, ","), Split(strConditionValue, ","), + pRefTableName, pData,, pAdditional) + + End Function + +End Module diff --git a/SRC/MESWin/SYS4/21670ll/MEStc_SXS/MEStc_ABC.csproj.vspscc b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/MEStc_ABC.csproj.vspscc new file mode 100644 index 0000000..b6d3289 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/MEStc_ABC.csproj.vspscc @@ -0,0 +1,10 @@ +"" +{ +"FILE_VERSION" = "9237" +"ENLISTMENT_CHOICE" = "NEVER" +"PROJECT_FILE_RELATIVE_PATH" = "" +"NUMBER_OF_EXCLUDED_FILES" = "0" +"ORIGINAL_PROJECT_FILE_PATH" = "" +"NUMBER_OF_NESTED_PROJECTS" = "0" +"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER" +} diff --git a/SRC/MESWin/SYS4/21670ll/MEStc_SXS/MEStc_SXS.csproj b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/MEStc_SXS.csproj new file mode 100644 index 0000000..ef7f35c --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/MEStc_SXS.csproj @@ -0,0 +1,134 @@ + + + + Debug + AnyCPU + + + + + {8CC8664F-C718-0888-187B-600F20E362E0} + Library + MEStc_SXS + MEStc_SXS + 512 + Windows + v4.6.2 + SAK + SAK + SAK + SAK + + $(DefaultItemExcludes);$(ProjectDir)**\*.vb + + + true + full + true + true + ..\MES_S_DLL\ + ..\MES_S_DLL\MEStc_SXS.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + 0 + false + + + pdbonly + false + true + true + bin\Release\ + bin\Release\ + + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + 0 + false + + + On + + + Binary + + + Off + + + On + + + + + False + ..\MES_S_DLL\data_access_service.dll + False + + + False + ..\MES_S_DLL\iMESAppSetting.dll + False + + + False + ..\MES_S_DLL\iMESComSubroutine.dll + False + + + False + ..\MES_S_DLL\iMESComXML.dll + False + + + False + ..\MES_S_DLL\iMESConst.dll + False + + + ..\..\MESSeries_2016\MES_S_DLL\iMESException.dll + False + + + False + ..\MES_S_DLL\iMESLog.dll + False + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/MEStc_SXS/MEStc_SXS.sln b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/MEStc_SXS.sln new file mode 100644 index 0000000..22ddfea --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/MEStc_SXS.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.32630.194 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MEStc_SXS", "MEStc_SXS.csproj", "{8CC8664F-C718-0888-187B-600F20E362E0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8CC8664F-C718-0888-187B-600F20E362E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8CC8664F-C718-0888-187B-600F20E362E0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8CC8664F-C718-0888-187B-600F20E362E0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8CC8664F-C718-0888-187B-600F20E362E0}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {20814751-26E2-4F61-9643-BFEDC7384E35} + EndGlobalSection +EndGlobal diff --git a/SRC/MESWin/SYS4/21670ll/MEStc_SXS/NewFolder1/clsENT_21670.cs b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/NewFolder1/clsENT_21670.cs new file mode 100644 index 0000000..f830114 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/NewFolder1/clsENT_21670.cs @@ -0,0 +1,959 @@ +using iMESCore.Settings; +using Microsoft.VisualBasic; +using Microsoft.VisualBasic.CompilerServices; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static iMESCore.Base.iMESComSubroutine; +using static iMESCore.Base.iMESComXML; +using static iMESCore.Base.iMESConst; +using static iMESCore.DataBase.iMESSql; +namespace MEStc_SXS +{ + public class clsENT : IDisposable + { + LoadSubcontractor + /*不使用modXX,不再使用OleDb + * 資料庫相關(建立連線/讀取資料/異動資料),使用data_access_service.dll + * 設定檔相關,使用iMESAppSetting + * Xml相關,使用iMESComXML.dll + * 常數相關,使用iMESConst.dll + * 簡易副程式,使用iMESComSubroutine.dll + */ + + + private AppSettings objSetting = new AppSettings(); + private string strConnectionString; // Connection string + private string strDataBaseType; // DataBase Type:oracle, mysql, access + private string strMQType; // MessageQueue Type:TIBCO, MQSeries, MSMQ + private bool disposed = false; // To detect redundant calls + private string strSQL = ""; + private string strSQLAddField; + private string strSQLAddValue; + + #region --- Initial Object --- + + public clsENT() + { + // Get database type + strDataBaseType = objSetting.GetDataBaseType(); + // Get connection string + strConnectionString = objSetting.GetConnectionString(strDataBaseType); + // Get Message Queue Type + strMQType = objSetting.GetMQType(); + } + + #endregion + + #region --- Property --- + + // //Property-------------------------------------------------------------------------------------------------------------------------------- + public string ConnectionString + { + get + { + return strConnectionString; + } + } + + public string DataBaseType + { + get + { + return strDataBaseType; + } + } + + public string MQType + { + get + { + return strMQType; + } + } + + // 2003/03/22,sammi. + // 因TC可能呼叫KC,在整個Function中,必須要使用同一個Reverse物件,如此在產生AddReverseUpdateContent的資料時,ReverseOrder才不會重覆. + // 若KC再往下呼叫UD,則必須將Reverse物件傳遞予UD. + //public object ReverseObj + //{ + // get + // { + // //return objReverse; + // // ReverseObj = objReverse + // } + //} + + + #endregion + + #region IDisposable Support + private bool disposedValue; // 偵測多餘的呼叫 + + // IDisposable + protected virtual void Dispose(bool disposing) + { + if (!disposedValue) + { + if (disposing) + { + // TODO: 處置 Managed 狀態 (Managed 物件)。 + } + + // TODO: 釋放 Unmanaged 資源 (Unmanaged 物件) 並覆寫下面的 Finalize()。 + // TODO: 將大型欄位設定為 null。 + } + disposedValue = true; + } + + // TODO: 只有當上面的 Dispose(ByVal disposing As Boolean) 有可釋放 Unmanaged 資源的程式碼時,才覆寫 Finalize()。 + // Protected Overrides Sub Finalize() + // ' 請勿變更此程式碼。在上面的 Dispose(ByVal disposing As Boolean) 中輸入清除程式碼。 + // Dispose(False) + // MyBase.Finalize() + // End Sub + + // 由 Visual Basic 新增此程式碼以正確實作可處置的模式。 + public void Dispose() + { + // 請勿變更此程式碼。在以上的 Dispose 置入清除程式碼 (ByVal 視為布林值處置)。 + Dispose(true); + GC.SuppressFinalize(this); + } + #endregion + + #region --- Subcontractor 外包商 --- + + + public string AddSubcontractor(string SubcontractorNo, string SubcontractorName, string Description = defString, string Creator = defString, DateTime CreateDate = default(DateTime), string AdditionalXml = "") + { + string AddSubcontractorRet = default(string); + // 此 Function 將新增一筆資料 + // 傳入值: 各欄位新增值 + // 傳回值: success(成功), fail(失敗) + + if (CreateDate == defDateTime) + CreateDate = DateTime.Now; + + try + { + strSQLAddField = "Insert into tblENTSubcontractor_21670 (SubcontractorNo, SubcontractorName, IssueState"; + strSQLAddValue = " Values ('" + SubcontractorNo + "','" + SubcontractorName + "', 0"; + + if ((Description ?? "") != defString) + { + strSQLAddField += ",Description"; + strSQLAddValue += ",'" + Description + "'"; + } + if ((Creator ?? "") != defString) + { + strSQLAddField += ",Creator"; + strSQLAddValue += ",'" + Creator + "'"; + } + if (CreateDate != defDateTime) + { + strSQLAddField += ",CreateDate"; + strSQLAddValue += ", To_Date('" + Strings.Format(Conversions.ToDate(CreateDate), "yyyy/MM/dd H:mm:ss") + "','YYYY/MM/DD HH24:MI:SS')"; + } + + if (string.IsNullOrEmpty(AdditionalXml)) + { + // 當沒有額外的欄位時,直接給定strSQL + strSQL = strSQLAddField + ")" + strSQLAddValue + ")"; + } + + else + { + // 加上additional的field & value 後傳回 + strSQL = SeparateAddXML_Add(ref strSQLAddField, ref strSQLAddValue, AdditionalXml); + + } + + // //執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL); + + // //Return success + AddSubcontractorRet = "success"; + } + + catch (Exception e1) + { + AddSubcontractorRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.AddSubcontractor: " & e1.Message) + + return AddSubcontractorRet; + + } + + public string EditSubcontractor(string SubcontractorNo, string SubcontractorName = defString, string Description = defString, string AdditionalXml = "", int DataStamp = defInteger, string Reviser = defString, DateTime ReviseDate = default(DateTime)) + { + string EditSubcontractorRet = default(string); + // 此 Function 將修改一筆資料 + // 傳入值: 各欄位修改值 + // 傳回值: success(成功), fail(失敗) + + try + { + // 先給定strSQL一定有的欄位 + strSQL = "Update tblENTSubcontractor_21670 Set "; + + if ((SubcontractorName ?? "") != defString) + { + strSQL += "SubcontractorName = '" + SubcontractorName + "',"; + } + if ((Description ?? "") != defString) + { + strSQL += "Description = '" + Description + "',"; + } + + if (Reviser != defString) + strSQL = strSQL + "Reviser = '" + Reviser + "',"; + + if (ReviseDate != defDateTime) + strSQL = strSQL + "ReviseDate = To_Date('" + Strings.Format(ReviseDate, "yyyy/MM/dd H:mm:ss") + "','YYYY/MM/DD HH24:MI:SS'),"; + + if (DataStamp != defInteger) + strSQL = strSQL + "DataStamp = DataStamp + 1 ,"; + + // 有額外的欄位時再Append進原來的strSQL中 + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的field & value + strSQL += SeparateAddXML_Edit(AdditionalXml); + } + + // 去除strSQL中最後一個 "," + if (Strings.InStr(1, strSQL, ",") != 0) // 表示有要修改的欄位 + { + if (Strings.Right(strSQL, 1) == ",") + { + strSQL = Strings.Mid(strSQL, 1, Strings.Len(strSQL) - 1); + } + + strSQL += " Where SubcontractorNo ='" + SubcontractorNo + "'"; + strSQL = strSQL + " And DataStamp = '" + DataStamp + "'"; + + // 有額外的條件式時再Append進原來的strSQL中 + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL, 1, true); + } + + // //Return success + EditSubcontractorRet = "success"; + } + + catch (Exception e1) + { + EditSubcontractorRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.EditSubcontractor: " & e1.Message) + + return EditSubcontractorRet; + + } + public string DelSubcontractor(string SubcontractorNo, string AdditionalXml = "") + { + string DelSubcontractorRet = default(string); + // 此 Function 將刪除資料 + // 傳入值: 刪除的索引值 + // 傳回值: success(成功), fail(失敗) + var CollectionSQL = new Collection(); + + try + { + // 1. 刪除Contactor + strSQL = "Delete From tblENTSubcontractorCont " + "Where SubcontractorNo='" + SubcontractorNo + "'"; + CollectionSQL.Add(strSQL); + + // 2. 刪除主檔 + strSQL = "Delete From tblENTSubcontractor_21670 " + " Where SubcontractorNo ='" + SubcontractorNo + "'"; + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + CollectionSQL.Add(strSQL); + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery_UPD(Conversions.ToString(DataBaseType), strConnectionString, CollectionSQL); + + // //Return success + DelSubcontractorRet = "success"; + } + + catch (Exception e1) + { + DelSubcontractorRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.DelSubcontractor: " & e1.Message) + + return DelSubcontractorRet; + + } + + public string LoadSubcontractor(string SubcontractorNo = defString, int IssueState = defInteger, string AdditionalXml = "") + { + string LoadSubcontractorRet = default(string); + // 此 Function 將資料以XML方式取出 + // 傳入值: 索引值 + // 傳回值: XML(成功), fail(失敗) + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractor_21670 Where SubcontractorNo Is Not Null"; + + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if (IssueState != defInteger) + { + strSQL += " And IssueState = " + IssueState; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractor_21670", cnnTemp); + + // //Combine return value + LoadSubcontractorRet = CombineXMLReturnValue("loadSubcontractor", "tblENTSubcontractor_21670", "DataSet", FormatXMLSchema(dsENT.GetXmlSchema()), dsENT.GetXml(), ""); + } + + catch (Exception e1) + { + LoadSubcontractorRet = "fail"; + throw; + } // New Exception("kcENT.LoadSubcontractor: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return LoadSubcontractorRet; + + } + + public DataSet ShowSubcontractor(string SubcontractorNo = defString, int IssueState = defInteger, string AdditionalXml = "") + { + DataSet ShowSubcontractorRet = default(DataSet); + // 此 Function 將資料以 Dataset 方式取出 + // 傳入值: 索引值 + // 傳回值: Dataset(成功), Nothing(失敗) + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractor_21670 Where SubcontractorNo Is Not Null"; + + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if (IssueState != defInteger) + { + strSQL += " And IssueState = " + IssueState; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractor_21670", cnnTemp); + + // //Return data + ShowSubcontractorRet = dsENT; + } + + catch (Exception e1) + { + ShowSubcontractorRet = null; + throw; + } // New Exception("kcENT.ShowSubcontractor: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return ShowSubcontractorRet; + + } + + public DataRow GetSubcontractor(string SubcontractorNo = defString, int IssueState = defInteger, string AdditionalXml = "") + { + DataRow GetSubcontractorRet = default(DataRow); + // 此 Function 將資料以 DataRow 方式取出 + // 傳入值: 索引值 + // 傳回值: DataRow(成功), Nothing(失敗) + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractor_21670 Where SubcontractorNo Is Not Null"; + + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if (IssueState != defInteger) + { + strSQL += " And IssueState = " + IssueState; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractor_21670", cnnTemp); + + // //Return data + if (dsENT.Tables[0].Rows.Count > 0) + { + GetSubcontractorRet = dsENT.Tables[0].Rows[0]; + } + else + { + GetSubcontractorRet = dsENT.Tables[0].NewRow(); + } + } + catch (Exception e1) + { + GetSubcontractorRet = null; + throw; + } // New Exception("kcENT.GetSubcontractor: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return GetSubcontractorRet; + + } + public string SetSubcontractorIssueState(string SubcontractorNo, int IssueState, int DataStamp = defInteger, string Reviser = defString, DateTime ReviseDate = default(DateTime)) + { + string SetSubcontractorIssueStateRet = default(string); + // 此 Function 將修改IssueState欄位的值 + // 傳入值: IssueState修改後的值及VendorNo + // 傳回值: success(成功), fail(失敗) + + try + { + // 先給定strSQL一定有的欄位 + strSQL = "Update tblENTSubcontractor_21670 Set IssueState = " + IssueState + ","; + + if (Reviser != defString) + strSQL = strSQL + "Reviser = '" + Reviser + "',"; + + if (ReviseDate != defDateTime) + strSQL = strSQL + "ReviseDate = To_Date('" + Strings.Format(ReviseDate, "yyyy/MM/dd H:mm:ss") + "','YYYY/MM/DD HH24:MI:SS'),"; + + if (DataStamp != defInteger) + strSQL = strSQL + "DataStamp = DataStamp + 1 ,"; + + if (Strings.InStr(1, strSQL, ",") != 0) // 表示有要修改的欄位 + { + if (Strings.Right(strSQL, 1) == ",") + { + strSQL = Strings.Mid(strSQL, 1, Strings.Len(strSQL) - 1); + } + + strSQL = strSQL + " Where SubcontractorNo ='" + SubcontractorNo + "'"; + strSQL = strSQL + " And DataStamp = '" + DataStamp + "'"; + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL, 1, true); + } + + // //Return success + SetSubcontractorIssueStateRet = "success"; + } + + catch (Exception e1) + { + SetSubcontractorIssueStateRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.SetSubcontractorIssueState: " & e1.Message) + + return SetSubcontractorIssueStateRet; + + } + + + public string AddSubcontractorCont(string SubcontractorNo, string ContactorName, string TelNo = defString, string FaxNo = defString, string Title = defString, string Address = defString, string EMail = defString, string Description = defString, string AdditionalXml = "", string Creator = defString, DateTime CreateDate = default(DateTime)) + { + string AddSubcontractorContRet = default(string); + // 此 Function 將新增一筆資料 + // 傳入值: 各欄位新增值 + // 傳回值: success(成功), fail(失敗) + + try + { + strSQLAddField = "Insert into tblENTSubcontractorCont (SubcontractorNo, ContactorName"; + strSQLAddValue = " Values ('" + SubcontractorNo + "','" + ContactorName + "'"; + + if ((TelNo ?? "") != defString) + { + strSQLAddField += ",TelNo"; + strSQLAddValue += ",'" + TelNo + "'"; + } + if ((FaxNo ?? "") != defString) + { + strSQLAddField += ",FaxNo"; + strSQLAddValue += ",'" + FaxNo + "'"; + } + if ((Title ?? "") != defString) + { + strSQLAddField += ",Title"; + strSQLAddValue += ",'" + Title + "'"; + } + if ((Address ?? "") != defString) + { + strSQLAddField += ",Address"; + strSQLAddValue += ",'" + Address + "'"; + } + if ((EMail ?? "") != defString) + { + strSQLAddField += ",EMail"; + strSQLAddValue += ",'" + EMail + "'"; + } + if ((Description ?? "") != defString) + { + strSQLAddField += ",Description"; + strSQLAddValue += ",'" + Description + "'"; + } + if (Creator != defString) + { + strSQLAddField = strSQLAddField + ",Creator"; + strSQLAddValue = strSQLAddValue + ",'" + Creator + "'"; + } + if (CreateDate != defDateTime) + { + strSQLAddField = strSQLAddField + ",CreateDate"; + strSQLAddValue = strSQLAddValue + ", To_Date('" + Strings.Format(CreateDate, "yyyy/MM/dd HH:mm:ss") + "','YYYY/MM/DD HH24:MI:SS')"; + } + + if (string.IsNullOrEmpty(AdditionalXml)) + { + // 當沒有額外的欄位時,直接給定strSQL + strSQL = strSQLAddField + ")" + strSQLAddValue + ")"; + } + + else + { + // 加上additional的field & value 後傳回 + strSQL = SeparateAddXML_Add(ref strSQLAddField, ref strSQLAddValue, AdditionalXml); + + } + + // //執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL); + + // //Return success + AddSubcontractorContRet = "success"; + } + + catch (Exception e1) + { + AddSubcontractorContRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.AddSubcontractorCont: " & e1.Message) + + return AddSubcontractorContRet; + + } + + + public string EditSubcontractorCont(string SubcontractorNo, string ContactorName, string TelNo = defString, string FaxNo = defString, string Title = defString, string Address = defString, string EMail = defString, string Description = defString, string AdditionalXml = "", int DataStamp = defInteger, string Reviser = defString, DateTime ReviseDate = default(DateTime)) + { + string EditSubcontractorContRet = default(string); + + // 此 Function 將修改一筆資料 + // 傳入值: 各欄位修改值 + // 傳回值: success(成功), fail(失敗) + + try + { + // 先給定strSQL一定有的欄位 + strSQL = "Update tblENTSubcontractorCont Set "; + + if ((TelNo ?? "") != defString) + { + strSQL += "TelNo = '" + TelNo + "',"; + } + if ((FaxNo ?? "") != defString) + { + strSQL += "FaxNo = '" + FaxNo + "',"; + } + if ((Title ?? "") != defString) + { + strSQL += "Title = '" + Title + "',"; + } + if ((Address ?? "") != defString) + { + strSQL += "Address = '" + Address + "',"; + } + if ((EMail ?? "") != defString) + { + strSQL += "EMail = '" + EMail + "',"; + } + if ((Description ?? "") != defString) + { + strSQL += "Description = '" + Description + "',"; + } + + if (Reviser != defString) + strSQL = strSQL + "Reviser = '" + Reviser + "',"; + + if (ReviseDate != defDateTime) + strSQL = strSQL + "ReviseDate = To_Date('" + Strings.Format(ReviseDate, "yyyy/MM/dd H:mm:ss") + "','YYYY/MM/DD HH24:MI:SS'),"; + + if (DataStamp != defInteger) + strSQL = strSQL + "DataStamp = DataStamp + 1 ,"; + + // 有額外的欄位時再Append進原來的strSQL中 + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的field & value + strSQL += SeparateAddXML_Edit(AdditionalXml); + } + + // 去除strSQL中最後一個 "," + if (Strings.InStr(1, strSQL, ",") != 0) // 表示有要修改的欄位 + { + if (Strings.Right(strSQL, 1) == ",") + { + strSQL = Strings.Mid(strSQL, 1, Strings.Len(strSQL) - 1); + } + + strSQL += " Where SubcontractorNo = '" + SubcontractorNo + "'" + " And ContactorName ='" + ContactorName + "'"; + strSQL = strSQL + " And DataStamp = '" + DataStamp + "'"; + + // 有額外的條件式時再Append進原來的strSQL中 + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL, 1, true); + } + + // //Return success + EditSubcontractorContRet = "success"; + } + + catch (Exception e1) + { + EditSubcontractorContRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.EditSubcontractorCont: " & e1.Message) + + return EditSubcontractorContRet; + + } + + public string DelSubcontractorCont(string SubcontractorNo, string ContactorName = defString, string AdditionalXml = "") + { + string DelSubcontractorContRet = default(string); + // 此 Function 將刪除資料 + // 傳入值: 刪除的索引值 + // 傳回值: success(成功), fail(失敗) + + try + { + strSQL = "Delete From tblENTSubcontractorCont " + " Where SubcontractorNo='" + SubcontractorNo + "'"; + + if ((ContactorName ?? "") != defString) + { + strSQL += " And ContactorName = '" + ContactorName + "'"; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL); + + // //Return success + DelSubcontractorContRet = "success"; + } + + catch (Exception e1) + { + DelSubcontractorContRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.DelSubcontractorCont: " & e1.Message) + + return DelSubcontractorContRet; + + } + + public string LoadSubcontractorCont(string SubcontractorNo = defString, string ContactorName = defString, string AdditionalXml = "") + { + string LoadSubcontractorContRet = default(string); + // 此 Function 將資料以XML方式取出 + // 傳入值: 索引值 + // 傳回值: XML(成功), fail(失敗) + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractorCont Where SubcontractorNo Is Not Null"; + + // 有傳入SubcontractorNo表示只取該SubcontractorNo之資料 + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if ((ContactorName ?? "") != defString) + { + strSQL += " And ContactorName = '" + ContactorName + "'"; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractorCont", cnnTemp); + + // //Combine return value + LoadSubcontractorContRet = CombineXMLReturnValue("loadSubcontractorcont", "tblENTSubcontractorCont", "DataSet", FormatXMLSchema(dsENT.GetXmlSchema()), dsENT.GetXml(), ""); + } + + catch (Exception e1) + { + LoadSubcontractorContRet = "fail"; + throw; + } // New Exception("kcENT.LoadSubcontractorCont: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return LoadSubcontractorContRet; + + } + + public DataSet ShowSubcontractorCont(string SubcontractorNo = defString, string ContactorName = defString, string AdditionalXml = "") + { + DataSet ShowSubcontractorContRet = default(DataSet); + // 此 Function 將資料以 Dataset 方式取出 + // 傳入值: 索引值 + // 傳回值: Dataset(成功), Nothing(失敗) + + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractorCont Where SubcontractorNo Is Not Null"; + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if ((ContactorName ?? "") != defString) + { + strSQL += " And ContactorName = '" + ContactorName + "'"; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractorCont", cnnTemp); + + // //Return data + ShowSubcontractorContRet = dsENT; + } + + catch (Exception e1) + { + ShowSubcontractorContRet = null; + throw; + } // New Exception("kcENT.ShowSubcontractorCont: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return ShowSubcontractorContRet; + + } + + public DataRow GetSubcontractorCont(string SubcontractorNo = defString, string ContactorName = defString, string AdditionalXml = "") + { + DataRow GetSubcontractorContRet = default(DataRow); + // 此 Function 將資料以 DataRow 方式取出 + // 傳入值: 索引值 + // 傳回值: DataRow(成功), Nothing(失敗) + + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractorCont Where SubcontractorNo Is Not Null"; + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if ((ContactorName ?? "") != defString) + { + strSQL += " And ContactorName = '" + ContactorName + "'"; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractorCont", cnnTemp); + + // //Return data + if (dsENT.Tables[0].Rows.Count > 0) + { + GetSubcontractorContRet = dsENT.Tables[0].Rows[0]; + } + else + { + GetSubcontractorContRet = dsENT.Tables[0].NewRow(); + } + } + catch (Exception e1) + { + GetSubcontractorContRet = null; + throw; + } // New Exception("kcENT.GetSubcontractorCont: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return GetSubcontractorContRet; + + } + + + + #endregion + } +} diff --git a/SRC/MESWin/SYS4/21670ll/MEStc_SXS/Properties/AssemblyInfo.cs b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..e2bf75b --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/Properties/AssemblyInfo.cs @@ -0,0 +1,32 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 組件的一般資訊是由下列的屬性集控制。 +// 變更這些屬性的值即可修改組件的相關 +// 資訊。 +[assembly: AssemblyTitle("MEStc_ABC.Properties")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("iMES Technology Inc.")] +[assembly: AssemblyProduct("MESSeries 6")] +[assembly: AssemblyCopyright("Copyright iMES Technology Inc.")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 將 ComVisible 設定為 false 會使得這個組件中的類型 +// 對 COM 元件而言為不可見。如果您需要從 COM 存取這個組件中 +// 的類型,請在該類型上將 ComVisible 屬性設定為 true。 +[assembly: ComVisible(false)] + +// 下列 GUID 為專案公開 (Expose) 至 COM 時所要使用的 typelib ID +[assembly: Guid("00eb00ee-1246-48cf-a0bf-f5203de255f1")] + +// 組件的版本資訊由下列四個值所組成: +// +// 主要版本 +// 次要版本 +// 組建編號 +// 修訂編號 +// +[assembly: AssemblyVersion("6.0.0.0")] diff --git a/SRC/MESWin/SYS4/21670ll/MEStc_SXS/Properties/BuildIncrementVersionInfo.cs b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/Properties/BuildIncrementVersionInfo.cs new file mode 100644 index 0000000..8c4e437 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/Properties/BuildIncrementVersionInfo.cs @@ -0,0 +1 @@ +[assembly: System.Reflection.AssemblyFileVersion("6.0.5.40117")] diff --git a/SRC/MESWin/SYS4/21670ll/MEStc_SXS/clsENT_21670.cs b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/clsENT_21670.cs new file mode 100644 index 0000000..c10aa6e --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/clsENT_21670.cs @@ -0,0 +1,959 @@ +using iMESCore.Settings; +using Microsoft.VisualBasic; +using Microsoft.VisualBasic.CompilerServices; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static iMESCore.Base.iMESComSubroutine; +using static iMESCore.Base.iMESComXML; +using static iMESCore.Base.iMESConst; +using static iMESCore.DataBase.iMESSql; +namespace MEStc_SXS +{ + public class clsENT : IDisposable + { + LoadSubcontractor + /*不使用modXX,不再使用OleDb + * 資料庫相關(建立連線/讀取資料/異動資料),使用data_access_service.dll + * 設定檔相關,使用iMESAppSetting + * Xml相關,使用iMESComXML.dll + * 常數相關,使用iMESConst.dll + * 簡易副程式,使用iMESComSubroutine.dll + */ + + + private AppSettings objSetting = new AppSettings(); + private string strConnectionString; // Connection string + private string strDataBaseType; // DataBase Type:oracle, mysql, access + private string strMQType; // MessageQueue Type:TIBCO, MQSeries, MSMQ + private bool disposed = false; // To detect redundant calls + private string strSQL = ""; + private string strSQLAddField; + private string strSQLAddValue; + + #region --- Initial Object --- + + public clsENT() + { + // Get database type + strDataBaseType = objSetting.GetDataBaseType(); + // Get connection string + strConnectionString = objSetting.GetConnectionString(strDataBaseType); + // Get Message Queue Type + strMQType = objSetting.GetMQType(); + } + + #endregion + + #region --- Property --- + + // //Property-------------------------------------------------------------------------------------------------------------------------------- + public string ConnectionString + { + get + { + return strConnectionString; + } + } + + public string DataBaseType + { + get + { + return strDataBaseType; + } + } + + public string MQType + { + get + { + return strMQType; + } + } + + // 2003/03/22,sammi. + // 因TC可能呼叫KC,在整個Function中,必須要使用同一個Reverse物件,如此在產生AddReverseUpdateContent的資料時,ReverseOrder才不會重覆. + // 若KC再往下呼叫UD,則必須將Reverse物件傳遞予UD. + //public object ReverseObj + //{ + // get + // { + // //return objReverse; + // // ReverseObj = objReverse + // } + //} + + + #endregion + + #region IDisposable Support + private bool disposedValue; // 偵測多餘的呼叫 + + // IDisposable + protected virtual void Dispose(bool disposing) + { + if (!disposedValue) + { + if (disposing) + { + // TODO: 處置 Managed 狀態 (Managed 物件)。 + } + + // TODO: 釋放 Unmanaged 資源 (Unmanaged 物件) 並覆寫下面的 Finalize()。 + // TODO: 將大型欄位設定為 null。 + } + disposedValue = true; + } + + // TODO: 只有當上面的 Dispose(ByVal disposing As Boolean) 有可釋放 Unmanaged 資源的程式碼時,才覆寫 Finalize()。 + // Protected Overrides Sub Finalize() + // ' 請勿變更此程式碼。在上面的 Dispose(ByVal disposing As Boolean) 中輸入清除程式碼。 + // Dispose(False) + // MyBase.Finalize() + // End Sub + + // 由 Visual Basic 新增此程式碼以正確實作可處置的模式。 + public void Dispose() + { + // 請勿變更此程式碼。在以上的 Dispose 置入清除程式碼 (ByVal 視為布林值處置)。 + Dispose(true); + GC.SuppressFinalize(this); + } + #endregion + + #region --- Subcontractor 外包商 --- + + + public string AddSubcontractor(string SubcontractorNo, string SubcontractorName, string Description = defString, string Creator = defString, DateTime CreateDate = default(DateTime), string AdditionalXml = "") + { + string AddSubcontractorRet = default(string); + // 此 Function 將新增一筆資料 + // 傳入值: 各欄位新增值 + // 傳回值: success(成功), fail(失敗) + + if (CreateDate == defDateTime) + CreateDate = DateTime.Now; + + try + { + strSQLAddField = "Insert into tblENTSubcontractor (SubcontractorNo, SubcontractorName, IssueState"; + strSQLAddValue = " Values ('" + SubcontractorNo + "','" + SubcontractorName + "', 0"; + + if ((Description ?? "") != defString) + { + strSQLAddField += ",Description"; + strSQLAddValue += ",'" + Description + "'"; + } + if ((Creator ?? "") != defString) + { + strSQLAddField += ",Creator"; + strSQLAddValue += ",'" + Creator + "'"; + } + if (CreateDate != defDateTime) + { + strSQLAddField += ",CreateDate"; + strSQLAddValue += ", To_Date('" + Strings.Format(Conversions.ToDate(CreateDate), "yyyy/MM/dd H:mm:ss") + "','YYYY/MM/DD HH24:MI:SS')"; + } + + if (string.IsNullOrEmpty(AdditionalXml)) + { + // 當沒有額外的欄位時,直接給定strSQL + strSQL = strSQLAddField + ")" + strSQLAddValue + ")"; + } + + else + { + // 加上additional的field & value 後傳回 + strSQL = SeparateAddXML_Add(ref strSQLAddField, ref strSQLAddValue, AdditionalXml); + + } + + // //執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL); + + // //Return success + AddSubcontractorRet = "success"; + } + + catch (Exception e1) + { + AddSubcontractorRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.AddSubcontractor: " & e1.Message) + + return AddSubcontractorRet; + + } + + public string EditSubcontractor(string SubcontractorNo, string SubcontractorName = defString, string Description = defString, string AdditionalXml = "", int DataStamp = defInteger, string Reviser = defString, DateTime ReviseDate = default(DateTime)) + { + string EditSubcontractorRet = default(string); + // 此 Function 將修改一筆資料 + // 傳入值: 各欄位修改值 + // 傳回值: success(成功), fail(失敗) + + try + { + // 先給定strSQL一定有的欄位 + strSQL = "Update tblENTSubcontractor Set "; + + if ((SubcontractorName ?? "") != defString) + { + strSQL += "SubcontractorName = '" + SubcontractorName + "',"; + } + if ((Description ?? "") != defString) + { + strSQL += "Description = '" + Description + "',"; + } + + if (Reviser != defString) + strSQL = strSQL + "Reviser = '" + Reviser + "',"; + + if (ReviseDate != defDateTime) + strSQL = strSQL + "ReviseDate = To_Date('" + Strings.Format(ReviseDate, "yyyy/MM/dd H:mm:ss") + "','YYYY/MM/DD HH24:MI:SS'),"; + + if (DataStamp != defInteger) + strSQL = strSQL + "DataStamp = DataStamp + 1 ,"; + + // 有額外的欄位時再Append進原來的strSQL中 + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的field & value + strSQL += SeparateAddXML_Edit(AdditionalXml); + } + + // 去除strSQL中最後一個 "," + if (Strings.InStr(1, strSQL, ",") != 0) // 表示有要修改的欄位 + { + if (Strings.Right(strSQL, 1) == ",") + { + strSQL = Strings.Mid(strSQL, 1, Strings.Len(strSQL) - 1); + } + + strSQL += " Where SubcontractorNo ='" + SubcontractorNo + "'"; + strSQL = strSQL + " And DataStamp = '" + DataStamp + "'"; + + // 有額外的條件式時再Append進原來的strSQL中 + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL, 1, true); + } + + // //Return success + EditSubcontractorRet = "success"; + } + + catch (Exception e1) + { + EditSubcontractorRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.EditSubcontractor: " & e1.Message) + + return EditSubcontractorRet; + + } + public string DelSubcontractor(string SubcontractorNo, string AdditionalXml = "") + { + string DelSubcontractorRet = default(string); + // 此 Function 將刪除資料 + // 傳入值: 刪除的索引值 + // 傳回值: success(成功), fail(失敗) + var CollectionSQL = new Collection(); + + try + { + // 1. 刪除Contactor + strSQL = "Delete From tblENTSubcontractorCont " + "Where SubcontractorNo='" + SubcontractorNo + "'"; + CollectionSQL.Add(strSQL); + + // 2. 刪除主檔 + strSQL = "Delete From tblENTSubcontractor " + " Where SubcontractorNo ='" + SubcontractorNo + "'"; + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + CollectionSQL.Add(strSQL); + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery_UPD(Conversions.ToString(DataBaseType), strConnectionString, CollectionSQL); + + // //Return success + DelSubcontractorRet = "success"; + } + + catch (Exception e1) + { + DelSubcontractorRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.DelSubcontractor: " & e1.Message) + + return DelSubcontractorRet; + + } + + public string LoadSubcontractor(string SubcontractorNo = defString, int IssueState = defInteger, string AdditionalXml = "") + { + string LoadSubcontractorRet = default(string); + // 此 Function 將資料以XML方式取出 + // 傳入值: 索引值 + // 傳回值: XML(成功), fail(失敗) + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractor_21670 Where SubcontractorNo Is Not Null"; + + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if (IssueState != defInteger) + { + strSQL += " And IssueState = " + IssueState; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractor", cnnTemp); + + // //Combine return value + LoadSubcontractorRet = CombineXMLReturnValue("loadSubcontractor", "tblENTSubcontractor", "DataSet", FormatXMLSchema(dsENT.GetXmlSchema()), dsENT.GetXml(), ""); + } + + catch (Exception e1) + { + LoadSubcontractorRet = "fail"; + throw; + } // New Exception("kcENT.LoadSubcontractor: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return LoadSubcontractorRet; + + } + + public DataSet ShowSubcontractor(string SubcontractorNo = defString, int IssueState = defInteger, string AdditionalXml = "") + { + DataSet ShowSubcontractorRet = default(DataSet); + // 此 Function 將資料以 Dataset 方式取出 + // 傳入值: 索引值 + // 傳回值: Dataset(成功), Nothing(失敗) + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractor Where SubcontractorNo Is Not Null"; + + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if (IssueState != defInteger) + { + strSQL += " And IssueState = " + IssueState; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractor", cnnTemp); + + // //Return data + ShowSubcontractorRet = dsENT; + } + + catch (Exception e1) + { + ShowSubcontractorRet = null; + throw; + } // New Exception("kcENT.ShowSubcontractor: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return ShowSubcontractorRet; + + } + + public DataRow GetSubcontractor(string SubcontractorNo = defString, int IssueState = defInteger, string AdditionalXml = "") + { + DataRow GetSubcontractorRet = default(DataRow); + // 此 Function 將資料以 DataRow 方式取出 + // 傳入值: 索引值 + // 傳回值: DataRow(成功), Nothing(失敗) + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractor Where SubcontractorNo Is Not Null"; + + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if (IssueState != defInteger) + { + strSQL += " And IssueState = " + IssueState; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractor", cnnTemp); + + // //Return data + if (dsENT.Tables[0].Rows.Count > 0) + { + GetSubcontractorRet = dsENT.Tables[0].Rows[0]; + } + else + { + GetSubcontractorRet = dsENT.Tables[0].NewRow(); + } + } + catch (Exception e1) + { + GetSubcontractorRet = null; + throw; + } // New Exception("kcENT.GetSubcontractor: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return GetSubcontractorRet; + + } + public string SetSubcontractorIssueState(string SubcontractorNo, int IssueState, int DataStamp = defInteger, string Reviser = defString, DateTime ReviseDate = default(DateTime)) + { + string SetSubcontractorIssueStateRet = default(string); + // 此 Function 將修改IssueState欄位的值 + // 傳入值: IssueState修改後的值及VendorNo + // 傳回值: success(成功), fail(失敗) + + try + { + // 先給定strSQL一定有的欄位 + strSQL = "Update tblENTSubcontractor Set IssueState = " + IssueState + ","; + + if (Reviser != defString) + strSQL = strSQL + "Reviser = '" + Reviser + "',"; + + if (ReviseDate != defDateTime) + strSQL = strSQL + "ReviseDate = To_Date('" + Strings.Format(ReviseDate, "yyyy/MM/dd H:mm:ss") + "','YYYY/MM/DD HH24:MI:SS'),"; + + if (DataStamp != defInteger) + strSQL = strSQL + "DataStamp = DataStamp + 1 ,"; + + if (Strings.InStr(1, strSQL, ",") != 0) // 表示有要修改的欄位 + { + if (Strings.Right(strSQL, 1) == ",") + { + strSQL = Strings.Mid(strSQL, 1, Strings.Len(strSQL) - 1); + } + + strSQL = strSQL + " Where SubcontractorNo ='" + SubcontractorNo + "'"; + strSQL = strSQL + " And DataStamp = '" + DataStamp + "'"; + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL, 1, true); + } + + // //Return success + SetSubcontractorIssueStateRet = "success"; + } + + catch (Exception e1) + { + SetSubcontractorIssueStateRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.SetSubcontractorIssueState: " & e1.Message) + + return SetSubcontractorIssueStateRet; + + } + + + public string AddSubcontractorCont(string SubcontractorNo, string ContactorName, string TelNo = defString, string FaxNo = defString, string Title = defString, string Address = defString, string EMail = defString, string Description = defString, string AdditionalXml = "", string Creator = defString, DateTime CreateDate = default(DateTime)) + { + string AddSubcontractorContRet = default(string); + // 此 Function 將新增一筆資料 + // 傳入值: 各欄位新增值 + // 傳回值: success(成功), fail(失敗) + + try + { + strSQLAddField = "Insert into tblENTSubcontractorCont (SubcontractorNo, ContactorName"; + strSQLAddValue = " Values ('" + SubcontractorNo + "','" + ContactorName + "'"; + + if ((TelNo ?? "") != defString) + { + strSQLAddField += ",TelNo"; + strSQLAddValue += ",'" + TelNo + "'"; + } + if ((FaxNo ?? "") != defString) + { + strSQLAddField += ",FaxNo"; + strSQLAddValue += ",'" + FaxNo + "'"; + } + if ((Title ?? "") != defString) + { + strSQLAddField += ",Title"; + strSQLAddValue += ",'" + Title + "'"; + } + if ((Address ?? "") != defString) + { + strSQLAddField += ",Address"; + strSQLAddValue += ",'" + Address + "'"; + } + if ((EMail ?? "") != defString) + { + strSQLAddField += ",EMail"; + strSQLAddValue += ",'" + EMail + "'"; + } + if ((Description ?? "") != defString) + { + strSQLAddField += ",Description"; + strSQLAddValue += ",'" + Description + "'"; + } + if (Creator != defString) + { + strSQLAddField = strSQLAddField + ",Creator"; + strSQLAddValue = strSQLAddValue + ",'" + Creator + "'"; + } + if (CreateDate != defDateTime) + { + strSQLAddField = strSQLAddField + ",CreateDate"; + strSQLAddValue = strSQLAddValue + ", To_Date('" + Strings.Format(CreateDate, "yyyy/MM/dd HH:mm:ss") + "','YYYY/MM/DD HH24:MI:SS')"; + } + + if (string.IsNullOrEmpty(AdditionalXml)) + { + // 當沒有額外的欄位時,直接給定strSQL + strSQL = strSQLAddField + ")" + strSQLAddValue + ")"; + } + + else + { + // 加上additional的field & value 後傳回 + strSQL = SeparateAddXML_Add(ref strSQLAddField, ref strSQLAddValue, AdditionalXml); + + } + + // //執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL); + + // //Return success + AddSubcontractorContRet = "success"; + } + + catch (Exception e1) + { + AddSubcontractorContRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.AddSubcontractorCont: " & e1.Message) + + return AddSubcontractorContRet; + + } + + + public string EditSubcontractorCont(string SubcontractorNo, string ContactorName, string TelNo = defString, string FaxNo = defString, string Title = defString, string Address = defString, string EMail = defString, string Description = defString, string AdditionalXml = "", int DataStamp = defInteger, string Reviser = defString, DateTime ReviseDate = default(DateTime)) + { + string EditSubcontractorContRet = default(string); + + // 此 Function 將修改一筆資料 + // 傳入值: 各欄位修改值 + // 傳回值: success(成功), fail(失敗) + + try + { + // 先給定strSQL一定有的欄位 + strSQL = "Update tblENTSubcontractorCont Set "; + + if ((TelNo ?? "") != defString) + { + strSQL += "TelNo = '" + TelNo + "',"; + } + if ((FaxNo ?? "") != defString) + { + strSQL += "FaxNo = '" + FaxNo + "',"; + } + if ((Title ?? "") != defString) + { + strSQL += "Title = '" + Title + "',"; + } + if ((Address ?? "") != defString) + { + strSQL += "Address = '" + Address + "',"; + } + if ((EMail ?? "") != defString) + { + strSQL += "EMail = '" + EMail + "',"; + } + if ((Description ?? "") != defString) + { + strSQL += "Description = '" + Description + "',"; + } + + if (Reviser != defString) + strSQL = strSQL + "Reviser = '" + Reviser + "',"; + + if (ReviseDate != defDateTime) + strSQL = strSQL + "ReviseDate = To_Date('" + Strings.Format(ReviseDate, "yyyy/MM/dd H:mm:ss") + "','YYYY/MM/DD HH24:MI:SS'),"; + + if (DataStamp != defInteger) + strSQL = strSQL + "DataStamp = DataStamp + 1 ,"; + + // 有額外的欄位時再Append進原來的strSQL中 + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的field & value + strSQL += SeparateAddXML_Edit(AdditionalXml); + } + + // 去除strSQL中最後一個 "," + if (Strings.InStr(1, strSQL, ",") != 0) // 表示有要修改的欄位 + { + if (Strings.Right(strSQL, 1) == ",") + { + strSQL = Strings.Mid(strSQL, 1, Strings.Len(strSQL) - 1); + } + + strSQL += " Where SubcontractorNo = '" + SubcontractorNo + "'" + " And ContactorName ='" + ContactorName + "'"; + strSQL = strSQL + " And DataStamp = '" + DataStamp + "'"; + + // 有額外的條件式時再Append進原來的strSQL中 + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL, 1, true); + } + + // //Return success + EditSubcontractorContRet = "success"; + } + + catch (Exception e1) + { + EditSubcontractorContRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.EditSubcontractorCont: " & e1.Message) + + return EditSubcontractorContRet; + + } + + public string DelSubcontractorCont(string SubcontractorNo, string ContactorName = defString, string AdditionalXml = "") + { + string DelSubcontractorContRet = default(string); + // 此 Function 將刪除資料 + // 傳入值: 刪除的索引值 + // 傳回值: success(成功), fail(失敗) + + try + { + strSQL = "Delete From tblENTSubcontractorCont " + " Where SubcontractorNo='" + SubcontractorNo + "'"; + + if ((ContactorName ?? "") != defString) + { + strSQL += " And ContactorName = '" + ContactorName + "'"; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL); + + // //Return success + DelSubcontractorContRet = "success"; + } + + catch (Exception e1) + { + DelSubcontractorContRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.DelSubcontractorCont: " & e1.Message) + + return DelSubcontractorContRet; + + } + + public string LoadSubcontractorCont(string SubcontractorNo = defString, string ContactorName = defString, string AdditionalXml = "") + { + string LoadSubcontractorContRet = default(string); + // 此 Function 將資料以XML方式取出 + // 傳入值: 索引值 + // 傳回值: XML(成功), fail(失敗) + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractorCont Where SubcontractorNo Is Not Null"; + + // 有傳入SubcontractorNo表示只取該SubcontractorNo之資料 + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if ((ContactorName ?? "") != defString) + { + strSQL += " And ContactorName = '" + ContactorName + "'"; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractorCont", cnnTemp); + + // //Combine return value + LoadSubcontractorContRet = CombineXMLReturnValue("loadSubcontractorcont", "tblENTSubcontractorCont", "DataSet", FormatXMLSchema(dsENT.GetXmlSchema()), dsENT.GetXml(), ""); + } + + catch (Exception e1) + { + LoadSubcontractorContRet = "fail"; + throw; + } // New Exception("kcENT.LoadSubcontractorCont: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return LoadSubcontractorContRet; + + } + + public DataSet ShowSubcontractorCont(string SubcontractorNo = defString, string ContactorName = defString, string AdditionalXml = "") + { + DataSet ShowSubcontractorContRet = default(DataSet); + // 此 Function 將資料以 Dataset 方式取出 + // 傳入值: 索引值 + // 傳回值: Dataset(成功), Nothing(失敗) + + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractorCont Where SubcontractorNo Is Not Null"; + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if ((ContactorName ?? "") != defString) + { + strSQL += " And ContactorName = '" + ContactorName + "'"; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractorCont", cnnTemp); + + // //Return data + ShowSubcontractorContRet = dsENT; + } + + catch (Exception e1) + { + ShowSubcontractorContRet = null; + throw; + } // New Exception("kcENT.ShowSubcontractorCont: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return ShowSubcontractorContRet; + + } + + public DataRow GetSubcontractorCont(string SubcontractorNo = defString, string ContactorName = defString, string AdditionalXml = "") + { + DataRow GetSubcontractorContRet = default(DataRow); + // 此 Function 將資料以 DataRow 方式取出 + // 傳入值: 索引值 + // 傳回值: DataRow(成功), Nothing(失敗) + + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractorCont Where SubcontractorNo Is Not Null"; + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if ((ContactorName ?? "") != defString) + { + strSQL += " And ContactorName = '" + ContactorName + "'"; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractorCont", cnnTemp); + + // //Return data + if (dsENT.Tables[0].Rows.Count > 0) + { + GetSubcontractorContRet = dsENT.Tables[0].Rows[0]; + } + else + { + GetSubcontractorContRet = dsENT.Tables[0].NewRow(); + } + } + catch (Exception e1) + { + GetSubcontractorContRet = null; + throw; + } // New Exception("kcENT.GetSubcontractorCont: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return GetSubcontractorContRet; + + } + + + + #endregion + } +} diff --git a/SRC/MESWin/SYS4/21670ll/MEStc_SXS/tcENT/clsENT.cs b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/tcENT/clsENT.cs new file mode 100644 index 0000000..2af6c9d --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/tcENT/clsENT.cs @@ -0,0 +1,958 @@ +using iMESCore.Settings; +using Microsoft.VisualBasic; +using Microsoft.VisualBasic.CompilerServices; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static iMESCore.Base.iMESComSubroutine; +using static iMESCore.Base.iMESComXML; +using static iMESCore.Base.iMESConst; +using static iMESCore.DataBase.iMESSql; +namespace MEStc_SXS +{ + public class clsENT : IDisposable + { + /*不使用modXX,不再使用OleDb + * 資料庫相關(建立連線/讀取資料/異動資料),使用data_access_service.dll + * 設定檔相關,使用iMESAppSetting + * Xml相關,使用iMESComXML.dll + * 常數相關,使用iMESConst.dll + * 簡易副程式,使用iMESComSubroutine.dll + */ + + + private AppSettings objSetting = new AppSettings(); + private string strConnectionString; // Connection string + private string strDataBaseType; // DataBase Type:oracle, mysql, access + private string strMQType; // MessageQueue Type:TIBCO, MQSeries, MSMQ + private bool disposed = false; // To detect redundant calls + private string strSQL = ""; + private string strSQLAddField; + private string strSQLAddValue; + + #region --- Initial Object --- + + public clsENT() + { + // Get database type + strDataBaseType = objSetting.GetDataBaseType(); + // Get connection string + strConnectionString = objSetting.GetConnectionString(strDataBaseType); + // Get Message Queue Type + strMQType = objSetting.GetMQType(); + } + + #endregion + + #region --- Property --- + + // //Property-------------------------------------------------------------------------------------------------------------------------------- + public string ConnectionString + { + get + { + return strConnectionString; + } + } + + public string DataBaseType + { + get + { + return strDataBaseType; + } + } + + public string MQType + { + get + { + return strMQType; + } + } + + // 2003/03/22,sammi. + // 因TC可能呼叫KC,在整個Function中,必須要使用同一個Reverse物件,如此在產生AddReverseUpdateContent的資料時,ReverseOrder才不會重覆. + // 若KC再往下呼叫UD,則必須將Reverse物件傳遞予UD. + //public object ReverseObj + //{ + // get + // { + // //return objReverse; + // // ReverseObj = objReverse + // } + //} + + + #endregion + + #region IDisposable Support + private bool disposedValue; // 偵測多餘的呼叫 + + // IDisposable + protected virtual void Dispose(bool disposing) + { + if (!disposedValue) + { + if (disposing) + { + // TODO: 處置 Managed 狀態 (Managed 物件)。 + } + + // TODO: 釋放 Unmanaged 資源 (Unmanaged 物件) 並覆寫下面的 Finalize()。 + // TODO: 將大型欄位設定為 null。 + } + disposedValue = true; + } + + // TODO: 只有當上面的 Dispose(ByVal disposing As Boolean) 有可釋放 Unmanaged 資源的程式碼時,才覆寫 Finalize()。 + // Protected Overrides Sub Finalize() + // ' 請勿變更此程式碼。在上面的 Dispose(ByVal disposing As Boolean) 中輸入清除程式碼。 + // Dispose(False) + // MyBase.Finalize() + // End Sub + + // 由 Visual Basic 新增此程式碼以正確實作可處置的模式。 + public void Dispose() + { + // 請勿變更此程式碼。在以上的 Dispose 置入清除程式碼 (ByVal 視為布林值處置)。 + Dispose(true); + GC.SuppressFinalize(this); + } + #endregion + + #region --- Subcontractor 外包商 --- + + + public string AddSubcontractor(string SubcontractorNo, string SubcontractorName, string Description = defString, string Creator = defString, DateTime CreateDate = default(DateTime), string AdditionalXml = "") + { + string AddSubcontractorRet = default(string); + // 此 Function 將新增一筆資料 + // 傳入值: 各欄位新增值 + // 傳回值: success(成功), fail(失敗) + + if (CreateDate == defDateTime) + CreateDate = DateTime.Now; + + try + { + strSQLAddField = "Insert into tblENTSubcontractor (SubcontractorNo, SubcontractorName, IssueState"; + strSQLAddValue = " Values ('" + SubcontractorNo + "','" + SubcontractorName + "', 0"; + + if ((Description ?? "") != defString) + { + strSQLAddField += ",Description"; + strSQLAddValue += ",'" + Description + "'"; + } + if ((Creator ?? "") != defString) + { + strSQLAddField += ",Creator"; + strSQLAddValue += ",'" + Creator + "'"; + } + if (CreateDate != defDateTime) + { + strSQLAddField += ",CreateDate"; + strSQLAddValue += ", To_Date('" + Strings.Format(Conversions.ToDate(CreateDate), "yyyy/MM/dd H:mm:ss") + "','YYYY/MM/DD HH24:MI:SS')"; + } + + if (string.IsNullOrEmpty(AdditionalXml)) + { + // 當沒有額外的欄位時,直接給定strSQL + strSQL = strSQLAddField + ")" + strSQLAddValue + ")"; + } + + else + { + // 加上additional的field & value 後傳回 + strSQL = SeparateAddXML_Add(ref strSQLAddField, ref strSQLAddValue, AdditionalXml); + + } + + // //執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL); + + // //Return success + AddSubcontractorRet = "success"; + } + + catch (Exception e1) + { + AddSubcontractorRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.AddSubcontractor: " & e1.Message) + + return AddSubcontractorRet; + + } + + public string EditSubcontractor(string SubcontractorNo, string SubcontractorName = defString, string Description = defString, string AdditionalXml = "", int DataStamp = defInteger, string Reviser = defString, DateTime ReviseDate = default(DateTime)) + { + string EditSubcontractorRet = default(string); + // 此 Function 將修改一筆資料 + // 傳入值: 各欄位修改值 + // 傳回值: success(成功), fail(失敗) + + try + { + // 先給定strSQL一定有的欄位 + strSQL = "Update tblENTSubcontractor Set "; + + if ((SubcontractorName ?? "") != defString) + { + strSQL += "SubcontractorName = '" + SubcontractorName + "',"; + } + if ((Description ?? "") != defString) + { + strSQL += "Description = '" + Description + "',"; + } + + if (Reviser != defString) + strSQL = strSQL + "Reviser = '" + Reviser + "',"; + + if (ReviseDate != defDateTime) + strSQL = strSQL + "ReviseDate = To_Date('" + Strings.Format(ReviseDate, "yyyy/MM/dd H:mm:ss") + "','YYYY/MM/DD HH24:MI:SS'),"; + + if (DataStamp != defInteger) + strSQL = strSQL + "DataStamp = DataStamp + 1 ,"; + + // 有額外的欄位時再Append進原來的strSQL中 + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的field & value + strSQL += SeparateAddXML_Edit(AdditionalXml); + } + + // 去除strSQL中最後一個 "," + if (Strings.InStr(1, strSQL, ",") != 0) // 表示有要修改的欄位 + { + if (Strings.Right(strSQL, 1) == ",") + { + strSQL = Strings.Mid(strSQL, 1, Strings.Len(strSQL) - 1); + } + + strSQL += " Where SubcontractorNo ='" + SubcontractorNo + "'"; + strSQL = strSQL + " And DataStamp = '" + DataStamp + "'"; + + // 有額外的條件式時再Append進原來的strSQL中 + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL, 1, true); + } + + // //Return success + EditSubcontractorRet = "success"; + } + + catch (Exception e1) + { + EditSubcontractorRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.EditSubcontractor: " & e1.Message) + + return EditSubcontractorRet; + + } + public string DelSubcontractor(string SubcontractorNo, string AdditionalXml = "") + { + string DelSubcontractorRet = default(string); + // 此 Function 將刪除資料 + // 傳入值: 刪除的索引值 + // 傳回值: success(成功), fail(失敗) + var CollectionSQL = new Collection(); + + try + { + // 1. 刪除Contactor + strSQL = "Delete From tblENTSubcontractorCont " + "Where SubcontractorNo='" + SubcontractorNo + "'"; + CollectionSQL.Add(strSQL); + + // 2. 刪除主檔 + strSQL = "Delete From tblENTSubcontractor " + " Where SubcontractorNo ='" + SubcontractorNo + "'"; + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + CollectionSQL.Add(strSQL); + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery_UPD(Conversions.ToString(DataBaseType), strConnectionString, CollectionSQL); + + // //Return success + DelSubcontractorRet = "success"; + } + + catch (Exception e1) + { + DelSubcontractorRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.DelSubcontractor: " & e1.Message) + + return DelSubcontractorRet; + + } + + public string LoadSubcontractor(string SubcontractorNo = defString, int IssueState = defInteger, string AdditionalXml = "") + { + string LoadSubcontractorRet = default(string); + // 此 Function 將資料以XML方式取出 + // 傳入值: 索引值 + // 傳回值: XML(成功), fail(失敗) + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractor Where SubcontractorNo Is Not Null"; + + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if (IssueState != defInteger) + { + strSQL += " And IssueState = " + IssueState; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractor", cnnTemp); + + // //Combine return value + LoadSubcontractorRet = CombineXMLReturnValue("loadSubcontractor", "tblENTSubcontractor", "DataSet", FormatXMLSchema(dsENT.GetXmlSchema()), dsENT.GetXml(), ""); + } + + catch (Exception e1) + { + LoadSubcontractorRet = "fail"; + throw; + } // New Exception("kcENT.LoadSubcontractor: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return LoadSubcontractorRet; + + } + + public DataSet ShowSubcontractor(string SubcontractorNo = defString, int IssueState = defInteger, string AdditionalXml = "") + { + DataSet ShowSubcontractorRet = default(DataSet); + // 此 Function 將資料以 Dataset 方式取出 + // 傳入值: 索引值 + // 傳回值: Dataset(成功), Nothing(失敗) + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractor Where SubcontractorNo Is Not Null"; + + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if (IssueState != defInteger) + { + strSQL += " And IssueState = " + IssueState; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractor", cnnTemp); + + // //Return data + ShowSubcontractorRet = dsENT; + } + + catch (Exception e1) + { + ShowSubcontractorRet = null; + throw; + } // New Exception("kcENT.ShowSubcontractor: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return ShowSubcontractorRet; + + } + + public DataRow GetSubcontractor(string SubcontractorNo = defString, int IssueState = defInteger, string AdditionalXml = "") + { + DataRow GetSubcontractorRet = default(DataRow); + // 此 Function 將資料以 DataRow 方式取出 + // 傳入值: 索引值 + // 傳回值: DataRow(成功), Nothing(失敗) + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractor Where SubcontractorNo Is Not Null"; + + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if (IssueState != defInteger) + { + strSQL += " And IssueState = " + IssueState; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractor", cnnTemp); + + // //Return data + if (dsENT.Tables[0].Rows.Count > 0) + { + GetSubcontractorRet = dsENT.Tables[0].Rows[0]; + } + else + { + GetSubcontractorRet = dsENT.Tables[0].NewRow(); + } + } + catch (Exception e1) + { + GetSubcontractorRet = null; + throw; + } // New Exception("kcENT.GetSubcontractor: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return GetSubcontractorRet; + + } + public string SetSubcontractorIssueState(string SubcontractorNo, int IssueState, int DataStamp = defInteger, string Reviser = defString, DateTime ReviseDate = default(DateTime)) + { + string SetSubcontractorIssueStateRet = default(string); + // 此 Function 將修改IssueState欄位的值 + // 傳入值: IssueState修改後的值及VendorNo + // 傳回值: success(成功), fail(失敗) + + try + { + // 先給定strSQL一定有的欄位 + strSQL = "Update tblENTSubcontractor Set IssueState = " + IssueState + ","; + + if (Reviser != defString) + strSQL = strSQL + "Reviser = '" + Reviser + "',"; + + if (ReviseDate != defDateTime) + strSQL = strSQL + "ReviseDate = To_Date('" + Strings.Format(ReviseDate, "yyyy/MM/dd H:mm:ss") + "','YYYY/MM/DD HH24:MI:SS'),"; + + if (DataStamp != defInteger) + strSQL = strSQL + "DataStamp = DataStamp + 1 ,"; + + if (Strings.InStr(1, strSQL, ",") != 0) // 表示有要修改的欄位 + { + if (Strings.Right(strSQL, 1) == ",") + { + strSQL = Strings.Mid(strSQL, 1, Strings.Len(strSQL) - 1); + } + + strSQL = strSQL + " Where SubcontractorNo ='" + SubcontractorNo + "'"; + strSQL = strSQL + " And DataStamp = '" + DataStamp + "'"; + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL, 1, true); + } + + // //Return success + SetSubcontractorIssueStateRet = "success"; + } + + catch (Exception e1) + { + SetSubcontractorIssueStateRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.SetSubcontractorIssueState: " & e1.Message) + + return SetSubcontractorIssueStateRet; + + } + + + public string AddSubcontractorCont(string SubcontractorNo, string ContactorName, string TelNo = defString, string FaxNo = defString, string Title = defString, string Address = defString, string EMail = defString, string Description = defString, string AdditionalXml = "", string Creator = defString, DateTime CreateDate = default(DateTime)) + { + string AddSubcontractorContRet = default(string); + // 此 Function 將新增一筆資料 + // 傳入值: 各欄位新增值 + // 傳回值: success(成功), fail(失敗) + + try + { + strSQLAddField = "Insert into tblENTSubcontractorCont (SubcontractorNo, ContactorName"; + strSQLAddValue = " Values ('" + SubcontractorNo + "','" + ContactorName + "'"; + + if ((TelNo ?? "") != defString) + { + strSQLAddField += ",TelNo"; + strSQLAddValue += ",'" + TelNo + "'"; + } + if ((FaxNo ?? "") != defString) + { + strSQLAddField += ",FaxNo"; + strSQLAddValue += ",'" + FaxNo + "'"; + } + if ((Title ?? "") != defString) + { + strSQLAddField += ",Title"; + strSQLAddValue += ",'" + Title + "'"; + } + if ((Address ?? "") != defString) + { + strSQLAddField += ",Address"; + strSQLAddValue += ",'" + Address + "'"; + } + if ((EMail ?? "") != defString) + { + strSQLAddField += ",EMail"; + strSQLAddValue += ",'" + EMail + "'"; + } + if ((Description ?? "") != defString) + { + strSQLAddField += ",Description"; + strSQLAddValue += ",'" + Description + "'"; + } + if (Creator != defString) + { + strSQLAddField = strSQLAddField + ",Creator"; + strSQLAddValue = strSQLAddValue + ",'" + Creator + "'"; + } + if (CreateDate != defDateTime) + { + strSQLAddField = strSQLAddField + ",CreateDate"; + strSQLAddValue = strSQLAddValue + ", To_Date('" + Strings.Format(CreateDate, "yyyy/MM/dd HH:mm:ss") + "','YYYY/MM/DD HH24:MI:SS')"; + } + + if (string.IsNullOrEmpty(AdditionalXml)) + { + // 當沒有額外的欄位時,直接給定strSQL + strSQL = strSQLAddField + ")" + strSQLAddValue + ")"; + } + + else + { + // 加上additional的field & value 後傳回 + strSQL = SeparateAddXML_Add(ref strSQLAddField, ref strSQLAddValue, AdditionalXml); + + } + + // //執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL); + + // //Return success + AddSubcontractorContRet = "success"; + } + + catch (Exception e1) + { + AddSubcontractorContRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.AddSubcontractorCont: " & e1.Message) + + return AddSubcontractorContRet; + + } + + + public string EditSubcontractorCont(string SubcontractorNo, string ContactorName, string TelNo = defString, string FaxNo = defString, string Title = defString, string Address = defString, string EMail = defString, string Description = defString, string AdditionalXml = "", int DataStamp = defInteger, string Reviser = defString, DateTime ReviseDate = default(DateTime)) + { + string EditSubcontractorContRet = default(string); + + // 此 Function 將修改一筆資料 + // 傳入值: 各欄位修改值 + // 傳回值: success(成功), fail(失敗) + + try + { + // 先給定strSQL一定有的欄位 + strSQL = "Update tblENTSubcontractorCont Set "; + + if ((TelNo ?? "") != defString) + { + strSQL += "TelNo = '" + TelNo + "',"; + } + if ((FaxNo ?? "") != defString) + { + strSQL += "FaxNo = '" + FaxNo + "',"; + } + if ((Title ?? "") != defString) + { + strSQL += "Title = '" + Title + "',"; + } + if ((Address ?? "") != defString) + { + strSQL += "Address = '" + Address + "',"; + } + if ((EMail ?? "") != defString) + { + strSQL += "EMail = '" + EMail + "',"; + } + if ((Description ?? "") != defString) + { + strSQL += "Description = '" + Description + "',"; + } + + if (Reviser != defString) + strSQL = strSQL + "Reviser = '" + Reviser + "',"; + + if (ReviseDate != defDateTime) + strSQL = strSQL + "ReviseDate = To_Date('" + Strings.Format(ReviseDate, "yyyy/MM/dd H:mm:ss") + "','YYYY/MM/DD HH24:MI:SS'),"; + + if (DataStamp != defInteger) + strSQL = strSQL + "DataStamp = DataStamp + 1 ,"; + + // 有額外的欄位時再Append進原來的strSQL中 + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的field & value + strSQL += SeparateAddXML_Edit(AdditionalXml); + } + + // 去除strSQL中最後一個 "," + if (Strings.InStr(1, strSQL, ",") != 0) // 表示有要修改的欄位 + { + if (Strings.Right(strSQL, 1) == ",") + { + strSQL = Strings.Mid(strSQL, 1, Strings.Len(strSQL) - 1); + } + + strSQL += " Where SubcontractorNo = '" + SubcontractorNo + "'" + " And ContactorName ='" + ContactorName + "'"; + strSQL = strSQL + " And DataStamp = '" + DataStamp + "'"; + + // 有額外的條件式時再Append進原來的strSQL中 + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL, 1, true); + } + + // //Return success + EditSubcontractorContRet = "success"; + } + + catch (Exception e1) + { + EditSubcontractorContRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.EditSubcontractorCont: " & e1.Message) + + return EditSubcontractorContRet; + + } + + public string DelSubcontractorCont(string SubcontractorNo, string ContactorName = defString, string AdditionalXml = "") + { + string DelSubcontractorContRet = default(string); + // 此 Function 將刪除資料 + // 傳入值: 刪除的索引值 + // 傳回值: success(成功), fail(失敗) + + try + { + strSQL = "Delete From tblENTSubcontractorCont " + " Where SubcontractorNo='" + SubcontractorNo + "'"; + + if ((ContactorName ?? "") != defString) + { + strSQL += " And ContactorName = '" + ContactorName + "'"; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL); + + // //Return success + DelSubcontractorContRet = "success"; + } + + catch (Exception e1) + { + DelSubcontractorContRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.DelSubcontractorCont: " & e1.Message) + + return DelSubcontractorContRet; + + } + + public string LoadSubcontractorCont(string SubcontractorNo = defString, string ContactorName = defString, string AdditionalXml = "") + { + string LoadSubcontractorContRet = default(string); + // 此 Function 將資料以XML方式取出 + // 傳入值: 索引值 + // 傳回值: XML(成功), fail(失敗) + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractorCont Where SubcontractorNo Is Not Null"; + + // 有傳入SubcontractorNo表示只取該SubcontractorNo之資料 + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if ((ContactorName ?? "") != defString) + { + strSQL += " And ContactorName = '" + ContactorName + "'"; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractorCont", cnnTemp); + + // //Combine return value + LoadSubcontractorContRet = CombineXMLReturnValue("loadSubcontractorcont", "tblENTSubcontractorCont", "DataSet", FormatXMLSchema(dsENT.GetXmlSchema()), dsENT.GetXml(), ""); + } + + catch (Exception e1) + { + LoadSubcontractorContRet = "fail"; + throw; + } // New Exception("kcENT.LoadSubcontractorCont: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return LoadSubcontractorContRet; + + } + + public DataSet ShowSubcontractorCont(string SubcontractorNo = defString, string ContactorName = defString, string AdditionalXml = "") + { + DataSet ShowSubcontractorContRet = default(DataSet); + // 此 Function 將資料以 Dataset 方式取出 + // 傳入值: 索引值 + // 傳回值: Dataset(成功), Nothing(失敗) + + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractorCont Where SubcontractorNo Is Not Null"; + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if ((ContactorName ?? "") != defString) + { + strSQL += " And ContactorName = '" + ContactorName + "'"; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractorCont", cnnTemp); + + // //Return data + ShowSubcontractorContRet = dsENT; + } + + catch (Exception e1) + { + ShowSubcontractorContRet = null; + throw; + } // New Exception("kcENT.ShowSubcontractorCont: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return ShowSubcontractorContRet; + + } + + public DataRow GetSubcontractorCont(string SubcontractorNo = defString, string ContactorName = defString, string AdditionalXml = "") + { + DataRow GetSubcontractorContRet = default(DataRow); + // 此 Function 將資料以 DataRow 方式取出 + // 傳入值: 索引值 + // 傳回值: DataRow(成功), Nothing(失敗) + + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractorCont Where SubcontractorNo Is Not Null"; + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if ((ContactorName ?? "") != defString) + { + strSQL += " And ContactorName = '" + ContactorName + "'"; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractorCont", cnnTemp); + + // //Return data + if (dsENT.Tables[0].Rows.Count > 0) + { + GetSubcontractorContRet = dsENT.Tables[0].Rows[0]; + } + else + { + GetSubcontractorContRet = dsENT.Tables[0].NewRow(); + } + } + catch (Exception e1) + { + GetSubcontractorContRet = null; + throw; + } // New Exception("kcENT.GetSubcontractorCont: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return GetSubcontractorContRet; + + } + + + + #endregion + } +} diff --git a/SRC/MESWin/SYS4/21670ll/MEStc_SXS/tcENT21670/clsENT_21670.cs b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/tcENT21670/clsENT_21670.cs new file mode 100644 index 0000000..339a403 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/tcENT21670/clsENT_21670.cs @@ -0,0 +1,969 @@ +using iMESCore.Settings; +using Microsoft.VisualBasic; +using Microsoft.VisualBasic.CompilerServices; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static iMESCore.Base.iMESComSubroutine; +using static iMESCore.Base.iMESComXML; +using static iMESCore.Base.iMESConst; +using static iMESCore.DataBase.iMESSql; +namespace MEStc_SXS +{ + public class clsENT_21670 : IDisposable + { + + /*不使用modXX,不再使用OleDb + * 資料庫相關(建立連線/讀取資料/異動資料),使用data_access_service.dll + * 設定檔相關,使用iMESAppSetting + * Xml相關,使用iMESComXML.dll + * 常數相關,使用iMESConst.dll + * 簡易副程式,使用iMESComSubroutine.dll + */ + + + private AppSettings objSetting = new AppSettings(); + private string strConnectionString; // Connection string + private string strDataBaseType; // DataBase Type:oracle, mysql, access + private string strMQType; // MessageQueue Type:TIBCO, MQSeries, MSMQ + private bool disposed = false; // To detect redundant calls + private string strSQL = ""; + private string strSQLAddField; + private string strSQLAddValue; + + #region --- Initial Object --- + + public clsENT_21670() + { + // Get database type + strDataBaseType = objSetting.GetDataBaseType(); + // Get connection string + strConnectionString = objSetting.GetConnectionString(strDataBaseType); + // Get Message Queue Type + strMQType = objSetting.GetMQType(); + } + + #endregion + + #region --- Property --- + + // //Property-------------------------------------------------------------------------------------------------------------------------------- + public string ConnectionString + { + get + { + return strConnectionString; + } + } + + public string DataBaseType + { + get + { + return strDataBaseType; + } + } + + public string MQType + { + get + { + return strMQType; + } + } + + // 2003/03/22,sammi. + // 因TC可能呼叫KC,在整個Function中,必須要使用同一個Reverse物件,如此在產生AddReverseUpdateContent的資料時,ReverseOrder才不會重覆. + // 若KC再往下呼叫UD,則必須將Reverse物件傳遞予UD. + //public object ReverseObj + //{ + // get + // { + // //return objReverse; + // // ReverseObj = objReverse + // } + //} + + + #endregion + + #region IDisposable Support + private bool disposedValue; // 偵測多餘的呼叫 + + // IDisposable + protected virtual void Dispose(bool disposing) + { + if (!disposedValue) + { + if (disposing) + { + // TODO: 處置 Managed 狀態 (Managed 物件)。 + } + + // TODO: 釋放 Unmanaged 資源 (Unmanaged 物件) 並覆寫下面的 Finalize()。 + // TODO: 將大型欄位設定為 null。 + } + disposedValue = true; + } + + // TODO: 只有當上面的 Dispose(ByVal disposing As Boolean) 有可釋放 Unmanaged 資源的程式碼時,才覆寫 Finalize()。 + // Protected Overrides Sub Finalize() + // ' 請勿變更此程式碼。在上面的 Dispose(ByVal disposing As Boolean) 中輸入清除程式碼。 + // Dispose(False) + // MyBase.Finalize() + // End Sub + + // 由 Visual Basic 新增此程式碼以正確實作可處置的模式。 + public void Dispose() + { + // 請勿變更此程式碼。在以上的 Dispose 置入清除程式碼 (ByVal 視為布林值處置)。 + Dispose(true); + GC.SuppressFinalize(this); + } + #endregion + + #region --- Subcontractor 外包商 --- + + + public string AddSubcontractor(string SubcontractorNo, string SubcontractorName, string WZ21670,string Description = defString, string Creator = defString, DateTime CreateDate = default(DateTime), string AdditionalXml = "") + { + string AddSubcontractorRet = default(string); + // 此 Function 將新增一筆資料 + // 傳入值: 各欄位新增值 + // 傳回值: success(成功), fail(失敗) + + if (CreateDate == defDateTime) + CreateDate = DateTime.Now; + + try + { + strSQLAddField = "Insert into tblENTSubcontractor_21670 (SubcontractorNo, SubcontractorName, IssueState"; + strSQLAddValue = " Values ('" + SubcontractorNo + "','" + SubcontractorName + "', 0"; + + strSQLAddField += ",WZ21670"; + strSQLAddValue += ",'" + WZ21670 + "'"; + + + if ((Description ?? "") != defString) + { + strSQLAddField += ",Description"; + strSQLAddValue += ",'" + Description + "'"; + } + if ((Creator ?? "") != defString) + { + strSQLAddField += ",Creator"; + strSQLAddValue += ",'" + Creator + "'"; + } + if (CreateDate != defDateTime) + { + strSQLAddField += ",CreateDate"; + strSQLAddValue += ", To_Date('" + Strings.Format(Conversions.ToDate(CreateDate), "yyyy/MM/dd H:mm:ss") + "','YYYY/MM/DD HH24:MI:SS')"; + } + + if (string.IsNullOrEmpty(AdditionalXml)) + { + // 當沒有額外的欄位時,直接給定strSQL + strSQL = strSQLAddField + ")" + strSQLAddValue + ")"; + } + + else + { + // 加上additional的field & value 後傳回 + strSQL = SeparateAddXML_Add(ref strSQLAddField, ref strSQLAddValue, AdditionalXml); + + } + + // //執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL); + + // //Return success + AddSubcontractorRet = "success"; + } + + catch (Exception e1) + { + AddSubcontractorRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.AddSubcontractor: " & e1.Message) + + return AddSubcontractorRet; + + } + + public string EditSubcontractor(string SubcontractorNo,string WZ21670, string SubcontractorName = defString, string Description = defString, string AdditionalXml = "", int DataStamp = defInteger, string Reviser = defString, DateTime ReviseDate = default(DateTime)) + { + string EditSubcontractorRet = default(string); + // 此 Function 將修改一筆資料 + // 傳入值: 各欄位修改值 + // 傳回值: success(成功), fail(失敗) + + try + { + // 先給定strSQL一定有的欄位 + strSQL = "Update tblENTSubcontractor_21670 Set "; + + if ((WZ21670 ?? "") != defString) + { + strSQL += "WZ21670 = '" + WZ21670 + "',"; + } + + + if ((SubcontractorName ?? "") != defString) + { + strSQL += "SubcontractorName = '" + SubcontractorName + "',"; + } + if ((Description ?? "") != defString) + { + strSQL += "Description = '" + Description + "',"; + } + + if (Reviser != defString) + strSQL = strSQL + "Reviser = '" + Reviser + "',"; + + if (ReviseDate != defDateTime) + strSQL = strSQL + "ReviseDate = To_Date('" + Strings.Format(ReviseDate, "yyyy/MM/dd H:mm:ss") + "','YYYY/MM/DD HH24:MI:SS'),"; + + if (DataStamp != defInteger) + strSQL = strSQL + "DataStamp = DataStamp + 1 ,"; + + // 有額外的欄位時再Append進原來的strSQL中 + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的field & value + strSQL += SeparateAddXML_Edit(AdditionalXml); + } + + // 去除strSQL中最後一個 "," + if (Strings.InStr(1, strSQL, ",") != 0) // 表示有要修改的欄位 + { + if (Strings.Right(strSQL, 1) == ",") + { + strSQL = Strings.Mid(strSQL, 1, Strings.Len(strSQL) - 1); + } + + strSQL += " Where SubcontractorNo ='" + SubcontractorNo + "'"; + strSQL = strSQL + " And DataStamp = '" + DataStamp + "'"; + + // 有額外的條件式時再Append進原來的strSQL中 + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL, 1, true); + } + + // //Return success + EditSubcontractorRet = "success"; + } + + catch (Exception e1) + { + EditSubcontractorRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.EditSubcontractor: " & e1.Message) + + return EditSubcontractorRet; + + } + public string DelSubcontractor(string SubcontractorNo, string AdditionalXml = "") + { + string DelSubcontractorRet = default(string); + // 此 Function 將刪除資料 + // 傳入值: 刪除的索引值 + // 傳回值: success(成功), fail(失敗) + var CollectionSQL = new Collection(); + + try + { + // 1. 刪除Contactor + strSQL = "Delete From tblENTSubcontractorCont_21670 " + "Where SubcontractorNo='" + SubcontractorNo + "'"; + CollectionSQL.Add(strSQL); + + // 2. 刪除主檔 + strSQL = "Delete From tblENTSubcontractor_21670 " + " Where SubcontractorNo ='" + SubcontractorNo + "'"; + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + CollectionSQL.Add(strSQL); + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery_UPD(Conversions.ToString(DataBaseType), strConnectionString, CollectionSQL); + + // //Return success + DelSubcontractorRet = "success"; + } + + catch (Exception e1) + { + DelSubcontractorRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.DelSubcontractor: " & e1.Message) + + return DelSubcontractorRet; + + } + + public string LoadSubcontractor(string SubcontractorNo = defString, int IssueState = defInteger, string AdditionalXml = "") + { + string LoadSubcontractorRet = default(string); + // 此 Function 將資料以XML方式取出 + // 傳入值: 索引值 + // 傳回值: XML(成功), fail(失敗) + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractor_21670 Where SubcontractorNo Is Not Null"; + + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if (IssueState != defInteger) + { + strSQL += " And IssueState = " + IssueState; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractor_21670", cnnTemp); + + // //Combine return value + LoadSubcontractorRet = CombineXMLReturnValue("loadSubcontractor", "tblENTSubcontractor_21670", "DataSet", FormatXMLSchema(dsENT.GetXmlSchema()), dsENT.GetXml(), ""); + } + + catch (Exception e1) + { + LoadSubcontractorRet = "fail"; + throw; + } // New Exception("kcENT.LoadSubcontractor: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return LoadSubcontractorRet; + + } + + public DataSet ShowSubcontractor(string SubcontractorNo = defString, int IssueState = defInteger, string AdditionalXml = "") + { + DataSet ShowSubcontractorRet = default(DataSet); + // 此 Function 將資料以 Dataset 方式取出 + // 傳入值: 索引值 + // 傳回值: Dataset(成功), Nothing(失敗) + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractor_21670 Where SubcontractorNo Is Not Null"; + + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if (IssueState != defInteger) + { + strSQL += " And IssueState = " + IssueState; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractor_21670", cnnTemp); + + // //Return data + ShowSubcontractorRet = dsENT; + } + + catch (Exception e1) + { + ShowSubcontractorRet = null; + throw; + } // New Exception("kcENT.ShowSubcontractor: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return ShowSubcontractorRet; + + } + + public DataRow GetSubcontractor(string SubcontractorNo = defString, int IssueState = defInteger, string AdditionalXml = "") + { + DataRow GetSubcontractorRet = default(DataRow); + // 此 Function 將資料以 DataRow 方式取出 + // 傳入值: 索引值 + // 傳回值: DataRow(成功), Nothing(失敗) + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractor_21670 Where SubcontractorNo Is Not Null"; + + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if (IssueState != defInteger) + { + strSQL += " And IssueState = " + IssueState; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractor_21670", cnnTemp); + + // //Return data + if (dsENT.Tables[0].Rows.Count > 0) + { + GetSubcontractorRet = dsENT.Tables[0].Rows[0]; + } + else + { + GetSubcontractorRet = dsENT.Tables[0].NewRow(); + } + } + catch (Exception e1) + { + GetSubcontractorRet = null; + throw; + } // New Exception("kcENT.GetSubcontractor: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return GetSubcontractorRet; + + } + public string SetSubcontractorIssueState(string SubcontractorNo, int IssueState, int DataStamp = defInteger, string Reviser = defString, DateTime ReviseDate = default(DateTime)) + { + string SetSubcontractorIssueStateRet = default(string); + // 此 Function 將修改IssueState欄位的值 + // 傳入值: IssueState修改後的值及VendorNo + // 傳回值: success(成功), fail(失敗) + + try + { + // 先給定strSQL一定有的欄位 + strSQL = "Update tblENTSubcontractor_21670 Set IssueState = " + IssueState + ","; + + if (Reviser != defString) + strSQL = strSQL + "Reviser = '" + Reviser + "',"; + + if (ReviseDate != defDateTime) + strSQL = strSQL + "ReviseDate = To_Date('" + Strings.Format(ReviseDate, "yyyy/MM/dd H:mm:ss") + "','YYYY/MM/DD HH24:MI:SS'),"; + + if (DataStamp != defInteger) + strSQL = strSQL + "DataStamp = DataStamp + 1 ,"; + + if (Strings.InStr(1, strSQL, ",") != 0) // 表示有要修改的欄位 + { + if (Strings.Right(strSQL, 1) == ",") + { + strSQL = Strings.Mid(strSQL, 1, Strings.Len(strSQL) - 1); + } + + strSQL = strSQL + " Where SubcontractorNo ='" + SubcontractorNo + "'"; + strSQL = strSQL + " And DataStamp = '" + DataStamp + "'"; + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL, 1, true); + } + + // //Return success + SetSubcontractorIssueStateRet = "success"; + } + + catch (Exception e1) + { + SetSubcontractorIssueStateRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.SetSubcontractorIssueState: " & e1.Message) + + return SetSubcontractorIssueStateRet; + + } + + + public string AddSubcontractorCont(string SubcontractorNo, string ContactorName, string TelNo = defString, string FaxNo = defString, string Title = defString, string Address = defString, string EMail = defString, string Description = defString, string AdditionalXml = "", string Creator = defString, DateTime CreateDate = default(DateTime)) + { + string AddSubcontractorContRet = default(string); + // 此 Function 將新增一筆資料 + // 傳入值: 各欄位新增值 + // 傳回值: success(成功), fail(失敗) + + try + { + strSQLAddField = "Insert into tblENTSubcontractorCont_21670 (SubcontractorNo, ContactorName"; + strSQLAddValue = " Values ('" + SubcontractorNo + "','" + ContactorName + "'"; + + if ((TelNo ?? "") != defString) + { + strSQLAddField += ",TelNo"; + strSQLAddValue += ",'" + TelNo + "'"; + } + if ((FaxNo ?? "") != defString) + { + strSQLAddField += ",FaxNo"; + strSQLAddValue += ",'" + FaxNo + "'"; + } + if ((Title ?? "") != defString) + { + strSQLAddField += ",Title"; + strSQLAddValue += ",'" + Title + "'"; + } + if ((Address ?? "") != defString) + { + strSQLAddField += ",Address"; + strSQLAddValue += ",'" + Address + "'"; + } + if ((EMail ?? "") != defString) + { + strSQLAddField += ",EMail"; + strSQLAddValue += ",'" + EMail + "'"; + } + if ((Description ?? "") != defString) + { + strSQLAddField += ",Description"; + strSQLAddValue += ",'" + Description + "'"; + } + if (Creator != defString) + { + strSQLAddField = strSQLAddField + ",Creator"; + strSQLAddValue = strSQLAddValue + ",'" + Creator + "'"; + } + if (CreateDate != defDateTime) + { + strSQLAddField = strSQLAddField + ",CreateDate"; + strSQLAddValue = strSQLAddValue + ", To_Date('" + Strings.Format(CreateDate, "yyyy/MM/dd HH:mm:ss") + "','YYYY/MM/DD HH24:MI:SS')"; + } + + if (string.IsNullOrEmpty(AdditionalXml)) + { + // 當沒有額外的欄位時,直接給定strSQL + strSQL = strSQLAddField + ")" + strSQLAddValue + ")"; + } + + else + { + // 加上additional的field & value 後傳回 + strSQL = SeparateAddXML_Add(ref strSQLAddField, ref strSQLAddValue, AdditionalXml); + + } + + // //執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL); + + // //Return success + AddSubcontractorContRet = "success"; + } + + catch (Exception e1) + { + AddSubcontractorContRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.AddSubcontractorCont: " & e1.Message) + + return AddSubcontractorContRet; + + } + + + public string EditSubcontractorCont(string SubcontractorNo, string ContactorName, string TelNo = defString, string FaxNo = defString, string Title = defString, string Address = defString, string EMail = defString, string Description = defString, string AdditionalXml = "", int DataStamp = defInteger, string Reviser = defString, DateTime ReviseDate = default(DateTime)) + { + string EditSubcontractorContRet = default(string); + + // 此 Function 將修改一筆資料 + // 傳入值: 各欄位修改值 + // 傳回值: success(成功), fail(失敗) + + try + { + // 先給定strSQL一定有的欄位 + strSQL = "Update tblENTSubcontractorCont_21670 Set "; + + if ((TelNo ?? "") != defString) + { + strSQL += "TelNo = '" + TelNo + "',"; + } + if ((FaxNo ?? "") != defString) + { + strSQL += "FaxNo = '" + FaxNo + "',"; + } + if ((Title ?? "") != defString) + { + strSQL += "Title = '" + Title + "',"; + } + if ((Address ?? "") != defString) + { + strSQL += "Address = '" + Address + "',"; + } + if ((EMail ?? "") != defString) + { + strSQL += "EMail = '" + EMail + "',"; + } + if ((Description ?? "") != defString) + { + strSQL += "Description = '" + Description + "',"; + } + + if (Reviser != defString) + strSQL = strSQL + "Reviser = '" + Reviser + "',"; + + if (ReviseDate != defDateTime) + strSQL = strSQL + "ReviseDate = To_Date('" + Strings.Format(ReviseDate, "yyyy/MM/dd H:mm:ss") + "','YYYY/MM/DD HH24:MI:SS'),"; + + if (DataStamp != defInteger) + strSQL = strSQL + "DataStamp = DataStamp + 1 ,"; + + // 有額外的欄位時再Append進原來的strSQL中 + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的field & value + strSQL += SeparateAddXML_Edit(AdditionalXml); + } + + // 去除strSQL中最後一個 "," + if (Strings.InStr(1, strSQL, ",") != 0) // 表示有要修改的欄位 + { + if (Strings.Right(strSQL, 1) == ",") + { + strSQL = Strings.Mid(strSQL, 1, Strings.Len(strSQL) - 1); + } + + strSQL += " Where SubcontractorNo = '" + SubcontractorNo + "'" + " And ContactorName ='" + ContactorName + "'"; + strSQL = strSQL + " And DataStamp = '" + DataStamp + "'"; + + // 有額外的條件式時再Append進原來的strSQL中 + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL, 1, true); + } + + // //Return success + EditSubcontractorContRet = "success"; + } + + catch (Exception e1) + { + EditSubcontractorContRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.EditSubcontractorCont: " & e1.Message) + + return EditSubcontractorContRet; + + } + + public string DelSubcontractorCont(string SubcontractorNo, string ContactorName = defString, string AdditionalXml = "") + { + string DelSubcontractorContRet = default(string); + // 此 Function 將刪除資料 + // 傳入值: 刪除的索引值 + // 傳回值: success(成功), fail(失敗) + + try + { + strSQL = "Delete From tblENTSubcontractorCont_21670 " + " Where SubcontractorNo='" + SubcontractorNo + "'"; + + if ((ContactorName ?? "") != defString) + { + strSQL += " And ContactorName = '" + ContactorName + "'"; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL); + + // //Return success + DelSubcontractorContRet = "success"; + } + + catch (Exception e1) + { + DelSubcontractorContRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.DelSubcontractorCont: " & e1.Message) + + return DelSubcontractorContRet; + + } + + public string LoadSubcontractorCont(string SubcontractorNo = defString, string ContactorName = defString, string AdditionalXml = "") + { + string LoadSubcontractorContRet = default(string); + // 此 Function 將資料以XML方式取出 + // 傳入值: 索引值 + // 傳回值: XML(成功), fail(失敗) + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractorCont_21670 Where SubcontractorNo Is Not Null"; + + // 有傳入SubcontractorNo表示只取該SubcontractorNo之資料 + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if ((ContactorName ?? "") != defString) + { + strSQL += " And ContactorName = '" + ContactorName + "'"; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractorCont_21670", cnnTemp); + + // //Combine return value + LoadSubcontractorContRet = CombineXMLReturnValue("loadSubcontractorcont", "tblENTSubcontractorCont_21670", "DataSet", FormatXMLSchema(dsENT.GetXmlSchema()), dsENT.GetXml(), ""); + } + + catch (Exception e1) + { + LoadSubcontractorContRet = "fail"; + throw; + } // New Exception("kcENT.LoadSubcontractorCont: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return LoadSubcontractorContRet; + + } + + public DataSet ShowSubcontractorCont(string SubcontractorNo = defString, string ContactorName = defString, string AdditionalXml = "") + { + DataSet ShowSubcontractorContRet = default(DataSet); + // 此 Function 將資料以 Dataset 方式取出 + // 傳入值: 索引值 + // 傳回值: Dataset(成功), Nothing(失敗) + + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractorCont_21670 Where SubcontractorNo Is Not Null"; + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if ((ContactorName ?? "") != defString) + { + strSQL += " And ContactorName = '" + ContactorName + "'"; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractorCont_21670", cnnTemp); + + // //Return data + ShowSubcontractorContRet = dsENT; + } + + catch (Exception e1) + { + ShowSubcontractorContRet = null; + throw; + } // New Exception("kcENT.ShowSubcontractorCont: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return ShowSubcontractorContRet; + + } + + public DataRow GetSubcontractorCont(string SubcontractorNo = defString, string ContactorName = defString, string AdditionalXml = "") + { + DataRow GetSubcontractorContRet = default(DataRow); + // 此 Function 將資料以 DataRow 方式取出 + // 傳入值: 索引值 + // 傳回值: DataRow(成功), Nothing(失敗) + + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractorCont_21670 Where SubcontractorNo Is Not Null"; + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if ((ContactorName ?? "") != defString) + { + strSQL += " And ContactorName = '" + ContactorName + "'"; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractorCont_21670", cnnTemp); + + // //Return data + if (dsENT.Tables[0].Rows.Count > 0) + { + GetSubcontractorContRet = dsENT.Tables[0].Rows[0]; + } + else + { + GetSubcontractorContRet = dsENT.Tables[0].NewRow(); + } + } + catch (Exception e1) + { + GetSubcontractorContRet = null; + throw; + } // New Exception("kcENT.GetSubcontractorCont: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return GetSubcontractorContRet; + + } + + + + #endregion + } +} diff --git a/SRC/MESWin/SYS4/21670ll/MEStc_SXS/tcENT_21670/clsENT.cs b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/tcENT_21670/clsENT.cs new file mode 100644 index 0000000..c0331f1 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/tcENT_21670/clsENT.cs @@ -0,0 +1,958 @@ +using iMESCore.Settings; +using Microsoft.VisualBasic; +using Microsoft.VisualBasic.CompilerServices; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static iMESCore.Base.iMESComSubroutine; +using static iMESCore.Base.iMESComXML; +using static iMESCore.Base.iMESConst; +using static iMESCore.DataBase.iMESSql; +namespace MEStc_SXS +{ + public class clsENT_21670_1 : IDisposable + { + /*不使用modXX,不再使用OleDb + * 資料庫相關(建立連線/讀取資料/異動資料),使用data_access_service.dll + * 設定檔相關,使用iMESAppSetting + * Xml相關,使用iMESComXML.dll + * 常數相關,使用iMESConst.dll + * 簡易副程式,使用iMESComSubroutine.dll + */ + + + private AppSettings objSetting = new AppSettings(); + private string strConnectionString; // Connection string + private string strDataBaseType; // DataBase Type:oracle, mysql, access + private string strMQType; // MessageQueue Type:TIBCO, MQSeries, MSMQ + private bool disposed = false; // To detect redundant calls + private string strSQL = ""; + private string strSQLAddField; + private string strSQLAddValue; + + #region --- Initial Object --- + + public clsENT_21670_1() + { + // Get database type + strDataBaseType = objSetting.GetDataBaseType(); + // Get connection string + strConnectionString = objSetting.GetConnectionString(strDataBaseType); + // Get Message Queue Type + strMQType = objSetting.GetMQType(); + } + + #endregion + + #region --- Property --- + + // //Property-------------------------------------------------------------------------------------------------------------------------------- + public string ConnectionString + { + get + { + return strConnectionString; + } + } + + public string DataBaseType + { + get + { + return strDataBaseType; + } + } + + public string MQType + { + get + { + return strMQType; + } + } + + // 2003/03/22,sammi. + // 因TC可能呼叫KC,在整個Function中,必須要使用同一個Reverse物件,如此在產生AddReverseUpdateContent的資料時,ReverseOrder才不會重覆. + // 若KC再往下呼叫UD,則必須將Reverse物件傳遞予UD. + //public object ReverseObj + //{ + // get + // { + // //return objReverse; + // // ReverseObj = objReverse + // } + //} + + + #endregion + + #region IDisposable Support + private bool disposedValue; // 偵測多餘的呼叫 + + // IDisposable + protected virtual void Dispose(bool disposing) + { + if (!disposedValue) + { + if (disposing) + { + // TODO: 處置 Managed 狀態 (Managed 物件)。 + } + + // TODO: 釋放 Unmanaged 資源 (Unmanaged 物件) 並覆寫下面的 Finalize()。 + // TODO: 將大型欄位設定為 null。 + } + disposedValue = true; + } + + // TODO: 只有當上面的 Dispose(ByVal disposing As Boolean) 有可釋放 Unmanaged 資源的程式碼時,才覆寫 Finalize()。 + // Protected Overrides Sub Finalize() + // ' 請勿變更此程式碼。在上面的 Dispose(ByVal disposing As Boolean) 中輸入清除程式碼。 + // Dispose(False) + // MyBase.Finalize() + // End Sub + + // 由 Visual Basic 新增此程式碼以正確實作可處置的模式。 + public void Dispose() + { + // 請勿變更此程式碼。在以上的 Dispose 置入清除程式碼 (ByVal 視為布林值處置)。 + Dispose(true); + GC.SuppressFinalize(this); + } + #endregion + + #region --- Subcontractor 外包商 --- + + + public string AddSubcontractor_21670(string SubcontractorNo, string SubcontractorName, string Description = defString, string Creator = defString, DateTime CreateDate = default(DateTime), string AdditionalXml = "") + { + string AddSubcontractorRet = default(string); + // 此 Function 將新增一筆資料 + // 傳入值: 各欄位新增值 + // 傳回值: success(成功), fail(失敗) + + if (CreateDate == defDateTime) + CreateDate = DateTime.Now; + + try + { + strSQLAddField = "Insert into tblENTSubcontractor_21670 (SubcontractorNo, SubcontractorName, IssueState"; + strSQLAddValue = " Values ('" + SubcontractorNo + "','" + SubcontractorName + "', 0"; + + if ((Description ?? "") != defString) + { + strSQLAddField += ",Description"; + strSQLAddValue += ",'" + Description + "'"; + } + if ((Creator ?? "") != defString) + { + strSQLAddField += ",Creator"; + strSQLAddValue += ",'" + Creator + "'"; + } + if (CreateDate != defDateTime) + { + strSQLAddField += ",CreateDate"; + strSQLAddValue += ", To_Date('" + Strings.Format(Conversions.ToDate(CreateDate), "yyyy/MM/dd H:mm:ss") + "','YYYY/MM/DD HH24:MI:SS')"; + } + + if (string.IsNullOrEmpty(AdditionalXml)) + { + // 當沒有額外的欄位時,直接給定strSQL + strSQL = strSQLAddField + ")" + strSQLAddValue + ")"; + } + + else + { + // 加上additional的field & value 後傳回 + strSQL = SeparateAddXML_Add(ref strSQLAddField, ref strSQLAddValue, AdditionalXml); + + } + + // //執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL); + + // //Return success + AddSubcontractorRet = "success"; + } + + catch (Exception e1) + { + AddSubcontractorRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.AddSubcontractor: " & e1.Message) + + return AddSubcontractorRet; + + } + + public string EditSubcontractor_21670(string SubcontractorNo, string SubcontractorName = defString, string Description = defString, string AdditionalXml = "", int DataStamp = defInteger, string Reviser = defString, DateTime ReviseDate = default(DateTime)) + { + string EditSubcontractorRet = default(string); + // 此 Function 將修改一筆資料 + // 傳入值: 各欄位修改值 + // 傳回值: success(成功), fail(失敗) + + try + { + // 先給定strSQL一定有的欄位 + strSQL = "Update tblENTSubcontractor_21670 Set "; + + if ((SubcontractorName ?? "") != defString) + { + strSQL += "SubcontractorName = '" + SubcontractorName + "',"; + } + if ((Description ?? "") != defString) + { + strSQL += "Description = '" + Description + "',"; + } + + if (Reviser != defString) + strSQL = strSQL + "Reviser = '" + Reviser + "',"; + + if (ReviseDate != defDateTime) + strSQL = strSQL + "ReviseDate = To_Date('" + Strings.Format(ReviseDate, "yyyy/MM/dd H:mm:ss") + "','YYYY/MM/DD HH24:MI:SS'),"; + + if (DataStamp != defInteger) + strSQL = strSQL + "DataStamp = DataStamp + 1 ,"; + + // 有額外的欄位時再Append進原來的strSQL中 + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的field & value + strSQL += SeparateAddXML_Edit(AdditionalXml); + } + + // 去除strSQL中最後一個 "," + if (Strings.InStr(1, strSQL, ",") != 0) // 表示有要修改的欄位 + { + if (Strings.Right(strSQL, 1) == ",") + { + strSQL = Strings.Mid(strSQL, 1, Strings.Len(strSQL) - 1); + } + + strSQL += " Where SubcontractorNo ='" + SubcontractorNo + "'"; + strSQL = strSQL + " And DataStamp = '" + DataStamp + "'"; + + // 有額外的條件式時再Append進原來的strSQL中 + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL, 1, true); + } + + // //Return success + EditSubcontractorRet = "success"; + } + + catch (Exception e1) + { + EditSubcontractorRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.EditSubcontractor: " & e1.Message) + + return EditSubcontractorRet; + + } + public string DelSubcontractor_21670(string SubcontractorNo, string AdditionalXml = "") + { + string DelSubcontractorRet = default(string); + // 此 Function 將刪除資料 + // 傳入值: 刪除的索引值 + // 傳回值: success(成功), fail(失敗) + var CollectionSQL = new Collection(); + + try + { + // 1. 刪除Contactor + strSQL = "Delete From tblENTSubcontractorCont_21670 " + "Where SubcontractorNo='" + SubcontractorNo + "'"; + CollectionSQL.Add(strSQL); + + // 2. 刪除主檔 + strSQL = "Delete From tblENTSubcontractor_21670 " + " Where SubcontractorNo ='" + SubcontractorNo + "'"; + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + CollectionSQL.Add(strSQL); + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery_UPD(Conversions.ToString(DataBaseType), strConnectionString, CollectionSQL); + + // //Return success + DelSubcontractorRet = "success"; + } + + catch (Exception e1) + { + DelSubcontractorRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.DelSubcontractor: " & e1.Message) + + return DelSubcontractorRet; + + } + + public string LoadSubcontractor_21670(string SubcontractorNo = defString, int IssueState = defInteger, string AdditionalXml = "") + { + string LoadSubcontractorRet = default(string); + // 此 Function 將資料以XML方式取出 + // 傳入值: 索引值 + // 傳回值: XML(成功), fail(失敗) + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractor_21670 Where SubcontractorNo Is Not Null"; + + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if (IssueState != defInteger) + { + strSQL += " And IssueState = " + IssueState; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractor_21670", cnnTemp); + + // //Combine return value + LoadSubcontractorRet = CombineXMLReturnValue("loadSubcontractor", "tblENTSubcontractor_21670", "DataSet", FormatXMLSchema(dsENT.GetXmlSchema()), dsENT.GetXml(), ""); + } + + catch (Exception e1) + { + LoadSubcontractorRet = "fail"; + throw; + } // New Exception("kcENT.LoadSubcontractor: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return LoadSubcontractorRet; + + } + + public DataSet ShowSubcontractor_21670(string SubcontractorNo = defString, int IssueState = defInteger, string AdditionalXml = "") + { + DataSet ShowSubcontractorRet = default(DataSet); + // 此 Function 將資料以 Dataset 方式取出 + // 傳入值: 索引值 + // 傳回值: Dataset(成功), Nothing(失敗) + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractor_21670 Where SubcontractorNo Is Not Null"; + + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if (IssueState != defInteger) + { + strSQL += " And IssueState = " + IssueState; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractor_21670", cnnTemp); + + // //Return data + ShowSubcontractorRet = dsENT; + } + + catch (Exception e1) + { + ShowSubcontractorRet = null; + throw; + } // New Exception("kcENT.ShowSubcontractor: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return ShowSubcontractorRet; + + } + + public DataRow GetSubcontractor_21670(string SubcontractorNo = defString, int IssueState = defInteger, string AdditionalXml = "") + { + DataRow GetSubcontractorRet = default(DataRow); + // 此 Function 將資料以 DataRow 方式取出 + // 傳入值: 索引值 + // 傳回值: DataRow(成功), Nothing(失敗) + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractor_21670 Where SubcontractorNo Is Not Null"; + + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if (IssueState != defInteger) + { + strSQL += " And IssueState = " + IssueState; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractor_21670", cnnTemp); + + // //Return data + if (dsENT.Tables[0].Rows.Count > 0) + { + GetSubcontractorRet = dsENT.Tables[0].Rows[0]; + } + else + { + GetSubcontractorRet = dsENT.Tables[0].NewRow(); + } + } + catch (Exception e1) + { + GetSubcontractorRet = null; + throw; + } // New Exception("kcENT.GetSubcontractor: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return GetSubcontractorRet; + + } + public string SetSubcontractorIssueState_21670(string SubcontractorNo, int IssueState, int DataStamp = defInteger, string Reviser = defString, DateTime ReviseDate = default(DateTime)) + { + string SetSubcontractorIssueStateRet = default(string); + // 此 Function 將修改IssueState欄位的值 + // 傳入值: IssueState修改後的值及VendorNo + // 傳回值: success(成功), fail(失敗) + + try + { + // 先給定strSQL一定有的欄位 + strSQL = "Update tblENTSubcontractor_21670 Set IssueState = " + IssueState + ","; + + if (Reviser != defString) + strSQL = strSQL + "Reviser = '" + Reviser + "',"; + + if (ReviseDate != defDateTime) + strSQL = strSQL + "ReviseDate = To_Date('" + Strings.Format(ReviseDate, "yyyy/MM/dd H:mm:ss") + "','YYYY/MM/DD HH24:MI:SS'),"; + + if (DataStamp != defInteger) + strSQL = strSQL + "DataStamp = DataStamp + 1 ,"; + + if (Strings.InStr(1, strSQL, ",") != 0) // 表示有要修改的欄位 + { + if (Strings.Right(strSQL, 1) == ",") + { + strSQL = Strings.Mid(strSQL, 1, Strings.Len(strSQL) - 1); + } + + strSQL = strSQL + " Where SubcontractorNo ='" + SubcontractorNo + "'"; + strSQL = strSQL + " And DataStamp = '" + DataStamp + "'"; + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL, 1, true); + } + + // //Return success + SetSubcontractorIssueStateRet = "success"; + } + + catch (Exception e1) + { + SetSubcontractorIssueStateRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.SetSubcontractorIssueState: " & e1.Message) + + return SetSubcontractorIssueStateRet; + + } + + + public string AddSubcontractorCont_21670(string SubcontractorNo, string ContactorName, string TelNo = defString, string FaxNo = defString, string Title = defString, string Address = defString, string EMail = defString, string Description = defString, string AdditionalXml = "", string Creator = defString, DateTime CreateDate = default(DateTime)) + { + string AddSubcontractorContRet = default(string); + // 此 Function 將新增一筆資料 + // 傳入值: 各欄位新增值 + // 傳回值: success(成功), fail(失敗) + + try + { + strSQLAddField = "Insert into tblENTSubcontractorCont_21670 (SubcontractorNo, ContactorName"; + strSQLAddValue = " Values ('" + SubcontractorNo + "','" + ContactorName + "'"; + + if ((TelNo ?? "") != defString) + { + strSQLAddField += ",TelNo"; + strSQLAddValue += ",'" + TelNo + "'"; + } + if ((FaxNo ?? "") != defString) + { + strSQLAddField += ",FaxNo"; + strSQLAddValue += ",'" + FaxNo + "'"; + } + if ((Title ?? "") != defString) + { + strSQLAddField += ",Title"; + strSQLAddValue += ",'" + Title + "'"; + } + if ((Address ?? "") != defString) + { + strSQLAddField += ",Address"; + strSQLAddValue += ",'" + Address + "'"; + } + if ((EMail ?? "") != defString) + { + strSQLAddField += ",EMail"; + strSQLAddValue += ",'" + EMail + "'"; + } + if ((Description ?? "") != defString) + { + strSQLAddField += ",Description"; + strSQLAddValue += ",'" + Description + "'"; + } + if (Creator != defString) + { + strSQLAddField = strSQLAddField + ",Creator"; + strSQLAddValue = strSQLAddValue + ",'" + Creator + "'"; + } + if (CreateDate != defDateTime) + { + strSQLAddField = strSQLAddField + ",CreateDate"; + strSQLAddValue = strSQLAddValue + ", To_Date('" + Strings.Format(CreateDate, "yyyy/MM/dd HH:mm:ss") + "','YYYY/MM/DD HH24:MI:SS')"; + } + + if (string.IsNullOrEmpty(AdditionalXml)) + { + // 當沒有額外的欄位時,直接給定strSQL + strSQL = strSQLAddField + ")" + strSQLAddValue + ")"; + } + + else + { + // 加上additional的field & value 後傳回 + strSQL = SeparateAddXML_Add(ref strSQLAddField, ref strSQLAddValue, AdditionalXml); + + } + + // //執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL); + + // //Return success + AddSubcontractorContRet = "success"; + } + + catch (Exception e1) + { + AddSubcontractorContRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.AddSubcontractorCont: " & e1.Message) + + return AddSubcontractorContRet; + + } + + + public string EditSubcontractorCont_21670(string SubcontractorNo, string ContactorName, string TelNo = defString, string FaxNo = defString, string Title = defString, string Address = defString, string EMail = defString, string Description = defString, string AdditionalXml = "", int DataStamp = defInteger, string Reviser = defString, DateTime ReviseDate = default(DateTime)) + { + string EditSubcontractorContRet = default(string); + + // 此 Function 將修改一筆資料 + // 傳入值: 各欄位修改值 + // 傳回值: success(成功), fail(失敗) + + try + { + // 先給定strSQL一定有的欄位 + strSQL = "Update tblENTSubcontractorCont_21670 Set "; + + if ((TelNo ?? "") != defString) + { + strSQL += "TelNo = '" + TelNo + "',"; + } + if ((FaxNo ?? "") != defString) + { + strSQL += "FaxNo = '" + FaxNo + "',"; + } + if ((Title ?? "") != defString) + { + strSQL += "Title = '" + Title + "',"; + } + if ((Address ?? "") != defString) + { + strSQL += "Address = '" + Address + "',"; + } + if ((EMail ?? "") != defString) + { + strSQL += "EMail = '" + EMail + "',"; + } + if ((Description ?? "") != defString) + { + strSQL += "Description = '" + Description + "',"; + } + + if (Reviser != defString) + strSQL = strSQL + "Reviser = '" + Reviser + "',"; + + if (ReviseDate != defDateTime) + strSQL = strSQL + "ReviseDate = To_Date('" + Strings.Format(ReviseDate, "yyyy/MM/dd H:mm:ss") + "','YYYY/MM/DD HH24:MI:SS'),"; + + if (DataStamp != defInteger) + strSQL = strSQL + "DataStamp = DataStamp + 1 ,"; + + // 有額外的欄位時再Append進原來的strSQL中 + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的field & value + strSQL += SeparateAddXML_Edit(AdditionalXml); + } + + // 去除strSQL中最後一個 "," + if (Strings.InStr(1, strSQL, ",") != 0) // 表示有要修改的欄位 + { + if (Strings.Right(strSQL, 1) == ",") + { + strSQL = Strings.Mid(strSQL, 1, Strings.Len(strSQL) - 1); + } + + strSQL += " Where SubcontractorNo = '" + SubcontractorNo + "'" + " And ContactorName ='" + ContactorName + "'"; + strSQL = strSQL + " And DataStamp = '" + DataStamp + "'"; + + // 有額外的條件式時再Append進原來的strSQL中 + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL, 1, true); + } + + // //Return success + EditSubcontractorContRet = "success"; + } + + catch (Exception e1) + { + EditSubcontractorContRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.EditSubcontractorCont: " & e1.Message) + + return EditSubcontractorContRet; + + } + + public string DelSubcontractorCont_21670(string SubcontractorNo, string ContactorName = defString, string AdditionalXml = "") + { + string DelSubcontractorContRet = default(string); + // 此 Function 將刪除資料 + // 傳入值: 刪除的索引值 + // 傳回值: success(成功), fail(失敗) + + try + { + strSQL = "Delete From tblENTSubcontractorCont_21670 " + " Where SubcontractorNo='" + SubcontractorNo + "'"; + + if ((ContactorName ?? "") != defString) + { + strSQL += " And ContactorName = '" + ContactorName + "'"; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery(Conversions.ToString(DataBaseType), strConnectionString, ref strSQL); + + // //Return success + DelSubcontractorContRet = "success"; + } + + catch (Exception e1) + { + DelSubcontractorContRet = "fail"; + // 發生錯誤時丟回本身的Function Name及系統錯誤訊息 + throw; + + } // New Exception("kcENT.DelSubcontractorCont: " & e1.Message) + + return DelSubcontractorContRet; + + } + + public string LoadSubcontractorCont_21670(string SubcontractorNo = defString, string ContactorName = defString, string AdditionalXml = "") + { + string LoadSubcontractorContRet = default(string); + // 此 Function 將資料以XML方式取出 + // 傳入值: 索引值 + // 傳回值: XML(成功), fail(失敗) + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractorCont_21670 Where SubcontractorNo Is Not Null"; + + // 有傳入SubcontractorNo表示只取該SubcontractorNo之資料 + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if ((ContactorName ?? "") != defString) + { + strSQL += " And ContactorName = '" + ContactorName + "'"; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractorCont_21670", cnnTemp); + + // //Combine return value + LoadSubcontractorContRet = CombineXMLReturnValue("loadSubcontractorcont", "tblENTSubcontractorCont_21670", "DataSet", FormatXMLSchema(dsENT.GetXmlSchema()), dsENT.GetXml(), ""); + } + + catch (Exception e1) + { + LoadSubcontractorContRet = "fail"; + throw; + } // New Exception("kcENT.LoadSubcontractorCont: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return LoadSubcontractorContRet; + + } + + public DataSet ShowSubcontractorCont_21670(string SubcontractorNo = defString, string ContactorName = defString, string AdditionalXml = "") + { + DataSet ShowSubcontractorContRet = default(DataSet); + // 此 Function 將資料以 Dataset 方式取出 + // 傳入值: 索引值 + // 傳回值: Dataset(成功), Nothing(失敗) + + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractorCont_21670 Where SubcontractorNo Is Not Null"; + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if ((ContactorName ?? "") != defString) + { + strSQL += " And ContactorName = '" + ContactorName + "'"; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractorCont_21670", cnnTemp); + + // //Return data + ShowSubcontractorContRet = dsENT; + } + + catch (Exception e1) + { + ShowSubcontractorContRet = null; + throw; + } // New Exception("kcENT.ShowSubcontractorCont: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return ShowSubcontractorContRet; + + } + + public DataRow GetSubcontractorCont_21670(string SubcontractorNo = defString, string ContactorName = defString, string AdditionalXml = "") + { + DataRow GetSubcontractorContRet = default(DataRow); + // 此 Function 將資料以 DataRow 方式取出 + // 傳入值: 索引值 + // 傳回值: DataRow(成功), Nothing(失敗) + + + var dsENT = default(DataSet); + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblENTSubcontractorCont_21670 Where SubcontractorNo Is Not Null"; + if ((SubcontractorNo ?? "") != defString) + { + strSQL += " And SubcontractorNo = '" + SubcontractorNo + "'"; + } + if ((ContactorName ?? "") != defString) + { + strSQL += " And ContactorName = '" + ContactorName + "'"; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL += SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsENT = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsENT, "tblENTSubcontractorCont_21670", cnnTemp); + + // //Return data + if (dsENT.Tables[0].Rows.Count > 0) + { + GetSubcontractorContRet = dsENT.Tables[0].Rows[0]; + } + else + { + GetSubcontractorContRet = dsENT.Tables[0].NewRow(); + } + } + catch (Exception e1) + { + GetSubcontractorContRet = null; + throw; + } // New Exception("kcENT.GetSubcontractorCont: " & e1.Message) + + finally + { + CloseConnection(cnnTemp); + if (dsENT != null) + { + dsENT.Dispose(); + } + + } + + return GetSubcontractorContRet; + + } + + + + #endregion + } +} diff --git a/SRC/MESWin/SYS4/21670ll/MEStc_SXS/tcWIP/clsLot.cs b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/tcWIP/clsLot.cs new file mode 100644 index 0000000..57d1278 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/MEStc_SXS/tcWIP/clsLot.cs @@ -0,0 +1,337 @@ +using System; +using System.Data; +using System.Data.Common; +using Microsoft.VisualBasic; +using static iMESCore.Base.iMESComSubroutine; +using static iMESCore.Base.iMESComXML; +using static iMESCore.Base.iMESConst; +using static iMESCore.DataBase.iMESSql; +using iMESCore.Settings; + +namespace MEStc_SXS +{ + + + public class clsLot : IDisposable + { + /*不使用modXX,不再使用OleDb + * 資料庫相關(建立連線/讀取資料/異動資料),使用data_access_service.dll + * 設定檔相關,使用iMESAppSetting + * Xml相關,使用iMESComXML.dll + * 常數相關,使用iMESConst.dll + * 簡易副程式,使用iMESComSubroutine.dll + */ + + + private AppSettings objSetting = new AppSettings(); + private string strConnectionString; // Connection string + private string strDataBaseType; // DataBase Type:oracle, mysql, access + private string strMQType; // MessageQueue Type:TIBCO, MQSeries, MSMQ + private bool disposed = false; // To detect redundant calls + private string strSQL = ""; + + #region --- Initial Object --- + + public clsLot() + { + // Get database type + strDataBaseType = objSetting.GetDataBaseType(); + // Get connection string + strConnectionString = objSetting.GetConnectionString(strDataBaseType); + // Get Message Queue Type + strMQType = objSetting.GetMQType(); + } + + #endregion + + #region --- Property --- + + // //Property-------------------------------------------------------------------------------------------------------------------------------- + public string ConnectionString + { + get + { + return strConnectionString; + } + } + + public string DataBaseType + { + get + { + return strDataBaseType; + } + } + + public string MQType + { + get + { + return strMQType; + } + } + + // 2003/03/22,sammi. + // 因TC可能呼叫KC,在整個Function中,必須要使用同一個Reverse物件,如此在產生AddReverseUpdateContent的資料時,ReverseOrder才不會重覆. + // 若KC再往下呼叫UD,則必須將Reverse物件傳遞予UD. + //public object ReverseObj + //{ + // get + // { + // //return objReverse; + // // ReverseObj = objReverse + // } + //} + + + #endregion + + #region IDisposable Support + private bool disposedValue; // 偵測多餘的呼叫 + + // IDisposable + protected virtual void Dispose(bool disposing) + { + if (!disposedValue) + { + if (disposing) + { + // TODO: 處置 Managed 狀態 (Managed 物件)。 + } + + // TODO: 釋放 Unmanaged 資源 (Unmanaged 物件) 並覆寫下面的 Finalize()。 + // TODO: 將大型欄位設定為 null。 + } + disposedValue = true; + } + + // TODO: 只有當上面的 Dispose(ByVal disposing As Boolean) 有可釋放 Unmanaged 資源的程式碼時,才覆寫 Finalize()。 + // Protected Overrides Sub Finalize() + // ' 請勿變更此程式碼。在上面的 Dispose(ByVal disposing As Boolean) 中輸入清除程式碼。 + // Dispose(False) + // MyBase.Finalize() + // End Sub + + // 由 Visual Basic 新增此程式碼以正確實作可處置的模式。 + public void Dispose() + { + // 請勿變更此程式碼。在以上的 Dispose 置入清除程式碼 (ByVal 視為布林值處置)。 + Dispose(true); + GC.SuppressFinalize(this); + } + #endregion + + + public string LoadOPType(string OPType = defString, int IssueState = defInteger, string AdditionalXml = "") + { + string LoadOPTypeRet = null; + // 此 Function 將資料以XML方式取出 + // 傳入值: 索引值 + // 傳回值: XML(成功), fail(失敗) + + + DataSet dsOP = null; + + try + { + + dsOP = ShowOPType(OPType, IssueState, AdditionalXml); + + // //Combine return value + LoadOPTypeRet = CombineXMLReturnValue("loadoptype", "OPType", "DataSet", FormatXMLSchema(dsOP.GetXmlSchema()), dsOP.GetXml(), ""); + } + + catch (Exception e1) + { + LoadOPTypeRet = "fail"; + throw; + } // New Exception("kcOP.LoadOPType: " & e1.Message) + + finally + { + if (dsOP != null) + { + dsOP.Dispose(); + } + } + + return LoadOPTypeRet; + + } + + public DataSet ShowOPType(string OPType = defString, int IssueState = defInteger, string AdditionalXml = "") + { + DataSet ShowOPTypeRet = null; + + // 此 Function 將資料以 Dataset 方式取出 + // 傳入值: 索引值 + // 傳回值: Dataset(成功), Nothing(失敗) + + + DataSet dsOP = null; + IDbConnection cnnTemp = null; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + strSQL = "Select * From tblOPType Where OPType Is Not Null"; + if (OPType != defString) + { + strSQL = strSQL + " And OPType = '" + OPType + "'"; + } + if (IssueState != defInteger) + { + strSQL = strSQL + " And IssueState = " + IssueState; + } + + if (!string.IsNullOrEmpty(AdditionalXml)) + { + // 加上additional的condition + strSQL = strSQL + SeparateAddXML_Condition(AdditionalXml); + } + + // //Select data + dsOP = new DataSet(); + ExecuteSQLQuery_Adapter(strSQL, dsOP, "OPType", cnnTemp); + + // //Return data + ShowOPTypeRet = dsOP; + } + + catch (Exception e1) + { + ShowOPTypeRet = null; + throw; + } + + finally + { + CloseConnection(cnnTemp); + if (dsOP != null) + { + dsOP.Dispose(); + } + } + + return ShowOPTypeRet; + } + + public DataRow GetOPType(string OPType = defString, int IssueState = defInteger, string AdditionalXml = "") + { + DataRow GetOPTypeRet = null; + // 此 Function 將資料以XML方式取出 + // 傳入值: 索引值 + // 傳回值: XML(成功), fail(失敗) + + + DataSet dsOP = null; + + try + { + + dsOP = ShowOPType(OPType, IssueState, AdditionalXml); + + // //Return data + if (dsOP.Tables[0].Rows.Count > 0) + { + GetOPTypeRet = dsOP.Tables[0].Rows[0]; + } + else + { + GetOPTypeRet = dsOP.Tables[0].NewRow(); + } + } + + catch (Exception e1) + { + GetOPTypeRet = null; + throw; + } // New Exception("kcOP.LoadOPType: " & e1.Message) + + finally + { + if (dsOP != null) + { + dsOP.Dispose(); + } + } + + return GetOPTypeRet; + + } + + public string BR_CheckIn(long LotStamp, string LotNo, string LinkName, DataTable dtAttrib, DataTable dtEquipment, string UserNo, string ShiftNo, + string LotRecord = defString, DateTime CheckInTime = default(DateTime), string RuleNo = "", DataTable dtLoginState = null, DataTable dtAccessory = null, + DataTable dtMTLLot = null, string LanguageMode = defString) + { + string BR_CheckInRet = default(string); + // 此 Function 將更新CheckIn Data + // 傳入值: LotNo,dtAttrib,dtEquipment + // 傳回值: success(成功), fail(失敗) + + IDbConnection cnnTemp = null; + DbDataReader drTemp; + var CollectionSQL = new Collection(); + var CollectionSQL_Rows = new Collection(); + string strSQL = ""; + + string LotSerial, OPNo, BRNo, SerialNo, LogGroupSerial, BaseLotNo, CurQTY; + int PhaseNo; + DateTime datEventTime; + long lngLotStamp; + + try + { + // //Create connection + cnnTemp = CreateConnection(strConnectionString); + + // 1.取出Temp LotState的資料 + strSQL = "Select A.LotSerial,A.OPNo,A.SerialNo,B.BRNo,B.LogGroupSerial,B.LotStamp,B.BaseLotNo,B.CurQTY,B.PhaseNo " + + " From tblWIPTemp_LotState A, tblWIPLotState B " + " Where A.LotNo ='" + LotNo + "'" + " And A.LotNo = B.LotNo "; + // cmmTemp = New OleDb.OleDbCommand(strSQL, cnnTemp) + drTemp = ExecuteSQLQuery_Reader(strSQL, cnnTemp); + if (drTemp.Read()) + { + LotSerial = drTemp["LotSerial"].ToString(); + OPNo = drTemp["OPNo"].ToString(); + SerialNo = drTemp["SerialNo"].ToString(); + BRNo = drTemp["BRNo"].ToString(); + LogGroupSerial = drTemp["LogGroupSerial"].ToString(); + lngLotStamp = Convert.ToInt64(drTemp["LotStamp"]); + BaseLotNo = drTemp["BaseLotNo"].ToString(); + CurQTY = drTemp["CurQTY"].ToString(); + PhaseNo = Convert.ToInt32(drTemp["PhaseNo"]); // 2020/11/20 Steven Mantis: 0082084: [PAD]eRunCard_調整 BR 生產記錄 + } + else + { + throw new iMESException.MESException("0000-202003", "[%LotNo%] : " + LotNo); + } + drTemp.Close(); + + + // 呼叫執行SQL指令 + ExecuteSQLNoneQuery_ChkRowCount(strDataBaseType, strConnectionString, CollectionSQL, CollectionSQL_Rows); + + // //Return success + BR_CheckInRet = "success"; + } + + catch (Exception e1) + { + BR_CheckInRet = "fail"; + throw; + } + finally + { + CloseConnection(cnnTemp); + + } + return BR_CheckInRet; + + } + + + } +} \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/wsSXS/My Project/Application.Designer.cs b/SRC/MESWin/SYS4/21670ll/wsSXS/My Project/Application.Designer.cs new file mode 100644 index 0000000..299bbe3 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/wsSXS/My Project/Application.Designer.cs @@ -0,0 +1,11 @@ +// ------------------------------------------------------------------------------ +// +// 這段程式碼是由工具產生的。 +// 執行階段版本:4.0.30319.42000 +// +// 對這個檔案所做的變更可能會造成錯誤的行為,而且如果重新產生程式碼, +// 變更將會遺失。 +// +// ------------------------------------------------------------------------------ + + diff --git a/SRC/MESWin/SYS4/21670ll/wsSXS/My Project/Application.myapp b/SRC/MESWin/SYS4/21670ll/wsSXS/My Project/Application.myapp new file mode 100644 index 0000000..758895d --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/wsSXS/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + false + false + 0 + true + 0 + 1 + true + diff --git a/SRC/MESWin/SYS4/21670ll/wsSXS/My Project/Settings.Designer.cs b/SRC/MESWin/SYS4/21670ll/wsSXS/My Project/Settings.Designer.cs new file mode 100644 index 0000000..10f0acd --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/wsSXS/My Project/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace wsABC.My { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/SRC/MESWin/SYS4/21670ll/wsSXS/My Project/Settings.settings b/SRC/MESWin/SYS4/21670ll/wsSXS/My Project/Settings.settings new file mode 100644 index 0000000..85b890b --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/wsSXS/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/SRC/MESWin/SYS4/21670ll/wsSXS/Properties/AssemblyInfo.cs b/SRC/MESWin/SYS4/21670ll/wsSXS/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..7ead6a6 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/wsSXS/Properties/AssemblyInfo.cs @@ -0,0 +1,32 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 組件的一般資訊是由下列的屬性集控制。 +// 變更這些屬性的值即可修改組件的相關 +// 資訊。 +[assembly: AssemblyTitle("wsABC.Properties")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("iMES Technology Inc.")] +[assembly: AssemblyProduct("MESSeries 6")] +[assembly: AssemblyCopyright("Copyright iMES Technology Inc.")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 將 ComVisible 設定為 false 會使得這個組件中的類型 +// 對 COM 元件而言為不可見。如果您需要從 COM 存取這個組件中 +// 的類型,請在該類型上將 ComVisible 屬性設定為 true。 +[assembly: ComVisible(false)] + +// 下列 GUID 為專案公開 (Expose) 至 COM 時所要使用的 typelib ID +[assembly: Guid("ad05cadf-ff22-498b-a29e-df915118873d")] + +// 組件的版本資訊由下列四個值所組成: +// +// 主要版本 +// 次要版本 +// 組建編號 +// 修訂編號 +// +[assembly: AssemblyVersion("6.0.0.0")] diff --git a/SRC/MESWin/SYS4/21670ll/wsSXS/Properties/BuildIncrementVersionInfo.cs b/SRC/MESWin/SYS4/21670ll/wsSXS/Properties/BuildIncrementVersionInfo.cs new file mode 100644 index 0000000..8c4e437 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/wsSXS/Properties/BuildIncrementVersionInfo.cs @@ -0,0 +1 @@ +[assembly: System.Reflection.AssemblyFileVersion("6.0.5.40117")] diff --git a/SRC/MESWin/SYS4/21670ll/wsSXS/Resources.Designer.cs b/SRC/MESWin/SYS4/21670ll/wsSXS/Resources.Designer.cs new file mode 100644 index 0000000..20e487b --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/wsSXS/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace wsABC.My.Resources { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("wsSXS.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 重写当前线程的 CurrentUICulture 属性,对 + /// 使用此强类型资源类的所有资源查找执行重写。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/SRC/MESWin/SYS4/21670ll/wsSXS/Resources.resx b/SRC/MESWin/SYS4/21670ll/wsSXS/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/wsSXS/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/wsSXS/wsABC.csproj.vspscc b/SRC/MESWin/SYS4/21670ll/wsSXS/wsABC.csproj.vspscc new file mode 100644 index 0000000..b6d3289 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/wsSXS/wsABC.csproj.vspscc @@ -0,0 +1,10 @@ +"" +{ +"FILE_VERSION" = "9237" +"ENLISTMENT_CHOICE" = "NEVER" +"PROJECT_FILE_RELATIVE_PATH" = "" +"NUMBER_OF_EXCLUDED_FILES" = "0" +"ORIGINAL_PROJECT_FILE_PATH" = "" +"NUMBER_OF_NESTED_PROJECTS" = "0" +"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER" +} diff --git a/SRC/MESWin/SYS4/21670ll/wsSXS/wsENT_21670/wsENT.cs b/SRC/MESWin/SYS4/21670ll/wsSXS/wsENT_21670/wsENT.cs new file mode 100644 index 0000000..b603955 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/wsSXS/wsENT_21670/wsENT.cs @@ -0,0 +1,1101 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System; +using System.Data; +using System.Web.Services; +using Microsoft.VisualBasic; +using Microsoft.VisualBasic.CompilerServices; +using static iMESCore.Base.iMESComXML; +using static iMESCore.Base.iMESConst; +using static iMESCore.Base.iMESComSubroutine; +namespace wsSXS +{ + public class wsENT + { + private MEStc_SXS.clsENT_21670 objENT = new MEStc_SXS.clsENT_21670(); + private kcSYS.clsSYSUserLog objSYS = new kcSYS.clsSYSUserLog(); // 宣告Sys的物件 + //private kcBasis_UPD.clsBasis_UPD objBasis = new kcBasis_UPD.clsBasis_UPD(); //主檔優化 + //private kcBasis_Query.clsBasis_Query objQuery = new kcBasis_Query.clsBasis_Query(); //主檔優化 + private System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); // 用以讀取Xml字串 + private DateTime ArriveTime; // 送達時間 + private string strIdentity; // Identity XML字串 + private string strReturnValue; // ReturnValue XML字串 + private string strException; // Exception XML字串 + private string strResult; // Result XML字串 + private string strMessage; // Message XML字串 + private iMESCore.Settings.AppSettings objSetting = new iMESCore.Settings.AppSettings(); + private string strResourceDir = "Resources"; + + public wsENT() + { + try + { + strResourceDir = System.IO.Path.Combine("wsUpdateResource", objSetting["ResourceDir"].ToString()); + } + catch (Exception) + { } + } + + #region --- Subcontractor 外包商 --- + + [WebMethod(Description = "Load Subcontractor Data")] + public string LoadSubcontractor(string InXml) + { + string LoadSubcontractorRet = default(string); + + // 先給預設值,以判斷是否有傳入該參數 + string SubcontractorNo = defString; + int IssueState = 2; + + ArriveTime = DateTime.Now; + string AdditionalXml = ""; + try + { + // 讀取InXml字串 + xmlDoc.LoadXml(InXml); + // 組Identity字串 + strIdentity = CombineXMLIdentity(Environment.MachineName, GetXMLCurUserNo(xmlDoc), Conversions.ToString(ArriveTime)); + + // 判斷是否有傳入Subcontractor,若有,表示要依Subcontractor查詢 + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorNo = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // 判斷是否有傳入IssueState,若有,表示要依IssueState查詢 + if (xmlDoc.DocumentElement.GetElementsByTagName("issuestate").Count > 0) + { + if (xmlDoc.GetElementsByTagName("issuestate").Item(0).SelectNodes("value").Count > 0) + { + IssueState = Conversions.ToInteger(xmlDoc.DocumentElement.GetElementsByTagName("issuestate").Item(0).SelectNodes("value").Item(0).InnerText); + } + } + + // 呼叫副程式處理查詢條件與Additional格式 + AdditionalXml = CombineXMLQueryAdditional(xmlDoc); + + // 呼叫Dll執行 + strReturnValue = objENT.LoadSubcontractor(SubcontractorNo, IssueState, AdditionalXml); + strException = ""; + strResult = "success"; + } + + catch (iMESException.MESException ex) + { + strReturnValue = ""; + strException = CombineXMLException(Conversions.ToString(ex.ErrorCode), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Show Subcontractor Failed!!", ex.StackTrace); + strResult = "fail"; + } + + catch (Exception ex) + { + strReturnValue = ""; + strException = CombineXMLException(defWSErrCode, ex.Message, "Show Subcontractor Failed!!", ex.StackTrace); + strResult = "fail"; + } + + finally + { + // 將各部份之XML字串組起來並傳出 + LoadSubcontractorRet = CombineXMLResponse(strIdentity, strReturnValue, strException, strResult, ""); + + } + + return LoadSubcontractorRet; + + } + + [WebMethod(Description = "Add Subcontractor data")] + public string AddSubcontractor(string InXml) + { + string AddSubcontractorRet = default(string); + + // 先給預設值,以判斷是否有傳入該參數 + var SubcontractorNo = default(string); + string SubcontractorName; + string Description = defString; + string WZ21670 = defString; + string Creator = defString; + + ArriveTime = DateTime.Now; + + try + { + // 讀取InXml字串 + xmlDoc.LoadXml(InXml); + + // 組Identity字串 + strIdentity = CombineXMLIdentity(Environment.MachineName, GetXMLCurUserNo(xmlDoc), Conversions.ToString(ArriveTime)); + + // 開始解譯InXml字串 + // Subcontractor一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorNo = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorname").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorname").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorName = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorname").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorName Not Found!"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorName Not Found!"); + } + // Description + if (xmlDoc.DocumentElement.GetElementsByTagName("description").Count > 0) + { + if (xmlDoc.GetElementsByTagName("description").Item(0).SelectNodes("value").Count > 0) + { + Description = xmlDoc.DocumentElement.GetElementsByTagName("description").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // WZ21670 + if (xmlDoc.DocumentElement.GetElementsByTagName("wz21670").Count > 0) + { + if (xmlDoc.GetElementsByTagName("wz21670").Item(0).SelectNodes("value").Count > 0) + { + WZ21670 = xmlDoc.DocumentElement.GetElementsByTagName("wz21670").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // Creator + if (xmlDoc.DocumentElement.GetElementsByTagName("creator").Count > 0) + { + if (xmlDoc.GetElementsByTagName("creator").Item(0).SelectNodes("value").Count > 0) + { + Creator = xmlDoc.DocumentElement.GetElementsByTagName("creator").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + + // 呼叫Dll執行新增資料 + objENT.AddSubcontractor(SubcontractorNo, SubcontractorName,WZ21670, Description,Creator); + + strException = ""; + strResult = "success"; + + objSYS.AddEventLog("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, "AddSubcontractor"); + } + + catch (iMESException.MESException ex) + { + strException = CombineXMLException(Conversions.ToString(ex.ErrorCode), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Add Subcontractor failed!", ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: Conversions.ToString(ex.ErrorCode)); + } + + catch (Exception ex) + { + strException = CombineXMLException(defWSErrCode, ex.Message, "Add Subcontractor failed!", ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: defWSErrCode); + } + + finally + { + // 將各部份之XML字串組起來並傳出 + AddSubcontractorRet = CombineXMLResponse(strIdentity, "", strException, strResult, ""); + + } + + return AddSubcontractorRet; + + } + + [WebMethod(Description = "Edit Specified Subcontractor Data")] + public string EditSubcontractor(string InXml) + { + string EditSubcontractorRet = default(string); + + // 參數先給預設值,以判斷是否有傳入該參數 + var SubcontractorNo = default(string); + int IssueState = defInteger; + string WZ21670 = defString; + string SubcontractorName = defString; + string Description = defString; + + int DataStamp = defInteger; + string AdditionalXml = ""; + + ArriveTime = DateTime.Now; + + try + { + // 讀取InXml字串 + xmlDoc.LoadXml(InXml); + // 組Identity字串 + strIdentity = CombineXMLIdentity(Environment.MachineName, GetXMLCurUserNo(xmlDoc), Conversions.ToString(ArriveTime)); + + // 開始解譯InXml字串 + // Subcontractor一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorNo = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + // IssueState一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("issuestate").Count > 0) + { + if (xmlDoc.GetElementsByTagName("issuestate").Item(0).SelectNodes("value").Count > 0) + { + IssueState = Conversions.ToInteger(xmlDoc.DocumentElement.GetElementsByTagName("issuestate").Item(0).SelectNodes("value").Item(0).InnerText); + } + else + { + throw new iMESException.MESException("0000-200002", "[%IssueState%]"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "[%IssueState%]"); + } + // SubcontractorName不可空白 + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorname").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorname").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorName = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorname").Item(0).SelectNodes("value").Item(0).InnerText; + if (string.IsNullOrEmpty(SubcontractorName)) + { + throw new iMESException.MESException("0000-200001", "SubcontractorName is empty!"); + } + } + } + // WZ21670 + if (xmlDoc.DocumentElement.GetElementsByTagName("wz21670").Count > 0) + { + if (xmlDoc.GetElementsByTagName("wz21670").Item(0).SelectNodes("value").Count > 0) + { + WZ21670 = xmlDoc.DocumentElement.GetElementsByTagName("wz21670").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // Description + if (xmlDoc.DocumentElement.GetElementsByTagName("description").Count > 0) + { + if (xmlDoc.GetElementsByTagName("description").Item(0).SelectNodes("value").Count > 0) + { + Description = xmlDoc.DocumentElement.GetElementsByTagName("description").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + + // AdditionalXml + GetXMLTagValue(ref AdditionalXml, xmlDoc, "additionalxml"); + + // DataStamp + GetXMLTagValue(ref DataStamp, xmlDoc, "datastamp", true); + + if (IssueState == 0) // Unfrozen時才可修改 + { + // 有修改欄位值時 + if ((SubcontractorName ?? "") != defString | (Description ?? "") != defString) + { + // 呼叫Dll執行修改 + objENT.EditSubcontractor(SubcontractorNo,WZ21670, SubcontractorName, Description, AdditionalXml, DataStamp: DataStamp, Reviser: GetXMLCurUserNo(xmlDoc), ReviseDate: ArriveTime); + } + } + + strException = ""; + strResult = "success"; + + objSYS.AddEventLog("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, "EditSubcontractor"); + } + + catch (iMESException.MESException ex) + { + strException = CombineXMLException(Conversions.ToString(ex.ErrorCode), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Edit Subcontractor failed!", ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: Conversions.ToString(ex.ErrorCode)); + } + + catch (Exception ex) + { + strException = CombineXMLException(defWSErrCode, ex.Message, "Edit Subcontractor failed!", ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: defWSErrCode); + } + + finally + { + // 將各部份之XML字串組起來並傳出 + EditSubcontractorRet = CombineXMLResponse(strIdentity, "", strException, strResult, ""); + } + + return EditSubcontractorRet; + + } + + [WebMethod(Description = "Delete Subcontractor By Specified Subcontractor")] + public string DelSubcontractor(string InXml) + { + string DelSubcontractorRet = default(string); + + var SubcontractorNo = default(string); + int IssueState; + string strDelState; // 寫入tblSysEventLog中的訊息,0:未簽核刪除,2:已簽核刪除,-1:不使用刪除 + int DataStamp = defInteger; + + ArriveTime = DateTime.Now; + + try + { + // 讀取InXml字串 + xmlDoc.LoadXml(InXml); + // 組Identity字串 + strIdentity = CombineXMLIdentity(Environment.MachineName, GetXMLCurUserNo(xmlDoc), Conversions.ToString(ArriveTime)); + + // 開始解譯InXml字串 + // Subcontractor一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorNo = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + // IssueState一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("issuestate").Count > 0) + { + if (xmlDoc.GetElementsByTagName("issuestate").Item(0).SelectNodes("value").Count > 0) + { + IssueState = Conversions.ToInteger(xmlDoc.DocumentElement.GetElementsByTagName("issuestate").Item(0).SelectNodes("value").Item(0).InnerText); + } + else + { + throw new iMESException.MESException("0000-200002", "[%IssueState%]"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "[%IssueState%]"); + } + + // DataStamp + GetXMLTagValue(ref DataStamp, xmlDoc, "datastamp", true); + + switch (IssueState) + { + case 0: + { + objENT.DelSubcontractor(SubcontractorNo); + strDelState = "未簽核刪除"; + break; + } + case 2: + { + objENT.SetSubcontractorIssueState(SubcontractorNo, -1, DataStamp: DataStamp, Reviser: GetXMLCurUserNo(xmlDoc), ReviseDate: ArriveTime); + strDelState = "已簽核刪除"; + break; + } + case -1: + { + objENT.DelSubcontractor(SubcontractorNo); + strDelState = "不使用刪除"; + break; + } + + default: + { + throw new iMESException.MESException("0000-200021", "[%IssueState%]"); + } + } + + strException = ""; + strResult = "success"; + + objSYS.AddEventLog("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, "DelSubcontractor:" + strDelState); + } + + catch (iMESException.MESException ex) + { + strException = CombineXMLException(Conversions.ToString(ex.ErrorCode), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Delete Subcontractor failed!", ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: Conversions.ToString(ex.ErrorCode)); + } + + catch (Exception ex) + { + strException = CombineXMLException(defWSErrCode, ex.Message, "Delete Subcontractor failed!", ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: defWSErrCode); + } + + finally + { + DelSubcontractorRet = CombineXMLResponse(strIdentity, "", strException, strResult, ""); + + } + + return DelSubcontractorRet; + + } + + [WebMethod(Description = "Approve Specified Subcontractor Data")] + public string ApproveSubcontractor(string InXml) + { + string ApproveSubcontractorRet = default(string); + + string IssueNo = "SUBCONTRACTOR BASIS"; // 簽核編號:SUBCONTRACTOR BASIS.若找不到,表示直接將狀態改為Active. + var SubcontractorNo = default(string); + int IssueState; + var objIssue = new kcISSUE.clsIssue(); + DataRow IssueDR; + int DataStamp = defInteger; + + ArriveTime = DateTime.Now; + + try + { + // 讀取InXml字串 + xmlDoc.LoadXml(InXml); + // 組Identity字串 + strIdentity = CombineXMLIdentity(Environment.MachineName, GetXMLCurUserNo(xmlDoc), Conversions.ToString(ArriveTime)); + + // 開始解譯InXml字串 + // Subcontractor一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorNo = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + // IssueState一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("issuestate").Count > 0) + { + if (xmlDoc.GetElementsByTagName("issuestate").Item(0).SelectNodes("value").Count > 0) + { + IssueState = Conversions.ToInteger(xmlDoc.DocumentElement.GetElementsByTagName("issuestate").Item(0).SelectNodes("value").Item(0).InnerText); + } + else + { + throw new iMESException.MESException("0000-200002", "[%IssueState%]"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "[%IssueState%]"); + } + + // DataStamp + GetXMLTagValue(ref DataStamp, xmlDoc, "datastamp", true); + + if (IssueState == 0) // 當狀態為Unfrozen時才作 + { + // 去IssueManagement中找核准的方式 + IssueDR = objIssue.GetIssueJobMap(IssueNo); + + // 找不到表示bypass直接核准 + if (IssueDR["JobNo"] is DBNull) + { + // 直接核准 + objENT.SetSubcontractorIssueState(SubcontractorNo, 2, DataStamp: DataStamp, Reviser: GetXMLCurUserNo(xmlDoc), ReviseDate: ArriveTime); + objSYS.AddEventLog("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, "ApproveSubcontractor"); + } + + else + { + // 檢查JobNo是否有定義Detail檔,沒有Detail檔則直接核准 + DataRow tmpDR; + tmpDR = objIssue.GetIssueJobDetail(Conversions.ToString(IssueDR["JobNo"])); + if (tmpDR["JobNo"] is DBNull) + { + objENT.SetSubcontractorIssueState(SubcontractorNo, 2, DataStamp: DataStamp, Reviser: GetXMLCurUserNo(xmlDoc), ReviseDate: ArriveTime); + objSYS.AddEventLog("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, "ApproveSubcontractor"); + } + + else + { + // 將狀態改為Pending,且應以找到的JobNo來進入簽核 + // 填入簽核現況檔之Initial + var ApproveSQL = new Collection(); + var RejectSQL = new Collection(); + string tmpSQL; + string IssueSubject; + string IssueMasterNo; + + // 核准後應將狀態改為Active + tmpSQL = "Update tblENTSubcontractor_21670 Set IssueState = 2 Where SubcontractorNo = '" + SubcontractorNo + "'"; + ApproveSQL.Add(tmpSQL); + // 退回則應將狀態回復到Unfrozen + tmpSQL = "Update tblENTSubcontractor_21670 Set IssueState = 0 Where SubcontractorNo = '" + SubcontractorNo + "'"; + RejectSQL.Add(tmpSQL); + + // Creator未傳入表示以目前的User + string Creator; + if (xmlDoc.DocumentElement.GetElementsByTagName("creator").Count > 0) + { + if (xmlDoc.GetElementsByTagName("creator").Item(0).SelectNodes("value").Count > 0) + { + Creator = xmlDoc.DocumentElement.GetElementsByTagName("creator").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + Creator = GetXMLCurUserNo(xmlDoc); + } + } + else + { + Creator = GetXMLCurUserNo(xmlDoc); + } + + IssueSubject = "SubcontractorNo: " + SubcontractorNo; + IssueMasterNo = objIssue.InitIssueMasterNo(); + // 此筆資料進入Issue流程 + objIssue.StartIssueProcess(IssueMasterNo, ApproveSQL, RejectSQL, IssueNo, IssueDR["JobNo"].ToString(), IssueSubject, Creator); + // 將狀態改為Pending + objENT.SetSubcontractorIssueState(SubcontractorNo, 1, DataStamp: DataStamp, Reviser: GetXMLCurUserNo(xmlDoc), ReviseDate: ArriveTime); + + objSYS.AddEventLog("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, "ApproveSubcontractor"); + + // 發Email給JobSerialNo=1之負責群組 + objIssue.SendEmailToFirstGroup(IssueMasterNo, IssueSubject); + } + } + } + strException = ""; + strResult = "success"; + } + + + catch (iMESException.MESException ex) + { + strException = CombineXMLException(Conversions.ToString(ex.ErrorCode), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Approve Subcontractor failed!", ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: Conversions.ToString(ex.ErrorCode)); + } + + catch (Exception ex) + { + strException = CombineXMLException(defWSErrCode, ex.Message, "Approve Subcontractor failed!", ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: defWSErrCode); + } + + finally + { + // 將各部份之XML字串組起來並傳出 + ApproveSubcontractorRet = CombineXMLResponse(strIdentity, "", strException, strResult, ""); + } + + return ApproveSubcontractorRet; + + } + + // Subcontractor Contactor + [WebMethod(Description = "Load Subcontractor Contactor Data")] + public string LoadSubcontractorCont(string InXml) + { + string LoadSubcontractorContRet = default(string); + + // 先給預設值,以判斷是否有傳入該參數 + string SubcontractorNo = defString; + string ContactorName = defString; + + ArriveTime = DateTime.Now; + + try + { + // 讀取InXml字串 + xmlDoc.LoadXml(InXml); + // 組Identity字串 + strIdentity = CombineXMLIdentity(Environment.MachineName, GetXMLCurUserNo(xmlDoc), Conversions.ToString(ArriveTime)); + + // 判斷是否有傳入SubcontractorNo,若有,表示要依SubcontractorNo查詢 + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorNo = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + if (xmlDoc.DocumentElement.GetElementsByTagName("contactorname").Count > 0) + { + if (xmlDoc.GetElementsByTagName("contactorname").Item(0).SelectNodes("value").Count > 0) + { + ContactorName = xmlDoc.DocumentElement.GetElementsByTagName("contactorname").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + + // 呼叫Dll執行 + strReturnValue = objENT.LoadSubcontractorCont(SubcontractorNo, ContactorName); + strException = ""; + strResult = "success"; + } + + catch (iMESException.MESException ex) + { + strReturnValue = ""; + strException = CombineXMLException(Conversions.ToString(ex.ErrorCode), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Show Subcontractor Contactor Failed!!", ex.StackTrace); + strResult = "fail"; + } + + catch (Exception ex) + { + strReturnValue = ""; + strException = CombineXMLException(defWSErrCode, ex.Message, "Show Subcontractor Contactor Failed!!", ex.StackTrace); + strResult = "fail"; + } + + finally + { + // 將各部份之XML字串組起來並傳出 + LoadSubcontractorContRet = CombineXMLResponse(strIdentity, strReturnValue, strException, strResult, ""); + + } + + return LoadSubcontractorContRet; + + } + + [WebMethod(Description = "Add Subcontractor Contactor data")] + public string AddSubcontractorCont(string InXml) + { + string AddSubcontractorContRet = default(string); + // 先給預設值,以判斷是否有傳入該參數 + var SubcontractorNo = default(string); + var ContactorName = default(string); + string TelNo = defString; + string FaxNo = defString; + string Title = defString; + string Address = defString; + string EMail = defString; + string Description = defString; + string AdditionalXml = ""; + + ArriveTime = DateTime.Now; + + try + { + // 讀取InXml字串 + xmlDoc.LoadXml(InXml); + + // 組Identity字串 + strIdentity = CombineXMLIdentity(Environment.MachineName, GetXMLCurUserNo(xmlDoc), Conversions.ToString(ArriveTime)); + + // 開始解譯InXml字串 + // SubcontractorNo一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorNo = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + // ContactorName一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("contactorname").Count > 0) + { + if (xmlDoc.GetElementsByTagName("contactorname").Item(0).SelectNodes("value").Count > 0) + { + ContactorName = xmlDoc.DocumentElement.GetElementsByTagName("contactorname").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + throw new iMESException.MESException("0000-200002", "ContactorName Not Found!"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "ContactorName Not Found!"); + } + // TelNo + if (xmlDoc.DocumentElement.GetElementsByTagName("telno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("telno").Item(0).SelectNodes("value").Count > 0) + { + TelNo = xmlDoc.DocumentElement.GetElementsByTagName("telno").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // FaxNo + if (xmlDoc.DocumentElement.GetElementsByTagName("faxno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("faxno").Item(0).SelectNodes("value").Count > 0) + { + FaxNo = xmlDoc.DocumentElement.GetElementsByTagName("faxno").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // Title + if (xmlDoc.DocumentElement.GetElementsByTagName("title").Count > 0) + { + if (xmlDoc.GetElementsByTagName("title").Item(0).SelectNodes("value").Count > 0) + { + Title = xmlDoc.DocumentElement.GetElementsByTagName("title").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // Address + if (xmlDoc.DocumentElement.GetElementsByTagName("address").Count > 0) + { + if (xmlDoc.GetElementsByTagName("address").Item(0).SelectNodes("value").Count > 0) + { + Address = xmlDoc.DocumentElement.GetElementsByTagName("address").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // EMail + if (xmlDoc.DocumentElement.GetElementsByTagName("email").Count > 0) + { + if (xmlDoc.GetElementsByTagName("email").Item(0).SelectNodes("value").Count > 0) + { + EMail = xmlDoc.DocumentElement.GetElementsByTagName("email").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // Description + if (xmlDoc.DocumentElement.GetElementsByTagName("description").Count > 0) + { + if (xmlDoc.GetElementsByTagName("description").Item(0).SelectNodes("value").Count > 0) + { + Description = xmlDoc.DocumentElement.GetElementsByTagName("description").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // AdditionalXml + GetXMLTagValue(ref AdditionalXml, xmlDoc, "additionalxml"); + + + // 呼叫Dll執行新增資料 + objENT.AddSubcontractorCont(SubcontractorNo, ContactorName, TelNo, FaxNo, Title, Address, EMail, Description, AdditionalXml, GetXMLCurUserNo(xmlDoc), ArriveTime); + + strException = ""; + strResult = "success"; + + objSYS.AddEventLog("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, "AddSubcontractorContactor ContactorName:" + ContactorName); + } + + catch (iMESException.MESException ex) + { + strException = CombineXMLException(Conversions.ToString(ex.ErrorCode), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Add SubcontractorContactor Data failed, ContactorName:" + ContactorName, ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: Conversions.ToString(ex.ErrorCode)); + } + + catch (Exception ex) + { + strException = CombineXMLException(defWSErrCode, ex.Message, "Add SubcontractorContactor Data failed, ContactorName:" + ContactorName, ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: defWSErrCode); + } + + finally + { + // 將各部份之XML字串組起來並傳出 + AddSubcontractorContRet = CombineXMLResponse(strIdentity, "", strException, strResult, ""); + + } + + return AddSubcontractorContRet; + + } + + [WebMethod(Description = "Edit Specified Subcontractor Contactor Data")] + public string EditSubcontractorCont(string InXml) + { + string EditSubcontractorContRet = default(string); + // 先給預設值,以判斷是否有傳入該參數 + var SubcontractorNo = default(string); + var ContactorName = default(string); + string TelNo = defString; + string FaxNo = defString; + string Title = defString; + string Address = defString; + string EMail = defString; + string Description = defString; + + int DataStamp = defInteger; + string AdditionalXml = ""; + + ArriveTime = DateTime.Now; + + try + { + // 讀取InXml字串 + xmlDoc.LoadXml(InXml); + // 組Identity字串 + strIdentity = CombineXMLIdentity(Environment.MachineName, GetXMLCurUserNo(xmlDoc), Conversions.ToString(ArriveTime)); + + // 開始解譯InXml字串 + // SubcontractorNo一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorNo = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + // ContactorName一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("contactorname").Count > 0) + { + if (xmlDoc.GetElementsByTagName("contactorname").Item(0).SelectNodes("value").Count > 0) + { + ContactorName = xmlDoc.DocumentElement.GetElementsByTagName("contactorname").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + throw new iMESException.MESException("0000-200002", "ContactorName Not Found!"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "ContactorName Not Found!"); + } + // TelNo + if (xmlDoc.DocumentElement.GetElementsByTagName("telno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("telno").Item(0).SelectNodes("value").Count > 0) + { + TelNo = xmlDoc.DocumentElement.GetElementsByTagName("telno").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // FaxNo + if (xmlDoc.DocumentElement.GetElementsByTagName("faxno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("faxno").Item(0).SelectNodes("value").Count > 0) + { + FaxNo = xmlDoc.DocumentElement.GetElementsByTagName("faxno").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // Title + if (xmlDoc.DocumentElement.GetElementsByTagName("title").Count > 0) + { + if (xmlDoc.GetElementsByTagName("title").Item(0).SelectNodes("value").Count > 0) + { + Title = xmlDoc.DocumentElement.GetElementsByTagName("title").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // Address + if (xmlDoc.DocumentElement.GetElementsByTagName("address").Count > 0) + { + if (xmlDoc.GetElementsByTagName("address").Item(0).SelectNodes("value").Count > 0) + { + Address = xmlDoc.DocumentElement.GetElementsByTagName("address").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // EMail + if (xmlDoc.DocumentElement.GetElementsByTagName("email").Count > 0) + { + if (xmlDoc.GetElementsByTagName("email").Item(0).SelectNodes("value").Count > 0) + { + EMail = xmlDoc.DocumentElement.GetElementsByTagName("email").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // Description + if (xmlDoc.DocumentElement.GetElementsByTagName("description").Count > 0) + { + if (xmlDoc.GetElementsByTagName("description").Item(0).SelectNodes("value").Count > 0) + { + Description = xmlDoc.DocumentElement.GetElementsByTagName("description").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + + // AdditionalXml + GetXMLTagValue(ref AdditionalXml, xmlDoc, "additionalxml"); + + // DataStamp + GetXMLTagValue(ref DataStamp, xmlDoc, "datastamp", true); + + // If IssueState = 0 Then 'Unfrozen時才可修改 + // 有修改欄位值時 + if ((TelNo ?? "") != defString | (FaxNo ?? "") != defString | (Title ?? "") != defString | (Address ?? "") != defString | (EMail ?? "") != defString | (Description ?? "") != defString) + { + // 呼叫Dll執行修改 + objENT.EditSubcontractorCont(SubcontractorNo, ContactorName, TelNo, FaxNo, Title, Address, EMail, Description, AdditionalXml, DataStamp: DataStamp, Reviser: GetXMLCurUserNo(xmlDoc), ReviseDate: ArriveTime); + } + // End If + + strException = ""; + strResult = "success"; + + objSYS.AddEventLog("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, "EditSubcontractorContactor ContactorName:" + ContactorName); + } + + catch (iMESException.MESException ex) + { + strException = CombineXMLException(Conversions.ToString(ex.ErrorCode), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Edit SubcontractorContactor Data failed, ContactorName:" + ContactorName, ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: Conversions.ToString(ex.ErrorCode)); + } + + catch (Exception ex) + { + strException = CombineXMLException(defWSErrCode, ex.Message, "Edit SubcontractorContactor Data failed, ContactorName:" + ContactorName, ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: defWSErrCode); + } + + finally + { + // 將各部份之XML字串組起來並傳出 + EditSubcontractorContRet = CombineXMLResponse(strIdentity, "", strException, strResult, ""); + + } + + return EditSubcontractorContRet; + + } + + [WebMethod(Description = "Delete Subcontractor Contactor By Specified SubcontractorNo and ContactorName")] + public string DelSubcontractorCont(string InXml) + { + string DelSubcontractorContRet = default(string); + + var SubcontractorNo = default(string); + string ContactorName = defString; // 沒有傳入表示要刪除指定Subcontractor的所有Contactor + + ArriveTime = DateTime.Now; + + try + { + // 讀取InXml字串 + xmlDoc.LoadXml(InXml); + // 組Identity字串 + strIdentity = CombineXMLIdentity(Environment.MachineName, GetXMLCurUserNo(xmlDoc), Conversions.ToString(ArriveTime)); + + // 開始解譯InXml字串 + // SubcontractorNo一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorNo = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + // ContactorName一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("contactorname").Count > 0) + { + if (xmlDoc.GetElementsByTagName("contactorname").Item(0).SelectNodes("value").Count > 0) + { + ContactorName = xmlDoc.DocumentElement.GetElementsByTagName("contactorname").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + + objENT.DelSubcontractorCont(SubcontractorNo, ContactorName); + + strException = ""; + strResult = "success"; + + objSYS.AddEventLog("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, "DelSubcontractorContactor ContactorName:" + ContactorName); + } + + catch (iMESException.MESException ex) + { + strException = CombineXMLException(Conversions.ToString(ex.ErrorCode), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Del SubcontractorContactor Data failed, ContactorName:" + ContactorName, ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: Conversions.ToString(ex.ErrorCode)); + } + + catch (Exception ex) + { + strException = CombineXMLException(defWSErrCode, ex.Message, "Del SubcontractorContactor Data failed, ContactorName:" + ContactorName, ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: defWSErrCode); + } + + finally + { + DelSubcontractorContRet = CombineXMLResponse(strIdentity, "", strException, strResult, ""); + + } + + return DelSubcontractorContRet; + + } + + + #endregion + } +} diff --git a/SRC/MESWin/SYS4/21670ll/wsSXS/wsSXS.csproj b/SRC/MESWin/SYS4/21670ll/wsSXS/wsSXS.csproj new file mode 100644 index 0000000..47d0b9f --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/wsSXS/wsSXS.csproj @@ -0,0 +1,180 @@ + + + + + Debug + AnyCPU + {881686CE-A940-0485-2766-D411835B2FBB} + Library + wsSXS + wsSXS + 512 + Windows + v4.6.2 + + SAK + SAK + SAK + SAK + $(DefaultItemExcludes);$(ProjectDir)**\*.vb + + + true + full + true + true + ..\MES_S_DLL\ + ..\MES_S_DLL\wsSXS.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + 0 + false + + + pdbonly + false + true + true + ..\..\MES_S_DLL\ + ..\..\MES_S_DLL\ + + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + 0 + false + + + On + + + Binary + + + Off + + + On + + + + False + ..\MES_S_DLL\kcISSUE.dll + + + False + ..\MES_S_DLL\MEStc_SXS.dll + + + + False + ..\MES_S_DLL\iMESAppSetting.dll + False + + + False + ..\MES_S_DLL\iMESComSubroutine.dll + False + + + False + ..\MES_S_DLL\iMESComXML.dll + False + + + False + ..\MES_S_DLL\iMESConst.dll + False + + + ..\MES_S_DLL\iMESException.dll + False + + + False + ..\MES_S_DLL\iMESSCI.dll + False + + + ..\MES_S_DLL\kcSYS.dll + False + False + + + False + ..\MES_S_DLL\Newtonsoft.Json.dll + False + + + + + + + + + + + + + + + False + + + + + + + + + + + + + + + + True + Application.myapp + + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + wsABC.My.Resources + Designer + + + + + MyApplicationCodeGenerator + Application.Designer.cs + + + SettingsSingleFileGenerator + wsABC.My + Settings.Designer.cs + + + + + + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/wsSXS/wsSXS.csproj.user b/SRC/MESWin/SYS4/21670ll/wsSXS/wsSXS.csproj.user new file mode 100644 index 0000000..3c48538 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/wsSXS/wsSXS.csproj.user @@ -0,0 +1,6 @@ + + + + E:\code\SRC\MES_S_DLL\ + + \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/wsSXS/wsSXS.sln b/SRC/MESWin/SYS4/21670ll/wsSXS/wsSXS.sln new file mode 100644 index 0000000..13847da --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/wsSXS/wsSXS.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.32630.194 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "wsSXS", "wsSXS.csproj", "{881686CE-A940-0485-2766-D411835B2FBB}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {881686CE-A940-0485-2766-D411835B2FBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {881686CE-A940-0485-2766-D411835B2FBB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {881686CE-A940-0485-2766-D411835B2FBB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {881686CE-A940-0485-2766-D411835B2FBB}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {7B40A25F-A0CA-49E5-AB24-36F7949771DE} + EndGlobalSection +EndGlobal diff --git a/SRC/MESWin/SYS4/21670ll/wsSXS/wsWIP/wsWIP.cs b/SRC/MESWin/SYS4/21670ll/wsSXS/wsWIP/wsWIP.cs new file mode 100644 index 0000000..f8474ef --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/wsSXS/wsWIP/wsWIP.cs @@ -0,0 +1,131 @@ +using System; +using Microsoft.VisualBasic; +using static iMESCore.Base.iMESComSubroutine; +using static iMESCore.Base.iMESComXML; +using static iMESCore.Base.iMESConst; +using iMESCore.Settings; + +namespace wsSXS +{ + + public class wsWIP + { + + private iMESCore.Settings.AppSettings objSetting = new iMESCore.Settings.AppSettings(); + private System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); // 用以讀取Xml字串 + private DateTime ArriveTime; // 送達時間 + private string strIdentity; // Identity XML字串 + private string strReturnValue; // ReturnValue XML字串 + private string strException; // Exception XML字串 + private string strResult; // Result XML字串 + private string strMessage; // Message XML字串 + private string strServiceName = "wsWIP_SXS"; // ServiceName + private string strResourceDir = "Resources"; + + private kcSYS.clsSYSUserLog objSYS = new kcSYS.clsSYSUserLog(); // 宣告Sys的物件 + + public wsWIP() + { + try + { + strResourceDir = System.IO.Path.Combine("wsUpdateResource", objSetting["ResourceDir"].ToString()); + } + catch (Exception) + { } + } + + public string HelloWorld(string InXml) + { + return "HelloWorld"; + } + + + //public string LoadOPMaterialState(string InXml) + //{ + // string LoadOPMaterialStateRet = null; + + // // 先給預設值,以判斷是否有傳入該參數 + // string OPNo = defString; + // string MaterialNo = defString; + // string MaterialLotNo = defString; + // string UnitNo = defString; + // string MaterialType = defString; + + // ArriveTime = DateTime.Now; + + // try + // { + // // 讀取InXml字串 + // xmlDoc.LoadXml(InXml); + // // 組Identity字串 + // strIdentity = CombineXMLIdentity(Environment.MachineName, GetXMLCurUserNo(xmlDoc), ArriveTime.ToString(defDateTimeFormat)); + + // // 判斷是否有傳入OPNo,若有,表示要依OPNo查詢 + // if (xmlDoc.DocumentElement.GetElementsByTagName("opno").Count > 0) + // { + // if (xmlDoc.GetElementsByTagName("opno").Item(0).SelectNodes("value").Count > 0) + // { + // OPNo = xmlDoc.DocumentElement.GetElementsByTagName("opno").Item(0).SelectNodes("value").Item(0).InnerText; + // } + // } + // // 判斷是否有傳入MaterialNo,若有,表示要依MaterialNo查詢 + // if (xmlDoc.DocumentElement.GetElementsByTagName("materialno").Count > 0) + // { + // if (xmlDoc.GetElementsByTagName("materialno").Item(0).SelectNodes("value").Count > 0) + // { + // MaterialNo = xmlDoc.DocumentElement.GetElementsByTagName("materialno").Item(0).SelectNodes("value").Item(0).InnerText; + // } + // } + // // 判斷是否有傳入MaterialLotNo,若有,表示要依MaterialLotNo查詢 + // if (xmlDoc.DocumentElement.GetElementsByTagName("materiallotno").Count > 0) + // { + // if (xmlDoc.GetElementsByTagName("materiallotno").Item(0).SelectNodes("value").Count > 0) + // { + // MaterialLotNo = xmlDoc.DocumentElement.GetElementsByTagName("materiallotno").Item(0).SelectNodes("value").Item(0).InnerText; + // } + // } + // if (xmlDoc.DocumentElement.GetElementsByTagName("unitno").Count > 0) + // { + // if (xmlDoc.GetElementsByTagName("unitno").Item(0).SelectNodes("value").Count > 0) + // { + // UnitNo = xmlDoc.DocumentElement.GetElementsByTagName("unitno").Item(0).SelectNodes("value").Item(0).InnerText; + // } + // } + // if (xmlDoc.DocumentElement.GetElementsByTagName("materialtype").Count > 0) + // { + // if (xmlDoc.GetElementsByTagName("materialtype").Item(0).SelectNodes("value").Count > 0) + // { + // MaterialType = xmlDoc.DocumentElement.GetElementsByTagName("materialtype").Item(0).SelectNodes("value").Item(0).InnerText; + // } + // } + + // // 呼叫Dll執行 + // //strReturnValue = objWIP.LoadOPMaterialState(OPNo, MaterialNo, MaterialLotNo, UnitNo, MaterialType); + // strException = ""; + // strResult = "success"; + // } + + // catch (iMESException.MESException ex) + // { + // strReturnValue = ""; + // strException = CombineXMLException(ex.ErrorCode.ToString(), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Load OP Material State Fail!!", ex.StackTrace); + // strResult = "fail"; + // } + + // catch (Exception ex) + // { + // strReturnValue = ""; + // strException = CombineXMLException(defWSErrCode, ex.Message, "Load OP Material State Fail!!", ex.StackTrace); + // strResult = "fail"; + // } + + // finally + // { + // // 將各部份之XML字串組起來並傳出 + // LoadOPMaterialStateRet = CombineXMLResponse(strIdentity, strReturnValue, strException, strResult, ""); + // } + // return LoadOPMaterialStateRet; + + //} + } +} \ No newline at end of file diff --git a/SRC/MESWin/SYS4/21670ll/wsSXS/wxENT/wsENT.cs b/SRC/MESWin/SYS4/21670ll/wsSXS/wxENT/wsENT.cs new file mode 100644 index 0000000..b603955 --- /dev/null +++ b/SRC/MESWin/SYS4/21670ll/wsSXS/wxENT/wsENT.cs @@ -0,0 +1,1101 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System; +using System.Data; +using System.Web.Services; +using Microsoft.VisualBasic; +using Microsoft.VisualBasic.CompilerServices; +using static iMESCore.Base.iMESComXML; +using static iMESCore.Base.iMESConst; +using static iMESCore.Base.iMESComSubroutine; +namespace wsSXS +{ + public class wsENT + { + private MEStc_SXS.clsENT_21670 objENT = new MEStc_SXS.clsENT_21670(); + private kcSYS.clsSYSUserLog objSYS = new kcSYS.clsSYSUserLog(); // 宣告Sys的物件 + //private kcBasis_UPD.clsBasis_UPD objBasis = new kcBasis_UPD.clsBasis_UPD(); //主檔優化 + //private kcBasis_Query.clsBasis_Query objQuery = new kcBasis_Query.clsBasis_Query(); //主檔優化 + private System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); // 用以讀取Xml字串 + private DateTime ArriveTime; // 送達時間 + private string strIdentity; // Identity XML字串 + private string strReturnValue; // ReturnValue XML字串 + private string strException; // Exception XML字串 + private string strResult; // Result XML字串 + private string strMessage; // Message XML字串 + private iMESCore.Settings.AppSettings objSetting = new iMESCore.Settings.AppSettings(); + private string strResourceDir = "Resources"; + + public wsENT() + { + try + { + strResourceDir = System.IO.Path.Combine("wsUpdateResource", objSetting["ResourceDir"].ToString()); + } + catch (Exception) + { } + } + + #region --- Subcontractor 外包商 --- + + [WebMethod(Description = "Load Subcontractor Data")] + public string LoadSubcontractor(string InXml) + { + string LoadSubcontractorRet = default(string); + + // 先給預設值,以判斷是否有傳入該參數 + string SubcontractorNo = defString; + int IssueState = 2; + + ArriveTime = DateTime.Now; + string AdditionalXml = ""; + try + { + // 讀取InXml字串 + xmlDoc.LoadXml(InXml); + // 組Identity字串 + strIdentity = CombineXMLIdentity(Environment.MachineName, GetXMLCurUserNo(xmlDoc), Conversions.ToString(ArriveTime)); + + // 判斷是否有傳入Subcontractor,若有,表示要依Subcontractor查詢 + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorNo = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // 判斷是否有傳入IssueState,若有,表示要依IssueState查詢 + if (xmlDoc.DocumentElement.GetElementsByTagName("issuestate").Count > 0) + { + if (xmlDoc.GetElementsByTagName("issuestate").Item(0).SelectNodes("value").Count > 0) + { + IssueState = Conversions.ToInteger(xmlDoc.DocumentElement.GetElementsByTagName("issuestate").Item(0).SelectNodes("value").Item(0).InnerText); + } + } + + // 呼叫副程式處理查詢條件與Additional格式 + AdditionalXml = CombineXMLQueryAdditional(xmlDoc); + + // 呼叫Dll執行 + strReturnValue = objENT.LoadSubcontractor(SubcontractorNo, IssueState, AdditionalXml); + strException = ""; + strResult = "success"; + } + + catch (iMESException.MESException ex) + { + strReturnValue = ""; + strException = CombineXMLException(Conversions.ToString(ex.ErrorCode), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Show Subcontractor Failed!!", ex.StackTrace); + strResult = "fail"; + } + + catch (Exception ex) + { + strReturnValue = ""; + strException = CombineXMLException(defWSErrCode, ex.Message, "Show Subcontractor Failed!!", ex.StackTrace); + strResult = "fail"; + } + + finally + { + // 將各部份之XML字串組起來並傳出 + LoadSubcontractorRet = CombineXMLResponse(strIdentity, strReturnValue, strException, strResult, ""); + + } + + return LoadSubcontractorRet; + + } + + [WebMethod(Description = "Add Subcontractor data")] + public string AddSubcontractor(string InXml) + { + string AddSubcontractorRet = default(string); + + // 先給預設值,以判斷是否有傳入該參數 + var SubcontractorNo = default(string); + string SubcontractorName; + string Description = defString; + string WZ21670 = defString; + string Creator = defString; + + ArriveTime = DateTime.Now; + + try + { + // 讀取InXml字串 + xmlDoc.LoadXml(InXml); + + // 組Identity字串 + strIdentity = CombineXMLIdentity(Environment.MachineName, GetXMLCurUserNo(xmlDoc), Conversions.ToString(ArriveTime)); + + // 開始解譯InXml字串 + // Subcontractor一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorNo = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorname").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorname").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorName = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorname").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorName Not Found!"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorName Not Found!"); + } + // Description + if (xmlDoc.DocumentElement.GetElementsByTagName("description").Count > 0) + { + if (xmlDoc.GetElementsByTagName("description").Item(0).SelectNodes("value").Count > 0) + { + Description = xmlDoc.DocumentElement.GetElementsByTagName("description").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // WZ21670 + if (xmlDoc.DocumentElement.GetElementsByTagName("wz21670").Count > 0) + { + if (xmlDoc.GetElementsByTagName("wz21670").Item(0).SelectNodes("value").Count > 0) + { + WZ21670 = xmlDoc.DocumentElement.GetElementsByTagName("wz21670").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // Creator + if (xmlDoc.DocumentElement.GetElementsByTagName("creator").Count > 0) + { + if (xmlDoc.GetElementsByTagName("creator").Item(0).SelectNodes("value").Count > 0) + { + Creator = xmlDoc.DocumentElement.GetElementsByTagName("creator").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + + // 呼叫Dll執行新增資料 + objENT.AddSubcontractor(SubcontractorNo, SubcontractorName,WZ21670, Description,Creator); + + strException = ""; + strResult = "success"; + + objSYS.AddEventLog("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, "AddSubcontractor"); + } + + catch (iMESException.MESException ex) + { + strException = CombineXMLException(Conversions.ToString(ex.ErrorCode), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Add Subcontractor failed!", ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: Conversions.ToString(ex.ErrorCode)); + } + + catch (Exception ex) + { + strException = CombineXMLException(defWSErrCode, ex.Message, "Add Subcontractor failed!", ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: defWSErrCode); + } + + finally + { + // 將各部份之XML字串組起來並傳出 + AddSubcontractorRet = CombineXMLResponse(strIdentity, "", strException, strResult, ""); + + } + + return AddSubcontractorRet; + + } + + [WebMethod(Description = "Edit Specified Subcontractor Data")] + public string EditSubcontractor(string InXml) + { + string EditSubcontractorRet = default(string); + + // 參數先給預設值,以判斷是否有傳入該參數 + var SubcontractorNo = default(string); + int IssueState = defInteger; + string WZ21670 = defString; + string SubcontractorName = defString; + string Description = defString; + + int DataStamp = defInteger; + string AdditionalXml = ""; + + ArriveTime = DateTime.Now; + + try + { + // 讀取InXml字串 + xmlDoc.LoadXml(InXml); + // 組Identity字串 + strIdentity = CombineXMLIdentity(Environment.MachineName, GetXMLCurUserNo(xmlDoc), Conversions.ToString(ArriveTime)); + + // 開始解譯InXml字串 + // Subcontractor一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorNo = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + // IssueState一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("issuestate").Count > 0) + { + if (xmlDoc.GetElementsByTagName("issuestate").Item(0).SelectNodes("value").Count > 0) + { + IssueState = Conversions.ToInteger(xmlDoc.DocumentElement.GetElementsByTagName("issuestate").Item(0).SelectNodes("value").Item(0).InnerText); + } + else + { + throw new iMESException.MESException("0000-200002", "[%IssueState%]"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "[%IssueState%]"); + } + // SubcontractorName不可空白 + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorname").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorname").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorName = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorname").Item(0).SelectNodes("value").Item(0).InnerText; + if (string.IsNullOrEmpty(SubcontractorName)) + { + throw new iMESException.MESException("0000-200001", "SubcontractorName is empty!"); + } + } + } + // WZ21670 + if (xmlDoc.DocumentElement.GetElementsByTagName("wz21670").Count > 0) + { + if (xmlDoc.GetElementsByTagName("wz21670").Item(0).SelectNodes("value").Count > 0) + { + WZ21670 = xmlDoc.DocumentElement.GetElementsByTagName("wz21670").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // Description + if (xmlDoc.DocumentElement.GetElementsByTagName("description").Count > 0) + { + if (xmlDoc.GetElementsByTagName("description").Item(0).SelectNodes("value").Count > 0) + { + Description = xmlDoc.DocumentElement.GetElementsByTagName("description").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + + // AdditionalXml + GetXMLTagValue(ref AdditionalXml, xmlDoc, "additionalxml"); + + // DataStamp + GetXMLTagValue(ref DataStamp, xmlDoc, "datastamp", true); + + if (IssueState == 0) // Unfrozen時才可修改 + { + // 有修改欄位值時 + if ((SubcontractorName ?? "") != defString | (Description ?? "") != defString) + { + // 呼叫Dll執行修改 + objENT.EditSubcontractor(SubcontractorNo,WZ21670, SubcontractorName, Description, AdditionalXml, DataStamp: DataStamp, Reviser: GetXMLCurUserNo(xmlDoc), ReviseDate: ArriveTime); + } + } + + strException = ""; + strResult = "success"; + + objSYS.AddEventLog("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, "EditSubcontractor"); + } + + catch (iMESException.MESException ex) + { + strException = CombineXMLException(Conversions.ToString(ex.ErrorCode), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Edit Subcontractor failed!", ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: Conversions.ToString(ex.ErrorCode)); + } + + catch (Exception ex) + { + strException = CombineXMLException(defWSErrCode, ex.Message, "Edit Subcontractor failed!", ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: defWSErrCode); + } + + finally + { + // 將各部份之XML字串組起來並傳出 + EditSubcontractorRet = CombineXMLResponse(strIdentity, "", strException, strResult, ""); + } + + return EditSubcontractorRet; + + } + + [WebMethod(Description = "Delete Subcontractor By Specified Subcontractor")] + public string DelSubcontractor(string InXml) + { + string DelSubcontractorRet = default(string); + + var SubcontractorNo = default(string); + int IssueState; + string strDelState; // 寫入tblSysEventLog中的訊息,0:未簽核刪除,2:已簽核刪除,-1:不使用刪除 + int DataStamp = defInteger; + + ArriveTime = DateTime.Now; + + try + { + // 讀取InXml字串 + xmlDoc.LoadXml(InXml); + // 組Identity字串 + strIdentity = CombineXMLIdentity(Environment.MachineName, GetXMLCurUserNo(xmlDoc), Conversions.ToString(ArriveTime)); + + // 開始解譯InXml字串 + // Subcontractor一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorNo = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + // IssueState一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("issuestate").Count > 0) + { + if (xmlDoc.GetElementsByTagName("issuestate").Item(0).SelectNodes("value").Count > 0) + { + IssueState = Conversions.ToInteger(xmlDoc.DocumentElement.GetElementsByTagName("issuestate").Item(0).SelectNodes("value").Item(0).InnerText); + } + else + { + throw new iMESException.MESException("0000-200002", "[%IssueState%]"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "[%IssueState%]"); + } + + // DataStamp + GetXMLTagValue(ref DataStamp, xmlDoc, "datastamp", true); + + switch (IssueState) + { + case 0: + { + objENT.DelSubcontractor(SubcontractorNo); + strDelState = "未簽核刪除"; + break; + } + case 2: + { + objENT.SetSubcontractorIssueState(SubcontractorNo, -1, DataStamp: DataStamp, Reviser: GetXMLCurUserNo(xmlDoc), ReviseDate: ArriveTime); + strDelState = "已簽核刪除"; + break; + } + case -1: + { + objENT.DelSubcontractor(SubcontractorNo); + strDelState = "不使用刪除"; + break; + } + + default: + { + throw new iMESException.MESException("0000-200021", "[%IssueState%]"); + } + } + + strException = ""; + strResult = "success"; + + objSYS.AddEventLog("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, "DelSubcontractor:" + strDelState); + } + + catch (iMESException.MESException ex) + { + strException = CombineXMLException(Conversions.ToString(ex.ErrorCode), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Delete Subcontractor failed!", ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: Conversions.ToString(ex.ErrorCode)); + } + + catch (Exception ex) + { + strException = CombineXMLException(defWSErrCode, ex.Message, "Delete Subcontractor failed!", ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: defWSErrCode); + } + + finally + { + DelSubcontractorRet = CombineXMLResponse(strIdentity, "", strException, strResult, ""); + + } + + return DelSubcontractorRet; + + } + + [WebMethod(Description = "Approve Specified Subcontractor Data")] + public string ApproveSubcontractor(string InXml) + { + string ApproveSubcontractorRet = default(string); + + string IssueNo = "SUBCONTRACTOR BASIS"; // 簽核編號:SUBCONTRACTOR BASIS.若找不到,表示直接將狀態改為Active. + var SubcontractorNo = default(string); + int IssueState; + var objIssue = new kcISSUE.clsIssue(); + DataRow IssueDR; + int DataStamp = defInteger; + + ArriveTime = DateTime.Now; + + try + { + // 讀取InXml字串 + xmlDoc.LoadXml(InXml); + // 組Identity字串 + strIdentity = CombineXMLIdentity(Environment.MachineName, GetXMLCurUserNo(xmlDoc), Conversions.ToString(ArriveTime)); + + // 開始解譯InXml字串 + // Subcontractor一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorNo = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + // IssueState一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("issuestate").Count > 0) + { + if (xmlDoc.GetElementsByTagName("issuestate").Item(0).SelectNodes("value").Count > 0) + { + IssueState = Conversions.ToInteger(xmlDoc.DocumentElement.GetElementsByTagName("issuestate").Item(0).SelectNodes("value").Item(0).InnerText); + } + else + { + throw new iMESException.MESException("0000-200002", "[%IssueState%]"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "[%IssueState%]"); + } + + // DataStamp + GetXMLTagValue(ref DataStamp, xmlDoc, "datastamp", true); + + if (IssueState == 0) // 當狀態為Unfrozen時才作 + { + // 去IssueManagement中找核准的方式 + IssueDR = objIssue.GetIssueJobMap(IssueNo); + + // 找不到表示bypass直接核准 + if (IssueDR["JobNo"] is DBNull) + { + // 直接核准 + objENT.SetSubcontractorIssueState(SubcontractorNo, 2, DataStamp: DataStamp, Reviser: GetXMLCurUserNo(xmlDoc), ReviseDate: ArriveTime); + objSYS.AddEventLog("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, "ApproveSubcontractor"); + } + + else + { + // 檢查JobNo是否有定義Detail檔,沒有Detail檔則直接核准 + DataRow tmpDR; + tmpDR = objIssue.GetIssueJobDetail(Conversions.ToString(IssueDR["JobNo"])); + if (tmpDR["JobNo"] is DBNull) + { + objENT.SetSubcontractorIssueState(SubcontractorNo, 2, DataStamp: DataStamp, Reviser: GetXMLCurUserNo(xmlDoc), ReviseDate: ArriveTime); + objSYS.AddEventLog("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, "ApproveSubcontractor"); + } + + else + { + // 將狀態改為Pending,且應以找到的JobNo來進入簽核 + // 填入簽核現況檔之Initial + var ApproveSQL = new Collection(); + var RejectSQL = new Collection(); + string tmpSQL; + string IssueSubject; + string IssueMasterNo; + + // 核准後應將狀態改為Active + tmpSQL = "Update tblENTSubcontractor_21670 Set IssueState = 2 Where SubcontractorNo = '" + SubcontractorNo + "'"; + ApproveSQL.Add(tmpSQL); + // 退回則應將狀態回復到Unfrozen + tmpSQL = "Update tblENTSubcontractor_21670 Set IssueState = 0 Where SubcontractorNo = '" + SubcontractorNo + "'"; + RejectSQL.Add(tmpSQL); + + // Creator未傳入表示以目前的User + string Creator; + if (xmlDoc.DocumentElement.GetElementsByTagName("creator").Count > 0) + { + if (xmlDoc.GetElementsByTagName("creator").Item(0).SelectNodes("value").Count > 0) + { + Creator = xmlDoc.DocumentElement.GetElementsByTagName("creator").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + Creator = GetXMLCurUserNo(xmlDoc); + } + } + else + { + Creator = GetXMLCurUserNo(xmlDoc); + } + + IssueSubject = "SubcontractorNo: " + SubcontractorNo; + IssueMasterNo = objIssue.InitIssueMasterNo(); + // 此筆資料進入Issue流程 + objIssue.StartIssueProcess(IssueMasterNo, ApproveSQL, RejectSQL, IssueNo, IssueDR["JobNo"].ToString(), IssueSubject, Creator); + // 將狀態改為Pending + objENT.SetSubcontractorIssueState(SubcontractorNo, 1, DataStamp: DataStamp, Reviser: GetXMLCurUserNo(xmlDoc), ReviseDate: ArriveTime); + + objSYS.AddEventLog("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, "ApproveSubcontractor"); + + // 發Email給JobSerialNo=1之負責群組 + objIssue.SendEmailToFirstGroup(IssueMasterNo, IssueSubject); + } + } + } + strException = ""; + strResult = "success"; + } + + + catch (iMESException.MESException ex) + { + strException = CombineXMLException(Conversions.ToString(ex.ErrorCode), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Approve Subcontractor failed!", ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: Conversions.ToString(ex.ErrorCode)); + } + + catch (Exception ex) + { + strException = CombineXMLException(defWSErrCode, ex.Message, "Approve Subcontractor failed!", ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: defWSErrCode); + } + + finally + { + // 將各部份之XML字串組起來並傳出 + ApproveSubcontractorRet = CombineXMLResponse(strIdentity, "", strException, strResult, ""); + } + + return ApproveSubcontractorRet; + + } + + // Subcontractor Contactor + [WebMethod(Description = "Load Subcontractor Contactor Data")] + public string LoadSubcontractorCont(string InXml) + { + string LoadSubcontractorContRet = default(string); + + // 先給預設值,以判斷是否有傳入該參數 + string SubcontractorNo = defString; + string ContactorName = defString; + + ArriveTime = DateTime.Now; + + try + { + // 讀取InXml字串 + xmlDoc.LoadXml(InXml); + // 組Identity字串 + strIdentity = CombineXMLIdentity(Environment.MachineName, GetXMLCurUserNo(xmlDoc), Conversions.ToString(ArriveTime)); + + // 判斷是否有傳入SubcontractorNo,若有,表示要依SubcontractorNo查詢 + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorNo = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + if (xmlDoc.DocumentElement.GetElementsByTagName("contactorname").Count > 0) + { + if (xmlDoc.GetElementsByTagName("contactorname").Item(0).SelectNodes("value").Count > 0) + { + ContactorName = xmlDoc.DocumentElement.GetElementsByTagName("contactorname").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + + // 呼叫Dll執行 + strReturnValue = objENT.LoadSubcontractorCont(SubcontractorNo, ContactorName); + strException = ""; + strResult = "success"; + } + + catch (iMESException.MESException ex) + { + strReturnValue = ""; + strException = CombineXMLException(Conversions.ToString(ex.ErrorCode), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Show Subcontractor Contactor Failed!!", ex.StackTrace); + strResult = "fail"; + } + + catch (Exception ex) + { + strReturnValue = ""; + strException = CombineXMLException(defWSErrCode, ex.Message, "Show Subcontractor Contactor Failed!!", ex.StackTrace); + strResult = "fail"; + } + + finally + { + // 將各部份之XML字串組起來並傳出 + LoadSubcontractorContRet = CombineXMLResponse(strIdentity, strReturnValue, strException, strResult, ""); + + } + + return LoadSubcontractorContRet; + + } + + [WebMethod(Description = "Add Subcontractor Contactor data")] + public string AddSubcontractorCont(string InXml) + { + string AddSubcontractorContRet = default(string); + // 先給預設值,以判斷是否有傳入該參數 + var SubcontractorNo = default(string); + var ContactorName = default(string); + string TelNo = defString; + string FaxNo = defString; + string Title = defString; + string Address = defString; + string EMail = defString; + string Description = defString; + string AdditionalXml = ""; + + ArriveTime = DateTime.Now; + + try + { + // 讀取InXml字串 + xmlDoc.LoadXml(InXml); + + // 組Identity字串 + strIdentity = CombineXMLIdentity(Environment.MachineName, GetXMLCurUserNo(xmlDoc), Conversions.ToString(ArriveTime)); + + // 開始解譯InXml字串 + // SubcontractorNo一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorNo = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + // ContactorName一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("contactorname").Count > 0) + { + if (xmlDoc.GetElementsByTagName("contactorname").Item(0).SelectNodes("value").Count > 0) + { + ContactorName = xmlDoc.DocumentElement.GetElementsByTagName("contactorname").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + throw new iMESException.MESException("0000-200002", "ContactorName Not Found!"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "ContactorName Not Found!"); + } + // TelNo + if (xmlDoc.DocumentElement.GetElementsByTagName("telno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("telno").Item(0).SelectNodes("value").Count > 0) + { + TelNo = xmlDoc.DocumentElement.GetElementsByTagName("telno").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // FaxNo + if (xmlDoc.DocumentElement.GetElementsByTagName("faxno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("faxno").Item(0).SelectNodes("value").Count > 0) + { + FaxNo = xmlDoc.DocumentElement.GetElementsByTagName("faxno").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // Title + if (xmlDoc.DocumentElement.GetElementsByTagName("title").Count > 0) + { + if (xmlDoc.GetElementsByTagName("title").Item(0).SelectNodes("value").Count > 0) + { + Title = xmlDoc.DocumentElement.GetElementsByTagName("title").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // Address + if (xmlDoc.DocumentElement.GetElementsByTagName("address").Count > 0) + { + if (xmlDoc.GetElementsByTagName("address").Item(0).SelectNodes("value").Count > 0) + { + Address = xmlDoc.DocumentElement.GetElementsByTagName("address").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // EMail + if (xmlDoc.DocumentElement.GetElementsByTagName("email").Count > 0) + { + if (xmlDoc.GetElementsByTagName("email").Item(0).SelectNodes("value").Count > 0) + { + EMail = xmlDoc.DocumentElement.GetElementsByTagName("email").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // Description + if (xmlDoc.DocumentElement.GetElementsByTagName("description").Count > 0) + { + if (xmlDoc.GetElementsByTagName("description").Item(0).SelectNodes("value").Count > 0) + { + Description = xmlDoc.DocumentElement.GetElementsByTagName("description").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // AdditionalXml + GetXMLTagValue(ref AdditionalXml, xmlDoc, "additionalxml"); + + + // 呼叫Dll執行新增資料 + objENT.AddSubcontractorCont(SubcontractorNo, ContactorName, TelNo, FaxNo, Title, Address, EMail, Description, AdditionalXml, GetXMLCurUserNo(xmlDoc), ArriveTime); + + strException = ""; + strResult = "success"; + + objSYS.AddEventLog("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, "AddSubcontractorContactor ContactorName:" + ContactorName); + } + + catch (iMESException.MESException ex) + { + strException = CombineXMLException(Conversions.ToString(ex.ErrorCode), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Add SubcontractorContactor Data failed, ContactorName:" + ContactorName, ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: Conversions.ToString(ex.ErrorCode)); + } + + catch (Exception ex) + { + strException = CombineXMLException(defWSErrCode, ex.Message, "Add SubcontractorContactor Data failed, ContactorName:" + ContactorName, ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: defWSErrCode); + } + + finally + { + // 將各部份之XML字串組起來並傳出 + AddSubcontractorContRet = CombineXMLResponse(strIdentity, "", strException, strResult, ""); + + } + + return AddSubcontractorContRet; + + } + + [WebMethod(Description = "Edit Specified Subcontractor Contactor Data")] + public string EditSubcontractorCont(string InXml) + { + string EditSubcontractorContRet = default(string); + // 先給預設值,以判斷是否有傳入該參數 + var SubcontractorNo = default(string); + var ContactorName = default(string); + string TelNo = defString; + string FaxNo = defString; + string Title = defString; + string Address = defString; + string EMail = defString; + string Description = defString; + + int DataStamp = defInteger; + string AdditionalXml = ""; + + ArriveTime = DateTime.Now; + + try + { + // 讀取InXml字串 + xmlDoc.LoadXml(InXml); + // 組Identity字串 + strIdentity = CombineXMLIdentity(Environment.MachineName, GetXMLCurUserNo(xmlDoc), Conversions.ToString(ArriveTime)); + + // 開始解譯InXml字串 + // SubcontractorNo一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorNo = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + // ContactorName一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("contactorname").Count > 0) + { + if (xmlDoc.GetElementsByTagName("contactorname").Item(0).SelectNodes("value").Count > 0) + { + ContactorName = xmlDoc.DocumentElement.GetElementsByTagName("contactorname").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + throw new iMESException.MESException("0000-200002", "ContactorName Not Found!"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "ContactorName Not Found!"); + } + // TelNo + if (xmlDoc.DocumentElement.GetElementsByTagName("telno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("telno").Item(0).SelectNodes("value").Count > 0) + { + TelNo = xmlDoc.DocumentElement.GetElementsByTagName("telno").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // FaxNo + if (xmlDoc.DocumentElement.GetElementsByTagName("faxno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("faxno").Item(0).SelectNodes("value").Count > 0) + { + FaxNo = xmlDoc.DocumentElement.GetElementsByTagName("faxno").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // Title + if (xmlDoc.DocumentElement.GetElementsByTagName("title").Count > 0) + { + if (xmlDoc.GetElementsByTagName("title").Item(0).SelectNodes("value").Count > 0) + { + Title = xmlDoc.DocumentElement.GetElementsByTagName("title").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // Address + if (xmlDoc.DocumentElement.GetElementsByTagName("address").Count > 0) + { + if (xmlDoc.GetElementsByTagName("address").Item(0).SelectNodes("value").Count > 0) + { + Address = xmlDoc.DocumentElement.GetElementsByTagName("address").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // EMail + if (xmlDoc.DocumentElement.GetElementsByTagName("email").Count > 0) + { + if (xmlDoc.GetElementsByTagName("email").Item(0).SelectNodes("value").Count > 0) + { + EMail = xmlDoc.DocumentElement.GetElementsByTagName("email").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + // Description + if (xmlDoc.DocumentElement.GetElementsByTagName("description").Count > 0) + { + if (xmlDoc.GetElementsByTagName("description").Item(0).SelectNodes("value").Count > 0) + { + Description = xmlDoc.DocumentElement.GetElementsByTagName("description").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + + // AdditionalXml + GetXMLTagValue(ref AdditionalXml, xmlDoc, "additionalxml"); + + // DataStamp + GetXMLTagValue(ref DataStamp, xmlDoc, "datastamp", true); + + // If IssueState = 0 Then 'Unfrozen時才可修改 + // 有修改欄位值時 + if ((TelNo ?? "") != defString | (FaxNo ?? "") != defString | (Title ?? "") != defString | (Address ?? "") != defString | (EMail ?? "") != defString | (Description ?? "") != defString) + { + // 呼叫Dll執行修改 + objENT.EditSubcontractorCont(SubcontractorNo, ContactorName, TelNo, FaxNo, Title, Address, EMail, Description, AdditionalXml, DataStamp: DataStamp, Reviser: GetXMLCurUserNo(xmlDoc), ReviseDate: ArriveTime); + } + // End If + + strException = ""; + strResult = "success"; + + objSYS.AddEventLog("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, "EditSubcontractorContactor ContactorName:" + ContactorName); + } + + catch (iMESException.MESException ex) + { + strException = CombineXMLException(Conversions.ToString(ex.ErrorCode), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Edit SubcontractorContactor Data failed, ContactorName:" + ContactorName, ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: Conversions.ToString(ex.ErrorCode)); + } + + catch (Exception ex) + { + strException = CombineXMLException(defWSErrCode, ex.Message, "Edit SubcontractorContactor Data failed, ContactorName:" + ContactorName, ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: defWSErrCode); + } + + finally + { + // 將各部份之XML字串組起來並傳出 + EditSubcontractorContRet = CombineXMLResponse(strIdentity, "", strException, strResult, ""); + + } + + return EditSubcontractorContRet; + + } + + [WebMethod(Description = "Delete Subcontractor Contactor By Specified SubcontractorNo and ContactorName")] + public string DelSubcontractorCont(string InXml) + { + string DelSubcontractorContRet = default(string); + + var SubcontractorNo = default(string); + string ContactorName = defString; // 沒有傳入表示要刪除指定Subcontractor的所有Contactor + + ArriveTime = DateTime.Now; + + try + { + // 讀取InXml字串 + xmlDoc.LoadXml(InXml); + // 組Identity字串 + strIdentity = CombineXMLIdentity(Environment.MachineName, GetXMLCurUserNo(xmlDoc), Conversions.ToString(ArriveTime)); + + // 開始解譯InXml字串 + // SubcontractorNo一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Count > 0) + { + if (xmlDoc.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Count > 0) + { + SubcontractorNo = xmlDoc.DocumentElement.GetElementsByTagName("subcontractorno").Item(0).SelectNodes("value").Item(0).InnerText; + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + } + else + { + throw new iMESException.MESException("0000-200002", "SubcontractorNo Not Found!"); + } + // ContactorName一定要傳入 + if (xmlDoc.DocumentElement.GetElementsByTagName("contactorname").Count > 0) + { + if (xmlDoc.GetElementsByTagName("contactorname").Item(0).SelectNodes("value").Count > 0) + { + ContactorName = xmlDoc.DocumentElement.GetElementsByTagName("contactorname").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + + objENT.DelSubcontractorCont(SubcontractorNo, ContactorName); + + strException = ""; + strResult = "success"; + + objSYS.AddEventLog("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, "DelSubcontractorContactor ContactorName:" + ContactorName); + } + + catch (iMESException.MESException ex) + { + strException = CombineXMLException(Conversions.ToString(ex.ErrorCode), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Del SubcontractorContactor Data failed, ContactorName:" + ContactorName, ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: Conversions.ToString(ex.ErrorCode)); + } + + catch (Exception ex) + { + strException = CombineXMLException(defWSErrCode, ex.Message, "Del SubcontractorContactor Data failed, ContactorName:" + ContactorName, ex.StackTrace); + + strResult = "fail"; + + objSYS.AddErrorLog_ErrorCode("wsENT", GetXMLCurUserNo(xmlDoc), "SubcontractorNo", SubcontractorNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: defWSErrCode); + } + + finally + { + DelSubcontractorContRet = CombineXMLResponse(strIdentity, "", strException, strResult, ""); + + } + + return DelSubcontractorContRet; + + } + + + #endregion + } +}