' Windows Installer database table export for use with Windows Scripting Host
' Copyright (c) Microsoft Corporation. All rights reserved.
' Demonstrates the use of the Database.Export method and MsiDatabaseExport API
'
Option Explicit

Const msiOpenDatabaseModeReadOnly     = 0

Dim shortNames:shortNames = False
Dim argCount:argCount = Wscript.Arguments.Count
Dim iArg:iArg = 0
If (argCount < 3) Then
	Wscript.Echo "Windows Installer database table export utility" &_
		vbNewLine & " 1st argument is path to MSI database (installer package)" &_
		vbNewLine & " 2nd argument is path to folder to contain the exported table(s)" &_
		vbNewLine & " Subseqent arguments are table names to export (case-sensitive)" &_
		vbNewLine & " Specify '*' to export all tables, including _SummaryInformation" &_
		vbNewLine & " Specify /s or -s anywhere before table list to force short names" &_
		vbNewLine &_
		vbNewLine & " Copyright (C) Microsoft Corporation.  All rights reserved."
	Wscript.Quit 1
End If

On Error Resume Next
Dim installer : Set installer = Nothing
Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError

Dim database : Set database = installer.OpenDatabase(NextArgument, msiOpenDatabaseModeReadOnly) : CheckError
Dim folder : folder = NextArgument
Dim table, view, record
While iArg < argCount
	table = NextArgument
	If table = "*" Then
		Set view = database.OpenView("SELECT `Name` FROM _Tables")
		view.Execute : CheckError
		Do
			Set record = view.Fetch : CheckError
			If record Is Nothing Then Exit Do
			table = record.StringData(1)
			Export table, folder : CheckError
		Loop
		Set view = Nothing
		table = "_SummaryInformation" 'not an actual table
		Export table, folder : Err.Clear  ' ignore if no summary information
	Else
		Export table, folder : CheckError
	End If
Wend
Wscript.Quit(0)            

Sub Export(table, folder)
	Dim file : If shortNames Then file = Left(table, 8) & ".idt" Else file = table & ".idt"
	database.Export table, folder, file
End Sub

Function NextArgument
	Dim arg, chFlag
	Do
		arg = Wscript.Arguments(iArg)
		iArg = iArg + 1
		chFlag = AscW(arg)
		If (chFlag = AscW("/")) Or (chFlag = AscW("-")) Then
			chFlag = UCase(Right(arg, Len(arg)-1))
			If chFlag = "S" Then 
				shortNames = True
			Else
				Wscript.Echo "Invalid option flag:", arg : Wscript.Quit 1
			End If
		Else
			Exit Do
		End If
	Loop
	NextArgument = arg
End Function

Sub CheckError
	Dim message, errRec
	If Err = 0 Then Exit Sub
	message = Err.Source & " " & Hex(Err) & ": " & Err.Description
	If Not installer Is Nothing Then
		Set errRec = installer.LastErrorRecord
		If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText
	End If
	Wscript.Echo message
	Wscript.Quit 2
End Sub

