<component id="30" name="Script Component 1" componentClassID="Microsoft.ManagedComponentHost" description="Includes and runs custom script code. For example, apply a business rule that limits the range of valid values in an &quot;income&quot; column or add values in two columns and calculate the average of the sum." localeId="1033" version="11" contactInfo="Includes and runs custom script code. For example, apply a business rule that limits the range of valid values in an &quot;income&quot; column or add values in two columns and calculate the average of the sum.;Microsoft Corporation; Microsoft SQL Server; Microsoft Corporation; All Rights Reserved; http://www.microsoft.com/sql/support;11"><properties><property id="34" name="SourceCode" state="cdata" dataType="System.String" isArray="true" description="Stores the source code of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="30"><arrayElement dataType="System.String"><![CDATA[My Project\AssemblyInfo.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices

' General Information about an assembly is controlled through the following 
' set of attributes. Change these attribute values to modify the information
' associated with an assembly.

' Review the values of the assembly attributes

<Assembly: AssemblyTitle("SC_6919f0e3f7084d74909139cc94c3e0b0")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("")> 
<Assembly: AssemblyProduct("SC_6919f0e3f7084d74909139cc94c3e0b0")> 
<Assembly: AssemblyCopyright("Copyright @  2018")> 
<Assembly: AssemblyTrademark("")> 
<Assembly: CLSCompliant(True)> 

<Assembly: ComVisible(False)> 

'The following GUID is for the ID of the typelib if this project is exposed to COM
<Assembly: Guid("aa56c9c9-5b60-41ed-80f2-038ddf7c0395")> 

' Version information for an assembly consists of the following four values:
'
'      Major Version
'      Minor Version 
'      Build Number
'      Revision
'
' You can specify all the values or you can default the Build and Revision Numbers 
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>

<Assembly: AssemblyVersion("1.0.0.0")> 
<Assembly: AssemblyFileVersion("1.0.0.0")> 
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[ComponentWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services component wrapper
' This module defines the base class for your component
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class UserComponent
    Inherits ScriptComponentPlus

    Public Connections As New Connections(Me)
    Public Variables As New Variables(Me)

    Public OutputBuffer As OutputBuffer

    Dim InputsFinished As Integer = 0

    Public Overrides Sub ProcessInput(ByVal InputID As Integer, ByVal InputName As String, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)

        If InputID = MyBase.ComponentMetaData.InputCollection("Input").ID Then
            Input_ProcessInput(New InputBuffer(Me, InputID, True, Buffer, OutputMap))
        End If

        If InputID = MyBase.ComponentMetaData.InputCollection("Input 1").ID Then
            Input1_ProcessInput(New Input1Buffer(Me, InputID, True, Buffer, OutputMap))
        End If

        If Buffer.EndOfRowset Then
            InputsFinished = InputsFinished + 1
            If InputsFinished = 0 Then
                FinishOutputs()
                MarkOutputsFinished()
            End If
        End If

    End Sub

    Public Overridable Sub FinishOutputs()
    End Sub

    Private Sub MarkOutputsFinished()

        If OutputBuffer IsNot Nothing Then
            OutputBuffer.SetEndOfRowset
            OutputBuffer = Nothing
        End If

    End Sub

    Public Overrides Sub PrimeOutput(ByVal Outputs As Integer, ByVal OutputIDs() As Integer, ByVal Buffers() As PipelineBuffer, ByVal OutputMap As OutputNameMap)

        For I As Integer = 0 To Outputs - 1
            If OutputIDs(I) = GetOutputID(OutputMap, "Output") Then
                OutputBuffer = New OutputBuffer(Me, OutputIDs(I), False, Buffers(I), OutputMap)
            End If
        Next

        CreateNewOutputRows()

    End Sub

    Public Overridable Sub CreateNewOutputRows()
    End Sub

    Public Overridable Sub Input_ProcessInput(ByVal Buffer As InputBuffer)

        While Buffer.NextRow()
            Input_ProcessInputRow(Buffer)
        End While

    End Sub

    Public Overridable Sub Input_ProcessInputRow(ByVal Row As InputBuffer)

    End Sub

    Public Overridable Sub Input1_ProcessInput(ByVal Buffer As Input1Buffer)

        While Buffer.NextRow()
            Input1_ProcessInputRow(Buffer)
        End While

    End Sub

    Public Overridable Sub Input1_ProcessInputRow(ByVal Row As Input1Buffer)

    End Sub

End Class

Public Class Connections

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

End Class

Public Class Variables

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[BufferWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services buffer wrappers
' This module defines classes for accessing data flow buffers
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!


Option Strict Off   ' This allows usage of PipelineBuffer typed accessors.

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class InputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)
        MyBase.New(Component, ObjectID, IsInput, Buffer, OutputMap)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overloads Function NextRow() As Boolean
        NextRow = MyBase.NextRow()
    End Function

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class

<CLSCompliant(False)> _
Public Class Input1Buffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)
        MyBase.New(Component, ObjectID, IsInput, Buffer, OutputMap)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overloads Function NextRow() As Boolean
        NextRow = MyBase.NextRow()
    End Function

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class

<CLSCompliant(False)> _
Public Class OutputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)
        MyBase.New(Component, ObjectID, IsInput, Buffer, OutputMap)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public WriteOnly Property [PackageId]() As String
        Set
            Me(0) = Value
        End Set
    End Property
    Public WriteOnly Property [PackageId_IsNull] As Boolean
        Set
            If (value)
                SetNull(0)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [ExecutionId]() As String
        Set
            Me(1) = Value
        End Set
    End Property
    Public WriteOnly Property [ExecutionId_IsNull] As Boolean
        Set
            If (value)
                SetNull(1)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [StepName]() As String
        Set
            Me(2) = Value
        End Set
    End Property
    Public WriteOnly Property [StepName_IsNull] As Boolean
        Set
            If (value)
                SetNull(2)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [RowIdentifierName]() As String
        Set
            Me(3) = Value
        End Set
    End Property
    Public WriteOnly Property [RowIdentifierName_IsNull] As Boolean
        Set
            If (value)
                SetNull(3)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [RowIdentifierId]() As String
        Set
            Me(4) = Value
        End Set
    End Property
    Public WriteOnly Property [RowIdentifierId_IsNull] As Boolean
        Set
            If (value)
                SetNull(4)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [ErrorColumnName]() As String
        Set
            Me(5) = Value
        End Set
    End Property
    Public WriteOnly Property [ErrorColumnName_IsNull] As Boolean
        Set
            If (value)
                SetNull(5)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [ErrorColumnValue]() As String
        Set
            Me(6) = Value
        End Set
    End Property
    Public WriteOnly Property [ErrorColumnValue_IsNull] As Boolean
        Set
            If (value)
                SetNull(6)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public WriteOnly Property [ErrorMessage]() As String
        Set
            Me(7) = Value
        End Set
    End Property
    Public WriteOnly Property [ErrorMessage_IsNull] As Boolean
        Set
            If (value)
                SetNull(7)
            Else
                Throw new InvalidOperationException("IsNull property cannot be set to False. Assign a value to the column instead.")
            End If
        End Set
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {"PackageId", "ExecutionId", "StepName", "RowIdentifierName", "RowIdentifierId", "ErrorColumnName", "ErrorColumnValue", "ErrorMessage"}
        End Get
    End Property

    Public Overloads Sub AddRow()
        MyBase.AddRow()
    End Sub

    Public Overloads Sub SetEndOfRowset()
        MyBase.SetEndOfRowset()
    End Sub

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Settings.settings]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version='1.0' encoding='iso-8859-1'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)" GeneratedClassNamespace="" GeneratedClassName="MySettings">
  <Profiles>
    <Profile Name="(Default)" />
  </Profiles>
  <Settings />
