{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F} Debug AnyCPU 8.0.30703 2.0 {3AF74B7B-CE4A-41E0-BFEF-C38D33FD6209} Library My Project ScriptTask_621609c6b8b34789b81ad064fe2a737d ScriptTask_621609c6b8b34789b81ad064fe2a737d v4.5 512 Binary On On true full false .\bin\Debug\ false true true prompt 4 false true .\bin\Release\ false false true prompt 4 False C:\Program Files (x86)\Microsoft SQL Server\140\SDK\Assemblies\CozyRoc.SSISPlus.2017.dll False False SSIS_ST140 ]]> unlzw.c code in gzip-1.2.4 (written ' by Peter Jannesen) and the original compress code. ' ' Based on implementation by Ronald Tschalr (ronald@innovation.ch). Class UncompressInputStream Inherits Stream ' Methods ' @param is the input stream to decompress Public Sub New(ByVal inputStream As Stream) Me._inputStream = inputStream Me.parse_header() End Sub ' New Private Sub fill() Me.got = Me._inputStream.Read(Me.data, Me.end, Me.data.Length - 1 - Me.end) If Me.got > 0 Then Me.end += Me.got End If End Sub ' fill Public Overrides Sub Flush() Throw New NotSupportedException End Sub ' Flush Private Const LZW_MAGIC As Integer = &H1F9D Private Const MAX_BITS As Integer = &H10 Private Const INIT_BITS As Integer = 9 Private Const HDR_MAXBITS As Integer = &H1F Private Const HDR_EXTENDED As Integer = &H20 Private Const HDR_FREE As Integer = &H40 Private Const HDR_BLOCK_MODE As Integer = &H80 Private Sub parse_header() ' read in and check magic number Dim t As Integer = Me.read_byte() If t < 0 Then Throw New Exception("Failed to read magic number") End If Dim magic As Integer = ((t And &HFF) << 8) t = Me.read_byte() If t < 0 Then Throw New Exception("Failed to read magic number") End If magic += (t And &HFF) If (magic <> LZW_MAGIC) Then Throw New IOException("Input not in compress format (read magic number 0x" & magic.ToString("x") & ")") End If ' read in header byte Dim header As Integer = Me.read_byte() If header < 0 Then Throw New Exception("Failed to read header") End If Me.block_mode = ((header And HDR_BLOCK_MODE) > 0) Me.maxbits = (header And HDR_MAXBITS) If Me.maxbits > MAX_BITS Then Throw New IOException( _ "Stream compressed with " & Me.maxbits.ToString() & _ " bits, but can only handle " & MAX_BITS.ToString() & " bits") End If If (header And HDR_EXTENDED) > 0 Then Throw New IOException("Header extension bit set") End If If (header And HDR_FREE) > 0 Then Throw New IOException("Header bit 6 set") End If ' initialize stuff Me.maxmaxcode = (CInt(1) << Me.maxbits) Me.n_bits = INIT_BITS Me.maxcode = (CInt(1) << Me.n_bits) - 1 Me.bitmask = Me.maxcode Me.oldcode = -1 Me.finchar = 0 Me.free_ent = CType(IIf(Me.block_mode, TBL_FIRST, &H100), Integer) Me.tab_prefix = New Integer((CInt(1) << Me.maxbits) - 1) {} Me.tab_suffix = New Byte((CInt(1) << Me.maxbits) - 1) {} Me.stack = New Byte((CInt(1) << Me.maxbits) - 1) {} Me.stackp = Me.stack.Length Dim idx As Integer = &HFF Do While idx >= 0 Me.tab_suffix(idx) = CByte(idx) idx -= 1 Loop End Sub ' parse_header Private one As Byte() = New Byte(1 - 1) {} Public Function read_byte() As Integer If Me._inputStream.Read(Me.one, 0, 1) = 1 Then Return (Me.one(0) And &HFF) End If Return -1 End Function ' read_byte Public Function read_internal(ByVal buf As Byte(), ByVal off As Integer, ByVal len As Integer) As Integer If Me.eof Then Return -1 End If Dim num As Integer Dim start As Integer = off Dim l_tab_prefix As Integer() = Me.tab_prefix Dim l_tab_suffix As Byte() = Me.tab_suffix Dim l_stack As Byte() = Me.stack Dim l_n_bits As Integer = Me.n_bits Dim l_maxcode As Integer = Me.maxcode Dim l_maxmaxcode As Integer = Me.maxmaxcode Dim l_bitmask As Integer = Me.bitmask Dim l_oldcode As Integer = Me.oldcode Dim l_finchar As Byte = Me.finchar Dim l_stackp As Integer = Me.stackp Dim l_free_ent As Integer = Me.free_ent Dim l_data As Byte() = Me.data Dim l_bit_pos As Integer = Me.bit_pos ' empty stack if stuff still left Dim s_size As Integer = (l_stack.Length - l_stackp) If s_size > 0 Then num = CType(IIf((s_size >= len), len, s_size), Integer) Array.Copy(l_stack, l_stackp, buf, off, num) off += num len -= num l_stackp += num End If If len = 0 Then Me.stackp = l_stackp Return (off - start) End If ' loop, filling local buffer until enough data has been decompressed main_loop: If Me.end < EXTRA Then Call Me.fill() End If Dim bit_in As Integer = CType(IIf(Me.got > 0, _ (Me.end - (Me.end Mod l_n_bits)) << 3, _ (Me.end << 3) - (l_n_bits - 1)), _ Integer) Do While l_bit_pos < bit_in Dim n_bytes As Integer ' check for code-width expansion If l_free_ent > l_maxcode Then n_bytes = (l_n_bits << 3) l_bit_pos = ((l_bit_pos - 1) + n_bytes - (l_bit_pos - 1 + n_bytes) Mod n_bytes) l_n_bits += 1 l_maxcode = CType(IIf(l_n_bits = Me.maxbits, _ l_maxmaxcode, _ ((CInt(1) << l_n_bits) - 1)), _ Integer) l_bitmask = ((CInt(1) << l_n_bits) - 1) l_bit_pos = Me.resetbuf(l_bit_pos) GoTo main_loop End If ' read next code Dim pos As Integer = (l_bit_pos >> 3) Dim code As Integer = _ (((l_data(pos) And &HFF) Or ((l_data(pos + 1) And &HFF) << 8) Or _ ((l_data(pos + 2) And &HFF) << &H10)) _ >> (l_bit_pos And 7)) And l_bitmask l_bit_pos += l_n_bits ' handle first iteration If (l_oldcode = -1) Then If (code >= &H100) Then Throw New IOException(("corrupt input: " & code & " > 255")) End If l_oldcode = code l_finchar = CByte(code) buf(off) = l_finchar off += 1 len -= 1 Continue Do End If ' handle CLEAR code If code = TBL_CLEAR AndAlso Me.block_mode Then Array.Copy(Me.zeros, 0, l_tab_prefix, 0, Me.zeros.Length) l_free_ent = TBL_FIRST - 1 n_bytes = (l_n_bits << 3) l_bit_pos = ((l_bit_pos - 1) + n_bytes - (l_bit_pos - 1 + n_bytes) Mod n_bytes) l_n_bits = INIT_BITS l_maxcode = ((CInt(1) << l_n_bits) - 1) l_bitmask = l_maxcode l_bit_pos = Me.resetbuf(l_bit_pos) GoTo main_loop End If ' setup Dim incode As Integer = code l_stackp = l_stack.Length ' Handle KwK case If code >= l_free_ent Then If code > l_free_ent Then Throw New IOException( _ "corrupt input: code=" & code.ToString() & _ ", free_ent=" & l_free_ent.ToString()) End If l_stackp -= 1 l_stack(l_stackp) = l_finchar code = l_oldcode End If ' Generate output characters in reverse order Do While (code >= &H100) l_stackp -= 1 l_stack(l_stackp) = l_tab_suffix(code) code = l_tab_prefix(code) Loop l_finchar = l_tab_suffix(code) buf(off) = l_finchar off += 1 len -= 1 ' And put them out in forward order s_size = (l_stack.Length - l_stackp) num = CType(IIf(s_size >= len, len, s_size), Integer) Array.Copy(l_stack, l_stackp, buf, off, num) off += num len -= num l_stackp += num ' generate new entry in table If l_free_ent < l_maxmaxcode Then l_tab_prefix(l_free_ent) = l_oldcode l_tab_suffix(l_free_ent) = l_finchar l_free_ent += 1 End If ' Remember previous code l_oldcode = incode ' if output buffer full, then return If len = 0 Then Me.n_bits = l_n_bits Me.maxcode = l_maxcode Me.bitmask = l_bitmask Me.oldcode = l_oldcode Me.finchar = l_finchar Me.stackp = l_stackp Me.free_ent = l_free_ent Me.bit_pos = l_bit_pos Return (off - start) End If Loop l_bit_pos = Me.resetbuf(l_bit_pos) If (Me.got > 0) Then GoTo main_loop End If Me.n_bits = l_n_bits Me.maxcode = l_maxcode Me.bitmask = l_bitmask Me.oldcode = l_oldcode Me.finchar = l_finchar Me.stackp = l_stackp Me.free_ent = l_free_ent Me.bit_pos = l_bit_pos Me.eof = True Return (off - start) End Function ' read_internal Public Overrides Function Read(ByVal buffer As Byte(), ByVal offset As Integer, ByVal count As Integer) As Integer Return Me.read_internal(buffer, offset, count) End Function ' Read ' Moves the unread data in the buffer to the beginning and resets ' the pointers. Private Function resetbuf(ByVal bit_pos As Integer) As Integer Dim pos As Integer = (bit_pos >> 3) Array.Copy(Me.data, pos, Me.data, 0, (Me.end - pos)) Me.end -= pos Return 0 End Function ' resetbuf Public Overrides Function Seek(ByVal offset As Long, ByVal origin As SeekOrigin) As Long Throw New NotSupportedException End Function ' Seek Public Overrides Sub SetLength(ByVal value As Long) Throw New NotSupportedException End Sub ' SetLength Public Overrides Sub Write(ByVal buffer As Byte(), ByVal offset As Integer, ByVal count As Integer) Throw New NotSupportedException End Sub ' Write ' Properties Public Overrides ReadOnly Property CanRead() As Boolean Get If Me.eof Then Return False End If Return Me._inputStream.CanRead End Get End Property ' CanRead Public Overrides ReadOnly Property CanSeek() As Boolean Get Return False End Get End Property ' CanSeek Public Overrides ReadOnly Property CanWrite() As Boolean Get Return False End Get End Property ' CanWrite Public Overrides ReadOnly Property Length() As Long Get Throw New NotSupportedException End Get End Property ' Length Public Overrides Property Position() As Long Get Throw New NotSupportedException End Get Set(ByVal value As Long) Throw New NotSupportedException End Set End Property ' Position ' Fields Private _inputStream As Stream = Nothing ' string table stuff Private Const TBL_CLEAR As Integer = &H100 Private Const TBL_FIRST As Integer = TBL_CLEAR + 1 Private tab_prefix As Integer() Private tab_suffix As Byte() Private zeros As Integer() = New Integer(&H100 - 1) {} Private stack As Byte() ' various state Private block_mode As Boolean Private n_bits As Integer Private maxbits As Integer Private maxmaxcode As Integer Private maxcode As Integer Private bitmask As Integer Private oldcode As Integer Private finchar As Byte Private stackp As Integer Private free_ent As Integer ' input buffer Private data As Byte() = New Byte(&H2710 - 1) {} Private bit_pos As Integer = 0 Private [end] As Integer = 0 Private got As Integer = 0 Private eof As Boolean = False Private Const EXTRA As Integer = &H40 End Class ' UncompressInputStream _ _ Partial Public Class ScriptMain Inherits Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase Enum ScriptResults Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure End Enum ' The execution engine calls this method when the task executes. ' To access the object model, use the Dts object. Connections, variables, events, ' and logging features are available as static members of the Dts class. ' Before returning from this method, set the value of Dts.TaskResult to indicate success or failure. ' ' To open Code and Text Editor Help, press F1. ' To open Object Browser, press Ctrl+Alt+J. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Public Sub Main() Dim result As Integer Dim fireAgain As Boolean Try Dim sourceFile As String = GetConnectionFile_(Me.SourceFile) Dim inStream As Stream = New UncompressInputStream(File.OpenRead(sourceFile)) Dim buf As Byte() = New Byte(&H1000 - 1) {} Dim targetFile As String = GetConnectionFile_(Me.TargetFile) Using outStream As Stream = File.Create(targetFile) Try Dim bytesRead As Integer = 0 Do While True bytesRead = inStream.Read(buf, 0, buf.Length) If bytesRead <= 0 Then Exit Do End If Call outStream.Write(buf, 0, bytesRead) Loop Call outStream.Flush() Catch ex As Exception ' Failed to uncompress. Remove target file. Call outStream.Close() Call File.Delete(targetFile) Throw End Try End Using Call Dts.Events.FireInformation( _ 0, _ String.Empty, _ String.Format("Uncompressed '{0}' to '{1}'.", sourceFile, targetFile), _ String.Empty, _ 0, _ fireAgain) result = ScriptResults.Success Catch ex As Exception result = ScriptResults.Failure Dts.Events.FireError(0, String.Empty, ex.Message, String.Empty, 0) End Try Dts.TaskResult = result End Sub ' Main #Region "Internals" ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' SourceFile property. _ _ Public Property SourceFile() As String Get SourceFile = m_source End Get Set(ByVal value As String) m_source = value End Set End Property ' SourceFile ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' TargetFile property. _ _ Public Property TargetFile() As String Get TargetFile = m_target End Get Set(ByVal value As String) m_target = value End Set End Property ' TargetFile ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Private ReadOnly Property FileConnectionType() As String Get FileConnectionType = "FILE" End Get End Property ' FileConnectionType ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Validate specified connection is the expected type. Private Function ValidateConnection_( _ ByVal managerName As String, _ ByVal expectedType As String) As Boolean Dim result As Boolean Dim manager As ConnectionManager If Not String.IsNullOrEmpty(managerName) Then manager = Dts.Connections(managerName) If manager.CreationName = expectedType Then result = True Else ' Doesn't match expected type. Dts.Events.FireError( _ 0, _ String.Empty, _ String.Format( _ "'{0}' connection is not '{1}' type.", _ managerName, _ expectedType), _ String.Empty, _ 0) End If End If ValidateConnection_ = result End Function ' ValidateConnection_ ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Retrieves file path from specified file connection manager. Private Function GetConnectionFile_(ByVal managerName As String) As String Dim result As String Dim manager As ConnectionManager Dim fileConnection As Object If ValidateConnection_(managerName, "FILE") Then manager = Dts.Connections(managerName) fileConnection = manager.AcquireConnection(Nothing) If Not fileConnection Is Nothing Then result = fileConnection.ToString() Else Dts.Events.FireError( _ 0, _ String.Empty, _ String.Format("''{0}' connection file doesn't exist.", managerName), _ String.Empty, _ 0) End If End If GetConnectionFile_ = result End Function ' GetConnectionFile_ #End Region ' Internals #Region "Attributes" Private m_source As String Private m_target As String #End Region ' Attributes End Class ' ScriptMain]]> ScriptTask_621609c6b8b34789b81ad064fe2a737d msBuild ScriptTask_621609c6b8b34789b81ad064fe2a737d {4D2F88D9-7D8D-49A3-A422-9BF6D9A21D18} ]]> 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 AQEAAAgAABECAigbAAAGKCEAAAYMCCgrAAAKcwgAAAYNIAAQAACNHgAAARMEAgIoHQAABighAAAG EwURBSgsAAAKEwYWEwcJEQQWEQSOaW8cAAAKEwcRBxYxDhEGEQQWEQdvLQAACiveEQZvLgAACt4Y JSgvAAAKEwgRBm8wAAAKEQUoMQAACv4a3gwRBiwHEQZvMgAACtwCKDMAAApvNAAAChZ+NQAACnIL AgBwCBEFKDYAAAp+NQAAChYSAW83AAAKFgreNSUoLwAAChMJFwoCKDMAAApvNAAAChZ+NQAAChEJ bzgAAAp+NQAAChZvOQAACiYoOgAACt4AAigzAAAKBm87AAAKKgAAAAEoAAAAADwALmoAGBoAAAEC ADwASIQADAAAAAAAAAAAv78ANRoAAAETMAEACQAAAAkAABECeyQAAAQKBioiAgN9JAAABCoAABMw AQAJAAAACQAAEQJ7JQAABAoGKiICA30lAAAEKgAAEzABAAgAAAAJAAARckUCAHAKBioTMAYAWAAA AAoAABEDKDwAAAotTAIoMwAACm89AAAKA28+AAAKbz8AAAoEFihAAAAKLQQXCyspAigzAAAKbzQA AAoWfjUAAApyTwIAcAMEKDYAAAp+NQAAChZvOQAACiYHCgYqEzAGAGMAAAALAAARAgNyRQIAcCgg AAAGLFECKDMAAApvPQAACgNvPgAAChRvQQAACihCAAAKDAgsCQhvQwAACgsrKAIoMwAACm80AAAK Fn41AAAKcpcCAHADKEQAAAp+NQAAChZvOQAACiYHCgYqNgIDKEIAAAooRQAACioeAihGAAAKKi7Q BwAAAihHAAAKKh4CKEMAAAoqAAAAEzABABQAAAAMAAARAowFAAAbLQgoAQAAKworAgIKBioiA/4V BQAAGyoeAihJAAAKKgAAABMwAgAoAAAADQAAEQJ7SgAACm9LAAAKCgaMCAAAGy0SKAIAACsKAntK AAAKBm9MAAAKBipKAihJAAAKAnNNAAAKfUoAAAoqAEJTSkIBAAEAAAAAAAwAAAB2NC4wLjMwMzE5 AAAAAAUAbAAAAKwKAAAjfgAAGAsAAPwKAAAjU3RyaW5ncwAAAAAUFgAA5AIAACNVUwD4GAAAEAAA ACNHVUlEAAAACBkAAGgEAAAjQmxvYgAAAAAAAAACAAABVx2iCQkOAAAA+gEzABYAAAEAAAAxAAAA CQAAACkAAAAqAAAAFwAAAE0AAAAMAAAALgAAAA0AAAAEAAAADQAAABAAAAAIAAAAAQAAAAYAAAAD AAAAAwAAAAIAAAAAAEEGAQAAAAAABgBwBG8JBgDIBG8JBgCKA7AIDwCPCQAABgD7AzMFCgBzAyAI CgA1AysGCgCeAysGDgAQA/8IDgBkCMMIBgAUBLAIDgDLA0gJDgDjA1EBBgBQCq0GDgBQCP8IDgAs BFEBBgDnAq0GBgC3AykJDgABAOEFCgBeA70GBgCdBoUABgDlBoUAEgCmBLAFBgCQBK0GEgD0ArAF BgB1B60GBgC0Bq0GFgBHBJ4JCgBbBCsGBgDmBK0GBgArAK0GBgBpB60GBgBdBa0GBgBdB4UADgAl B1EBDgDHCUgJBgDiCq0GBgB6AoUABgB2BoUADgA3AUgJBgATAq0GEgAZBrAFEgA4CLAFGgDXCZwC GgAECJwCDgAACkgJBgDxCW8JBgAfAq0GBgCZCK0GAAAAAEcAAAAAAAEAAQAAAAAABwezCiUAAQAB AAAAAABiCLMKKQABAAIAAAEQAFcKswo5AAEAAwAAAAAAgQZnAVUABQAIAAEAAADaBmcBZQAkABkA BQEAAPEIAAA5ACYAIgAFAQAAEAAAADkAJgApAAIBAAApCgAAbQAnACsAMQDGBw0CMQCdBxUCMQCx Bx0CMQDfByUCUYBWAC0CUYDOAC0CUYDEAC0CUYC4AC0CUYBgAC0CUYB8AC0CUYBtAC0CAQC8AjAC AQCXBjQCUYCPAC0CUYDXAC0CAQCdCjgCAQCoCjACAQDrCTgCAQB/BTACAQD8ATwCAQAaCi0CAQAh Ci0CAQDxAS0CAQD0AS0CAQDZBS0CAQDpAS0CAQCIBz8CAQCBBy0CAQCACi0CAQBDATACAQDjCS0C AQCoAS0CAQCPCi0CAQAmBTwCUYBQAC0CAQDUAQsBAQBhCgsBIQCTCpUBBgYIAS0CVoAKCkICVoDs AkICUCAAAAAABhijCAYAAQBYIAAAAAAGGKMIBgABAGAgAAAAABEYqQgpAQEAiiAAAAAAEwhVCEYC AQCWIAAAAAATCPcGSwIBAKIgAAAAABMITAhQAgEAriAAAAAAEwjhCFUCAQC8IAAAAAAGGKMIWgIB ACwhAAAAAAEAcQYGAAIAgiEAAAAAxgJkBQYAAgCMIQAAAAABAJAHBgACAIwjAAAAAAYA6wRqAQIA xCMAAAAABgALBlQAAgDzJwAAAADGAqMBVAAFAAAoAAAAAAEAKgVgAggAPCgAAAAAxgKMBWUCCQCC IQAAAADGAnUFbAILAIIhAAAAAMYCWAPsAAwAUCgAAAAAxgqTAc8ADwB2KAAAAADGCoUFzwAPAHYo AAAAAMYKUQPPAA8AfCgAAAAAxgpqBXECDwCQKAAAAADGCkMHcQIPAIIhAAAAAMYKUAdsAg8AoigA AAAABhijCAYAEACsKAAAAAAGAOAGBgAQAOQpAAAAAAYIQwJwABAA+SkAAAAABghSAhAAEAAEKgAA AAAGCGECcAARABkqAAAAAAYIcAIQABEAJCoAAAAAAQjNAnAAEgA4KgAAAAABACMBdQISAJwqAAAA AAEAEAFkABQACysAAAAAxgLACWUBFQAZKwAAAADGAt0BagEWACErAAAAAIMA5AJ7AhYALSsAAAAA xgJbBXAAFgA4KwAAAAARAPUAgAIWAFgrAAAAAAEA4QCIAhcAYSsAAAAABhijCAYAGABsKwAAAAAD CLsBSgAYAKArAAAAAAYYowgGABgAAAABAJgGAAABAC8FAAACACIFAAADALkGAAABAP0HAAACAGoK AAADAIkKAAABAOMJAAABAGoKAAACAPAGAAABABgFAAABAP0HAAACAGoKAAADAIkKAAABABgFAAAB ABgFAAABABgFAAABAJACAAACAMACAAABAJACAAABAH8HAAABAMsBAAABAMsBCQCjCAEAEQCjCAYA GQCjCAoAKQCjCBAAMQCjCBUAQQCjCBsAWQCjCAYAYQCjCAYAaQCjCAYAgQCjCCEAkQCjCCkAoQCj CBAAuQCjCAYAwQCjCCkA4QCjCBAA6QCjCBAASQCjCAYAUQCjCAYADACjCAYAFACjCAYAHACjCAYA JACjCAYADAC7AUoAFAC7AUoAHAC7AUoAJAC7AUoAqQCjCAYAqQCjAVQAAQGjCAYA0QCjCBAA+QBb BWQACQFCCmkAEQGjCBAA+QBbBXAACQFCCnQAGQEeBXoAIQEWCIEAKQHoCqcAIQFbBbQACQFCCrkA qQCTAc8AyQCjCAYAMQGfAeUAMQEuA+UAqQBYA+wAqQBkBQYAQQGJCPQAqQAgAwYAMQFKA/oASQEm AwYAyQASCv8AUQE3CgUBCQH1CgsBCQFJCg4BWQEVBxUB0QAHAnAAWQFtCCABQQF3CCkBUQFxCgEA CQHtCjYBUQHTCTsBYQGkBkEBaQF/AnAAcQFNBUgBaQExB1UBeQEJBVoBcQBbBXAACQFJCl8BcQDA CWUBcQDdAWoBiQAxAm4BiQGsAX4BcQCjCAYANACTCpUBPAD1BEoAPAD/BKwBPACjCAYACAAUANYB CAAYANsBCAAcAOABCAAgAOUBCAAkAOoBCAAoAO8BCAAsAPQBCAA4APkBCAA8AP4BCACMAO8BCACg AAMCCACkAAgCKQBjALoDLgALALUCLgATAL4CLgAbAN0CLgAjAOYCQAA7AAgCQAAzADADQwArADkD QwAzADADSQBjAMsDYwArADkDYwAzADADaQBjAN8DgAA7AAgCgwBDAAgCgwBLAAgCgwArADkDiQBj AOwDoAA7AAgCwAA7AAgCwwBrAAgCwwBzAFID4AA7AAgC4wAzADAD4wBTAFgDAwEzADADAwFbAFID SQF7AAAESQGDABgEaQF7AAAEaQGDAD8EQAQzADADQAQ7AAgCYAQzADADYAQ7AAgCgAQzADADgAQ7 AAgCoAQzADADoAQ7AAgCwAQ7AAgC4AQ7AAgCAAU7AAgCAAUzADADIAU7AAgCQAU7AAgCQAUzADAD TwBcAIYAigDBAMcAywDTAC0BMQFPAXYBiQEEAAEABQAFAAYACgAIAA0AAABkCJACAAAJB5UCAABQ CJoCAADzCJ8CAACXAaQCAACJBaQCAABVA6QCAAB4BagCAABUB6gCAABWAqwCAAB0AqwCAADRAqwC AAC/AbACAgAEAAMAAgAFAAUAAgAGAAcAAgAHAAkAAgATAAsAAgAUAA0AAgAVAA8AAgAWABEAAgAX ABMAAQAYABMAAgAbABUAAQAcABUAAgAdABcAAQAeABcAAgAfABkAAgApABsALgA1ADwAQwB7AY4B nQGkAQSAAAAAAAAAAAAAAAAAAAAAAGcBAAAEAAAAAAAAAAAAAACyAUgBAAAAAAQAAAAAAAAAAAAA ALIBrQYAAAAACgAAAAAAAAAAAAAAuwFRAQAAAAAOAAAAAAAAAAAAAADEAZEFAAAAAAEAAAAAAAAA AAAAAM0BMQAAAAAADgAAAAAAAAAAAAAAxAGZAAAAAAAHAAQACAAEAAkABgAAABAAEADfAAAAEABN AN8AAAAAAE8A3wCRAIQBkQCnAQAAAENvbnRleHRWYWx1ZWAxAFRocmVhZFNhZmVPYmplY3RQcm92 aWRlcmAxAEludDMyAENvenlSb2MuU1NJU1BsdXMuMjAxNwA8TW9kdWxlPgBFWFRSQQBMWldfTUFH SUMASERSX0VYVEVOREVEAEhEUl9CTE9DS19NT0RFAEhEUl9GUkVFAFN5c3RlbS5JTwBUQkxfQ0xF QVIATWljcm9zb2Z0LlNxbFNlcnZlci5NYW5hZ2VkRFRTAEhEUl9NQVhCSVRTAElOSVRfQklUUwBN QVhfQklUUwBUQkxfRklSU1QARGlzcG9zZV9fSW5zdGFuY2VfXwBDcmVhdGVfX0luc3RhbmNlX18A dmFsdWVfXwBHZXRDb25uZWN0aW9uRmlsZV8AVmFsaWRhdGVDb25uZWN0aW9uXwBQcm9qZWN0RGF0 YQBkYXRhAG1zY29ybGliAE1pY3Jvc29mdC5WaXN1YWxCYXNpYwBTY3JpcHRUYXNrXzYyMTYwOWM2 YjhiMzQ3ODliODFhZDA2NGZlMmE3MzdkAGdldF9DYW5SZWFkAE9wZW5SZWFkAGVuZABDcmVhdGVJ bnN0YW5jZQBnZXRfR2V0SW5zdGFuY2UAaW5zdGFuY2UAbV9zb3VyY2UAR2V0SGFzaENvZGUAb2xk Y29kZQBtYXhtYXhjb2RlAGJsb2NrX21vZGUAZ2V0X01lc3NhZ2UASURpc3Bvc2FibGUAUnVudGlt ZVR5cGVIYW5kbGUAR2V0VHlwZUZyb21IYW5kbGUAZ2V0X1NvdXJjZUZpbGUAc2V0X1NvdXJjZUZp bGUAZ2V0X1RhcmdldEZpbGUAc2V0X1RhcmdldEZpbGUAZ2V0X0NyZWF0aW9uTmFtZQBtYW5hZ2Vy TmFtZQBNaWNyb3NvZnQuU3FsU2VydmVyLkR0cy5SdW50aW1lAG9uZQBleHBlY3RlZFR5cGUAZ2V0 X0ZpbGVDb25uZWN0aW9uVHlwZQBHZXRUeXBlAEZhaWx1cmUAVlNUQVJUU2NyaXB0T2JqZWN0TW9k ZWxCYXNlAEFwcGxpY2F0aW9uQmFzZQBDbG9zZQBEaXNwb3NlAENyZWF0ZQBFZGl0b3JCcm93c2Fi bGVTdGF0ZQBEZWxldGUAZ2V0X0NhbldyaXRlAEhlbHBLZXl3b3JkQXR0cmlidXRlAEdlbmVyYXRl ZENvZGVBdHRyaWJ1dGUARGVidWdnYWJsZUF0dHJpYnV0ZQBFZGl0b3JCcm93c2FibGVBdHRyaWJ1 dGUAQ29tVmlzaWJsZUF0dHJpYnV0ZQBTdGFuZGFyZE1vZHVsZUF0dHJpYnV0ZQBIaWRlTW9kdWxl TmFtZUF0dHJpYnV0ZQBUYXJnZXRGcmFtZXdvcmtBdHRyaWJ1dGUARGVidWdnZXJIaWRkZW5BdHRy aWJ1dGUATXlHcm91cENvbGxlY3Rpb25BdHRyaWJ1dGUAQ29ubmVjdGlvbkF0dHJpYnV0ZQBEZXNj cmlwdGlvbkF0dHJpYnV0ZQBDb21waWxhdGlvblJlbGF4YXRpb25zQXR0cmlidXRlAENMU0NvbXBs aWFudEF0dHJpYnV0ZQBTU0lTU2NyaXB0VGFza0VudHJ5UG9pbnRBdHRyaWJ1dGUAUnVudGltZUNv bXBhdGliaWxpdHlBdHRyaWJ1dGUAQnl0ZQByZWFkX2J5dGUAZ2V0X1ZhbHVlAHNldF9WYWx1ZQBH ZXRPYmplY3RWYWx1ZQB2YWx1ZQBJSWYAb2ZmAGVvZgByZXNldGJ1ZgBTeXN0ZW0uUnVudGltZS5W ZXJzaW9uaW5nAENvbXBhcmVTdHJpbmcAVG9TdHJpbmcARmx1c2gAZ2V0X0xlbmd0aABTZXRMZW5n dGgAc3RhY2sAZ2V0X0NhblNlZWsATWljcm9zb2Z0LlNxbFNlcnZlci5TY3JpcHRUYXNrAE1pY3Jv c29mdC5TcWxTZXJ2ZXIuRHRzLlRhc2tzLlNjcmlwdFRhc2sAYml0bWFzawBNaWNyb3NvZnQuVmlz dWFsQmFzaWMuTXlTZXJ2aWNlcy5JbnRlcm5hbAByZWFkX2ludGVybmFsAFNjcmlwdE9iamVjdE1v ZGVsAFN5c3RlbS5Db21wb25lbnRNb2RlbABTY3JpcHRUYXNrXzYyMTYwOWM2YjhiMzQ3ODliODFh ZDA2NGZlMmE3MzdkLmRsbABmaWxsAEZpbGVTdHJlYW0AVW5jb21wcmVzc0lucHV0U3RyZWFtAF9p bnB1dFN0cmVhbQBnZXRfSXRlbQBTeXN0ZW0ARW51bQBsZW4AU3lzdGVtLkNvbXBvbmVudE1vZGVs LkRlc2lnbgBTY3JpcHRNYWluAFNlZWtPcmlnaW4Ab3JpZ2luAGdldF9BcHBsaWNhdGlvbgBNeUFw cGxpY2F0aW9uAEZpcmVJbmZvcm1hdGlvbgBJbnRlcmFjdGlvbgBBY3F1aXJlQ29ubmVjdGlvbgBn ZXRfUG9zaXRpb24Ac2V0X1Bvc2l0aW9uAElPRXhjZXB0aW9uAE5vdFN1cHBvcnRlZEV4Y2VwdGlv bgBvAHN0YWNrcABmaW5jaGFyAHBhcnNlX2hlYWRlcgBtX0FwcE9iamVjdFByb3ZpZGVyAG1fVXNl ck9iamVjdFByb3ZpZGVyAG1fQ29tcHV0ZXJPYmplY3RQcm92aWRlcgBtX015V2ViU2VydmljZXNP YmplY3RQcm92aWRlcgBidWZmZXIAQ29ubmVjdGlvbk1hbmFnZXIAVG9JbnRlZ2VyAFN5c3RlbS5D b2RlRG9tLkNvbXBpbGVyAEV2ZW50c09iamVjdFdyYXBwZXIAZ2V0X1VzZXIAZ2V0X0NvbXB1dGVy AE15Q29tcHV0ZXIARmlyZUVycm9yAENsZWFyUHJvamVjdEVycm9yAFNldFByb2plY3RFcnJvcgBB Y3RpdmF0b3IALmN0b3IALmNjdG9yAFN5c3RlbS5EaWFnbm9zdGljcwBNaWNyb3NvZnQuVmlzdWFs QmFzaWMuRGV2aWNlcwBnZXRfV2ViU2VydmljZXMATXlXZWJTZXJ2aWNlcwBNaWNyb3NvZnQuVmlz dWFsQmFzaWMuQXBwbGljYXRpb25TZXJ2aWNlcwBTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2Vydmlj ZXMATWljcm9zb2Z0LlZpc3VhbEJhc2ljLkNvbXBpbGVyU2VydmljZXMAU3lzdGVtLlJ1bnRpbWUu Q29tcGlsZXJTZXJ2aWNlcwBEZWJ1Z2dpbmdNb2RlcwBDb3p5Um9jLlNxbFNlcnZlci5TU0lTLkF0 dHJpYnV0ZXMARXF1YWxzAENvbnZlcnNpb25zAGdldF9Db25uZWN0aW9ucwBiaXRfcG9zAHplcm9z AFJ1bnRpbWVIZWxwZXJzAE9wZXJhdG9ycwBTdWNjZXNzAGdldF9EdHMAbl9iaXRzAG1heGJpdHMA U2NyaXB0UmVzdWx0cwBnZXRfRXZlbnRzAENvbmNhdABGb3JtYXQAT2JqZWN0AE15UHJvamVjdABt X3RhcmdldABvZmZzZXQAc2V0X1Rhc2tSZXN1bHQAZnJlZV9lbnQAY291bnQAZ290AG1fQ29udGV4 dAB0YWJfcHJlZml4AHRhYl9zdWZmaXgAU2NyaXB0VGFza182MjE2MDljNmI4YjM0Nzg5YjgxYWQw NjRmZTJhNzM3ZC5NeQBBcnJheQBDb3B5AElzTnVsbE9yRW1wdHkAAAA3RgBhAGkAbABlAGQAIAB0 AG8AIAByAGUAYQBkACAAbQBhAGcAaQBjACAAbgB1AG0AYgBlAHIAAGVJAG4AcAB1AHQAIABuAG8A dAAgAGkAbgAgAGMAbwBtAHAAcgBlAHMAcwAgAGYAbwByAG0AYQB0ACAAKAByAGUAYQBkACAAbQBh AGcAaQBjACAAbgB1AG0AYgBlAHIAIAAwAHgAAAN4AAADKQAAK0YAYQBpAGwAZQBkACAAdABvACAA cgBlAGEAZAAgAGgAZQBhAGQAZQByAAAvUwB0AHIAZQBhAG0AIABjAG8AbQBwAHIAZQBzAHMAZQBk ACAAdwBpAHQAaAAgAAA3IABiAGkAdABzACwAIABiAHUAdAAgAGMAYQBuACAAbwBuAGwAeQAgAGgA YQBuAGQAbABlACAAAAsgAGIAaQB0AHMAADFIAGUAYQBkAGUAcgAgAGUAeAB0AGUAbgBzAGkAbwBu ACAAYgBpAHQAIABzAGUAdAAAIUgAZQBhAGQAZQByACAAYgBpAHQAIAA2ACAAcwBlAHQAAB9jAG8A cgByAHUAcAB0ACAAaQBuAHAAdQB0ADoAIAAADSAAPgAgADIANQA1AAApYwBvAHIAcgB1AHAAdAAg AGkAbgBwAHUAdAA6ACAAYwBvAGQAZQA9AAAXLAAgAGYAcgBlAGUAXwBlAG4AdAA9AAA5VQBuAGMA bwBtAHAAcgBlAHMAcwBlAGQAIAAnAHsAMAB9ACcAIAB0AG8AIAAnAHsAMQB9ACcALgABCUYASQBM AEUAAEcnAHsAMAB9ACcAIABjAG8AbgBuAGUAYwB0AGkAbwBuACAAaQBzACAAbgBvAHQAIAAnAHsA MQB9ACcAIAB0AHkAcABlAC4AAUsnACcAewAwAH0AJwAgAGMAbwBuAG4AZQBjAHQAaQBvAG4AIABm AGkAbABlACAAZABvAGUAcwBuACcAdAAgAGUAeABpAHMAdAAuAAEAFiZH9pnQL0OMYsDQbkNftwAE IAEBCAMgAAEFIAEBEREEIAEBDgUgAgEODgUgAQERHQcgBAEODg4OBCABAQIGFRIgARIMBhUSIAES CAYVEiABEj0GFRIgARIcBCAAEwAEBwEQCAcgAwgdBQgIBwcFCAgICAgEIAEODgYAAw4ODg4DIAAO BQABDh0OBgADHAIcHAQAAQgcAwcBCBwHFggICB0IHQUdBQgICAgIBQgIHQUICAgICAgIDAAFARKA lQgSgJUICAQAAQ4IBwAEDg4ODg4FBwIIEAgDBwEKAwcBAgMgAAIRBwoIAg4SVR0FDhJVCBJpEmkG AAESgJ0OByADAR0FCAgFAAEBEmkEAAEBDgUgABKAqQUgABKArQIGDgYAAw4OHBwKIAYBCA4ODggQ AgggBQIIDg4OCAMAAAEDBwEOBAcCAgIEAAECDgUgABKAsQYgARKAtRwGAAMIDg4CBQcDDg4cBCAB HBwEAAEcHAUAAg4OHAQgAQIcAyAACAcAARJFEYDBBAcBHgACHgAFEAEAHgAECgEeAAQHARMABhUS IAETAAcGFRJNARMABhUSTQETAAITAAQKARMABSABARMACLd6XFYZNOCJCLA/X38R1Qo6CImEXc2A gMyRCBbPSQu4DDTqBJ0fAAAEEAAAAAQJAAAABB8AAAAEIAAAAARAAAAABIAAAAAEAAEAAAQBAQAA BAAAAAAEAQAAAAcGFRIgARIMBwYVEiABEggHBhUSIAESPQcGFRIgARIcAgYIAwYdBQMGElUDBh0I AgYCAgYFAwYRJAQAABIMBAAAEggEAAASPQQAABIcBSABARJVBCABCAgGIAIKChFZBCABAQoDIAAK BSACAg4OBCAAEkUHEAEBHgAeAAcwAQEBEB4ABAgAEgwECAASCAQIABI9BAgAEhwDKAACAygACgMo AA4EKAATAAgBAAgAAAAAAB4BAAEAVAIWV3JhcE5vbkV4Y2VwdGlvblRocm93cwEIAQACAAAAAABJ AQAaLk5FVEZyYW1ld29yayxWZXJzaW9uPXY0LjUBAFQOFEZyYW1ld29ya0Rpc3BsYXlOYW1lEi5O RVQgRnJhbWV3b3JrIDQuNQgBAAEAAAAAABgBAApNeVRlbXBsYXRlCDExLjAuMC4wAAAFAQAAAABh AQA0U3lzdGVtLldlYi5TZXJ2aWNlcy5Qcm90b2NvbHMuU29hcEh0dHBDbGllbnRQcm90b2NvbBJD cmVhdGVfX0luc3RhbmNlX18TRGlzcG9zZV9fSW5zdGFuY2VfXwAAABABAAtNeS5Db21wdXRlcgAA EwEADk15LkFwcGxpY2F0aW9uAAAMAQAHTXkuVXNlcgAAEwEADk15LldlYlNlcnZpY2VzAAAXAQAS RmlsZUNvbm5lY3Rpb25UeXBlAAAmAQAhU2VsZWN0IGNvbm5lY3Rpb24gdG8gc291cmNlIGZpbGUu AAAmAQAhU2VsZWN0IGNvbm5lY3Rpb24gdG8gdGFyZ2V0IGZpbGUuAAAAAExJAAAAAAAAAAAAAGZJ AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYSQAAAAAAAAAAAAAAAF9Db3JEbGxNYWluAG1zY29y ZWUuZGxsAAAAAAD/JQAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEAAAABgA AIAAAAAAAAAAAAAAAAAAAAEAAQAAADAAAIAAAAAAAAAAAAAAAAAAAAEAAAAAAEgAAABYYAAA1AIA AAAAAAAAAAAA1AI0AAAAVgBTAF8AVgBFAFIAUwBJAE8ATgBfAEkATgBGAE8AAAAAAL0E7/4AAAEA AAAAAAAAAAAAAAAAAAAAAD8AAAAAAAAABAAAAAIAAAAAAAAAAAAAAAAAAABEAAAAAQBWAGEAcgBG AGkAbABlAEkAbgBmAG8AAAAAACQABAAAAFQAcgBhAG4AcwBsAGEAdABpAG8AbgAAAAAAAACwBDQC AAABAFMAdAByAGkAbgBnAEYAaQBsAGUASQBuAGYAbwAAABACAAABADAAMAAwADAAMAA0AGIAMAAA ACwAAgABAEYAaQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAAAgAAAAMAAIAAEARgBpAGwA ZQBWAGUAcgBzAGkAbwBuAAAAAAAwAC4AMAAuADAALgAwAAAAgAAwAAEASQBuAHQAZQByAG4AYQBs AE4AYQBtAGUAAABTAGMAcgBpAHAAdABUAGEAcwBrAF8ANgAyADEANgAwADkAYwA2AGIAOABiADMA NAA3ADgAOQBiADgAMQBhAGQAMAA2ADQAZgBlADIAYQA3ADMANwBkAC4AZABsAGwAAAAoAAIAAQBM AGUAZwBhAGwAQwBvAHAAeQByAGkAZwBoAHQAAAAgAAAAiAAwAAEATwByAGkAZwBpAG4AYQBsAEYA aQBsAGUAbgBhAG0AZQAAAFMAYwByAGkAcAB0AFQAYQBzAGsAXwA2ADIAMQA2ADAAOQBjADYAYgA4 AGIAMwA0ADcAOAA5AGIAOAAxAGEAZAAwADYANABmAGUAMgBhADcAMwA3AGQALgBkAGwAbAAAADQA CAABAFAAcgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8AbgAAADAALgAwAC4AMAAuADAAAAA4AAgAAQBB AHMAcwBlAG0AYgBsAHkAIABWAGUAcgBzAGkAbwBuAAAAMAAuADAALgAwAC4AMAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAwAAAB4OQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=