<component id="21" name="WMI Source" componentClassID="{874F7595-FB5F-40FF-96AF-FBFF8250E3EF}" description="Executes a custom script." localeId="1033" version="7" contactInfo="Executes a custom script.;Microsoft Corporation;Microsoft SqlServer v9; © 2004 Microsoft Corporation; All Rights Reserved; http://www.microsoft.com/sql/support;0"><properties><property id="22" name="SourceCode" state="cdata" dataType="System.String" isArray="true" description="Stores the source code of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="15"><arrayElement dataType="System.String"><![CDATA[ScriptMain.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' CozyRoc SQL Server Integration Services user script component
'
' Copyright (c) 2006-2011 CozyRoc LLC
' 
' 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.ComponentModel
Imports System.Collections
Imports System.Collections.Generic
Imports System.Management

Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS.Attributes


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<SortProperties(New String() {"Connection", "IsQueryVariable", "Query", "QueryVariable"})> _
<ValidateProperties("Validate")> _
<FilterProperties("GetProperties")> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub CreateNewOutputRows()
        Dim output As IDTSOutput100 = Me.ComponentMetaData.OutputCollection(0)
        Dim colsCount As Integer = output.OutputColumnCollection.Count
        Dim colIndex As Integer = 0

        ' Setup column indexes.
        Dim colsIdx As New Hashtable
        For Each column As IDTSOutputColumn100 In output.OutputColumnCollection
            Call colsIdx.Add( _
                column.Name, _
                Me.HostComponent.BufferManager.FindColumnByLineageID( _
                    output.Buffer, _
                    column.LineageID))
        Next

        Dim scope As ManagementScope = CType( _
            Me.Connections.Connection.AcquireConnection(Nothing), _
            ManagementScope)
        Try
            Dim rawData As ManagementObjectCollection = GetQueryResult_(scope, False)

            For Each rawRow As ManagementObject In rawData
                ' Get packed row values.
                Dim packed_values() As Object = New Object(colsCount - 1) {}
                colIndex = 0
                For Each column As DictionaryEntry In colsIdx
                    packed_values(colIndex) = rawRow(CStr(column.Key))
                    colIndex += 1
                Next

                Dim rows As List(Of Object()) = UnwindRow_(packed_values)
                For Each row As Object() In rows
                    Call Me.OutputBuffer.AddRow()

                    colIndex = 0
                    For Each column As DictionaryEntry In colsIdx
                        Dim name As String = CStr(column.Key)
                        Dim index As Integer = CInt(column.Value)
                        Dim value As Object = row(colIndex)

                        If value Is Nothing Then
                            Call Me.OutputBuffer.Buffer.SetNull(index)
                        Else
                            Try
                                Me.OutputBuffer.Buffer(index) = GetValue_( _
                                output.OutputColumnCollection(name), _
                                value)
                            Catch ex As Exception
                                Throw New Exception(String.Format( _
                                    "Failed to set column '{0}'. {1}", _
                                    name, _
                                    ex.Message))
                            End Try
                        End If

                        colIndex += 1
                    Next
                Next
            Next
        Catch ex As Exception
            Call FireError_(ex.Message)
        Finally
            Call Me.Connections.Connection.ReleaseConnection(scope)
        End Try
    End Sub ' CreateNewOutputRows


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Function Validate(ByRef errMessage As String) As Boolean
        Dim result As Boolean

        Try
            If String.IsNullOrEmpty(Me.Connection) Then
                Throw New ApplicationException("Select WMI connection.")
            End If

            If String.IsNullOrEmpty(Me.Query) Then
                Throw New ApplicationException("Specify WQL query.")
            End If

            Dim output As IDTSOutput100 = MyBase.ComponentMetaData.OutputCollection(0)
            If output.OutputColumnCollection.Count = 0 Then
                ' Setup collection output columns.
                Call SetupOutputColumns_()
            End If

            ' Store connection information in the runtime connection collection, too.
            ' Cannot directly use RuntimeConnectionCollection in the property get/set
            ' because of issues with multi-threading.
            Me.ComponentMetaData.RuntimeConnectionCollection("Connection").ConnectionManagerID = Me.Connection

            result = True
        Catch ex As Exception
            result = False
            errMessage = ex.Message
        End Try

        Validate = result
    End Function    'Validate


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of current properties based on current state.
    Public Function GetProperties() As String()
        Dim result As New ArrayList

        Call result.Add("Connection")

        Call result.Add("IsQueryVariable")
        Call result.Add(IIf(Me.IsQueryVariable, "QueryVariable", "Query"))

        Return CType(result.ToArray(GetType(String)), String())
    End Function    ' GetProperties