</SettingsFile>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[main.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' CozyRoc SQL Server Integration Services user script component
'
' Created by Antoon Vansina (http://antoon.blog.com/)
' 
' Permission is hereby granted, free of charge, to any person
' obtaining a copy of this software and associated documentation
' files (the "Software"), to deal in the Software without
' restriction, including without limitation the rights to use,
' copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the
' Software is furnished to do so, subject to the following
' conditions:
' 
' The above copyright notice and this permission notice shall be
' included in all copies or substantial portions of the Software.
' 
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
' EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
' OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
' NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
' HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
' WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
' FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
' OTHER DEALINGS IN THE SOFTWARE.

Imports System
Imports System.Math

Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS.Attributes


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute>
<CLSCompliant(False)>
Public Class ScriptMain
    Inherits UserComponent


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Constants
    Friend Class Consts
        Public Const PackageId_Default As String = "System::PackageID"
        Public Const ExecutionId_Default As String = "System::ExecutionInstanceGUID"
        Public Const StandardDestinationColumnLength_Default As Integer = 250
    End Class   ' Consts


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Will hold name and position of the input columns
    Private Structure ColumnInfo
        Public BufferIndex As Integer
        Public Name As String
        Public Id As Integer
        Public LineageId As Integer
        Public Component As String
    End Structure   ' ColumnInfo


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Structure InputInfo
        Public Id As Integer
        Public Name As String
        Public ColumnInfos As ColumnInfo()
        Public EndOfRowset As Boolean
    End Structure   ' InputInfo


#Region "Design time methods"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overloads Overrides Sub OnInputPathAttached(ByVal inputID As Integer)
        ' Add all virtual input columns.
        Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection.GetObjectByID(inputID)
        Dim virtInput As IDTSVirtualInput100 = input.GetVirtualInput

        For Each column As IDTSVirtualInputColumn100 In virtInput.VirtualInputColumnCollection
            Call MyBase.HostComponent.SetUsageType(
                inputID,
                virtInput,
                column.LineageID,
                DTSUsageType.UT_READONLY)
        Next

        'Prepare next input.
        Dim nextinput As IDTSInput100 = Me.ComponentMetaData.InputCollection.New()
        nextinput.Name = "Input " & Me.ComponentMetaData.InputCollection.Count - 1
        nextinput.HasSideEffects = True
    End Sub ' OnInputPathAttached


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overloads Overrides Sub OnInputPathDetached(ByVal inputID As Integer)
        Call MyBase.OnInputPathDetached(inputID)

        ' Remove the input.
        Call Me.ComponentMetaData.InputCollection.RemoveObjectByID(inputID)
    End Sub ' OnInputPathDetached


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overloads Overrides Sub ReinitializeMetaData()
        ' Remove all columns on all the input and re-attach the virttual input columns.
        Dim virtInput As IDTSVirtualInput100
        For Each input As IDTSInput100 In Me.ComponentMetaData.InputCollection
            Call input.InputColumnCollection.RemoveAll()

            virtInput = input.GetVirtualInput()
            For Each column As IDTSVirtualInputColumn100 In virtInput.VirtualInputColumnCollection
                Call MyBase.HostComponent.SetUsageType(
                    input.ID,
                    virtInput,
                    column.LineageID,
                    DTSUsageType.UT_READONLY)
            Next
        Next
    End Sub ' ReinitializeMetaData
#End Region ' Design time methods


#Region "Execution time methods"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overloads Overrides Sub PreExecute()
        ' Get the values of the custom properties.
        m_packageId = GetVariable_(Me.PackageId).ToString().Trim()
        m_executionId = GetVariable_(Me.ExecutionId).ToString().Trim()

        ' Read the name of the task that causes the error.
        m_stepName = GetVariable_("System::TaskName").ToString().Trim()

        ' Read inputs columns info.
        Dim inputs As IDTSInputCollection100 = Me.ComponentMetaData.InputCollection
        Dim inputsCount As Integer = inputs.Count
        m_inputInfos = New InputInfo(inputsCount - 2) {}
        For inputIndex As Integer = 0 To inputsCount - 2        ' last input is always empty
            Dim input As IDTSInput100 = inputs(inputIndex)

            With m_inputInfos(inputIndex)
                .Id = input.ID
                .Name = input.Name
                .ColumnInfos = GetColumnInfos_(input)
            End With
        Next
    End Sub ' PreExecute


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overloads Overrides Sub ProcessInput(
        ByVal inputID As Integer,
        ByVal buffer As PipelineBuffer)

        If buffer Is Nothing Then
            Throw New ArgumentNullException("buffer")
        End If

        ' Get input index.
        Dim inputIndex As Integer = -1
        inputIndex = GetInputInfoIndex_(inputID)
        Dim colsCount As Integer = m_inputInfos(inputIndex).ColumnInfos.Length

        ' Find the ErrorColumnValue, ErrorDescription and KeyColumnValue.
        If buffer.EndOfRowset Then
            m_inputInfos(inputIndex).EndOfRowset = True
        Else
            ' for all rows in the buffer
            While buffer.NextRow()
                Dim errorDescription As String = "Unknown"
                Dim errorValue As String = "Unknown"
                Dim errorColumnName As String = String.Empty
                Dim errorColumnId As Integer = -1
                Dim keyColumnValue As String = "Unknown"
                Dim stepNamePlus As String = ""
                Dim errorComponent As String = ""
                Dim colIndex As Integer

                For colIndex = 0 To colsCount - 1
                    Dim ci As ColumnInfo = m_inputInfos(inputIndex).ColumnInfos(colIndex)
                    If Not buffer.IsNull(ci.BufferIndex) Then
                        Select Case ci.Name
                            Case "ErrorCode"
                                errorDescription = Me.ComponentMetaData.GetErrorDescription(
                                    CInt(buffer(ci.BufferIndex))).Trim()
                                errorComponent = ci.Component
                                stepNamePlus = m_stepName & " - " & errorComponent

                            Case "ErrorColumn"
                                ' Save the id of the error column.
                                errorColumnId = CInt(buffer(ci.BufferIndex))

                            Case Me.RowIdentifierName
                                ' Save the value of the key column.
                                keyColumnValue = buffer(ci.BufferIndex).ToString().Trim()
                        End Select
                    End If
                Next

                ' Search error column name in input based on id.
                colIndex = GetColumnInfoById_(
                    m_inputInfos(inputIndex).ColumnInfos,
                    errorColumnId)
                If colIndex <> -1 Then
                    errorColumnName = m_inputInfos(inputIndex).ColumnInfos(colIndex).Name
                End If

                Dim inputFound As Integer = inputIndex

                If String.IsNullOrEmpty(errorColumnName) Then
                    ' Search error column name in all inputs on the assumption ID = LineageId.
                    For inputFound = 0 To m_inputInfos.Length - 1
                        colsCount = m_inputInfos(inputFound).ColumnInfos.Length
                        For colIndex = 0 To colsCount - 1
                            Dim ci As ColumnInfo = m_inputInfos(inputFound).ColumnInfos(colIndex)

                            If ci.LineageId = errorColumnId Then
                                ' This is possibly the error column.
                                If ci.Component = errorComponent Then
                                    errorColumnName = ci.Name
                                Else
                                    errorColumnName = "Maybe: " & ci.Name
                                End If
                            End If
                        Next

                        If Not String.IsNullOrEmpty(errorColumnName) Then
                            Exit For
                        End If
                    Next
                End If

                ' Search error column value based on name.
                If String.IsNullOrEmpty(errorColumnName) Then
                    ' At least keep the error column id.
                    errorColumnName = "Id = " & errorColumnId
                Else
                    ' The name of error column is known.
                    colIndex = GetColumnInfoByName_(
                        m_inputInfos(inputFound).ColumnInfos,
                        errorColumnName)
                    If colIndex <> -1 Then
                        Dim ci As ColumnInfo = m_inputInfos(inputIndex).ColumnInfos(colIndex)
                        If Not buffer.IsNull(ci.BufferIndex) Then
                            errorValue = buffer(ci.BufferIndex).ToString()
                        End If
                    End If
                End If

                ' Write info to the output.
                Call Me.OutputBuffer.AddRow()

                Me.OutputBuffer.PackageId = GetPipelineString_(m_packageId)
                Me.OutputBuffer.ExecutionId = GetPipelineString_(m_executionId)
                Me.OutputBuffer.StepName = GetPipelineString_(stepNamePlus)
                Me.OutputBuffer.RowIdentifierName = GetPipelineString_(Me.RowIdentifierName)
                Me.OutputBuffer.RowIdentifierId = GetPipelineString_(keyColumnValue)
                Me.OutputBuffer.ErrorColumnName = GetPipelineString_(errorColumnName)
                Me.OutputBuffer.ErrorColumnValue = GetPipelineString_(errorValue)
                Me.OutputBuffer.ErrorMessage = GetPipelineString_(errorDescription)
            End While
        End If

        If IsEndReached_() Then
            ' End is reached. Set output buffer end.
            Call Me.OutputBuffer.SetEndOfRowset()
        End If
    End Sub ' ProcessInput
#End Region ' Execution time methods


#Region "User interface"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <ComponentModel.Description("Select variable that contains the unique identifier of this package.F.e. System::PackageID.")>
    <ComponentModel.Category("General")>
    <Variable()>
    <ComponentModel.DefaultValue(Consts.PackageId_Default)>
    Public Property PackageId() As String
        Get
            PackageId = m_packageIdVariable
        End Get
        Set(ByVal value As String)
            m_packageIdVariable = value
        End Set
    End Property    ' PackageId


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <ComponentModel.Description("Select variable that contains the unique identifier of this execution/instance of the package.F.e. System::ExecutionInstanceGUID.")>
    <ComponentModel.Category("General")>
    <Variable()>
    <ComponentModel.DefaultValue(Consts.ExecutionId_Default)>
    Public Property ExecutionId() As String
        Get
            ExecutionId = m_executionIdVariable
        End Get
        Set(ByVal value As String)
            m_executionIdVariable = value
        End Set
    End Property    ' ExecutionId


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <ComponentModel.Description("Select the length of the NVarchar output columns")>
    <ComponentModel.Category("General")>
    <ComponentModel.DefaultValue(Consts.StandardDestinationColumnLength_Default)>
    Public Property StandardDestinationColumnLength() As Integer
        Get
            StandardDestinationColumnLength = m_standardDestinationColumnLength
        End Get
        Set(ByVal value As Integer)
            m_standardDestinationColumnLength = value
            Call ResetOutputColumnTypes_()
        End Set
    End Property    ' StandardDestinationColumnLength


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <ComponentModel.Description("Select the input flow that contains the column that uniquely defines every row in this flow.")>
    <ComponentModel.Category("Specific for this dataflow")>
    <Input()>
    Public Property InputForRowIdentifierName() As String
        Get
            InputForRowIdentifierName = m_inputForRowIdentifierName
        End Get
        Set(ByVal value As String)
            m_inputForRowIdentifierName = value
        End Set
    End Property    ' InputForRowIdentifierName


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <ComponentModel.Description("Select the column that uniquely defines every row in this flow.")>
    <ComponentModel.Category("Specific for this dataflow")>
    <InputVirtualColumn("InputForRowIdentifierName", True)>
    Public Property RowIdentifierName() As String
        Get
            RowIdentifierName = m_rowIdentifierName
        End Get
        Set(ByVal value As String)
            m_rowIdentifierName = value
        End Set
    End Property    ' RowIdentifierName
#End Region ' User interface


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub ResetOutputColumnTypes_()
        Dim output As IDTSOutput100 = Me.ComponentMetaData.OutputCollection(0)
        Dim outputCols As IDTSOutputColumnCollection100 = output.OutputColumnCollection
        For i As Integer = 0 To outputCols.Count - 1
            Call outputCols(i).SetDataTypeProperties(
                DataType.DT_WSTR,
                Me.StandardDestinationColumnLength,
                0,
                0,
                0)
        Next
    End Sub ' ResetOutputColumnTypes_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Add column to specified output.
    Private Sub AddStringColumn_(
        ByVal output As IDTSOutput100,
        ByVal columnName As String)

        Dim outColumn As IDTSOutputColumn100
        outColumn = output.OutputColumnCollection.New()
        outColumn.Name = columnName
        Call outColumn.SetDataTypeProperties(
            DataType.DT_WSTR,
            Me.StandardDestinationColumnLength,
            0,
            0,
            0)
    End Sub ' AddStringColumn_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Gets package variable.
    Private Function GetVariable_(ByVal varName As String) As Object
        Dim result As Object

        Dim vars As IDTSVariables100 = Nothing
        Call Me.VariableDispenser.LockOneForRead(varName, vars)
        Try
            result = vars(varName).Value
        Finally
            Call vars.Unlock()
        End Try

        GetVariable_ = result
    End Function    ' GetVariable_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetOutputColumnIndex_(
        ByVal output As IDTSOutput100,
        ByVal columnName As String) As Integer

        GetOutputColumnIndex_ = Me.HostComponent.BufferManager.FindColumnByLineageID(
            output.Buffer,
            output.OutputColumnCollection(columnName).LineageID)
    End Function    ' GetOutputColumnIndex_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get input columns information.
    Private Function GetColumnInfos_(ByVal input As IDTSInput100) As ColumnInfo()
        Dim colsCount As Integer = input.InputColumnCollection.Count
        Dim result() As ColumnInfo = New ColumnInfo(colsCount - 1) {}

        For colIndex As Integer = 0 To colsCount - 1
            Dim inputCol As IDTSInputColumn100 = input.InputColumnCollection(colIndex)

            Dim colInfo As ColumnInfo = New ColumnInfo
            With colInfo
                .Id = inputCol.ID
                .BufferIndex = MyBase.HostComponent.BufferManager.FindColumnByLineageID(
                    input.Buffer,
                    inputCol.LineageID)
                .Name = inputCol.Name
                .Component = inputCol.UpstreamComponentName
                .LineageId = inputCol.LineageID
            End With

            result(colIndex) = colInfo
        Next

        GetColumnInfos_ = result
    End Function    ' GetColumnInfos_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get input info index.
    Private Function GetInputInfoIndex_(ByVal inputID As Integer) As Integer
        Dim result As Integer = -1

        Dim infosCount As Integer = m_inputInfos.Length
        For infoIndex As Integer = 0 To infosCount - 1
            If m_inputInfos(infoIndex).Id = inputID Then
                result = infoIndex
                Exit For
            End If
        Next

        GetInputInfoIndex_ = result
    End Function    ' GetInputInfoIndex_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function IsEndReached_() As Boolean
        Dim result As Boolean = True

        For Each inputInfo As InputInfo In m_inputInfos
            If Not inputInfo.EndOfRowset Then
                ' The end is not yet reached.
                result = False
                Exit For
            End If
        Next

        IsEndReached_ = result
    End Function    ' IsEndReached_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get properly sized pipeline string.
    Private Function GetPipelineString_(ByVal str As String) As String
        Dim result As String = String.Empty

        If Not String.IsNullOrEmpty(str) Then
            result = str.Substring(
                0,
                Min(str.Length, Me.StandardDestinationColumnLength - 1))
        End If

        GetPipelineString_ = result
    End Function    ' GetPipelineString_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetColumnInfoByName_(
        ByVal colsInfo() As ColumnInfo,
        ByVal name As String) As Integer

        Dim result As Integer = -1

        Dim colsCount As Integer = colsInfo.Length
        For colIndex As Integer = 0 To colsCount - 1
            If colsInfo(colIndex).Name = name Then
                result = colIndex
                Exit For
            End If
        Next

        GetColumnInfoByName_ = result
    End Function    ' GetColumnInfoByName_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetColumnInfoById_(
        ByVal colsInfo() As ColumnInfo,
        ByVal id As Integer) As Integer

        Dim result As Integer = -1

        Dim colsCount As Integer = colsInfo.Length
        For colIndex As Integer = 0 To colsCount - 1
            If colsInfo(colIndex).Id = id Then
                result = colIndex
                Exit For
            End If
        Next

        GetColumnInfoById_ = result
    End Function    ' GetColumnInfoById_
