<component id="2" name="Dynamics CRM Relationships" 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="3" name="SourceCode" state="cdata" dataType="System.String" isArray="true" description="Stores the source code of the component" typeConverter="NOTBROWSABLE"><arrayElements arrayElementCount="30"><arrayElement dataType="System.String"><![CDATA[My Project\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\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("ScriptComponent_9ee5dd1f734f45a69a198485d819583e.vbproj")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("Microsoft")> 
<Assembly: AssemblyProduct("ScriptComponent_9ee5dd1f734f45a69a198485d819583e.vbproj")> 
<Assembly: AssemblyCopyright("Copyright @ Microsoft 2012")> 
<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("219aec5c-8954-407a-b049-1709baf10abf")> 

' Version information for an assembly consists of the following four values:
'
'      Major Version
'      Minor Version 
'      Build Number
'      Revision
'
' You can specify all the values or you can default the Build and Revision Numbers 
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>

<Assembly: AssemblyVersion("1.0.0.0")> 
<Assembly: AssemblyFileVersion("1.0.0.0")> 
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[ComponentWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services component wrapper
' This module defines the base class for your component
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class UserComponent
    Inherits ScriptComponentPlus

    Public Connections As New Connections(Me)
    Public Variables As New Variables(Me)

    Public 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

    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[scriptcomponent_9ee5dd1f734f45a69a198485d819583e.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">
  <!-- This section defines project-level properties.

       Configuration - Specifies whether the default configuration is Release or Debug.
       Platform - Specifies what CPU the output of this project can run on.
       OutputType - Must be "Library" for VSTA.
       NoStandardLibraries - Set to "false" for VSTA.
       RootNamespace - In C#, this specifies the namespace given to new files.
                       In Visual Basic, all objects are wrapped in this namespace at runtime.
       AssemblyName - Name of the output assembly.
  -->
  <PropertyGroup>
    <ProjectTypeGuids>{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <OutputType>Library</OutputType>
    <RootNamespace>ScriptComponent_9ee5dd1f734f45a69a198485d819583e.vbproj</RootNamespace>
    <AssemblyName>ScriptComponent_9ee5dd1f734f45a69a198485d819583e.vbproj</AssemblyName>
    <StartupObject>
    </StartupObject>
    <OptionExplicit>On</OptionExplicit>
    <OptionCompare>Binary</OptionCompare>
    <OptionStrict>Off</OptionStrict>
    <OptionInfer>On</OptionInfer>
    <ProjectGuid>{9979C526-B275-4635-81E4-9E1B6092CEA1}</ProjectGuid>
  </PropertyGroup>
  <!-- This section defines properties that are set when the "Debug" configuration is
       selected.

       DebugSymbols - If true, create symbols (.pdb). If false, do not create symbols.
       Optimize - If true, optimize the build output. If false, do not optimize.
       OutputPath - Output path of the project relative to the project file.
       EnableUnmanagedDebugging - If true, starting the debugger will attach both managed and unmanaged debuggers.
       DefineConstants - Constants defined for the preprocessor.
       Warning Level - Warning level for the compiler.
  -->
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <DefineConstants>
    </DefineConstants>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <DebugSymbols>true</DebugSymbols>
    <Optimize>false</Optimize>
    <OutputPath>bin\</OutputPath>
    <RegisterForComInterop>false</RegisterForComInterop>
    <RemoveIntegerChecks>false</RemoveIntegerChecks>
    <NoWarn>42016,42017,42018,42019,42032,42353,42354,42355</NoWarn>
  </PropertyGroup>
  <!-- This section defines properties that are set when the "Release" configuration is
       selected.

       DebugSymbols - If true, create symbols (.pdb). If false, do not create symbols.
       Optimize - If true, optimize the build output. If false, do not optimize.
       OutputPath - Output path of the project relative to the project file.
       EnableUnmanagedDebugging - If true, starting the debugger will attach both managed and unmanaged debuggers.
       DefineConstants - Constants defined for the preprocessor.
       Warning Level - Warning level for the compiler.
  -->
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DefineConstants>
    </DefineConstants>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <DebugSymbols>false</DebugSymbols>
    <Optimize>true</Optimize>
    <OutputPath>bin\</OutputPath>
    <RegisterForComInterop>false</RegisterForComInterop>
    <RemoveIntegerChecks>false</RemoveIntegerChecks>
    <NoWarn>42016,42017,42018,42019,42032,42353,42354,42355</NoWarn>
  </PropertyGroup>
  <!-- This section enables pre- and post-build steps. However,
       it is recommended that MSBuild tasks be used instead of these properties.
  -->
  <PropertyGroup>
    <PreBuildEvent>
    </PreBuildEvent>
    <PostBuildEvent>
    </PostBuildEvent>
  </PropertyGroup>
  <!-- This sections specifies references for the project. -->
  <ItemGroup>
    <Reference Include="CozyRoc.Dynamics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL" />
    <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" />
    <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=11.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, 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.DTSRuntimeWrap, Version=11.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
  </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>
  <!-- This section defines the user source files that are part of the
       project.

       Compile - Specifies a source file to compile.
       EmbeddedResource - Specifies a .resx file for embedded resources.
       None - Specifies a file that is not to be passed to the compiler (for instance,
              a text file or XML file).
       AppDesigner - Specifies the directory where the application properties files can
                     be found.
  -->
  <ItemGroup>
    <AppDesigner Include="My Project\" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
    <Compile Include="main.vb" />
    <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>
    <!-- Include the default configuration information and metadata files for the add-in.
         These files are copied to the build output directory when the project is
         built, and the path to the configuration file is passed to add-in on the command
         line when debugging.
    -->
  </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;vstadebug43912763-bfd9-4ec6-a941-379672944daf/0df7a9d0-14c2-45b1-b264-b9d36a8ffece&quot;" />
        <Host Name="SSIS_ScriptComponent" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC110</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
  <PropertyGroup>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
  </PropertyGroup>
  <PropertyGroup>
    <TargetFrameworkProfile>
    </TargetFrameworkProfile>
  </PropertyGroup>
</Project>]]></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
]]></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-2012 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.Data
Imports System.Data.Common
Imports System.Data.SqlClient
Imports System.Collections
Imports System.Reflection
Imports System.Diagnostics
Imports System.Web.Services.Protocols

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


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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Try
            If Not m_service2011 Is Nothing Then
                ' CRM 2011
                Dim req As New CRM2011.OrganizationRequest
                req.RequestName = m_requestName

                ' Setup relationship parameters.
                Dim entity1 As New CRM2011.EntityReference
                entity1.LogicalName = CStr(Row.Buffer(m_fenIndex))
                entity1.Id = New Guid(Row.Buffer(m_feiIndex).ToString())
                Dim entity2 As New CRM2011.EntityReference
                entity2.LogicalName = CStr(Row.Buffer(m_senIndex))
                entity2.Id = New Guid(Row.Buffer(m_seiIndex).ToString())

                req("Target") = New CRM2011.EntityReference() {entity1, entity2}

                ' Execute action.
                Call m_service2011.Execute(req)
            Else
                ' CRM 4.0

                ' Setup relationship parameters.
                Dim target As New CRM4.TargetRelatedDynamic
                target.Entity1Name = CStr(Row.Buffer(m_fenIndex))
                target.Entity1Id = New Guid(Row.Buffer(m_feiIndex).ToString())
                target.Entity2Name = CStr(Row.Buffer(m_senIndex))
                target.Entity2Id = New Guid(Row.Buffer(m_seiIndex).ToString())

                ' Execute action.
                Select Case Me.Action
                    Case ActionTypes.SetRelated
                        Dim addReq As New CRM4.SetRelatedRequest()
                        addReq.Target = target
                        Call m_service4.Execute(addReq)

                    Case ActionTypes.RemoveRelated
                        Dim removeReq As New CRM4.RemoveRelatedRequest()
                        removeReq.Target = target
                        Call m_service4.Execute(removeReq)

                    Case Else
                        Throw New ApplicationException("Unhandled action type.")
                End Select
            End If
        Catch ex As SoapException
            Call FireError_(ex.Detail.InnerXml)
        Catch ex As Exception
            Call FireError_(ex.Message)
        End Try
    End Sub ' Input_ProcessInputRow


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

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

        Dim service As Object = m_connection.GetService(0)
        m_service2011 = TryCast(service, CRM2011.OrganizationServiceClient)
        If m_service2011 Is Nothing Then
            m_service4 = TryCast(m_connection.GetService(0), CRM4.CrmService)   ' 0 - CRM Service
            If m_service4 Is Nothing Then
                Throw New Exception("Unhandled service object.")
            End If
        End If

        ' Setup request name for CRM 2011.
        Select Case Me.Action
            Case ActionTypes.SetRelated
                m_requestName = "SetRelated"

            Case ActionTypes.RemoveRelated
                m_requestName = "RemoveRelated"

            Case Else
                Throw New ApplicationException("Unhandled action type.")
        End Select

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

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

        inputCol = GetInputColumn_("FirstEntityId")
        m_feiIndex = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            inputCol.LineageID)

        inputCol = GetInputColumn_("SecondEntityName")
        m_senIndex = Me.HostComponent.BufferManager.FindColumnByLineageID( _
            input.Buffer, _
            inputCol.LineageID)

        inputCol = GetInputColumn_("SecondEntityId")
        m_seiIndex = 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 ApplicationException("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 < 4) 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 first entity.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "FirstEntityName"
        column.DataType = DataType.DT_WSTR
        column.Length = 100

        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "FirstEntityId"
        column.DataType = DataType.DT_GUID

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

        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "SecondEntityId"
        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("Select action to perform.")> _
    Public Property Action() As ActionTypes
        Get
            Action = m_action
        End Get
        Set(ByVal value As ActionTypes)
            m_action = value
        End Set
    End Property    ' Action
#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 Relationships", _
            message, _
            String.Empty, _
            0, _
            cancel)
    End Sub ' FireError_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    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_
