<component id="14" name="Dynamics CRM Audit Logs Query" 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="10" 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;7"><properties><property id="15" 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[SC_6ad45d3034474ff4ba9b8f9cdbd17de6.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>{A5ED2BC2-175F-4064-8646-CF06A6E137C6}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>SC_6ad45d3034474ff4ba9b8f9cdbd17de6</RootNamespace>
    <AssemblyName>SC_6ad45d3034474ff4ba9b8f9cdbd17de6</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.Dynamics, 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.Dynamics.dll</HintPath>
    </Reference>
    <Reference Include="CozyRoc.SSISPlus.2016, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea" />
    <Reference Include="Microsoft.SqlServer.ManagedDTS, Version=13.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_13.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.ManagedDTS.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Web.Services" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.TxScript, Version=13.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=13.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=13.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=13.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="" DebugInfoExeName="devenv.exe" DebugInfoCommandLine="/vstaHostDebugUri:&quot;vstadebug9b38d93b-4cfd-4a39-af77-44e163bb7227/8cf975cd-0e94-4b17-a554-cfb85e3953cb&quot;" />
        <Host Name="SSIS_SC110" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC130</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
</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

    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 Buffer.EndOfRowset Then
            InputsFinished = InputsFinished + 1
            If InputsFinished = 1 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

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 CrmConnection() As IDTSConnectionManager100
        Get
            Return ParentComponent.ComponentMetaData.RuntimeConnectionCollection("CrmConnection").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[main.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-2016 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.Web.Services.Protocols

Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS
Imports CozyRoc.SqlServer.SSIS.Attributes
Imports CozyRoc.Dynamics.Crm
Imports CozyRoc.Dynamics.Crm2011.OrganizationService
Imports CRM2011 = CozyRoc.Dynamics.Crm2011.OrganizationService


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute()> _
<CLSCompliant(False)> _
<ColumnMappings()> _
<SortProperties(New String() {"CrmConnection", "BatchSize", "InsertTerminator"})> _
<ValidateProperties("Validate")> _
Public Class ScriptMain
    Inherits UserComponent


    Public Const Formatted As String = "Formatted"


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Try
            ' Setup entity reference.
            Dim entityRef As New EntityReference()
            entityRef.LogicalName = Convert.ToString(Row.Buffer(m_entityIdx))
            entityRef.Id = New Guid(Convert.ToString(Row.Buffer(m_idIdx)))

            ' Setup paging info.
            Dim pi As PagingInfo = New PagingInfo()
            pi.Count = Me.BatchSize
            pi.PageNumber = 1

            ' Setup audit request.
            Dim req As New OrganizationRequest()
            req.RequestName = "RetrieveRecordChangeHistory"
            req("Target") = entityRef
            req("PagingInfo") = pi

            While True
                Dim res As OrganizationResponse = m_service.Execute(req)
                Dim details As AuditDetailCollection = CType( _
                    res("AuditDetailCollection"),  _
                    AuditDetailCollection)

                Call OutputDetails_(details)

                If details.MoreRecords Then
                    ' Setup next PageInfo.
                    pi.PageNumber += 1
                    pi.PagingCookie = details.PagingCookie
                Else
                    ' Reached end. Exit loop.
                    Exit While
                End If
            End While

            If Me.InsertTerminator Then
                Call OutputBuffer.AddRow()
            End If

            If Row.EndOfRowset() Then
                Call OutputBuffer.SetEndOfRowset()
            End If
        Catch ex As SoapException
            Call FireError_(ex.Detail.InnerXml)
        Catch ex As Exception
            Call FireError_(ex.ToString())
        End Try
    End Sub ' Input_ProcessInputRow


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub PreExecute()
        Call MyBase.PreExecute()

        ' Setup CRM service.
        m_connection = CType( _
            Me.Connections.CrmConnection.AcquireConnection(Nothing),  _
            IConnection)
        Call m_connection.Connect()

        m_service = CType(m_connection.GetService(0), OrganizationServiceClient)

        Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)
        Dim inputCol As IDTSInputColumn100

        ' Get input column indexes.
        inputCol = GetInputColumn_("Entity")
        m_entityIdx = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            inputCol.LineageID)

        inputCol = GetInputColumn_("Id")
        m_idIdx = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            inputCol.LineageID)
    End Sub ' PreExecute


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub PostExecute()
        Call MyBase.PostExecute()

        Call m_connection.Close()
    End Sub ' PostExecute


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

        Try
            If String.IsNullOrEmpty(Me.CrmConnection) Then
                Throw New Exception("Select Dynamics CRM Connection.")
            End If

            Dim input As IDTSInput100 = Me.ComponentMetaData.InputCollection(0)
            If input.IsAttached AndAlso _
                (input.InputColumnCollection.Count = 0 OrElse _
                input.InputColumnCollection.Count < 2) Then
                Throw New Exception("Map input columns.")
            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("CrmConnection").ConnectionManagerID = Me.CrmConnection

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

        Validate = result
    End Function    ' Validate


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub ReinitializeMetaData()
        Call MyBase.ReinitializeMetaData()

        If MyBase.ComponentMetaData.InputCollection.Count = 0 Then
            ' At least one input must exist.
            Throw New Exception("No inputs.")
        End If

        Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)

        ' Cleanup.
        input.ExternalMetadataColumnCollection.IsUsed = True
        Call input.InputColumnCollection.RemoveAll()
        Call input.ExternalMetadataColumnCollection.RemoveAll()

        Dim column As IDTSExternalMetadataColumn100

        ' Setup entity.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "Entity"
        column.DataType = DataType.DT_WSTR
        column.Length = 100

        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "Id"
        column.DataType = DataType.DT_GUID
    End Sub ' ReinitializeMetaData


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select Dynamics CRM Connection Manager.")> _
    <Connection("CrmConnectionType")> _
    Public Property CrmConnection() As String
        Get
            CrmConnection = m_crmConnection
        End Get
        Set(ByVal value As String)
            m_crmConnection = value
        End Set
    End Property    ' CrmConnection


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Specifies retrieve batch size.")> _
    <DefaultValue(100)> _
    Public Property BatchSize() As Integer
        Get
            BatchSize = m_batchSize
        End Get
        Set(ByVal value As Integer)
            m_batchSize = value
        End Set
    End Property    ' BatchSize


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Indicates whether an empty line should be inserted at the end of each set of detail records.")> _
    Public Property InsertTerminator() As Boolean
        Get
            InsertTerminator = m_insertTermintator
        End Get
        Set(ByVal value As Boolean)
            m_insertTermintator = value
        End Set
    End Property    ' InsertTerminator
#End Region ' Properties


