<component id="2" name="Dynamics CRM User Access" 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[scriptcomponent_58cf5d52e3a14f2bb34ab97759d91902.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_58cf5d52e3a14f2bb34ab97759d91902.vbproj</RootNamespace>
    <AssemblyName>ScriptComponent_58cf5d52e3a14f2bb34ab97759d91902.vbproj</AssemblyName>
    <StartupObject>
    </StartupObject>
    <OptionExplicit>On</OptionExplicit>
    <OptionCompare>Binary</OptionCompare>
    <OptionStrict>Off</OptionStrict>
    <OptionInfer>On</OptionInfer>
    <ProjectGuid>{499D5908-881D-458E-88AC-61A8E19DCD68}</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;vstadebugd3cdbdb3-5984-4a88-b82e-7a9c16858f7b/7dba1f95-b17d-4c01-bbf7-b27790c141cb&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[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_58cf5d52e3a14f2bb34ab97759d91902.vbproj")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("Microsoft")> 
<Assembly: AssemblyProduct("ScriptComponent_58cf5d52e3a14f2bb34ab97759d91902.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("538b967b-95b8-47d1-b69e-26778deda0d7")> 

' 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[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.Web.Services.Protocols
Imports System.Collections
Imports System.Reflection

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
Imports CRM3 = CozyRoc.Dynamics.Crm3.Service


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
<ValidateProperties("Validate")> _
<ColumnMappings()> _
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub Input_ProcessInputRow(ByVal Row As InputBuffer)
        Try
            Dim targetEntity As String = Row.Buffer(m_teIndex).ToString().ToLower()
            Dim targetId As Guid = New Guid(Row.Buffer(m_tiIndex).ToString())
            Dim principalEntity As String = Row.Buffer(m_peIndex).ToString()
            Dim principalId As Guid = New Guid(Row.Buffer(m_piIndex).ToString())
            Dim ar As Integer = Convert.ToInt32(Row.Buffer(m_arIndex))

            If Not m_service2011 Is Nothing Then
                ' CRM 2011

                ' Setup Target.
                Dim target As New CRM2011.EntityReference
                target.LogicalName = targetEntity
                target.Id = targetId

                ' Setup Principal.
                Dim principal As New CRM2011.EntityReference
                principal.LogicalName = principalEntity.ToLower()
                principal.Id = principalId

                ' Revoke previous access first.
                Try
                    Dim raReq As New CRM2011.OrganizationRequest
                    raReq.RequestName = "RevokeAccess"
                    raReq("Target") = target
                    raReq("Revokee") = principal
                    Call m_service2011.Execute(raReq)
                Catch ex As Exception
                    ' Ignore the failure.
                End Try

                If ar <> 0 Then
                    ' Grant new access.
                    Dim gaReq As New CRM2011.OrganizationRequest
                    gaReq.RequestName = "GrantAccess"
                    gaReq("Target") = target

                    Dim pa As New CRM2011.PrincipalAccess
                    pa.Principal = principal
                    pa.AccessMask = CType(ar, CRM2011.AccessRights)
                    gaReq("PrincipalAccess") = pa

                    Call m_service2011.Execute(gaReq)
                End If
            ElseIf Not m_service4 Is Nothing Then
                ' CRM 4.0

                ' Setup Target.
                Dim target As New CRM4.TargetOwnedDynamic
                target.EntityName = targetEntity
                target.EntityId = targetId

                ' Setup Principal.
                Dim principal As New CRM4.SecurityPrincipal()
                principal.Type = CType( _
                    System.Enum.Parse(GetType(CRM4.SecurityPrincipalType), principalEntity),  _
                    CRM4.SecurityPrincipalType)
                principal.PrincipalId = principalId

                ' Revoke previous access first.
                Try
                    Dim raReq As New CRM4.RevokeAccessRequest
                    raReq.Target = target
                    raReq.Revokee = principal
                    Call m_service4.Execute(raReq)
                Catch ex As Exception
                    ' Ignore the failure.
                End Try

                If ar <> 0 Then
                    ' Grant new access.
                    Dim gaReq As New CRM4.GrantAccessRequest
                    gaReq.Target = target

                    Dim pa As New CRM4.PrincipalAccess
                    pa.Principal = principal
                    pa.AccessMask = CType(ar, CRM4.AccessRights)
                    gaReq.PrincipalAccess = pa

                    Call m_service4.Execute(gaReq)
                End If
            Else
                ' CRM 3.0

                ' Setup Target.
                Dim target As New CRM3.TargetOwnedDynamic
                target.EntityName = targetEntity
                target.EntityId = targetId

                ' Setup Principal.
                Dim principal As New CRM3.SecurityPrincipal()
                principal.Type = CType( _
                    System.Enum.Parse(GetType(CRM3.SecurityPrincipalType), principalEntity),  _
                    CRM3.SecurityPrincipalType)
                principal.PrincipalId = principalId

                ' Revoke previous access first.
                Try
                    Dim raReq As New CRM3.RevokeAccessRequest
                    raReq.Target = target
                    raReq.Revokee = principal
                    Call m_service3.Execute(raReq)
                Catch ex As Exception
                    ' Ignore the failure.
                End Try

                If ar <> 0 Then
                    ' Grant new access.
                    Dim gaReq As New CRM3.GrantAccessRequest
                    gaReq.Target = target

                    Dim pa As New CRM3.PrincipalAccess
                    pa.Principal = principal
                    pa.AccessMask = CType(ar, CRM3.AccessRights)
                    gaReq.PrincipalAccess = pa

                    Call m_service3.Execute(gaReq)
                End If
            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)   ' 0 - CRM Service
        m_service2011 = TryCast(service, CRM2011.OrganizationServiceClient)
        If m_service2011 Is Nothing Then
            m_service4 = TryCast(service, CRM4.CrmService)
            If m_service4 Is Nothing Then
                m_service3 = TryCast(service, CRM3.CrmService)
                If m_service3 Is Nothing Then
                    Throw New Exception("Unhandled service object.")
                End If
            End If
        End If

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

        For Each inputCol As IDTSInputColumn100 In input.InputColumnCollection
            Dim extCol As IDTSExternalMetadataColumn100 = input.ExternalMetadataColumnCollection.GetObjectByID( _
                inputCol.ExternalMetadataColumnID)
            Dim index As Integer = Me.HostComponent.BufferManager.FindColumnByLineageID( _
                input.Buffer, _
                inputCol.LineageID)

            Select Case extCol.Name
                Case "TargetEntity"
                    m_teIndex = index
                Case "TargetId"
                    m_tiIndex = index
                Case "PrincipalEntity"
                    m_peIndex = index
                Case "PrincipalId"
                    m_piIndex = index
                Case "AccessRights"
                    m_arIndex = index
                Case Else
                    Throw New Exception("Unhandled column.")
            End Select
        Next
    End Sub ' PreExecute


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

        Call m_connection.Close()
        m_teIndex = -1
        m_tiIndex = -1
        m_peIndex = -1
        m_piIndex = -1
        m_arIndex = -1
    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 < 5 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 target entity column.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "TargetEntity"
        column.DataType = DataType.DT_WSTR
        column.Length = 50

        ' Setup target id column.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "TargetId"
        column.DataType = DataType.DT_GUID

        ' Setup principal entity column.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "PrincipalEntity"
        column.DataType = DataType.DT_WSTR
        column.Length = 50

        ' Setup principal id column.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "PrincipalId"
        column.DataType = DataType.DT_GUID

        ' Setup access rights column.
        column = input.ExternalMetadataColumnCollection.[New]()
        column.Name = "AccessRights"
        column.DataType = DataType.DT_I4
    End Sub ' ReinitializeMetaData


#Region "Properties"
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <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
#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 Grant Access", _
            message, _
            String.Empty, _
            0, _
            cancel)
    End Sub ' FireError_
#End Region ' Internals


#Region "Attributes"
    Private m_crmConnection As String

    Private m_connection As ICrmConnection
    Private m_service2011 As CRM2011.OrganizationServiceClient
    Private m_service4 As CRM4.CrmService
    Private m_service3 As CRM3.CrmService
    Private m_teIndex As Integer
    Private m_tiIndex As Integer
    Private m_peIndex As Integer
    Private m_piIndex As Integer
    Private m_arIndex 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:ProjectId>{C1021B8A-F13F-4AFB-8012-E89C1E84F77A}</msb:ProjectId>
		<msb:NoContent>Reference;Import;Folder</msb:NoContent>
		<msb:Language>msBuild</msb:Language>
		<msb:DisplayName>scriptcomponent_58cf5d52e3a14f2bb34ab97759d91902</msb:DisplayName>
		<msb:CodeName>scriptcomponent_58cf5d52e3a14f2bb34ab97759d91902</msb:CodeName>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:File Include="ComponentWrapper.vb"/>
		<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="My Project\Resources.resx"/>
		<msb:File Include="My Project\Settings.settings"/>
		<msb:Project Include="scriptcomponent_58cf5d52e3a14f2bb34ab97759d91902.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_58cf5d52e3a14f2bb34ab97759d91902.vbproj.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
AAQCFX0TAAAEKgAAGzACAJAAAAATAAARAm8jAAAGKHYAAAosC3JvAQBwc2QAAAp6Am8jAAAKbyQA
AAoWjE0AAAFvJQAACgwIb3cAAAosGQhvZQAACm94AAAKGy8Lcq8BAHBzZAAACnoCbyMAAApvJwAA
CnINAABwbygAAAoCbyMAAAZveQAAChcK3hglKDYAAAoNFgoDCW9fAAAKUSg3AAAK3gAGCwcqARAA
AAAAAAB0dAAYKwAAARMwAgAOAQAAFAAAEQIoegAACgIoIwAACm8kAAAKb3sAAAoWMwty1QEAcHNk
AAAKegIoIwAACm8kAAAKFoxNAAABbyUAAAoLB29oAAAKF298AAAKB29lAAAKb30AAAoHb2gAAApv
fgAACgdvaAAACm9/AAAKCgZyzQAAcG+AAAAKBiCCAAAAb4EAAAoGHzJvggAACgdvaAAACm9/AAAK
CgZy5wAAcG+AAAAKBh9Ib4EAAAoHb2gAAApvfwAACgoGcvkAAHBvgAAACgYgggAAAG+BAAAKBh8y
b4IAAAoHb2gAAApvfwAACgoGchkBAHBvgAAACgYfSG+BAAAKB29oAAAKb38AAAoKBnIxAQBwb4AA
AAoGGW+BAAAKKgAAEzABAAkAAAAVAAARAnsKAAAECgYqAAAAIgIDfQoAAAQqAAAAEzADABMAAAAW
AAARF40gAAABCwcWcusBAHCiBwoGKgATMAcAHQAAABcAABEWCgIoIwAAChZyBQIAcAN+gwAAChYS
AG+EAAAKKgAAAB4CKBcAAAoqEzACAC0AAAAYAAARfhQAAAQtIHI5AgBw0AwAAAIoFAAACm+KAAAK
c4sAAAoLB4AUAAAEfhQAAAQqAAAAEzABAAYAAAAZAAARfhUAAAQqAAAeAoAVAAAEKkJzFwAACigR
AAAKgBcAAAQqAAAAHgIojAAACiobMAEAPwAAABoAABF+FgAABC0yfhcAAAQoEQAACiiNAAAKfhYA
AAQtHHMsAAAGgBYAAATeEH4XAAAEKBEAAAoojgAACtx+FgAABCoAARAAAAIAHQAMKQAQAAAAAbQA
AADOyu++AQAAAJEAAABsU3lzdGVtLlJlc291cmNlcy5SZXNvdXJjZVJlYWRlciwgbXNjb3JsaWIs
IFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1
NjE5MzRlMDg5I1N5c3RlbS5SZXNvdXJjZXMuUnVudGltZVJlc291cmNlU2V0AgAAAAAAAAAAAAAA
UEFEUEFEULQAAABCU0pCAQABAAAAAAAMAAAAdjQuMC4zMDMxOQAAAAAFAGwAAABkDgAAI34AANAO
AACEEwAAI1N0cmluZ3MAAAAAVCIAAGwCAAAjVVMAwCQAABAAAAAjR1VJRAAAANAkAADwBQAAI0Js
b2IAAAAAAAAAAgAAAVcVogkJDwAAAPolMwAWAAABAAAAZwAAAA0AAAAXAAAALQAAABUAAACaAAAA
PgAAABoAAAAHAAAADQAAAA8AAAAJAAAAAQAAAAwAAAABAAAAAgAAAAMAAAACAAAAAABFEwEAAAAA
AAoAqQF/AQoA3QG/AQYA7QHmAQoARQJ/AQYAwwLmAQoARQMbAw4AlwOAAxIA5gPFAxYAFwTFAxIA
JgTFAw4AygSAAxoAhQVdBQ4ATwaAAx4AqQZ8Bh4A7gbRBh4A7gYEBwYAggdxBwYArweaByIAFggB
CCIAYwhNCCIAfAhNCCIAqQiRCAYA0wjACAoAEgnrCAoAKgkTACIAXwlCCQYAlAl0CQYAsgnmAQYA
1gnmAQoA7wkTAAYAMwoUCgYARwrmARIATgrFAwYAWwrmASYAvgqVCiYA7QqVCiYAGAuVCiYANQuV
CiYAeAuVCgYApwvmAR4ArAt8Bh4AvAt8BgYA0AvmAR4A2gt8Bh4A6gvRBh4A/AvRBh4ADwzRBh4A
IwzRBh4A2gvRBh4A6gsEBx4A/AsEBx4ADwwEBx4AIwwEBx4A2gsEByoAaAxKDAYAiQzmAS4Apwvm
AR4AyQx8BgoA5gzrCB4AIg18Bh4AWg3RBgYAcA3mAQoAew3rCB4Aqg3RBh4AzQ3RBh4A1g3RBh4A
Ig3RBh4AWg0EBx4Aqg0EBx4AzQ0EBx4A1g0EBx4AIg0EBzIA/Q3yDSYAKQ6VCiYARw6VCgYAbQ5a
DgYAng7mASYApA6VCiYA9Q6VChYAbQ/FAyYAkQ+VCgoA5Q/rCAYABhDmARoAgRBdBRIAshDFAw4A
+xDZEA4AExHZEA4ALxHZECIAQxFNCAYAahFYEQYAkRGAEQYApBHACAYADRJ0CQYALRJ0CQYAZRJL
EgYAfhJYEQYAmxIUCgYAqRJYEQYAxBJYEQYA3xJYEQYA+BJYEQYAERNYEQYALhNYEQAAAAABAAAA
AAABAAEAAAAAACkANwAFAAEAAQAAAAAAcgA3AAkAAQACAAABEAB9ADcADQABAAMABQEAAIcAAAAN
AAUACAAFAQAAlQAAAA0ABQAPAAEAAACwALwAHQAGABEAAQAAAPQAvAAtAAYAFgABAAAAAgG8AA0A
CAAaAAEAAAAOAbwADQAJABwAAQAAABgBvAAgAAoAHQAAAAAAIwEvAQ0AFAAnAAABEAB0AbwATQAW
ACsAMQAIAiAAMQAxAi0AMQBTAjoAMQB4AkcAIQBUA5AABgACAckABgAOAc0AAQAqBeEAAQAqBeEA
AQA/BgABAQBeBgMBAQDDBgcBAQD5BgsBAQAiBw8BAQAtBxMBAQA3BxMBAQBBBxMBAQBLBxMBAQBV
BxMBEQCSBxoBEQC7Bx4BEQAuCDwBEQA2CEABUCAAAAAABhi5ARMAAQBYIAAAAAAGGLkBEwABAGAg
AAAAABEY9AEXAAEAjCAAAAAAEwj7ARsAAQCkIAAAAAATCCECKAABALwgAAAAABMISgI1AAEA1CAA
AAAAEwhoAkIAAQDsIAAAAABGAq4CYwABAAghAAAAAEYCtwJoAAIAHCEAAAAAgwDIAmwAAgA0IQAA
AABGAtACcQACAEghAAAAABEA2QJ4AAIAZCEAAAAAAQD3AoAAAwCAIQAAAAAGGLkBEwAEAIghAAAA
AAMICwOLAAQAvCEAAAAABhi5ARMABADQIQAAAAAGGLkBrwAEAOAhAAAAAEYKYAS7AAkA9CEAAAAA
Rgp3BLsACQAIIgAAAACGAI8EwAAJACAiAAAAAIYAlwTAAAkAOCIAAAAABhi5ARMACQBYIgAAAABG
At4E0QAJAIgiAAAAAEYD/QTbAA0AnCIAAAAARgMQBdsADgCgIgAAAAAGGLkB5QAPALAiAAAAAAYI
ngXrABAA3CIAAAAABhi5AeUAEADsIgAAAAAGGLkBEwARAPQiAAAAAEYCEAXbABEAxCYAAAAARgK+
BRMAEgCEKAAAAABGAskFEwASALwoAAAAAAYA1QX1ABIAaCkAAAAARgLpBRMAEwCEKgAAAAAGCJ4F
cQATAJwqAAAAAAYI/gX7ABMAqCoAAAAAAQgWBrsAFADIKgAAAAABACwG+wAUAPQqAAAAAAMYuQET
ABUA/CoAAAAAFgjHByIBFQA4KwAAAAAWCNsHJwEVAEwrAAAAABYI5wcsARUAVCsAAAAAERj0ARcA
FgBoKwAAAAAGGLkBEwAWAHArAAAAABYIQwhDARYAAAABALUCAAABAO4CAAABAO4CAAABADQEAAAC
AD4EAAADAEcEAAAEAE8EAAAFAFYEAAABAOsEAAACAPMEAAADAE8EAAAEAFYEAAABAE8EAAABACYF
AAABADQEAAABADQEAAABACYFAAABAN4FAAABABAGAAABADcGAAABAPMHCQC5ARMAoQC5AU0BsQC5
AVwBEQC5ARMAuQC5ARMAJAC5ARMALAC5ARMANAC5ARMAPAC5ARMAJAALA4sALAALA4sANAALA4sA
PAALA4sAwQC5ARMAyQC5ARMA0QC5AfsA2QCjCfYBGQCuAmMAGQC3AmgAKQDECQMCGQDQAnEA6QDg
CRMCGQC5ARMA8QC5ASMCRABUA5AATABDCIsATAAKCqACTAC5ARMA+QC5Aa8COQC5Aa8ACQGPBMAA
CQGXBMAAEQG5Aa8CWQC5ARMAQQDXCr8CGQEEC8UCIQElC8sCKQEuC2gAGQFYC9ICMQElC9gCOQGR
C+sAOQB2DOQCSQAlC+kCAQGBDHEAQQG5AfsAwQGRDO4CSQG5ARMASQGZDPsASQGpDPMCUQG5ARMA
UQGwDPsAUQHADPoCcQDeDAAD2QHyDAkD2QECDRcAYQG5ARMAYQEUDRADYQEvDRcDcQG5ARMAcQE+
DfsAcQFNDfMCaQG5ARMA8QF1DR4D+QGHDe4CaQGRDSUDaQGaDfMCeQG5ARMAeQG2DSwDeQHBDTMD
eQDeDDoDgQG5ARMAgQG2DSwDiQG5ARMAiQEUDTMDiQEvDUMDgQHeDUoDmQG5ARMAmQE+DfsAmQFN
DfMCkQG5ARMAkQGRDVEDkQGaDfMCoQG5ARMAoQG2DVgDoQHBDV8DgQDeDGYDqQG5ARMAqQG2DVgD
sQG5ARMAsQEUDV8DsQEvDW8DqQHeDXYDuQEFDn0DSQIQDnEAWQEdDnEAQQC+BRMAYQB5Ds4DaQCL
DhMAaQCTDukCWQG5AfsAKQHBDtMDcQLbDtkDYQLpDt8DKQEdD+MDWQJCD2gAeQJfD+kDWQB/D/AD
gQKmD/YDKQF2DGgAWQK4D2gAiQLGD/wDUQLcD3EAkQLvDwIEYQL9D8AAmQISEBMAQQDJBRMAaQAa
EBMAAQEgEBsEKQEuEMAAcQI9EGgAOQFHEPsAWQDpBRMAIQE9EGgAeQJfEK8CcQJqEBMAeQJqEBMA
eQJ0ECsEUQJ4EPsAUQKKEDEEUQKXEDgEAQGiEAABGQGoEE0EqQK5ARMAsQK5ARMAuQK5AfsAwQK5
AfsAyQK5AfsAKQBzEaoEiQC5AbAEmQC5ARMA2QKZEc0E2QKfEc0E4QK5ARMA6QK5ATgE8QK5ARMA
+QK5AfsAAQO5AfsACQO5AfsAEQO5AfsAGQO5AfsAIQO5AfsAKQO5AfsAMQO5AfsAOQO5AfsAKQCD
AMQBLgCzBIQFLgCrBLQCLgDLBLQCLgALAX4FLgDTBKQFLgCjBFQFLgC7BKQFLgDDBOEFLgDrALQC
LgCDBNcELgCLBOAELgCTBP8ELgCbBEcFQAArAHsBQAATAFMBQwAbAGIBQwATAFMBSQCDAOIBYwAb
AGIBYwATAFMBaQCDANUBgAArAHsBgwAbAGIBgwBzAHsBgwB7AHsBiQCDALABoAArAHsBowATAFMB
owDDACsCwAArAHsBwwDrALQCwwATAFMB4AArAHsB4wALAbQCAAETAFMBAAErAHsBAwELAbQCIAET
AFMBIAErAHsBKQFLBH0EKQFDBGYEQAErAHsBQAETAFMBYAETAFMBYAErAHsBYwEzBHsBYwErBHsB
YwE7BFgEYwELAbQCaQETAMQEgAErAHsBiQETAMQEoAErAHsBqQF7BHsBwAErAHsBwAETAFMB4AEr
AHsBAAITAFMBAAIrAHsBQAMLAbQCgAMLAbQCnAGhAaYBqwH7Af8BCgIPAh4CHgKmAroCugL7AfsB
3wKDAwkEIAQ9BA8CRgT7AbgEvwTSBAQAAQAGAAUABwAGAAkACAALAAkADAALAA0ADQAAAN0BTwAA
AJYCVAAAAEUCWQAAAKICXgAAAF4DmAAAAKMExAAAALYExAAAALAF8AAAALAFFgEAAF8HxAAAAIIH
MgEAAPkHNwEAAPMHSAECAAQAAwACAAUABQACAAYABwACAAcACQACAA8ACwACABIADQACABMADwAC
ABsAEQACACMAEwABACQAEwACACUAFQACACgAFwACACkAGQABACoAGQACAC0AGwB1AHUAiACAAYcB
jgGVAY0ClAIEgAAAAQAAAAAAAAAAAAAAAAC8AAAABAAAAAAAAAAAAAAAAQAKAAAAAAAKAAAAAAAA
AAAAAAAKABMAAAAAAAEAAAAAAAAAAAAAAJ0AagMAAAAACwAAAAAAAAAAAAAApgCoAwAAAAALAAAA
AAAAAAAAAACmAPYDAAAAAAsAAAAAAAAAAAAAAKYAOgUAAAAAAQAAAAAAAAAAAAAAnQBrBgAAAAAE
AAAAAAAAAAAAAAABAOYBAAAAAAsAAAAAAAAAAAAAAKYAcQoAAAAABAAAAAAAAAAAAAAACgA2DAAA
AAACAAAAAAAAAAAAAAABAAoAAAAAAAQAAAAAAAAAAAAAAAEA8g0AAAAAAAAAAAEAAADBEQAABQAE
AAYABAAAABAADADsAgAAEAAZAOwCAAAAABsA7AItABkCLQCbAgAAAAAAPE1vZHVsZT4AbXNjb3Js
aWIATWljcm9zb2Z0LlZpc3VhbEJhc2ljAE15QXBwbGljYXRpb24AU2NyaXB0Q29tcG9uZW50XzU4
Y2Y1ZDUyZTNhMTRmMmJiMzRhYjk3NzU5ZDkxOTAyLnZicHJvai5NeQBNeUNvbXB1dGVyAE15UHJv
amVjdABNeVdlYlNlcnZpY2VzAFRocmVhZFNhZmVPYmplY3RQcm92aWRlcmAxAElucHV0QnVmZmVy
AFNjcmlwdENvbXBvbmVudF81OGNmNWQ1MmUzYTE0ZjJiYjM0YWI5Nzc1OWQ5MTkwMi52YnByb2oA
VXNlckNvbXBvbmVudABDb25uZWN0aW9ucwBWYXJpYWJsZXMAU2NyaXB0TWFpbgBNeVJlc291cmNl
cwBTY3JpcHRDb21wb25lbnRfNThjZjVkNTJlM2ExNGYyYmIzNGFiOTc3NTlkOTE5MDIudmJwcm9q
Lk15LlJlc291cmNlcwBNeVNldHRpbmdzAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5BcHBsaWNhdGlv
blNlcnZpY2VzAEFwcGxpY2F0aW9uQmFzZQAuY3RvcgBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuRGV2
aWNlcwBDb21wdXRlcgBTeXN0ZW0AT2JqZWN0AC5jY3RvcgBnZXRfQ29tcHV0ZXIAbV9Db21wdXRl
ck9iamVjdFByb3ZpZGVyAGdldF9BcHBsaWNhdGlvbgBtX0FwcE9iamVjdFByb3ZpZGVyAFVzZXIA
Z2V0X1VzZXIAbV9Vc2VyT2JqZWN0UHJvdmlkZXIAZ2V0X1dlYlNlcnZpY2VzAG1fTXlXZWJTZXJ2
aWNlc09iamVjdFByb3ZpZGVyAEFwcGxpY2F0aW9uAFdlYlNlcnZpY2VzAEVxdWFscwBvAEdldEhh
c2hDb2RlAFR5cGUAR2V0VHlwZQBUb1N0cmluZwBDcmVhdGVfX0luc3RhbmNlX18AVABpbnN0YW5j
ZQBEaXNwb3NlX19JbnN0YW5jZV9fAGdldF9HZXRJbnN0YW5jZQBNaWNyb3NvZnQuVmlzdWFsQmFz
aWMuTXlTZXJ2aWNlcy5JbnRlcm5hbABDb250ZXh0VmFsdWVgMQBtX0NvbnRleHQAR2V0SW5zdGFu
Y2UAQ296eVJvYy5TU0lTUGx1cy4yMDEyAENvenlSb2MuU3FsU2VydmVyLlNTSVMAU2NyaXB0QnVm
ZmVyUGx1cwBNaWNyb3NvZnQuU3FsU2VydmVyLlR4U2NyaXB0AE1pY3Jvc29mdC5TcWxTZXJ2ZXIu
RHRzLlBpcGVsaW5lAFNjcmlwdENvbXBvbmVudABNaWNyb3NvZnQuU3FsU2VydmVyLlBpcGVsaW5l
SG9zdABQaXBlbGluZUJ1ZmZlcgBPdXRwdXROYW1lTWFwAENvbXBvbmVudABPYmplY3RJRABJc0lu
cHV0AEJ1ZmZlcgBPdXRwdXRNYXAAZ2V0X1N0YXRpY0lucHV0Q29sdW1ucwBnZXRfU3RhdGljT3V0
cHV0Q29sdW1ucwBOZXh0Um93AEVuZE9mUm93c2V0AFN0YXRpY0lucHV0Q29sdW1ucwBTdGF0aWNP
dXRwdXRDb2x1bW5zAFNjcmlwdENvbXBvbmVudFBsdXMAUHJvY2Vzc0lucHV0AElucHV0SUQASW5w
dXROYW1lAElucHV0X1Byb2Nlc3NJbnB1dABJbnB1dF9Qcm9jZXNzSW5wdXRSb3cAUm93AFBhcmVu
dENvbXBvbmVudABNaWNyb3NvZnQuU3FsU2VydmVyLkRUU1J1bnRpbWVXcmFwAE1pY3Jvc29mdC5T
cWxTZXJ2ZXIuRHRzLlJ1bnRpbWUuV3JhcHBlcgBJRFRTQ29ubmVjdGlvbk1hbmFnZXIxMDAAZ2V0
X0NybUNvbm5lY3Rpb24AQ3JtQ29ubmVjdGlvbgBQcmVFeGVjdXRlAFBvc3RFeGVjdXRlAFZhbGlk
YXRlAGVyck1lc3NhZ2UAUmVpbml0aWFsaXplTWV0YURhdGEAc2V0X0NybUNvbm5lY3Rpb24AdmFs
dWUAZ2V0X0NybUNvbm5lY3Rpb25UeXBlAEZpcmVFcnJvcl8AbWVzc2FnZQBtX2NybUNvbm5lY3Rp
b24ASUNybUNvbm5lY3Rpb24AbV9jb25uZWN0aW9uAENvenlSb2MuRHluYW1pY3MAQ296eVJvYy5E
eW5hbWljcy5Dcm0yMDExLk9yZ2FuaXphdGlvblNlcnZpY2UAT3JnYW5pemF0aW9uU2VydmljZUNs
aWVudABtX3NlcnZpY2UyMDExAENvenlSb2MuRHluYW1pY3MuQ3JtLlNlcnZpY2UAQ3JtU2Vydmlj
ZQBtX3NlcnZpY2U0AENvenlSb2MuRHluYW1pY3MuQ3JtMy5TZXJ2aWNlAG1fc2VydmljZTMAbV90
ZUluZGV4AG1fdGlJbmRleABtX3BlSW5kZXgAbV9waUluZGV4AG1fYXJJbmRleABDcm1Db25uZWN0
aW9uVHlwZQBTeXN0ZW0uUmVzb3VyY2VzAFJlc291cmNlTWFuYWdlcgBfcmVzTWdyAFN5c3RlbS5H
bG9iYWxpemF0aW9uAEN1bHR1cmVJbmZvAF9yZXNDdWx0dXJlAGdldF9SZXNvdXJjZU1hbmFnZXIA
Z2V0X0N1bHR1cmUAc2V0X0N1bHR1cmUAVmFsdWUAQ3VsdHVyZQBTeXN0ZW0uQ29uZmlndXJhdGlv
bgBBcHBsaWNhdGlvblNldHRpbmdzQmFzZQBtX1ZhbHVlAG1fU3luY09iamVjdABnZXRfVmFsdWUA
U3lzdGVtLkNvbXBvbmVudE1vZGVsAEVkaXRvckJyb3dzYWJsZUF0dHJpYnV0ZQBFZGl0b3JCcm93
c2FibGVTdGF0ZQBTeXN0ZW0uQ29kZURvbS5Db21waWxlcgBHZW5lcmF0ZWRDb2RlQXR0cmlidXRl
AFN5c3RlbS5EaWFnbm9zdGljcwBEZWJ1Z2dlckhpZGRlbkF0dHJpYnV0ZQBNaWNyb3NvZnQuVmlz
dWFsQmFzaWMuQ29tcGlsZXJTZXJ2aWNlcwBTdGFuZGFyZE1vZHVsZUF0dHJpYnV0ZQBIaWRlTW9k
dWxlTmFtZUF0dHJpYnV0ZQBTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVzaWduAEhlbHBLZXl3b3Jk
QXR0cmlidXRlAFN5c3RlbS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXMAUnVudGltZUhlbHBlcnMA
R2V0T2JqZWN0VmFsdWUAUnVudGltZVR5cGVIYW5kbGUAR2V0VHlwZUZyb21IYW5kbGUAQWN0aXZh
dG9yAENyZWF0ZUluc3RhbmNlAE15R3JvdXBDb2xsZWN0aW9uQXR0cmlidXRlAHNldF9WYWx1ZQBT
eXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMAQ29tVmlzaWJsZUF0dHJpYnV0ZQBTdHJpbmcA
U2NyaXB0QnVmZmVyAENMU0NvbXBsaWFudEF0dHJpYnV0ZQBNaWNyb3NvZnQuU3FsU2VydmVyLkRU
U1BpcGVsaW5lV3JhcABNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5QaXBlbGluZS5XcmFwcGVyAElE
VFNDb21wb25lbnRNZXRhRGF0YTEwMABnZXRfQ29tcG9uZW50TWV0YURhdGEASURUU0lucHV0Q29s
bGVjdGlvbjEwMABnZXRfSW5wdXRDb2xsZWN0aW9uAElEVFNJbnB1dDEwMABnZXRfSXRlbQBnZXRf
SUQASURUU1J1bnRpbWVDb25uZWN0aW9uQ29sbGVjdGlvbjEwMABnZXRfUnVudGltZUNvbm5lY3Rp
b25Db2xsZWN0aW9uAElEVFNSdW50aW1lQ29ubmVjdGlvbjEwMABnZXRfQ29ubmVjdGlvbk1hbmFn
ZXIAR3VpZABFbnRpdHlSZWZlcmVuY2UAT3JnYW5pemF0aW9uUmVxdWVzdABFeGNlcHRpb24AUHJp
bmNpcGFsQWNjZXNzAFNlY3VyaXR5UHJpbmNpcGFsAFRhcmdldE93bmVkRHluYW1pYwBSZXZva2VB
Y2Nlc3NSZXF1ZXN0AEdyYW50QWNjZXNzUmVxdWVzdABTeXN0ZW0uV2ViLlNlcnZpY2VzAFN5c3Rl
bS5XZWIuU2VydmljZXMuUHJvdG9jb2xzAFNvYXBFeGNlcHRpb24AZ2V0X0J1ZmZlcgBUb0xvd2Vy
AENvbnZlcnQAVG9JbnQzMgBzZXRfTG9naWNhbE5hbWUAc2V0X0lkAHNldF9SZXF1ZXN0TmFtZQBz
ZXRfSXRlbQBPcmdhbml6YXRpb25SZXNwb25zZQBFeGVjdXRlAFByb2plY3REYXRhAFNldFByb2pl
Y3RFcnJvcgBDbGVhclByb2plY3RFcnJvcgBzZXRfUHJpbmNpcGFsAEFjY2Vzc1JpZ2h0cwBzZXRf
QWNjZXNzTWFzawBzZXRfRW50aXR5TmFtZQBzZXRfRW50aXR5SWQAU2VjdXJpdHlQcmluY2lwYWxU
eXBlAEVudW0AUGFyc2UAQ29udmVyc2lvbnMAVG9JbnRlZ2VyAHNldF9UeXBlAHNldF9QcmluY2lw
YWxJZABUYXJnZXRPd25lZABzZXRfVGFyZ2V0AHNldF9SZXZva2VlAFJlc3BvbnNlAFJlcXVlc3QA
c2V0X1ByaW5jaXBhbEFjY2VzcwBTeXN0ZW0uWG1sAFhtbE5vZGUAZ2V0X0RldGFpbABnZXRfSW5u
ZXJYbWwAZ2V0X01lc3NhZ2UASURUU0V4dGVybmFsTWV0YWRhdGFDb2x1bW4xMDAASURUU0lucHV0
Q29sdW1uMTAwAFN5c3RlbS5Db2xsZWN0aW9ucwBJRW51bWVyYXRvcgBBY3F1aXJlQ29ubmVjdGlv
bgBDb25uZWN0AEdldFNlcnZpY2UASW50MzIASURUU0lucHV0Q29sdW1uQ29sbGVjdGlvbjEwMABn
ZXRfSW5wdXRDb2x1bW5Db2xsZWN0aW9uAEdldEVudW1lcmF0b3IAZ2V0X0N1cnJlbnQASURUU0V4
dGVybmFsTWV0YWRhdGFDb2x1bW5Db2xsZWN0aW9uMTAwAGdldF9FeHRlcm5hbE1ldGFkYXRhQ29s
dW1uQ29sbGVjdGlvbgBnZXRfRXh0ZXJuYWxNZXRhZGF0YUNvbHVtbklEAEdldE9iamVjdEJ5SUQA
UGlwZWxpbmVDb21wb25lbnQAZ2V0X0hvc3RDb21wb25lbnQASURUU0J1ZmZlck1hbmFnZXIxMDAA
Z2V0X0J1ZmZlck1hbmFnZXIAZ2V0X0xpbmVhZ2VJRABGaW5kQ29sdW1uQnlMaW5lYWdlSUQAZ2V0
X05hbWUAT3BlcmF0b3JzAENvbXBhcmVTdHJpbmcATW92ZU5leHQASURpc3Bvc2FibGUARGlzcG9z
ZQBDbG9zZQBJc051bGxPckVtcHR5AGdldF9Jc0F0dGFjaGVkAGdldF9Db3VudABzZXRfQ29ubmVj
dGlvbk1hbmFnZXJJRABzZXRfSXNVc2VkAFJlbW92ZUFsbABOZXcAc2V0X05hbWUARGF0YVR5cGUA
c2V0X0RhdGFUeXBlAHNldF9MZW5ndGgARW1wdHkARmlyZUVycm9yAFNTSVNTY3JpcHRDb21wb25l
bnRFbnRyeVBvaW50QXR0cmlidXRlAENvenlSb2MuU3FsU2VydmVyLlNTSVMuQXR0cmlidXRlcwBD
b2x1bW5NYXBwaW5nc0F0dHJpYnV0ZQBWYWxpZGF0ZVByb3BlcnRpZXNBdHRyaWJ1dGUAQ29ubmVj
dGlvbkF0dHJpYnV0ZQBEZXNjcmlwdGlvbkF0dHJpYnV0ZQBTeXN0ZW0uUmVmbGVjdGlvbgBBc3Nl
bWJseQBnZXRfQXNzZW1ibHkAU3lzdGVtLlRocmVhZGluZwBNb25pdG9yAEVudGVyAEV4aXQARGVi
dWdnZXJOb25Vc2VyQ29kZUF0dHJpYnV0ZQBTY3JpcHRDb21wb25lbnRfNThjZjVkNTJlM2ExNGYy
YmIzNGFiOTc3NTlkOTE5MDIudmJwcm9qLlJlc291cmNlcy5yZXNvdXJjZXMAQ29tcGlsYXRpb25S
ZWxheGF0aW9uc0F0dHJpYnV0ZQBSdW50aW1lQ29tcGF0aWJpbGl0eUF0dHJpYnV0ZQBTeXN0ZW0u
UnVudGltZS5WZXJzaW9uaW5nAFRhcmdldEZyYW1ld29ya0F0dHJpYnV0ZQBBc3NlbWJseUZpbGVW
ZXJzaW9uQXR0cmlidXRlAEd1aWRBdHRyaWJ1dGUAQXNzZW1ibHlUcmFkZW1hcmtBdHRyaWJ1dGUA
QXNzZW1ibHlDb3B5cmlnaHRBdHRyaWJ1dGUAQXNzZW1ibHlQcm9kdWN0QXR0cmlidXRlAEFzc2Vt
Ymx5Q29tcGFueUF0dHJpYnV0ZQBBc3NlbWJseURlc2NyaXB0aW9uQXR0cmlidXRlAEFzc2VtYmx5
VGl0bGVBdHRyaWJ1dGUAU2NyaXB0Q29tcG9uZW50XzU4Y2Y1ZDUyZTNhMTRmMmJiMzRhYjk3NzU5
ZDkxOTAyLnZicHJvai5kbGwAAAAAAAtJAG4AcAB1AHQAABtDAHIAbQBDAG8AbgBuAGUAYwB0AGkA
bwBuAAAZUgBlAHYAbwBrAGUAQQBjAGMAZQBzAHMAAA1UAGEAcgBnAGUAdAAAD1IAZQB2AG8AawBl
AGUAABdHAHIAYQBuAHQAQQBjAGMAZQBzAHMAAB9QAHIAaQBuAGMAaQBwAGEAbABBAGMAYwBlAHMA
cwAAM1UAbgBoAGEAbgBkAGwAZQBkACAAcwBlAHIAdgBpAGMAZQAgAG8AYgBqAGUAYwB0AC4AABlU
AGEAcgBnAGUAdABFAG4AdABpAHQAeQAAEVQAYQByAGcAZQB0AEkAZAAAH1AAcgBpAG4AYwBpAHAA
YQBsAEUAbgB0AGkAdAB5AAAXUAByAGkAbgBjAGkAcABhAGwASQBkAAAZQQBjAGMAZQBzAHMAUgBp
AGcAaAB0AHMAACNVAG4AaABhAG4AZABsAGUAZAAgAGMAbwBsAHUAbQBuAC4AAD9TAGUAbABlAGMA
dAAgAEQAeQBuAGEAbQBpAGMAcwAgAEMAUgBNACAAQwBvAG4AbgBlAGMAdABpAG8AbgAuAAAlTQBh
AHAAIABpAG4AcAB1AHQAIABjAG8AbAB1AG0AbgBzAC4AABVOAG8AIABpAG4AcAB1AHQAcwAuAAAZ
RABZAE4AQQBNAEkAQwBTAC0AQwBSAE0AATNEAHkAbgBhAG0AaQBjAHMAIABDAFIATQAgAEcAcgBh
AG4AdAAgAEEAYwBjAGUAcwBzAAAxTQB5AC4AUgBlAHMAbwB1AHIAYwBlAHMALgBNAHkAUgBlAHMA
bwB1AHIAYwBlAHMAAACsUbKI2WihQqRmizXGP9o4AAi3elxWGTTgiQiwP19/EdUKOgMgAAEDAAAB
BAAAEgwHBhUSGAESDAQAABIIBwYVEhgBEggEAAASEQcGFRIYARIRBAAAEhQHBhUSGAESFAQIABIM
BAgAEggECAASEQQIABIUBCABAhwDIAAIBCAAEhUDIAAOAh4ABxABAR4AHgAHMAEBARAeAAITAAQg
ABMABwYVEhkBEwAEKAATAAgWz0kLuAw06giJhF3NgIDMkQsgBQESIQgCEiUSKQQgAB0OAyAAAgQo
AB0OAwYSJAMGEigJIAQBCA4SJRIpBSABARIcAwYSIQUgAQESIQQgABIxBCgAEjEFIAECEA4EIAEB
DgIGDgMGEjUDBhI5AwYSPQMGEkECBggDKAAOAwYSRQMGEkkEAAASRQQAABJJBQABARJJBAgAEkUE
CAASSQMGEjQCBhwEAAASNAQIABI0BSABARFVCAEAAQAAAAAABSACAQ4OGAEACk15VGVtcGxhdGUI
MTAuMC4wLjAAAAQBAAAABhUSGAESDAYVEhgBEggGFRIYARIRBhUSGAESFAQHARIMBAcBEggEBwES
EQQHARIUEwEADk15LldlYlNlcnZpY2VzAAAQAQALTXkuQ29tcHV0ZXIAAAwBAAdNeS5Vc2VyAAAT
AQAOTXkuQXBwbGljYXRpb24AAAQAARwcAwcBAgMHAQgGAAESFRFxBAcBEhUDBwEOBRABAB4ABAoB
HgAEBwEeAAcgBAEODg4OYQEANFN5c3RlbS5XZWIuU2VydmljZXMuUHJvdG9jb2xzLlNvYXBIdHRw
Q2xpZW50UHJvdG9jb2wSQ3JlYXRlX19JbnN0YW5jZV9fE0Rpc3Bvc2VfX0luc3RhbmNlX18AAAAG
FRIYARMABhUSGQETAAQKARMABSABARMACAcDEwATABMABCABAQIFAQAAAAAEBwEdDgUgABKAjQUg
ABKAkQYgARKAlRwFIAASgJkGIAESgJ0cBAcBEjEEIAASJQQgARwIBAABCBwGIAEBEYDlBSACAQ4c
CCABEoDpEoCpBgABARKArQYgAQESgKUGIAEBEYDxBgACHBIVDgYgAQERgPUGIAEBEoEBBiABARKA
tQggARKBBRKBCQYgAQERgQ0GIAEBEoDFBiABARGBEQYgAQESgRUGIAEBEoDJCCABEoEZEoEdBiAB
ARGBIQYgAQESgNkFIAASgSVKBxoIDhGAoQ4RgKESgKUSgKUSgKkSgK0SgKkSgLESgLUSgLkSgL0S
gK0SgMESgMUSgMkSgM0SgNESgK0SgNUSgNkSgN0SgK0RgKEEIAEcHAUgABKBOQUgABKBMQMgABwF
IAASgT0GIAESgSkIBSAAEoFBBSAAEoFFBSACCAgIBgADCA4OAhEHBxKAlRwSgSkIEoEtEoExDgQA
AQIOCgcEAgISgJUSgK0FIAASgSkGIAEBEYFRBCABAQgIBwISgSkSgJUGBwIdDh0OCiAGAQgODg4I
EAINAQAIVmFsaWRhdGUAABYBABFDcm1Db25uZWN0aW9uVHlwZQAALAEAJ1NlbGVjdCBEeW5hbWlj
cyBDUk0gQ29ubmVjdGlvbiBNYW5hZ2VyLgAABSAAEoFpByACAQ4SgWkGBwISRRJFBAcBEkkIAQAC
AAAAAAAEAAEBHAQHARI0CAEACAAAAAAAHgEAAQBUAhZXcmFwTm9uRXhjZXB0aW9uVGhyb3dzAUcB
ABouTkVURnJhbWV3b3JrLFZlcnNpb249djQuMAEAVA4URnJhbWV3b3JrRGlzcGxheU5hbWUQLk5F
VCBGcmFtZXdvcmsgNAwBAAcxLjAuMC4wAAApAQAkNTM4Yjk2N2ItOTViOC00N2QxLWI2OWUtMjY3
NzhkZWRhMGQ3AAAFAQABAAAfAQAaQ29weXJpZ2h0IEAgTWljcm9zb2Z0IDIwMTIAADwBADdTY3Jp
cHRDb21wb25lbnRfNThjZjVkNTJlM2ExNGYyYmIzNGFiOTc3NTlkOTE5MDIudmJwcm9qAAAOAQAJ
TWljcm9zb2Z0AABsVwAAAAAAAAAAAACOVwAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgFcAAAAA
AAAAAAAAAAAAAAAAAAAAAF9Db3JEbGxNYWluAG1zY29yZWUuZGxsAAAAAAD/JQAgQAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAQAAAAGAAAgAAAAAAA
AAAAAAAAAAAAAQABAAAAMAAAgAAAAAAAAAAAAAAAAAAAAQAAAAAASAAAAFhgAABoBAAAAAAAAAAA
AABoBDQAAABWAFMAXwBWAEUAUgBTAEkATwBOAF8ASQBOAEYATwAAAAAAvQTv/gAAAQAAAAEAAAAA
AAAAAQAAAAAAPwAAAAAAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAEQAAAABAFYAYQByAEYAaQBsAGUA
SQBuAGYAbwAAAAAAJAAEAAAAVAByAGEAbgBzAGwAYQB0AGkAbwBuAAAAAAAAALAEyAMAAAEAUwB0
AHIAaQBuAGcARgBpAGwAZQBJAG4AZgBvAAAApAMAAAEAMAAwADAAMAAwADQAYgAwAAAANAAKAAEA
QwBvAG0AcABhAG4AeQBOAGEAbQBlAAAAAABNAGkAYwByAG8AcwBvAGYAdAAAAJgAOAABAEYAaQBs
AGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4A
dABfADUAOABjAGYANQBkADUAMgBlADMAYQAxADQAZgAyAGIAYgAzADQAYQBiADkANwA3ADUAOQBk
ADkAMQA5ADAAMgAuAHYAYgBwAHIAbwBqAAAAMAAIAAEARgBpAGwAZQBWAGUAcgBzAGkAbwBuAAAA
AAAxAC4AMAAuADAALgAwAAAAmAA8AAEASQBuAHQAZQByAG4AYQBsAE4AYQBtAGUAAABTAGMAcgBp
AHAAdABDAG8AbQBwAG8AbgBlAG4AdABfADUAOABjAGYANQBkADUAMgBlADMAYQAxADQAZgAyAGIA
YgAzADQAYQBiADkANwA3ADUAOQBkADkAMQA5ADAAMgAuAHYAYgBwAHIAbwBqAC4AZABsAGwAAABc
ABsAAQBMAGUAZwBhAGwAQwBvAHAAeQByAGkAZwBoAHQAAABDAG8AcAB5AHIAaQBnAGgAdAAgAEAA
IABNAGkAYwByAG8AcwBvAGYAdAAgADIAMAAxADIAAAAAAKAAPAABAE8AcgBpAGcAaQBuAGEAbABG
AGkAbABlAG4AYQBtAGUAAABTAGMAcgBpAHAAdABDAG8AbQBwAG8AbgBlAG4AdABfADUAOABjAGYA
NQBkADUAMgBlADMAYQAxADQAZgAyAGIAYgAzADQAYQBiADkANwA3ADUAOQBkADkAMQA5ADAAMgAu
AHYAYgBwAHIAbwBqAC4AZABsAGwAAACQADgAAQBQAHIAbwBkAHUAYwB0AE4AYQBtAGUAAAAAAFMA
YwByAGkAcAB0AEMAbwBtAHAAbwBuAGUAbgB0AF8ANQA4AGMAZgA1AGQANQAyAGUAMwBhADEANABm
ADIAYgBiADMANABhAGIAOQA3ADcANQA5AGQAOQAxADkAMAAyAC4AdgBiAHAAcgBvAGoAAAA0AAgA
AQBQAHIAbwBkAHUAYwB0AFYAZQByAHMAaQBvAG4AAAAxAC4AMAAuADAALgAwAAAAOAAIAAEAQQBz
AHMAZQBtAGIAbAB5ACAAVgBlAHIAcwBpAG8AbgAAADEALgAwAC4AMAAuADAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAMAAAAoDcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA]]></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_58cf5d52e3a14f2bb34ab97759d91902</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="13" name="CrmConnection" connectionManagerID="{EB1EB761-DB8F-4F1C-96A3-1EF8BB8AE919}" /></connections><inputs><input id="14" name="Input" hasSideEffects="true"><externalMetadataColumns isUsed="True"><externalMetadataColumn id="20" name="TargetEntity" dataType="wstr" length="50" /><externalMetadataColumn id="21" name="TargetId" dataType="guid" /><externalMetadataColumn id="22" name="PrincipalEntity" dataType="wstr" length="50" /><externalMetadataColumn id="23" name="PrincipalId" dataType="guid" /><externalMetadataColumn id="24" name="AccessRights" dataType="i4" /></externalMetadataColumns></input></inputs></component>