<component id="2" name="Dynamics CRM Entity Changes Source" componentClassID="Microsoft.ManagedComponentHost" description="Executes a custom script" localeId="1033" version="10" contactInfo="Includes and runs custom script code. For example, apply a business rule that limits the range of valid values in an &quot;income&quot; column or add values in two columns and calculate the average of the sum.;Microsoft Corporation; Microsoft SQL Server; Microsoft Corporation; All Rights Reserved; http://www.microsoft.com/sql/support;7"><properties><property id="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[SC_8b85598a4c8e4d4a8c2b07d73b45f02a.vbproj]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <ProjectTypeGuids>{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{32C96EF5-35B9-40A5-8620-278ED34A5A5D}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>My Project</AppDesignerFolder>
    <RootNamespace>SC_8b85598a4c8e4d4a8c2b07d73b45f02a</RootNamespace>
    <AssemblyName>SC_8b85598a4c8e4d4a8c2b07d73b45f02a</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>.\bin\Debug\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DebugSymbols>false</DebugSymbols>
    <Optimize>true</Optimize>
    <OutputPath>.\bin\Release\</OutputPath>
    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <!-- This sections specifies references for the project. -->
  <ItemGroup>
    <Reference Include="CozyRoc.Dynamics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\Microsoft SQL Server\110\SDK\Assemblies\CozyRoc.Dynamics.dll</HintPath>
    </Reference>
    <Reference Include="CozyRoc.SSISPlus.2016, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16cf490bb80c34ea" />
    <Reference Include="Microsoft.SqlServer.ManagedDTS, Version=13.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SqlServer.ManagedDTS\v4.0_13.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.ManagedDTS.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="Microsoft.SqlServer.TxScript, Version=13.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSRuntimeWrap, Version=13.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.DTSPipelineWrap, Version=13.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Reference Include="Microsoft.SqlServer.PipelineHost, Version=13.0.0.0, Culture=Neutral, PublicKeyToken=89845dcd8080cc91" />
    <Compile Include="main.vb" />
    <Compile Include="BufferWrapper.vb" />
    <Compile Include="ComponentWrapper.vb" />
  </ItemGroup>
  <!-- Visual Basic supports Importing namespaces (equivalent to using statements in C#).-->
  <ItemGroup>
    <Import Include="Microsoft.VisualBasic" />
    <Import Include="System" />
    <Import Include="System.Collections" />
    <Import Include="System.Data" />
    <Import Include="System.Diagnostics" />
    <Import Include="System.Windows.Forms" />
  </ItemGroup>
  <ItemGroup>
    <AppDesigner Include="My Project\" />
    <Compile Include="My Project\AssemblyInfo.vb">
      <SubType>Code</SubType>
    </Compile>
    <EmbeddedResource Include="My Project\Resources.resx">
      <Generator>VbMyResourcesResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.vb</LastGenOutput>
      <CustomToolNamespace>My.Resources</CustomToolNamespace>
    </EmbeddedResource>
    <Compile Include="My Project\Resources.Designer.vb">
      <AutoGen>True</AutoGen>
      <DesignTime>True</DesignTime>
      <DependentUpon>Resources.resx</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <None Include="My Project\Settings.settings">
      <Generator>SettingsSingleFileGenerator</Generator>
      <LastGenOutput>Settings.Designer.vb</LastGenOutput>
    </None>
    <Compile Include="My Project\Settings.Designer.vb">
      <AutoGen>True</AutoGen>
      <DependentUpon>Settings.settings</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
  </ItemGroup>
  <!-- Include the build rules for a VB project.-->
  <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
  <!-- This section defines VSTA properties that describe the host-changable project properties. -->
  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{30D016F9-3734-4E33-A861-5E7D899E18F3}">
        <ProjectProperties HostName="VSTAHostName" HostPackage="{B3A685AA-7EAF-4BC6-9940-57959FA5AC07}" ApplicationType="usd" Language="vb" TemplatesPath="" DebugInfoExeName="devenv.exe" DebugInfoCommandLine="/vstaHostDebugUri:&quot;vstadebug8dcfb6ee-2146-4adc-80aa-97179b3100c7/38aa57ba-b0b7-4674-a056-0e4ef318663c&quot;" />
        <Host Name="SSIS_SC110" />
        <ProjectClient>
          <HostIdentifier>SSIS_SC130</HostIdentifier>
        </ProjectClient>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
</Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[ComponentWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services component wrapper
' This module defines the base class for your component
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class UserComponent
    Inherits ScriptComponentPlus

    Public Connections As New Connections(Me)
    Public Variables As New Variables(Me)

    Public OutputBuffer As OutputBuffer

    Public Overridable Sub FinishOutputs()
    End Sub

    Private Sub MarkOutputsFinished()

        If OutputBuffer IsNot Nothing Then
            OutputBuffer.SetEndOfRowset
            OutputBuffer = Nothing
        End If

    End Sub

    Public Overrides Sub PrimeOutput(ByVal Outputs As Integer, ByVal OutputIDs() As Integer, ByVal Buffers() As PipelineBuffer, ByVal OutputMap As OutputNameMap)

        For I As Integer = 0 To Outputs - 1
            If OutputIDs(I) = GetOutputID(OutputMap, "Output") Then
                OutputBuffer = New OutputBuffer(Me, OutputIDs(I), False, Buffers(I), OutputMap)
            End If
        Next

        CreateNewOutputRows()

        FinishOutputs()
        MarkOutputsFinished()

    End Sub

    Public Overridable Sub CreateNewOutputRows()
    End Sub

End Class

Public Class Connections

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

    Public ReadOnly Property CrmConnection() As IDTSConnectionManager100
        Get
            Return ParentComponent.ComponentMetaData.RuntimeConnectionCollection("CrmConnection").ConnectionManager
        End Get
    End Property

End Class

Public Class Variables

    Dim ParentComponent As ScriptComponent

    <CLSCompliant(False)> _
    Public Sub New(ByVal Component As ScriptComponent)
        ParentComponent = Component
    End Sub

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[main.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' COZYROC SQL Server Integration Services user script component
'
' Copyright (c) 2006-2016 COZYROC LLC
' 
' Permission is hereby granted, free of charge, to any person
' obtaining a copy of this software and associated documentation
' files (the "Software"), to deal in the Software without
' restriction, including without limitation the rights to use,
' copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the
' Software is furnished to do so, subject to the following
' conditions:
' 
' The above copyright notice and this permission notice shall be
' included in all copies or substantial portions of the Software.
' 
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
' EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
' OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
' NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
' HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
' WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
' FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
' OTHER DEALINGS IN THE SOFTWARE.

Imports System
Imports System.ComponentModel
Imports System.Collections
Imports System.Collections.Generic

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


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


    Public Const ListDelimiter As String = "," + vbLf


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Overrides Sub CreateNewOutputRows()
        Dim connection As IConnection = CType( _
            Me.Connections.CrmConnection.AcquireConnection(Nothing),  _
            IConnection)

        Dim colsIdx As Hashtable = GetColumnsIdx_()

        Try
            Call connection.Connect()

            ' 0 - CRM Service
            Dim service As OrganizationServiceClient = CType( _
                connection.GetService(0),  _
                OrganizationServiceClient)

            ' Setup request.
            Dim req As New OrganizationRequest()
            req.RequestName = "RetrieveEntityChanges"
            req("EntityName") = Me.Entity
            req("Columns") = New ColumnSet() With
            {
                .Columns = Me.Attributes.Split( _
                    New String() {ListDelimiter}, _
                    StringSplitOptions.None)
            }
            Dim pi As PagingInfo = New PagingInfo() With
            {
                .Count = Me.BatchSize,
                .PageNumber = 1
            }
            req("PageInfo") = pi
            req("DataVersion") = Convert.ToString(GetVariable_(Me.TokenVariable))

            While True
                Dim res As OrganizationResponse = service.Execute(req)
                Dim entityChanges As BusinessEntityChanges = CType( _
                    res("EntityChanges"),  _
                    BusinessEntityChanges)

                ' Process entity changes.
                For Each change As Object In entityChanges.Changes
                    Call MyBase.OutputBuffer.AddRow()

                    Dim newUpdated As NewOrUpdatedItem = TryCast(change, NewOrUpdatedItem)
                    Dim deleted As RemovedOrDeletedItem = TryCast(change, RemovedOrDeletedItem)

                    If Not newUpdated Is Nothing Then
                        ' New or updated.
                        MyBase.OutputBuffer.Buffer(CType(colsIdx("_Type"), Integer)) = "updated"
                        MyBase.OutputBuffer.Buffer(CType(colsIdx("Id"), Integer)) = newUpdated.NewOrUpdatedEntity.Id

                        For Each pair As KeyValuePair(Of String, Object) In newUpdated.NewOrUpdatedEntity.Attributes
                            If Not colsIdx.Contains(pair.Key) Then
                                Continue For
                            End If

                            Try
                                MyBase.OutputBuffer.Buffer(CType(colsIdx(pair.Key), Integer)) = pair.Value
                            Catch ex As Exception
                                Call FireError_(String.Format( _
                                    "Failed to process column '{0}': {1}", _
                                    pair.Key, _
                                    pair.Value))
                            End Try
                        Next
                    ElseIf Not deleted Is Nothing Then
                        ' Deleted.
                        MyBase.OutputBuffer.Buffer(CType(colsIdx("_Type"), Integer)) = "deleted"
                        MyBase.OutputBuffer.Buffer(CType(colsIdx("Id"), Integer)) = deleted.RemovedItem.Id
                    End If
                Next

                If entityChanges.MoreRecords Then
                    ' Setup next PageInfo.
                    pi.PageNumber += 1
                    pi.PagingCookie = entityChanges.PagingCookie
                Else
                    ' Reached end. Store token and exit loop.
                    SetVariable_(Me.TokenVariable, entityChanges.DataToken)
                    Exit While
                End If
            End While

            Call MyBase.OutputBuffer.SetEndOfRowset()
        Catch ex As Exception
            Call FireError_(ex.Message)
        Finally
            Call connection.Close()
        End Try
    End Sub ' CreateNewOutputRows


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    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

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

            If String.IsNullOrEmpty(Me.Attributes) Then
                Throw New Exception("Select attribute(s).")
            End If

            If String.IsNullOrEmpty(Me.TokenVariable) Then
                Throw New Exception("Select token variable.")
            End If

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

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

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

        Validate = result
    End Function    ' Validate


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of entities in the currently selected Dynamics CRM connection.
    Public Function GetEntityList() As String()
        Dim result() As String

        Dim connection As IConnection = CType( _
            Me.DesignConnections(Me.CrmConnection).AcquireConnection(Nothing),  _
            IConnection)
        Call connection.Connect()

        Try
            result = connection.GetEntityList(2)  ' 2 - Read
            Call Array.Sort(result)
        Finally
            Call connection.Close()
        End Try

        GetEntityList = result
    End Function    ' GetEntityList


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns list of attributes in the currently selected entity.
    Public Function GetAttributeList() As String()
        Dim result As ArrayList = New ArrayList()

        Dim attrList() As IAttribute = GetAttributes_()
        For Each attr As IAttribute In attrList
            Call result.Add(attr.Name)
        Next

        Call result.Sort()

        GetAttributeList = CType(result.ToArray(GetType(String)), String())
    End Function    ' GetAttributeList


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetAttributes_() As IAttribute()
        If Not m_entityAttributes Is Nothing Then
            Return m_entityAttributes
        End If

        ' Cache entity attributes.
        Dim connection As IConnection = CType(
            Me.DesignConnections(Me.CrmConnection).AcquireConnection(Nothing),
            IConnection)
        Call connection.Connect()

        Try
            Dim entity As IEntity = connection.GetEntity(Me.Entity)
            m_entityAttributes = entity.GetAttributes()
        Finally
            Call connection.Close()
        End Try

        GetAttributes_ = m_entityAttributes
    End Function    ' GetAttributes_


#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 Dynamics CRM entity.")> _
    <List("GetEntityList")> _
    <RefreshProperties(RefreshProperties.All)> _
    Public Property Entity() As String
        Get
            Entity = m_entity
        End Get
        Set(ByVal value As String)
            If m_entity <> value Then
                If Not String.IsNullOrEmpty(m_entity) Then
                    ' Reset selected attributes.
                    Me.Attributes = String.Empty
                End If

                m_entity = value
            End If
        End Set
    End Property    ' Entity


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select one or more attributes to retrieve.")> _
    <List("GetAttributeList", True, False)> _
    Public Property Attributes() As String
        Get
            Attributes = m_attributes
        End Get
        Set(ByVal value As String)
            If m_attributes <> value Then
                If Not String.IsNullOrEmpty(m_attributes) Then
                    ' Force output columns to be reloaded.
                    If Me.ComponentMetaData.OutputCollection.Count > 0 Then
                        Dim output As IDTSOutput100 = Me.ComponentMetaData.OutputCollection(0)
                        Call output.OutputColumnCollection.RemoveAll()
                    End If
                End If

                m_attributes = value
            End If
        End Set
    End Property    ' Attributes


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


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    <Category("Settings")> _
    <Description("Select variable containing token.")> _
    <Variable()> _
    Public Property TokenVariable() As String
        Get
            TokenVariable = m_tokenVariable
        End Get
        Set(value As String)
            m_tokenVariable = value
        End Set
    End Property    ' TokenVariable
#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 Entity Changes Source", _
            message, _
            String.Empty, _
            0, _
            cancel)
    End Sub ' FireError_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function GetVariable_(ByVal varName As String) As Object
        Dim result As Object
        Dim vars As IDTSVariables100 = Nothing

        Call Me.VariableDispenser.LockOneForRead(varName, vars)
        Try
            result = vars(varName).Value
        Finally
            Call vars.Unlock()
        End Try

        GetVariable_ = result
    End Function    ' GetVariable_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub SetVariable_(ByVal varName As String, ByVal value As Object)
        Dim vars As IDTSVariables100 = Nothing

        Call Me.VariableDispenser.LockOneForWrite(varName, vars)
        Try
            vars(varName).Value = value
        Finally
            Call vars.Unlock()
        End Try
    End Sub ' SetVariable_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub SetupOutputColumns_()
        ' Get entity attributes.
        Dim entityAttrList() As IAttribute = GetAttributes_()

        Dim attrList() As String = Me.Attributes.Split( _
            New String() {ListDelimiter}, _
            StringSplitOptions.None)

        Dim output As IDTSOutput100 = Me.ComponentMetaData.OutputCollection(0)
        Dim column As IDTSOutputColumn100 = Nothing

        ' Setup entity change type column.
        column = output.OutputColumnCollection.[New]()
        column.Name = "_Type"
        Call column.SetDataTypeProperties(DataType.DT_WSTR, 10, 0, 0, 0)

        ' Setup entity identifier column.
        column = output.OutputColumnCollection.[New]()
        column.Name = "Id"
        Call column.SetDataTypeProperties(DataType.DT_GUID, 0, 0, 0, 0)

        For Each value As String In attrList
            ' Find CRM attribute.
            Dim attr As IAttribute = FindAttribute_(entityAttrList, value)

            ' Setup output column.
            column = output.OutputColumnCollection.[New]()
            column.Name = attr.Name
            Call column.SetDataTypeProperties( _
                CType(attr.AttributeType, DataType), _
                attr.Length, _
                attr.Precision, _
                attr.Scale, _
                0)
        Next
    End Sub ' SetupOutputColumns_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Function FindAttribute_( _
        ByVal attrList() As IAttribute, _
        ByVal name As String) As IAttribute

        Dim result As IAttribute = Nothing

        For Each attr As IAttribute In attrList
            If attr.Name.Equals(name, StringComparison.OrdinalIgnoreCase) Then
                ' Found.
                result = attr
                Exit For
            End If
        Next

        If result Is Nothing Then
            Throw New Exception(String.Format("'{0}' attribute not found.", name))
        End If

        FindAttribute_ = result
    End Function    ' FindAttribute_


    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Returns columns index.
    Private Function GetColumnsIdx_() As Hashtable
        Dim result As Hashtable = New Hashtable()

        Dim output As IDTSOutput100 = MyBase.ComponentMetaData.OutputCollection(0)
        Dim colsCount As Integer = output.OutputColumnCollection.Count
        For colIndex As Integer = 0 To colsCount - 1
            Dim column As IDTSOutputColumn100 = output.OutputColumnCollection(colIndex)
            result(column.Name) = Me.HostComponent.BufferManager.FindColumnByLineageID( _
                output.Buffer, _
                column.LineageID)
        Next

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


#Region "Attributes"
    Private m_crmConnection As String
    Private m_entity As String
    Private m_entityAttributes() As IAttribute
    Private m_attributes As String
    Private m_batchSize As Integer
    Private m_tokenVariable As String
#End Region ' Attributes

End Class   ' ScriptMain
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[BufferWrapper.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
' This is CozyRoc Script Component Plus Extended Script
' Microsoft SQL Server Integration Services buffer wrappers
' This module defines classes for accessing data flow buffers
' THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!


Option Strict Off   ' This allows usage of PipelineBuffer typed accessors.

Imports System
Imports System.Data
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports CozyRoc.SqlServer.SSIS

<CLSCompliant(False)> _
Public Class OutputBuffer
    Inherits ScriptBufferPlus

    Public Sub New(ByVal Component As ScriptComponent, ByVal ObjectID As Integer, ByVal IsInput As Boolean, ByVal Buffer As PipelineBuffer, ByVal OutputMap As OutputNameMap)
        MyBase.New(Component, ObjectID, IsInput, Buffer, OutputMap)
    End Sub

    Public Overrides ReadOnly Property StaticInputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overrides ReadOnly Property StaticOutputColumns() As String()
        Get
            Return New String() {}
        End Get
    End Property

    Public Overloads Sub AddRow()
        MyBase.AddRow()
    End Sub

    Public Overloads Sub SetEndOfRowset()
        MyBase.SetEndOfRowset()
    End Sub

    Public Overloads Function EndOfRowset() As Boolean
        EndOfRowset = MyBase.EndOfRowset
    End Function

End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\AssemblyInfo.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices

' General Information about an assembly is controlled through the following 
' set of attributes. Change these attribute values to modify the information
' associated with an assembly.

' Review the values of the assembly attributes

<Assembly: AssemblyTitle("SC_8b85598a4c8e4d4a8c2b07d73b45f02a")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("")> 
<Assembly: AssemblyProduct("SC_8b85598a4c8e4d4a8c2b07d73b45f02a")> 
<Assembly: AssemblyCopyright("Copyright @  2016")> 
<Assembly: AssemblyTrademark("")> 
<Assembly: CLSCompliant(True)> 

<Assembly: ComVisible(False)> 

'The following GUID is for the ID of the typelib if this project is exposed to COM
<Assembly: Guid("696f9257-5663-4fcf-b249-0c4a697d3034")> 

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

<Assembly: AssemblyVersion("1.0.0.0")> 
<Assembly: AssemblyFileVersion("1.0.0.0")> 
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Settings.Designer.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA['------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On



Partial Friend NotInheritable Class MySettings
    Inherits System.Configuration.ApplicationSettingsBase

    Private Shared m_Value As MySettings

    Private Shared m_SyncObject As Object = New Object

    <System.Diagnostics.DebuggerNonUserCode()> _
    Public Shared ReadOnly Property Value() As MySettings
        Get
            If (MySettings.m_Value Is Nothing) Then
                System.Threading.Monitor.Enter(MySettings.m_SyncObject)
                If (MySettings.m_Value Is Nothing) Then
                    Try
                        MySettings.m_Value = New MySettings
                    Finally
                        System.Threading.Monitor.Exit(MySettings.m_SyncObject)
                    End Try
                End If
            End If
            Return MySettings.m_Value
        End Get
    End Property
End Class
]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Settings.settings]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version='1.0' encoding='iso-8859-1'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)" GeneratedClassNamespace="" GeneratedClassName="MySettings">
  <Profiles>
    <Profile Name="(Default)" />
  </Profiles>
  <Settings />