#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Select WMI Connection Manager.")> _
    <Connection("WmiConnectionType")> _
    Public Property Connection() As String
        Get
            Connection = m_connection
        End Get
        Set(ByVal value As String)
            m_connection = value
        End Set
    End Property    ' Connection


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies if Query property references package variable.")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property IsQueryVariable() As Boolean
        Get
            IsQueryVariable = m_isQueryVar
        End Get
        Set(ByVal value As Boolean)
            If m_isQueryVar <> value Then
                m_isQueryVar = value
                m_query = String.Empty
            End If
        End Set
    End Property    ' IsQueryVariable


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies WMI query.")> _
    <TextDialog("Specify query", Nothing, "sql")> _
    Public Property Query() As String
        Get
            Query = m_query
        End Get
        Set(ByVal value As String)
            m_query = value
        End Set
    End Property    ' Query


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Description("Specifies variable containing query.")> _
    <Variable()> _
    Public Property QueryVariable() As String
        Get
            QueryVariable = Me.Query
        End Get
        Set(ByVal value As String)
            Me.Query = value
        End Set
    End Property    ' QueryVariable
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private ReadOnly Property WmiConnectionType() As String()
        Get
            WmiConnectionType = New String() {"WMI"}
        End Get
    End Property    ' WmiConnectionType


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns variable value.
    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_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' This function is based on the Microsoft's WMI Source sample code.
    ' http://sqlsrvintegrationsrv.codeplex.com/sourcecontrol/network/Show?projectName=SQLSrvIntegrationSrv&changeSetId=40668#348153
    ' 
    ' Unwind WMI row ( unwind array in any column )
    ' we use the same approach to handle WMI arrays as WMI ODBC driver 
    ' input row is unwinded into several output rows
    ' output rows should represent every possible combination of WMI arrays elements in different columns
    ' for details see msdn :
    ' http://msdn.microsoft.com/en-us/library/aa392328(VS.85).aspx#_hmm_mapping_wmi_arrays_to_odbc
    ' 
    ' Here is an example :
    '
    ' input row : { a1, {b1,b2}, {c1,c2,c3} }
    '
    ' output rows :
    ' 
    ' { a1 , b1, c1 }
    ' { a1 , b1, c2 }
    ' { a1 , b1, c3 }
    ' { a1 , b2, c1 }
    ' { a1 , b2, c2 }
    ' { a1 , b2, c3 }
    Private Function UnwindRow_(ByVal arr() As Object) As List(Of Object())
        Dim result As New List(Of Object())

        Dim buf() As Object = New Object(arr.Length - 1) {}
        Call UnwindRow_(arr, 0, buf, result)

        UnwindRow_ = result
    End Function    ' UnwindRow_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub UnwindRow_( _
        ByVal arr() As Object, _
        ByVal pos As Integer, _
        ByVal buf() As Object, _
        ByVal result As List(Of Object()))

        While pos < arr.Length
            If Not arr(pos) Is Nothing AndAlso arr(pos).GetType().IsArray Then
                ' This is array. Unwind it.
                Dim inner As Array = CType(arr(pos), Array)

                If inner.Length = 0 Then
                    ' empty array will be represented as null value
                    inner = New Object(0) {}
                End If

                For Each obj As Object In inner
                    buf(pos) = obj
                    Call UnwindRow_(arr, pos + 1, buf, result)
                Next

                Return
            End If

            buf(pos) = arr(pos)
            pos += 1
        End While

        Call result.Add(CType(buf.Clone(), Object()))
    End Sub    ' UnwindRow_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub SetupOutputColumns_()
        Dim output As IDTSOutput100 = Me.ComponentMetaData.OutputCollection(0)
        Dim scope As ManagementScope = CType( _
            Me.DesignConnections(Me.Connection).AcquireConnection(Nothing), _
            ManagementScope)

        Try
            ' Get WMI columns.
            Dim objEnum As ManagementObjectCollection.ManagementObjectEnumerator = GetQueryResult_(scope, True).GetEnumerator()
            Call objEnum.Reset()
            Call objEnum.MoveNext()
            Dim props As PropertyDataCollection = objEnum.Current.Properties

            For Each prop As PropertyData In props
                Dim dtsType As DataType
                Dim length, precision, scale, codePage As Integer
                Call GetDtsTypeFromProperty_(prop, dtsType, length, precision, scale, codePage)

                Dim column As IDTSOutputColumn100 = output.OutputColumnCollection.[New]()
                column.Name = prop.Name
                column.Description = CStr(GetQualifier_(prop, "Description", String.Empty))
                Call column.SetDataTypeProperties(dtsType, length, precision, scale, codePage)
            Next
        Finally
            Call Me.DesignConnections(Me.Connection).ReleaseConnection(scope)
        End Try
    End Sub ' SetupOutputColumns_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetQueryResult_( _
        ByVal scope As ManagementScope, _
        ByVal onlyMeta As Boolean) As ManagementObjectCollection

        ' Get query.
        Dim query As String = Me.Query
        If Me.IsQueryVariable Then
            query = GetVariable_(query).ToString()
        End If

        Dim result As ManagementObjectCollection
        Dim objQuery As New ObjectQuery(query)
        Dim searcher As New ManagementObjectSearcher(scope, objQuery)
        searcher.Options.PrototypeOnly = onlyMeta
        result = searcher.Get()

        Try
            Dim count As Integer = result.Count
        Catch ex As ManagementException
            If ex.ErrorCode = ManagementStatus.InvalidClass OrElse _
                ex.ErrorCode = ManagementStatus.NotFound Then
                Throw New Exception("Invalid WQL query.")
            Else
                Throw
            End If
        End Try

        GetQueryResult_ = result
    End Function    ' GetQueryResult_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get SSIS type from PropertyData.
    Private Sub GetDtsTypeFromProperty_( _
        ByVal prop As PropertyData, _
        ByRef dtsType As DataType, _
        ByRef length As Integer, _
        ByRef precision As Integer, _
        ByRef scale As Integer, _
        ByRef codePage As Integer)

        length = CType(GetQualifier_(prop, "MaxLen", 0), Integer)
        precision = 0
        scale = 0
        codePage = 0

        Select Case prop.Type
            Case CimType.Boolean
                dtsType = DataType.DT_BOOL

            Case CimType.Char16, CimType.String
                dtsType = DataType.DT_WSTR
                If length = 0 Then
                    length = 256
                End If

            Case CimType.DateTime
                dtsType = DataType.DT_DBTIMESTAMP

            Case CimType.None
                dtsType = DataType.DT_NULL

            Case CimType.Object
                dtsType = DataType.DT_IMAGE

            Case CimType.Real32
                dtsType = DataType.DT_R4

            Case CimType.Real64
                dtsType = DataType.DT_R8

            Case CimType.SInt16
                dtsType = DataType.DT_I2

            Case CimType.SInt32
                dtsType = DataType.DT_I4

            Case CimType.SInt64
                dtsType = DataType.DT_I8

            Case CimType.SInt8
                dtsType = DataType.DT_I1

            Case CimType.UInt16
                dtsType = DataType.DT_UI2

            Case CimType.UInt32
                dtsType = DataType.DT_UI4

            Case CimType.UInt64
                dtsType = DataType.DT_UI8

            Case CimType.UInt8
                dtsType = DataType.DT_UI1

            Case Else
                Throw New Exception("Unhandled column type.")
        End Select
    End Sub ' GetDtsTypeFromProperty_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Get qualifier from PropertyData.
    Private Function GetQualifier_( _
        ByVal prop As PropertyData, _
        ByVal qualName As String, _
        ByVal defValue As Object) As Object

        Dim result As Object = defValue
        Try
            result = prop.Qualifiers(qualName).Value
        Catch ex As Exception
        End Try

        GetQualifier_ = result
    End Function    ' GetQualifier_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetValue_( _
        ByVal column As IDTSOutputColumn100, _
        ByVal value As Object) As Object

        Dim result As Object = value

        Select Case column.DataType
            Case DataType.DT_WSTR
                result = CStr(result).Substring( _
                    0, _
                    System.Math.Min(column.Length, CStr(result).Length))

            Case DataType.DT_DBTIMESTAMP
                result = ManagementDateTimeConverter.ToDateTime(CStr(value))

            Case DataType.DT_I8
                If TypeOf result Is TimeSpan Then
                    result = CType(result, TimeSpan).Ticks
                End If
        End Select

        GetValue_ = result
    End Function    ' GetValue_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub FireError_(ByVal message As String)
        Dim cancel As Boolean
        Call Me.ComponentMetaData.FireError(0, "WMI Source", message, String.Empty, 0, cancel)
    End Sub ' FireError_
#End Region ' Internals


#Region "Attributes"
    Private m_connection As String
    Private m_isQueryVar As Boolean
    Private m_query As String
#End Region ' Attributes