#Region "Internals"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private ReadOnly Property CrmConnectionType() As String()
        Get
            CrmConnectionType = New String() {"DYNAMICS-CRM"}
        End Get
    End Property    ' CrmConnectionType


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub FireError_(ByVal message As String)
        Dim cancel As Boolean = False
        Call MyBase.ComponentMetaData.FireError( _
            0, _
            "Dynamics CRM Audit Logs Query", _
            message, _
            String.Empty, _
            0, _
            cancel)
    End Sub     ' FireError_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Find input column of specified external column name.
    Private Function GetInputColumn_(ByVal externalName As String) As IDTSInputColumn100
        Dim result As IDTSInputColumn100 = Nothing
        Dim input As IDTSInput100 = MyBase.ComponentMetaData.InputCollection(0)
        Dim extColumn As IDTSExternalMetadataColumn100 = input.ExternalMetadataColumnCollection(externalName)

        ' Find input column for specified external column.
        For Each inputCol As IDTSInputColumn100 In input.InputColumnCollection
            If inputCol.ExternalMetadataColumnID = extColumn.ID Then
                ' Found input column.
                result = inputCol
                Exit For
            End If
        Next

        If result Is Nothing Then
            Throw New Exception("Input column not found.")
        End If

        GetInputColumn_ = result
    End Function    ' GetInputColumn_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Audit details output.
    Private Sub OutputDetails_(ByVal details As AuditDetailCollection)
        For Each detail As AuditDetail In details.AuditDetails
            If Not TypeOf detail Is AttributeAuditDetail Then
                Continue For
            End If

            Dim attributeDetail As AttributeAuditDetail = CType(detail, AttributeAuditDetail)

            ' Setup audit.
            Dim audit As Hashtable = GetAttributes_(detail.AuditRecord)
            Dim newAttrs As Hashtable = GetAttributes_(attributeDetail.NewValue)
            Dim oldAttrs As Hashtable = GetAttributes_(attributeDetail.OldValue)

            If Not attributeDetail.NewValue Is Nothing Then
                For Each attribute As KeyValuePair(Of String, Object) In attributeDetail.NewValue.Attributes
                    Call AddOutputRow_(audit)

                    With OutputBuffer
                        .fieldName = attribute.Key
                        .oldValue = Convert.ToString(oldAttrs(attribute.Key))
                        .oldValueFormatted = Convert.ToString(oldAttrs(attribute.Key + Formatted))
                        .newValue = Convert.ToString(newAttrs(attribute.Key))
                        .newValueFormatted = Convert.ToString(newAttrs(attribute.Key + Formatted))
                    End With
                Next
            End If

            If Not attributeDetail.OldValue Is Nothing Then
                For Each attribute As KeyValuePair(Of String, Object) In attributeDetail.OldValue.Attributes
                    If Not newAttrs.Contains(attribute.Key) Then
                        Call AddOutputRow_(audit)

                        With OutputBuffer
                            .fieldName = attribute.Key
                            .oldValue = Convert.ToString(oldAttrs(attribute.Key))
                            .oldValueFormatted = Convert.ToString(oldAttrs(attribute.Key + Formatted))
                        End With
                    End If
                Next
            End If
        Next
    End Sub     ' OutputDetails_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetAttributes_(ByVal entity As Entity) As Hashtable
        Dim result As New Hashtable

        If entity Is Nothing Then
            Return result
        End If

        For Each attribute As KeyValuePair(Of String, Object) In entity.Attributes
            Dim value As Object = attribute.Value
            Dim formattedValue As Object = attribute.Value

            Dim entityRef As EntityReference = TryCast(value, EntityReference)
            Dim osv As OptionSetValue = TryCast(value, OptionSetValue)

            If Not entityRef Is Nothing Then
                value = entityRef.Id
                formattedValue = entityRef.Name
            ElseIf Not osv Is Nothing Then
                value = osv.Value
                formattedValue = GetAttributeLabel_(osv.Value)
            End If

            result(attribute.Key) = value
            result(attribute.Key + Formatted) = formattedValue
        Next

        For Each attribute As KeyValuePair(Of String, String) In entity.FormattedValues
            result(attribute.Key + Formatted) = attribute.Value
        Next

        GetAttributes_ = result
    End Function    ' GetAttributes_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub AddOutputRow_(ByVal audit As Hashtable)
        With OutputBuffer
            Call .AddRow()

            .action = Convert.ToInt32(audit("action"))
            .actionFormatted = Convert.ToString(audit("action" + Formatted))
            .auditid = New Guid(Convert.ToString(audit("auditid")))
            .createdon = Convert.ToDateTime(audit("createdon"))
            .objectid = New Guid(Convert.ToString(audit("objectid")))
            .objectidFormatted = Convert.ToString(audit("objectid" + Formatted))
            .objecttypecode = Convert.ToString(audit("objecttypecode"))
            .objecttypecodeFormatted = Convert.ToString(audit("objecttypecode" + Formatted))
            .operation = Convert.ToInt32(audit("operation"))
            .operationFormatted = Convert.ToString(audit("operation" + Formatted))
            .userid = New Guid(Convert.ToString(audit("userid")))
            .useridFormatted = Convert.ToString(audit("userid" + Formatted))
        End With
    End Sub     ' AddOutputRow_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns attribute label for input code. Most probably not needed.
    ' DO NOTHING FOR NOW.
    Private Function GetAttributeLabel_(ByVal code As Integer) As String
        Dim result As String = String.Empty

        GetAttributeLabel_ = result
    End Function    ' GetAttributeLabel_
#End Region ' Internals


#Region "Attributes"
    Private m_crmConnection As String
    Private m_batchSize As Integer
    Private m_insertTermintator As Boolean

    Private m_connection As IConnection
    Private m_service As OrganizationServiceClient
    Private m_entityIdx As Integer
    Private m_idIdx As Integer