</SettingsFile>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[Project]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF16LE]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<c:Project xmlns:c="http://schemas.microsoft.com/codeprojectml/2010/08/main" xmlns:msb="http://schemas.microsoft.com/developer/msbuild/2003" runtimeVersion="3.0" schemaVersion="1.0">
	<msb:PropertyGroup>
		<msb:Language>msBuild</msb:Language>
		<msb:CodeName>SC_8b85598a4c8e4d4a8c2b07d73b45f02a</msb:CodeName>
		<msb:DisplayName>SC_8b85598a4c8e4d4a8c2b07d73b45f02a</msb:DisplayName>
		<msb:ProjectId>{818AAF52-44E9-4520-B9E6-27F462B9BCE9}</msb:ProjectId>
	</msb:PropertyGroup>
	<msb:ItemGroup>
		<msb:Project Include="SC_8b85598a4c8e4d4a8c2b07d73b45f02a.vbproj"/>
		<msb:File Include="My Project\AssemblyInfo.vb"/>
		<msb:File Include="My Project\Resources.Designer.vb"/>
		<msb:File Include="BufferWrapper.vb"/>
		<msb:File Include="main.vb"/>
		<msb:File Include="My Project\Settings.Designer.vb"/>
		<msb:File Include="ComponentWrapper.vb"/>
		<msb:File Include="My Project\Resources.resx"/>
		<msb:File Include="My Project\Settings.settings"/>
	</msb:ItemGroup>
