# Copyright (c) Mondoo, Inc. # SPDX-License-Identifier: BUSL-1.1 #Requires -Version 5 #Requires -RunAsAdministrator <# .SYNOPSIS This PowerShell script installs the latest Mondoo agent on windows. Usage: Set-ExecutionPolicy RemoteSigned -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://install.mondoo.com/ps1')); Install-Mondoo; .PARAMETER RegistrationToken The registration token for your mondoo installation. See our docs if you do not have one: https://mondoo.com/docs/cnspec/cnspec-adv-install/registration/ .PARAMETER DownloadType Set 'msi' (default) to download the package or 'zip' for the agent binary instead .PARAMETER Version If provided, tries to download the specific version instead of the latest .PARAMETER Annotation (Optional) Comma-separated key=value pairs to annotate the asset in mondoo.yml .PARAMETER Name (Optional) A custom asset name (defaults to machine hostname) .EXAMPLE Import-Module ./install.ps1; Install-Mondoo -RegistrationToken 'INSERTKEYHERE' -Annotation 'env=prod,role=db' -Name 'db-server-01' Import-Module ./install.ps1; Install-Mondoo -RegistrationToken 'INSERTKEYHERE' Import-Module ./install.ps1; Install-Mondoo -Version 6.14.0 Import-Module ./install.ps1; Install-Mondoo -Proxy 'http://1.1.1.1:3128' Import-Module ./install.ps1; Install-Mondoo -Service enable Import-Module ./install.ps1; Install-Mondoo -UpdateTask enable -Time 12:00 -Interval 3 Import-Module ./install.ps1; Install-Mondoo -Product cnspec Import-Module ./install.ps1; Install-Mondoo -Path 'C:\Program Files\Mondoo\' #> function Install-Mondoo { [CmdletBinding()] Param( [string] $Product = 'mondoo', [string] $DownloadType = 'msi', [string] $Path = 'C:\Program Files\Mondoo\', [string] $Version = '', [string] $RegistrationToken = '', [string] $Proxy = '', [string] $Service = '', [string] $UpdateTask = '', [string] $Time = '', [string] $Interval = '', [string] $taskname = "MondooUpdater", [string] $taskpath = "Mondoo", [string] $Timer = '60', [string] $Splay = '60', [string] $Annotation = '', [string] $Name = '' ) Process { function fail($msg) { Write-Error -ErrorAction Stop -Message $msg } function info($msg) { $host.ui.RawUI.ForegroundColor = "white" Write-Output $msg } function success($msg) { $host.ui.RawUI.ForegroundColor = "darkgreen" Write-Output $msg } function purple($msg) { $host.ui.RawUI.ForegroundColor = "magenta" Write-Output $msg } function Get-UserAgent() { return "MondooInstallScript/1.0 (+https://mondoo.com/) PowerShell/$($PSVersionTable.PSVersion.Major).$($PSVersionTable.PSVersion.Minor) (Windows NT $([System.Environment]::OSVersion.Version.Major).$([System.Environment]::OSVersion.Version.Minor);$PSEdition)" } function download($url, $to) { $wc = New-Object Net.Webclient If (![string]::IsNullOrEmpty($Proxy)) { $wc.proxy = New-Object System.Net.WebProxy($Proxy) } $wc.Headers.Add('User-Agent', (Get-UserAgent)) $wc.downloadFile($url, $to) } function determine_latest { Param ( [Parameter(Mandatory)] [string[]]$product, [Parameter(Mandatory)] [string[]]$filetype, [Parameter(Mandatory)] [string[]]$arch ) If ([string]::IsNullOrEmpty($filetype)) { $filetype = [regex]::escape('msi') } $url_version = "https://install.mondoo.com/package/${product}/windows/${arch}/${filetype}/latest/version" $wc = New-Object Net.Webclient If (![string]::IsNullOrEmpty($Proxy)) { $wc.proxy = New-Object System.Net.WebProxy($Proxy) } $wc.Headers.Add('User-Agent', (Get-UserAgent)) $wc.DownloadString($url_version) } function getenv($name, $global) { $target = 'User'; if ($global) { $target = 'Machine' } [System.Environment]::GetEnvironmentVariable($name, $target) } function setenv($name, $value, $global) { $target = 'User'; if ($global) { $target = 'Machine' } [System.Environment]::SetEnvironmentVariable($name, $value, $target) } function enable_service() { info " * Set cnspec to run as a service automatically at startup and start the service" If ((Get-Service -Name Mondoo).Status -eq 'Running') { info " * Restarting $Product Service as it is already running" Restart-Service -Name Mondoo -Force } IF ((Get-Host).Version.Major -le 5) { Set-Service -Name Mondoo -Status Running -StartupType Automatic sc.exe config Mondoo start=delayed-auto } Else { Set-Service -Name Mondoo -Status Running -StartupType AutomaticDelayedStart } If (((Get-Service -Name Mondoo).Status -eq 'Running') -and ((Get-Service -Name Mondoo).StartType -contains 'Automatic') ) { success "* $Product Service is running and start type is automatic delayed start" } Else { fail "Mondoo service configuration failed" } } function NewScheduledTaskFolder($taskpath) { $ErrorActionPreference = "stop" $scheduleObject = New-Object -ComObject schedule.service $scheduleObject.connect() $rootFolder = $scheduleObject.GetFolder("\") Try { $null = $scheduleObject.GetFolder($taskpath) } Catch { $null = $rootFolder.CreateFolder($taskpath) } Finally { $ErrorActionPreference = "continue" } } function CreateAndRegisterMondooUpdaterTask($taskname, $taskpath) { info " * Create and register the Mondoo update task" NewScheduledTaskFolder $taskpath # Start building the command string $command = @( '[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;' '$wc = New-Object Net.Webclient;' ) if (![string]::IsNullOrEmpty($Proxy)) { $command += '$wc.proxy = New-Object System.Net.WebProxy(' + "'$Proxy'" + ');' } $command += 'iex ($wc.DownloadString(' + "'https://install.mondoo.com/ps1'" + '));' # Start building the Install-Mondoo command $installCmd = @("Install-Mondoo") $installCmd += "-Product $Product" $installCmd += "-Path '$Path'" if ($Service.ToLower() -eq 'enable' -and $Product.ToLower() -eq 'mondoo') { $installCmd += "-Service enable" } if (![string]::IsNullOrEmpty($Annotation)) { $installCmd += "-Annotation '$Annotation'" } if (![string]::IsNullOrEmpty($Name)) { $installCmd += "-Name $Name" } if (![string]::IsNullOrEmpty($Proxy)) { $installCmd += "-Proxy $Proxy" } if ($UpdateTask.ToLower() -eq 'enable') { $installCmd += "-UpdateTask enable -Time $Time -Interval $Interval;" } $command += ($installCmd -join ' ') # Wrap command in quotes for -Command argument $taskArgument = "-NoProfile -WindowStyle Hidden -ExecutionPolicy RemoteSigned -Command `"&{ $($command -join ' ') }`"" info " * Scheduled Task argument: $taskArgument" # Build scheduled task components $action = New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument $taskArgument $trigger = New-ScheduledTaskTrigger -Daily -DaysInterval $Interval -At $Time $principal = New-ScheduledTaskPrincipal -GroupId "NT AUTHORITY\SYSTEM" -RunLevel Highest $settings = New-ScheduledTaskSettingsSet -Compatibility Win8 Register-ScheduledTask -Action $action -Settings $settings -Trigger $trigger -TaskName $taskname -Description "$Product Updater Task" -TaskPath $taskpath -Principal $principal if (Get-ScheduledTask -TaskName $taskname -EA 0) { success "* $Product Updater Task installed" } else { fail "Installation of $Product Updater Task failed" } } purple "Mondoo Windows Installer Script" purple " .-. : : ,-.,-.,-. .--. ,-.,-. .-`' : .--. .--. : ,. ,. :`' .; :: ,. :`' .; :`' .; :`' .; : :_;:_;:_;``.__.`':_;:_;``.__.`'``.__.`'``.__. " info "Welcome to the $Product Install Script. It downloads the $Product binary for Windows into $ENV:UserProfile\$Product and adds the path to the user's environment PATH. If you are experiencing any issues, please do not hesitate to reach out: * Mondoo Community GitHub Discussions https://github.com/orgs/mondoohq/discussions This script source is available at: https://github.com/mondoohq/installer " # Any subsequent commands which fails will stop the execution of the shell script $previous_erroractionpreference = $erroractionpreference $erroractionpreference = 'stop' # verify powershell pre-conditions If (($PSVersionTable.PSVersion.Major) -lt 5) { fail " The install script requires PowerShell 5 or later. To upgrade PowerShell visit https://docs.microsoft.com/en-us/powershell/scripting/setup/installing-windows-powershell " } # check if we are on 64-bit intel, 64-bit arm, or a 32-bit process on a 64-bit intel system: If ($env:PROCESSOR_ARCHITECTURE -ne 'AMD64' -and $env:PROCESSOR_ARCHITECTURE -ne 'ARM64' -and -not (($env:PROCESSOR_ARCHITECTURE -eq "x86" -and [Environment]::Is64BitOperatingSystem))) { fail " Your processor architecture $env:PROCESSOR_ARCHITECTURE is not supported yet. Please come join us in our Mondoo Community GitHub Discussions https://github.com/orgs/mondoohq/discussions or email us at hello@mondoo.com " } info "Arguments:" info (" Product: {0}" -f $Product) info (" RegistrationToken: {0}" -f $RegistrationToken) info (" DownloadType: {0}" -f $DownloadType) info (" Path: {0}" -f $Path) info (" Version: {0}" -f $Version) info (" Proxy: {0}" -f $Proxy) info (" Service: {0}" -f $Service) info (" UpdateTask: {0}" -f $UpdateTask) info (" Time: {0}" -f $Time) info (" Interval: {0}" -f $Interval) info (" Scan Interval: {0}" -f $Timer) info (" Splay: {0}" -f $Splay) info "" # determine download url $filetype = $DownloadType # cnquery and cnspec only ship as zip If ($product -ne 'mondoo') { $filetype = 'zip' } # get the installed mondoo version $Apps = @() $Apps += Get-ItemProperty "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" # 32 Bit $Apps += Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*" # 64 Bit $installed_version = $Apps | where-object Publisher -eq "Mondoo, Inc." if ($installed_version) { $installed_version.version = $installed_version.DisplayVersion } $arch = 'amd64' if ($env:PROCESSOR_ARCHITECTURE -match "ARM") { $arch = 'arm64' } $releaseurl = '' $version = $Version If ([string]::IsNullOrEmpty($Version)) { # latest release $version = determine_latest -product $Product -filetype $filetype -arch $arch $releaseurl = "https://install.mondoo.com/package/${Product}/windows/${arch}/${filetype}/latest/download" } Else { # specific version $releaseurl = "https://install.mondoo.com/package/${Product}/windows/${arch}/${filetype}/${version}/download" } # Check if Path exists $Path = $Path.trim('\') If (!(Test-Path $Path)) { New-Item -Path $Path -ItemType Directory } If ($version -ne $installed_version.version) { # download windows binary zip/msi $downloadlocation = "$Path\$Product.$filetype" info " * Downloading $Product from $releaseurl to $downloadlocation" download $releaseurl $downloadlocation } Else { info " * Do not download $Product as latest version is already installed." } If ($filetype -eq 'zip') { If ($version -ne $installed_version.version) { info ' * Extracting zip...' # remove older version if it is still there Remove-Item "$Path\$Product.exe" -Force -ErrorAction Ignore Add-Type -Assembly "System.IO.Compression.FileSystem" [IO.Compression.ZipFile]::ExtractToDirectory($downloadlocation, $Path) Remove-Item $downloadlocation -Force success " * $Product was downloaded successfully! You can find it in $Path\$Product.exe" } If ($UpdateTask.ToLower() -eq 'enable') { # Creating a scheduling task to automatically update the Mondoo package $taskname = $Product + "Updater" $taskpath = $Product If (Get-ScheduledTask -TaskName $taskname -EA 0) { Unregister-ScheduledTask -TaskName $taskname -Confirm:$false } CreateAndRegisterMondooUpdaterTask $taskname $taskpath } } ElseIf ($filetype -eq 'msi') { If ($version -ne $installed_version.version) { info ' * Installing msi package...' $file = Get-Item $downloadlocation $packageName = $Product $timeStamp = Get-Date -Format yyyyMMddTHHmmss $logFile = '{0}\{1}-{2}.MsiInstall.log' -f $env:TEMP, $packageName, $timeStamp $argsList = @( "/i" ('"{0}"' -f $file.fullname) "/qn" "/norestart" "/L*v" $logFile ) info (' * Run installer {0} and log into {1}' -f $downloadlocation, $logFile) $process = Start-Process "msiexec.exe" -Wait -NoNewWindow -PassThru -ArgumentList $argsList # https://docs.microsoft.com/en-us/windows/win32/msi/error-codes } If (![string]::IsNullOrEmpty($RegistrationToken)) { # Prepare cnspec logout command $logout_params = @("logout", "--config", "C:\ProgramData\Mondoo\mondoo.yml", "--force") # Prepare cnspec login command $login_params = @("login", "-t", "$RegistrationToken", "--config", "C:\ProgramData\Mondoo\mondoo.yml") If (![string]::IsNullOrEmpty($Proxy)) { $login_params = $login_params + @("--api-proxy", "$Proxy") } If (![string]::IsNullOrEmpty($Timer)) { $login_params = $login_params + @("--timer", "$Timer") } If (![string]::IsNullOrEmpty($Splay)) { $login_params = $login_params + @("--splay", "$Splay") } if (![string]::IsNullOrEmpty($Annotation)) { $login_params = $login_params + @('--annotation', $Annotation) } if (![string]::IsNullOrEmpty($Name)) { $login_params = $login_params + @('--name', $Name) } $program = "$Path\cnspec.exe" # Cache the error action preference $backupErrorActionPreference = $ErrorActionPreference $ErrorActionPreference = "Continue" # Logout if already cnspec client registred in If ((Test-Path -Path "C:\ProgramData\Mondoo\mondoo.yml")) { info " * $Product Client is already registered. Logging out and back in again to update the registration" $output = (& $program $logout_params 2>&1) info "$output" Remove-Item "C:\ProgramData\Mondoo\mondoo.yml" -Force } info " * Register $Product Client" # Login to register cnspec client $output = (& $program $login_params 2>&1) # Restore the error action preference $ErrorActionPreference = $backupErrorActionPreference if ($output -match "ERROR") { throw $output } elseif ($output) { info "$output" } else { info "No output" } } If ($version -ne $installed_version.version) { If (@(0, 3010) -contains $process.ExitCode) { success " * $Product was installed successfully!" } Else { fail (" * $Product installation failed with exit code: {0}" -f $process.ExitCode) } } Else { success " * $Product is already installed in the latest version and registered." } # Check if Service parameter is set and Parameter Product is set to mondoo If (($Service.ToLower() -eq 'enable' -and $Product.ToLower() -eq 'mondoo') -or ((Get-Service -Name Mondoo).Status -eq 'Running')) { # start Mondoo service enable_service } If ($UpdateTask.ToLower() -eq 'enable') { # Creating a scheduling task to automatically update the Mondoo package $taskname = $Product + "Updater" $taskpath = $Product If (Get-ScheduledTask -TaskName $taskname -EA 0) { Unregister-ScheduledTask -TaskName $taskname -Confirm:$false } CreateAndRegisterMondooUpdaterTask $taskname $taskpath } If ($version -ne $installed_version.version) { Remove-Item $downloadlocation -Force } } Else { fail "${filetype} is not supported for download" } # Display final message info " Thank you for installing $Product!" info " If you have any questions, please come join us in our Mondoo Community on GitHub Discussions: * https://github.com/orgs/mondoohq/discussions Configure cnspec to run as a service and get continuous security reports using PowerShell: Set-Service -Name mondoo -Status Running -StartupType Automatic Scan your system now and view your results at https://console.mondoo.com: cnspec scan " $env:Path = [System.Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path", "User") # reset erroractionpreference $erroractionpreference = $previous_erroractionpreference } } # SIG # Begin signature block # MII6nwYJKoZIhvcNAQcCoII6kDCCOowCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAqyZdj7cnNuHwv # 5K41fP8OsktaH4+Zk8ezFdyEPXPG66CCIqQwggXMMIIDtKADAgECAhBUmNLR1FsZ # lUgTecgRwIeZMA0GCSqGSIb3DQEBDAUAMHcxCzAJBgNVBAYTAlVTMR4wHAYDVQQK # ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xSDBGBgNVBAMTP01pY3Jvc29mdCBJZGVu # dGl0eSBWZXJpZmljYXRpb24gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAy # MDAeFw0yMDA0MTYxODM2MTZaFw00NTA0MTYxODQ0NDBaMHcxCzAJBgNVBAYTAlVT # MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xSDBGBgNVBAMTP01pY3Jv # c29mdCBJZGVudGl0eSBWZXJpZmljYXRpb24gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRo # b3JpdHkgMjAyMDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALORKgeD # Bmf9np3gx8C3pOZCBH8Ppttf+9Va10Wg+3cL8IDzpm1aTXlT2KCGhFdFIMeiVPvH # or+Kx24186IVxC9O40qFlkkN/76Z2BT2vCcH7kKbK/ULkgbk/WkTZaiRcvKYhOuD # PQ7k13ESSCHLDe32R0m3m/nJxxe2hE//uKya13NnSYXjhr03QNAlhtTetcJtYmrV # qXi8LW9J+eVsFBT9FMfTZRY33stuvF4pjf1imxUs1gXmuYkyM6Nix9fWUmcIxC70 # ViueC4fM7Ke0pqrrBc0ZV6U6CwQnHJFnni1iLS8evtrAIMsEGcoz+4m+mOJyoHI1 # vnnhnINv5G0Xb5DzPQCGdTiO0OBJmrvb0/gwytVXiGhNctO/bX9x2P29Da6SZEi3 # W295JrXNm5UhhNHvDzI9e1eM80UHTHzgXhgONXaLbZ7LNnSrBfjgc10yVpRnlyUK # xjU9lJfnwUSLgP3B+PR0GeUw9gb7IVc+BhyLaxWGJ0l7gpPKWeh1R+g/OPTHU3mg # trTiXFHvvV84wRPmeAyVWi7FQFkozA8kwOy6CXcjmTimthzax7ogttc32H83rwjj # O3HbbnMbfZlysOSGM1l0tRYAe1BtxoYT2v3EOYI9JACaYNq6lMAFUSw0rFCZE4e7 # swWAsk0wAly4JoNdtGNz764jlU9gKL431VulAgMBAAGjVDBSMA4GA1UdDwEB/wQE # AwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTIftJqhSobyhmYBAcnz1AQ # T2ioojAQBgkrBgEEAYI3FQEEAwIBADANBgkqhkiG9w0BAQwFAAOCAgEAr2rd5hnn # LZRDGU7L6VCVZKUDkQKL4jaAOxWiUsIWGbZqWl10QzD0m/9gdAmxIR6QFm3FJI9c # Zohj9E/MffISTEAQiwGf2qnIrvKVG8+dBetJPnSgaFvlVixlHIJ+U9pW2UYXeZJF # xBA2CFIpF8svpvJ+1Gkkih6PsHMNzBxKq7Kq7aeRYwFkIqgyuH4yKLNncy2RtNwx # AQv3Rwqm8ddK7VZgxCwIo3tAsLx0J1KH1r6I3TeKiW5niB31yV2g/rarOoDXGpc8 # FzYiQR6sTdWD5jw4vU8w6VSp07YEwzJ2YbuwGMUrGLPAgNW3lbBeUU0i/OxYqujY # lLSlLu2S3ucYfCFX3VVj979tzR/SpncocMfiWzpbCNJbTsgAlrPhgzavhgplXHT2 # 6ux6anSg8Evu75SjrFDyh+3XOjCDyft9V77l4/hByuVkrrOj7FjshZrM77nq81YY # uVxzmq/FdxeDWds3GhhyVKVB0rYjdaNDmuV3fJZ5t0GNv+zcgKCf0Xd1WF81E+Al # GmcLfc4l+gcK5GEh2NQc5QfGNpn0ltDGFf5Ozdeui53bFv0ExpK91IjmqaOqu/dk # ODtfzAzQNb50GQOmxapMomE2gj4d8yu8l13bS3g7LfU772Aj6PXsCyM2la+YZr9T # 03u4aUoqlmZpxJTG9F9urJh4iIAGXKKy7aIwggbmMIIEzqADAgECAhMzAATtZCOV # 68urMW47AAAABO1kMA0GCSqGSIb3DQEBDAUAMFoxCzAJBgNVBAYTAlVTMR4wHAYD # VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKzApBgNVBAMTIk1pY3Jvc29mdCBJ # RCBWZXJpZmllZCBDUyBBT0MgQ0EgMDEwHhcNMjUwODEwMTI1MDE4WhcNMjUwODEz # MTI1MDE4WjBjMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmEx # DTALBgNVBAcTBENhcnkxFTATBgNVBAoTDE1vbmRvbywgSW5jLjEVMBMGA1UEAxMM # TW9uZG9vLCBJbmMuMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAi7If # Hu/he5k6RQ8cvyD6PosoLIV7gxGLvEE/+lleJhp+DvQk/y2JkixxPWQphHmcxuBz # +7onTR0UNIfnla1xhQ06NWKjcjm09d9gJeof7iBcwN50rvH1J64DTR6vsb0o997z # s9JpctejbGTQAfVsUbHf9fixdZLZx5Pupu8fJOoqsvGCa2W7KTGPbfHp+bnMrTZN # 4v5aXfRG+cbvMrhbQcwdD62bGFWRlcdcRqtkSAzNaXTY8r+DEgvJ2VC8j63NO16o # 1OApmFxd6Vq3kptoxXQIKAfzmlQwLns2UKLuDTr3Am5LExZLxeB2iNZeB6x5rJn+ # nbfoKUwt3DToHE2eHip22cCdHvo1VtbXxGdLF3QdaTGsIr7/0joH5EZb+NHFDTh+ # 7DACftokZRaR8gTVCiOfCFDNgHFIA420P9ru3VrLaQPnti+oEl079BnarityAZ1s # Jw4jqQbuntUmIzxXV+xacDkk9fQnLJ3rbxBG2xbs+iOfNp/ualz/WdDMlf35AgMB # AAGjggIaMIICFjAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDA9BgNVHSUE # NjA0BgorBgEEAYI3YQEABggrBgEFBQcDAwYcKwYBBAGCN2GCqd2RVoKnluRSgZGY # /W+D3NurKjAdBgNVHQ4EFgQUADOjkxiTBIouRs0KupDNZbm3slIwHwYDVR0jBBgw # FoAU6IPEM9fcnwycdpoKptTfh6ZeWO4wZwYDVR0fBGAwXjBcoFqgWIZWaHR0cDov # L3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwSUQlMjBW # ZXJpZmllZCUyMENTJTIwQU9DJTIwQ0ElMjAwMS5jcmwwgaUGCCsGAQUFBwEBBIGY # MIGVMGQGCCsGAQUFBzAChlhodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3Bz # L2NlcnRzL01pY3Jvc29mdCUyMElEJTIwVmVyaWZpZWQlMjBDUyUyMEFPQyUyMENB # JTIwMDEuY3J0MC0GCCsGAQUFBzABhiFodHRwOi8vb25lb2NzcC5taWNyb3NvZnQu # Y29tL29jc3AwZgYDVR0gBF8wXTBRBgwrBgEEAYI3TIN9AQEwQTA/BggrBgEFBQcC # ARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRv # cnkuaHRtMAgGBmeBDAEEATANBgkqhkiG9w0BAQwFAAOCAgEArjYHbDl1f/lV4Zz3 # B9jyRt+wK44aIB5rqUrdjLMtIbC4VtUhGK143yQe2Z5mx5+jdo7hg5vq+W7NeOMy # 4YTseirVuW272rqzNhq1JNLpYz911aXqE/V2qoHMP4MAEt0pH0ugYdFC8s+l+2UF # rBI5shuut0dYM4yF98dl1IU/0KX/EI7jMXQp6U92hwfKly37RVrGVrT+r34fFXly # vDffr9i03bHbId0fMtPKVpYlGaGbkE+vt4xOjda1XWE/f4dDeZPO9Yq0fMGivQJQ # w0s6QFySBzIezDLDn21KQvF4mz7FwrpLWsFYbI0DT47yiEAfzd+thbU4VUgsU9XX # Mck6yPw1aYgEQfs8eJrQVcC/RaqaxhFl28Ei5/MyYrufCYLvENa2m73bNzSh01Du # zaIOqQjqLcNScd56iZ2IjfPAC7hmU24JcQ4cujOkf0CwHvfR6rsYKmkrfwPxxEly # /RXF+zz3G4vsOxkY+VaogrwP+ZHuIFM+VcnMu4JlN0blEgP/OOw6YKgp/MV3Wu4f # 2N+fJhzWP9gXV7wWWfoQe2D4WClGjPpvrxBn/zHugBjLmiGo7kRrMNZx0p06ykML # 3KEAvnl779pdXQDmoho0VToVz96E4cLxMo1YbeRjIts7KultRfRh3/scHRrRWcF9 # wnWmQggHSQ+R6e/AD1fCEkPbbOkwggbmMIIEzqADAgECAhMzAATtZCOV68urMW47 # AAAABO1kMA0GCSqGSIb3DQEBDAUAMFoxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVN # aWNyb3NvZnQgQ29ycG9yYXRpb24xKzApBgNVBAMTIk1pY3Jvc29mdCBJRCBWZXJp # ZmllZCBDUyBBT0MgQ0EgMDEwHhcNMjUwODEwMTI1MDE4WhcNMjUwODEzMTI1MDE4 # WjBjMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmExDTALBgNV # BAcTBENhcnkxFTATBgNVBAoTDE1vbmRvbywgSW5jLjEVMBMGA1UEAxMMTW9uZG9v # LCBJbmMuMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAi7IfHu/he5k6 # RQ8cvyD6PosoLIV7gxGLvEE/+lleJhp+DvQk/y2JkixxPWQphHmcxuBz+7onTR0U # NIfnla1xhQ06NWKjcjm09d9gJeof7iBcwN50rvH1J64DTR6vsb0o997zs9Jpctej # bGTQAfVsUbHf9fixdZLZx5Pupu8fJOoqsvGCa2W7KTGPbfHp+bnMrTZN4v5aXfRG # +cbvMrhbQcwdD62bGFWRlcdcRqtkSAzNaXTY8r+DEgvJ2VC8j63NO16o1OApmFxd # 6Vq3kptoxXQIKAfzmlQwLns2UKLuDTr3Am5LExZLxeB2iNZeB6x5rJn+nbfoKUwt # 3DToHE2eHip22cCdHvo1VtbXxGdLF3QdaTGsIr7/0joH5EZb+NHFDTh+7DACftok # ZRaR8gTVCiOfCFDNgHFIA420P9ru3VrLaQPnti+oEl079BnarityAZ1sJw4jqQbu # ntUmIzxXV+xacDkk9fQnLJ3rbxBG2xbs+iOfNp/ualz/WdDMlf35AgMBAAGjggIa # MIICFjAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDA9BgNVHSUENjA0Bgor # BgEEAYI3YQEABggrBgEFBQcDAwYcKwYBBAGCN2GCqd2RVoKnluRSgZGY/W+D3Nur # KjAdBgNVHQ4EFgQUADOjkxiTBIouRs0KupDNZbm3slIwHwYDVR0jBBgwFoAU6IPE # M9fcnwycdpoKptTfh6ZeWO4wZwYDVR0fBGAwXjBcoFqgWIZWaHR0cDovL3d3dy5t # aWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwSUQlMjBWZXJpZmll # ZCUyMENTJTIwQU9DJTIwQ0ElMjAwMS5jcmwwgaUGCCsGAQUFBwEBBIGYMIGVMGQG # CCsGAQUFBzAChlhodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRz # L01pY3Jvc29mdCUyMElEJTIwVmVyaWZpZWQlMjBDUyUyMEFPQyUyMENBJTIwMDEu # Y3J0MC0GCCsGAQUFBzABhiFodHRwOi8vb25lb2NzcC5taWNyb3NvZnQuY29tL29j # c3AwZgYDVR0gBF8wXTBRBgwrBgEEAYI3TIN9AQEwQTA/BggrBgEFBQcCARYzaHR0 # cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRt # MAgGBmeBDAEEATANBgkqhkiG9w0BAQwFAAOCAgEArjYHbDl1f/lV4Zz3B9jyRt+w # K44aIB5rqUrdjLMtIbC4VtUhGK143yQe2Z5mx5+jdo7hg5vq+W7NeOMy4YTseirV # uW272rqzNhq1JNLpYz911aXqE/V2qoHMP4MAEt0pH0ugYdFC8s+l+2UFrBI5shuu # t0dYM4yF98dl1IU/0KX/EI7jMXQp6U92hwfKly37RVrGVrT+r34fFXlyvDffr9i0 # 3bHbId0fMtPKVpYlGaGbkE+vt4xOjda1XWE/f4dDeZPO9Yq0fMGivQJQw0s6QFyS # BzIezDLDn21KQvF4mz7FwrpLWsFYbI0DT47yiEAfzd+thbU4VUgsU9XXMck6yPw1 # aYgEQfs8eJrQVcC/RaqaxhFl28Ei5/MyYrufCYLvENa2m73bNzSh01DuzaIOqQjq # LcNScd56iZ2IjfPAC7hmU24JcQ4cujOkf0CwHvfR6rsYKmkrfwPxxEly/RXF+zz3 # G4vsOxkY+VaogrwP+ZHuIFM+VcnMu4JlN0blEgP/OOw6YKgp/MV3Wu4f2N+fJhzW # P9gXV7wWWfoQe2D4WClGjPpvrxBn/zHugBjLmiGo7kRrMNZx0p06ykML3KEAvnl7 # 79pdXQDmoho0VToVz96E4cLxMo1YbeRjIts7KultRfRh3/scHRrRWcF9wnWmQggH # SQ+R6e/AD1fCEkPbbOkwggdaMIIFQqADAgECAhMzAAAABzeMW6HZW4zUAAAAAAAH # MA0GCSqGSIb3DQEBDAUAMGMxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3Nv # ZnQgQ29ycG9yYXRpb24xNDAyBgNVBAMTK01pY3Jvc29mdCBJRCBWZXJpZmllZCBD # b2RlIFNpZ25pbmcgUENBIDIwMjEwHhcNMjEwNDEzMTczMTU0WhcNMjYwNDEzMTcz # MTU0WjBaMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 # aW9uMSswKQYDVQQDEyJNaWNyb3NvZnQgSUQgVmVyaWZpZWQgQ1MgQU9DIENBIDAx # MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAt/fAAygHxbo+jxA04hNI # 8bz+EqbWvSu9dRgAawjCZau1Y54IQal5ArpJWi8cIj0WA+mpwix8iTRguq9JELZv # TMo2Z1U6AtE1Tn3mvq3mywZ9SexVd+rPOTr+uda6GVgwLA80LhRf82AvrSwxmZpC # H/laT08dn7+Gt0cXYVNKJORm1hSrAjjDQiZ1Jiq/SqiDoHN6PGmT5hXKs22E79Me # FWYB4y0UlNqW0Z2LPNua8k0rbERdiNS+nTP/xsESZUnrbmyXZaHvcyEKYK85WBz3 # Sr6Et8Vlbdid/pjBpcHI+HytoaUAGE6rSWqmh7/aEZeDDUkz9uMKOGasIgYnenUk # 5E0b2U//bQqDv3qdhj9UJYWADNYC/3i3ixcW1VELaU+wTqXTxLAFelCi/lRHSjaW # ipDeE/TbBb0zTCiLnc9nmOjZPKlutMNho91wxo4itcJoIk2bPot9t+AV+UwNaDRI # bcEaQaBycl9pcYwWmf0bJ4IFn/CmYMVG1ekCBxByyRNkFkHmuMXLX6PMXcveE46j # Mr9syC3M8JHRddR4zVjd/FxBnS5HOro3pg6StuEPshrp7I/Kk1cTG8yOWl8aqf6O # JeAVyG4lyJ9V+ZxClYmaU5yvtKYKk1FLBnEBfDWw+UAzQV0vcLp6AVx2Fc8n0vpo # yudr3SwZmckJuz7R+S79BzMCAwEAAaOCAg4wggIKMA4GA1UdDwEB/wQEAwIBhjAQ # BgkrBgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQU6IPEM9fcnwycdpoKptTfh6ZeWO4w # VAYDVR0gBE0wSzBJBgRVHSAAMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly93d3cubWlj # cm9zb2Z0LmNvbS9wa2lvcHMvRG9jcy9SZXBvc2l0b3J5Lmh0bTAZBgkrBgEEAYI3 # FAIEDB4KAFMAdQBiAEMAQTASBgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaA # FNlBKbAPD2Ns72nX9c0pnqRIajDmMHAGA1UdHwRpMGcwZaBjoGGGX2h0dHA6Ly93 # d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMElEJTIwVmVy # aWZpZWQlMjBDb2RlJTIwU2lnbmluZyUyMFBDQSUyMDIwMjEuY3JsMIGuBggrBgEF # BQcBAQSBoTCBnjBtBggrBgEFBQcwAoZhaHR0cDovL3d3dy5taWNyb3NvZnQuY29t # L3BraW9wcy9jZXJ0cy9NaWNyb3NvZnQlMjBJRCUyMFZlcmlmaWVkJTIwQ29kZSUy # MFNpZ25pbmclMjBQQ0ElMjAyMDIxLmNydDAtBggrBgEFBQcwAYYhaHR0cDovL29u # ZW9jc3AubWljcm9zb2Z0LmNvbS9vY3NwMA0GCSqGSIb3DQEBDAUAA4ICAQB3/utL # ItkwLTp4Nfh99vrbpSsL8NwPIj2+TBnZGL3C8etTGYs+HZUxNG+rNeZa+Rzu9oEc # AZJDiGjEWytzMavD6Bih3nEWFsIW4aGh4gB4n/pRPeeVrK4i1LG7jJ3kPLRhNOHZ # iLUQtmrF4V6IxtUFjvBnijaZ9oIxsSSQP8iHMjP92pjQrHBFWHGDbkmx+yO6Ian3 # QN3YmbdfewzSvnQmKbkiTibJgcJ1L0TZ7BwmsDvm+0XRsPOfFgnzhLVqZdEyWww1 # 0bflOeBKqkb3SaCNQTz8nshaUZhrxVU5qNgYjaaDQQm+P2SEpBF7RolEC3lllfuL # 4AOGCtoNdPOWrx9vBZTXAVdTE2r0IDk8+5y1kLGTLKzmNFn6kVCc5BddM7xoDWQ4 # aUoCRXcsBeRhsclk7kVXP+zJGPOXwjUJbnz2Kt9iF/8B6FDO4blGuGrogMpyXkuw # CC2Z4XcfyMjPDhqZYAPGGTUINMtFbau5RtGG1DOWE9edCahtuPMDgByfPixvhy3s # n7zUHgIC/YsOTMxVuMQi/bgamemo/VNKZrsZaS0nzmOxKpg9qDefj5fJ9gIHXcp2 # F0OHcVwe3KnEXa8kqzMDfrRl/wwKrNSFn3p7g0b44Ad1ONDmWt61MLQvF54LG62i # 6ffhTCeoFT9Z9pbUo2gxlyTFg7Bm0fgOlnRfGDCCB54wggWGoAMCAQICEzMAAAAH # h6M0o3uljhwAAAAAAAcwDQYJKoZIhvcNAQEMBQAwdzELMAkGA1UEBhMCVVMxHjAc # BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjFIMEYGA1UEAxM/TWljcm9zb2Z0 # IElkZW50aXR5IFZlcmlmaWNhdGlvbiBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 # eSAyMDIwMB4XDTIxMDQwMTIwMDUyMFoXDTM2MDQwMTIwMTUyMFowYzELMAkGA1UE # BhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjE0MDIGA1UEAxMr # TWljcm9zb2Z0IElEIFZlcmlmaWVkIENvZGUgU2lnbmluZyBQQ0EgMjAyMTCCAiIw # DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALLwwK8ZiCji3VR6TElsaQhVCbRS # /3pK+MHrJSj3Zxd3KU3rlfL3qrZilYKJNqztA9OQacr1AwoNcHbKBLbsQAhBnIB3 # 4zxf52bDpIO3NJlfIaTE/xrweLoQ71lzCHkD7A4As1Bs076Iu+mA6cQzsYYH/Cbl # 1icwQ6C65rU4V9NQhNUwgrx9rGQ//h890Q8JdjLLw0nV+ayQ2Fbkd242o9kH82RZ # sH3HEyqjAB5a8+Ae2nPIPc8sZU6ZE7iRrRZywRmrKDp5+TcmJX9MRff241UaOBs4 # NmHOyke8oU1TYrkxh+YeHgfWo5tTgkoSMoayqoDpHOLJs+qG8Tvh8SnifW2Jj3+i # i11TS8/FGngEaNAWrbyfNrC69oKpRQXY9bGH6jn9NEJv9weFxhTwyvx9OJLXmRGb # AUXN1U9nf4lXezky6Uh/cgjkVd6CGUAf0K+Jw+GE/5VpIVbcNr9rNE50Sbmy/4RT # CEGvOq3GhjITbCa4crCzTTHgYYjHs1NbOc6brH+eKpWLtr+bGecy9CrwQyx7S/Bf # YJ+ozst7+yZtG2wR461uckFu0t+gCwLdN0A6cFtSRtR8bvxVFyWwTtgMMFRuBa3v # mUOTnfKLsLefRaQcVTgRnzeLzdpt32cdYKp+dhr2ogc+qM6K4CBI5/j4VFyC4QFe # UP2YAidLtvpXRRo3AgMBAAGjggI1MIICMTAOBgNVHQ8BAf8EBAMCAYYwEAYJKwYB # BAGCNxUBBAMCAQAwHQYDVR0OBBYEFNlBKbAPD2Ns72nX9c0pnqRIajDmMFQGA1Ud # IARNMEswSQYEVR0gADBBMD8GCCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29m # dC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5odG0wGQYJKwYBBAGCNxQCBAwe # CgBTAHUAYgBDAEEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTIftJqhSob # yhmYBAcnz1AQT2ioojCBhAYDVR0fBH0wezB5oHegdYZzaHR0cDovL3d3dy5taWNy # b3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwSWRlbnRpdHklMjBWZXJp # ZmljYXRpb24lMjBSb290JTIwQ2VydGlmaWNhdGUlMjBBdXRob3JpdHklMjAyMDIw # LmNybDCBwwYIKwYBBQUHAQEEgbYwgbMwgYEGCCsGAQUFBzAChnVodHRwOi8vd3d3 # Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMElkZW50aXR5 # JTIwVmVyaWZpY2F0aW9uJTIwUm9vdCUyMENlcnRpZmljYXRlJTIwQXV0aG9yaXR5 # JTIwMjAyMC5jcnQwLQYIKwYBBQUHMAGGIWh0dHA6Ly9vbmVvY3NwLm1pY3Jvc29m # dC5jb20vb2NzcDANBgkqhkiG9w0BAQwFAAOCAgEAfyUqnv7Uq+rdZgrbVyNMul5s # kONbhls5fccPlmIbzi+OwVdPQ4H55v7VOInnmezQEeW4LqK0wja+fBznANbXLB0K # rdMCbHQpbLvG6UA/Xv2pfpVIE1CRFfNF4XKO8XYEa3oW8oVH+KZHgIQRIwAbyFKQ # 9iyj4aOWeAzwk+f9E5StNp5T8FG7/VEURIVWArbAzPt9ThVN3w1fAZkF7+YU9kbq # 1bCR2YD+MtunSQ1Rft6XG7b4e0ejRA7mB2IoX5hNh3UEauY0byxNRG+fT2MCEhQl # 9g2i2fs6VOG19CNep7SquKaBjhWmirYyANb0RJSLWjinMLXNOAga10n8i9jqeprz # SMU5ODmrMCJE12xS/NWShg/tuLjAsKP6SzYZ+1Ry358ZTFcx0FS/mx2vSoU8s8HR # vy+rnXqyUJ9HBqS0DErVLjQwK8VtsBdekBmdTbQVoCgPCqr+PDPB3xajYnzevs7e # idBsM71PINK2BoE2UfMwxCCX3mccFgx6UsQeRSdVVVNSyALQe6PT12418xon2iDG # E81OGCreLzDcMAZnrUAx4XQLUz6ZTl65yPUiOh3k7Yww94lDf+8oG2oZmDh5O1Qe # 38E+M3vhKwmzIeoB1dVLlz4i3IpaDcR+iuGjH2TdaC1ZOmBXiCRKJLj4DT2uhJ04 # ji+tHD6n58vhavFIrmcxghdRMIIXTQIBATBxMFoxCzAJBgNVBAYTAlVTMR4wHAYD # VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKzApBgNVBAMTIk1pY3Jvc29mdCBJ # RCBWZXJpZmllZCBDUyBBT0MgQ0EgMDECEzMABO1kI5Xry6sxbjsAAAAE7WQwDQYJ # YIZIAWUDBAIBBQCgXjAQBgorBgEEAYI3AgEMMQIwADAZBgkqhkiG9w0BCQMxDAYK # KwYBBAGCNwIBBDAvBgkqhkiG9w0BCQQxIgQgu5iEcm4Km/dRvRsPweUSocX6w41a # Cu6moPQszSivfkswDQYJKoZIhvcNAQEBBQAEggGANqKi+8I82psYhXMXr/bsVa1i # kUlH1hNP4PsA7wQMPDqWupfSFg5GVLG4IKkoWrN6SNoBC5n4mGtbEKkxPVCv1uHV # y3YOC3bUE3SETx8rfkmSog89KZDz7cJdDIDGp0VbXvMDLKBghOvpqS6Mu6zamvff # WKRMadAqrxBPDRtCjgtm+xYU1pfswELKWogG5WDEGB+iEOTSeFV2mOxyrzrOo5uY # CVkhO6eShqJrZbXyry/aw1MZzGBJ53tkmDjnV4PPU8M/x9ll0Tt2iAozkKAUeW/9 # D/0AV3+okDfqhpnuTsFM+zTSTrruROA4FnrZe+SdLATkpoCvD0g/dUUOGKBTRbOq # HnL4LrFcJDnd+0NpLewIhjwsxvVLsov3aMkbHqXe0fatJJ5UDG1pinLp3kieKVBv # PXs8omeyhjcMhy/dZCif+PYkk+huADE5Tih4Wesbcq0JRjYr8BdYV4u1TlF87VRn # U71CbgG3XqTSeD0LQD99y2DDdtJ0ls//eKU6Z3PRoYIU0TCCFM0GCisGAQQBgjcD # AwExghS9MIIUuQYJKoZIhvcNAQcCoIIUqjCCFKYCAQMxDzANBglghkgBZQMEAgIF # ADCCAXkGCyqGSIb3DQEJEAEEoIIBaASCAWQwggFgAgEBBgorBgEEAYRZCgMBMEEw # DQYJYIZIAWUDBAICBQAEMLmw91r4RObkJ/Xu4ZzyqgZvto6dYnP9hDbORb9C1Drg # aluCnYBHbIaF3AOkOKxR1QIGaJPq8Y3rGBIyMDI1MDgxMTA5NTUzNC43OVowBIAC # AfSggemkgeYwgeMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAw # DgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x # LTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJhdGlvbnMgTGltaXRlZDEn # MCUGA1UECxMeblNoaWVsZCBUU1MgRVNOOjdCMUEtMDVFMC1EOTQ3MTUwMwYDVQQD # EyxNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1lIFN0YW1waW5nIEF1dGhvcml0eaCC # DykwggeCMIIFaqADAgECAhMzAAAABeXPD/9mLsmHAAAAAAAFMA0GCSqGSIb3DQEB # DAUAMHcxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp # b24xSDBGBgNVBAMTP01pY3Jvc29mdCBJZGVudGl0eSBWZXJpZmljYXRpb24gUm9v # dCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAyMDAeFw0yMDExMTkyMDMyMzFaFw0z # NTExMTkyMDQyMzFaMGExCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQg # Q29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWVz # dGFtcGluZyBDQSAyMDIwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA # nnznUmP94MWfBX1jtQYioxwe1+eXM9ETBb1lRkd3kcFdcG9/sqtDlwxKoVIcaqDb # +omFio5DHC4RBcbyQHjXCwMk/l3TOYtgoBjxnG/eViS4sOx8y4gSq8Zg49REAf5h # uXhIkQRKe3Qxs8Sgp02KHAznEa/Ssah8nWo5hJM1xznkRsFPu6rfDHeZeG1Wa1wI # SvlkpOQooTULFm809Z0ZYlQ8Lp7i5F9YciFlyAKwn6yjN/kR4fkquUWfGmMopNq/ # B8U/pdoZkZZQbxNlqJOiBGgCWpx69uKqKhTPVi3gVErnc/qi+dR8A2MiAz0kN0nh # 7SqINGbmw5OIRC0EsZ31WF3Uxp3GgZwetEKxLms73KG/Z+MkeuaVDQQheangOEMG # J4pQZH55ngI0Tdy1bi69INBV5Kn2HVJo9XxRYR/JPGAaM6xGl57Ei95HUw9NV/uC # 3yFjrhc087qLJQawSC3xzY/EXzsT4I7sDbxOmM2rl4uKK6eEpurRduOQ2hTkmG1h # SuWYBunFGNv21Kt4N20AKmbeuSnGnsBCd2cjRKG79+TX+sTehawOoxfeOO/jR7wo # 3liwkGdzPJYHgnJ54UxbckF914AqHOiEV7xTnD1a69w/UTxwjEugpIPMIIE67SFZ # 2PMo27xjlLAHWW3l1CEAFjLNHd3EQ79PUr8FUXetXr0CAwEAAaOCAhswggIXMA4G # A1UdDwEB/wQEAwIBhjAQBgkrBgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQUa2koOjUv # SGNAz3vYr0npPtk92yEwVAYDVR0gBE0wSzBJBgRVHSAAMEEwPwYIKwYBBQUHAgEW # M2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvRG9jcy9SZXBvc2l0b3J5 # Lmh0bTATBgNVHSUEDDAKBggrBgEFBQcDCDAZBgkrBgEEAYI3FAIEDB4KAFMAdQBi # AEMAQTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFMh+0mqFKhvKGZgEByfP # UBBPaKiiMIGEBgNVHR8EfTB7MHmgd6B1hnNodHRwOi8vd3d3Lm1pY3Jvc29mdC5j # b20vcGtpb3BzL2NybC9NaWNyb3NvZnQlMjBJZGVudGl0eSUyMFZlcmlmaWNhdGlv # biUyMFJvb3QlMjBDZXJ0aWZpY2F0ZSUyMEF1dGhvcml0eSUyMDIwMjAuY3JsMIGU # BggrBgEFBQcBAQSBhzCBhDCBgQYIKwYBBQUHMAKGdWh0dHA6Ly93d3cubWljcm9z # b2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwSWRlbnRpdHklMjBWZXJp # ZmljYXRpb24lMjBSb290JTIwQ2VydGlmaWNhdGUlMjBBdXRob3JpdHklMjAyMDIw # LmNydDANBgkqhkiG9w0BAQwFAAOCAgEAX4h2x35ttVoVdedMeGj6TuHYRJklFaW4 # sTQ5r+k77iB79cSLNe+GzRjv4pVjJviceW6AF6ycWoEYR0LYhaa0ozJLU5Yi+LCm # crdovkl53DNt4EXs87KDogYb9eGEndSpZ5ZM74LNvVzY0/nPISHz0Xva71QjD4h+ # 8z2XMOZzY7YQ0Psw+etyNZ1CesufU211rLslLKsO8F2aBs2cIo1k+aHOhrw9xw6J # CWONNboZ497mwYW5EfN0W3zL5s3ad4Xtm7yFM7Ujrhc0aqy3xL7D5FR2J7x9cLWM # q7eb0oYioXhqV2tgFqbKHeDick+P8tHYIFovIP7YG4ZkJWag1H91KlELGWi3SLv1 # 0o4KGag42pswjybTi4toQcC/irAodDW8HNtX+cbz0sMptFJK+KObAnDFHEsukxD+ # 7jFfEV9Hh/+CSxKRsmnuiovCWIOb+H7DRon9TlxydiFhvu88o0w35JkNbJxTk4Mh # F/KgaXn0GxdH8elEa2Imq45gaa8D+mTm8LWVydt4ytxYP/bqjN49D9NZ81coE6aQ # Wm88TwIf4R4YZbOpMKN0CyejaPNN41LGXHeCUMYmBx3PkP8ADHD1J2Cr/6tjuOOC # ztfp+o9Nc+ZoIAkpUcA/X2gSMkgHAPUvIdtoSAHEUKiBhI6JQivRepyvWcl+JYbY # bBh7pmgAXVswggefMIIFh6ADAgECAhMzAAAATzS1B8Erl1T8AAAAAABPMA0GCSqG # SIb3DQEBDAUAMGExCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y # cG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWVzdGFt # cGluZyBDQSAyMDIwMB4XDTI1MDIyNzE5NDAxOVoXDTI2MDIyNjE5NDAxOVowgeMx # CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt # b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xLTArBgNVBAsTJE1p # Y3Jvc29mdCBJcmVsYW5kIE9wZXJhdGlvbnMgTGltaXRlZDEnMCUGA1UECxMeblNo # aWVsZCBUU1MgRVNOOjdCMUEtMDVFMC1EOTQ3MTUwMwYDVQQDEyxNaWNyb3NvZnQg # UHVibGljIFJTQSBUaW1lIFN0YW1waW5nIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcN # AQEBBQADggIPADCCAgoCggIBAMJgplrGyzoQujPidzNmuc1QElb4s9Hh6DFjfZ0i # SDDGRO3lFVwS4aO+dAV2kWzM6ZMPUu5xCCH/tLWISpVirWHOy0wcPeeOTI1PMMuw # /jGGgooz1N8KhVkhGDkRwzmValp8ec/SQSziuY4Cn6Plx2jp8m3EO4cNSv1nqv1Y # 3+DnJzwinsY+ctWXlEJa3RzdlRcD6e+HuBRXBUU/UhMhpO1YUQNlFhO22CqNNylt # CoYXDpizC1Pp21fk8uOYYMOyRDWgJlWcEG/8MWEbQF4dG142fpFIyV+esDWPMn35 # dB3JwZ7bgbJv/6I5nNOGsYjqjzN3Xu/FkAYuBLz+XYEXo9yvtrWm1fylEl52Eu7p # b8cmI2u89TPqIT0gSdq9o8L0DZT7xALM5Eq3m6r17ul2na8i8XLa3iLfAzEPe1rj # /og3SHVZociHvbFzRkjeFoLsyt/SdGcMwEBe192vlWJ1OXIo//AXQbhcW+avgz5T # MyPPWeJEnjzgNrZjy4crEJBrHc+g1budRvBmj81+weFMBkteL0/AkZzVeqCHpIqW # Q4BeYnG6Rnc5P8aeFQEDwg/w7d7hIVwbLTo1L1mRj+dxVgUYvcA9xMJ4hqysj+A9 # IovKB3TQ5R2AInDRaCRkNYyamFv8BGnvpgNQ8w5Jiy7U+YHMK1SKSo4n5jcsQGpb # QqUhAgMBAAGjggHLMIIBxzAdBgNVHQ4EFgQUv6LTt+z8Zp55tkdI0e6HVEbqNzAw # HwYDVR0jBBgwFoAUa2koOjUvSGNAz3vYr0npPtk92yEwbAYDVR0fBGUwYzBhoF+g # XYZbaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0 # JTIwUHVibGljJTIwUlNBJTIwVGltZXN0YW1waW5nJTIwQ0ElMjAyMDIwLmNybDB5 # BggrBgEFBQcBAQRtMGswaQYIKwYBBQUHMAKGXWh0dHA6Ly93d3cubWljcm9zb2Z0 # LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwUHVibGljJTIwUlNBJTIwVGlt # ZXN0YW1waW5nJTIwQ0ElMjAyMDIwLmNydDAMBgNVHRMBAf8EAjAAMBYGA1UdJQEB # /wQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIHgDBmBgNVHSAEXzBdMFEGDCsG # AQQBgjdMg30BATBBMD8GCCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5j # b20vcGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5odG0wCAYGZ4EMAQQCMA0GCSqGSIb3 # DQEBDAUAA4ICAQA2szaHVDYlYVXSudVldhG94j89l1t63++gstu5Kp/tMRpiDubP # 8YN5e2El2hKKzvCV6B8oYS6bfp0AU68uCIfYaUhgFycxUIwYTjVS5uME4jum7vBf # s66HYWKzTDIhIBaQxAuVoiq5u3PTWWHc7NNOle4NYrVT37ffAJysafwb6gal9wSp # bZ1gWsCTe4xAOGutgVbb2+8sGNucoE3IIywyAH5EbdfNke63fFAOox+VkPd23q3y # MYFlUVl3kHBMSkempW/KGloNYmjh3GER1jrDTgyA9qs9ciUkA8hc7lNtZiBx4djp # MJyA/cLaNbNbUSsXY/6PXBdvHBP6NWnKihJAlOiJr14M4o5SQkQnpShHBwIcniLf # boQVkO45ij8q8j2npgyjGP1rxnJbh+hQgEg9UNAcpKt44miahIuROzHAono2j4cP # H6mhIepCEzFRZiF/V3M9qR/lx1o1x4vpQnGrY1H9fFGpT+kCqKHDEdvXdBAzr5q3 # qyKNIfDkUd/iE9yM+qgrKsDrycdeU5tGeBxB+0g0XfXVFGmiRTydaUE/Ejcr5LAs # 4u3d5isDcu1YSvw96PtWuqZxpLMOR4YCczNsu/eYA/VAdWibcGIJbGtSf3iolQI6 # wDahsSxF7zlHVyBCDm0CaoEz2zFNFeaBMxuRdyowSLFizlvOkpcWd3fxZDGCA+Qw # ggPgAgEBMHgwYTELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw # b3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZXN0YW1w # aW5nIENBIDIwMjACEzMAAABPNLUHwSuXVPwAAAAAAE8wDQYJYIZIAWUDBAICBQCg # ggE9MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDA/BgkqhkiG9w0BCQQxMgQw # MK0EoP7oZRA2SlMthBmQklgqzWKZnZjIoQO+zeITmisCBv07bZB1q1EyTtPlO0XO # MIHdBgsqhkiG9w0BCRACLzGBzTCByjCBxzCBoAQgQWYrRg+SHrRyrR2i5H2xDXaC # c4xXINA2gLKS4C+C6g4wfDBlpGMwYTELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1p # Y3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFB1YmxpYyBS # U0EgVGltZXN0YW1waW5nIENBIDIwMjACEzMAAABPNLUHwSuXVPwAAAAAAE8wIgQg # YTt+f6mpEEdZxTlHsHE4aWQmJhaSN+cxyifBN69bBfgwDQYJKoZIhvcNAQEMBQAE # ggIAi+U4g5qwEcBW2IRGAozF1ij2qW/3u4ttRy+Uaj0Lh2lm9Gv0E+PUn3ZIBBod # TZi/E492wQbosL6ZCH5LXdP4/NgM9yJSTcDs1tXhNGtzrWC2I3zm2EkepRaNaR7u # cP3PGjRsys682UnZD5PPTQDFj986m5pNVIVeo/UGTvzkY5Q/cV1WunmXBOFmPc88 # E+iVFtA2tVK0ivA1+3lidzPb0e76hHRmGxkBw/h4Wz1oUrxjLMh4aykGGsTfzgUp # ei97XCW3VqhdS/S9TZ7PhQZIbShUKCDKOANDOApgrc9djx1POoKDCvnAbXb5szVH # u1i1oHEm1GsfM3lETKx90gxHreZHRUG5QdXNQn5NEStU5B5FBlv7yuFWEig4V9gK # QfYVxccEbKrHd+PGMTd/CK4NTRs3ozRhgG9L0T6RJUAwnKjfXdf8KbPuFRA/p5JC # HT1ynmyYPQKsLwgfp2arvltiUVNz6H7CiasC4iudOoyL7oFJTPzmlMzkdRApc1De # DnAS9SIFBm8oAxu1VVWUsP98UxYEojeUpvs+m64HipMc/xlbi1Y9c4TTRyHeoskG # pfRytNMNwQ/Nhqw6WkXJ5ZXNRclZRs1+QJMAPgLz/99LSh1/QSka7UqO8e5gqSem # CFiZm5+waiSZ+1VD64NKKtRo+VxBNFOyChCC49y+/H+c9Pk= # SIG # End signature block