#End Region ' Internals


#Region "Attributes"
    Private m_packageIdVariable As String
    Private m_executionIdVariable As String
    Private m_standardDestinationColumnLength As Integer
    Private m_inputForRowIdentifierName As String
    Private m_rowIdentifierName As String

    Private m_executionId As String
    Private m_packageId As String
    Private m_stepName As String

    Private m_inputInfos() As InputInfo ' the column info of all the input
#End Region ' Attributes

End Class   ' ScriptMain
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[Project]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<c:Project xmlns:c="http://schemas.microsoft.com/codeprojectml/2010/08/main" xmlns:msb="http://schemas.microsoft.com/developer/msbuild/2003" runtimeVersion="4.0" schemaVersion="1.0">
  <msb:PropertyGroup>
    <msb:CodeName>SC_6919f0e3f7084d74909139cc94c3e0b0</msb:CodeName>
    <msb:Language>msBuild</msb:Language>
    <msb:DisplayName>SC_6919f0e3f7084d74909139cc94c3e0b0</msb:DisplayName>
    <msb:ProjectId>{E48BF0DB-4C8A-4E36-9749-C61465832EF6}</msb:ProjectId>
  </msb:PropertyGroup>
  <msb:ItemGroup>
    <msb:Project Include="SC_6919f0e3f7084d74909139cc94c3e0b0.vbproj" />
    <msb:File Include="main.vb" />
    <msb:File Include="BufferWrapper.vb" />
    <msb:File Include="My Project\Settings.Designer.vb" />
    <msb:File Include="My Project\Resources.resx" />
    <msb:File Include="ComponentWrapper.vb" />
    <msb:File Include="My Project\AssemblyInfo.vb" />
    <msb:File Include="My Project\Resources.Designer.vb" />
    <msb:File Include="My Project\Settings.settings" />
  </msb:ItemGroup>