</c:Project>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Resources.resx]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>]]></arrayElement><arrayElement dataType="System.String"><![CDATA[My Project\Resources.Designer.vb]]></arrayElement><arrayElement dataType="System.String"><![CDATA[UTF8]]></arrayElement><arrayElement dataType="System.String"><![CDATA['------------------------------------------------------------------------------
' <autogenerated>
'     This code was generated by a tool.
'
'     Changes to this file may cause incorrect behavior and will be lost if
'     the code is regenerated.
' </autogenerated>
'------------------------------------------------------------------------------

Option Strict Off
Option Explicit On


Namespace My.Resources
    
    '''<summary>
    '''   A strongly-typed resource class, for looking up localized strings, etc.
    '''</summary>
    'This class was auto-generated by the Strongly Typed Resource Builder
    'class via a tool like ResGen or Visual Studio.NET.
    'To add or remove a member, edit your .ResX file then rerun ResGen
    'with the /str option, or rebuild your VS project.
    Class MyResources
        
        Private Shared _resMgr As System.Resources.ResourceManager
        
        Private Shared _resCulture As System.Globalization.CultureInfo
        
        Friend Sub New()
            MyBase.New
        End Sub
        
        '''<summary>
        '''   Returns the cached ResourceManager instance used by this class.
        '''</summary>
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Public Shared ReadOnly Property ResourceManager() As System.Resources.ResourceManager
            Get
                If (_resMgr Is Nothing) Then
                    Dim temp As System.Resources.ResourceManager = New System.Resources.ResourceManager("My.Resources.MyResources", GetType(MyResources).Assembly)
                    _resMgr = temp
                End If
                Return _resMgr
            End Get
        End Property
        
        '''<summary>
        '''   Overrides the current thread's CurrentUICulture property for all
        '''   resource lookups using this strongly typed resource class.
        '''</summary>
        <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)>  _
        Public Shared Property Culture() As System.Globalization.CultureInfo
            Get
                Return _resCulture
            End Get
            Set
                _resCulture = value
            End Set
        End Property
    End Class
End Namespace
]]></arrayElement></arrayElements></property><property id="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[SC_8b85598a4c8e4d4a8c2b07d73b45f02a.dll]]></arrayElement><arrayElement dataType="System.String"><![CDATA[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
RQ4QAIEBtQJGAZkCVQtMAaEC5AlSASkB+gpZAbECgxIxAZkCFQtfAbkC5AllAcECnwEQAJkBMBF1
AckC5Al7AdECdgt3AKEA+RKCAdkCvBKIAREBRQ4GAJkAeQQ1AREBJwOiAREBvBIGAAkCZwSnAREB
gROwAaEA0xPHARkBjRDOAekCSQnYATEC7hPfAaECgxIxAbECsgkGAJkCAQ7vAYEBtw0CAvECGAMI
AiEB5AkRAvkCzQgYAiEBawkGAPECrwUIAvkC1wgiArECTxM2AjEBggQQADEBGxA8ApkA8gQxAZkA
YAkxAZkAfgoxAZkAAQQxATECxhBUAjECwRFcAqkARQ4GALEC5AlxAjEBeQQ1AZkBZRJ4AhEDKQ1+
AikBywwxATEBewExARkDiQGEAqkA7QmKAnkBRQ6QAiEDUxMGACED8REGACED9BEnAZkBRQ4GAIEB
wAGkAukARQ4GAMECEw2sAgkCkROyAqkBRQ64AtEBRQ4GANkBRQ4GADwAiwPDAEQAiwPDAEwAiwPD
AFQAiwPDADwARQ4GAEQARQ4GAEwARQ4GAFQARQ4GACECRQ4GADED2w3dAjEDBhLdAukAxhALAekA
tAMxAekAVwk1ATkDfAPqAmQARRMBA2wAzQjDAGwA1wgaA2wARQ4GAA4ABABEAykAkwAXBikAmwAl
BikAowBSBi4ACwBDBC4AEwBMBC4AGwBrBC4AIwB0BC4AKwCdBC4AMwCdBC4AOwB0BC4AQwCjBC4A
SwCdBC4AUwC6BC4AWwCdBC4AYwDABC4AawDqBC4AcwD3BEMAewA/BUMAUwCdBEMAgwBNBUMAiwCO
BUkAkwAXBkkAmwBpBkkAqwCKBkkAswBEBWMAUwCdBGkAkwAXBmkAmwCdBmkAuwDNBoMAUwCdBIkA
kwAXBokAmwDlBokAwwAJB6kAkwAXBqkAmwASB6kAywA/BQMB2wCcBQMB0wBEBSMB2wCcBSMB0wBE
BUMB6wA/BUMB8wA/BUMB2wCcBUkB0wBrBGkB0wBrBIMB0wBEBYMB+wC1BYkBAwE5B6MB0wBEBaMB
WwCdBKkBAwFKB8kBAwFeB+kBAwFrBwkCCwE/BWAEUwCdBKAEUwCdBGAF4wA/BWAF0wBEBYAF4wA/
BaAF4wA/BcAF4wA/BeAF4wA/BYAG0wBEBYAG4wA/BaAG0wBEBaAG4wA/BcAG0wBEBcAG4wA/BeAG
0wBEBeAG4wA/BQAH4wA/BSAH4wA/BUAH4wA/BUAH0wBEBWAH4wA/BYAH4wA/BYAH0wBEBUMAOQFs
AZQBvAHUAeIB5gHrAfoBHAInAkcCYgKfAuIC9QICAAEAAwAHAAUACQAHAAoACgAMAAsAEAANABEA
AACeCwUEAADWEwUEAACjEAUEAAAICQkEAAAhBAUEAAAIBQ0EAADmEA0EAAD9EA0EAACeCxIEAAAD
DRgEAAA+BR4EAADwDSQEAACeCikEAACyDS4EAADIDjQEAADqCDkEAACPAz4EAgAHAAMAAQAIAAMA
AgAJAAUAAQAKAAUAAgALAAcAAQAMAAcAAgANAAkAAQAOAAkAAgAPAAsAAQAQAAsAAgARAA0AAgAZ
AA8AAgAaABEAAgAkABMAAgAnABUAAgAoABcAAQApABcAAgAsABkAAgAtABsAAgAuAB0AAgAvAB8A
AgAzACEAAgA7ACMArgC9AOsA9wADAbkBwALHAs4C1gLnAvoCCgMSAwSAAAABAAAAAAAAAAAAAAAA
AJECAAAEAAAAAAAAAAAAAAAgA9cCAAAAAA0AAAAAAAAAAAAAACkDlxIAAAAAAQAAAAAAAAAAAAAA
MgNcAQAAAAABAAAAAAAAAAAAAAAyA2QOAAAAAA0AAAAAAAAAAAAAACkDBgwAAAAADQAAAAAAAAAA
AAAAKQMpDAAAAAAEAAAAAAAAAAAAAAAgAywKAAAAAA0AAAAAAAAAAAAAACkDBxMAAAAACgAAAAAA
AAAAAAAAOwP7AgAAAAANAAAAAAAAAAAAAAApA+MBAAAAAAAAAAABAAAAsg8AAAwACgANAAoAAAAQ
ABoAAgIAABAAcQACAgAAAABzAAICvQCQAT8B8AI/ARUDAAAAAABJRFRTQ29tcG9uZW50TWV0YURh
dGExMDAASURUU1ZhcmlhYmxlMTAwAElEVFNPdXRwdXRDb2x1bW4xMDAASURUU091dHB1dENvbHVt
bkNvbGxlY3Rpb24xMDAASURUU1J1bnRpbWVDb25uZWN0aW9uQ29sbGVjdGlvbjEwMABJRFRTT3V0
cHV0Q29sbGVjdGlvbjEwMABJRFRTUnVudGltZUNvbm5lY3Rpb24xMDAASURUU0Nvbm5lY3Rpb25N
YW5hZ2VyMTAwAElEVFNCdWZmZXJNYW5hZ2VyMTAwAElEVFNWYXJpYWJsZURpc3BlbnNlcjEwMABJ
RFRTVmFyaWFibGVzMTAwAElEVFNPdXRwdXQxMDAAQ29udGV4dFZhbHVlYDEAVGhyZWFkU2FmZU9i
amVjdFByb3ZpZGVyYDEATGlzdGAxAEludDMyAEtleVZhbHVlUGFpcmAyAENvenlSb2MuU1NJU1Bs
dXMuMjAxNgA8TW9kdWxlPgBnZXRfTGluZWFnZUlEAEZpbmRDb2x1bW5CeUxpbmVhZ2VJRABzZXRf
Q29ubmVjdGlvbk1hbmFnZXJJRABPYmplY3RJRABHZXRPdXRwdXRJRABDb3p5Um9jLlNxbFNlcnZl
ci5TU0lTAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuTWFuYWdlZERUUwBUAERpc3Bvc2VfX0luc3RhbmNl
X18AQ3JlYXRlX19JbnN0YW5jZV9fAEdldFZhcmlhYmxlXwBTZXRWYXJpYWJsZV8ARmluZEF0dHJp
YnV0ZV8ARmlyZUVycm9yXwBHZXRBdHRyaWJ1dGVzXwBTZXR1cE91dHB1dENvbHVtbnNfAEdldENv
bHVtbnNJZHhfAFNDXzhiODU1OThhNGM4ZTRkNGE4YzJiMDdkNzNiNDVmMDJhAGdldF9Db21wb25l
bnRNZXRhRGF0YQBQcm9qZWN0RGF0YQBtc2NvcmxpYgBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJp
YwBNaWNyb3NvZnQuVmlzdWFsQmFzaWMAZ2V0X0lkAExvY2tPbmVGb3JSZWFkAEFkZABNYXJrT3V0
cHV0c0ZpbmlzaGVkAEd1aWQAQ296eVJvYy5EeW5hbWljcy5Dcm0yMDExLk9yZ2FuaXphdGlvblNl
cnZpY2UAR2V0U2VydmljZQBDcmVhdGVJbnN0YW5jZQBnZXRfR2V0SW5zdGFuY2UAaW5zdGFuY2UA
RW50aXR5UmVmZXJlbmNlAEdldEhhc2hDb2RlAGdldF9NZXNzYWdlAGVyck1lc3NhZ2UAbWVzc2Fn
ZQBnZXRfUGFnaW5nQ29va2llAHNldF9QYWdpbmdDb29raWUAZ2V0X1NjYWxlAGdldF9Ub2tlblZh
cmlhYmxlAHNldF9Ub2tlblZhcmlhYmxlAG1fdG9rZW5WYXJpYWJsZQBJRGlzcG9zYWJsZQBIYXNo
dGFibGUAUnVudGltZVR5cGVIYW5kbGUAR2V0VHlwZUZyb21IYW5kbGUAZ2V0X05hbWUAc2V0X05h
bWUAdmFyTmFtZQBzZXRfUmVxdWVzdE5hbWUAbmFtZQBNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5S
dW50aW1lAE1pY3Jvc29mdC5TcWxTZXJ2ZXIuRHRzLlBpcGVsaW5lAERhdGFUeXBlAGdldF9BdHRy
aWJ1dGVUeXBlAGdldF9Dcm1Db25uZWN0aW9uVHlwZQBHZXRUeXBlAGdldF9DdWx0dXJlAHNldF9D
dWx0dXJlAF9yZXNDdWx0dXJlAEFwcGxpY2F0aW9uQmFzZQBBcHBsaWNhdGlvblNldHRpbmdzQmFz
ZQBPcmdhbml6YXRpb25SZXNwb25zZQBDbG9zZQBEaXNwb3NlAFZhbGlkYXRlAEVkaXRvckJyb3dz
YWJsZVN0YXRlAExvY2tPbmVGb3JXcml0ZQBJQXR0cmlidXRlAEd1aWRBdHRyaWJ1dGUASGVscEtl
eXdvcmRBdHRyaWJ1dGUAR2VuZXJhdGVkQ29kZUF0dHJpYnV0ZQBEZWJ1Z2dlck5vblVzZXJDb2Rl
QXR0cmlidXRlAERlYnVnZ2FibGVBdHRyaWJ1dGUAVmFyaWFibGVBdHRyaWJ1dGUARWRpdG9yQnJv
d3NhYmxlQXR0cmlidXRlAENvbVZpc2libGVBdHRyaWJ1dGUAQXNzZW1ibHlUaXRsZUF0dHJpYnV0
ZQBTdGFuZGFyZE1vZHVsZUF0dHJpYnV0ZQBIaWRlTW9kdWxlTmFtZUF0dHJpYnV0ZQBEZWZhdWx0
VmFsdWVBdHRyaWJ1dGUAQXNzZW1ibHlUcmFkZW1hcmtBdHRyaWJ1dGUAVGFyZ2V0RnJhbWV3b3Jr
QXR0cmlidXRlAERlYnVnZ2VySGlkZGVuQXR0cmlidXRlAEFzc2VtYmx5RmlsZVZlcnNpb25BdHRy
aWJ1dGUATXlHcm91cENvbGxlY3Rpb25BdHRyaWJ1dGUAQ29ubmVjdGlvbkF0dHJpYnV0ZQBBc3Nl
bWJseURlc2NyaXB0aW9uQXR0cmlidXRlAFZhbGlkYXRlUHJvcGVydGllc0F0dHJpYnV0ZQBSZWZy
ZXNoUHJvcGVydGllc0F0dHJpYnV0ZQBTb3J0UHJvcGVydGllc0F0dHJpYnV0ZQBDb21waWxhdGlv
blJlbGF4YXRpb25zQXR0cmlidXRlAEFzc2VtYmx5UHJvZHVjdEF0dHJpYnV0ZQBBc3NlbWJseUNv
cHlyaWdodEF0dHJpYnV0ZQBDTFNDb21wbGlhbnRBdHRyaWJ1dGUAU1NJU1NjcmlwdENvbXBvbmVu
dEVudHJ5UG9pbnRBdHRyaWJ1dGUATGlzdEF0dHJpYnV0ZQBBc3NlbWJseUNvbXBhbnlBdHRyaWJ1
dGUAQ2F0ZWdvcnlBdHRyaWJ1dGUAUnVudGltZUNvbXBhdGliaWxpdHlBdHRyaWJ1dGUARXhlY3V0
ZQBtX1ZhbHVlAGdldF9WYWx1ZQBzZXRfVmFsdWUAR2V0T2JqZWN0VmFsdWUAdmFsdWUAZ2V0X0Jh
dGNoU2l6ZQBzZXRfQmF0Y2hTaXplAG1fYmF0Y2hTaXplAFN5c3RlbS5UaHJlYWRpbmcAU3lzdGVt
LlJ1bnRpbWUuVmVyc2lvbmluZwBDb21wYXJlU3RyaW5nAFRvU3RyaW5nAGdldF9MZW5ndGgAVW5s
b2NrAE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5NeVNlcnZpY2VzLkludGVybmFsAFN5c3RlbS5Db21w
b25lbnRNb2RlbABSZW1vdmVBbGwAU0NfOGI4NTU5OGE0YzhlNGQ0YThjMmIwN2Q3M2I0NWYwMmEu
ZGxsAGdldF9JdGVtAHNldF9JdGVtAE5ld09yVXBkYXRlZEl0ZW0AUmVtb3ZlZE9yRGVsZXRlZEl0
ZW0AZ2V0X1JlbW92ZWRJdGVtAFN5c3RlbQBDb3p5Um9jLkR5bmFtaWNzLkNybQBnZXRfRGF0YVRv
a2VuAFN5c3RlbS5Db21wb25lbnRNb2RlbC5EZXNpZ24AU2NyaXB0TWFpbgBnZXRfUHJlY2lzaW9u
AGdldF9BcHBsaWNhdGlvbgBNeUFwcGxpY2F0aW9uAFN5c3RlbS5Db25maWd1cmF0aW9uAFN5c3Rl
bS5HbG9iYWxpemF0aW9uAFN5c3RlbS5SZWZsZWN0aW9uAEF0dHJpYnV0ZUNvbGxlY3Rpb24AZ2V0
X091dHB1dENvbHVtbkNvbGxlY3Rpb24AZ2V0X1J1bnRpbWVDb25uZWN0aW9uQ29sbGVjdGlvbgBC
dXNpbmVzc0VudGl0eUNoYW5nZXNDb2xsZWN0aW9uAGdldF9PdXRwdXRDb2xsZWN0aW9uAElDb25u
ZWN0aW9uAEFjcXVpcmVDb25uZWN0aW9uAGdldF9Dcm1Db25uZWN0aW9uAHNldF9Dcm1Db25uZWN0
aW9uAG1fY3JtQ29ubmVjdGlvbgBFeGNlcHRpb24AU3RyaW5nQ29tcGFyaXNvbgBDdWx0dXJlSW5m
bwBQYWdpbmdJbmZvAE91dHB1dE5hbWVNYXAAT3V0cHV0TWFwAE1pY3Jvc29mdC5TcWxTZXJ2ZXIu
RFRTUnVudGltZVdyYXAATWljcm9zb2Z0LlNxbFNlcnZlci5EVFNQaXBlbGluZVdyYXAAZ2V0X1Bh
Z2VOdW1iZXIAc2V0X1BhZ2VOdW1iZXIAbV9BcHBPYmplY3RQcm92aWRlcgBtX1VzZXJPYmplY3RQ
cm92aWRlcgBtX0NvbXB1dGVyT2JqZWN0UHJvdmlkZXIAbV9NeVdlYlNlcnZpY2VzT2JqZWN0UHJv
dmlkZXIAZ2V0X0J1ZmZlcgBQaXBlbGluZUJ1ZmZlcgBTY3JpcHRCdWZmZXIAT3V0cHV0QnVmZmVy
AGdldF9SZXNvdXJjZU1hbmFnZXIAZ2V0X0Nvbm5lY3Rpb25NYW5hZ2VyAGdldF9CdWZmZXJNYW5h
Z2VyAFRvSW50ZWdlcgBTeXN0ZW0uQ29kZURvbS5Db21waWxlcgBNaWNyb3NvZnQuU3FsU2VydmVy
LkR0cy5SdW50aW1lLldyYXBwZXIATWljcm9zb2Z0LlNxbFNlcnZlci5EdHMuUGlwZWxpbmUuV3Jh
cHBlcgBnZXRfVXNlcgBnZXRfVmFyaWFibGVEaXNwZW5zZXIATGlzdERlbGltaXRlcgBFbnRlcgBn
ZXRfQ29tcHV0ZXIATXlDb21wdXRlcgBfcmVzTWdyAEZpcmVFcnJvcgBDbGVhclByb2plY3RFcnJv
cgBTZXRQcm9qZWN0RXJyb3IAR2V0RW51bWVyYXRvcgBBY3RpdmF0b3IALmN0b3IALmNjdG9yAE1v
bml0b3IAT3V0cHV0SURzAENvenlSb2MuRHluYW1pY3MAU3lzdGVtLkRpYWdub3N0aWNzAGdldF9N
b3JlUmVjb3JkcwBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuRGV2aWNlcwBnZXRfV2ViU2VydmljZXMA
TXlXZWJTZXJ2aWNlcwBNaWNyb3NvZnQuVmlzdWFsQmFzaWMuQXBwbGljYXRpb25TZXJ2aWNlcwBT
eXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkNvbXBp
bGVyU2VydmljZXMAU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlcwBTeXN0ZW0uUmVzb3Vy
Y2VzAFNDXzhiODU1OThhNGM4ZTRkNGE4YzJiMDdkNzNiNDVmMDJhLk15LlJlc291cmNlcwBNeVJl
c291cmNlcwBTQ184Yjg1NTk4YTRjOGU0ZDRhOGMyYjA3ZDczYjQ1ZjAyYS5SZXNvdXJjZXMucmVz
b3VyY2VzAERlYnVnZ2luZ01vZGVzAGdldF9DaGFuZ2VzAEJ1c2luZXNzRW50aXR5Q2hhbmdlcwBT
ZXREYXRhVHlwZVByb3BlcnRpZXMAUmVmcmVzaFByb3BlcnRpZXMAVmFyaWFibGVzAENvenlSb2Mu
U3FsU2VydmVyLlNTSVMuQXR0cmlidXRlcwBnZXRfQXR0cmlidXRlcwBzZXRfQXR0cmlidXRlcwBH
ZXRBdHRyaWJ1dGVzAG1fZW50aXR5QXR0cmlidXRlcwBtX2F0dHJpYnV0ZXMATXlTZXR0aW5ncwBF
cXVhbHMAQ29udGFpbnMAc2V0X0NvbHVtbnMAZ2V0X1N0YXRpY0lucHV0Q29sdW1ucwBnZXRfU3Rh
dGljT3V0cHV0Q29sdW1ucwBDb252ZXJzaW9ucwBTeXN0ZW0uQ29sbGVjdGlvbnMAZ2V0X0Rlc2ln
bkNvbm5lY3Rpb25zAFN0cmluZ1NwbGl0T3B0aW9ucwBCdWZmZXJzAFJ1bnRpbWVIZWxwZXJzAE9w
ZXJhdG9ycwBGaW5pc2hPdXRwdXRzAFNjcmlwdEJ1ZmZlclBsdXMAU2NyaXB0Q29tcG9uZW50UGx1
cwBDcmVhdGVOZXdPdXRwdXRSb3dzAEZvcm1hdABtX1N5bmNPYmplY3QATXlQcm9qZWN0AENvbm5l
Y3QAQ29sdW1uU2V0AFNldEVuZE9mUm93c2V0AFNwbGl0AEV4aXQAT3JnYW5pemF0aW9uU2Vydmlj
ZUNsaWVudABQaXBlbGluZUNvbXBvbmVudABVc2VyQ29tcG9uZW50AFBhcmVudENvbXBvbmVudABT
Y3JpcHRDb21wb25lbnQAZ2V0X0hvc3RDb21wb25lbnQAZ2V0X0N1cnJlbnQAZ2V0X0NvdW50AHNl
dF9Db3VudABNaWNyb3NvZnQuU3FsU2VydmVyLlR4U2NyaXB0AENvbnZlcnQAU29ydABPcmdhbml6
YXRpb25SZXF1ZXN0AEdldEF0dHJpYnV0ZUxpc3QAYXR0ckxpc3QAQXJyYXlMaXN0AEdldEVudGl0
eUxpc3QATWljcm9zb2Z0LlNxbFNlcnZlci5QaXBlbGluZUhvc3QASXNJbnB1dABQcmltZU91dHB1
dABNb3ZlTmV4dABtX0NvbnRleHQATmV3AEFkZFJvdwBTQ184Yjg1NTk4YTRjOGU0ZDRhOGMyYjA3
ZDczYjQ1ZjAyYS5NeQBUb0FycmF5AGdldF9LZXkAZ2V0X0Fzc2VtYmx5AElFbnRpdHkAZ2V0X0Vu
dGl0eQBzZXRfRW50aXR5AGdldF9OZXdPclVwZGF0ZWRFbnRpdHkAR2V0RW50aXR5AG1fZW50aXR5
AElzTnVsbE9yRW1wdHkAACtSAGUAdAByAGkAZQB2AGUARQBuAHQAaQB0AHkAQwBoAGEAbgBnAGUA
cwAAFUUAbgB0AGkAdAB5AE4AYQBtAGUAAA9DAG8AbAB1AG0AbgBzAAAFLAAKAAARUABhAGcAZQBJ
AG4AZgBvAAAXRABhAHQAYQBWAGUAcgBzAGkAbwBuAAAbRQBuAHQAaQB0AHkAQwBoAGEAbgBnAGUA
cwAAC18AVAB5AHAAZQAAD3UAcABkAGEAdABlAGQAAAVJAGQAAEdGAGEAaQBsAGUAZAAgAHQAbwAg
AHAAcgBvAGMAZQBzAHMAIABjAG8AbAB1AG0AbgAgACcAewAwAH0AJwA6ACAAewAxAH0AAQ9kAGUA
bABlAHQAZQBkAAA/UwBlAGwAZQBjAHQAIABEAHkAbgBhAG0AaQBjAHMAIABDAFIATQAgAEMAbwBu
AG4AZQBjAHQAaQBvAG4ALgAAN1MAZQBsAGUAYwB0ACAARAB5AG4AYQBtAGkAYwBzACAAQwBSAE0A
IABFAG4AdABpAHQAeQAuAAApUwBlAGwAZQBjAHQAIABhAHQAdAByAGkAYgB1AHQAZQAoAHMAKQAu
AAAtUwBlAGwAZQBjAHQAIAB0AG8AawBlAG4AIAB2AGEAcgBpAGEAYgBsAGUALgAAG0MAcgBtAEMA
bwBuAG4AZQBjAHQAaQBvAG4AABlEAFkATgBBAE0ASQBDAFMALQBDAFIATQABRUQAeQBuAGEAbQBp
AGMAcwAgAEMAUgBNACAARQBuAHQAaQB0AHkAIABDAGgAYQBuAGcAZQBzACAAUwBvAHUAcgBjAGUA
ADUnAHsAMAB9ACcAIABhAHQAdAByAGkAYgB1AHQAZQAgAG4AbwB0ACAAZgBvAHUAbgBkAC4AAQ1P
AHUAdABwAHUAdAAAMU0AeQAuAFIAZQBzAG8AdQByAGMAZQBzAC4ATQB5AFIAZQBzAG8AdQByAGMA
ZQBzAAAAfJhm+Aywq0OFiJIeYOBKNwAEIAEBCAMgAAEFIAEBEREEIAEBDgQgAQECBSABAR0OBiAB
ARGArQYgAwEOAgIGIAEBEYDdBSACAQ4OByAEAQ4ODg4zBw8SURJVElkSXRJhEmUSaRURcQEcEnkS
fRURcQEVEYCBAg4cFRGAgQIOHBKAhRJhEoCFBCABHBwEIAEcCAUgAgEOHAkgAh0OHQ4RgR0EAAEc
HAQAAQ4cByABEoEpEl0EIAEcDgUgABKBLQUVEm0BHAggABURcQETAAUVEXEBHAQgABMABSAAEoDF
BAABCBwFIAIBCBwFIAASgTUFIAARgTkFIAASgT0LFRJtARURgIECDhwLFRFxARURgIECDhwHFRGA
gQIOHAQgAQIcBCAAEwEGAAEBEoCFBgADDg4cHAMAAAEDIAACBSAAEoFJAyAACAMgAA4HBwMCAhKA
hQQAAQIOBSAAEoFNBSAAEoFRBiABEoCVHAUgABKBWQUgABKBXQYgARKBYRwIBwMdDh0OElEFIAAS
gWUGIAESgWkcBSABHQ4IBxABAQEdHgADCgEODQcFHQ4SgIkdEk0IEk0EIAEIHAgAARKBBRGBcQgg
ARKBbRKBBQIdDgoHAx0STRJREoCNBiABEoCNDgUgAB0STQMHAQ4GAAMIDg4CAgYOAwcBCAQHAR0O
AwcBAgogBgEIDg4OCBACBwcDHBwSgJEFIAASgXkIIAIBDhASgJEGIAESgX0cAyAAHAUHARKAkQQg
AQEcDgcGHRJNEoCVHQ4IDhJNBSAAEoCZCiAFARGBgQgICAgMBwUSTRJNHRJNCBJNByACAg4RgYUF
AAIODhwOBwYSVRJVEoCVCAgSgJkGIAESgJkcBSAAEoGJBSAAEoGNBSACCAgIBSACARwcDiAFARKA
wQgCEoDFEoDJBAcCCAgHAAIIEoDJDgUgABKA0QUgABKBlQcgAgEOEoGVBhUSNAESJAYVEjQBEiAH
FRI0ARKA/QYVEjQBEjAEAAEBHAQHAR4AAh4ABRABAB4ABAoBHgAEBwETAAYVEjQBEwAIBhUSgQkB
EwAHFRKBCQETAAITAAQKARMABSABARMACLd6XFYZNOCJCImEXc2AgMyRCBbPSQu4DDTqCLA/X38R
1Qo6BCwACgAEBh0STQIGCAMGEhQDBhIYAwYSDAQGEoDBBAYSgNUEBhKA2QcGFRI0ARIkBwYVEjQB
EiAIBhUSNAESgP0HBhUSNAESMAMGEiwCBhwFIAECEA4EIAAdDgggAhJNHRJNDgQgABJVDSAEAQgd
CB0SgMUSgMkGIAEBEoDBBQAAEoDVBQAAEoDZBgABARKA2QQAABIkBAAAEiAFAAASgP0EAAASMAQA
ABIsBSAAEoEFBxABAR4AHgAHMAEBARAeAAMoAA4DKAAIBCgAHQ4FKAASgNEFCAASgNUFCAASgNkE
CAASJAQIABIgBQgAEoD9BAgAEjAECAASLAQoABMACAEACAAAAAAAHgEAAQBUAhZXcmFwTm9uRXhj
ZXB0aW9uVGhyb3dzAQgBAAIAAAAAACgBACNTQ184Yjg1NTk4YTRjOGU0ZDRhOGMyYjA3ZDczYjQ1
ZjAyYQAABQEAAAAAFgEAEUNvcHlyaWdodCBAICAyMDE2AAAFAQABAAApAQAkNjk2ZjkyNTctNTY2
My00ZmNmLWIyNDktMGM0YTY5N2QzMDM0AAAMAQAHMS4wLjAuMAAARwEAGi5ORVRGcmFtZXdvcmss
VmVyc2lvbj12NC4wAQBUDhRGcmFtZXdvcmtEaXNwbGF5TmFtZRAuTkVUIEZyYW1ld29yayA0BAEA
AAAIAQABAAAAAABAAQAFAAAADUNybUNvbm5lY3Rpb24GRW50aXR5CkF0dHJpYnV0ZXMNVG9rZW5W
YXJpYWJsZQlCYXRjaFNpemUAAA0BAAhWYWxpZGF0ZQAAGAEACk15VGVtcGxhdGUIMTEuMC4wLjAA
AGEBADRTeXN0ZW0uV2ViLlNlcnZpY2VzLlByb3RvY29scy5Tb2FwSHR0cENsaWVudFByb3RvY29s
EkNyZWF0ZV9fSW5zdGFuY2VfXxNEaXNwb3NlX19JbnN0YW5jZV9fAAAADQEACFNldHRpbmdzAAAs
AQAnU2VsZWN0IER5bmFtaWNzIENSTSBDb25uZWN0aW9uIE1hbmFnZXIuAAAWAQARQ3JtQ29ubmVj
dGlvblR5cGUAACABABtTZWxlY3QgRHluYW1pY3MgQ1JNIGVudGl0eS4AABIBAA1HZXRFbnRpdHlM
aXN0AAAvAQAqU2VsZWN0IG9uZSBvciBtb3JlIGF0dHJpYnV0ZXMgdG8gcmV0cmlldmUuAAAXAQAQ
R2V0QXR0cmlidXRlTGlzdAEAAAAjAQAeU3BlY2lmaWVzIHJldHJpZXZlIGJhdGNoIHNpemUuAAAI
AQCIEwAAAAAmAQAhU2VsZWN0IHZhcmlhYmxlIGNvbnRhaW5pbmcgdG9rZW4uAAAQAQALTXkuQ29t
cHV0ZXIAABMBAA5NeS5BcHBsaWNhdGlvbgAADAEAB015LlVzZXIAABMBAA5NeS5XZWJTZXJ2aWNl
cwAAALQAAADOyu++AQAAAJEAAABsU3lzdGVtLlJlc291cmNlcy5SZXNvdXJjZVJlYWRlciwgbXNj
b3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1i
NzdhNWM1NjE5MzRlMDg5I1N5c3RlbS5SZXNvdXJjZXMuUnVudGltZVJlc291cmNlU2V0AgAAAAAA
AAAAAAAAUEFEUEFEULQAAABYXAAAAAAAAAAAAAByXAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ZFwAAAAAAAAAAAAAAABfQ29yRGxsTWFpbgBtc2NvcmVlLmRsbAAAAAAA/yUAIAAQAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAQAAAAGAAAgAAAAAAAAAAA
AAAAAAAAAQABAAAAMAAAgAAAAAAAAAAAAAAAAAAAAQAAAAAASAAAAFhgAADsAwAAAAAAAAAAAADs
AzQAAABWAFMAXwBWAEUAUgBTAEkATwBOAF8ASQBOAEYATwAAAAAAvQTv/gAAAQAAAAEAAAAAAAAA
AQAAAAAAPwAAAAAAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAEQAAAABAFYAYQByAEYAaQBsAGUASQBu
AGYAbwAAAAAAJAAEAAAAVAByAGEAbgBzAGwAYQB0AGkAbwBuAAAAAAAAALAETAMAAAEAUwB0AHIA
aQBuAGcARgBpAGwAZQBJAG4AZgBvAAAAKAMAAAEAMAAwADAAMAAwADQAYgAwAAAAGgABAAEAQwBv
AG0AbQBlAG4AdABzAAAAAAAAACIAAQABAEMAbwBtAHAAYQBuAHkATgBhAG0AZQAAAAAAAAAAAHAA
JAABAEYAaQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAABTAEMAXwA4AGIAOAA1ADUAOQA4
AGEANABjADgAZQA0AGQANABhADgAYwAyAGIAMAA3AGQANwAzAGIANAA1AGYAMAAyAGEAAAAwAAgA
AQBGAGkAbABlAFYAZQByAHMAaQBvAG4AAAAAADEALgAwAC4AMAAuADAAAABwACgAAQBJAG4AdABl
AHIAbgBhAGwATgBhAG0AZQAAAFMAQwBfADgAYgA4ADUANQA5ADgAYQA0AGMAOABlADQAZAA0AGEA
OABjADIAYgAwADcAZAA3ADMAYgA0ADUAZgAwADIAYQAuAGQAbABsAAAASAASAAEATABlAGcAYQBs
AEMAbwBwAHkAcgBpAGcAaAB0AAAAQwBvAHAAeQByAGkAZwBoAHQAIABAACAAIAAyADAAMQA2AAAA
KgABAAEATABlAGcAYQBsAFQAcgBhAGQAZQBtAGEAcgBrAHMAAAAAAAAAAAB4ACgAAQBPAHIAaQBn
AGkAbgBhAGwARgBpAGwAZQBuAGEAbQBlAAAAUwBDAF8AOABiADgANQA1ADkAOABhADQAYwA4AGUA
NABkADQAYQA4AGMAMgBiADAANwBkADcAMwBiADQANQBmADAAMgBhAC4AZABsAGwAAABoACQAAQBQ
AHIAbwBkAHUAYwB0AE4AYQBtAGUAAAAAAFMAQwBfADgAYgA4ADUANQA5ADgAYQA0AGMAOABlADQA
ZAA0AGEAOABjADIAYgAwADcAZAA3ADMAYgA0ADUAZgAwADIAYQAAADQACAABAFAAcgBvAGQAdQBj
AHQAVgBlAHIAcwBpAG8AbgAAADEALgAwAC4AMAAuADAAAAA4AAgAAQBBAHMAcwBlAG0AYgBsAHkA
IABWAGUAcgBzAGkAbwBuAAAAMQAuADAALgAwAC4AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAMAAAAhDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA]]></arrayElement></arrayElements></property><property id="5" name="VSTAProjectName" dataType="System.String" description="Specifies the name of the Microsoft Visual Studio Tools for Applications project. Project names must be unique within a package." typeConverter="NOTBROWSABLE">SC_8b85598a4c8e4d4a8c2b07d73b45f02a</property><property id="6" name="ScriptLanguage" dataType="System.String" description="Specifies the programming language used by the script." typeConverter="Microsoft.SqlServer.VSTAHosting.ScriptingLanguages, Microsoft.SqlServer.VSTAScriptingLib, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91">VisualBasic</property><property id="12" name="UserComponentTypeName" dataType="System.String">CozyRoc.ScriptComponentHostPlus</property></properties><connections><connection id="15" name="CrmConnection" connectionManagerID="{5CF1CED2-0AAF-43EB-8F08-A78C483639B2}" /></connections><outputs><output id="16" name="Output" hasSideEffects="true"><externalMetadataColumns /></output></outputs></component>