'' SIG '' Begin signature block
'' SIG '' MIImSwYJKoZIhvcNAQcCoIImPDCCJjgCAQExDzANBglg
'' SIG '' hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
'' SIG '' BgEEAYI3AgEeMCQCAQEEEE7wKRaZJ7VNj+Ws4Q8X66sC
'' SIG '' AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
'' SIG '' VI4Hnca1EkyTrUPvd2CuA7Hjy/dDS98JnuMo4x3O0eig
'' SIG '' gguBMIIFCTCCA/GgAwIBAgITMwAABXwzcc9L673fygAA
'' SIG '' AAAFfDANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJV
'' SIG '' UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
'' SIG '' UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
'' SIG '' cmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBT
'' SIG '' aWduaW5nIFBDQSAyMDEwMB4XDTI0MDQyNDIwMjA0NloX
'' SIG '' DTI1MDQxOTIwMjA0NlowfzELMAkGA1UEBhMCVVMxEzAR
'' SIG '' BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
'' SIG '' bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
'' SIG '' bjEpMCcGA1UEAxMgTWljcm9zb2Z0IFdpbmRvd3MgS2l0
'' SIG '' cyBQdWJsaXNoZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IB
'' SIG '' DwAwggEKAoIBAQDuXrTpeGqa9J5HOOYHUPYdqaUaLkRs
'' SIG '' zxXXZ8vW6hKNpSbkHFsB1K8mlscbD29EryD2l9f3JRnx
'' SIG '' qDEzY5dGhp8MvGO1FhuJURH5Zkpt2Dce8B05RAw9gVVI
'' SIG '' 6ODjSZFbra/wKR3b+NNOabK9eB99SCzUBmv6Kh/bYdeR
'' SIG '' oh5yjYPJIL2FEBOh1jtUq6d7zlgXdI+ajekWsLULwtwy
'' SIG '' Y5xTx9CuCzqKxFyRZTkdZTfBVJXPlUuFFyI39wp2b0KW
'' SIG '' Bg8vuIux8i9GAzTZOTsmlbd+808Y8/Mxt7z2j10IEBx3
'' SIG '' wdScRCXgOYH0b4kDbARgYA/JXZlWrEKbIomQcfjFgl3k
'' SIG '' qJs9AgMBAAGjggF9MIIBeTAfBgNVHSUEGDAWBgorBgEE
'' SIG '' AYI3CgMUBggrBgEFBQcDAzAdBgNVHQ4EFgQUjr/0Zy+p
'' SIG '' LzaM7/6H0aEaoBark5swVAYDVR0RBE0wS6RJMEcxLTAr
'' SIG '' BgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJhdGlv
'' SIG '' bnMgTGltaXRlZDEWMBQGA1UEBRMNMjI5OTAzKzUwMjIz
'' SIG '' NDAfBgNVHSMEGDAWgBTm/F97uyIAWORyTrX0IXQjMubv
'' SIG '' rDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3JsLm1p
'' SIG '' Y3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWND
'' SIG '' b2RTaWdQQ0FfMjAxMC0wNy0wNi5jcmwwWgYIKwYBBQUH
'' SIG '' AQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3Lm1p
'' SIG '' Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY0NvZFNpZ1BD
'' SIG '' QV8yMDEwLTA3LTA2LmNydDAMBgNVHRMBAf8EAjAAMA0G
'' SIG '' CSqGSIb3DQEBCwUAA4IBAQC3ldMZx+mZuf+EY2cLU0CN
'' SIG '' baZL8/85vD6tWvmuwfpBlQMgcrofbyDfuveWw4HqOJht
'' SIG '' 1/UcW3dHuG/UQEzHGFPlL8ZwWonopyWGWyzELA2YQwXq
'' SIG '' RAwlFFbxLwQrAWY1QQw+X0R6mt2+3EpWd0HRusSrExZn
'' SIG '' dUxI3u0OY4KJ1ZMNeddkKR6o4BRmh8hTYhr2edYFfkYX
'' SIG '' MuhoSzCXZqexUhCgIMWuP3XiFDIuteaRlcKfuq2eV+y3
'' SIG '' bXadRbJu0TPbmsY1f4ms+an/4RSS271XGbR5R4zMKWRP
'' SIG '' hbfdU1W1R88jAf4+ziOfF0ZfLHKt25fw/X1d4xbx4Cwx
'' SIG '' o3XDRA6EyM7YMIIGcDCCBFigAwIBAgIKYQxSTAAAAAAA
'' SIG '' AzANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMx
'' SIG '' EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl
'' SIG '' ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh
'' SIG '' dGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2Vy
'' SIG '' dGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMTAwNzA2
'' SIG '' MjA0MDE3WhcNMjUwNzA2MjA1MDE3WjB+MQswCQYDVQQG
'' SIG '' EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE
'' SIG '' BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENv
'' SIG '' cnBvcmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29k
'' SIG '' ZSBTaWduaW5nIFBDQSAyMDEwMIIBIjANBgkqhkiG9w0B
'' SIG '' AQEFAAOCAQ8AMIIBCgKCAQEA6Q5kUHlntcTj/QkATJ6U
'' SIG '' rPdWaOpE2M/FWE+ppXZ8bUW60zmStKQe+fllguQX0o/9
'' SIG '' RJwI6GWTzixVhL99COMuK6hBKxi3oktuSUxrFQfe0dLC
'' SIG '' iR5xlM21f0u0rwjYzIjWaxeUOpPOJj/s5v40mFfVHV1J
'' SIG '' 9rIqLtWFu1k/+JC0K4N0yiuzO0bj8EZJwRdmVMkcvR3E
'' SIG '' VWJXcvhnuSUgNN5dpqWVXqsogM3Vsp7lA7Vj07IUyMHI
'' SIG '' iiYKWX8H7P8O7YASNUwSpr5SW/Wm2uCLC0h31oVH1RC5
'' SIG '' xuiq7otqLQVcYMa0KlucIxxfReMaFB5vN8sZM4BqiU2j
'' SIG '' amZjeJPVMM+VHwIDAQABo4IB4zCCAd8wEAYJKwYBBAGC
'' SIG '' NxUBBAMCAQAwHQYDVR0OBBYEFOb8X3u7IgBY5HJOtfQh
'' SIG '' dCMy5u+sMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBB
'' SIG '' MAsGA1UdDwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8G
'' SIG '' A1UdIwQYMBaAFNX2VsuP6KJcYmjRPZSQW9fOmhjEMFYG
'' SIG '' A1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwubWljcm9z
'' SIG '' b2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0Nl
'' SIG '' ckF1dF8yMDEwLTA2LTIzLmNybDBaBggrBgEFBQcBAQRO
'' SIG '' MEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cubWljcm9z
'' SIG '' b2Z0LmNvbS9wa2kvY2VydHMvTWljUm9vQ2VyQXV0XzIw
'' SIG '' MTAtMDYtMjMuY3J0MIGdBgNVHSAEgZUwgZIwgY8GCSsG
'' SIG '' AQQBgjcuAzCBgTA9BggrBgEFBQcCARYxaHR0cDovL3d3
'' SIG '' dy5taWNyb3NvZnQuY29tL1BLSS9kb2NzL0NQUy9kZWZh
'' SIG '' dWx0Lmh0bTBABggrBgEFBQcCAjA0HjIgHQBMAGUAZwBh
'' SIG '' AGwAXwBQAG8AbABpAGMAeQBfAFMAdABhAHQAZQBtAGUA
'' SIG '' bgB0AC4gHTANBgkqhkiG9w0BAQsFAAOCAgEAGnTvV08p
'' SIG '' e8QWhXi4UNMi/AmdrIKX+DT/KiyXlRLl5L/Pv5PI4zSp
'' SIG '' 24G43B4AvtI1b6/lf3mVd+UC1PHr2M1OHhthosJaIxrw
'' SIG '' jKhiUUVnCOM/PB6T+DCFF8g5QKbXDrMhKeWloWmMIpPM
'' SIG '' dJjnoUdD8lOswA8waX/+0iUgbW9h098H1dlyACxphnY9
'' SIG '' UdumOUjJN2FtB91TGcun1mHCv+KDqw/ga5uV1n0oUbCJ
'' SIG '' SlGkmmzItx9KGg5pqdfcwX7RSXCqtq27ckdjF/qm1qKm
'' SIG '' huyoEESbY7ayaYkGx0aGehg/6MUdIdV7+QIjLcVBy78d
'' SIG '' TMgW77Gcf/wiS0mKbhXjpn92W9FTeZGFndXS2z1zNfM8
'' SIG '' rlSyUkdqwKoTldKOEdqZZ14yjPs3hdHcdYWch8ZaV4XC
'' SIG '' v90Nj4ybLeu07s8n07VeafqkFgQBpyRnc89NT7beBVaX
'' SIG '' evfpUk30dwVPhcbYC/GO7UIJ0Q124yNWeCImNr7KsYxu
'' SIG '' qh3khdpHM2KPpMmRM19xHkCvmGXJIuhCISWKHC1g2TeJ
'' SIG '' QYkqFg/XYTyUaGBS79ZHmaCAQO4VgXc+nOBTGBpQHTiV
'' SIG '' mx5mMxMnORd4hzbOTsNfsvU9R1O24OXbC2E9KteSLM43
'' SIG '' Wj5AQjGkHxAIwlacvyRdUQKdannSF9PawZSOB3slcUSr
'' SIG '' Bmrm1MbfI5qWdcUxghoiMIIaHgIBATCBlTB+MQswCQYD
'' SIG '' VQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G
'' SIG '' A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
'' SIG '' IENvcnBvcmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQg
'' SIG '' Q29kZSBTaWduaW5nIFBDQSAyMDEwAhMzAAAFfDNxz0vr
'' SIG '' vd/KAAAAAAV8MA0GCWCGSAFlAwQCAQUAoIHGMBkGCSqG
'' SIG '' SIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcC
'' SIG '' AQsxDjAMBgorBgEEAYI3AgEVMC8GCSqGSIb3DQEJBDEi
'' SIG '' BCB2HP/BYQ/aISbvtLgqg6C6/l8LXj7DELdpEVbURjVP
'' SIG '' IjBaBgorBgEEAYI3AgEMMUwwSqAkgCIATQBpAGMAcgBv
'' SIG '' AHMAbwBmAHQAIABXAGkAbgBkAG8AdwBzoSKAIGh0dHA6
'' SIG '' Ly93d3cubWljcm9zb2Z0LmNvbS93aW5kb3dzMA0GCSqG
'' SIG '' SIb3DQEBAQUABIIBAFFLKI6xfNPRcfTbGIbqni7Iel4z
'' SIG '' CE2dn4XhEyMyl376jh5/jOPnTEFbL5mV9Zimb9IKPRmS
'' SIG '' uYC09PC63JCx63V5/L3mYKK/FQjPfTaZSjBHjl3r/+pm
'' SIG '' 3igLLItzZDAfImA8UZ+ypPVsQS7FDur27Haqo8fKeSez
'' SIG '' 7E+RxVvY4P2whp3Y2BuF5V/uCbQpZU3m4UfCh5m0uqlE
'' SIG '' nSjSAoheRC6wCPnHS/60eKWzhY6ByCZI0v3B8JC9/EBs
'' SIG '' 59/902Eg7XW7qNuofgI26K8yhAtpGiix4a54mU3JsLmM
'' SIG '' bmh/arDPk0/TQGB5towvz8nd7mRtdSw+bDW8zl8UaLqY
'' SIG '' bn8+AZWhgheUMIIXkAYKKwYBBAGCNwMDATGCF4Awghd8
'' SIG '' BgkqhkiG9w0BBwKgghdtMIIXaQIBAzEPMA0GCWCGSAFl
'' SIG '' AwQCAQUAMIIBUgYLKoZIhvcNAQkQAQSgggFBBIIBPTCC
'' SIG '' ATkCAQEGCisGAQQBhFkKAwEwMTANBglghkgBZQMEAgEF
'' SIG '' AAQgxmcrbu2BB6Rvm3DirOwJojFca/wQszBb28fx7DtS
'' SIG '' 06kCBme3pheEaRgTMjAyNTAzMTIxMTE1MDMuNjUyWjAE
'' SIG '' gAIB9KCB0aSBzjCByzELMAkGA1UEBhMCVVMxEzARBgNV
'' SIG '' BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx
'' SIG '' HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEl
'' SIG '' MCMGA1UECxMcTWljcm9zb2Z0IEFtZXJpY2EgT3BlcmF0
'' SIG '' aW9uczEnMCUGA1UECxMeblNoaWVsZCBUU1MgRVNOOkEw
'' SIG '' MDAtMDVFMC1EOTQ3MSUwIwYDVQQDExxNaWNyb3NvZnQg
'' SIG '' VGltZS1TdGFtcCBTZXJ2aWNloIIR6jCCByAwggUIoAMC
'' SIG '' AQICEzMAAAIIeJ1YXZLH2VIAAQAAAggwDQYJKoZIhvcN
'' SIG '' AQELBQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh
'' SIG '' c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV
'' SIG '' BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UE
'' SIG '' AxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAw
'' SIG '' HhcNMjUwMTMwMTk0MjUzWhcNMjYwNDIyMTk0MjUzWjCB
'' SIG '' yzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0
'' SIG '' b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1p
'' SIG '' Y3Jvc29mdCBDb3Jwb3JhdGlvbjElMCMGA1UECxMcTWlj
'' SIG '' cm9zb2Z0IEFtZXJpY2EgT3BlcmF0aW9uczEnMCUGA1UE
'' SIG '' CxMeblNoaWVsZCBUU1MgRVNOOkEwMDAtMDVFMC1EOTQ3
'' SIG '' MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBT
'' SIG '' ZXJ2aWNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
'' SIG '' CgKCAgEAtctwCOZSM9yKdZyuQTFFGxkbI0pws/1RrN98
'' SIG '' 72NDXrIbD4H5Xd/2d/93UvFigS5Q5aLJlyTmZRUojV1H
'' SIG '' eg0ycQPYpP2WwnVie/Cyo2zd7RZF9nOkUaUTKQPLKv6A
'' SIG '' W0a8j93PEP4MaSQChx8/HLkp+3sHwi85zZsapYk5N0OS
'' SIG '' x6s9j43mCg/3WyjAU9kwAFgL7puM/x1yCerRXRqDVeFl
'' SIG '' EWbMAkrekTsGqkNaAGBrxJ3R/g12atfmx7IL3DzQnU0i
'' SIG '' KVqG0IiUv1Ci4kdNijQqgeCPcmoxU0pZzCBDM/zYud/K
'' SIG '' BiOuKYXLzaVHtvqmilh2fHeE9SoIb0ZkkheGBeQzRCW8
'' SIG '' WglMLMu51C5rBZ02jo1TqExVln1l7wbjipAXEClhir65
'' SIG '' Ive+o+MfuXswD9+n6t7unR0SUy2QLuHRLjqKFN/pDGa/
'' SIG '' kQWFo0x0AilfsmdUk9HhpGx16ANpcskQ5TYwUHKHmSMV
'' SIG '' gmbbP3d/p39Y4kizen+sHR2lM9AA8Dk0P2hKNSAvOXhX
'' SIG '' j78iCmsRSZBlNjKmul86t6gqubaJCB7Y4aILKxIHwyk3
'' SIG '' hV07XYZdSD7S3AnzHFjhhgF6LFVFOxvePBelveuNuH9l
'' SIG '' Rw/C9xaMgCPfq+M8iEFJqohEs7kFnlqU04xWMApoF2hj
'' SIG '' rkg1fHDTlUAeiD8z53mYVU48MWwGZWkCAwEAAaOCAUkw
'' SIG '' ggFFMB0GA1UdDgQWBBSjMeL3zqnFE4GDlQfX9fP5oXoB
'' SIG '' TTAfBgNVHSMEGDAWgBSfpxVdAF5iXYP05dJlpxtTNRnp
'' SIG '' cjBfBgNVHR8EWDBWMFSgUqBQhk5odHRwOi8vd3d3Lm1p
'' SIG '' Y3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQl
'' SIG '' MjBUaW1lLVN0YW1wJTIwUENBJTIwMjAxMCgxKS5jcmww
'' SIG '' bAYIKwYBBQUHAQEEYDBeMFwGCCsGAQUFBzAChlBodHRw
'' SIG '' Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRz
'' SIG '' L01pY3Jvc29mdCUyMFRpbWUtU3RhbXAlMjBQQ0ElMjAy
'' SIG '' MDEwKDEpLmNydDAMBgNVHRMBAf8EAjAAMBYGA1UdJQEB
'' SIG '' /wQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIHgDAN
'' SIG '' BgkqhkiG9w0BAQsFAAOCAgEAUbMyiSsAH7MKnWkDxYmm
'' SIG '' Af2TQGFg2tONF03ELAmgrmuZ7BtSLJWGkqR+5oky6+nk
'' SIG '' BKl3M2aKnjmv8bw5zBonxjXWtAh20MLaZyIbLrayjto4
'' SIG '' YxGhsJSYDjKpdta+yJOl5wc2tHt4QTruFAZDJfyxF/gF
'' SIG '' Ebe4u/kUzbBjdHFz8D0m0xRPvc+1moBm2PacFKPzcZBi
'' SIG '' bHqhgkP/StlTFO+G8OXu/vCBlITNsbKST6p0nhz4WJnA
'' SIG '' dFnJTsXFSH4/2bkL8KKz20xBGA1Qs0jd+3NMgoTzGOxS
'' SIG '' fhxhQTSccHeZSiK+xmH6vGtIDogtpYxmJXOK7eHAnndV
'' SIG '' yoPN39JfWlFYplgWF7XzXm4aX6+i3N4w/DYLKw4c7dFo
'' SIG '' JyHZ02Qou48Y7CAYpR/faWOf4em0HCyivxOigj/RNWDe
'' SIG '' /Hy2jl5FzMjusS670GfrgkotYXU7nxQu6EgfwlOUW3yF
'' SIG '' R1xtI9aNp9bZ3uHgmzXyqlD0xN9bTW1gUdt2IstK95EJ
'' SIG '' h3mBNRi2y+KcJJ6moqdQUZ+liFDCbYJ3GsBDd93/AGBm
'' SIG '' eGtzZx6KcxlVep3n3xlWoOE3bsvqMtWBfrIQoaF3TKn4
'' SIG '' T1haR3t7iRk+BiRIjbOPtvGv8B1LhfmkWkdHDeT+15Ts
'' SIG '' FNd+tIlAibUHbykGjQMBiNvSjsEt0Bq4kfRdozhj1AJa
'' SIG '' XhMwggdxMIIFWaADAgECAhMzAAAAFcXna54Cm0mZAAAA
'' SIG '' AAAVMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJV
'' SIG '' UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
'' SIG '' UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
'' SIG '' cmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBD
'' SIG '' ZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAxMDAeFw0yMTA5
'' SIG '' MzAxODIyMjVaFw0zMDA5MzAxODMyMjVaMHwxCzAJBgNV
'' SIG '' BAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD
'' SIG '' VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQg
'' SIG '' Q29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBU
'' SIG '' aW1lLVN0YW1wIFBDQSAyMDEwMIICIjANBgkqhkiG9w0B
'' SIG '' AQEFAAOCAg8AMIICCgKCAgEA5OGmTOe0ciELeaLL1yR5
'' SIG '' vQ7VgtP97pwHB9KpbE51yMo1V/YBf2xK4OK9uT4XYDP/
'' SIG '' XE/HZveVU3Fa4n5KWv64NmeFRiMMtY0Tz3cywBAY6GB9
'' SIG '' alKDRLemjkZrBxTzxXb1hlDcwUTIcVxRMTegCjhuje3X
'' SIG '' D9gmU3w5YQJ6xKr9cmmvHaus9ja+NSZk2pg7uhp7M62A
'' SIG '' W36MEBydUv626GIl3GoPz130/o5Tz9bshVZN7928jaTj
'' SIG '' kY+yOSxRnOlwaQ3KNi1wjjHINSi947SHJMPgyY9+tVSP
'' SIG '' 3PoFVZhtaDuaRr3tpK56KTesy+uDRedGbsoy1cCGMFxP
'' SIG '' LOJiss254o2I5JasAUq7vnGpF1tnYN74kpEeHT39IM9z
'' SIG '' fUGaRnXNxF803RKJ1v2lIH1+/NmeRd+2ci/bfV+Autuq
'' SIG '' fjbsNkz2K26oElHovwUDo9Fzpk03dJQcNIIP8BDyt0cY
'' SIG '' 7afomXw/TNuvXsLz1dhzPUNOwTM5TI4CvEJoLhDqhFFG
'' SIG '' 4tG9ahhaYQFzymeiXtcodgLiMxhy16cg8ML6EgrXY28M
'' SIG '' yTZki1ugpoMhXV8wdJGUlNi5UPkLiWHzNgY1GIRH29wb
'' SIG '' 0f2y1BzFa/ZcUlFdEtsluq9QBXpsxREdcu+N+VLEhReT
'' SIG '' wDwV2xo3xwgVGD94q0W29R6HXtqPnhZyacaue7e3Pmri
'' SIG '' Lq0CAwEAAaOCAd0wggHZMBIGCSsGAQQBgjcVAQQFAgMB
'' SIG '' AAEwIwYJKwYBBAGCNxUCBBYEFCqnUv5kxJq+gpE8RjUp
'' SIG '' zxD/LwTuMB0GA1UdDgQWBBSfpxVdAF5iXYP05dJlpxtT
'' SIG '' NRnpcjBcBgNVHSAEVTBTMFEGDCsGAQQBgjdMg30BATBB
'' SIG '' MD8GCCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29m
'' SIG '' dC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5odG0w
'' SIG '' EwYDVR0lBAwwCgYIKwYBBQUHAwgwGQYJKwYBBAGCNxQC
'' SIG '' BAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
'' SIG '' EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU1fZWy4/oolxi
'' SIG '' aNE9lJBb186aGMQwVgYDVR0fBE8wTTBLoEmgR4ZFaHR0
'' SIG '' cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJv
'' SIG '' ZHVjdHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3Js
'' SIG '' MFoGCCsGAQUFBwEBBE4wTDBKBggrBgEFBQcwAoY+aHR0
'' SIG '' cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9N
'' SIG '' aWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcnQwDQYJKoZI
'' SIG '' hvcNAQELBQADggIBAJ1VffwqreEsH2cBMSRb4Z5yS/yp
'' SIG '' b+pcFLY+TkdkeLEGk5c9MTO1OdfCcTY/2mRsfNB1OW27
'' SIG '' DzHkwo/7bNGhlBgi7ulmZzpTTd2YurYeeNg2LpypglYA
'' SIG '' A7AFvonoaeC6Ce5732pvvinLbtg/SHUB2RjebYIM9W0j
'' SIG '' VOR4U3UkV7ndn/OOPcbzaN9l9qRWqveVtihVJ9AkvUCg
'' SIG '' vxm2EhIRXT0n4ECWOKz3+SmJw7wXsFSFQrP8DJ6LGYnn
'' SIG '' 8AtqgcKBGUIZUnWKNsIdw2FzLixre24/LAl4FOmRsqlb
'' SIG '' 30mjdAy87JGA0j3mSj5mO0+7hvoyGtmW9I/2kQH2zsZ0
'' SIG '' /fZMcm8Qq3UwxTSwethQ/gpY3UA8x1RtnWN0SCyxTkct
'' SIG '' wRQEcb9k+SS+c23Kjgm9swFXSVRk2XPXfx5bRAGOWhmR
'' SIG '' aw2fpCjcZxkoJLo4S5pu+yFUa2pFEUep8beuyOiJXk+d
'' SIG '' 0tBMdrVXVAmxaQFEfnyhYWxz/gq77EFmPWn9y8FBSX5+
'' SIG '' k77L+DvktxW/tM4+pTFRhLy/AsGConsXHRWJjXD+57XQ
'' SIG '' KBqJC4822rpM+Zv/Cuk0+CQ1ZyvgDbjmjJnW4SLq8CdC
'' SIG '' PSWU5nR0W2rRnj7tfqAxM328y+l7vzhwRNGQ8cirOoo6
'' SIG '' CGJ/2XBjU02N7oJtpQUQwXEGahC0HVUzWLOhcGbyoYID
'' SIG '' TTCCAjUCAQEwgfmhgdGkgc4wgcsxCzAJBgNVBAYTAlVT
'' SIG '' MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS
'' SIG '' ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y
'' SIG '' YXRpb24xJTAjBgNVBAsTHE1pY3Jvc29mdCBBbWVyaWNh
'' SIG '' IE9wZXJhdGlvbnMxJzAlBgNVBAsTHm5TaGllbGQgVFNT
'' SIG '' IEVTTjpBMDAwLTA1RTAtRDk0NzElMCMGA1UEAxMcTWlj
'' SIG '' cm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZaIjCgEBMAcG
'' SIG '' BSsOAwIaAxUAjZL7tDSnEo3WCsq4SWXLMlzlEzSggYMw
'' SIG '' gYCkfjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2Fz
'' SIG '' aGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UE
'' SIG '' ChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQD
'' SIG '' Ex1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDAN
'' SIG '' BgkqhkiG9w0BAQsFAAIFAOt72GswIhgPMjAyNTAzMTIw
'' SIG '' OTU0NTFaGA8yMDI1MDMxMzA5NTQ1MVowdDA6BgorBgEE
'' SIG '' AYRZCgQBMSwwKjAKAgUA63vYawIBADAHAgEAAgITrDAH
'' SIG '' AgEAAgISrTAKAgUA630p6wIBADA2BgorBgEEAYRZCgQC
'' SIG '' MSgwJjAMBgorBgEEAYRZCgMCoAowCAIBAAIDB6EgoQow
'' SIG '' CAIBAAIDAYagMA0GCSqGSIb3DQEBCwUAA4IBAQCpQByE
'' SIG '' x8EjEcevpRo6MKvL3ExUhGMGMkx9EEHB434M/16/Xg0A
'' SIG '' y5B0i9/L018ifBCFRmt3zX1jRdWhi5QODz2FHngL5Qec
'' SIG '' BaPpGLY2iqj36IPdp3/aRPR0BstG3btKJwY7IiY+0cmy
'' SIG '' eEFHvU3qwP9BpcGz2NTRRHAB6qizIc6RcrQb777SNXwF
'' SIG '' 1Zx1rmH3ltBFk4ms5k/5t84DUC1BNRLRfvPIcOA/tnhp
'' SIG '' zD9moqMnIIVezOzh82MH/nbuAAgp2SoM3b5fQ59SeEn6
'' SIG '' wW436VX7r+gHGSGDg2T1P4RrGbwBFmmaNvk94i+JR+V/
'' SIG '' e8W56Pb+zKjGiq8cbwcAKanr83kxMYIEDTCCBAkCAQEw
'' SIG '' gZMwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp
'' SIG '' bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoT
'' SIG '' FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMd
'' SIG '' TWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTACEzMA
'' SIG '' AAIIeJ1YXZLH2VIAAQAAAggwDQYJYIZIAWUDBAIBBQCg
'' SIG '' ggFKMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAv
'' SIG '' BgkqhkiG9w0BCQQxIgQgkCLHELHVg7j3qIoFD8y0nK9u
'' SIG '' Vd7Xkux47gr85ORpcFIwgfoGCyqGSIb3DQEJEAIvMYHq
'' SIG '' MIHnMIHkMIG9BCCP/45vCR2tltTve+/LffhbdmeTZiqr
'' SIG '' bT5OkPvUUaZnqTCBmDCBgKR+MHwxCzAJBgNVBAYTAlVT
'' SIG '' MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS
'' SIG '' ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y
'' SIG '' YXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0
'' SIG '' YW1wIFBDQSAyMDEwAhMzAAACCHidWF2Sx9lSAAEAAAII
'' SIG '' MCIEIJju0iBo8L3AU0cCb6iMG9r56ANms4CfGXbqaJUV
'' SIG '' yExnMA0GCSqGSIb3DQEBCwUABIICACpe+qRrmx8uN4ma
'' SIG '' 57gjQxEzzfMoUgLzWvEqX1sh6q4Ex/wn+VFZjtTtvkKt
'' SIG '' Ujj7giJN/MtxM8QHWDUzTCPUVZFCHYH343XSlirXYkiN
'' SIG '' koHcTy/TYgcon80Oujj/I+mryincTdISW73gk6BifGz5
'' SIG '' 5MNP2HVUlKyUOKysmwaFjeHp77ZmayrxrnJdMYgtEYaD
'' SIG '' AH+IK6IjuUxuFGehYYkXVuMv6uwwX+UoQt7ewZCQwE3y
'' SIG '' I2JiC/dn3sHs+TWbXhqO0+Xifkn5kysh0QM6qCiRVdC0
'' SIG '' Vtnja1jCpr4xk1qoIUY5GS0fHEEa0mic3S72G1h/lN2q
'' SIG '' JrwnJFGTch8WZa9581xaDgiS6pIEZCDas7fVieIi/fJ8
'' SIG '' pLw7Nh3/2k+d6sMQUsqIy8whrsJaQZ3UhezuxO5+zLV3
'' SIG '' 7xYErTw4p+1GYvjdhuzmNLiTt07KtD1Lq/IY0GcVYXoM
'' SIG '' CsQ6/XPXeVZ/1jJGBetP36WvdcXeLNv6Tcgha4LLQmRa
'' SIG '' SAbIKUdM2fGRNhTOy2TwewooQfVDB8yQDM7cjYujLECX
'' SIG '' jtVcAhvomGKs+Ojd8ccoFXq47GOVz3mAJnH5qZStmFAR
'' SIG '' 2lCx6Io9eLnqDRQLSQA3hv10KcX0joenggp2ZQvyDPXE
'' SIG '' wXdJ+qN2acCN8WTb5MyXb6FKdO7p7pmujB881Z1/isuT
'' SIG '' bPZEcigN
'' SIG '' End signature block