#End Region ' Internals


#Region "Attributes"
    Enum ActionTypes
        SetRelated
        RemoveRelated
    End Enum    ' ActionTypes

    Private m_crmConnection As String
    Private m_action As ActionTypes

    Private m_connection As ICrmConnection
    Private m_service2011 As CRM2011.OrganizationServiceClient
    Private m_service4 As CRM4.CrmService
    Private m_requestName As String
    Private m_fenIndex As Integer
    Private m_feiIndex As Integer
    Private m_senIndex As Integer
    Private m_seiIndex As Integer
#End Region ' Attributes
End Class   ' ScriptMain
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[Project]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<c:Project xmlns:c="http://schemas.microsoft.com/codeprojectml/2010/08/main" xmlns:msb="http://schemas.microsoft.com/developer/msbuild/2003" runtimeVersion="4.0" schemaVersion="1.0">
	<msb:PropertyGroup>
		<msb:Language>msBuild</msb:Language>
		<msb:NoContent>Reference;Import;Folder</msb:NoContent>
		<msb:ProjectId>{5B45389A-5FFB-4E2F-9032-DC786634AB3D}</msb:ProjectId>
		<msb:DisplayName>scriptcomponent_9ee5dd1f734f45a69a198485d819583e</msb:DisplayName>
		<msb:CodeName>scriptcomponent_9ee5dd1f734f45a69a198485d819583e</msb:CodeName>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:File Include="BufferWrapper.vb"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:File Include="main.vb"/>
		<msb:File Include="My Project\AssemblyInfo.vb"/>
		<msb:File Include="My Project\Resources.Designer.vb"/>
		<msb:File Include="My Project\Settings.Designer.vb"/>
		<msb:File Include="My Project\Resources.resx"/>
		<msb:File Include="My Project\Settings.settings"/>
		<msb:Project Include="scriptcomponent_9ee5dd1f734f45a69a198485d819583e.vbproj"/>
	</msb:ItemGroup>
