# # This script launches sdksetup.exe from a folder under TEMP to mitigate potential conflicts with Visual Studio 2015. # param( [string]$SetupExe = $null, [string]$SetupLogFolder = $null, [string]$PackageId = $null, [string]$SetupParameters = $null, [string]$LogFile = $null ) $ErrorActionPreference = "Stop" $ErrorCodes = Data { ConvertFrom-StringData @' Success = 0 NoScriptPath = 1 InvalidArguments = 2 AccessDenied = 3 MissingSetupExe = 4 ScriptException = 5 '@ } function PrintMessage($Message) { Write-Host $Message if ($LogFile) { Out-File -FilePath $LogFile -InputObject $Message -Append } } function PrintMessageAndExit($Message, $ReturnCode) { PrintMessage $Message exit $ReturnCode } # # Main execution sequence # $ScriptPath = $null try { $ScriptPath = (Get-Variable MyInvocation).Value.MyCommand.Path $ScriptDir = Split-Path -Parent $ScriptPath } catch {} if (!$ScriptPath) { PrintMessageAndExit "Unable to determine the script location." $ErrorCodes.NoScriptPath } if (!$SetupExe) { PrintMessageAndExit "-setupexe argument is missing." $ErrorCodes.InvalidArguments } if ($LogFile -and !$SetupLogFolder) { PrintMessageAndExit "-setuplogfolder argument is required when -logfile is specified." $ErrorCodes.InvalidArguments } if (!$PackageId) { PrintMessageAndExit "-packageid argument is missing." $ErrorCodes.InvalidArguments } if (!$SetupParameters) { PrintMessageAndExit "-setupparameters argument is missing." $ErrorCodes.InvalidArguments } try { $OriginalSetupExe = (Join-Path $ScriptDir $SetupExe) if (!(Test-Path $OriginalSetupExe)) { PrintMessageAndExit "$SetupExe not found in $ScriptDir." $ErrorCodes.MissingSetupExe } # Create a folder under %TEMP% for the package $TempDir = (Get-Item $env:TEMP).FullName $TargetDir = Join-Path $TempDir $PackageId if ((Test-Path $TargetDir)) { PrintMessage "Removing existing target folder $TargetDir." Remove-Item $TargetDir -Recurse -Force } PrintMessage "Creating target folder $TargetDir." New-Item $TargetDir -ItemType directory | out-null if (!(Test-Path $TargetDir)) { PrintMessageAndExit "Unable to create target folder $TargetDir." $ErrorCodes.AccessDenied } Copy-Item $OriginalSetupExe $TargetDir if ($LogFile) { $SetupExeBaseName = [Io.Path]::GetFileNameWithoutExtension($SetupExe) $LogFileBaseName = [Io.Path]::GetFileNameWithoutExtension($LogFile) $SdkLogFile = (Join-Path (Join-Path $TempDir $SetupLogFolder) ($LogFileBaseName + "." + $SetupExeBaseName + ".log")) $SetupParameters += " /Log ""$SdkLogFile""" } PrintMessage "Launching '$SetupExe' with arguments '$SetupParameters'." $SetupProcess = Start-Process -FilePath (Join-Path $TargetDir $SetupExe) -ArgumentList $SetupParameters -PassThru PrintMessage "Waiting for child process to terminate." Wait-Process -InputObject $SetupProcess $SetupProcessExitCode = $SetupProcess.ExitCode PrintMessage "Child process terminated with exit code $SetupProcessExitCode." if ($LogFile -and ($SetupProcessExitCode -ne 0) -and ($SetupProcessExitCode -ne 3010)) { PrintMessage "Unknown exit code detected. Printing main log file:" Out-File -FilePath $LogFile -InputObject (Get-Content $SdkLogFile) -Append } Exit $SetupProcessExitCode } catch { PrintMessage $_.Exception.Message PrintMessage " +CategoryInfo: " $_.CategoryInfo PrintMessage " +FullyQualifiedErrorId: " $_.FullyQualifiedErrorId PrintMessage $_.ScriptStackTrace Exit $ErrorCodes.ScriptException } # SIG # Begin signature block # MIIh+QYJKoZIhvcNAQcCoIIh6jCCIeYCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCct2xHSmiQdZdg # stEhEhNGsD7uQ2ZUHtnot/z4SogvVKCCC4QwggUMMIID9KADAgECAhMzAAABT+fG # YslG9Kl/AAAAAAFPMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD # VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy # b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p # bmcgUENBIDIwMTAwHhcNMTYxMTE3MjE1OTE0WhcNMTgwMjE3MjE1OTE0WjCBgzEL # MAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v # bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjENMAsGA1UECxMETU9Q # UjEeMBwGA1UEAxMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMIIBIjANBgkqhkiG9w0B # AQEFAAOCAQ8AMIIBCgKCAQEAtImQinYMrMU9obyB6NdQCLtaaaeux8y4W704DyFR # Rggj0b0imXO3KO/3B6sr+Uj3pRQFqU0kG21hlpyDnTPALHmZ8F3z7NVE36XNWfp2 # rQY/xkoD5uotlBDCZm/9YtBQitEikSOXZTShxJoCXpLiuHwoeMJe40b3yu84V4is # VgZYypgbx6jXXjaumkUw47a3PRjCpyeweU1T2DLmdqNQKvY/urtBHiSGTZibep72 # LOK8kGBl+5Zp+uATaOKJKi51GJ3Cbbgh9JleKn8xoKcNzO9PEW7+SUJOYd43yyue # QO/Oq15wCHOlcnu3Rs5bMlNdijlRb7DXqHjdoyhvXu5CHwIDAQABo4IBezCCAXcw # HwYDVR0lBBgwFgYKKwYBBAGCNz0GAQYIKwYBBQUHAwMwHQYDVR0OBBYEFJIOoRFx # ti9VDcMP9MlcdC5aDGq/MFIGA1UdEQRLMEmkRzBFMQ0wCwYDVQQLEwRNT1BSMTQw # MgYDVQQFEysyMzA4NjUrYjRiMTI4NzgtZTI5My00M2U5LWIyMWUtN2QzMDcxOWQ0 # NTJmMB8GA1UdIwQYMBaAFOb8X3u7IgBY5HJOtfQhdCMy5u+sMFYGA1UdHwRPME0w # S6BJoEeGRWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3Rz # L01pY0NvZFNpZ1BDQV8yMDEwLTA3LTA2LmNybDBaBggrBgEFBQcBAQROMEwwSgYI # KwYBBQUHMAKGPmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWlj # Q29kU2lnUENBXzIwMTAtMDctMDYuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcN # AQELBQADggEBABHAuWpDNf6FsTiADbh0dSyNcUm4PEHtLb3iBjaQdiuJ5baB6Ybj # GIyWkzJCp6f2tzQlOdDGekPq23dwzNTpQuuoxVUCdXie2BC+BxvKlGP7PA9x7tRV # Z9cp9mq/B7zlj4Lq+KHiczM/FJJeobplVzdFhYBc1izGizxqh6MHEcvs2XE4IDUk # PVS9zFWJ9HcQm+WZqg+uxjyOn9oAT8994bPAIPdSMfciSNVhjX8mAhl9g8xhkyrd # uNziCLOn3+EEd2DI9Kw1yzHlbHVRxTd7E2pOlWuPQJ7ITT6uvVnFINbCeK23ZFs7 # 0MAVcDQU5cWephzH9P/2y0jB4o3zbs6qtKAwggZwMIIEWKADAgECAgphDFJMAAAA # AAADMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2Fz # aGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENv # cnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBB # dXRob3JpdHkgMjAxMDAeFw0xMDA3MDYyMDQwMTdaFw0yNTA3MDYyMDUwMTdaMH4x # CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt # b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01p # Y3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTAwggEiMA0GCSqGSIb3DQEBAQUA # A4IBDwAwggEKAoIBAQDpDmRQeWe1xOP9CQBMnpSs91Zo6kTYz8VYT6mldnxtRbrT # OZK0pB75+WWC5BfSj/1EnAjoZZPOLFWEv30I4y4rqEErGLeiS25JTGsVB97R0sKJ # HnGUzbV/S7SvCNjMiNZrF5Q6k84mP+zm/jSYV9UdXUn2siou1YW7WT/4kLQrg3TK # K7M7RuPwRknBF2ZUyRy9HcRVYldy+Ge5JSA03l2mpZVeqyiAzdWynuUDtWPTshTI # wciKJgpZfwfs/w7tgBI1TBKmvlJb9aba4IsLSHfWhUfVELnG6Krui2otBVxgxrQq # W5wjHF9F4xoUHm83yxkzgGqJTaNqZmN4k9Uwz5UfAgMBAAGjggHjMIIB3zAQBgkr # BgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQU5vxfe7siAFjkck619CF0IzLm76wwGQYJ # KwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF # MAMBAf8wHwYDVR0jBBgwFoAU1fZWy4/oolxiaNE9lJBb186aGMQwVgYDVR0fBE8w # TTBLoEmgR4ZFaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVj # dHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEBBE4wTDBK # BggrBgEFBQcwAoY+aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9N # aWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcnQwgZ0GA1UdIASBlTCBkjCBjwYJKwYB # BAGCNy4DMIGBMD0GCCsGAQUFBwIBFjFodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20v # UEtJL2RvY3MvQ1BTL2RlZmF1bHQuaHRtMEAGCCsGAQUFBwICMDQeMiAdAEwAZQBn # AGEAbABfAFAAbwBsAGkAYwB5AF8AUwB0AGEAdABlAG0AZQBuAHQALiAdMA0GCSqG # SIb3DQEBCwUAA4ICAQAadO9XTyl7xBaFeLhQ0yL8CZ2sgpf4NP8qLJeVEuXkv8+/ # k8jjNKnbgbjcHgC+0jVvr+V/eZV35QLU8evYzU4eG2GiwlojGvCMqGJRRWcI4z88 # HpP4MIUXyDlAptcOsyEp5aWhaYwik8x0mOehR0PyU6zADzBpf/7SJSBtb2HT3wfV # 2XIALGmGdj1R26Y5SMk3YW0H3VMZy6fWYcK/4oOrD+Brm5XWfShRsIlKUaSabMi3 # H0oaDmmp19zBftFJcKq2rbtyR2MX+qbWoqaG7KgQRJtjtrJpiQbHRoZ6GD/oxR0h # 1Xv5AiMtxUHLvx1MyBbvsZx//CJLSYpuFeOmf3Zb0VN5kYWd1dLbPXM18zyuVLJS # R2rAqhOV0o4R2plnXjKM+zeF0dx1hZyHxlpXhcK/3Q2PjJst67TuzyfTtV5p+qQW # BAGnJGdzz01Ptt4FVpd69+lSTfR3BU+FxtgL8Y7tQgnRDXbjI1Z4IiY2vsqxjG6q # HeSF2kczYo+kyZEzX3EeQK+YZcki6EIhJYocLWDZN4lBiSoWD9dhPJRoYFLv1keZ # oIBA7hWBdz6c4FMYGlAdOJWbHmYzEyc5F3iHNs5Ow1+y9T1HU7bg5dsLYT0q15Is # zjdaPkBCMaQfEAjCVpy/JF1RAp1qedIX09rBlI4HeyVxRKsGaubUxt8jmpZ1xTGC # FcswghXHAgEBMIGVMH4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u # MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp # b24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTACEzMA # AAFP58ZiyUb0qX8AAAAAAU8wDQYJYIZIAWUDBAIBBQCggbowGQYJKoZIhvcNAQkD # MQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJ # KoZIhvcNAQkEMSIEIK0PFOJlHrPVtTLxTedDJMHc6b3wNS6mXwnf+Bd2ousfME4G # CisGAQQBgjcCAQwxQDA+oCSAIgBXAGkAbgBTAGQAawBJAG4AcwB0AGEAbABsAC4A # cABzADGhFoAUaHR0cDovL21pY3Jvc29mdC5jb20wDQYJKoZIhvcNAQEBBQAEggEA # Sj4c9UM0hpH3MsK5TuW13+0rxd7fI48Q+vUw7+L5oTXBDyz6FplSmkGhtzz41YxV # wOpfSN1lAI67+8xD1XRxKHJQu3MBPucG34R1GzOE9vjymi/Oa1Cfu1IZFGRwopCt # 0OszGik+XGLSdRoF2dWnkXugRVWKjbx/2Ud0fNJikgh2JVI+lC0ypE4NMHNCIinO # tRb7ikrMSTYCHT2cZR8QQie4hBLJ8CDqFIi3MFoFGNbLTa62FIrOUapZC16zPor7 # 1aP1VtgM5oEC611DnU9AfYSTNDRdRnvgEp+f8ei5C04d/IIStrfAji6Pzt8kwJPQ # DWmkhRj4qIkjSa19U3IOcKGCE0kwghNFBgorBgEEAYI3AwMBMYITNTCCEzEGCSqG # SIb3DQEHAqCCEyIwghMeAgEDMQ8wDQYJYIZIAWUDBAIBBQAwggE8BgsqhkiG9w0B # CRABBKCCASsEggEnMIIBIwIBAQYKKwYBBAGEWQoDATAxMA0GCWCGSAFlAwQCAQUA # BCC/v4K81wujouBbgZ1rIhT0OKz/M2oGSBWbRMhruKa4aQIGWIurMibBGBIyMDE3 # MDIwOTAzNDA0Ny41NlowBwIBAYACAfSggbmkgbYwgbMxCzAJBgNVBAYTAlVTMRMw # EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN # aWNyb3NvZnQgQ29ycG9yYXRpb24xDTALBgNVBAsTBE1PUFIxJzAlBgNVBAsTHm5D # aXBoZXIgRFNFIEVTTjpGNTI4LTM3NzctOEE3NjElMCMGA1UEAxMcTWljcm9zb2Z0 # IFRpbWUtU3RhbXAgU2VydmljZaCCDs0wggZxMIIEWaADAgECAgphCYEqAAAAAAAC # MA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu # Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv # cmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRo # b3JpdHkgMjAxMDAeFw0xMDA3MDEyMTM2NTVaFw0yNTA3MDEyMTQ2NTVaMHwxCzAJ # BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k # MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jv # c29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A # MIIBCgKCAQEAqR0NvHcRijog7PwTl/X6f2mUa3RUENWlCgCChfvtfGhLLF/Fw+Vh # wna3PmYrW/AVUycEMR9BGxqVHc4JE458YTBZsTBED/FgiIRUQwzXTbg4CLNC3ZOs # 1nMwVyaCo0UN0Or1R4HNvyRgMlhgRvJYR4YyhB50YWeRX4FUsc+TTJLBxKZd0WET # bijGGvmGgLvfYfxGwScdJGcSchohiq9LZIlQYrFd/XcfPfBXday9ikJNQFHRD5wG # Pmd/9WbAA5ZEfu/QS/1u5ZrKsajyeioKMfDaTgaRtogINeh4HLDpmc085y9Euqf0 # 3GS9pAHBIAmTeM38vMDJRF1eFpwBBU8iTQIDAQABo4IB5jCCAeIwEAYJKwYBBAGC # NxUBBAMCAQAwHQYDVR0OBBYEFNVjOlyKMZDzQ3t8RhvFM2hahW1VMBkGCSsGAQQB # gjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/ # MB8GA1UdIwQYMBaAFNX2VsuP6KJcYmjRPZSQW9fOmhjEMFYGA1UdHwRPME0wS6BJ # oEeGRWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01p # Y1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYB # BQUHMAKGPmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljUm9v # Q2VyQXV0XzIwMTAtMDYtMjMuY3J0MIGgBgNVHSABAf8EgZUwgZIwgY8GCSsGAQQB # gjcuAzCBgTA9BggrBgEFBQcCARYxaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL1BL # SS9kb2NzL0NQUy9kZWZhdWx0Lmh0bTBABggrBgEFBQcCAjA0HjIgHQBMAGUAZwBh # AGwAXwBQAG8AbABpAGMAeQBfAFMAdABhAHQAZQBtAGUAbgB0AC4gHTANBgkqhkiG # 9w0BAQsFAAOCAgEAB+aIUQ3ixuCYP4FxAz2do6Ehb7Prpsz1Mb7PBeKp/vpXbRkw # s8LFZslq3/Xn8Hi9x6ieJeP5vO1rVFcIK1GCRBL7uVOMzPRgEop2zEBAQZvcXBf/ # XPleFzWYJFZLdO9CEMivv3/Gf/I3fVo/HPKZeUqRUgCvOA8X9S95gWXZqbVr5MfO # 9sp6AG9LMEQkIjzP7QOllo9ZKby2/QThcJ8ySif9Va8v/rbljjO7Yl+a21dA6fHO # mWaQjP9qYn/dxUoLkSbiOewZSnFjnXshbcOco6I8+n99lmqQeKZt0uGc+R38ONiU # 9MalCpaGpL2eGq4EQoO4tYCbIjggtSXlZOz39L9+Y1klD3ouOVd2onGqBooPiRa6 # YacRy5rYDkeagMXQzafQ732D8OE7cQnfXXSYIghh2rBQHm+98eEA3+cxB6STOvdl # R3jo+KhIq/fecn5ha293qYHLpwmsObvsxsvYgrRyzR30uIUBHoD7G4kqVDmyW9rI # DVWZeodzOwjmmC3qjeAzLhIp9cAvVCch98isTtoouLGp25ayp0Kiyc8ZQU3ghvkq # mqMRZjDTu3QyS99je/WZii8bxyGvWbWu3EQ8l1Bx16HSxVXjad5XwdHeMMD9zOZN # +w2/XU/pnR4ZOC+8z1gFLu8NoFA12u8JJxzVs341Hgi62jbb01+P3nSISRIwggTa # MIIDwqADAgECAhMzAAAAsIbpkiAKXer4AAAAAACwMA0GCSqGSIb3DQEBCwUAMHwx # CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt # b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1p # Y3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwMB4XDTE2MDkwNzE3NTY1NloXDTE4 # MDkwNzE3NTY1NlowgbMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u # MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp # b24xDTALBgNVBAsTBE1PUFIxJzAlBgNVBAsTHm5DaXBoZXIgRFNFIEVTTjpGNTI4 # LTM3NzctOEE3NjElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vydmlj # ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPDl8I2UWama12wJB3cU # IVldtz14uDWt9TAx/87h/9bpGsmDmCP7kBDBkuw6vFBskL1c8WutTKL1YaWH4Sms # ozwS33/EAILOvbQKX8u525q3GS1a7QcArVT9M6z2+BIkSiRnV9q4S6GsD4D5Ob0g # DbWnxCxL8aFW5vIvJ7kmwTMl2SsMMHJQhGuSapWM8voITbguJNVD09zr83RqiLPJ # tGDcyWWtXwnlEWoUNMHkVwYSRuagvYRaJEJD9rz0LFWZWo2ziKaqEpQivoa1SomM # qkewoMUfG4+c8GJtVJ0y06nEm1PpuXI7vxeer1hcncYrUCG72JbMNu+NpnPZrbtD # cBUCAwEAAaOCARswggEXMB0GA1UdDgQWBBT8qAdS2e8p/phDPBVcdF63f3PgrzAf # BgNVHSMEGDAWgBTVYzpcijGQ80N7fEYbxTNoWoVtVTBWBgNVHR8ETzBNMEugSaBH # hkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNU # aW1TdGFQQ0FfMjAxMC0wNy0wMS5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUF # BzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1RpbVN0 # YVBDQV8yMDEwLTA3LTAxLmNydDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsG # AQUFBwMIMA0GCSqGSIb3DQEBCwUAA4IBAQCS/YD3db1lkD4XzdUVg8WOApE7rE59 # YO+POQaTkOMPqkU9iT8C/exvuFCQCWyE0jchmbHBhnYd5A3Gjv8Y4KL6RrWFd3Ru # TgxERdC80rYEfnBLD9arB2lWSnZk6PmqR6Ojhtz0z0S4SRBbZ4/R2nmuOt2HUwbo # j2r8f9fko4ZFFQ2RYiI6kErj2GgBScktDmt4bBEC9I9NEWBzqAMhDZfjD3J1u/3o # Drjr/CBBnY6T/cUzcz45er1qNB45R2IRtRzvV/Rzg3GfqBRlvuQDjk1txAEzG35X # 7KHzHJepOKf0qDo5+Yk1/F2jIq4KvY0MqzESbum9YRbs9Bk6JIViX6myoYIDdjCC # Al4CAQEwgeOhgbmkgbYwgbMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5n # dG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y # YXRpb24xDTALBgNVBAsTBE1PUFIxJzAlBgNVBAsTHm5DaXBoZXIgRFNFIEVTTjpG # NTI4LTM3NzctOEE3NjElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vy # dmljZaIlCgEBMAkGBSsOAwIaBQADFQC8hPudWxLaxzaFO4hmnqMWGNXMHKCBwjCB # v6SBvDCBuTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV # BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjENMAsG # A1UECxMETU9QUjEnMCUGA1UECxMebkNpcGhlciBOVFMgRVNOOjU3RjYtQzFFMC01 # NTRDMSswKQYDVQQDEyJNaWNyb3NvZnQgVGltZSBTb3VyY2UgTWFzdGVyIENsb2Nr # MA0GCSqGSIb3DQEBBQUAAgUA3EY0iDAiGA8yMDE3MDIwOTAwMjEyOFoYDzIwMTcw # MjEwMDAyMTI4WjB0MDoGCisGAQQBhFkKBAExLDAqMAoCBQDcRjSIAgEAMAcCAQAC # AgHGMAcCAQACAhswMAoCBQDcR4YIAgEAMDYGCisGAQQBhFkKBAIxKDAmMAwGCisG # AQQBhFkKAwGgCjAIAgEAAgMW42ChCjAIAgEAAgMHoSAwDQYJKoZIhvcNAQEFBQAD # ggEBABiMGGEbqguKI2/qZmiCrG6SgO/JHv+qSWP1KdCBHdyrddoEScrlFSOoXKVZ # DiF1zP5W118+HAMH3mmqwvHCRK6q3s8/nv6ozBDGnsbMaRjPljDD1Bd96k0iVBBi # RBX5OCgnvbVXR3+Ui9yD55Iio3QFyJcIgSEx+8Neq2KmDfV+1J3HjI7Tazh4xNWF # ojPPg91IfRr/qJLd8h1ew8PKqMlncgIZgrmVXeKuLOBVaWLnXIqTM3z02cjDlTV8 # +GxwI274PxY8f69eCr3pB7cG7K93CIkTtyBs1p8fY/yclShfEZv+X9ef8eAbD2mj # gzmH8bIVjfbPUI9Uz6ZDccsD52cxggL1MIIC8QIBATCBkzB8MQswCQYDVQQGEwJV # UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UE # ChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGlt # ZS1TdGFtcCBQQ0EgMjAxMAITMwAAALCG6ZIgCl3q+AAAAAAAsDANBglghkgBZQME # AgEFAKCCATIwGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMC8GCSqGSIb3DQEJ # BDEiBCA+h0P7Sa9yowLlsgk0s0TBWlmYcyVf0H0JAy6s9drMBzCB4gYLKoZIhvcN # AQkQAgwxgdIwgc8wgcwwgbEEFLyE+51bEtrHNoU7iGaeoxYY1cwcMIGYMIGApH4w # fDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl # ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMd # TWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTACEzMAAACwhumSIApd6vgAAAAA # ALAwFgQUUdSWm73Ih/uFBsQ6WNYs/ysontwwDQYJKoZIhvcNAQELBQAEggEAYSIQ # 5MiF29N7jYMLRRfa/TdwNevWOtwzaLaO9j6LX4qpH6qWjNPMw/hx+IbrV1zff+R+ # RiXyVaEp8ml9n3vSk3thnm4dk1W9LxZrMcROFwxX+81S9v8aPZl88fCyE2U8o3xg # a9XijfoWLagblVmqebpHV//7Os85EJxQyvjbS9oENGRlAwHl4xhfe7UBe9POs6Tf # M4n3ycpsh58IqI2YbqWsBCrymWtDaMVv0Mu59nrbgD07MtX+e77ulOPnUk5vx5Jo # p1ex4yQ1aCoAw9OKyD4V1OMKsE3b6G3D3NqWT1jFtX1UVHkvDuZ0g4odQWKgpJ7R # WIV1FrmsFgUZO2ztjA== # SIG # End signature block