123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 |
- # Copyright (c) .NET Foundation. All rights reserved.
- # Licensed under the MIT license. See LICENSE file in the project root for full license information.
-
- param($installPath, $toolsPath, $package, $project)
-
- $roslynSubFolder = 'roslyn'
-
- if ($project -eq $null) {
- $project = Get-Project
- }
-
- $libDirectory = Join-Path $installPath 'lib\net45'
- $projectRoot = $project.Properties.Item('FullPath').Value
- $projectTargetFramework = $project.Properties.Item('TargetFrameworkMoniker').Value
- $shouldUseRoslyn45 = $projectTargetFramework -match '4.5'
- $binDirectory = Join-Path $projectRoot 'bin'
-
- # We need to copy the provider assembly into the bin\ folder, otherwise
- # Microsoft.VisualStudio.Web.Host.exe cannot find the assembly.
- # However, users will see the error after they clean solutions.
- New-Item $binDirectory -type directory -force | Out-Null
- Copy-Item $libDirectory\* $binDirectory -force | Out-Null
-
- # For Web Site, we need to copy the Roslyn toolset into
- # the applicaiton's bin folder.
- # For Web Applicaiton project, this is done in csproj.
- if ($project.Type -eq 'Web Site') {
- $packageDirectory = Split-Path $installPath
-
- if($package.Versions -eq $null)
- {
- $compilerVersion = $package.Version
- }
- else
- {
- $compilerVersion = @($package.Versions)[0]
- }
-
- $compilerPackageFolderName = $package.Id + "." + $compilerVersion
- $compilerPackageDirectory = Join-Path $packageDirectory $compilerPackageFolderName
- if ((Get-Item $compilerPackageDirectory) -isnot [System.IO.DirectoryInfo])
- {
- Write-Host "The install.ps1 cannot find the installation location of package $compilerPackageName, or the pakcage is not installed correctly."
- Write-Host 'The install.ps1 did not complete.'
- break
- }
-
- if($shouldUseRoslyn45)
- {
- $compilerPackageToolsDirectory = Join-Path $compilerPackageDirectory 'tools\roslyn45'
- }
- else
- {
- $compilerPackageToolsDirectory = Join-Path $compilerPackageDirectory 'tools\roslynlatest'
- }
- $roslynSubDirectory = Join-Path $binDirectory $roslynSubFolder
- New-Item $roslynSubDirectory -type directory -force | Out-Null
- Copy-Item $compilerPackageToolsDirectory\* $roslynSubDirectory -force | Out-Null
-
- # Generate a .refresh file for each dll/exe file.
- Push-Location
- Set-Location $projectRoot
- $relativeAssemblySource = Resolve-Path -relative $compilerPackageToolsDirectory
- Pop-Location
-
- Get-ChildItem -Path $roslynSubDirectory | `
- Foreach-Object {
- if (($_.Extension -eq ".dll") -or ($_.Extension -eq ".exe")) {
- $refreshFile = $_.FullName
- $refreshFile += ".refresh"
- $refreshContent = Join-Path $relativeAssemblySource $_.Name
- Set-Content $refreshFile $refreshContent
- }
- }
- }
- # SIG # Begin signature block
- # MIIkLwYJKoZIhvcNAQcCoIIkIDCCJBwCAQExDzANBglghkgBZQMEAgEFADB5Bgor
- # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
- # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDtvxPzgXqotl1m
- # H/XfQZLEW25b0XwuOnAj3if78cNKFaCCDYEwggX/MIID56ADAgECAhMzAAABA14l
- # HJkfox64AAAAAAEDMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD
- # VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
- # b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p
- # bmcgUENBIDIwMTEwHhcNMTgwNzEyMjAwODQ4WhcNMTkwNzI2MjAwODQ4WjB0MQsw
- # CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u
- # ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy
- # b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
- # AQDRlHY25oarNv5p+UZ8i4hQy5Bwf7BVqSQdfjnnBZ8PrHuXss5zCvvUmyRcFrU5
- # 3Rt+M2wR/Dsm85iqXVNrqsPsE7jS789Xf8xly69NLjKxVitONAeJ/mkhvT5E+94S
- # nYW/fHaGfXKxdpth5opkTEbOttU6jHeTd2chnLZaBl5HhvU80QnKDT3NsumhUHjR
- # hIjiATwi/K+WCMxdmcDt66VamJL1yEBOanOv3uN0etNfRpe84mcod5mswQ4xFo8A
- # DwH+S15UD8rEZT8K46NG2/YsAzoZvmgFFpzmfzS/p4eNZTkmyWPU78XdvSX+/Sj0
- # NIZ5rCrVXzCRO+QUauuxygQjAgMBAAGjggF+MIIBejAfBgNVHSUEGDAWBgorBgEE
- # AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUR77Ay+GmP/1l1jjyA123r3f3QP8w
- # UAYDVR0RBEkwR6RFMEMxKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1
- # ZXJ0byBSaWNvMRYwFAYDVQQFEw0yMzAwMTIrNDM3OTY1MB8GA1UdIwQYMBaAFEhu
- # ZOVQBdOCqhc3NyK1bajKdQKVMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly93d3cu
- # bWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY0NvZFNpZ1BDQTIwMTFfMjAxMS0w
- # Ny0wOC5jcmwwYQYIKwYBBQUHAQEEVTBTMFEGCCsGAQUFBzAChkVodHRwOi8vd3d3
- # Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY0NvZFNpZ1BDQTIwMTFfMjAx
- # MS0wNy0wOC5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAgEAn/XJ
- # Uw0/DSbsokTYDdGfY5YGSz8eXMUzo6TDbK8fwAG662XsnjMQD6esW9S9kGEX5zHn
- # wya0rPUn00iThoj+EjWRZCLRay07qCwVlCnSN5bmNf8MzsgGFhaeJLHiOfluDnjY
- # DBu2KWAndjQkm925l3XLATutghIWIoCJFYS7mFAgsBcmhkmvzn1FFUM0ls+BXBgs
- # 1JPyZ6vic8g9o838Mh5gHOmwGzD7LLsHLpaEk0UoVFzNlv2g24HYtjDKQ7HzSMCy
- # RhxdXnYqWJ/U7vL0+khMtWGLsIxB6aq4nZD0/2pCD7k+6Q7slPyNgLt44yOneFuy
- # bR/5WcF9ttE5yXnggxxgCto9sNHtNr9FB+kbNm7lPTsFA6fUpyUSj+Z2oxOzRVpD
- # MYLa2ISuubAfdfX2HX1RETcn6LU1hHH3V6qu+olxyZjSnlpkdr6Mw30VapHxFPTy
- # 2TUxuNty+rR1yIibar+YRcdmstf/zpKQdeTr5obSyBvbJ8BblW9Jb1hdaSreU0v4
- # 6Mp79mwV+QMZDxGFqk+av6pX3WDG9XEg9FGomsrp0es0Rz11+iLsVT9qGTlrEOla
- # P470I3gwsvKmOMs1jaqYWSRAuDpnpAdfoP7YO0kT+wzh7Qttg1DO8H8+4NkI6Iwh
- # SkHC3uuOW+4Dwx1ubuZUNWZncnwa6lL2IsRyP64wggd6MIIFYqADAgECAgphDpDS
- # AAAAAAADMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMK
- # V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
- # IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0
- # ZSBBdXRob3JpdHkgMjAxMTAeFw0xMTA3MDgyMDU5MDlaFw0yNjA3MDgyMTA5MDla
- # MH4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS
- # ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMT
- # H01pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTEwggIiMA0GCSqGSIb3DQEB
- # AQUAA4ICDwAwggIKAoICAQCr8PpyEBwurdhuqoIQTTS68rZYIZ9CGypr6VpQqrgG
- # OBoESbp/wwwe3TdrxhLYC/A4wpkGsMg51QEUMULTiQ15ZId+lGAkbK+eSZzpaF7S
- # 35tTsgosw6/ZqSuuegmv15ZZymAaBelmdugyUiYSL+erCFDPs0S3XdjELgN1q2jz
- # y23zOlyhFvRGuuA4ZKxuZDV4pqBjDy3TQJP4494HDdVceaVJKecNvqATd76UPe/7
- # 4ytaEB9NViiienLgEjq3SV7Y7e1DkYPZe7J7hhvZPrGMXeiJT4Qa8qEvWeSQOy2u
- # M1jFtz7+MtOzAz2xsq+SOH7SnYAs9U5WkSE1JcM5bmR/U7qcD60ZI4TL9LoDho33
- # X/DQUr+MlIe8wCF0JV8YKLbMJyg4JZg5SjbPfLGSrhwjp6lm7GEfauEoSZ1fiOIl
- # XdMhSz5SxLVXPyQD8NF6Wy/VI+NwXQ9RRnez+ADhvKwCgl/bwBWzvRvUVUvnOaEP
- # 6SNJvBi4RHxF5MHDcnrgcuck379GmcXvwhxX24ON7E1JMKerjt/sW5+v/N2wZuLB
- # l4F77dbtS+dJKacTKKanfWeA5opieF+yL4TXV5xcv3coKPHtbcMojyyPQDdPweGF
- # RInECUzF1KVDL3SV9274eCBYLBNdYJWaPk8zhNqwiBfenk70lrC8RqBsmNLg1oiM
- # CwIDAQABo4IB7TCCAekwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFEhuZOVQ
- # BdOCqhc3NyK1bajKdQKVMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1Ud
- # DwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFHItOgIxkEO5FAVO
- # 4eqnxzHRI4k0MFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwubWljcm9zb2Z0
- # LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y
- # Mi5jcmwwXgYIKwYBBQUHAQEEUjBQME4GCCsGAQUFBzAChkJodHRwOi8vd3d3Lm1p
- # Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y
- # Mi5jcnQwgZ8GA1UdIASBlzCBlDCBkQYJKwYBBAGCNy4DMIGDMD8GCCsGAQUFBwIB
- # FjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2RvY3MvcHJpbWFyeWNw
- # cy5odG0wQAYIKwYBBQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AcABvAGwAaQBjAHkA
- # XwBzAHQAYQB0AGUAbQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAGfyhqWY
- # 4FR5Gi7T2HRnIpsLlhHhY5KZQpZ90nkMkMFlXy4sPvjDctFtg/6+P+gKyju/R6mj
- # 82nbY78iNaWXXWWEkH2LRlBV2AySfNIaSxzzPEKLUtCw/WvjPgcuKZvmPRul1LUd
- # d5Q54ulkyUQ9eHoj8xN9ppB0g430yyYCRirCihC7pKkFDJvtaPpoLpWgKj8qa1hJ
- # Yx8JaW5amJbkg/TAj/NGK978O9C9Ne9uJa7lryft0N3zDq+ZKJeYTQ49C/IIidYf
- # wzIY4vDFLc5bnrRJOQrGCsLGra7lstnbFYhRRVg4MnEnGn+x9Cf43iw6IGmYslmJ
- # aG5vp7d0w0AFBqYBKig+gj8TTWYLwLNN9eGPfxxvFX1Fp3blQCplo8NdUmKGwx1j
- # NpeG39rz+PIWoZon4c2ll9DuXWNB41sHnIc+BncG0QaxdR8UvmFhtfDcxhsEvt9B
- # xw4o7t5lL+yX9qFcltgA1qFGvVnzl6UJS0gQmYAf0AApxbGbpT9Fdx41xtKiop96
- # eiL6SJUfq/tHI4D1nvi/a7dLl+LrdXga7Oo3mXkYS//WsyNodeav+vyL6wuA6mk7
- # r/ww7QRMjt/fdW1jkT3RnVZOT7+AVyKheBEyIXrvQQqxP/uozKRdwaGIm1dxVk5I
- # RcBCyZt2WwqASGv9eZ/BvW1taslScxMNelDNMYIWBDCCFgACAQEwgZUwfjELMAkG
- # A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx
- # HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9z
- # b2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAxMQITMwAAAQNeJRyZH6MeuAAAAAABAzAN
- # BglghkgBZQMEAgEFAKCBrjAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor
- # BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgi7bO6A6z
- # CQJspqqWO/JGqjnCYiKRI956GjGUwTMjatQwQgYKKwYBBAGCNwIBDDE0MDKgFIAS
- # AE0AaQBjAHIAbwBzAG8AZgB0oRqAGGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbTAN
- # BgkqhkiG9w0BAQEFAASCAQBsCCeVeH8EV29UM7BGORLYvTpeX8At3x+JRaqvdP/q
- # ai8/+SX+sm2QMRsyK4AfT8qZSAbx83LrIpXKASXnwUxXF5AfNdbZ1LspcTUAA/Jd
- # V1a2PeHmfodolsTOFJ+dMLE74UcSoZqJ1v6LZWVSEXWNiZvvzLRK2ToqBQqHQMC+
- # QPdVZ/Ur1VyLnbA3T8U2E0MCPQYpwfbtFyRDoSnTAB19hkS29oO5eMDGNm510dGJ
- # QK0n2alKXKtdjG81kb4bYR6jTjZyN8aJBL+9HF71RLFP9WaWwsDpTBjkU5jc5YCq
- # PYCc2S0RtiX+ykahbmbmEF4E02/oMB9nR4vI53wvCEDioYITjjCCE4oGCisGAQQB
- # gjcDAwExghN6MIITdgYJKoZIhvcNAQcCoIITZzCCE2MCAQMxDzANBglghkgBZQME
- # AgEFADCCAVQGCyqGSIb3DQEJEAEEoIIBQwSCAT8wggE7AgEBBgorBgEEAYRZCgMB
- # MDEwDQYJYIZIAWUDBAIBBQAEIEZu4RRK7ls8JqWXRefn3V+2IT7wlfo1SlHmWWyc
- # r/xTAgZbgCh32kMYEzIwMTgwOTA1MTYxMzEwLjA1NFowBwIBAYACAfSggdCkgc0w
- # gcoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS
- # ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJTAjBgNVBAsT
- # HE1pY3Jvc29mdCBBbWVyaWNhIE9wZXJhdGlvbnMxJjAkBgNVBAsTHVRoYWxlcyBU
- # U1MgRVNOOkY2RkYtMkRBNy1CQjc1MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1T
- # dGFtcCBTZXJ2aWNloIIO+jCCBnEwggRZoAMCAQICCmEJgSoAAAAAAAIwDQYJKoZI
- # hvcNAQELBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAw
- # DgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x
- # MjAwBgNVBAMTKU1pY3Jvc29mdCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAy
- # MDEwMB4XDTEwMDcwMTIxMzY1NVoXDTI1MDcwMTIxNDY1NVowfDELMAkGA1UEBhMC
- # VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV
- # BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRp
- # bWUtU3RhbXAgUENBIDIwMTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
- # AQCpHQ28dxGKOiDs/BOX9fp/aZRrdFQQ1aUKAIKF++18aEssX8XD5WHCdrc+Zitb
- # 8BVTJwQxH0EbGpUdzgkTjnxhMFmxMEQP8WCIhFRDDNdNuDgIs0Ldk6zWczBXJoKj
- # RQ3Q6vVHgc2/JGAyWGBG8lhHhjKEHnRhZ5FfgVSxz5NMksHEpl3RYRNuKMYa+YaA
- # u99h/EbBJx0kZxJyGiGKr0tkiVBisV39dx898Fd1rL2KQk1AUdEPnAY+Z3/1ZsAD
- # lkR+79BL/W7lmsqxqPJ6Kgox8NpOBpG2iAg16HgcsOmZzTznL0S6p/TcZL2kAcEg
- # CZN4zfy8wMlEXV4WnAEFTyJNAgMBAAGjggHmMIIB4jAQBgkrBgEEAYI3FQEEAwIB
- # ADAdBgNVHQ4EFgQU1WM6XIoxkPNDe3xGG8UzaFqFbVUwGQYJKwYBBAGCNxQCBAwe
- # CgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
- # BBgwFoAU1fZWy4/oolxiaNE9lJBb186aGMQwVgYDVR0fBE8wTTBLoEmgR4ZFaHR0
- # cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWljUm9vQ2Vy
- # QXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEBBE4wTDBKBggrBgEFBQcwAoY+
- # aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNSb29DZXJBdXRf
- # MjAxMC0wNi0yMy5jcnQwgaAGA1UdIAEB/wSBlTCBkjCBjwYJKwYBBAGCNy4DMIGB
- # MD0GCCsGAQUFBwIBFjFodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vUEtJL2RvY3Mv
- # Q1BTL2RlZmF1bHQuaHRtMEAGCCsGAQUFBwICMDQeMiAdAEwAZQBnAGEAbABfAFAA
- # bwBsAGkAYwB5AF8AUwB0AGEAdABlAG0AZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUA
- # A4ICAQAH5ohRDeLG4Jg/gXEDPZ2joSFvs+umzPUxvs8F4qn++ldtGTCzwsVmyWrf
- # 9efweL3HqJ4l4/m87WtUVwgrUYJEEvu5U4zM9GASinbMQEBBm9xcF/9c+V4XNZgk
- # Vkt070IQyK+/f8Z/8jd9Wj8c8pl5SpFSAK84Dxf1L3mBZdmptWvkx872ynoAb0sw
- # RCQiPM/tA6WWj1kpvLb9BOFwnzJKJ/1Vry/+tuWOM7tiX5rbV0Dp8c6ZZpCM/2pi
- # f93FSguRJuI57BlKcWOdeyFtw5yjojz6f32WapB4pm3S4Zz5Hfw42JT0xqUKloak
- # vZ4argRCg7i1gJsiOCC1JeVk7Pf0v35jWSUPei45V3aicaoGig+JFrphpxHLmtgO
- # R5qAxdDNp9DvfYPw4TtxCd9ddJgiCGHasFAeb73x4QDf5zEHpJM692VHeOj4qEir
- # 995yfmFrb3epgcunCaw5u+zGy9iCtHLNHfS4hQEegPsbiSpUObJb2sgNVZl6h3M7
- # COaYLeqN4DMuEin1wC9UJyH3yKxO2ii4sanblrKnQqLJzxlBTeCG+SqaoxFmMNO7
- # dDJL32N79ZmKLxvHIa9Zta7cRDyXUHHXodLFVeNp3lfB0d4wwP3M5k37Db9dT+md
- # Hhk4L7zPWAUu7w2gUDXa7wknHNWzfjUeCLraNtvTX4/edIhJEjCCBPEwggPZoAMC
- # AQICEzMAAADjQzOasDnF+NcAAAAAAOMwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UE
- # BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc
- # BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0
- # IFRpbWUtU3RhbXAgUENBIDIwMTAwHhcNMTgwODIzMjAyNzA4WhcNMTkxMTIzMjAy
- # NzA4WjCByjELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
- # BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjElMCMG
- # A1UECxMcTWljcm9zb2Z0IEFtZXJpY2EgT3BlcmF0aW9uczEmMCQGA1UECxMdVGhh
- # bGVzIFRTUyBFU046RjZGRi0yREE3LUJCNzUxJTAjBgNVBAMTHE1pY3Jvc29mdCBU
- # aW1lLVN0YW1wIFNlcnZpY2UwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
- # AQCMVKN7mywnXLpudmjHHv3u8hnBJNGs7/VSXzymapRuYaj4XI/jW/PIAqW4FooI
- # KMJsQq491pX4JDRylu+G296QuKba9VXgVqy1piGpzy6rYwRGj772+bcJm6Z1YzKC
- # PCOXmLB5ZmcmF6sivhBuYmOI1WEqy7DzI2SQH0Bqbhi5b1qMvUqeZgv+O8oaKkR6
- # GzWbvysxxiRmceDWiOeUZb0zv3w1KVl8L6EtP+1wql/LDsPi6fCSB2Zf1oJ/aFVo
- # jhAofMjw4CdLmVko1v/G5yxaNJvimtfTkzFyl7L27GRALKqf5QzNPg85d+ghfORY
- # bkBZ+NtZpPcF98tplZRAGnOrAgMBAAGjggEbMIIBFzAdBgNVHQ4EFgQUIJsKyTkL
- # Pl29jzBkOFdmEXbCEtIwHwYDVR0jBBgwFoAU1WM6XIoxkPNDe3xGG8UzaFqFbVUw
- # VgYDVR0fBE8wTTBLoEmgR4ZFaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9j
- # cmwvcHJvZHVjdHMvTWljVGltU3RhUENBXzIwMTAtMDctMDEuY3JsMFoGCCsGAQUF
- # BwEBBE4wTDBKBggrBgEFBQcwAoY+aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3Br
- # aS9jZXJ0cy9NaWNUaW1TdGFQQ0FfMjAxMC0wNy0wMS5jcnQwDAYDVR0TAQH/BAIw
- # ADATBgNVHSUEDDAKBggrBgEFBQcDCDANBgkqhkiG9w0BAQsFAAOCAQEATpFDPPA5
- # 66vP+E519ww+Wrk2LqlGZy05fJ59ulfLqxk++txnOLLh4EH/Fzcnuku5zx0L3yc2
- # Z8/2CHKObGJnnS8axKq5oUbqWFhbL+pigRtsXbOH8M4C5U/LhZ0gq/oib/UFlxzi
- # +X6qiZ9/U2DmsZXEd+prT53YM/BNlyDyDiscZ7tGXn8KCBDHY5vJLK6P+D3bF4es
- # KlmKPduH4+g0mb+UKUdhCThgCx8qFEhPUz9IxcfuIpSmmkrNhNaPQDtGZjgjiOI0
- # 9mv5jLmlqJgoXhIhjlcZsjfSSV+iEsaBK9aNwWz2c8QMlyrEIyb+McNMU9OqEJv1
- # JEUqR4wB51JoYKGCA4wwggJ0AgEBMIH6oYHQpIHNMIHKMQswCQYDVQQGEwJVUzET
- # MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMV
- # TWljcm9zb2Z0IENvcnBvcmF0aW9uMSUwIwYDVQQLExxNaWNyb3NvZnQgQW1lcmlj
- # YSBPcGVyYXRpb25zMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjpGNkZGLTJEQTct
- # QkI3NTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZaIlCgEB
- # MAkGBSsOAwIaBQADFQDJNCPnAVzvieV+y9SvHPpIV2ri+6CBwTCBvqSBuzCBuDEL
- # MAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
- # bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEMMAoGA1UECxMDQU9D
- # MScwJQYDVQQLEx5uQ2lwaGVyIE5UUyBFU046MjY2NS00QzNGLUM1REUxKzApBgNV
- # BAMTIk1pY3Jvc29mdCBUaW1lIFNvdXJjZSBNYXN0ZXIgQ2xvY2swDQYJKoZIhvcN
- # AQEFBQACBQDfOXhXMCIYDzIwMTgwOTA0MjEzMjA3WhgPMjAxODA5MDUyMTMyMDda
- # MHQwOgYKKwYBBAGEWQoEATEsMCowCgIFAN85eFcCAQAwBwIBAAICAJgwBwIBAAIC
- # GNswCgIFAN86ydcCAQAwNgYKKwYBBAGEWQoEAjEoMCYwDAYKKwYBBAGEWQoDAaAK
- # MAgCAQACAxbjYKEKMAgCAQACAwehIDANBgkqhkiG9w0BAQUFAAOCAQEAKyzWbRkG
- # 3V2g3er6lIw4LXl6IhiifGZnFkfGs7+YP41jHE/FKVrfRhg2GPgUhLkZnJhkvDX+
- # 5yl1/G4oB+6I1Fsvn/+BjMG3zk+fYnQ6JybRGBBuSl1Hd4P7Urd6ZITQw8dHDuuz
- # SPxJb5ZpRx5Kmg/ZN1Mo7OFuIyq8Vxwxrd8c0mxT1McjraEGI3cj4a6wiQZBAfVn
- # 5VDfhQMTjAjeRk59sbDhM8Gfl8zbV1Y+g5bkHNHj9vX1jNSo7POFMmWcmKlXkFjX
- # jaXVxCo/Wp4BqVpXdT9I1yn0ojomdeJB64C5CGfgB2dAuKcOQq/L84fDyYC72+y4
- # JuJTreQ4Rqss5DGCAvUwggLxAgEBMIGTMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQI
- # EwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3Nv
- # ZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBD
- # QSAyMDEwAhMzAAAA40MzmrA5xfjXAAAAAADjMA0GCWCGSAFlAwQCAQUAoIIBMjAa
- # BgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwLwYJKoZIhvcNAQkEMSIEIFYGRA4J
- # 9eJ3jrSboY9eylE1mUtSD/y5AP+In52yBONzMIHiBgsqhkiG9w0BCRACDDGB0jCB
- # zzCBzDCBsQQUyTQj5wFc74nlfsvUrxz6SFdq4vswgZgwgYCkfjB8MQswCQYDVQQG
- # EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG
- # A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQg
- # VGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAAONDM5qwOcX41wAAAAAA4zAWBBQEBbRJ
- # TGs2o+sGfeBJUfhgsOiTqjANBgkqhkiG9w0BAQsFAASCAQBoJnCwtghdUuY/4Nbf
- # IRn+fl7j2nKNj4+N9ib9R7j7xMI+orExw1S1KTabvU1fZ1kZML0m7OeJZrIBGTU7
- # K0iZUfDnFO0zvmVx8a89qYjlA2hM/3mdVQSfOn7sKBW/iNHBzaX6zTBzKiLgUCiX
- # MONdgtwVAtcV2VadL1PbrpJKngQnNxe5nOc63xnlYQ1EN6h8GLhbh7G4e3jiPhSV
- # BYrv5g5s2FaxepzyeFxxbPwakGryAhIMpiLdXRnQEtFFiv9pgJSkt73x7gPw4vM6
- # lLjkpJz5voZBYg/S4YI4akUNaLJ0K9CCHrlhFwVJakVgSSXbZ+VnW2pLZXQZrACw
- # a0wr
- # SIG # End signature block
|