</c:Project>]]></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[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="4" 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_9ee5dd1f734f45a69a198485d819583e.vbproj.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
ZGUuDQ0KJAAAAAAAAABQRQAATAEDAApf2k8AAAAAAAAAAOAAAiELAQgAADYAAAAIAAAAAAAAzlUA
AAAgAAAAYAAAAABAAAAgAAAAAgAABAAAAAAAAAAEAAAAAAAAAACgAAAAAgAAAAAAAAIAQIUAABAA
ABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAIBVAABLAAAAAGAAAMAEAAAAAAAAAAAAAAAAAAAA
AAAAAIAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAA1DUAAAAgAAAANgAAAAIA
AAAAAAAAAAAAAAAAACAAAGAucnNyYwAAAMAEAAAAYAAAAAYAAAA4AAAAAAAAAAAAAAAAAABAAABA
LnJlbG9jAAAMAAAAAIAAAAACAAAAPgAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAACw
VQAAAAAAAEgAAAACAAUAZCsAABwqAAABAAAAAAAAAKwqAAC4AAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4CKAEAAAoqHgIoBAAACiqmcwYAAAqAAQAABHMHAAAKgAIA
AARzCAAACoADAAAEcwkAAAqABAAABCoAABMwAQALAAAAAQAAEX4BAAAEbwoAAAoqABMwAQALAAAA
AgAAEX4CAAAEbwsAAAoqABMwAQALAAAAAwAAEX4DAAAEbwwAAAoqABMwAQALAAAABAAAEX4EAAAE
bw0AAAoqABMwAgANAAAABQAAEQIDKBEAAAooEgAACioAAAATMAEABwAAAAYAABECKBMAAAoqABMw
AQALAAAABwAAEdAFAAACKBQAAAoqABMwAQAHAAAACAAAEQIoFQAACioAEzABABAAAAAJAAARAowB
AAAbLQYoAQAAKyoCKhMwAgAQAAAACgAAEQMSAP4VAgAAGwaBAgAAGyoeAigXAAAKKhMwAgAoAAAA
CwAAEQJ7GQAACm8aAAAKCweMAwAAGy0SKAIAACsLAnsZAAAKB28bAAAKBypKAigXAAAKAnMcAAAK
fRkAAAoqADoCAwQFDgQOBSgeAAAKKgATMAEABwAAAAwAABEWjSEAAAEqABMwAQAHAAAADQAAERaN
IQAAASoAEzABAAkAAAAOAAARAigfAAAKCgYqAAAAEzABAAkAAAAPAAARAiggAAAKCgYqAAAAfgIo
IgAACgICcxoAAAZ9BgAABAICcxwAAAZ9BwAABCq+AwIoIwAACm8kAAAKcgEAAHBvJQAACm8mAAAK
MxECAgMXBQ4EcxEAAAZvGAAABipKKwcCA28ZAAAGA28UAAAGLfEqAAYqAAA6AigXAAAKAgN9CAAA
BCoAEzACACAAAAAQAAARAnsIAAAEbyMAAApvJwAACnINAABwbygAAApvKQAACio6AigXAAAKAgN9
CQAABCoAHgIoFgAABiobMAUAAgIAABEAABECew0AAAQ50QAAAHMqAAAKDAgCew8AAARvKwAACnMs
AAAKCgYDby0AAAoCexAAAARvLgAACigvAAAKbzAAAAoGEgkDby0AAAoCexEAAARvLgAACm8VAAAK
KDEAAAoRCW8yAAAKcywAAAoLBwNvLQAACgJ7EgAABG8uAAAKKC8AAApvMAAACgcSCQNvLQAACgJ7
EwAABG8uAAAKbxUAAAooMQAAChEJbzIAAAoIcikAAHAYjSkAAAETChEKFgaiEQoXB6IRCm8zAAAK
AnsNAAAECG80AAAKJt0lAQAAczUAAAoNCQNvLQAACgJ7EAAABG8uAAAKKC8AAApvNgAACgkSCQNv
LQAACgJ7EQAABG8uAAAKbxUAAAooMQAAChEJbzcAAAoJA28tAAAKAnsSAAAEby4AAAooLwAACm84
AAAKCRIJA28tAAAKAnsTAAAEby4AAApvFQAACigxAAAKEQlvOQAACgJvJQAABkUCAAAAAgAAACEA
AAArPnM6AAAKEwQRBAlvOwAACgJ7DgAABBEEbzwAAAomKypzPQAAChMFEQUJbz4AAAoCew4AAAQR
BW88AAAKJisLcjcAAHBzPwAACnrePSUoQAAAChMGAhEGb0EAAApvQgAACm8oAAAGKEMAAAreHCUo
QAAAChMHAhEHb0QAAApvKAAABihDAAAK3gAqAABBNAAAAAAAAAAAAADEAQAAxAEAACEAAAAuAAAB
AAAAAAAAAADEAQAA5QEAABwAAAAvAAABEzAEAIcBAAASAAARAihFAAAKAgJ7BgAABG8bAAAGFG9G
AAAKdA4AAAF9DAAABAJ7DAAABG9HAAAKAnsMAAAEFm9IAAAKKBEAAAoMAgh1DwAAAX0NAAAEAnsN
AAAELSoCAnsMAAAEFm9IAAAKdRAAAAF9DgAABAJ7DgAABC0LcmUAAHBzSQAACnoCbyUAAAZFAgAA
AAIAAAAPAAAAKxoCcpkAAHB9DwAABCsYAnKvAABwfQ8AAAQrC3I3AABwcz8AAAp6AigjAAAKbyQA
AAoWjDoAAAFvJQAACgoCcssAAHBvKQAABgsCAm9KAAAKb0sAAAoGb0wAAAoHb00AAApvTgAACn0Q
AAAEAnLrAABwbykAAAYLAgJvSgAACm9LAAAKBm9MAAAKB29NAAAKb04AAAp9EQAABAJyBwEAcG8p
AAAGCwICb0oAAApvSwAACgZvTAAACgdvTQAACm9OAAAKfRIAAAQCcikBAHBvKQAABgsCAm9KAAAK
b0sAAAoGb0wAAAoHb00AAApvTgAACn0TAAAEKgBKAihPAAAKAnsMAAAEb1AAAAoqABswAgCeAAAA
EwAAEQJvIwAABihRAAAKLAtyRwEAcHM/AAAKegJvIwAACm8kAAAKFow6AAABbyUAAAoMCG9SAAAK
LCcIb1MAAApvVAAAChYuDghvUwAACm9UAAAKGi8LcocBAHBzSQAACnoCbyMAAApvJwAACnINAABw
bygAAAoCbyMAAAZvVQAAChcK3hglKEAAAAoNFgoDCW9EAAAKUShDAAAK3gAGCwcqAAABEAAAAAAA
AIKCABgvAAABEzACAPAAAAAUAAARAihWAAAKAigjAAAKbyQAAApvVwAAChYzC3KtAQBwc0kAAAp6
AigjAAAKbyQAAAoWjDoAAAFvJQAACgsHb1gAAAoXb1kAAAoHb1MAAApvWgAACgdvWAAACm9bAAAK
B29YAAAKb1wAAAoKBnLLAABwb10AAAoGIIIAAABvXgAACgYfZG9fAAAKB29YAAAKb1wAAAoKBnLr
AABwb10AAAoGH0hvXgAACgdvWAAACm9cAAAKCgZyBwEAcG9dAAAKBiCCAAAAb14AAAoGH2RvXwAA
CgdvWAAACm9cAAAKCgZyKQEAcG9dAAAKBh9Ib14AAAoqEzABAAkAAAAVAAARAnsKAAAECgYqAAAA
IgIDfQoAAAQqAAAAEzABAAkAAAAWAAARAnsLAAAECgYqAAAAIgIDfQsAAAQqAAAAEzADABMAAAAX
AAARF40hAAABCwcWcsMBAHCiBwoGKgATMAcAHQAAABgAABEWCgIoIwAAChZy3QEAcAN+YAAAChYS
AG9hAAAKKgAAABswAgCKAAAAGQAAERQNAigjAAAKbyQAAAoWjDoAAAFvJQAACgwIb1gAAAoDb2IA
AAoKCG9TAAAKb2MAAAoTBSsiEQVvZAAACnQNAAABEwQRBG9lAAAKBm9mAAAKMwURBA3eIREFb2cA
AAot1d4WEQV1QgAAASwMEQV1QgAAAW9oAAAK3AktC3ITAgBwc0kAAAp6CQsHKgAAARAAAAIAJgA8
YgAWAAAAAR4CKBcAAAoqEzACAC0AAAAaAAARfhcAAAQtIHJDAgBw0A0AAAIoFAAACm9wAAAKc3EA
AAoLB4AXAAAEfhcAAAQqAAAAEzABAAYAAAAbAAARfhgAAAQqAAAeAoAYAAAEKkJzFwAACigRAAAK
gBoAAAQqAAAAHgIocgAACiobMAEAPwAAABwAABF+GQAABC0yfhoAAAQoEQAACihzAAAKfhkAAAQt
HHMvAAAGgBkAAATeEH4aAAAEKBEAAAoodAAACtx+GQAABCoAARAAAAIAHQAMKQAQAAAAAbQAAADO
yu++AQAAAJEAAABsU3lzdGVtLlJlc291cmNlcy5SZXNvdXJjZVJlYWRlciwgbXNjb3JsaWIsIFZl
cnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5
MzRlMDg5I1N5c3RlbS5SZXNvdXJjZXMuUnVudGltZVJlc291cmNlU2V0AgAAAAAAAAAAAAAAUEFE
UEFEULQAAABCU0pCAQABAAAAAAAMAAAAdjQuMC4zMDMxOQAAAAAFAGwAAAAADgAAI34AAGwOAABE
EwAAI1N0cmluZ3MAAAAAsCEAAHgCAAAjVVMAKCQAABAAAAAjR1VJRAAAADgkAADkBQAAI0Jsb2IA
AAAAAAAAAgAAAVcdogkJDwAAAPolMwAWAAABAAAAVwAAAA4AAAAaAAAAMAAAABcAAACAAAAAAgAA
AEIAAAAcAAAABwAAAA4AAAARAAAACQAAAAEAAAAMAAAAAQAAAAMAAAADAAAAAgAAAAAABRMBAAAA
AAAKALUBiwEKAOkBywEGAPkB8gEKAFECiwEGAM8C8gEKAFEDJwMOAKMDjAMSAPID0QMWACME0QMS
ADIE0QMOANYEjAMaAJEFaQUeAK4GhQYOAPcGjAMiAFEHJAciAJYHeQcGAP8H8gEGADYIJQgGAGMI
TggmAMoItQgmABcJAQkmADAJAQkmAF0JRQkGAIcJdAkKAMYJnwkKAN4JEwAmABMK9gkGAEgKKAoG
AGYK8gEGAIoK8gEKAKMKEwAGAOcKyAoGAPsK8gESAAIL0QMGAA8L8gEeACULhQYeAFQLhQYeAH8L
hQYeAJwLhQYeAN8LhQYiAA4MJAciAB4MJAciADIMeQciAEcMeQciAFkMeQcqAKAMggwGAK4M8gEG
ALgM8gEKANgMnwkuALgM8gEiAAQNJAciAF0NeQciAHYNeQciAH8NeQcGAIcN8gEKAJwNnwkyAMMN
uA0GACYO8gEWACwO0QMeAFAOhQYeAL4OhQYeABcPhQYeADUPhQYaAKQPaQUGAOgP1Q8GADQQ8gES
AEgQ0QMOAJEQbxAOAK0QbxAOAMUQbxAmAN0QAQkmAPIQAQkOAAQRbxAGACoRGBEGAFERQBEGAGQR
dAkGAM0RKAoGAO0RKAoGACUSCxIGAD4SGBEGAFsSyAoGAGkSGBEGAIQSGBEGAJ8SGBEGALgSGBEG
ANESGBEGAO4SGBEAAAAAAQAAAAAAAQABAAAAAAApADcABQABAAEAAAAAAHIANwAJAAEAAgAAARAA
fQA3AA0AAQADAAUBAACHAAAADQAFAAgABQEAAJUAAAANAAUADwABAAAAsAC8AB0ABgARAAEAAAD0
ALwALQAGABYAAQAAAAIBvAANAAgAGgABAAAADgG8AA0ACQAcAAEAAAAYAbwAIAAKAB0AAgEAACMB
AABFABQAKgAAAAAALwE7AQ0AFwAqAAABEACAAbwAUQAZAC4AMQAUAiAAMQA9Ai0AMQBfAjoAMQCE
AkcAIQBgA5AABgACAckABgAOAc0AAQA2BeEAAQA2BeEAAQDeBhEBAQDuBhQBAQAGBxgBAQBrBxwB
AQChByABAQCsBxEBAQC6ByQBAQDFByQBAQDQByQBAQDbByQBBgYECCQBVoAMCBQBVoAXCBQBEQBG
CDoBEQBvCD4BEQDiCFwBEQDqCGABUCAAAAAABhjFARMAAQBYIAAAAAAGGMUBEwABAGAgAAAAABEY
AAIXAAEAjCAAAAAAEwgHAhsAAQCkIAAAAAATCC0CKAABALwgAAAAABMIVgI1AAEA1CAAAAAAEwh0
AkIAAQDsIAAAAABGAroCYwABAAghAAAAAEYCwwJoAAIAHCEAAAAAgwDUAmwAAgA0IQAAAABGAtwC
cQACAEghAAAAABEA5QJ4AAIAZCEAAAAAAQADA4AAAwCAIQAAAAAGGMUBEwAEAIghAAAAAAMIFwOL
AAQAvCEAAAAABhjFARMABADQIQAAAAAGGMUBrwAEAOAhAAAAAEYKbAS7AAkA9CEAAAAARgqDBLsA
CQAIIgAAAACGAJsEwAAJACAiAAAAAIYAowTAAAkAOCIAAAAABhjFARMACQBYIgAAAABGAuoE0QAJ
AIgiAAAAAEYDCQXbAA0AnCIAAAAARgMcBdsADgCgIgAAAAAGGMUB5QAPALAiAAAAAAYIqgXrABAA
3CIAAAAABhjFAeUAEADsIgAAAAAGGMUBEwARAPQiAAAAAEYCHAXbABEAOCUAAAAARgLKBRMAEgDM
JgAAAABGAtUFEwASAOAmAAAAAAYA4QX1ABIAnCcAAAAARgL1BRMAEwCYKAAAAAAGCKoFcQATALAo
AAAAAAYICgb7ABMAvCgAAAAABggiBgABFADUKAAAAAAGCC0GBQEUAOAoAAAAAAEIOAa7ABUAACkA
AAAAAQBOBvsAFQAsKQAAAAABAMEGCwEWANQpAAAAAAMYxQETABcA3CkAAAAAFgh7CEIBFwAYKgAA
AAAWCI8IRwEXACwqAAAAABYImwhMARcANCoAAAAAERgAAhcAGABIKgAAAAAGGMUBEwAYAFAqAAAA
ABYI9whjARgAAAABAMECAAABAPoCAAABAPoCAAABAEAEAAACAEoEAAADAFMEAAAEAFsEAAAFAGIE
AAABAPcEAAACAP8EAAADAFsEAAAEAGIEAAABAFsEAAABADIFAAABAEAEAAABAEAEAAABADIFAAAB
AOoFAAABABwGAAABABwGAAABAFkGAAABANEGAAABAKcICQDFARMAqQDFAW0BuQDFAXwBEQDFARMA
wQDFARMAJADFARMALADFARMANADFARMAPADFARMAJAAXA4sALAAXA4sANAAXA4sAPAAXA4sAyQDF
ARMA0QDFARMA2QDFAfsA4QBXChECGQC6AmMAGQDDAmgAKQB4Ch4CGQDcAnEA8QCUCi4CGQDFARMA
+QDFAT4CRABgA5AATAD3CIsATAC+CrsCTADFARMAAQHFAcoCOQDFAa8AEQGbBMAAEQGjBMAAGQHF
AcoCWQDFARMAQQA+C9oCIQFrC+ACKQGMC+YCMQGVC2gAIQG/C+0COQGMC/MCQQH4C+sAUQHFARMA
UQG9DPsASQHFARMAOQDNDP8CSQCMCwQDiQHcAgkDSQHkDPsAgQHFAfsASQH0DA4DUQH7DBUDeQAZ
DRsDWQHFARMAWQEhDfsAWQExDQ4DWQE/DfsAWQFPDQ4DYQHFARMAYQFrDSQDgQAZDSsDaQHFARMA
aQFrDSQDuQHFAfsAwQGoDTQDcQHLDTsDyQHWDXEAwQHjDRcAeQH1DXEAQQDKBRMAYQABDmgDcQAT
DhMAcQAbDgQDeQHFAfsAWQA+Dm0D2QFlDnMDMQHNDGgAaQB3DmgA4QGFDnkDQQDVBRMAcQCbDhMA
CQGhDooDMQGvDsAAMQHbDo8D6QH1DmgAQQH/DvsAWQD1BRMAKQH1DmgAMQFdD6AD+QGCD8oC6QGN
DxMA+QGNDxMA+QGXD6YD8QGbD/sA8QGtD6wD8QG6D7MDCQHFDxEBIQHLD80D+QGMC9gD6QH0D98D
CQICEOUDaQAOEGgA8QGVC2gACQIrEMAAEQJAEBMAGQLFARMAIQLFAfsAKQLFAQkEMQLFARMAOQLF
AfsAQQLFAfsASQLFAfsAKQAzEZ4EkQDFAaQEoQDFARMAWQJZEcEEWQJfEcEEYQLFARMAaQLFAbMD
cQLFARMAeQLFAfsAgQLFAfsAiQLFAfsAkQLFAfsAmQLFAfsAoQLFAfsAqQLFAfsAsQLFAfsAuQLF
AfsACABUADABCABYADUBKQCDAMsBLgDzA9UFLgDrA5gFLgDDA/MELgDjA3gFLgD7A88CLgADBJgF
LgCzA8sELgC7A9QELgDLAzsFLgDTA0gFLgDrAM8CLgALAXIFLgDbA88CQAArADUBQAATAHMBQwAT
AHMBQwAbAIIBSQCDANwBYwAbAIIBYwATAHMBaQCDAPABgAArADUBgwAbAIIBgwB7ADUBgwBzADUB
iQCDAP0BoAArADUBowDDAEYCowATAHMBwAArADUBwwATAHMBwwDrAM8C4AArADUB4wALAc8CAAEr
ADUBAAETAHMBAwELAc8CIAErADUBIAETAHMBKQFrA3EEKQFzA0wEKQF7A1oEQAErADUBQAETAHMB
SQFrAy0ESQFzA0wEYAErADUBYAETAHMBYwELAc8CYwFTA/sDYwFLAzUBYwFjAzUBYwFbAw8EgAEr
ADUBiQETALgEoAErADUBqQETALgEwAErADUBwAETAHMByQGrAzUB4AErADUBAAITAHMBAAIrADUB
QAMLAc8CgAMLAc8CtwG8AcEBxgEWAhoCJQIqAjkCOQLBAtUC1QIWAhYC+gJBA38DlQO4AyoCwQPG
AxYC6QOsBLMExgQEAAEABgAFAAcABgAJAAgACwAJAA0ADAAOAA4AAADpAU8AAACiAlQAAABRAlkA
AACuAl4AAABqA5gAAACvBMQAAADCBMQAAAC8BfAAAAC8BScBAADmBysBAADtB8QAAAA2CFIBAACt
CFcBAACnCGgBAgAEAAMAAgAFAAUAAgAGAAcAAgAHAAkAAgAPAAsAAgASAA0AAgATAA8AAgAbABEA
AgAjABMAAQAkABMAAgAlABUAAQAmABUAAgAnABcAAgArABkAAgAsABsAAQAtABsAAgAwAB0AdQB1
AIgAmwGiAakBsAGoAq8CBIAAAAEAAAAAAAAAAAAAAAAAvAAAAAQAAAAAAAAAAAAAAAEACgAAAAAA
CgAAAAAAAAAAAAAACgATAAAAAAABAAAAAAAAAAAAAACdAHYDAAAAAAsAAAAAAAAAAAAAAKYAtAMA
AAAACwAAAAAAAAAAAAAApgACBAAAAAALAAAAAAAAAAAAAACmAEYFAAAAAAsAAAAAAAAAAAAAAKYA
YQYAAAAAAQAAAAAAAAAAAAAAnQATBwAAAAAEAAAAAAAAAAAAAAABAPIBAAAAAAQAAAAAAAAAAAAA
AAoAbgwAAAAAAgAAAAAAAAAAAAAAAQAKAAAAAAAEAAAAAAAAAAAAAAABALgNAAAAAAAAAAABAAAA
gREAAAUABAAGAAQADAALAAAAEAAMAPgCAAAQABkA+AIAAAAAGwD4Ai0ANAItALYCAAAAAAA8TW9k
dWxlPgBtc2NvcmxpYgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMATXlBcHBsaWNhdGlvbgBTY3JpcHRD
b21wb25lbnRfOWVlNWRkMWY3MzRmNDVhNjlhMTk4NDg1ZDgxOTU4M2UudmJwcm9qLk15AE15Q29t
cHV0ZXIATXlQcm9qZWN0AE15V2ViU2VydmljZXMAVGhyZWFkU2FmZU9iamVjdFByb3ZpZGVyYDEA
SW5wdXRCdWZmZXIAU2NyaXB0Q29tcG9uZW50XzllZTVkZDFmNzM0ZjQ1YTY5YTE5ODQ4NWQ4MTk1
ODNlLnZicHJvagBVc2VyQ29tcG9uZW50AENvbm5lY3Rpb25zAFZhcmlhYmxlcwBTY3JpcHRNYWlu
AEFjdGlvblR5cGVzAE15UmVzb3VyY2VzAFNjcmlwdENvbXBvbmVudF85ZWU1ZGQxZjczNGY0NWE2
OWExOTg0ODVkODE5NTgzZS52YnByb2ouTXkuUmVzb3VyY2VzAE15U2V0dGluZ3MATWljcm9zb2Z0
LlZpc3VhbEJhc2ljLkFwcGxpY2F0aW9uU2VydmljZXMAQXBwbGljYXRpb25CYXNlAC5jdG9yAE1p
Y3Jvc29mdC5WaXN1YWxCYXNpYy5EZXZpY2VzAENvbXB1dGVyAFN5c3RlbQBPYmplY3QALmNjdG9y
AGdldF9Db21wdXRlcgBtX0NvbXB1dGVyT2JqZWN0UHJvdmlkZXIAZ2V0X0FwcGxpY2F0aW9uAG1f
QXBwT2JqZWN0UHJvdmlkZXIAVXNlcgBnZXRfVXNlcgBtX1VzZXJPYmplY3RQcm92aWRlcgBnZXRf
V2ViU2VydmljZXMAbV9NeVdlYlNlcnZpY2VzT2JqZWN0UHJvdmlkZXIAQXBwbGljYXRpb24AV2Vi
U2VydmljZXMARXF1YWxzAG8AR2V0SGFzaENvZGUAVHlwZQBHZXRUeXBlAFRvU3RyaW5nAENyZWF0
ZV9fSW5zdGFuY2VfXwBUAGluc3RhbmNlAERpc3Bvc2VfX0luc3RhbmNlX18AZ2V0X0dldEluc3Rh
bmNlAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5NeVNlcnZpY2VzLkludGVybmFsAENvbnRleHRWYWx1
ZWAxAG1fQ29udGV4dABHZXRJbnN0YW5jZQBDb3p5Um9jLlNTSVNQbHVzLjIwMTIAQ296eVJvYy5T
cWxTZXJ2ZXIuU1NJUwBTY3JpcHRCdWZmZXJQbHVzAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuVHhTY3Jp
cHQATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUGlwZWxpbmUAU2NyaXB0Q29tcG9uZW50AE1pY3Jv
c29mdC5TcWxTZXJ2ZXIuUGlwZWxpbmVIb3N0AFBpcGVsaW5lQnVmZmVyAE91dHB1dE5hbWVNYXAA
Q29tcG9uZW50AE9iamVjdElEAElzSW5wdXQAQnVmZmVyAE91dHB1dE1hcABnZXRfU3RhdGljSW5w
dXRDb2x1bW5zAGdldF9TdGF0aWNPdXRwdXRDb2x1bW5zAE5leHRSb3cARW5kT2ZSb3dzZXQAU3Rh
dGljSW5wdXRDb2x1bW5zAFN0YXRpY091dHB1dENvbHVtbnMAU2NyaXB0Q29tcG9uZW50UGx1cwBQ
cm9jZXNzSW5wdXQASW5wdXRJRABJbnB1dE5hbWUASW5wdXRfUHJvY2Vzc0lucHV0AElucHV0X1By
b2Nlc3NJbnB1dFJvdwBSb3cAUGFyZW50Q29tcG9uZW50AE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRFRT
UnVudGltZVdyYXAATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUnVudGltZS5XcmFwcGVyAElEVFND
b25uZWN0aW9uTWFuYWdlcjEwMABnZXRfQ3JtQ29ubmVjdGlvbgBDcm1Db25uZWN0aW9uAFByZUV4
ZWN1dGUAUG9zdEV4ZWN1dGUAVmFsaWRhdGUAZXJyTWVzc2FnZQBSZWluaXRpYWxpemVNZXRhRGF0
YQBzZXRfQ3JtQ29ubmVjdGlvbgB2YWx1ZQBnZXRfQWN0aW9uAHNldF9BY3Rpb24AZ2V0X0NybUNv
bm5lY3Rpb25UeXBlAEZpcmVFcnJvcl8AbWVzc2FnZQBNaWNyb3NvZnQuU3FsU2VydmVyLkRUU1Bp
cGVsaW5lV3JhcABNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5QaXBlbGluZS5XcmFwcGVyAElEVFNJ
bnB1dENvbHVtbjEwMABHZXRJbnB1dENvbHVtbl8AZXh0ZXJuYWxOYW1lAG1fY3JtQ29ubmVjdGlv
bgBtX2FjdGlvbgBJQ3JtQ29ubmVjdGlvbgBtX2Nvbm5lY3Rpb24AQ296eVJvYy5EeW5hbWljcwBD
b3p5Um9jLkR5bmFtaWNzLkNybTIwMTEuT3JnYW5pemF0aW9uU2VydmljZQBPcmdhbml6YXRpb25T
ZXJ2aWNlQ2xpZW50AG1fc2VydmljZTIwMTEAQ296eVJvYy5EeW5hbWljcy5Dcm0uU2VydmljZQBD
cm1TZXJ2aWNlAG1fc2VydmljZTQAbV9yZXF1ZXN0TmFtZQBtX2ZlbkluZGV4AG1fZmVpSW5kZXgA
bV9zZW5JbmRleABtX3NlaUluZGV4AEFjdGlvbgBDcm1Db25uZWN0aW9uVHlwZQBFbnVtAHZhbHVl
X18AU2V0UmVsYXRlZABSZW1vdmVSZWxhdGVkAFN5c3RlbS5SZXNvdXJjZXMAUmVzb3VyY2VNYW5h
Z2VyAF9yZXNNZ3IAU3lzdGVtLkdsb2JhbGl6YXRpb24AQ3VsdHVyZUluZm8AX3Jlc0N1bHR1cmUA
Z2V0X1Jlc291cmNlTWFuYWdlcgBnZXRfQ3VsdHVyZQBzZXRfQ3VsdHVyZQBWYWx1ZQBDdWx0dXJl
AFN5c3RlbS5Db25maWd1cmF0aW9uAEFwcGxpY2F0aW9uU2V0dGluZ3NCYXNlAG1fVmFsdWUAbV9T
eW5jT2JqZWN0AGdldF9WYWx1ZQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwARWRpdG9yQnJvd3NhYmxl
QXR0cmlidXRlAEVkaXRvckJyb3dzYWJsZVN0YXRlAFN5c3RlbS5Db2RlRG9tLkNvbXBpbGVyAEdl
bmVyYXRlZENvZGVBdHRyaWJ1dGUAU3lzdGVtLkRpYWdub3N0aWNzAERlYnVnZ2VySGlkZGVuQXR0
cmlidXRlAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5Db21waWxlclNlcnZpY2VzAFN0YW5kYXJkTW9k
dWxlQXR0cmlidXRlAEhpZGVNb2R1bGVOYW1lQXR0cmlidXRlAFN5c3RlbS5Db21wb25lbnRNb2Rl
bC5EZXNpZ24ASGVscEtleXdvcmRBdHRyaWJ1dGUAU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2
aWNlcwBSdW50aW1lSGVscGVycwBHZXRPYmplY3RWYWx1ZQBSdW50aW1lVHlwZUhhbmRsZQBHZXRU
eXBlRnJvbUhhbmRsZQBBY3RpdmF0b3IAQ3JlYXRlSW5zdGFuY2UATXlHcm91cENvbGxlY3Rpb25B
dHRyaWJ1dGUAc2V0X1ZhbHVlAFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcwBDb21WaXNp
YmxlQXR0cmlidXRlAFN0cmluZwBTY3JpcHRCdWZmZXIAQ0xTQ29tcGxpYW50QXR0cmlidXRlAElE
VFNDb21wb25lbnRNZXRhRGF0YTEwMABnZXRfQ29tcG9uZW50TWV0YURhdGEASURUU0lucHV0Q29s
bGVjdGlvbjEwMABnZXRfSW5wdXRDb2xsZWN0aW9uAElEVFNJbnB1dDEwMABnZXRfSXRlbQBnZXRf
SUQASURUU1J1bnRpbWVDb25uZWN0aW9uQ29sbGVjdGlvbjEwMABnZXRfUnVudGltZUNvbm5lY3Rp
b25Db2xsZWN0aW9uAElEVFNSdW50aW1lQ29ubmVjdGlvbjEwMABnZXRfQ29ubmVjdGlvbk1hbmFn
ZXIARW50aXR5UmVmZXJlbmNlAE9yZ2FuaXphdGlvblJlcXVlc3QAVGFyZ2V0UmVsYXRlZER5bmFt
aWMAU2V0UmVsYXRlZFJlcXVlc3QAUmVtb3ZlUmVsYXRlZFJlcXVlc3QAU3lzdGVtLldlYi5TZXJ2
aWNlcwBTeXN0ZW0uV2ViLlNlcnZpY2VzLlByb3RvY29scwBTb2FwRXhjZXB0aW9uAEV4Y2VwdGlv
bgBHdWlkAHNldF9SZXF1ZXN0TmFtZQBnZXRfQnVmZmVyAENvbnZlcnNpb25zAHNldF9Mb2dpY2Fs
TmFtZQBzZXRfSWQAc2V0X0l0ZW0AT3JnYW5pemF0aW9uUmVzcG9uc2UARXhlY3V0ZQBzZXRfRW50
aXR5MU5hbWUAc2V0X0VudGl0eTFJZABzZXRfRW50aXR5Mk5hbWUAc2V0X0VudGl0eTJJZABUYXJn
ZXRSZWxhdGVkAHNldF9UYXJnZXQAUmVzcG9uc2UAUmVxdWVzdABBcHBsaWNhdGlvbkV4Y2VwdGlv
bgBQcm9qZWN0RGF0YQBTZXRQcm9qZWN0RXJyb3IAU3lzdGVtLlhtbABYbWxOb2RlAGdldF9EZXRh
aWwAZ2V0X0lubmVyWG1sAENsZWFyUHJvamVjdEVycm9yAGdldF9NZXNzYWdlAEFjcXVpcmVDb25u
ZWN0aW9uAENvbm5lY3QAR2V0U2VydmljZQBJbnQzMgBQaXBlbGluZUNvbXBvbmVudABnZXRfSG9z
dENvbXBvbmVudABJRFRTQnVmZmVyTWFuYWdlcjEwMABnZXRfQnVmZmVyTWFuYWdlcgBnZXRfTGlu
ZWFnZUlEAEZpbmRDb2x1bW5CeUxpbmVhZ2VJRABDbG9zZQBJc051bGxPckVtcHR5AGdldF9Jc0F0
dGFjaGVkAElEVFNJbnB1dENvbHVtbkNvbGxlY3Rpb24xMDAAZ2V0X0lucHV0Q29sdW1uQ29sbGVj
dGlvbgBnZXRfQ291bnQAc2V0X0Nvbm5lY3Rpb25NYW5hZ2VySUQASURUU0V4dGVybmFsTWV0YWRh
dGFDb2x1bW4xMDAASURUU0V4dGVybmFsTWV0YWRhdGFDb2x1bW5Db2xsZWN0aW9uMTAwAGdldF9F
eHRlcm5hbE1ldGFkYXRhQ29sdW1uQ29sbGVjdGlvbgBzZXRfSXNVc2VkAFJlbW92ZUFsbABOZXcA
c2V0X05hbWUARGF0YVR5cGUAc2V0X0RhdGFUeXBlAHNldF9MZW5ndGgARW1wdHkARmlyZUVycm9y
AFN5c3RlbS5Db2xsZWN0aW9ucwBJRW51bWVyYXRvcgBHZXRFbnVtZXJhdG9yAGdldF9DdXJyZW50
AGdldF9FeHRlcm5hbE1ldGFkYXRhQ29sdW1uSUQATW92ZU5leHQASURpc3Bvc2FibGUARGlzcG9z
ZQBTU0lTU2NyaXB0Q29tcG9uZW50RW50cnlQb2ludEF0dHJpYnV0ZQBDb3p5Um9jLlNxbFNlcnZl
ci5TU0lTLkF0dHJpYnV0ZXMAVmFsaWRhdGVQcm9wZXJ0aWVzQXR0cmlidXRlAFNvcnRQcm9wZXJ0
aWVzQXR0cmlidXRlAENvbHVtbk1hcHBpbmdzQXR0cmlidXRlAERlc2NyaXB0aW9uQXR0cmlidXRl
AENhdGVnb3J5QXR0cmlidXRlAENvbm5lY3Rpb25BdHRyaWJ1dGUAU3lzdGVtLlJlZmxlY3Rpb24A
QXNzZW1ibHkAZ2V0X0Fzc2VtYmx5AFN5c3RlbS5UaHJlYWRpbmcATW9uaXRvcgBFbnRlcgBFeGl0
AERlYnVnZ2VyTm9uVXNlckNvZGVBdHRyaWJ1dGUAU2NyaXB0Q29tcG9uZW50XzllZTVkZDFmNzM0
ZjQ1YTY5YTE5ODQ4NWQ4MTk1ODNlLnZicHJvai5SZXNvdXJjZXMucmVzb3VyY2VzAENvbXBpbGF0
aW9uUmVsYXhhdGlvbnNBdHRyaWJ1dGUAUnVudGltZUNvbXBhdGliaWxpdHlBdHRyaWJ1dGUAU3lz
dGVtLlJ1bnRpbWUuVmVyc2lvbmluZwBUYXJnZXRGcmFtZXdvcmtBdHRyaWJ1dGUAQXNzZW1ibHlG
aWxlVmVyc2lvbkF0dHJpYnV0ZQBHdWlkQXR0cmlidXRlAEFzc2VtYmx5VHJhZGVtYXJrQXR0cmli
dXRlAEFzc2VtYmx5Q29weXJpZ2h0QXR0cmlidXRlAEFzc2VtYmx5UHJvZHVjdEF0dHJpYnV0ZQBB
c3NlbWJseUNvbXBhbnlBdHRyaWJ1dGUAQXNzZW1ibHlEZXNjcmlwdGlvbkF0dHJpYnV0ZQBBc3Nl
bWJseVRpdGxlQXR0cmlidXRlAFNjcmlwdENvbXBvbmVudF85ZWU1ZGQxZjczNGY0NWE2OWExOTg0
ODVkODE5NTgzZS52YnByb2ouZGxsAAAAAAALSQBuAHAAdQB0AAAbQwByAG0AQwBvAG4AbgBlAGMA
dABpAG8AbgAADVQAYQByAGcAZQB0AAAtVQBuAGgAYQBuAGQAbABlAGQAIABhAGMAdABpAG8AbgAg
AHQAeQBwAGUALgAAM1UAbgBoAGEAbgBkAGwAZQBkACAAcwBlAHIAdgBpAGMAZQAgAG8AYgBqAGUA
YwB0AC4AABVTAGUAdABSAGUAbABhAHQAZQBkAAAbUgBlAG0AbwB2AGUAUgBlAGwAYQB0AGUAZAAA
H0YAaQByAHMAdABFAG4AdABpAHQAeQBOAGEAbQBlAAAbRgBpAHIAcwB0AEUAbgB0AGkAdAB5AEkA
ZAAAIVMAZQBjAG8AbgBkAEUAbgB0AGkAdAB5AE4AYQBtAGUAAB1TAGUAYwBvAG4AZABFAG4AdABp
AHQAeQBJAGQAAD9TAGUAbABlAGMAdAAgAEQAeQBuAGEAbQBpAGMAcwAgAEMAUgBNACAAYwBvAG4A
bgBlAGMAdABpAG8AbgAuAAAlTQBhAHAAIABpAG4AcAB1AHQAIABjAG8AbAB1AG0AbgBzAC4AABVO
AG8AIABpAG4AcAB1AHQAcwAuAAAZRABZAE4AQQBNAEkAQwBTAC0AQwBSAE0AATVEAHkAbgBhAG0A
aQBjAHMAIABDAFIATQAgAFIAZQBsAGEAdABpAG8AbgBzAGgAaQBwAHMAAC9JAG4AcAB1AHQAIABj
AG8AbAB1AG0AbgAgAG4AbwB0ACAAZgBvAHUAbgBkAC4AADFNAHkALgBSAGUAcwBvAHUAcgBjAGUA
cwAuAE0AeQBSAGUAcwBvAHUAcgBjAGUAcwAAAAAADciPlgylZECLfwNh0UAPaQAIt3pcVhk04IkI
sD9ffxHVCjoDIAABAwAAAQQAABIMBwYVEhgBEgwEAAASCAcGFRIYARIIBAAAEhEHBhUSGAESEQQA
ABIUBwYVEhgBEhQECAASDAQIABIIBAgAEhEECAASFAQgAQIcAyAACAQgABIVAyAADgIeAAcQAQEe
AB4ABzABAQEQHgACEwAEIAATAAcGFRIZARMABCgAEwAIFs9JC7gMNOoIiYRdzYCAzJELIAUBEiEI
AhIlEikEIAAdDgMgAAIEKAAdDgMGEiQDBhIoCSAEAQgOEiUSKQUgAQESHAMGEiEFIAEBEiEEIAAS
MQQoABIxBSABAhAOBCABAQ4EIAARMAUgAQERMAUgARI1DgIGDgMGETADBhI5AwYSPQMGEkECBggD
KAAOBCgAETAEAAAAAAQBAAAAAwYSSQMGEk0EAAASSQQAABJNBQABARJNBAgAEkkECAASTQMGEjgC
BhwEAAASOAQIABI4BSABARFZCAEAAQAAAAAABSACAQ4OGAEACk15VGVtcGxhdGUIMTAuMC4wLjAA
AAYVEhgBEgwGFRIYARIIBhUSGAESEQYVEhgBEhQEBwESDAQHARIIBAcBEhEEBwESFBABAAtNeS5D
b21wdXRlcgAAEwEADk15LkFwcGxpY2F0aW9uAAAMAQAHTXkuVXNlcgAAEwEADk15LldlYlNlcnZp
Y2VzAAAEAAEcHAMHAQIDBwEIBgABEhURdQQHARIVAwcBDgUQAQAeAAQKAR4ABAcBHgAHIAQBDg4O
DmEBADRTeXN0ZW0uV2ViLlNlcnZpY2VzLlByb3RvY29scy5Tb2FwSHR0cENsaWVudFByb3RvY29s
EkNyZWF0ZV9fSW5zdGFuY2VfXxNEaXNwb3NlX19JbnN0YW5jZV9fAAAABhUSGAETAAYVEhkBEwAE
CgETAAUgAQETAAgHAxMAEwATAAQgAQECBQEAAAAABAcBHQ4FIAASgJEFIAASgJUGIAESgJkcBSAA
EoCdBiABEoChHAQHARIxBCAAEiUEIAEcCAQAAQ4cBiABARGAyQUgAgEOHAggARKAzRKAqQYgAQES
gNEIIAESgNUSgNkGAAEBEoC9BSAAEoDlJgcMEoClEoClEoCpEoCtEoCxEoC1EoC5EoC9EYDBEYDB
HRKApREwBCABHBwFIAASgO0FIAASgPEFIAIICAgKBwQSgJkSNRwRMAQAAQIOBSAAEoD1CgcEAgIS
gJkSgL0FIAASgP0FIAASgPkGIAEBEYEBBCABAQgIBwISgPkSgJkEBwERMAYHAh0OHQ4KIAYBCA4O
DggQAgYgARKA+RwFIAASgQUDIAAcEQcGEoD5EjUSgJkSNRI1EoEFDQEACFZhbGlkYXRlAAAFIAEB
HQ4dAQACAAAADUNybUNvbm5lY3Rpb24GQWN0aW9uAAAeAQAZU2VsZWN0IGFjdGlvbiB0byBwZXJm
b3JtLgAADQEACFNldHRpbmdzAAAWAQARQ3JtQ29ubmVjdGlvblR5cGUAACwBACdTZWxlY3QgRHlu
YW1pY3MgQ1JNIENvbm5lY3Rpb24gTWFuYWdlci4AAAUgABKBKQcgAgEOEoEpBgcCEkkSSQQHARJN
CAEAAgAAAAAABAABARwEBwESOAgBAAgAAAAAAB4BAAEAVAIWV3JhcE5vbkV4Y2VwdGlvblRocm93
cwFHAQAaLk5FVEZyYW1ld29yayxWZXJzaW9uPXY0LjABAFQOFEZyYW1ld29ya0Rpc3BsYXlOYW1l
EC5ORVQgRnJhbWV3b3JrIDQMAQAHMS4wLjAuMAAAKQEAJDIxOWFlYzVjLTg5NTQtNDA3YS1iMDQ5
LTE3MDliYWYxMGFiZgAABQEAAQAAHwEAGkNvcHlyaWdodCBAIE1pY3Jvc29mdCAyMDEyAAA8AQA3
U2NyaXB0Q29tcG9uZW50XzllZTVkZDFmNzM0ZjQ1YTY5YTE5ODQ4NWQ4MTk1ODNlLnZicHJvagAA
DgEACU1pY3Jvc29mdAAAqFUAAAAAAAAAAAAAvlUAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAALBV
AAAAAAAAAABfQ29yRGxsTWFpbgBtc2NvcmVlLmRsbAAAAAAA/yUAIEAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAABgAAIAAAAAA
AAAAAAAAAAAAAAEAAQAAADAAAIAAAAAAAAAAAAAAAAAAAAEAAAAAAEgAAABYYAAAaAQAAAAAAAAA
AAAAaAQ0AAAAVgBTAF8AVgBFAFIAUwBJAE8ATgBfAEkATgBGAE8AAAAAAL0E7/4AAAEAAAABAAAA
AAAAAAEAAAAAAD8AAAAAAAAABAAAAAIAAAAAAAAAAAAAAAAAAABEAAAAAQBWAGEAcgBGAGkAbABl
AEkAbgBmAG8AAAAAACQABAAAAFQAcgBhAG4AcwBsAGEAdABpAG8AbgAAAAAAAACwBMgDAAABAFMA
dAByAGkAbgBnAEYAaQBsAGUASQBuAGYAbwAAAKQDAAABADAAMAAwADAAMAA0AGIAMAAAADQACgAB
AEMAbwBtAHAAYQBuAHkATgBhAG0AZQAAAAAATQBpAGMAcgBvAHMAbwBmAHQAAACYADgAAQBGAGkA
bABlAEQAZQBzAGMAcgBpAHAAdABpAG8AbgAAAAAAUwBjAHIAaQBwAHQAQwBvAG0AcABvAG4AZQBu
AHQAXwA5AGUAZQA1AGQAZAAxAGYANwAzADQAZgA0ADUAYQA2ADkAYQAxADkAOAA0ADgANQBkADgA
MQA5ADUAOAAzAGUALgB2AGIAcAByAG8AagAAADAACAABAEYAaQBsAGUAVgBlAHIAcwBpAG8AbgAA
AAAAMQAuADAALgAwAC4AMAAAAJgAPAABAEkAbgB0AGUAcgBuAGEAbABOAGEAbQBlAAAAUwBjAHIA
aQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwA5AGUAZQA1AGQAZAAxAGYANwAzADQAZgA0ADUAYQA2
ADkAYQAxADkAOAA0ADgANQBkADgAMQA5ADUAOAAzAGUALgB2AGIAcAByAG8AagAuAGQAbABsAAAA
XAAbAAEATABlAGcAYQBsAEMAbwBwAHkAcgBpAGcAaAB0AAAAQwBvAHAAeQByAGkAZwBoAHQAIABA
ACAATQBpAGMAcgBvAHMAbwBmAHQAIAAyADAAMQAyAAAAAACgADwAAQBPAHIAaQBnAGkAbgBhAGwA
RgBpAGwAZQBuAGEAbQBlAAAAUwBjAHIAaQBwAHQAQwBvAG0AcABvAG4AZQBuAHQAXwA5AGUAZQA1
AGQAZAAxAGYANwAzADQAZgA0ADUAYQA2ADkAYQAxADkAOAA0ADgANQBkADgAMQA5ADUAOAAzAGUA
LgB2AGIAcAByAG8AagAuAGQAbABsAAAAkAA4AAEAUAByAG8AZAB1AGMAdABOAGEAbQBlAAAAAABT
AGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfADkAZQBlADUAZABkADEAZgA3ADMANABmADQA
NQBhADYAOQBhADEAOQA4ADQAOAA1AGQAOAAxADkANQA4ADMAZQAuAHYAYgBwAHIAbwBqAAAANAAI
AAEAUAByAG8AZAB1AGMAdABWAGUAcgBzAGkAbwBuAAAAMQAuADAALgAwAC4AMAAAADgACAABAEEA
cwBzAGUAbQBiAGwAeQAgAFYAZQByAHMAaQBvAG4AAAAxAC4AMAAuADAALgAwAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAADAAAANA1AAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></arrayElement></arrayElements></property><property id="9" name="UserComponentTypeName" dataType="System.String">CozyRoc.SqlServer.SSIS.ScriptComponentHostPlus, CozyRoc.SSISPlus.2012, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea</property><property id="11" 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_9ee5dd1f734f45a69a198485d819583e</property><property id="12" 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="14" name="CrmConnection" connectionManagerID="{E61DCFD1-42B3-43CF-BE85-E7445D992638}" /></connections><inputs><input id="15" name="Input" hasSideEffects="true"><externalMetadataColumns isUsed="True"><externalMetadataColumn id="20" name="FirstEntityName" dataType="wstr" length="100" /><externalMetadataColumn id="21" name="FirstEntityId" dataType="guid" /><externalMetadataColumn id="22" name="SecondEntityName" dataType="wstr" length="100" /><externalMetadataColumn id="23" name="SecondEntityId" dataType="guid" /></externalMetadataColumns></input></inputs></component>