End Class   ' ScriptMain
]]></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 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 [Category]() As UInt16
        Set
            Me(0) = Value
        End Set
    End Property
    Public WriteOnly Property [Category_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 [CategoryString]() As String
        Set
            Me(1) = Value
        End Set
    End Property
    Public WriteOnly Property [CategoryString_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 [ComputerName]() As String
        Set
            Me(2) = Value
        End Set
    End Property
    Public WriteOnly Property [ComputerName_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 [Data]() As Byte
        Set
            Me(3) = Value
        End Set
    End Property
    Public WriteOnly Property [Data_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 [EventCode]() As UInt16
        Set
            Me(4) = Value
        End Set
    End Property
    Public WriteOnly Property [EventCode_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 [EventIdentifier]() As UInt32
        Set
            Me(5) = Value
        End Set
    End Property
    Public WriteOnly Property [EventIdentifier_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 [EventType]() As Byte
        Set
            Me(6) = Value
        End Set
    End Property
    Public WriteOnly Property [EventType_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 [InsertionStrings]() As String
        Set
            Me(7) = Value
        End Set
    End Property
    Public WriteOnly Property [InsertionStrings_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 WriteOnly Property [Logfile]() As String
        Set
            Me(8) = Value
        End Set
    End Property
    Public WriteOnly Property [Logfile_IsNull] As Boolean
        Set
            If (value)
                SetNull(8)
            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 [Message]() As String
        Set
            Me(9) = Value
        End Set
    End Property
    Public WriteOnly Property [Message_IsNull] As Boolean
        Set
            If (value)
                SetNull(9)
            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 [RecordNumber]() As UInt32
        Set
            Me(10) = Value
        End Set
    End Property
    Public WriteOnly Property [RecordNumber_IsNull] As Boolean
        Set
            If (value)
                SetNull(10)
            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 [SourceName]() As String
        Set
            Me(11) = Value
        End Set
    End Property
    Public WriteOnly Property [SourceName_IsNull] As Boolean
        Set
            If (value)
                SetNull(11)
            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 [TimeGenerated]() As DateTime
        Set
            Me(12) = Value
        End Set
    End Property
    Public WriteOnly Property [TimeGenerated_IsNull] As Boolean
        Set
            If (value)
                SetNull(12)
            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 [TimeWritten]() As DateTime
        Set
            Me(13) = Value
        End Set
    End Property
    Public WriteOnly Property [TimeWritten_IsNull] As Boolean
        Set
            If (value)
                SetNull(13)
            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 [Type]() As String
        Set
            Me(14) = Value
        End Set
    End Property
    Public WriteOnly Property [Type_IsNull] As Boolean
        Set
            If (value)
                SetNull(14)
            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 [User]() As String
        Set
            Me(15) = Value
        End Set
    End Property
    Public WriteOnly Property [User_IsNull] As Boolean
        Set
            If (value)
                SetNull(15)
            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() {"Category", "CategoryString", "ComputerName", "Data", "EventCode", "EventIdentifier", "EventType", "InsertionStrings", "Logfile", "Message", "RecordNumber", "SourceName", "TimeGenerated", "TimeWritten", "Type", "User"}
        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[ScriptComponent_0c0feb5a363d4682a1b1745379d7ce1f.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-16"?>
<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>{428BD394-3C91-45D4-82B3-C7A5BB89A2FD}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>ScriptComponent_0c0feb5a363d4682a1b1745379d7ce1f</RootNamespace>
    <AssemblyName>ScriptComponent_0c0feb5a363d4682a1b1745379d7ce1f</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
  </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.2012, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\Microsoft SQL Server\110\SDK\Assemblies\CozyRoc.SSISPlus.2012.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.SqlServer.ManagedDTS, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SqlServer.ManagedDTS\v4.0_11.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.ManagedDTS.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.TxScript, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Management" />
  </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\" />
  </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="" DebugInfoExeName="devenv.exe" DebugInfoCommandLine="/vstaHostDebugUri:&quot;vstadebug818d5aee-28f2-4048-9d42-d1608bbab3f8/49bb9680-e75c-4110-ad95-1ccd120cccab&quot;" />
        <Host Name="SSIS_SC110" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC110</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  <ItemGroup>
    <Compile Include="ScriptMain.vb" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="My Project\" />
  </ItemGroup>
  <PropertyGroup>
    <OptionCompare>Binary</OptionCompare>
  </PropertyGroup>
  <PropertyGroup>
    <OptionExplicit>On</OptionExplicit>
  </PropertyGroup>
  <PropertyGroup>
    <OptionStrict>On</OptionStrict>
  </PropertyGroup>
</Project>]]></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

    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()

        FinishOutputs()
        MarkOutputsFinished()

    End Sub

    Public Overridable Sub CreateNewOutputRows()
    End Sub

End Class

Public Class Connections

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

    Public ReadOnly Property Connection() As IDTSConnectionManager100
        Get
            Return ParentComponent.ComponentMetaData.RuntimeConnectionCollection("Connection").ConnectionManager
        End Get
    End Property

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[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:Language>msBuild</msb:Language>
		<msb:NoContent>Reference;Import;Folder</msb:NoContent>
		<msb:ProjectId>{F4F0BAB6-2D01-4A66-AF2F-E4403E348F1C}</msb:ProjectId>
		<msb:DisplayName>ScriptComponent_0c0feb5a363d4682a1b1745379d7ce1f</msb:DisplayName>
		<msb:CodeName>ScriptComponent_0c0feb5a363d4682a1b1745379d7ce1f</msb:CodeName>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:Folder Include="My Project\"/>
		<msb:File Include="ScriptMain.vb"/>
		<msb:File Include="BufferWrapper.vb"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:Project Include="ScriptComponent_0c0feb5a363d4682a1b1745379d7ce1f.vbproj"/>
	</msb:ItemGroup>
</c:Project>]]></arrayElement></arrayElements></property><property id="23" 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[ScriptComponent_0c0feb5a363d4682a1b1745379d7ce1f.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
1gUOBG9OAAAGCG86AAAKLdbeQAh1OAAAASwLCHU4AAABbzsAAArcKgUEAwSaKBEAAAqiBBfWEAIE
A463P3D///8OBAVvZQAACnQNAAAbb2YAAAoqARAAAAIAMgA1ZwAUAAAAARswBwDuAAAAHAAAEQJv
KAAACm8sAAAKFow0AAABby0AAAoKAm9nAAAKAm9DAAAGb2gAAAoUb2kAAAp0EAAAAQsCBxdvUAAA
Bm89AAAKDAhvagAACghvUQAACiYIbz4AAApvawAACg0Jb2wAAAoTCytlEQtvbQAAChMJAhEJEgYS
BxIIEgoSBG9RAAAGBm8uAAAKb24AAAoTBREFEQlvbwAACm9wAAAKEQUCEQly/AIAcH5aAAAKb1IA
AAYoQQAACm9xAAAKEQURBhEHEQgRChEEb3IAAAoRC29zAAAKLZLeGAJvZwAACgJvQwAABm9oAAAK
B290AAAK3CoAAAEQAAACADQAodUAGAAAAAEbMAIAgAAAAB0AABECb0cAAAYMAm9FAAAGLA0CCG9M
AAAGbxUAAAoMCHN1AAAKCwMHc3YAAAoTBBEEb3cAAAoEb3gAAAoRBG95AAAKDQlvegAAChMF3jEl
KEsAAAoTBhEGb3sAAAogEBAEgC4OEQZvewAACiACEASAMwtyFAMAcHNOAAAKev4aCQoGKgEQAAAA
AEEACksAMUkAAAETMAUASAIAAB4AABEFAgNyOgMAcBaMNAAAAW9SAAAGKEYAAApUDgQWVA4FFlQO
BhZUA298AAAKRWgAAAAmAAAAbAAAAD4AAABDAAAANAAAADkAAABsAAAAbAAAAAgAAABsAAAAbAAA
AAIAAABsAAAAKwAAAGwAAABsAAAATgAAAGYAAABUAAAAWgAAAEgAAABgAAAAbAAAAGwAAABsAAAA
bAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABs
AAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwA
AABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAA
AGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAA
bAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABs
AAAAbAAAAGwAAABsAAAAbAAAAB0AAABsAAAACAAAACtqBB8LVCtvBCCCAAAAVAVKFjNjBSAAAQAA
VCtaBCCHAAAAVCtRBBdUK0wEIC0BAABUK0MEGlQrPgQbVCs5BBhUKzQEGVQrLwQfFFQrKQQfEFQr
IwQfElQrHQQfE1QrFwQfFVQrEQQfEVQrC3JIAwBwc04AAAp6KhswAgA3AAAAHwAAEQUoEQAACgsD
b30AAAoEb34AAApvfwAACigRAAAKC94OJShLAAAKDChPAAAK3gAHKBEAAAoKBioAARAAAAAABwAZ
IAAOLgAAARMwBACNAAAAIAAAEQQoEQAACgsDb4AAAAoMCCCCAAAAMyUHKEEAAAoWA2+BAAAKByhB
AAAKb4IAAAoogwAACm+EAAAKCytJCCCHAAAAMxMEKEEAAAoohQAACowLAAABCysuCB8UMykHdU8A
AAEsIQclLQQmCSsKeU8AAAFxTwAAARMEEgQohgAACoxSAAABCwcoEQAACgoGKgAAABMwBwAbAAAA
IQAAEQJvKAAAChZydgMAcAN+WgAAChYSAG+HAAAKKgBCU0pCAQABAAAAAAAMAAAAdjQuMC4zMDMx
OQAAAAAFAGwAAAA8EgAAI34AAKgSAACUFgAAI1N0cmluZ3MAAAAAPCkAAIwDAAAjVVMAyCwAABAA
AAAjR1VJRAAAANgsAADYBgAAI0Jsb2IAAAAAAAAAAgAAAVcVogkJDgAAAPolMwAWAAABAAAAXwAA
AAsAAAANAAAAVAAAAEcAAACTAAAAOAAAACEAAAAFAAAALQAAADEAAAANAAAAAQAAAAoAAAACAAAA
AwAAAAIAAAAAAF4WAQAAAAAACgBAARYBCgB0AVYBBgCEAX0BCgDcARYBBgBaAn0BCgDcArICDgAu
AxcDEgB9A1wDFgCuA1wDEgC9A1wDBgDWBX0BDgCACBcDGgBLCSMJBgBbCkAKHgCmCpQKHgDBCpQK
HgDwCpQKGgD9CiMJIgC4C48LJgBeDEgMJgB3DEgMJgCkDIwMBgDODLsMCgANDeYMCgAlDRMAJgBa
DT0NBgCPDW8NBgCtDX0BBgDRDX0BCgDqDRMABgA4DhkOBgBMDn0BBgBTDn0BBgBrDn0BBgCFDn0B
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
ZxIiBAkCfRIoBAECSw8xBBECBQ48AwECnBITAFQAUAETABkAXwJsACkAoxLfAPkBrxJoAPkBfhA2
A/kBuhI8A1QAGxHTAmEALRNeBCkCSw9kBDECPBFYA4EBVRMTAMkBWxNrBBkCfhBxBCECjBB3BKkB
ahN8BIkAmBBxAJkAbhPKAJkAdxPKAJkAhxOBBCECHxHfADECwhGrAzkCUAHKAEECUAGmBEEC6ROv
BFEC9RPFAEECBxS1BHkAdBBoAEkCHBS6BIkAMhTSBIkAUxTeBGkCSw/kBHECBQ48A5kAeRTzBJkA
rxJoAAEBrxJoAIECixT4BAEBjxT+BIkCtRQEBXkCwBQKBTkB0BQbBZkCUAETAKECUAHKAKkCUAHK
ALECUAFHBbkCUAGFBckCUAHKANECUAHKBdkCUAETAOECUAHKAOkCUAHzAvECUAETAPkCUAHKACkA
gwDjAS4AiwRoBi4AkwRxBi4AmwSQBkAAEwCGAUAAKwCuAUMAGwCVAUMAEwCGAUkAgwABAmMAEwCG
AWMAGwCVAWkAgwD0AYAAKwCuAYMAGwCVAYMAewCuAYMAcwCuAYkAgwAVAqAAKwCuAaMAEwCGAaMA
wwBeAsAAKwCuAcMA6wDiAsMAEwCGAeAAKwCuAeMAKwHiAgABKwCuAQABEwCGAQMBKwHiAiABKwCu
ASABEwCGAUABKwCuAUABEwCGAWABKwCuAWABEwCGAWMBKwHiAmMBUwQ5BWMBSwQmBWMBQwSuAWMB
WwRNBYABKwCuAaABKwCuAcABEwCGAcABKwCuAeABKwCuAQACKwCuAQACEwCGASkFgwQtBikFawRE
BkkFYwSGAUkFawSMBWkFcwTRBWkFawTpBYkFewSuAYkFawQDBoAHKwHiAsAHKwHiAs8B1AHZAd4B
LgIyAj0CQgJRAlEC2QLoAvgCLgIGAx4DsAP4AxoEQgIuAkICQgL4AjgEQARUBIsEwATYBOsEDgUu
AgQAAQAGAAUABwAGAAkAKAALACkAAAB0AU8AAAAtAlQAAADcAVkAAAA5Al4AAAD1ApgAAACdBuMA
AACwBugAAAC5BuwAAADJBvAAAADYBuwAAADuBvAAAAD7BuwAAAAPB/QAAAAUB+wAAAAgB+gAAAAq
B+wAAAA7B/gAAABLB+wAAABiB/QAAABsB+wAAAB9B/AAAACOB+wAAACmB/AAAACuB+wAAAC9B/AA
AADFB+wAAADUB/gAAADhB+wAAAD1B/AAAAAACOwAAAASCPwAAAAgCOwAAAA1CPwAAABBCOwAAABa
AvAAAABUCOwAAADcAfAAAABgCOwAAABsCOMAAABzCSgBAABzCfAAAAASDOwAAAAiDPAAAAAoDPAA
AAA2DOMAAgAEAAMAAgAFAAUAAgAGAAcAAgAHAAkAAgAPAAsAAgASAA0AAQATAA8AAQAUABEAAQAV
ABMAAQAWABUAAQAXABcAAQAYABkAAQAZABsAAQAaAB0AAQAbAB8AAQAcACEAAQAdACMAAQAeACUA
AQAfACcAAQAgACkAAQAhACsAAQAiAC0AAQAjAC8AAQAkADEAAQAlADMAAQAmADUAAQAnADcAAQAo
ADkAAQApADsAAQAqAD0AAQArAD8AAQAsAEEAAQAtAEMAAQAuAEUAAQAvAEcAAQAwAEkAAQAxAEsA
AQAyAE0AAgAzAE8AAgA9AFEAAgBDAFMAAQBEAFMAAgBFAFUAAQBGAFUAAQBIAFcAAgBHAFcAAgBJ
AFkAAQBKAFkAAgBLAFsAdQB1AIgAswG6AcEByAHAAscCdAOFAxcEUQQEgAAAAAAAAAAAAAAAAAAA
AAC2AAAABAAAAAAAAAAAAAAAAQAKAAAAAAAKAAAAAAAAAAAAAAAKABMAAAAAAAEAAAAAAAAAAAAA
AJ0AAQMAAAAACwAAAAAAAAAAAAAApgA/AwAAAAALAAAAAAAAAAAAAACmAI0DAAAAAAsAAAAAAAAA
AAAAAKYAAAkAAAAABAAAAAAAAAAAAAAACgCUCgAAAAALAAAAAAAAAAAAAACmAGsLAAAAAAQAAAAA
AAAAAAAAAAEAfQEAAAAACwAAAAAAAAAAAAAApgDuEgAAAAAFAAQABgAEAAAAEAAMAIMCAAAQABkA
gwIAAAAAGwCDAi0ATAItAM4CAAAAPE1vZHVsZT4AbXNjb3JsaWIATWljcm9zb2Z0LlZpc3VhbEJh
c2ljAE15QXBwbGljYXRpb24AU2NyaXB0Q29tcG9uZW50XzBjMGZlYjVhMzYzZDQ2ODJhMWIxNzQ1
Mzc5ZDdjZTFmLk15AE15Q29tcHV0ZXIATXlQcm9qZWN0AE15V2ViU2VydmljZXMAVGhyZWFkU2Fm
ZU9iamVjdFByb3ZpZGVyYDEAT3V0cHV0QnVmZmVyAFNjcmlwdENvbXBvbmVudF8wYzBmZWI1YTM2
M2Q0NjgyYTFiMTc0NTM3OWQ3Y2UxZgBVc2VyQ29tcG9uZW50AENvbm5lY3Rpb25zAFZhcmlhYmxl
cwBTY3JpcHRNYWluAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5BcHBsaWNhdGlvblNlcnZpY2VzAEFw
cGxpY2F0aW9uQmFzZQAuY3RvcgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuRGV2aWNlcwBDb21wdXRl
cgBTeXN0ZW0AT2JqZWN0AC5jY3RvcgBnZXRfQ29tcHV0ZXIAbV9Db21wdXRlck9iamVjdFByb3Zp
ZGVyAGdldF9BcHBsaWNhdGlvbgBtX0FwcE9iamVjdFByb3ZpZGVyAFVzZXIAZ2V0X1VzZXIAbV9V
c2VyT2JqZWN0UHJvdmlkZXIAZ2V0X1dlYlNlcnZpY2VzAG1fTXlXZWJTZXJ2aWNlc09iamVjdFBy
b3ZpZGVyAEFwcGxpY2F0aW9uAFdlYlNlcnZpY2VzAEVxdWFscwBvAEdldEhhc2hDb2RlAFR5cGUA
R2V0VHlwZQBUb1N0cmluZwBDcmVhdGVfX0luc3RhbmNlX18AVABpbnN0YW5jZQBEaXNwb3NlX19J
bnN0YW5jZV9fAGdldF9HZXRJbnN0YW5jZQBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuTXlTZXJ2aWNl
cy5JbnRlcm5hbABDb250ZXh0VmFsdWVgMQBtX0NvbnRleHQAR2V0SW5zdGFuY2UAQ296eVJvYy5T
U0lTUGx1cy4yMDEyAENvenlSb2MuU3FsU2VydmVyLlNTSVMAU2NyaXB0QnVmZmVyUGx1cwBNaWNy
b3NvZnQuU3FsU2VydmVyLlR4U2NyaXB0AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlBpcGVsaW5l
AFNjcmlwdENvbXBvbmVudABNaWNyb3NvZnQuU3FsU2VydmVyLlBpcGVsaW5lSG9zdABQaXBlbGlu
ZUJ1ZmZlcgBPdXRwdXROYW1lTWFwAENvbXBvbmVudABPYmplY3RJRABJc0lucHV0AEJ1ZmZlcgBP
dXRwdXRNYXAAZ2V0X1N0YXRpY0lucHV0Q29sdW1ucwBzZXRfQ2F0ZWdvcnkAVmFsdWUAc2V0X0Nh
dGVnb3J5X0lzTnVsbABzZXRfQ2F0ZWdvcnlTdHJpbmcAc2V0X0NhdGVnb3J5U3RyaW5nX0lzTnVs
bABzZXRfQ29tcHV0ZXJOYW1lAHNldF9Db21wdXRlck5hbWVfSXNOdWxsAHNldF9EYXRhAHNldF9E
YXRhX0lzTnVsbABzZXRfRXZlbnRDb2RlAHNldF9FdmVudENvZGVfSXNOdWxsAHNldF9FdmVudElk
ZW50aWZpZXIAc2V0X0V2ZW50SWRlbnRpZmllcl9Jc051bGwAc2V0X0V2ZW50VHlwZQBzZXRfRXZl
bnRUeXBlX0lzTnVsbABzZXRfSW5zZXJ0aW9uU3RyaW5ncwBzZXRfSW5zZXJ0aW9uU3RyaW5nc19J
c051bGwAc2V0X0xvZ2ZpbGUAc2V0X0xvZ2ZpbGVfSXNOdWxsAHNldF9NZXNzYWdlAHNldF9NZXNz
YWdlX0lzTnVsbABzZXRfUmVjb3JkTnVtYmVyAHNldF9SZWNvcmROdW1iZXJfSXNOdWxsAHNldF9T
b3VyY2VOYW1lAHNldF9Tb3VyY2VOYW1lX0lzTnVsbABEYXRlVGltZQBzZXRfVGltZUdlbmVyYXRl
ZABzZXRfVGltZUdlbmVyYXRlZF9Jc051bGwAc2V0X1RpbWVXcml0dGVuAHNldF9UaW1lV3JpdHRl
bl9Jc051bGwAc2V0X1R5cGUAc2V0X1R5cGVfSXNOdWxsAHNldF9Vc2VyAHNldF9Vc2VyX0lzTnVs
bABnZXRfU3RhdGljT3V0cHV0Q29sdW1ucwBBZGRSb3cAU2V0RW5kT2ZSb3dzZXQARW5kT2ZSb3dz
ZXQAU3RhdGljSW5wdXRDb2x1bW5zAENhdGVnb3J5AENhdGVnb3J5X0lzTnVsbABDYXRlZ29yeVN0
cmluZwBDYXRlZ29yeVN0cmluZ19Jc051bGwAQ29tcHV0ZXJOYW1lAENvbXB1dGVyTmFtZV9Jc051
bGwARGF0YQBEYXRhX0lzTnVsbABFdmVudENvZGUARXZlbnRDb2RlX0lzTnVsbABFdmVudElkZW50
aWZpZXIARXZlbnRJZGVudGlmaWVyX0lzTnVsbABFdmVudFR5cGUARXZlbnRUeXBlX0lzTnVsbABJ
bnNlcnRpb25TdHJpbmdzAEluc2VydGlvblN0cmluZ3NfSXNOdWxsAExvZ2ZpbGUATG9nZmlsZV9J
c051bGwATWVzc2FnZQBNZXNzYWdlX0lzTnVsbABSZWNvcmROdW1iZXIAUmVjb3JkTnVtYmVyX0lz
TnVsbABTb3VyY2VOYW1lAFNvdXJjZU5hbWVfSXNOdWxsAFRpbWVHZW5lcmF0ZWQAVGltZUdlbmVy
YXRlZF9Jc051bGwAVGltZVdyaXR0ZW4AVGltZVdyaXR0ZW5fSXNOdWxsAFR5cGVfSXNOdWxsAFVz
ZXJfSXNOdWxsAFN0YXRpY091dHB1dENvbHVtbnMAU2NyaXB0Q29tcG9uZW50UGx1cwBGaW5pc2hP
dXRwdXRzAE1hcmtPdXRwdXRzRmluaXNoZWQAUHJpbWVPdXRwdXQAT3V0cHV0cwBPdXRwdXRJRHMA
QnVmZmVycwBDcmVhdGVOZXdPdXRwdXRSb3dzAFBhcmVudENvbXBvbmVudABNaWNyb3NvZnQuU3Fs
U2VydmVyLkRUU1J1bnRpbWVXcmFwAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlJ1bnRpbWUuV3Jh
cHBlcgBJRFRTQ29ubmVjdGlvbk1hbmFnZXIxMDAAZ2V0X0Nvbm5lY3Rpb24AQ29ubmVjdGlvbgBW
YWxpZGF0ZQBlcnJNZXNzYWdlAEdldFByb3BlcnRpZXMAc2V0X0Nvbm5lY3Rpb24AdmFsdWUAZ2V0
X0lzUXVlcnlWYXJpYWJsZQBzZXRfSXNRdWVyeVZhcmlhYmxlAGdldF9RdWVyeQBzZXRfUXVlcnkA
Z2V0X1F1ZXJ5VmFyaWFibGUAc2V0X1F1ZXJ5VmFyaWFibGUAZ2V0X1dtaUNvbm5lY3Rpb25UeXBl
AEdldFZhcmlhYmxlXwB2YXJOYW1lAFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljAExpc3RgMQBV
bndpbmRSb3dfAGFycgBwb3MAYnVmAHJlc3VsdABTZXR1cE91dHB1dENvbHVtbnNfAFN5c3RlbS5N
YW5hZ2VtZW50AE1hbmFnZW1lbnRPYmplY3RDb2xsZWN0aW9uAE1hbmFnZW1lbnRTY29wZQBHZXRR
dWVyeVJlc3VsdF8Ac2NvcGUAb25seU1ldGEAUHJvcGVydHlEYXRhAERhdGFUeXBlAEdldER0c1R5
cGVGcm9tUHJvcGVydHlfAHByb3AAZHRzVHlwZQBsZW5ndGgAcHJlY2lzaW9uAHNjYWxlAGNvZGVQ
YWdlAEdldFF1YWxpZmllcl8AcXVhbE5hbWUAZGVmVmFsdWUATWljcm9zb2Z0LlNxbFNlcnZlci5E
VFNQaXBlbGluZVdyYXAATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUGlwZWxpbmUuV3JhcHBlcgBJ
RFRTT3V0cHV0Q29sdW1uMTAwAEdldFZhbHVlXwBjb2x1bW4ARmlyZUVycm9yXwBtZXNzYWdlAG1f
Y29ubmVjdGlvbgBtX2lzUXVlcnlWYXIAbV9xdWVyeQBJc1F1ZXJ5VmFyaWFibGUAUXVlcnkAUXVl
cnlWYXJpYWJsZQBXbWlDb25uZWN0aW9uVHlwZQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwARWRpdG9y
QnJvd3NhYmxlQXR0cmlidXRlAEVkaXRvckJyb3dzYWJsZVN0YXRlAFN5c3RlbS5Db2RlRG9tLkNv
bXBpbGVyAEdlbmVyYXRlZENvZGVBdHRyaWJ1dGUAU3lzdGVtLkRpYWdub3N0aWNzAERlYnVnZ2Vy
SGlkZGVuQXR0cmlidXRlAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5Db21waWxlclNlcnZpY2VzAFN0
YW5kYXJkTW9kdWxlQXR0cmlidXRlAEhpZGVNb2R1bGVOYW1lQXR0cmlidXRlAFN5c3RlbS5Db21w
b25lbnRNb2RlbC5EZXNpZ24ASGVscEtleXdvcmRBdHRyaWJ1dGUAU3lzdGVtLlJ1bnRpbWUuQ29t
cGlsZXJTZXJ2aWNlcwBSdW50aW1lSGVscGVycwBHZXRPYmplY3RWYWx1ZQBSdW50aW1lVHlwZUhh
bmRsZQBHZXRUeXBlRnJvbUhhbmRsZQBBY3RpdmF0b3IAQ3JlYXRlSW5zdGFuY2UATXlHcm91cENv
bGxlY3Rpb25BdHRyaWJ1dGUAZ2V0X1ZhbHVlAHNldF9WYWx1ZQBTeXN0ZW0uUnVudGltZS5JbnRl
cm9wU2VydmljZXMAQ29tVmlzaWJsZUF0dHJpYnV0ZQBTdHJpbmcAVUludDE2AHNldF9JdGVtAFNl
dE51bGwASW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbgBCeXRlAFVJbnQzMgBTY3JpcHRCdWZmZXIA
Q0xTQ29tcGxpYW50QXR0cmlidXRlAEdldE91dHB1dElEAElEVFNDb21wb25lbnRNZXRhRGF0YTEw
MABnZXRfQ29tcG9uZW50TWV0YURhdGEASURUU1J1bnRpbWVDb25uZWN0aW9uQ29sbGVjdGlvbjEw
MABnZXRfUnVudGltZUNvbm5lY3Rpb25Db2xsZWN0aW9uAElEVFNSdW50aW1lQ29ubmVjdGlvbjEw
MABnZXRfSXRlbQBnZXRfQ29ubmVjdGlvbk1hbmFnZXIAU3lzdGVtLkNvbGxlY3Rpb25zAEhhc2h0
YWJsZQBJRFRTT3V0cHV0MTAwAE1hbmFnZW1lbnRPYmplY3QARGljdGlvbmFyeUVudHJ5AEV4Y2Vw
dGlvbgBJRW51bWVyYXRvcgBNYW5hZ2VtZW50T2JqZWN0RW51bWVyYXRvcgBJRGljdGlvbmFyeUVu
dW1lcmF0b3IARW51bWVyYXRvcgBJRFRTT3V0cHV0Q29sbGVjdGlvbjEwMABnZXRfT3V0cHV0Q29s
bGVjdGlvbgBJbnQzMgBJRFRTT3V0cHV0Q29sdW1uQ29sbGVjdGlvbjEwMABnZXRfT3V0cHV0Q29s
dW1uQ29sbGVjdGlvbgBnZXRfQ291bnQAR2V0RW51bWVyYXRvcgBnZXRfQ3VycmVudABnZXRfTmFt
ZQBQaXBlbGluZUNvbXBvbmVudABnZXRfSG9zdENvbXBvbmVudABJRFRTQnVmZmVyTWFuYWdlcjEw
MABnZXRfQnVmZmVyTWFuYWdlcgBnZXRfQnVmZmVyAGdldF9MaW5lYWdlSUQARmluZENvbHVtbkJ5
TGluZWFnZUlEAEFkZABNb3ZlTmV4dABJRGlzcG9zYWJsZQBEaXNwb3NlAEFjcXVpcmVDb25uZWN0
aW9uAE1hbmFnZW1lbnRCYXNlT2JqZWN0AGdldF9LZXkAQ29udmVyc2lvbnMAVG9JbnRlZ2VyAFBy
b2plY3REYXRhAFNldFByb2plY3RFcnJvcgBnZXRfTWVzc2FnZQBGb3JtYXQAQ2xlYXJQcm9qZWN0
RXJyb3IAUmVsZWFzZUNvbm5lY3Rpb24ASXNOdWxsT3JFbXB0eQBBcHBsaWNhdGlvbkV4Y2VwdGlv
bgBzZXRfQ29ubmVjdGlvbk1hbmFnZXJJRABBcnJheUxpc3QASW50ZXJhY3Rpb24ASUlmAEFycmF5
AFRvQXJyYXkARW1wdHkASURUU1ZhcmlhYmxlczEwMABJRFRTVmFyaWFibGVEaXNwZW5zZXIxMDAA
Z2V0X1ZhcmlhYmxlRGlzcGVuc2VyAExvY2tPbmVGb3JSZWFkAElEVFNWYXJpYWJsZTEwMABVbmxv
Y2sAZ2V0X0lzQXJyYXkAZ2V0X0xlbmd0aABDbG9uZQBQcm9wZXJ0eURhdGFDb2xsZWN0aW9uAFBy
b3BlcnR5RGF0YUVudW1lcmF0b3IATWljcm9zb2Z0LlNxbFNlcnZlci5NYW5hZ2VkRFRTAE1pY3Jv
c29mdC5TcWxTZXJ2ZXIuRHRzLlJ1bnRpbWUAZ2V0X0Rlc2lnbkNvbm5lY3Rpb25zAENvbm5lY3Rp
b25NYW5hZ2VyAFJlc2V0AGdldF9Qcm9wZXJ0aWVzAE5ldwBzZXRfTmFtZQBzZXRfRGVzY3JpcHRp
b24AU2V0RGF0YVR5cGVQcm9wZXJ0aWVzAE9iamVjdFF1ZXJ5AE1hbmFnZW1lbnRPYmplY3RTZWFy
Y2hlcgBNYW5hZ2VtZW50RXhjZXB0aW9uAEVudW1lcmF0aW9uT3B0aW9ucwBnZXRfT3B0aW9ucwBz
ZXRfUHJvdG90eXBlT25seQBHZXQATWFuYWdlbWVudFN0YXR1cwBnZXRfRXJyb3JDb2RlAENpbVR5
cGUAZ2V0X1R5cGUAUXVhbGlmaWVyRGF0YUNvbGxlY3Rpb24AZ2V0X1F1YWxpZmllcnMAUXVhbGlm
aWVyRGF0YQBUaW1lU3BhbgBnZXRfRGF0YVR5cGUATWF0aABNaW4AU3Vic3RyaW5nAE1hbmFnZW1l
bnREYXRlVGltZUNvbnZlcnRlcgBUb0RhdGVUaW1lAGdldF9UaWNrcwBJbnQ2NABGaXJlRXJyb3IA
U1NJU1NjcmlwdENvbXBvbmVudEVudHJ5UG9pbnRBdHRyaWJ1dGUAQ296eVJvYy5TcWxTZXJ2ZXIu
U1NJUy5BdHRyaWJ1dGVzAEZpbHRlclByb3BlcnRpZXNBdHRyaWJ1dGUAVmFsaWRhdGVQcm9wZXJ0
aWVzQXR0cmlidXRlAFNvcnRQcm9wZXJ0aWVzQXR0cmlidXRlAFJlZnJlc2hQcm9wZXJ0aWVzQXR0
cmlidXRlAFJlZnJlc2hQcm9wZXJ0aWVzAERlc2NyaXB0aW9uQXR0cmlidXRlAFRleHREaWFsb2dB
dHRyaWJ1dGUAVmFyaWFibGVBdHRyaWJ1dGUAQ29ubmVjdGlvbkF0dHJpYnV0ZQBDb21waWxhdGlv
blJlbGF4YXRpb25zQXR0cmlidXRlAFJ1bnRpbWVDb21wYXRpYmlsaXR5QXR0cmlidXRlAFN5c3Rl
bS5SdW50aW1lLlZlcnNpb25pbmcAVGFyZ2V0RnJhbWV3b3JrQXR0cmlidXRlAFNjcmlwdENvbXBv
bmVudF8wYzBmZWI1YTM2M2Q0NjgyYTFiMTc0NTM3OWQ3Y2UxZi5kbGwAAACAm0kAcwBOAHUAbABs
ACAAcAByAG8AcABlAHIAdAB5ACAAYwBhAG4AbgBvAHQAIABiAGUAIABzAGUAdAAgAHQAbwAgAEYA
YQBsAHMAZQAuACAAQQBzAHMAaQBnAG4AIABhACAAdgBhAGwAdQBlACAAdABvACAAdABoAGUAIABj
AG8AbAB1AG0AbgAgAGkAbgBzAHQAZQBhAGQALgAAEUMAYQB0AGUAZwBvAHIAeQAAHUMAYQB0AGUA
ZwBvAHIAeQBTAHQAcgBpAG4AZwAAGUMAbwBtAHAAdQB0AGUAcgBOAGEAbQBlAAAJRABhAHQAYQAA
E0UAdgBlAG4AdABDAG8AZABlAAAfRQB2AGUAbgB0AEkAZABlAG4AdABpAGYAaQBlAHIAABNFAHYA
ZQBuAHQAVAB5AHAAZQAAIUkAbgBzAGUAcgB0AGkAbwBuAFMAdAByAGkAbgBnAHMAAA9MAG8AZwBm
AGkAbABlAAAPTQBlAHMAcwBhAGcAZQAAGVIAZQBjAG8AcgBkAE4AdQBtAGIAZQByAAAVUwBvAHUA
cgBjAGUATgBhAG0AZQAAG1QAaQBtAGUARwBlAG4AZQByAGEAdABlAGQAABdUAGkAbQBlAFcAcgBp
AHQAdABlAG4AAAlUAHkAcABlAAAJVQBzAGUAcgAADU8AdQB0AHAAdQB0AAAVQwBvAG4AbgBlAGMA
dABpAG8AbgAAP0YAYQBpAGwAZQBkACAAdABvACAAcwBlAHQAIABjAG8AbAB1AG0AbgAgACcAewAw
AH0AJwAuACAAewAxAH0AAS1TAGUAbABlAGMAdAAgAFcATQBJACAAYwBvAG4AbgBlAGMAdABpAG8A
bgAuAAAlUwBwAGUAYwBpAGYAeQAgAFcAUQBMACAAcQB1AGUAcgB5AC4AAB9JAHMAUQB1AGUAcgB5
AFYAYQByAGkAYQBiAGwAZQAAG1EAdQBlAHIAeQBWAGEAcgBpAGEAYgBsAGUAAAtRAHUAZQByAHkA
AAdXAE0ASQAAF0QAZQBzAGMAcgBpAHAAdABpAG8AbgAAJUkAbgB2AGEAbABpAGQAIABXAFEATAAg
AHEAdQBlAHIAeQAuAAANTQBhAHgATABlAG4AAC1VAG4AaABhAG4AZABsAGUAZAAgAGMAbwBsAHUA
bQBuACAAdAB5AHAAZQAuAAAVVwBNAEkAIABTAG8AdQByAGMAZQAAhSWBjiY5Vk+qCVoAM1RH+AAI
t3pcVhk04IkIsD9ffxHVCjoDIAABAwAAAQQAABIMBwYVEhgBEgwEAAASCAcGFRIYARIIBAAAEhEH
BhUSGAESEQQAABIUBwYVEhgBEhQECAASDAQIABIIBAgAEhEECAASFAQgAQIcAyAACAQgABIVAyAA
DgIeAAcQAQEeAB4ABzABAQEQHgACEwAEIAATAAcGFRIZARMABCgAEwAIFs9JC7gMNOoIiYRdzYCA
zJELIAUBEiEIAhIlEikEIAAdDgQgAQEHBCABAQIEIAEBDgQgAQEFBCABAQkFIAEBES0DIAACBCgA
HQ4DKAAHAygAAgMoAA4DKAAFAygACQQoABEtAwYSJAMGEigDBhIcCyAEAQgdCB0SJRIpAwYSIQUg
AQESIQQgABI1BCgAEjUFIAECEA4EIAEcDgogARUSOQEdHB0cDiAEAR0cCB0cFRI5AR0cByACEj0S
QQIQIAYBEkUQEUkQCBAIEAgQCAcgAxwSRQ4cBiACHBJNHAIGDgIGAgUgAQERVQgBAAEAAAAAAAUg
AgEODhgBAApNeVRlbXBsYXRlCDEwLjAuMC4wAAAEAQAAAAYVEhgBEgwGFRIYARIIBhUSGAESEQYV
EhgBEhQEBwESDAQHARIIBAcBEhEEBwESFBABAAtNeS5Db21wdXRlcgAADAEAB015LlVzZXIAABMB
AA5NeS5BcHBsaWNhdGlvbgAAEwEADk15LldlYlNlcnZpY2VzAAAEAAEcHAMHAQIDBwEIBgABEhUR
cQQHARIVAwcBDgUQAQAeAAQKAR4ABAcBHgAHIAQBDg4ODmEBADRTeXN0ZW0uV2ViLlNlcnZpY2Vz
LlByb3RvY29scy5Tb2FwSHR0cENsaWVudFByb3RvY29sEkNyZWF0ZV9fSW5zdGFuY2VfXxNEaXNw
b3NlX19JbnN0YW5jZV9fAAAABhUSGAETAAYVEhkBEwAECgETAAUgAQETAAgHAxMAEwATAAUBAAAA
AAQHAR0OBSACAQgcBCABAQgGBwIdDh0OBgACCBIpDgQHAggIBSAAEoCdBSAAEoChBiABEoClHAQH
ARI1BSAAEoDNBiABEoCtHAUgABKA1QUgABKAvQMgABwFIAASgNkFIAASgN0FIAIICAgFIAIBHBwE
IAEcHAUgABKAwQUgABKA5QUgABKAxQQAAQ4cBhUSOQEdHAkgABURgMkBEwAHFRGAyQEdHAQAAQgc
BCAAEiUFIAESTRwGAAEBEoC5BgADDg4cHAQgAQEcQgcYCAgSgKkSgK0SQRJNEj0dHBKAsRUSOQEd
HBGAtR0cEYC1CA4cEoC5EoC5EoC9EoDBEoDFEYC1FRGAyQEdHBKAxQQAAQIOCgcEAgISgK0SgLkE
IAEIHAYAAxwCHBwHIAESgP0SFQIdDgcHAh0OEoD1BSAAEoEFCCACAQ4QEoEBBiABEoEJHAcHAxwc
EoEBEAcDHRwVEjkBHRwVEjkBHRwCHRwJBwMSgP0cEoC9BSAAEoEVBiABEoEZHAUgABKBDQUgABKB
EQQgABJFBCAAEk0JIAUBEUkICAgIGgcMEoCtEkESgMESgQ0IEk0RSQgIEkUIEoERCCACARJBEoEd
BSAAEoEpBCAAEj0FIAARgS0RBwcSPRKBHQ4SPRKBIQgSgSUFIAARgTEFBwERgTEFIAASgTUGIAES
gTkOBwcDHBwSgLkEIAARSQUAAggICAUgAg4ICAUAAREtDgMgAAoMBwUcHBFJEYE9EYE9CiAGAQgO
Dg4IEAISAQANR2V0UHJvcGVydGllcwAADQEACFZhbGlkYXRlAAAFIAEBHQ43AQAEAAAACkNvbm5l
Y3Rpb24PSXNRdWVyeVZhcmlhYmxlBVF1ZXJ5DVF1ZXJ5VmFyaWFibGUAAAYgAQERgWE9AQA4U3Bl
Y2lmaWVzIGlmIFF1ZXJ5IHByb3BlcnR5IHJlZmVyZW5jZXMgcGFja2FnZSB2YXJpYWJsZS4AAAYg
AwEODg4XAQANU3BlY2lmeSBxdWVyef8Dc3FsAAAZAQAUU3BlY2lmaWVzIFdNSSBxdWVyeS4AACkB
ACRTcGVjaWZpZXMgdmFyaWFibGUgY29udGFpbmluZyBxdWVyeS4AABYBABFXbWlDb25uZWN0aW9u
VHlwZQAAIwEAHlNlbGVjdCBXTUkgQ29ubmVjdGlvbiBNYW5hZ2VyLgAACAEACAAAAAAAHgEAAQBU
AhZXcmFwTm9uRXhjZXB0aW9uVGhyb3dzAUcBABouTkVURnJhbWV3b3JrLFZlcnNpb249djQuMAEA
VA4URnJhbWV3b3JrRGlzcGxheU5hbWUQLk5FVCBGcmFtZXdvcmsgNJBlAAAAAAAAAAAAAK5lAAAA
IAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgZQAAAAAAAAAAAAAAAAAAAABfQ29yRGxsTWFpbgBtc2Nv
cmVlLmRsbAAAAAAA/yUAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAYAACAAAAAAAAAAAAAAAAA
AAABAAEAAAAwAACAAAAAAAAAAAAAAAAAAAABAAAAAABIAAAAWIAAAOwCAAAAAAAAAAAAAOwCNAAA
AFYAUwBfAFYARQBSAFMASQBPAE4AXwBJAE4ARgBPAAAAAAC9BO/+AAABAAAAAAAAAAAAAAAAAAAA
AAA/AAAAAAAAAAQAAAACAAAAAAAAAAAAAAAAAAAARAAAAAEAVgBhAHIARgBpAGwAZQBJAG4AZgBv
AAAAAAAkAAQAAABUAHIAYQBuAHMAbABhAHQAaQBvAG4AAAAAAAAAsARMAgAAAQBTAHQAcgBpAG4A
ZwBGAGkAbABlAEkAbgBmAG8AAAAoAgAAAQAwADAAMAAwADAANABiADAAAAAsAAIAAQBGAGkAbABl
AEQAZQBzAGMAcgBpAHAAdABpAG8AbgAAAAAAIAAAADAACAABAEYAaQBsAGUAVgBlAHIAcwBpAG8A
bgAAAAAAMAAuADAALgAwAC4AMAAAAIwANQABAEkAbgB0AGUAcgBuAGEAbABOAGEAbQBlAAAAUwBj
AHIAaQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwAwAGMAMABmAGUAYgA1AGEAMwA2ADMAZAA0ADYA
OAAyAGEAMQBiADEANwA0ADUAMwA3ADkAZAA3AGMAZQAxAGYALgBkAGwAbAAAAAAAKAACAAEATABl
AGcAYQBsAEMAbwBwAHkAcgBpAGcAaAB0AAAAIAAAAJQANQABAE8AcgBpAGcAaQBuAGEAbABGAGkA
bABlAG4AYQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfADAAYwAwAGYAZQBi
ADUAYQAzADYAMwBkADQANgA4ADIAYQAxAGIAMQA3ADQANQAzADcAOQBkADcAYwBlADEAZgAuAGQA
bABsAAAAAAA0AAgAAQBQAHIAbwBkAHUAYwB0AFYAZQByAHMAaQBvAG4AAAAwAC4AMAAuADAALgAw
AAAAOAAIAAEAQQBzAHMAZQBtAGIAbAB5ACAAVgBlAHIAcwBpAG8AbgAAADAALgAwAC4AMAAuADAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABgAAAMAAAAwDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA]]></arrayElement></arrayElements></property><property id="28" name="UserComponentTypeName" dataType="System.String">CozyRoc.SqlServer.SSIS.ScriptComponentHostPlus, CozyRoc.SSISPlus.2012, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea</property><property id="30" 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">ScriptComponent_0c0feb5a363d4682a1b1745379d7ce1f</property><property id="31" name="ScriptLanguage" dataType="System.String" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91">VisualBasic</property></properties><connections><connection id="33" name="Connection" connectionManagerID="{0C4E15D3-A4C0-46DA-84FD-25AFDC97659A}" /></connections><outputs><output id="34" name="Output" hasSideEffects="true"><outputColumns><outputColumn id="35" name="Category" lineageId="35" dataType="ui2" /><outputColumn id="36" name="CategoryString" lineageId="36" length="256" dataType="wstr" /><outputColumn id="37" name="ComputerName" lineageId="37" length="256" dataType="wstr" /><outputColumn id="38" name="Data" lineageId="38" dataType="ui1" /><outputColumn id="39" name="EventCode" lineageId="39" dataType="ui2" /><outputColumn id="40" name="EventIdentifier" lineageId="40" dataType="ui4" /><outputColumn id="41" name="EventType" lineageId="41" dataType="ui1" /><outputColumn id="42" name="InsertionStrings" lineageId="42" length="256" dataType="wstr" /><outputColumn id="43" name="Logfile" lineageId="43" length="256" dataType="wstr" /><outputColumn id="44" name="Message" lineageId="44" length="256" dataType="wstr" /><outputColumn id="45" name="RecordNumber" lineageId="45" dataType="ui4" /><outputColumn id="46" name="SourceName" lineageId="46" length="256" dataType="wstr" /><outputColumn id="47" name="TimeGenerated" lineageId="47" dataType="dbTimeStamp" /><outputColumn id="48" name="TimeWritten" lineageId="48" dataType="dbTimeStamp" /><outputColumn id="49" name="Type" lineageId="49" length="256" dataType="wstr" /><outputColumn id="50" name="User" lineageId="50" length="256" dataType="wstr" /></outputColumns><externalMetadataColumns /></output></outputs></component>