</c:Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Resources.Designer.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA['------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On


Namespace My.Resources
    
    '''<summary>
    '''   A strongly-typed resource class, for looking up localized strings, etc.
    '''</summary>
    'This class was auto-generated by the Strongly Typed Resource Builder
    'class via a tool like ResGen or Visual Studio.NET.
    'To add or remove a member, edit your .ResX file then rerun ResGen
    'with the /str option, or rebuild your VS project.
    Class MyResources
        
        Private Shared _resMgr As System.Resources.ResourceManager
        
        Private Shared _resCulture As System.Globalization.CultureInfo
        
        Friend Sub New()
            MyBase.New
        End Sub
        
        '''<summary>
        '''   Returns the cached ResourceManager instance used by this class.
        '''</summary>
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Public Shared ReadOnly Property ResourceManager() As System.Resources.ResourceManager
            Get
                If (_resMgr Is Nothing) Then
                    Dim temp As System.Resources.ResourceManager = New System.Resources.ResourceManager("My.Resources.MyResources", GetType(MyResources).Assembly)
                    _resMgr = temp
                End If
                Return _resMgr
            End Get
        End Property
        
        '''<summary>
        '''   Overrides the current thread's CurrentUICulture property for all
        '''   resource lookups using this strongly typed resource class.
        '''</summary>
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Public Shared Property Culture() As System.Globalization.CultureInfo
            Get
                Return _resCulture
            End Get
            Set
                _resCulture = value
            End Set
        End Property
    End Class
End Namespace
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Settings.Designer.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA['------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On



Partial Friend NotInheritable Class MySettings
    Inherits System.Configuration.ApplicationSettingsBase

    Private Shared m_Value As MySettings

    Private Shared m_SyncObject As Object = New Object

    <System.Diagnostics.DebuggerNonUserCode()> _
    Public Shared ReadOnly Property Value() As MySettings
        Get
            If (MySettings.m_Value Is Nothing) Then
                System.Threading.Monitor.Enter(MySettings.m_SyncObject)
                If (MySettings.m_Value Is Nothing) Then
                    Try
                        MySettings.m_Value = New MySettings
                    Finally
                        System.Threading.Monitor.Exit(MySettings.m_SyncObject)
                    End Try
                End If
            End If
            Return MySettings.m_Value
        End Get
    End Property
End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Resources.resx]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[SC_6919f0e3f7084d74909139cc94c3e0b0.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <ProjectTypeGuids>{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{184FB95F-4E7D-4F73-97C5-C05EB0481F2D}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>SC_6919f0e3f7084d74909139cc94c3e0b0</RootNamespace>
    <AssemblyName>SC_6919f0e3f7084d74909139cc94c3e0b0</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <ResolveAssemblyReferenceIgnoreTargetFrameworkAttributeVersionMismatch>true</ResolveAssemblyReferenceIgnoreTargetFrameworkAttributeVersionMismatch>
    <TargetFrameworkProfile></TargetFrameworkProfile>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>.\bin\Debug\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DebugSymbols>false</DebugSymbols>
    <Optimize>true</Optimize>
    <OutputPath>.\bin\Release\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <!-- This sections specifies references for the project. -->
  <ItemGroup>
    <Reference Include="CozyRoc.SSISPlus.2017, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea" />
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.TxScript, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Compile Include="main.vb" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
  </ItemGroup>
  <!-- Visual Basic supports Importing namespaces (equivalent to using statements in C#).-->
  <ItemGroup>
    <Import Include="Microsoft.VisualBasic" />
    <Import Include="System" />
    <Import Include="System.Collections" />
    <Import Include="System.Data" />
    <Import Include="System.Diagnostics" />
    <Import Include="System.Windows.Forms" />
  </ItemGroup>
  <ItemGroup>
    <AppDesigner Include="My Project\" />
    <Compile Include="My Project\AssemblyInfo.vb">
      <SubType>Code</SubType>
    </Compile>
    <EmbeddedResource Include="My Project\Resources.resx">
      <Generator>VbMyResourcesResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.vb</LastGenOutput>
      <CustomToolNamespace>My.Resources</CustomToolNamespace>
    </EmbeddedResource>
    <Compile Include="My Project\Resources.Designer.vb">
      <AutoGen>True</AutoGen>
      <DesignTime>True</DesignTime>
      <DependentUpon>Resources.resx</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <None Include="My Project\Settings.settings">
      <Generator>SettingsSingleFileGenerator</Generator>
      <LastGenOutput>Settings.Designer.vb</LastGenOutput>
    </None>
    <Compile Include="My Project\Settings.Designer.vb">
      <AutoGen>True</AutoGen>
      <DependentUpon>Settings.settings</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
  </ItemGroup>
  <!-- Include the build rules for a VB project.-->
  <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
  <!-- This section defines VSTA properties that describe the host-changable project properties. -->
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{30D016F9-3734-4E33-A861-5E7D899E18F3}">
        <ProjectProperties HostName="VSTAHostName" HostPackage="{B3A685AA-7EAF-4BC6-9940-57959FA5AC07}" ApplicationType="usd" Language="vb" TemplatesPath="" />
        <Host Name="SSIS_SC140" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC140</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
</Project>]]></arrayElement></arrayElements></property><property id="35" name="BinaryCode" state="cdata" dataType="System.String" isArray="true" description="Stores the binary representation of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="2"><arrayElement dataType="System.String"><![CDATA[SC_6919f0e3f7084d74909139cc94c3e0b0.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
LgBLAGsELgBTAIgELgBbAGsELgBjAI4ELgBrALgELgBzAMUEQACLAA8FQACDABQFQwB7AB0FQwCD
ABQFSQCrAKkFYwB7AB0FYwCDABQFaQCrAL0FgACLAA8FgwCTAA8FgwCbAA8FgwB7AB0FiQCrAMoF
oACLAA8FqQCDADkEwACLAA8FwwCzAA8FwwBTAGsEyQCDADkE4ACLAA8F4wBTAGsE6QC7AN4F6QDD
AD8G6QDLAA8F6QDTAEwGAwFTAGsECQG7AGMGCQHDAD8GCQHLAA8FCQHTAOwGIwFTAGsEKQG7AA8H
KQHDAD8GKQHbAEUHQwFTAGsESQG7AE4HSQHDALAHSQHjAA8FaQG7ANAHaQHDALAHaQHrABUIwwGD
ABQFwwGjADYF4wGDABQF4wFbAGsESQTzAA8FAApTAGsEIApTAGsEoAqDABQFoAqLAA8FwAqDABQF
wAqLAA8F4AqDABQF4AqLAA8FAAuDABQFAAuLAA8FIAuLAA8FQAuLAA8FYAuLAA8FYAuDABQFgAuL
AA8FoAuLAA8FoAuDABQFawDNAOUA/AA+AUIBRgF5AagBwAHHAdAB8AH6ARECJAIEAAEABQAFAAYA
BwAHAAwACAAOAAkAEAANACIADwAjAAAASQ/YAwAANAzdAwAAGQ/iAwAA5A/nAwAAgA7sAwAAfwbx
AwAApwP2AwAA0QP2AwAATgr6AwAAmgX2AwAAvgX2AwAAbRH+AwAAhBH+AwAAbRH+AwAAhBH+AwAA
bRH+AwAApwP2AwAADQsDBAAA0QP2AwAAIgsDBAAAMAX2AwAAhwsDBAAAvgX2AwAAmwsDBAAA7wP2
AwAAOQsDBAAAEQX2AwAAbAsDBAAApAn2AwAAuAsDBAAAlAT2AwAAVAsDBAAAhBH+AwAAvgkHBAAA
bwQMBAIABAADAAIABQAFAAIABgAHAAIABwAJAAIACQALAAIACgANAAEACwANAAIAEgAPAAEAEwAP
AAIAFAARAAEAFQARAAIAFgATAAEAFwATAAIAGAAVAAEAGQAVAAIAGgAXAAEAGwAXAAIAJwAZAAIA
KAAbAAIALAAdAAIALQAfAAIAMQAhAAEAMgAjAAEAMwAlAAEANAAnAAEANQApAAEANgArAAEANwAt
AAEAOAAvAAEAOQAxAAEAOgAzAAEAOwA1AAEAPAA3AAEAPQA5AAEAPgA7AAEAPwA9AAEAQAA/AAEA
QQBBAAIAQgBDAAIAVABFAAIAXABHADQAOwBCAEkAFgIpAjgCPwIEgAAAAQAAAAAAAAAAAAAAAABn
AQAABAAAAAAAAAAAAAAATQJsAwAAAAAEAAAAAAAAAAAAAABNAuoLAAAAAAoAAAAAAAAAAAAAAFYC
dQMAAAAADgAAAAAAAAAAAAAAXwJWEwAAAAAOAAAAAAAAAAAAAABfAqQNAAAAAA4AAAAAAAAAAAAA
AF8CcxMAAAAADgAAAAAAAAAAAAAAXwKBDQAAAAABAAAAAAAAAAAAAABoArsBAAAAAAAAAAABAAAA
zhAAAA4ABAAPAAQAEAAGABEABgASAAYAAAAQAB4AYAIAABAAswBgAgAAAAC1AGAC/wAfAv8AQgIA
AAAAAElEVFNDb21wb25lbnRNZXRhRGF0YTEwMABJRFRTVmFyaWFibGUxMDAASURUU0lucHV0Q29s
dW1uMTAwAElEVFNWaXJ0dWFsSW5wdXRDb2x1bW4xMDAASURUU091dHB1dENvbHVtbjEwMABJRFRT
SW5wdXRDb2x1bW5Db2xsZWN0aW9uMTAwAElEVFNWaXJ0dWFsSW5wdXRDb2x1bW5Db2xsZWN0aW9u
MTAwAElEVFNPdXRwdXRDb2x1bW5Db2xsZWN0aW9uMTAwAElEVFNJbnB1dENvbGxlY3Rpb24xMDAA
SURUU091dHB1dENvbGxlY3Rpb24xMDAASURUU0J1ZmZlck1hbmFnZXIxMDAASURUU1ZhcmlhYmxl
RGlzcGVuc2VyMTAwAElEVFNWYXJpYWJsZXMxMDAASURUU0lucHV0MTAwAElEVFNWaXJ0dWFsSW5w
dXQxMDAASURUU091dHB1dDEwMABTQ182OTE5ZjBlM2Y3MDg0ZDc0OTA5MTM5Y2M5NGMzZTBiMABD
b250ZXh0VmFsdWVgMQBUaHJlYWRTYWZlT2JqZWN0UHJvdmlkZXJgMQBJbnQzMgBDb3p5Um9jLlNT
SVNQbHVzLjIwMTcAPE1vZHVsZT4AZ2V0X0lEAGdldF9MaW5lYWdlSUQARmluZENvbHVtbkJ5TGlu
ZWFnZUlEAE9iamVjdElEAElucHV0SUQAaW5wdXRJRABHZXRPdXRwdXRJRABSZW1vdmVPYmplY3RC
eUlEAEdldE9iamVjdEJ5SUQAQ296eVJvYy5TcWxTZXJ2ZXIuU1NJUwBUAERpc3Bvc2VfX0luc3Rh
bmNlX18AQ3JlYXRlX19JbnN0YW5jZV9fAEdldENvbHVtbkluZm9CeUlkXwBJc0VuZFJlYWNoZWRf
AEdldFZhcmlhYmxlXwBHZXRDb2x1bW5JbmZvQnlOYW1lXwBHZXRQaXBlbGluZVN0cmluZ18AQWRk
U3RyaW5nQ29sdW1uXwBSZXNldE91dHB1dENvbHVtblR5cGVzXwBHZXRDb2x1bW5JbmZvc18AR2V0
T3V0cHV0Q29sdW1uSW5kZXhfAEdldElucHV0SW5mb0luZGV4XwBSZWluaXRpYWxpemVNZXRhRGF0
YQBnZXRfQ29tcG9uZW50TWV0YURhdGEAbXNjb3JsaWIATWljcm9zb2Z0LlZpc3VhbEJhc2ljAExp
bmVhZ2VJZABnZXRfUGFja2FnZUlkAHNldF9QYWNrYWdlSWQAbV9wYWNrYWdlSWQAZ2V0X0V4ZWN1
dGlvbklkAHNldF9FeGVjdXRpb25JZABtX2V4ZWN1dGlvbklkAHNldF9Sb3dJZGVudGlmaWVySWQA
TG9ja09uZUZvclJlYWQAT25JbnB1dFBhdGhEZXRhY2hlZABPbklucHV0UGF0aEF0dGFjaGVkAElu
cHV0c0ZpbmlzaGVkAE1hcmtPdXRwdXRzRmluaXNoZWQAaWQAQ3JlYXRlSW5zdGFuY2UAZ2V0X0dl
dEluc3RhbmNlAGluc3RhbmNlAEdldEhhc2hDb2RlAHNldF9FcnJvck1lc3NhZ2UAbV9wYWNrYWdl
SWRWYXJpYWJsZQBtX2V4ZWN1dGlvbklkVmFyaWFibGUASURpc3Bvc2FibGUAUnVudGltZVR5cGVI
YW5kbGUAR2V0VHlwZUZyb21IYW5kbGUAZ2V0X05hbWUAc2V0X05hbWUAc2V0X0Vycm9yQ29sdW1u
TmFtZQBjb2x1bW5OYW1lAHNldF9TdGVwTmFtZQBtX3N0ZXBOYW1lAHZhck5hbWUAZ2V0X1Jvd0lk
ZW50aWZpZXJOYW1lAHNldF9Sb3dJZGVudGlmaWVyTmFtZQBnZXRfSW5wdXRGb3JSb3dJZGVudGlm
aWVyTmFtZQBzZXRfSW5wdXRGb3JSb3dJZGVudGlmaWVyTmFtZQBtX2lucHV0Rm9yUm93SWRlbnRp
Zmllck5hbWUAbV9yb3dJZGVudGlmaWVyTmFtZQBnZXRfVXBzdHJlYW1Db21wb25lbnROYW1lAElu
cHV0TmFtZQBuYW1lAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlBpcGVsaW5lAERhdGFUeXBlAERU
U1VzYWdlVHlwZQBTZXRVc2FnZVR5cGUAVmFsdWVUeXBlAEdldFR5cGUAZ2V0X0N1bHR1cmUAc2V0
X0N1bHR1cmUAX3Jlc0N1bHR1cmUAQXBwbGljYXRpb25CYXNlAEFwcGxpY2F0aW9uU2V0dGluZ3NC
YXNlAERpc3Bvc2UARWRpdG9yQnJvd3NhYmxlU3RhdGUAR3VpZEF0dHJpYnV0ZQBIZWxwS2V5d29y
ZEF0dHJpYnV0ZQBHZW5lcmF0ZWRDb2RlQXR0cmlidXRlAERlYnVnZ2VyTm9uVXNlckNvZGVBdHRy
aWJ1dGUARGVidWdnYWJsZUF0dHJpYnV0ZQBWYXJpYWJsZUF0dHJpYnV0ZQBFZGl0b3JCcm93c2Fi
bGVBdHRyaWJ1dGUAQ29tVmlzaWJsZUF0dHJpYnV0ZQBBc3NlbWJseVRpdGxlQXR0cmlidXRlAFN0
YW5kYXJkTW9kdWxlQXR0cmlidXRlAEhpZGVNb2R1bGVOYW1lQXR0cmlidXRlAERlZmF1bHRWYWx1
ZUF0dHJpYnV0ZQBBc3NlbWJseVRyYWRlbWFya0F0dHJpYnV0ZQBUYXJnZXRGcmFtZXdvcmtBdHRy
aWJ1dGUARGVidWdnZXJIaWRkZW5BdHRyaWJ1dGUASW5wdXRWaXJ0dWFsQ29sdW1uQXR0cmlidXRl
AEFzc2VtYmx5RmlsZVZlcnNpb25BdHRyaWJ1dGUATXlHcm91cENvbGxlY3Rpb25BdHRyaWJ1dGUA
QXNzZW1ibHlEZXNjcmlwdGlvbkF0dHJpYnV0ZQBDb21waWxhdGlvblJlbGF4YXRpb25zQXR0cmli
dXRlAEFzc2VtYmx5UHJvZHVjdEF0dHJpYnV0ZQBBc3NlbWJseUNvcHlyaWdodEF0dHJpYnV0ZQBD
TFNDb21wbGlhbnRBdHRyaWJ1dGUAU1NJU1NjcmlwdENvbXBvbmVudEVudHJ5UG9pbnRBdHRyaWJ1
dGUASW5wdXRBdHRyaWJ1dGUAQXNzZW1ibHlDb21wYW55QXR0cmlidXRlAENhdGVnb3J5QXR0cmli
dXRlAFJ1bnRpbWVDb21wYXRpYmlsaXR5QXR0cmlidXRlAFByZUV4ZWN1dGUAbV9WYWx1ZQBnZXRf
VmFsdWUAc2V0X1ZhbHVlAHNldF9FcnJvckNvbHVtblZhbHVlAEdldE9iamVjdFZhbHVlAHZhbHVl
AFN5c3RlbS5UaHJlYWRpbmcAU3lzdGVtLlJ1bnRpbWUuVmVyc2lvbmluZwBDb21wYXJlU3RyaW5n
AFRvU3RyaW5nAFN1YnN0cmluZwBNYXRoAGdldF9MZW5ndGgAZ2V0X1N0YW5kYXJkRGVzdGluYXRp
b25Db2x1bW5MZW5ndGgAc2V0X1N0YW5kYXJkRGVzdGluYXRpb25Db2x1bW5MZW5ndGgAbV9zdGFu
ZGFyZERlc3RpbmF0aW9uQ29sdW1uTGVuZ3RoAFVubG9jawBNaWNyb3NvZnQuVmlzdWFsQmFzaWMu
TXlTZXJ2aWNlcy5JbnRlcm5hbABTeXN0ZW0uQ29tcG9uZW50TW9kZWwAUmVtb3ZlQWxsAFNDXzY5
MTlmMGUzZjcwODRkNzQ5MDkxMzljYzk0YzNlMGIwLmRsbABzZXRfUGFja2FnZUlkX0lzTnVsbABz
ZXRfRXhlY3V0aW9uSWRfSXNOdWxsAHNldF9Sb3dJZGVudGlmaWVySWRfSXNOdWxsAHNldF9FcnJv
ck1lc3NhZ2VfSXNOdWxsAHNldF9FcnJvckNvbHVtbk5hbWVfSXNOdWxsAHNldF9TdGVwTmFtZV9J
c051bGwAc2V0X1Jvd0lkZW50aWZpZXJOYW1lX0lzTnVsbABzZXRfRXJyb3JDb2x1bW5WYWx1ZV9J
c051bGwAU2V0TnVsbABnZXRfSXRlbQBzZXRfSXRlbQBTeXN0ZW0AVHJpbQBTeXN0ZW0uQ29tcG9u
ZW50TW9kZWwuRGVzaWduAE1pbgBTY3JpcHRNYWluAGdldF9BcHBsaWNhdGlvbgBNeUFwcGxpY2F0
aW9uAFN5c3RlbS5Db25maWd1cmF0aW9uAFN5c3RlbS5HbG9iYWxpemF0aW9uAFN5c3RlbS5SZWZs
ZWN0aW9uAGdldF9JbnB1dENvbHVtbkNvbGxlY3Rpb24AZ2V0X1ZpcnR1YWxJbnB1dENvbHVtbkNv
bGxlY3Rpb24AZ2V0X091dHB1dENvbHVtbkNvbGxlY3Rpb24AZ2V0X0lucHV0Q29sbGVjdGlvbgBn
ZXRfT3V0cHV0Q29sbGVjdGlvbgBBcmd1bWVudE51bGxFeGNlcHRpb24ASW52YWxpZE9wZXJhdGlv
bkV4Y2VwdGlvbgBHZXRFcnJvckRlc2NyaXB0aW9uAEN1bHR1cmVJbmZvAENvbHVtbkluZm8AY29s
c0luZm8ASW5wdXRJbmZvAE91dHB1dE5hbWVNYXAAT3V0cHV0TWFwAE1pY3Jvc29mdC5TcWxTZXJ2
ZXIuRFRTUnVudGltZVdyYXAATWljcm9zb2Z0LlNxbFNlcnZlci5EVFNQaXBlbGluZVdyYXAAbV9B
cHBPYmplY3RQcm92aWRlcgBtX1VzZXJPYmplY3RQcm92aWRlcgBtX0NvbXB1dGVyT2JqZWN0UHJv
dmlkZXIAbV9NeVdlYlNlcnZpY2VzT2JqZWN0UHJvdmlkZXIASW5wdXQxQnVmZmVyAGdldF9CdWZm
ZXIAUGlwZWxpbmVCdWZmZXIAU2NyaXB0QnVmZmVyAElucHV0QnVmZmVyAE91dHB1dEJ1ZmZlcgBi
dWZmZXIAZ2V0X1Jlc291cmNlTWFuYWdlcgBnZXRfQnVmZmVyTWFuYWdlcgBUb0ludGVnZXIAU3lz
dGVtLkNvZGVEb20uQ29tcGlsZXIATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUnVudGltZS5XcmFw
cGVyAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlBpcGVsaW5lLldyYXBwZXIAZ2V0X1VzZXIAZ2V0
X1ZhcmlhYmxlRGlzcGVuc2VyAEVudGVyAGdldF9Db21wdXRlcgBNeUNvbXB1dGVyAF9yZXNNZ3IA
SUVudW1lcmF0b3IAR2V0RW51bWVyYXRvcgBBY3RpdmF0b3IALmN0b3IALmNjdG9yAE1vbml0b3IA
c3RyAE91dHB1dElEcwBTeXN0ZW0uRGlhZ25vc3RpY3MATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkRl
dmljZXMAZ2V0X1dlYlNlcnZpY2VzAE15V2ViU2VydmljZXMATWljcm9zb2Z0LlZpc3VhbEJhc2lj
LkFwcGxpY2F0aW9uU2VydmljZXMAU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzAE1pY3Jv
c29mdC5WaXN1YWxCYXNpYy5Db21waWxlclNlcnZpY2VzAFN5c3RlbS5SdW50aW1lLkNvbXBpbGVy
U2VydmljZXMAU3lzdGVtLlJlc291cmNlcwBTQ182OTE5ZjBlM2Y3MDg0ZDc0OTA5MTM5Y2M5NGMz
ZTBiMC5NeS5SZXNvdXJjZXMATXlSZXNvdXJjZXMAU0NfNjkxOWYwZTNmNzA4NGQ3NDkwOTEzOWNj
OTRjM2UwYjAuUmVzb3VyY2VzLnJlc291cmNlcwBEZWJ1Z2dpbmdNb2RlcwBTZXREYXRhVHlwZVBy
b3BlcnRpZXMAVmFyaWFibGVzAENvenlSb2MuU3FsU2VydmVyLlNTSVMuQXR0cmlidXRlcwBNeVNl
dHRpbmdzAEVxdWFscwBnZXRfU3RhdGljSW5wdXRDb2x1bW5zAGdldF9TdGF0aWNPdXRwdXRDb2x1
bW5zAENvbnZlcnNpb25zAFN5c3RlbS5Db2xsZWN0aW9ucwBDb25uZWN0aW9ucwBDb2x1bW5JbmZv
cwBtX2lucHV0SW5mb3MAQnVmZmVycwBSdW50aW1lSGVscGVycwBPcGVyYXRvcnMAc2V0X0hhc1Np
ZGVFZmZlY3RzAENvbnN0cwBGaW5pc2hPdXRwdXRzAFNjcmlwdEJ1ZmZlclBsdXMAU2NyaXB0Q29t
cG9uZW50UGx1cwBDcmVhdGVOZXdPdXRwdXRSb3dzAENvbmNhdABtX1N5bmNPYmplY3QATXlQcm9q
ZWN0AGdldF9FbmRPZlJvd3NldABTZXRFbmRPZlJvd3NldABFeGl0AFBhY2thZ2VJZF9EZWZhdWx0
AEV4ZWN1dGlvbklkX0RlZmF1bHQAU3RhbmRhcmREZXN0aW5hdGlvbkNvbHVtbkxlbmd0aF9EZWZh
dWx0AFBpcGVsaW5lQ29tcG9uZW50AFVzZXJDb21wb25lbnQAUGFyZW50Q29tcG9uZW50AFNjcmlw
dENvbXBvbmVudABnZXRfSG9zdENvbXBvbmVudABnZXRfQ3VycmVudABnZXRfQ291bnQATWljcm9z
b2Z0LlNxbFNlcnZlci5UeFNjcmlwdABNaWNyb3NvZnQuU3FsU2VydmVyLlBpcGVsaW5lSG9zdABH
ZXRWaXJ0dWFsSW5wdXQASXNJbnB1dABJbnB1dDFfUHJvY2Vzc0lucHV0AElucHV0X1Byb2Nlc3NJ
bnB1dABpbnB1dABQcmltZU91dHB1dABvdXRwdXQATW92ZU5leHQAbV9Db250ZXh0AE5ldwBBZGRS
b3cASW5wdXQxX1Byb2Nlc3NJbnB1dFJvdwBJbnB1dF9Qcm9jZXNzSW5wdXRSb3cATmV4dFJvdwBC
dWZmZXJJbmRleABTQ182OTE5ZjBlM2Y3MDg0ZDc0OTA5MTM5Y2M5NGMzZTBiMC5NeQBnZXRfQXNz
ZW1ibHkASXNOdWxsT3JFbXB0eQAAAAAAMU0AeQAuAFIAZQBzAG8AdQByAGMAZQBzAC4ATQB5AFIA
ZQBzAG8AdQByAGMAZQBzAAANSQBuAHAAdQB0ACAAACFTAHkAcwB0AGUAbQA6ADoAVABhAHMAawBO
AGEAbQBlAAANYgB1AGYAZgBlAHIAAA9VAG4AawBuAG8AdwBuAAABABNFAHIAcgBvAHIAQwBvAGQA
ZQAAByAALQAgAAEXRQByAHIAbwByAEMAbwBsAHUAbQBuAAAPTQBhAHkAYgBlADoAIAAAC0kAZAAg
AD0AIAAAgJtJAHMATgB1AGwAbAAgAHAAcgBvAHAAZQByAHQAeQAgAGMAYQBuAG4AbwB0ACAAYgBl
ACAAcwBlAHQAIAB0AG8AIABGAGEAbABzAGUALgAgAEEAcwBzAGkAZwBuACAAYQAgAHYAYQBsAHUA
ZQAgAHQAbwAgAHQAaABlACAAYwBvAGwAdQBtAG4AIABpAG4AcwB0AGUAYQBkAC4AABNQAGEAYwBr
AGEAZwBlAEkAZAAAF0UAeABlAGMAdQB0AGkAbwBuAEkAZAAAEVMAdABlAHAATgBhAG0AZQAAI1IA
bwB3AEkAZABlAG4AdABpAGYAaQBlAHIATgBhAG0AZQAAH1IAbwB3AEkAZABlAG4AdABpAGYAaQBl
AHIASQBkAAAfRQByAHIAbwByAEMAbwBsAHUAbQBuAE4AYQBtAGUAACFFAHIAcgBvAHIAQwBvAGwA
dQBtAG4AVgBhAGwAdQBlAAAZRQByAHIAbwByAE0AZQBzAHMAYQBnAGUAAAtJAG4AcAB1AHQAAA9J
AG4AcAB1AHQAIAAxAAANTwB1AHQAcAB1AHQAAGc2dZnf/ORNmNVbJutvPRcABCABAQgDIAABBSAB
ARERBCABAQ4EIAEBAgUgAgEODgUgAQERRQcgBAEODg4OBSACAQ4CBhUSPAESDAYVEjwBEggGFRI8
ARJlBhUSPAESOAQgABMABwABEm0RgOUFIAASgOkHIAIBDhKA6QsHAxKAiRKAjRKAkQUgABKA7QUg
ABKAmQYgARKAlQgFIAASgIkFIAASgPEFIAASgI0DIAAcBSAAEoD1AyAACA0gBBKArQgSgIkIEYD5
AyAAAgUgABKAlQQAAQ4IBQACDg4OEQcFEoCJEoCNEoCVEoCNEoCRBSAAEoEJCwcFEoCZCAgIEoCV
AyAADgYgARKAlRwXBxIICA4ODggODg4ICAgRRA4ICBFEEUQCBg4EIAECCAYAAwgODgIEIAEcCAQA
AQgcBCABDggGAAMODg4OBAABAg4DBwEOAwcBCAcHAxKAoQgIBSAAEoEZBiABEoClHAUgABKAoQYg
ARKBHRwKIAUBEYEhCAgICAUgABKBHQcHAxwcEoCpBSAAEoElCCACAQ4QEoCpBiABEoEpHAQAARwc
BSAAEoExBSACCAgIEAcHHRFECB0RRAgIEoCtEUQGIAESgK0cBgcECAgICAgHBAICHRFICAQHAg4O
BQACCAgIBSACDggIDiAFARKA0QgCEoCdEoDVAwcBAgUgAgEIHAQHAggIBwACCBKA1Q4EAAEBHAQg
AQIcBAcBHgACHgAFEAEAHgAECgEeAAQHARMABhUSPAETAAcGFRJxARMABhUScQETAAITAAQKARMA
BSABARMACLd6XFYZNOCJCLA/X38R1Qo6CImEXc2AgMyRCBbPSQu4DDTqIlMAeQBzAHQAZQBtADoA
OgBQAGEAYwBrAGEAZwBlAEkARAA6UwB5AHMAdABlAG0AOgA6AEUAeABlAGMAdQB0AGkAbwBuAEkA
bgBzAHQAYQBuAGMAZQBHAFUASQBEAAT6AAAABwYVEjwBEgwHBhUSPAESCAcGFRI8ARJlBwYVEjwB
EjgDBhJ5AwYSfQIGCAQGHRFIAwYSLAMGEjADBhIkBAYSgNEDBhI0AgYcBAYdEUQCBgIDAAABBAAA
EgwEAAASCAQAABJlBAAAEjgEAAASeQQAABJ9BQABARJ9ByACAQgSgJ0HIAIBEoClDgQgARwOByAC
CBKApQ4IIAEdEUQSgJUEIAEICAQgAQ4OByACCB0RRA4HIAIIHRFECAQgAB0OCyAEAQgOEoCdEoDV
DSAEAQgdCB0SgJ0SgNUFIAEBEhwFIAEBEiAGIAEBEoDRBAAAEjQEIAASbQcQAQEeAB4ABzABAQEQ
HgAECAASDAQIABIIBAgAEmUECAASOAQIABJ5BAgAEn0DKAAOAygACAQoAB0OAygAAgQIABI0BCgA
EwAIAQAIAAAAAAAeAQABAFQCFldyYXBOb25FeGNlcHRpb25UaHJvd3MBCAEAAgAAAAAAKAEAI1ND
XzY5MTlmMGUzZjcwODRkNzQ5MDkxMzljYzk0YzNlMGIwAAAFAQAAAAAWAQARQ29weXJpZ2h0IEAg
IDIwMTgAAAUBAAEAACkBACRhYTU2YzljOS01YjYwLTQxZWQtODBmMi0wMzhkZGY3YzAzOTUAAAwB
AAcxLjAuMC4wAABJAQAaLk5FVEZyYW1ld29yayxWZXJzaW9uPXY0LjUBAFQOFEZyYW1ld29ya0Rp
c3BsYXlOYW1lEi5ORVQgRnJhbWV3b3JrIDQuNQQBAAAACAEAAQAAAAAAGAEACk15VGVtcGxhdGUI
MTEuMC4wLjAAAGEBADRTeXN0ZW0uV2ViLlNlcnZpY2VzLlByb3RvY29scy5Tb2FwSHR0cENsaWVu
dFByb3RvY29sEkNyZWF0ZV9fSW5zdGFuY2VfXxNEaXNwb3NlX19JbnN0YW5jZV9fAAAAEAEAC015
LkNvbXB1dGVyAAATAQAOTXkuQXBwbGljYXRpb24AAAwBAAdNeS5Vc2VyAAATAQAOTXkuV2ViU2Vy
dmljZXMAAGABAFtTZWxlY3QgdmFyaWFibGUgdGhhdCBjb250YWlucyB0aGUgdW5pcXVlIGlkZW50
aWZpZXIgb2YgdGhpcyBwYWNrYWdlLkYuZS4gU3lzdGVtOjpQYWNrYWdlSUQuAAAMAQAHR2VuZXJh
bAAAFgEAEVN5c3RlbTo6UGFja2FnZUlEAACAhwEAgIFTZWxlY3QgdmFyaWFibGUgdGhhdCBjb250
YWlucyB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhpcyBleGVjdXRpb24vaW5zdGFuY2Ugb2Yg
dGhlIHBhY2thZ2UuRi5lLiBTeXN0ZW06OkV4ZWN1dGlvbkluc3RhbmNlR1VJRC4AACIBAB1TeXN0
ZW06OkV4ZWN1dGlvbkluc3RhbmNlR1VJRAAANQEAMFNlbGVjdCB0aGUgbGVuZ3RoIG9mIHRoZSBO
VmFyY2hhciBvdXRwdXQgY29sdW1ucwAACAEA+gAAAAAAYQEAXFNlbGVjdCB0aGUgaW5wdXQgZmxv
dyB0aGF0IGNvbnRhaW5zIHRoZSBjb2x1bW4gdGhhdCB1bmlxdWVseSBkZWZpbmVzIGV2ZXJ5IHJv
dyBpbiB0aGlzIGZsb3cuAAAfAQAaU3BlY2lmaWMgZm9yIHRoaXMgZGF0YWZsb3cAAEQBAD9TZWxl
Y3QgdGhlIGNvbHVtbiB0aGF0IHVuaXF1ZWx5IGRlZmluZXMgZXZlcnkgcm93IGluIHRoaXMgZmxv
dy4AAB8BABlJbnB1dEZvclJvd0lkZW50aWZpZXJOYW1lAQAAAAAAtAAAAM7K774BAAAAkQAAAGxT
eXN0ZW0uUmVzb3VyY2VzLlJlc291cmNlUmVhZGVyLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkjU3lzdGVt
LlJlc291cmNlcy5SdW50aW1lUmVzb3VyY2VTZXQCAAAAAAAAAAAAAABQQURQQURQtAAAAPBiAAAA
AAAAAAAAAApjAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8YgAAAAAAAAAAAAAAAF9Db3JEbGxN
YWluAG1zY29yZWUuZGxsAAAAAAD/JQAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAQAAAAGAAAgAAAAAAAAAAAAAAA
AAAAAQABAAAAMAAAgAAAAAAAAAAAAAAAAAAAAQAAAAAASAAAAFiAAADsAwAAAAAAAAAAAADsAzQA
AABWAFMAXwBWAEUAUgBTAEkATwBOAF8ASQBOAEYATwAAAAAAvQTv/gAAAQAAAAEAAAAAAAAAAQAA
AAAAPwAAAAAAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAEQAAAABAFYAYQByAEYAaQBsAGUASQBuAGYA
bwAAAAAAJAAEAAAAVAByAGEAbgBzAGwAYQB0AGkAbwBuAAAAAAAAALAETAMAAAEAUwB0AHIAaQBu
AGcARgBpAGwAZQBJAG4AZgBvAAAAKAMAAAEAMAAwADAAMAAwADQAYgAwAAAAGgABAAEAQwBvAG0A
bQBlAG4AdABzAAAAAAAAACIAAQABAEMAbwBtAHAAYQBuAHkATgBhAG0AZQAAAAAAAAAAAHAAJAAB
AEYAaQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAABTAEMAXwA2ADkAMQA5AGYAMABlADMA
ZgA3ADAAOAA0AGQANwA0ADkAMAA5ADEAMwA5AGMAYwA5ADQAYwAzAGUAMABiADAAAAAwAAgAAQBG
AGkAbABlAFYAZQByAHMAaQBvAG4AAAAAADEALgAwAC4AMAAuADAAAABwACgAAQBJAG4AdABlAHIA
bgBhAGwATgBhAG0AZQAAAFMAQwBfADYAOQAxADkAZgAwAGUAMwBmADcAMAA4ADQAZAA3ADQAOQAw
ADkAMQAzADkAYwBjADkANABjADMAZQAwAGIAMAAuAGQAbABsAAAASAASAAEATABlAGcAYQBsAEMA
bwBwAHkAcgBpAGcAaAB0AAAAQwBvAHAAeQByAGkAZwBoAHQAIABAACAAIAAyADAAMQA4AAAAKgAB
AAEATABlAGcAYQBsAFQAcgBhAGQAZQBtAGEAcgBrAHMAAAAAAAAAAAB4ACgAAQBPAHIAaQBnAGkA
bgBhAGwARgBpAGwAZQBuAGEAbQBlAAAAUwBDAF8ANgA5ADEAOQBmADAAZQAzAGYANwAwADgANABk
ADcANAA5ADAAOQAxADMAOQBjAGMAOQA0AGMAMwBlADAAYgAwAC4AZABsAGwAAABoACQAAQBQAHIA
bwBkAHUAYwB0AE4AYQBtAGUAAAAAAFMAQwBfADYAOQAxADkAZgAwAGUAMwBmADcAMAA4ADQAZAA3
ADQAOQAwADkAMQAzADkAYwBjADkANABjADMAZQAwAGIAMAAAADQACAABAFAAcgBvAGQAdQBjAHQA
VgBlAHIAcwBpAG8AbgAAADEALgAwAC4AMAAuADAAAAA4AAgAAQBBAHMAcwBlAG0AYgBsAHkAIABW
AGUAcgBzAGkAbwBuAAAAMQAuADAALgAwAC4AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABgAAAMAAAAHDMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA]]></arrayElement></arrayElements></property><property id="36" name="VSTAProjectName" dataType="System.String" description="Specifies the name of the Microsoft Visual Studio Tools for Applications project. Project names must be unique within a package." typeConverter="NOTBROWSABLE">SC_6919f0e3f7084d74909139cc94c3e0b0</property><property id="37" name="ScriptLanguage" dataType="System.String" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91">VisualBasic</property><property id="44" name="UserComponentTypeName" dataType="System.String">CozyRoc.ScriptComponentHostPlus</property></properties><inputs><input id="32" name="Input" hasSideEffects="true"><externalMetadataColumns /></input><input id="45" name="Input 1" hasSideEffects="true"><externalMetadataColumns /></input></inputs><outputs><output id="33" name="Output" hasSideEffects="true"><outputColumns><outputColumn id="46" name="PackageId" lineageId="46" length="250" dataType="wstr" /><outputColumn id="47" name="ExecutionId" lineageId="47" length="250" dataType="wstr" /><outputColumn id="48" name="StepName" lineageId="48" length="250" dataType="wstr" /><outputColumn id="49" name="RowIdentifierName" lineageId="49" length="250" dataType="wstr" /><outputColumn id="50" name="RowIdentifierId" lineageId="50" length="250" dataType="wstr" /><outputColumn id="51" name="ErrorColumnName" lineageId="51" length="250" dataType="wstr" /><outputColumn id="52" name="ErrorColumnValue" lineageId="52" length="250" dataType="wstr" /><outputColumn id="53" name="ErrorMessage" lineageId="53" length="250" dataType="wstr" /></outputColumns><externalMetadataColumns /></output></outputs></component>