#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 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 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 [action]() As Int32
        Set
            Me(0) = Value
        End Set
    End Property
    Public WriteOnly Property [action_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 [actionFormatted]() As String
        Set
            Me(1) = Value
        End Set
    End Property
    Public WriteOnly Property [actionFormatted_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 [auditid]() As Guid
        Set
            Me(2) = Value
        End Set
    End Property
    Public WriteOnly Property [auditid_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 [createdon]() As DateTime
        Set
            Me(3) = Value
        End Set
    End Property
    Public WriteOnly Property [createdon_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 [objectid]() As Guid
        Set
            Me(4) = Value
        End Set
    End Property
    Public WriteOnly Property [objectid_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 [objectidFormatted]() As String
        Set
            Me(5) = Value
        End Set
    End Property
    Public WriteOnly Property [objectidFormatted_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 [objecttypecode]() As String
        Set
            Me(6) = Value
        End Set
    End Property
    Public WriteOnly Property [objecttypecode_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 [objecttypecodeFormatted]() As String
        Set
            Me(7) = Value
        End Set
    End Property
    Public WriteOnly Property [objecttypecodeFormatted_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 [operation]() As Int32
        Set
            Me(8) = Value
        End Set
    End Property
    Public WriteOnly Property [operation_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 [operationFormatted]() As String
        Set
            Me(9) = Value
        End Set
    End Property
    Public WriteOnly Property [operationFormatted_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 [userid]() As Guid
        Set
            Me(10) = Value
        End Set
    End Property
    Public WriteOnly Property [userid_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 [useridFormatted]() As String
        Set
            Me(11) = Value
        End Set
    End Property
    Public WriteOnly Property [useridFormatted_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 [fieldName]() As String
        Set
            Me(12) = Value
        End Set
    End Property
    Public WriteOnly Property [fieldName_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 [oldValue]() As String
        Set
            Me(13) = Value
        End Set
    End Property
    Public WriteOnly Property [oldValue_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 [oldValueFormatted]() As String
        Set
            Me(14) = Value
        End Set
    End Property
    Public WriteOnly Property [oldValueFormatted_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 [newValue]() As String
        Set
            Me(15) = Value
        End Set
    End Property
    Public WriteOnly Property [newValue_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 WriteOnly Property [newValueFormatted]() As String
        Set
            Me(16) = Value
        End Set
    End Property
    Public WriteOnly Property [newValueFormatted_IsNull] As Boolean
        Set
            If (value)
                SetNull(16)
            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() {"action", "actionFormatted", "auditid", "createdon", "objectid", "objectidFormatted", "objecttypecode", "objecttypecodeFormatted", "operation", "operationFormatted", "userid", "useridFormatted", "fieldName", "oldValue", "oldValueFormatted", "newValue", "newValueFormatted"}
        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\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_6ad45d3034474ff4ba9b8f9cdbd17de6")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("")> 
<Assembly: AssemblyProduct("SC_6ad45d3034474ff4ba9b8f9cdbd17de6")> 
<Assembly: AssemblyCopyright("Copyright @  2016")> 
<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("5b395152-bf3a-4f8d-b7c9-aa34085de81f")> 

' 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[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\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[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="3.0" schemaVersion="1.0">
	<msb:PropertyGroup>
		<msb:Language>msBuild</msb:Language>
		<msb:CodeName>SC_6ad45d3034474ff4ba9b8f9cdbd17de6</msb:CodeName>
		<msb:DisplayName>SC_6ad45d3034474ff4ba9b8f9cdbd17de6</msb:DisplayName>
		<msb:ProjectId>{A0E62868-D422-4BF1-9D62-3784AF59F868}</msb:ProjectId>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:Project Include="SC_6ad45d3034474ff4ba9b8f9cdbd17de6.vbproj"/>
		<msb:File Include="BufferWrapper.vb"/>
		<msb:File Include="main.vb"/>
		<msb:File Include="My Project\Settings.Designer.vb"/>
		<msb:File Include="My Project\Resources.Designer.vb"/>
		<msb:File Include="My Project\AssemblyInfo.vb"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:File Include="My Project\Resources.resx"/>
		<msb:File Include="My Project\Settings.settings"/>
	</msb:ItemGroup>
</c:Project>]]></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[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></arrayElements></property><property id="16" 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_6ad45d3034474ff4ba9b8f9cdbd17de6.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
MwURBQveIREEb2AAAAot1d4WEQR1VgAAASwMEQR1VgAAAW9hAAAK3ActC3KLAQBwc0cAAAp6BwoG
KgAAARAAAAIAJgA8YgAWAAAAABswBQABAgAACQAAEQNvYgAACgoWCzjpAQAABgeaDAh1IQAAATnW
AQAACHQhAAABDQIIb2MAAAooEQAABhMEAglvZAAACigRAAAGEwUCCW9lAAAKKBEAAAYTBglvZAAA
CjnkAAAACW9kAAAKb2YAAApvZwAAChMHOLEAAAASByhoAAAKEwgCEQQoEgAABgJ7CwAABCUSCChp
AAAKbzMAAAYlEQYSCChpAAAKb2oAAAooIgAACigjAAAKbzUAAAYlEQYSCChpAAAKcrsBAHAoawAA
Cm9qAAAKKCIAAAooIwAACm83AAAGJREFEggoaQAACm9qAAAKKCIAAAooIwAACm85AAAGEQUSCChp
AAAKcrsBAHAoawAACm9qAAAKKCIAAAooIwAACm87AAAGFCYSByhsAAAKOkP////eDhIH/hYCAAAb
b2EAAArcCW9lAAAKOasAAAAJb2UAAApvZgAACm9nAAAKEwkrexIJKGgAAAoTChEFEgooaQAACm9t
AAAKLWICEQQoEgAABgJ7CwAABCUSCihpAAAKbzMAAAYlEQYSCihpAAAKb2oAAAooIgAACigjAAAK
bzUAAAYRBhIKKGkAAApyuwEAcChrAAAKb2oAAAooIgAACigjAAAKbzcAAAYUJhIJKGwAAAo6ef//
/94OEgn+FgIAABtvYQAACtwHF9YLBwaOaT8O/v//KgAAAAEcAAACAFkA1i8BDgAAAAACAEgBneUB
DgAAAAAbMAMAOAEAAAoAABFzbgAACgsDLQcHCjgmAQAAAANvZgAACm9nAAAKDDimAAAAEgIoaAAA
Cg0SAyhvAAAKKCIAAAoTBBIDKG8AAAooIgAAChMFEQR1FgAAARMGEQR1KAAAARMHEQYsGREGb3AA
AAqMMQAAARMEEQZvcQAAChMFKyERBywdEQdvcgAACoxNAAABEwQCEQdvcgAACigTAAAGEwUHEgMo
aQAAChEEKCIAAApvcwAACgcSAyhpAAAKcrsBAHAoawAAChEFKCIAAApvcwAAChICKGwAAAo6Tv//
/94OEgL+FgIAABtvYQAACtwAA290AAAKb3UAAAoTCCsnEggodgAAChMJBxIJKHcAAApyuwEAcChr
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
PwL0A0cALy8AAAAABhhhEQYASACsMAAAAAADCKMEpQFIAOAwAAAAAAYYYREGAEgAAAABAAsWAAAB
AP8EAAABAP4JAAABAP4JAAABAP4JAAABAAoFAAABAJ4FAAABAJsTAAABAGYWAAABALsUAAABAO4E
AAABACgVAAACAAkCAAADAKwVAAAEAPgPAAAFAPAOAAABACgVAAACAAkCAAADAKwVAAAEAPgPAAAF
APAOAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJ
AAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAAB
APgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJ
AAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABAPgJAAABABICAAACALsFAAADAPgPAAAE
APAOAAABADUUAAACAHYRAAADABgUAAAEAPAOAAABAPgPAAABAAsWAAABACgVAAABACgVAAABAPgJ
AAABAOAOAAABALMEAAABALMECQBhEQEAEQBhEQYAGQBhEQoAKQBhERAAMQBhERAAOQBhERAAQQBh
ERAASQBhERAAUQBhERAAWQBhERUAYQBhERUAaQBhERAAcQBhERAAeQBhERAAgQBhEQYAiQBhEQYA
kQBhERoAmQBhERAASQFhERAAUQFhERAAWQFhERAAYQFhEQEAwQFhESAAyQFhEScA4QFhEQYA6QFh
EQYA8QFhEQYAAQJhES0AGQJhERAAKQJhEQYAsQBhEQYAaQG/D0YAeQG3DEwAMQLGCVEAOQJXClYA
sQCOBRAAiQFhERAAsQA4A1sAuQBhEQYAuQBIFQEAuQBQDwEAwQBhEQYAwQCrBRAAwQDADGIAqQCI
CWgAQQK3DHAAyQCkEXUAuQBBD3kAyQASBX0AuQAjBRAASQLvEIEA0QCrCocAUQKqDH0ASQLdEI0A
2QBXCn0AcQF5CQYAoQFQDpgAoQCUFAYAoQB/BEwAcQHVAp0AWQIwDqMAYQK3DKkAmQEgFa8AcQIp
ELUA4QC/D3kA6QCwAXkAeQK+AbsAcQGECQYAoQB9BgYAgQJtFsoA2QBhERAA4QA/A3UA4QD2Dc8A
iQI+FXkAWQIQDtUAkQK3DNsAmQLxARAA2QDzBH0AmQHAAgYAYQI+FXkA4QDRDeIAoQJxAxUAiQLL
CgYAoQLLCgYAoQLmFegA8QB3BRAA8QDxBe0A8QBgCgEAgQJ1FgUBWQLTEAgBoQK3DCIBiQI1ESgB
+QAyFS0B6QDUAXkA8QCpAXkA+QDTFXUAsQKDBgYAyQCKE24BAQFCBHUBCQHkCXUBCQGsCXUBOQFV
E3sBDAA1EY4BFAAyFaUBHABKFqUBEQG3DJgAgQJ2FLIBFADTFXUAEQHBE7gBEQFhEQYAHACYCfMB
sQAxA/gBsQBuBX0AQQGYCXkAEQHADP4BOQFkEwQCJAA1EY4BLAAyFaUBNABKFqUBNACYCfMBLADT
FXUAOQJPASwCOQLFBTECaQFhETgCyQIHFnUAyQKvFHUAaQHADEcCaQGXDAEA0QJhERAAyQLqFQYA
yQKsFAYAmQFhEQYA4QCpAXkAeQGcFHUAcQEaAlICMQFhEQYAmQITEFoCCQJcBWACCQJSFmkCqQFh
EW8C0QFhEQYA2QFhEQYAPACjBKUBRACjBKUBTACjBKUBVACjBKUBPABhEQYARABhEQYATABhEQYA
VABhEQYAIQJhEQYA6QKtEJQC6QLBFJQCMQGDE7gBMQHMBHkAMQFXCn0A8QKUBKECZADcFbgCbACY
CaUBbACiCdECbABhEQYADgAEAPsCKQCbAA8GKQCjAB0GKQCrAEoGLgALAEoELgATAFMELgAbAHIE
LgAjAHsELgArAKQELgAzAKQELgA7AHsELgBDAKoELgBLAKQELgBTAMEELgBbAKQELgBjAMcELgBr
APEELgBzAP4EQwB7AEYFQwBTAKQEQwCDAEYFQwCLAFQFQwCTAIYFSQCbAA8GSQCjAGEGSQCzAIUG
YwBTAKQEaQCbAA8GaQCjAI4GgwBTAKQEowBTAKQEIwHDAJQFIwG7AEsFQwHDAJQFQwG7AEsFYwHT
AEYFYwHbAEYFYwHDAJQFowG7AEsFowHjAK0FwwG7AEsFwwFbAKQEiQW7AHIEqQW7AHIEyQXrAPAG
6QXrAAEHCQbrABUHKQbrACIHSQbzAEYFIAlTAKQEYAlTAKQEIArLAEYFIAq7AEsFQArLAEYFYArL
AEYFgArLAEYFoArLAEYFQAu7AEsFQAvLAEYFYAu7AEsFYAvLAEYFgAu7AEsFgAvLAEYFoAu7AEsF
oAvLAEYFwAvLAEYF4AvLAEYFAAzLAEYFAAy7AEsFIAzLAEYFQAzLAEYFQAy7AEsFNQCRAMEA9AD4
APwAAAETATEBvQFNApkCrAICAAEAAwAFAAQABwAGACsACAAsAAsALgAMADIADgAzAAAAeA78AwAA
FgoABAAAGBEEBAAAAgYIBAAAzhMIBAAA5RMIBAAAzhMIBAAAdQ0ABAAAiQwEBAAACQT8AwAAtAsE
BAAANQQNBAAA9QsEBAAAEQ0TBAAAXwwEBAAAKAQNBAAA4QsEBAAAlAP8AwAAHAsEBAAA5AT8AwAA
CAwEBAAAqgP8AwAAOQsEBAAAPQ0ABAAAdAwEBAAA8gP8AwAAlgsEBAAAHQQNBAAAzwsEBAAAgAP8
AwAAAQsEBAAAhAX8AwAAIgwEBAAAvQn8AwAANwwEBAAAxgP8AwAAXAsEBAAA9Qn8AwAASwwEBAAA
3AP8AwAAeQsEBAAA5RMIBAAAeA4ZBAAAAxAfBAAAOAYlBAAAwhArBAAALQ0wBAAAqBA1BAAA+BE7
BAAA+AlABAAApwRFBAIABwADAAEACAADAAIACQAFAAEACgAFAAIACwAHAAEADAAHAAIADQAJAAIA
FQALAAIAFgANAAIAGgAPAAEAGwARAAEAHAATAAEAHQAVAAEAHgAXAAEAHwAZAAEAIAAbAAEAIQAd
AAEAIgAfAAEAIwAhAAEAJAAjAAEAJQAlAAEAJgAnAAEAJwApAAEAKAArAAEAKQAtAAEAKgAvAAEA
KwAxAAEALAAzAAEALQA1AAEALgA3AAEALwA5AAEAMAA7AAEAMQA9AAEAMgA/AAEAMwBBAAEANABD
AAEANQBFAAEANgBHAAEANwBJAAEAOABLAAEAOQBNAAEAOgBPAAEAOwBRAAEAPABTAAIAPQBVAAIA
SgBXAAIATQBZAAIATgBbAAEATwBbAAIAUgBdAAIAUwBfAAIAVABhAAIAVQBjAAIAWQBlAAIAYQBn
AIEBmAGqAQoCFwIkAncCfgKFAo0CngKxAsECyQIEgAAAAQAAAAAAAAAAAAAAAAB8AQAABAAAAAAA
AAAAAAAA1wL3AgAAAAANAAAAAAAAAAAAAADgAlIVAAAAAAEAAAAAAAAAAAAAAOkCZgEAAAAAAQAA
AAAAAAAAAAAA6QKAEQAAAAAEAAAAAAAAAAAAAADyAtIRAAAAAA0AAAAAAAAAAAAAAOACHQ8AAAAA
BAAAAAAAAAAAAAAA1wLJDAAAAAANAAAAAAAAAAAAAADgAosVAAAAAA0AAAAAAAAAAAAAAOAC+g4A
AAAACgAAAAAAAAAAAAAA8gIbAwAAAAAEAAAAAAAAAAAAAADXAp8MAAAAAAAAAAABAAAA4hIAAA0A
CwAOAAsAAAAQABwAPQIAABAAvQA9AgAAAAC/AD0COwGnAjsBzAIAAAAAAElEVFNDb21wb25lbnRN
ZXRhRGF0YTEwMABJRFRTRXh0ZXJuYWxNZXRhZGF0YUNvbHVtbjEwMABJRFRTSW5wdXRDb2x1bW4x
MDAASURUU0V4dGVybmFsTWV0YWRhdGFDb2x1bW5Db2xsZWN0aW9uMTAwAElEVFNJbnB1dENvbHVt
bkNvbGxlY3Rpb24xMDAASURUU1J1bnRpbWVDb25uZWN0aW9uQ29sbGVjdGlvbjEwMABJRFRTSW5w
dXRDb2xsZWN0aW9uMTAwAElEVFNSdW50aW1lQ29ubmVjdGlvbjEwMABJRFRTQ29ubmVjdGlvbk1h
bmFnZXIxMDAASURUU0J1ZmZlck1hbmFnZXIxMDAASURUU0lucHV0MTAwAENvbnRleHRWYWx1ZWAx
AFRocmVhZFNhZmVPYmplY3RQcm92aWRlcmAxAExpc3RgMQBUb0ludDMyAEtleVZhbHVlUGFpcmAy
AENvenlSb2MuU1NJU1BsdXMuMjAxNgBTQ182YWQ0NWQzMDM0NDc0ZmY0YmE5YjhmOWNkYmQxN2Rl
NgA8TW9kdWxlPgBnZXRfSUQAZ2V0X0xpbmVhZ2VJRABGaW5kQ29sdW1uQnlMaW5lYWdlSUQAZ2V0
X0V4dGVybmFsTWV0YWRhdGFDb2x1bW5JRABzZXRfQ29ubmVjdGlvbk1hbmFnZXJJRABPYmplY3RJ
RABJbnB1dElEAEdldE91dHB1dElEAENvenlSb2MuU3FsU2VydmVyLlNTSVMAVABEaXNwb3NlX19J
bnN0YW5jZV9fAENyZWF0ZV9fSW5zdGFuY2VfXwBHZXRBdHRyaWJ1dGVMYWJlbF8AR2V0SW5wdXRD
b2x1bW5fAEZpcmVFcnJvcl8AR2V0QXR0cmlidXRlc18AT3V0cHV0RGV0YWlsc18AQWRkT3V0cHV0
Um93XwBSZWluaXRpYWxpemVNZXRhRGF0YQBnZXRfQ29tcG9uZW50TWV0YURhdGEAUHJvamVjdERh
dGEAbXNjb3JsaWIAU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMATWljcm9zb2Z0LlZpc3VhbEJh
c2ljAGdldF9JZABzZXRfSWQAZ2V0X0lzQXR0YWNoZWQASW5wdXRzRmluaXNoZWQATWFya091dHB1
dHNGaW5pc2hlZABzZXRfSXNVc2VkAHNldF91c2VyaWRGb3JtYXR0ZWQAc2V0X29iamVjdGlkRm9y
bWF0dGVkAHNldF9vYmplY3R0eXBlY29kZUZvcm1hdHRlZABzZXRfb2xkVmFsdWVGb3JtYXR0ZWQA
c2V0X25ld1ZhbHVlRm9ybWF0dGVkAHNldF9vcGVyYXRpb25Gb3JtYXR0ZWQAc2V0X2FjdGlvbkZv
cm1hdHRlZABzZXRfdXNlcmlkAHNldF9vYmplY3RpZABzZXRfYXVkaXRpZABHdWlkAGdldF9BdWRp
dFJlY29yZABDb3p5Um9jLkR5bmFtaWNzLkNybTIwMTEuT3JnYW5pemF0aW9uU2VydmljZQBHZXRT
ZXJ2aWNlAG1fc2VydmljZQBDcmVhdGVJbnN0YW5jZQBnZXRfR2V0SW5zdGFuY2UAaW5zdGFuY2UA
RW50aXR5UmVmZXJlbmNlAEdldEhhc2hDb2RlAFhtbE5vZGUAc2V0X29iamVjdHR5cGVjb2RlAGdl
dF9NZXNzYWdlAGVyck1lc3NhZ2UAbWVzc2FnZQBnZXRfUGFnaW5nQ29va2llAHNldF9QYWdpbmdD
b29raWUASURpc3Bvc2FibGUASGFzaHRhYmxlAFJ1bnRpbWVUeXBlSGFuZGxlAEdldFR5cGVGcm9t
SGFuZGxlAGdldF9OYW1lAHNldF9OYW1lAHNldF9maWVsZE5hbWUAc2V0X0xvZ2ljYWxOYW1lAGV4
dGVybmFsTmFtZQBzZXRfUmVxdWVzdE5hbWUASW5wdXROYW1lAFRvRGF0ZVRpbWUATWljcm9zb2Z0
LlNxbFNlcnZlci5EdHMuUGlwZWxpbmUAc2V0X0RhdGFUeXBlAGdldF9Dcm1Db25uZWN0aW9uVHlw
ZQBHZXRUeXBlAGdldF9DdWx0dXJlAHNldF9DdWx0dXJlAF9yZXNDdWx0dXJlAEFwcGxpY2F0aW9u
QmFzZQBBcHBsaWNhdGlvblNldHRpbmdzQmFzZQBPcmdhbml6YXRpb25SZXNwb25zZQBDbG9zZQBE
aXNwb3NlAFZhbGlkYXRlAEVkaXRvckJyb3dzYWJsZVN0YXRlAEd1aWRBdHRyaWJ1dGUASGVscEtl
eXdvcmRBdHRyaWJ1dGUAR2VuZXJhdGVkQ29kZUF0dHJpYnV0ZQBEZWJ1Z2dlck5vblVzZXJDb2Rl
QXR0cmlidXRlAERlYnVnZ2FibGVBdHRyaWJ1dGUARWRpdG9yQnJvd3NhYmxlQXR0cmlidXRlAENv
bVZpc2libGVBdHRyaWJ1dGUAQXNzZW1ibHlUaXRsZUF0dHJpYnV0ZQBTdGFuZGFyZE1vZHVsZUF0
dHJpYnV0ZQBIaWRlTW9kdWxlTmFtZUF0dHJpYnV0ZQBEZWZhdWx0VmFsdWVBdHRyaWJ1dGUAQXNz
ZW1ibHlUcmFkZW1hcmtBdHRyaWJ1dGUAVGFyZ2V0RnJhbWV3b3JrQXR0cmlidXRlAERlYnVnZ2Vy
SGlkZGVuQXR0cmlidXRlAEFzc2VtYmx5RmlsZVZlcnNpb25BdHRyaWJ1dGUATXlHcm91cENvbGxl
Y3Rpb25BdHRyaWJ1dGUAQ29ubmVjdGlvbkF0dHJpYnV0ZQBBc3NlbWJseURlc2NyaXB0aW9uQXR0
cmlidXRlAFZhbGlkYXRlUHJvcGVydGllc0F0dHJpYnV0ZQBTb3J0UHJvcGVydGllc0F0dHJpYnV0
ZQBDb2x1bW5NYXBwaW5nc0F0dHJpYnV0ZQBDb21waWxhdGlvblJlbGF4YXRpb25zQXR0cmlidXRl
AEFzc2VtYmx5UHJvZHVjdEF0dHJpYnV0ZQBBc3NlbWJseUNvcHlyaWdodEF0dHJpYnV0ZQBDTFND
b21wbGlhbnRBdHRyaWJ1dGUAU1NJU1NjcmlwdENvbXBvbmVudEVudHJ5UG9pbnRBdHRyaWJ1dGUA
QXNzZW1ibHlDb21wYW55QXR0cmlidXRlAENhdGVnb3J5QXR0cmlidXRlAFJ1bnRpbWVDb21wYXRp
YmlsaXR5QXR0cmlidXRlAFByZUV4ZWN1dGUAUG9zdEV4ZWN1dGUAbV9WYWx1ZQBnZXRfVmFsdWUA
c2V0X1ZhbHVlAGdldF9PbGRWYWx1ZQBzZXRfb2xkVmFsdWUAR2V0T2JqZWN0VmFsdWUAT3B0aW9u
U2V0VmFsdWUAZ2V0X05ld1ZhbHVlAHNldF9uZXdWYWx1ZQB2YWx1ZQBnZXRfQmF0Y2hTaXplAHNl
dF9CYXRjaFNpemUAbV9iYXRjaFNpemUAU3lzdGVtLlRocmVhZGluZwBTeXN0ZW0uUnVudGltZS5W
ZXJzaW9uaW5nAFRvU3RyaW5nAHNldF9MZW5ndGgATWljcm9zb2Z0LlZpc3VhbEJhc2ljLk15U2Vy
dmljZXMuSW50ZXJuYWwAU3lzdGVtLkNvbXBvbmVudE1vZGVsAGdldF9EZXRhaWwAQXR0cmlidXRl
QXVkaXREZXRhaWwAUmVtb3ZlQWxsAFNDXzZhZDQ1ZDMwMzQ0NzRmZjRiYTliOGY5Y2RiZDE3ZGU2
LmRsbABzZXRfdXNlcmlkRm9ybWF0dGVkX0lzTnVsbABzZXRfb2JqZWN0aWRGb3JtYXR0ZWRfSXNO
dWxsAHNldF9vYmplY3R0eXBlY29kZUZvcm1hdHRlZF9Jc051bGwAc2V0X29sZFZhbHVlRm9ybWF0
dGVkX0lzTnVsbABzZXRfbmV3VmFsdWVGb3JtYXR0ZWRfSXNOdWxsAHNldF9vcGVyYXRpb25Gb3Jt
YXR0ZWRfSXNOdWxsAHNldF9hY3Rpb25Gb3JtYXR0ZWRfSXNOdWxsAHNldF91c2VyaWRfSXNOdWxs
AHNldF9vYmplY3RpZF9Jc051bGwAc2V0X2F1ZGl0aWRfSXNOdWxsAHNldF9vYmplY3R0eXBlY29k
ZV9Jc051bGwAc2V0X2ZpZWxkTmFtZV9Jc051bGwAc2V0X29sZFZhbHVlX0lzTnVsbABzZXRfbmV3
VmFsdWVfSXNOdWxsAHNldF9jcmVhdGVkb25fSXNOdWxsAHNldF9vcGVyYXRpb25fSXNOdWxsAHNl
dF9hY3Rpb25fSXNOdWxsAFNldE51bGwAU3lzdGVtLlhtbABnZXRfSW5uZXJYbWwAZ2V0X0l0ZW0A
c2V0X0l0ZW0AU3lzdGVtAENvenlSb2MuRHluYW1pY3MuQ3JtAFN5c3RlbS5Db21wb25lbnRNb2Rl
bC5EZXNpZ24AU2NyaXB0TWFpbgBzZXRfY3JlYXRlZG9uAGdldF9BcHBsaWNhdGlvbgBNeUFwcGxp
Y2F0aW9uAHNldF9vcGVyYXRpb24AU3lzdGVtLkNvbmZpZ3VyYXRpb24AU3lzdGVtLkdsb2JhbGl6
YXRpb24Ac2V0X2FjdGlvbgBTeXN0ZW0uUmVmbGVjdGlvbgBBdHRyaWJ1dGVDb2xsZWN0aW9uAEZv
cm1hdHRlZFZhbHVlQ29sbGVjdGlvbgBBdWRpdERldGFpbENvbGxlY3Rpb24AZ2V0X0V4dGVybmFs
TWV0YWRhdGFDb2x1bW5Db2xsZWN0aW9uAGdldF9JbnB1dENvbHVtbkNvbGxlY3Rpb24AZ2V0X1J1
bnRpbWVDb25uZWN0aW9uQ29sbGVjdGlvbgBnZXRfSW5wdXRDb2xsZWN0aW9uAElDb25uZWN0aW9u
AEFjcXVpcmVDb25uZWN0aW9uAGdldF9Dcm1Db25uZWN0aW9uAHNldF9Dcm1Db25uZWN0aW9uAG1f
Y3JtQ29ubmVjdGlvbgBtX2Nvbm5lY3Rpb24ASW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbgBTb2Fw
RXhjZXB0aW9uAEN1bHR1cmVJbmZvAFBhZ2luZ0luZm8AT3V0cHV0TmFtZU1hcABPdXRwdXRNYXAA
TWljcm9zb2Z0LlNxbFNlcnZlci5EVFNSdW50aW1lV3JhcABNaWNyb3NvZnQuU3FsU2VydmVyLkRU
U1BpcGVsaW5lV3JhcABnZXRfUGFnZU51bWJlcgBzZXRfUGFnZU51bWJlcgBtX0FwcE9iamVjdFBy
b3ZpZGVyAG1fVXNlck9iamVjdFByb3ZpZGVyAG1fQ29tcHV0ZXJPYmplY3RQcm92aWRlcgBtX015
V2ViU2VydmljZXNPYmplY3RQcm92aWRlcgBnZXRfQnVmZmVyAFBpcGVsaW5lQnVmZmVyAFNjcmlw
dEJ1ZmZlcgBJbnB1dEJ1ZmZlcgBPdXRwdXRCdWZmZXIAZ2V0X1Jlc291cmNlTWFuYWdlcgBnZXRf
Q29ubmVjdGlvbk1hbmFnZXIAZ2V0X0J1ZmZlck1hbmFnZXIAU3lzdGVtLkNvZGVEb20uQ29tcGls
ZXIATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUnVudGltZS5XcmFwcGVyAE1pY3Jvc29mdC5TcWxT
ZXJ2ZXIuRHRzLlBpcGVsaW5lLldyYXBwZXIAZ2V0X1VzZXIARW50ZXIAZ2V0X0NvbXB1dGVyAE15
Q29tcHV0ZXIAX3Jlc01ncgBGaXJlRXJyb3IAQ2xlYXJQcm9qZWN0RXJyb3IAU2V0UHJvamVjdEVy
cm9yAGdldF9JbnNlcnRUZXJtaW5hdG9yAHNldF9JbnNlcnRUZXJtaW5hdG9yAElFbnVtZXJhdG9y
AEdldEVudW1lcmF0b3IAbV9pbnNlcnRUZXJtaW50YXRvcgBBY3RpdmF0b3IALmN0b3IALmNjdG9y
AE1vbml0b3IAT3V0cHV0SURzAENvenlSb2MuRHluYW1pY3MAU3lzdGVtLkRpYWdub3N0aWNzAGdl
dF9Nb3JlUmVjb3JkcwBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuRGV2aWNlcwBTeXN0ZW0uV2ViLlNl
cnZpY2VzAGdldF9XZWJTZXJ2aWNlcwBNeVdlYlNlcnZpY2VzAE1pY3Jvc29mdC5WaXN1YWxCYXNp
Yy5BcHBsaWNhdGlvblNlcnZpY2VzAFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcwBNaWNy
b3NvZnQuVmlzdWFsQmFzaWMuQ29tcGlsZXJTZXJ2aWNlcwBTeXN0ZW0uUnVudGltZS5Db21waWxl
clNlcnZpY2VzAFN5c3RlbS5SZXNvdXJjZXMAU0NfNmFkNDVkMzAzNDQ3NGZmNGJhOWI4ZjljZGJk
MTdkZTYuTXkuUmVzb3VyY2VzAE15UmVzb3VyY2VzAFNDXzZhZDQ1ZDMwMzQ0NzRmZjRiYTliOGY5
Y2RiZDE3ZGU2LlJlc291cmNlcy5yZXNvdXJjZXMARGVidWdnaW5nTW9kZXMAVmFyaWFibGVzAENv
enlSb2MuU3FsU2VydmVyLlNTSVMuQXR0cmlidXRlcwBnZXRfQXR0cmlidXRlcwBnZXRfRm9ybWF0
dGVkVmFsdWVzAE15U2V0dGluZ3MARXF1YWxzAGdldF9BdWRpdERldGFpbHMAZGV0YWlscwBTeXN0
ZW0uV2ViLlNlcnZpY2VzLlByb3RvY29scwBDb250YWlucwBnZXRfU3RhdGljSW5wdXRDb2x1bW5z
AGdldF9TdGF0aWNPdXRwdXRDb2x1bW5zAFN5c3RlbS5Db2xsZWN0aW9ucwBDb25uZWN0aW9ucwBC
dWZmZXJzAFJ1bnRpbWVIZWxwZXJzAEZpbmlzaE91dHB1dHMAU2NyaXB0QnVmZmVyUGx1cwBTY3Jp
cHRDb21wb25lbnRQbHVzAENyZWF0ZU5ld091dHB1dFJvd3MAQ29uY2F0AG1fU3luY09iamVjdABN
eVByb2plY3QAQ29ubmVjdABnZXRfRW5kT2ZSb3dzZXQAU2V0RW5kT2ZSb3dzZXQAYXVkaXQARXhp
dABPcmdhbml6YXRpb25TZXJ2aWNlQ2xpZW50AFBpcGVsaW5lQ29tcG9uZW50AFVzZXJDb21wb25l
bnQAUGFyZW50Q29tcG9uZW50AFNjcmlwdENvbXBvbmVudABnZXRfSG9zdENvbXBvbmVudABnZXRf
Q3VycmVudABnZXRfQ291bnQAc2V0X0NvdW50AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuVHhTY3JpcHQA
Q29udmVydABPcmdhbml6YXRpb25SZXF1ZXN0AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuUGlwZWxpbmVI
b3N0AElzSW5wdXQASW5wdXRfUHJvY2Vzc0lucHV0AFByaW1lT3V0cHV0AE1vdmVOZXh0AG1fQ29u
dGV4dABOZXcAQWRkUm93AElucHV0X1Byb2Nlc3NJbnB1dFJvdwBOZXh0Um93AG1faWRJZHgAbV9l
bnRpdHlJZHgAU0NfNmFkNDVkMzAzNDQ3NGZmNGJhOWI4ZjljZGJkMTdkZTYuTXkAZ2V0X0tleQBn
ZXRfQXNzZW1ibHkARW50aXR5AGVudGl0eQBJc051bGxPckVtcHR5AAAAN1IAZQB0AHIAaQBlAHYA
ZQBSAGUAYwBvAHIAZABDAGgAYQBuAGcAZQBIAGkAcwB0AG8AcgB5AAANVABhAHIAZwBlAHQAABVQ
AGEAZwBpAG4AZwBJAG4AZgBvAAArQQB1AGQAaQB0AEQAZQB0AGEAaQBsAEMAbwBsAGwAZQBjAHQA
aQBvAG4AAA1FAG4AdABpAHQAeQAABUkAZAAAP1MAZQBsAGUAYwB0ACAARAB5AG4AYQBtAGkAYwBz
ACAAQwBSAE0AIABDAG8AbgBuAGUAYwB0AGkAbwBuAC4AACVNAGEAcAAgAGkAbgBwAHUAdAAgAGMA
bwBsAHUAbQBuAHMALgAAG0MAcgBtAEMAbwBuAG4AZQBjAHQAaQBvAG4AABVOAG8AIABpAG4AcAB1
AHQAcwAuAAAZRABZAE4AQQBNAEkAQwBTAC0AQwBSAE0AATtEAHkAbgBhAG0AaQBjAHMAIABDAFIA
TQAgAEEAdQBkAGkAdAAgAEwAbwBnAHMAIABRAHUAZQByAHkAAC9JAG4AcAB1AHQAIABjAG8AbAB1
AG0AbgAgAG4AbwB0ACAAZgBvAHUAbgBkAC4AABNGAG8AcgBtAGEAdAB0AGUAZAAADWEAYwB0AGkA
bwBuAAAfYQBjAHQAaQBvAG4ARgBvAHIAbQBhAHQAdABlAGQAAA9hAHUAZABpAHQAaQBkAAATYwBy
AGUAYQB0AGUAZABvAG4AABFvAGIAagBlAGMAdABpAGQAACNvAGIAagBlAGMAdABpAGQARgBvAHIA
bQBhAHQAdABlAGQAAB1vAGIAagBlAGMAdAB0AHkAcABlAGMAbwBkAGUAAC9vAGIAagBlAGMAdAB0
AHkAcABlAGMAbwBkAGUARgBvAHIAbQBhAHQAdABlAGQAABNvAHAAZQByAGEAdABpAG8AbgAAJW8A
cABlAHIAYQB0AGkAbwBuAEYAbwByAG0AYQB0AHQAZQBkAAANdQBzAGUAcgBpAGQAAB91AHMAZQBy
AGkAZABGAG8AcgBtAGEAdAB0AGUAZAAAgJtJAHMATgB1AGwAbAAgAHAAcgBvAHAAZQByAHQAeQAg
AGMAYQBuAG4AbwB0ACAAYgBlACAAcwBlAHQAIAB0AG8AIABGAGEAbABzAGUALgAgAEEAcwBzAGkA
ZwBuACAAYQAgAHYAYQBsAHUAZQAgAHQAbwAgAHQAaABlACAAYwBvAGwAdQBtAG4AIABpAG4AcwB0
AGUAYQBkAC4AABNmAGkAZQBsAGQATgBhAG0AZQAAEW8AbABkAFYAYQBsAHUAZQAAI28AbABkAFYA
YQBsAHUAZQBGAG8AcgBtAGEAdAB0AGUAZAAAEW4AZQB3AFYAYQBsAHUAZQAAI24AZQB3AFYAYQBs
AHUAZQBGAG8AcgBtAGEAdAB0AGUAZAAAC0kAbgBwAHUAdAAADU8AdQB0AHAAdQB0AAAxTQB5AC4A
UgBlAHMAbwB1AHIAYwBlAHMALgBNAHkAUgBlAHMAbwB1AHIAYwBlAHMAAAAAueNh7sCKxUKRdx4F
9iAb5AAEIAEBCAMgAAEFIAEBEREEIAEBDgQgAQECBSABAR0OBiABARGA3QUgAgEODgcgBAEODg4O
EAcHElkSXRJhEmUSXRJpEm0FIAASgL0EIAEcCAQAARwcBAABDhwGIAEBEYDFBSACAQ4cByABEoEh
EmEEIAEcDgMgAAIDIAAIAyAADgUAAQESbQUgABKBKQMAAAEGBwIScRJ1BCABHBwFIAASgS0FIAAS
gTEFIAEScRwFIAASgTkFIAASgT0FIAIICAgIBwQCAhJxEm0EAAECDgUgABKBRQUgABKBSQYgARKB
TRwFIAASgVEEIAASeQYgAQERgVUDBwEOAwcBCAMHAQIEBwEdDgIGDgogBgEIDg4OCBACDgcGEnUS
dRJxEnkSfRJ1BSABEnkcBCAAEn0DIAAcPAcLHRKAgQgSgIESgIUSgIkSgIkSgIkVEYCRARURgJUC
DhwVEYCVAg4cFRGAkQEVEYCVAg4cFRGAlQIOHAYgAB0SgIEFIAASgJ0FIAASgV0MFRKAjQEVEYCV
Ag4cCSAAFRGAkQETAAwVEYCRARURgJUCDhwEIAATAAcVEYCVAg4cBQACDg4OBCABAhw1BwoSgIkS
gIkVEYCRARURgJUCDhwVEYCVAg4cHBwSWRKAoRURgJEBFRGAlQIODhURgJUCDg4EIAATAQUgABGA
xQUgAgEcHAUgABKBYQwVEoCNARURgJUCDg4MFRGAkQEVEYCVAg4OBxURgJUCDg4EAAEIHAYAARGA
yRwOIAUBEoC5CAISgL0SgMEFIAIBCBwEBwIICAcAAggSgMEOBSAAEoDRCAABEoEFEYFtBSAAEoFx
ByACAQ4SgXEGFRI4ARIoBhUSOAESJAcVEjgBEoD9BhUSOAESNAQAAQEcBAcBHgACHgAFEAEAHgAE
CgEeAAQHARMABhUSOAETAAgGFRKBCQETAAcVEoEJARMAAhMABAoBEwAFIAEBEwAIt3pcVhk04IkI
iYRdzYCAzJEIFs9JC7gMNOoIsD9ffxHVCjoSRgBvAHIAbQBhAHQAdABlAGQAAgYIAgYCAwYSUQMG
ElUDBhIYAwYSHAMGEhAEBhKAuQQGEoDVBAYSgNkHBhUSOAESKAcGFRI4ARIkCAYVEjgBEoD9BwYV
EjgBEjQDBhIwAgYcBSABARIMBSABAhAOBCAAHQ4FIAESdQ4FIAEBEmUIIAESgIkSgJ0GIAEBEoCJ
BCABDggGIAEBEYDJCyAEAQgOEoC9EoDBDSAEAQgdCB0SgL0SgMEGIAEBEoC5BQAAEoDVBQAAEoDZ
BgABARKA2QQAABIoBAAAEiQFAAASgP0EAAASNAQAABIwBSAAEoEFBxABAR4AHgAHMAEBARAeAAMo
AA4DKAAIAygAAgQoAB0OBSgAEYDFBSgAEYDJBSgAEoDRBQgAEoDVBQgAEoDZBAgAEigECAASJAUI
ABKA/QQIABI0BAgAEjAEKAATAAgBAAgAAAAAAB4BAAEAVAIWV3JhcE5vbkV4Y2VwdGlvblRocm93
cwEIAQACAAAAAAAoAQAjU0NfNmFkNDVkMzAzNDQ3NGZmNGJhOWI4ZjljZGJkMTdkZTYAAAUBAAAA
ABYBABFDb3B5cmlnaHQgQCAgMjAxNgAABQEAAQAAKQEAJDViMzk1MTUyLWJmM2EtNGY4ZC1iN2M5
LWFhMzQwODVkZTgxZgAADAEABzEuMC4wLjAAAEcBABouTkVURnJhbWV3b3JrLFZlcnNpb249djQu
MAEAVA4URnJhbWV3b3JrRGlzcGxheU5hbWUQLk5FVCBGcmFtZXdvcmsgNAQBAAAACAEAAQAAAAAA
MQEAAwAAAA1Dcm1Db25uZWN0aW9uCUJhdGNoU2l6ZRBJbnNlcnRUZXJtaW5hdG9yAAANAQAIVmFs
aWRhdGUAABgBAApNeVRlbXBsYXRlCDExLjAuMC4wAABhAQA0U3lzdGVtLldlYi5TZXJ2aWNlcy5Q
cm90b2NvbHMuU29hcEh0dHBDbGllbnRQcm90b2NvbBJDcmVhdGVfX0luc3RhbmNlX18TRGlzcG9z
ZV9fSW5zdGFuY2VfXwAAAA0BAAhTZXR0aW5ncwAALAEAJ1NlbGVjdCBEeW5hbWljcyBDUk0gQ29u
bmVjdGlvbiBNYW5hZ2VyLgAAFgEAEUNybUNvbm5lY3Rpb25UeXBlAAAjAQAeU3BlY2lmaWVzIHJl
dHJpZXZlIGJhdGNoIHNpemUuAAAIAQBkAAAAAABhAQBcSW5kaWNhdGVzIHdoZXRoZXIgYW4gZW1w
dHkgbGluZSBzaG91bGQgYmUgaW5zZXJ0ZWQgYXQgdGhlIGVuZCBvZiBlYWNoIHNldCBvZiBkZXRh
aWwgcmVjb3Jkcy4AABABAAtNeS5Db21wdXRlcgAAEwEADk15LkFwcGxpY2F0aW9uAAAMAQAHTXku
VXNlcgAAEwEADk15LldlYlNlcnZpY2VzAAAAALQAAADOyu++AQAAAJEAAABsU3lzdGVtLlJlc291
cmNlcy5SZXNvdXJjZVJlYWRlciwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1u
ZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5I1N5c3RlbS5SZXNvdXJjZXMu
UnVudGltZVJlc291cmNlU2V0AgAAAAAAAAAAAAAAUEFEUEFEULQAAADoaAAAAAAAAAAAAAACaQAA
ACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9GgAAAAAAAAAAAAAAABfQ29yRGxsTWFpbgBtc2NvcmVl
LmRsbAAAAAAA/yUAIAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAQAAAAGAAAgAAAAAAAAAAAAAAAAAAA
AQABAAAAMAAAgAAAAAAAAAAAAAAAAAAAAQAAAAAASAAAAFiAAADsAwAAAAAAAAAAAADsAzQAAABW
AFMAXwBWAEUAUgBTAEkATwBOAF8ASQBOAEYATwAAAAAAvQTv/gAAAQAAAAEAAAAAAAAAAQAAAAAA
PwAAAAAAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAEQAAAABAFYAYQByAEYAaQBsAGUASQBuAGYAbwAA
AAAAJAAEAAAAVAByAGEAbgBzAGwAYQB0AGkAbwBuAAAAAAAAALAETAMAAAEAUwB0AHIAaQBuAGcA
RgBpAGwAZQBJAG4AZgBvAAAAKAMAAAEAMAAwADAAMAAwADQAYgAwAAAAGgABAAEAQwBvAG0AbQBl
AG4AdABzAAAAAAAAACIAAQABAEMAbwBtAHAAYQBuAHkATgBhAG0AZQAAAAAAAAAAAHAAJAABAEYA
aQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAABTAEMAXwA2AGEAZAA0ADUAZAAzADAAMwA0
ADQANwA0AGYAZgA0AGIAYQA5AGIAOABmADkAYwBkAGIAZAAxADcAZABlADYAAAAwAAgAAQBGAGkA
bABlAFYAZQByAHMAaQBvAG4AAAAAADEALgAwAC4AMAAuADAAAABwACgAAQBJAG4AdABlAHIAbgBh
AGwATgBhAG0AZQAAAFMAQwBfADYAYQBkADQANQBkADMAMAAzADQANAA3ADQAZgBmADQAYgBhADkA
YgA4AGYAOQBjAGQAYgBkADEANwBkAGUANgAuAGQAbABsAAAASAASAAEATABlAGcAYQBsAEMAbwBw
AHkAcgBpAGcAaAB0AAAAQwBvAHAAeQByAGkAZwBoAHQAIABAACAAIAAyADAAMQA2AAAAKgABAAEA
TABlAGcAYQBsAFQAcgBhAGQAZQBtAGEAcgBrAHMAAAAAAAAAAAB4ACgAAQBPAHIAaQBnAGkAbgBh
AGwARgBpAGwAZQBuAGEAbQBlAAAAUwBDAF8ANgBhAGQANAA1AGQAMwAwADMANAA0ADcANABmAGYA
NABiAGEAOQBiADgAZgA5AGMAZABiAGQAMQA3AGQAZQA2AC4AZABsAGwAAABoACQAAQBQAHIAbwBk
AHUAYwB0AE4AYQBtAGUAAAAAAFMAQwBfADYAYQBkADQANQBkADMAMAAzADQANAA3ADQAZgBmADQA
YgBhADkAYgA4AGYAOQBjAGQAYgBkADEANwBkAGUANgAAADQACAABAFAAcgBvAGQAdQBjAHQAVgBl
AHIAcwBpAG8AbgAAADEALgAwAC4AMAAuADAAAAA4AAgAAQBBAHMAcwBlAG0AYgBsAHkAIABWAGUA
cgBzAGkAbwBuAAAAMQAuADAALgAwAC4AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAABgAAAMAAAAFDkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAA]]></arrayElement></arrayElements></property><property id="17" 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_6ad45d3034474ff4ba9b8f9cdbd17de6</property><property id="18" name="ScriptLanguage" dataType="System.String" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91">VisualBasic</property><property id="24" name="UserComponentTypeName" dataType="System.String">CozyRoc.ScriptComponentHostPlus</property></properties><connections><connection id="25" name="CrmConnection" connectionManagerID="{37C19EAD-B835-42AA-B214-3AC085DDCAFE}" /></connections><inputs><input id="26" name="Input" hasSideEffects="true"><externalMetadataColumns isUsed="True"><externalMetadataColumn id="29" name="Entity" dataType="wstr" length="100" /><externalMetadataColumn id="30" name="Id" dataType="guid" /></externalMetadataColumns></input></inputs><outputs><output id="31" name="Output" hasSideEffects="true"><outputColumns><outputColumn id="32" name="action" lineageId="32" dataType="i4" /><outputColumn id="33" name="actionFormatted" lineageId="33" length="50" dataType="wstr" /><outputColumn id="34" name="auditid" lineageId="34" dataType="guid" /><outputColumn id="35" name="createdon" lineageId="35" dataType="dbTimeStamp" /><outputColumn id="36" name="objectid" lineageId="36" dataType="guid" /><outputColumn id="37" name="objectidFormatted" lineageId="37" length="160" dataType="wstr" /><outputColumn id="38" name="objecttypecode" lineageId="38" length="50" dataType="wstr" /><outputColumn id="39" name="objecttypecodeFormatted" lineageId="39" length="50" dataType="wstr" /><outputColumn id="40" name="operation" lineageId="40" dataType="i4" /><outputColumn id="41" name="operationFormatted" lineageId="41" length="50" dataType="wstr" /><outputColumn id="42" name="userid" lineageId="42" dataType="guid" /><outputColumn id="43" name="useridFormatted" lineageId="43" length="100" dataType="wstr" /><outputColumn id="44" name="fieldName" lineageId="44" length="50" dataType="wstr" /><outputColumn id="45" name="oldValue" lineageId="45" length="1000" dataType="wstr" /><outputColumn id="46" name="oldValueFormatted" lineageId="46" length="1000" dataType="wstr" /><outputColumn id="47" name="newValue" lineageId="47" length="1000" dataType="wstr" /><outputColumn id="48" name="newValueFormatted" lineageId="48" length="1000" dataType="wstr" /></outputColumns><externalMetadataColumns /></output></outputs></component>