HP.WorkforceExperience.psm1
|
# # Copyright 2018-2026 HP Development Company, L.P. # All Rights Reserved. # # NOTICE: All information contained herein is, and remains the property of HP Development Company, L.P. # # The intellectual and technical concepts contained herein are proprietary to HP Development Company, L.P # and may be covered by U.S. and Foreign Patents, patents in process, and are protected by # trade secret or copyright law. Dissemination of this information or reproduction of this material # is strictly forbidden unless prior written permission is obtained from HP Development Company, L.P. <# .SYNOPSIS Sets the update settings for the HP Workforce Experience agent .DESCRIPTION This command sets the update settings for the HP Workforce Experience agent, allowing you to enable or disable automatic updates and specify particular versions of the Insights Agent, Analytics Agent, and Insights Plugin to use. For more information, please visit https://learn.workforceexperience.hp.com/docs/managing-software-updates-for-hp-insights .PARAMETER AutoUpdateEnabled If set to $true, this will enable automatic updates for the Workforce Experience agent. If set to $false, automatic updates will be disabled. .PARAMETER InsightsAgentVersion Specifies the version of the HP Insights package to use. Cannot be set if AutoUpdateEnabled is set to $true. .PARAMETER AnalyticsAgentVersion Specifies the version of the HP Insights Analytics package to use. Cannot be set if AutoUpdateEnabled is set to $true. .PARAMETER InsightsPluginVersion Specifies the version of the HP Insights Plugin package to use. Cannot be set if AutoUpdateEnabled is set to $true. .PARAMETER StrictVersioning If set to $true, this will enable force-update Opt-Out option. If set to $false, the Force-Update Opt-Out option will be disabled. Cannot be set if AutoUpdateEnabled is set to $true. .EXAMPLE PS C:\> Set-HPWxpAgentVersionUpdates -AutoUpdateEnabled $true .EXAMPLE PS C:\> Set-HPWxpAgentVersionUpdates -InsightsPluginVersion "1.0.0.0" -UseStrictVersioning $true #> function Set-HPWxpAgentVersionUpdates { [CmdletBinding(DefaultParameterSetName = 'VersionSettings')] param ( [Parameter(Mandatory = $true, ParameterSetName = 'AutoUpdate')] [bool]$AutoUpdateEnabled, [Parameter(Mandatory = $false, ParameterSetName = 'VersionSettings')] [string]$InsightsAgentVersion, [Parameter(Mandatory = $false, ParameterSetName = 'VersionSettings')] [string]$AnalyticsAgentVersion, [Parameter(Mandatory = $false, ParameterSetName = 'VersionSettings')] [string]$InsightsPluginVersion, [Parameter(Mandatory = $false, ParameterSetName = 'VersionSettings')] [bool]$StrictVersioning ) # User must specify either AutoUpdateEnabled or at least one of the version settings, but not both # Default parameter set is VersionSettings, so if user does not specify AutoUpdateEnabled, # we will assume they want to set version settings and validate that at least one version setting is specified if ($PSCmdlet.ParameterSetName -eq 'VersionSettings' -and -not ($InsightsAgentVersion -or $AnalyticsAgentVersion -or $InsightsPluginVersion -or $StrictVersioning)) { throw "Please specify at least one parameter." } # REG_DWORD,IsVersionPolicy: 300 # REG_SZ, TechpulseVersion: 5.XX.XXX # REG_SZ, HPTAVersion: 4.X.XXXX.X # REG_SZ, PluginPackageVersion: 1.X.X.X # REG_SZ, UseStrictVersioning: False or True $registryPath = "HKLM:\SOFTWARE\Policies\Hewlett-Packard\HPTechPulse\GPO\TechPulseVersionPolicy" if (-not (Test-Path $registryPath)) { try { New-Item -Path $registryPath -Force | Out-Null } catch { throw "Failed to create registry key at $($registryPath): $_" } } # Silently Continue because we can check if the key exists using the output of Get-ItemProperty $isVersionPolicy = Get-ItemProperty -Path $registryPath -Name "IsVersionPolicy" -ErrorAction SilentlyContinue if($PSCmdlet.ParameterSetName -eq 'AutoUpdate') { if ($isVersionPolicy) { # Key exists, check if the value is already set to the desired value # true = 0 (auto-updates enabled) # false = 400 (auto-updates disabled by CMSL) if($AutoUpdateEnabled -and $isVersionPolicy.IsVersionPolicy -ne 0) { try { Set-ItemProperty -Path $registryPath -Name "IsVersionPolicy" -Value 0 Write-Output "Successfully set IsVersionPolicy to 0." } catch { throw "Failed to set IsVersionPolicy to 0: $_" } } elseif(-not $AutoUpdateEnabled -and $isVersionPolicy.IsVersionPolicy -ne 400) { try { Set-ItemProperty -Path $registryPath -Name "IsVersionPolicy" -Value 400 Write-Output "Successfully set IsVersionPolicy to 400." } catch { throw "Failed to set IsVersionPolicy to 400: $_" } } else { Write-Output "IsVersionPolicy is already set to the desired value. No changes needed." } } else { # Key does not exist, create it and set the value try { if($AutoUpdateEnabled) { New-ItemProperty -Path $registryPath -Name "IsVersionPolicy" -Value 0 -PropertyType DWORD -Force | Out-Null Write-Output "Successfully created IsVersionPolicy with value 0." } else { New-ItemProperty -Path $registryPath -Name "IsVersionPolicy" -Value 400 -PropertyType DWORD -Force | Out-Null Write-Output "Successfully created IsVersionPolicy with value 400." } } catch { throw "Failed to create IsVersionPolicy registry key at $($registryPath): $_" } } } else { if($isVersionPolicy.IsVersionPolicy -eq 0) { throw "Cannot set agent versions when automatic updates are enabled. Please disable automatic updates to set specific agent versions." } Write-Verbose "Automatic updates are disabled. Setting agent version update settings..." # check ADMX file from https://downloads.hpdaas.com/production/microsoft/tm-client/InsightsPolicy/HPInsights_Version_Settings.zip # to make sure the version passed in is supported in the ADMX file # download zip file and extract $zipUrl = "https://downloads.hpdaas.com/production/microsoft/tm-client/InsightsPolicy/HPInsights_Version_Settings.zip" $zipPath = "$env:TEMP\HPInsights_Version_Settings.zip" $extractPath = "$env:TEMP\HPInsights_Version_Settings" try { # add proxy support Invoke-WebRequest -Uri $zipUrl -OutFile $zipPath -UseBasicParsing Expand-Archive -Path $zipPath -DestinationPath $extractPath -Force } catch { throw "Failed to download or extract ADMX file: $_" } # ADMX files are in XML format $admxFile = Join-Path -Path $extractPath -ChildPath "HPInsights_Version_Settings.admx" if(-not (Test-Path $admxFile)) { throw "ADMX file not found at expected path: $admxFile" } [xml]$admxContent = Get-Content -Path $admxFile # In the ADMX structure (policyDefinitions > policies > policy > elements), # each setting (for example, TechpulseVersion) is represented as an enum entry, where each item/value/string defines a supported version. $supportedTechpulseVersions = $admxContent.policyDefinitions.policies.policy.elements.enum | Where-Object { $_.id -eq "TechpulseVersion" } | Select-Object -ExpandProperty item | Select-Object -ExpandProperty value | Select-Object -ExpandProperty string Write-Verbose "Supported Techpulse Versions from ADMX: $($supportedTechpulseVersions -join ", ")" $supportedHPTAVersions = $admxContent.policyDefinitions.policies.policy.elements.enum | Where-Object { $_.id -eq "HPTAVersion" } | Select-Object -ExpandProperty item | Select-Object -ExpandProperty value | Select-Object -ExpandProperty string Write-Verbose "Supported HPTA Versions from ADMX: $($supportedHPTAVersions -join ", ")" $supportedPluginPackageVersions = $admxContent.policyDefinitions.policies.policy.elements.enum | Where-Object { $_.id -eq "PluginPackageVersion" } | Select-Object -ExpandProperty item | Select-Object -ExpandProperty value | Select-Object -ExpandProperty string Write-Verbose "Supported Plugin Package Versions from ADMX: $($supportedPluginPackageVersions -join ", ")" # validate the versions passed in by the user against the supported versions in the ADMX file if($InsightsAgentVersion -and -not ($supportedTechpulseVersions -contains $InsightsAgentVersion)) { throw "The specified InsightsAgentVersion '$InsightsAgentVersion' is not supported. Supported versions are: $($supportedTechpulseVersions -join ", ")" } if($AnalyticsAgentVersion -and -not ($supportedHPTAVersions -contains $AnalyticsAgentVersion)) { throw "The specified AnalyticsAgentVersion '$AnalyticsAgentVersion' is not supported. Supported versions are: $($supportedHPTAVersions -join ", ")" } if($InsightsPluginVersion -and -not ($supportedPluginPackageVersions -contains $InsightsPluginVersion)) { throw "The specified InsightsPluginVersion '$InsightsPluginVersion' is not supported. Supported versions are: $($supportedPluginPackageVersions -join ", ")" } if($InsightsAgentVersion) { try { Set-ItemProperty -Path $registryPath -Name "TechpulseVersion" -Value $InsightsAgentVersion -Type String -Force | Out-Null Write-Output "Successfully set TechpulseVersion to $InsightsAgentVersion." } catch { throw "Failed to set TechpulseVersion: $_" } } if($AnalyticsAgentVersion) { try { Set-ItemProperty -Path $registryPath -Name "HPTAVersion" -Value $AnalyticsAgentVersion -Type String -Force | Out-Null Write-Output "Successfully set HPTAVersion to $AnalyticsAgentVersion." } catch { throw "Failed to set HPTAVersion: $_" } } if($InsightsPluginVersion) { try { Set-ItemProperty -Path $registryPath -Name "PluginPackageVersion" -Value $InsightsPluginVersion -Type String -Force | Out-Null Write-Output "Successfully set PluginPackageVersion to $InsightsPluginVersion." } catch { throw "Failed to set PluginPackageVersion: $_" } } if($PSBoundParameters.Keys.Contains('StrictVersioning')) { if($StrictVersioning) { try { Set-ItemProperty -Path $registryPath -Name "UseStrictVersioning" -Value "True" -Type String -Force | Out-Null Write-Output "Successfully set UseStrictVersioning to True at $($registryPath)." } catch { throw "Failed to set UseStrictVersioning to True: $_" } } else { try { Set-ItemProperty -Path $registryPath -Name "UseStrictVersioning" -Value "False" -Type String -Force | Out-Null Write-Output "Successfully set UseStrictVersioning to False." } catch { throw "Failed to set UseStrictVersioning to False: $_" } } } } } # SIG # Begin signature block # MIIoVQYJKoZIhvcNAQcCoIIoRjCCKEICAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAXWlDyleNjNriF # HGBxmMr3wEXnlhwqXRdfixDgeacZ3KCCDYowggawMIIEmKADAgECAhAIrUCyYNKc # TJ9ezam9k67ZMA0GCSqGSIb3DQEBDAUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK # EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV # BAMTGERpZ2lDZXJ0IFRydXN0ZWQgUm9vdCBHNDAeFw0yMTA0MjkwMDAwMDBaFw0z # NjA0MjgyMzU5NTlaMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwg # SW5jLjFBMD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcg # UlNBNDA5NiBTSEEzODQgMjAyMSBDQTEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw # ggIKAoICAQDVtC9C0CiteLdd1TlZG7GIQvUzjOs9gZdwxbvEhSYwn6SOaNhc9es0 # JAfhS0/TeEP0F9ce2vnS1WcaUk8OoVf8iJnBkcyBAz5NcCRks43iCH00fUyAVxJr # Q5qZ8sU7H/Lvy0daE6ZMswEgJfMQ04uy+wjwiuCdCcBlp/qYgEk1hz1RGeiQIXhF # LqGfLOEYwhrMxe6TSXBCMo/7xuoc82VokaJNTIIRSFJo3hC9FFdd6BgTZcV/sk+F # LEikVoQ11vkunKoAFdE3/hoGlMJ8yOobMubKwvSnowMOdKWvObarYBLj6Na59zHh # 3K3kGKDYwSNHR7OhD26jq22YBoMbt2pnLdK9RBqSEIGPsDsJ18ebMlrC/2pgVItJ # wZPt4bRc4G/rJvmM1bL5OBDm6s6R9b7T+2+TYTRcvJNFKIM2KmYoX7BzzosmJQay # g9Rc9hUZTO1i4F4z8ujo7AqnsAMrkbI2eb73rQgedaZlzLvjSFDzd5Ea/ttQokbI # YViY9XwCFjyDKK05huzUtw1T0PhH5nUwjewwk3YUpltLXXRhTT8SkXbev1jLchAp # QfDVxW0mdmgRQRNYmtwmKwH0iU1Z23jPgUo+QEdfyYFQc4UQIyFZYIpkVMHMIRro # OBl8ZhzNeDhFMJlP/2NPTLuqDQhTQXxYPUez+rbsjDIJAsxsPAxWEQIDAQABo4IB # WTCCAVUwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUaDfg67Y7+F8Rhvv+ # YXsIiGX0TkIwHwYDVR0jBBgwFoAU7NfjgtJxXWRM3y5nP+e6mK4cD08wDgYDVR0P # AQH/BAQDAgGGMBMGA1UdJQQMMAoGCCsGAQUFBwMDMHcGCCsGAQUFBwEBBGswaTAk # BggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEEGCCsGAQUFBzAC # hjVodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkUm9v # dEc0LmNydDBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsMy5kaWdpY2VydC5j # b20vRGlnaUNlcnRUcnVzdGVkUm9vdEc0LmNybDAcBgNVHSAEFTATMAcGBWeBDAED # MAgGBmeBDAEEATANBgkqhkiG9w0BAQwFAAOCAgEAOiNEPY0Idu6PvDqZ01bgAhql # +Eg08yy25nRm95RysQDKr2wwJxMSnpBEn0v9nqN8JtU3vDpdSG2V1T9J9Ce7FoFF # UP2cvbaF4HZ+N3HLIvdaqpDP9ZNq4+sg0dVQeYiaiorBtr2hSBh+3NiAGhEZGM1h # mYFW9snjdufE5BtfQ/g+lP92OT2e1JnPSt0o618moZVYSNUa/tcnP/2Q0XaG3Ryw # YFzzDaju4ImhvTnhOE7abrs2nfvlIVNaw8rpavGiPttDuDPITzgUkpn13c5Ubdld # AhQfQDN8A+KVssIhdXNSy0bYxDQcoqVLjc1vdjcshT8azibpGL6QB7BDf5WIIIJw # 8MzK7/0pNVwfiThV9zeKiwmhywvpMRr/LhlcOXHhvpynCgbWJme3kuZOX956rEnP # LqR0kq3bPKSchh/jwVYbKyP/j7XqiHtwa+aguv06P0WmxOgWkVKLQcBIhEuWTatE # QOON8BUozu3xGFYHKi8QxAwIZDwzj64ojDzLj4gLDb879M4ee47vtevLt/B3E+bn # KD+sEq6lLyJsQfmCXBVmzGwOysWGw/YmMwwHS6DTBwJqakAwSEs0qFEgu60bhQji # WQ1tygVQK+pKHJ6l/aCnHwZ05/LWUpD9r4VIIflXO7ScA+2GRfS0YW6/aOImYIbq # yK+p/pQd52MbOoZWeE4wggbSMIIEuqADAgECAhAEsHM0tIaHE0aTXWqfk0f3MA0G # CSqGSIb3DQEBCwUAMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwg # SW5jLjFBMD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcg # UlNBNDA5NiBTSEEzODQgMjAyMSBDQTEwHhcNMjUxMTAyMDAwMDAwWhcNMjYxMTAz # MjM1OTU5WjBaMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTESMBAG # A1UEBxMJUGFsbyBBbHRvMRAwDgYDVQQKEwdIUCBJbmMuMRAwDgYDVQQDEwdIUCBJ # bmMuMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAiLZapeTEjTVXsbZd # 8cZqZDb6YkviUyS/BygaNTIqLYMp6sg9ANcVqqR26xCnN5H5dy4kzjSgD3jgY9fP # PZzWzLubAAIjqcpcifU2W27gwahe2KngYtzYGsd459rk3rCauoPiHa1yt1jwxz7L # +UmzORKF/EznoqEcyhsLhdQeMYNt29txkS1sqn8yzhqiGKQPGwiITvXHqO4ETSQ4 # ulvZV8CufIpJoB8cvUqwF6LcWVdIiCVT/Jbto+NoC2BfaxI39NqUztbdxdEiVQGr # cvRwWOe0DSMcdFzcfwJThiomQ1iun93TQXfO0JqTq0QSrnBwv8VsWd4Or1MbBHIJ # vjQ70t9rbAsH/CKo15Js35khUVgkqlO8TXXcerpeV7naVu/5dxuKGtoB6khtDMKJ # qkXumkWMgefTvhej0JU9b/5VgrhWj6nzjlgH61qacvqZg/e6KozZttCVj/lYasKb # raDqKYHbp8Q9aiLaOJGJ8youyE9TU6TeebbHt3xqUd7v0qwXAgMBAAGjggIDMIIB # /zAfBgNVHSMEGDAWgBRoN+Drtjv4XxGG+/5hewiIZfROQjAdBgNVHQ4EFgQUhkqh # egiiQTH1tlGBQ/Hu8oVs+BkwPgYDVR0gBDcwNTAzBgZngQwBBAEwKTAnBggrBgEF # BQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5jb20vQ1BTMA4GA1UdDwEB/wQEAwIH # gDATBgNVHSUEDDAKBggrBgEFBQcDAzCBtQYDVR0fBIGtMIGqMFOgUaBPhk1odHRw # Oi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkRzRDb2RlU2lnbmlu # Z1JTQTQwOTZTSEEzODQyMDIxQ0ExLmNybDBToFGgT4ZNaHR0cDovL2NybDQuZGln # aWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0Q29kZVNpZ25pbmdSU0E0MDk2U0hB # Mzg0MjAyMUNBMS5jcmwwgZQGCCsGAQUFBwEBBIGHMIGEMCQGCCsGAQUFBzABhhho # dHRwOi8vb2NzcC5kaWdpY2VydC5jb20wXAYIKwYBBQUHMAKGUGh0dHA6Ly9jYWNl # cnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVTaWduaW5nUlNB # NDA5NlNIQTM4NDIwMjFDQTEuY3J0MAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQAD # ggIBAGw9ypjljOGXMzN8v8FKh28bPETaRBMd7U7MbBBcCRGxaAN0mTm7ovkhfoWa # NM/NBnDnhizPqG6wcHlRDWE7BR9IY86Ig1YeBPDdFqv5ggY2HOJ+kdWx2LoegYx6 # U2g24EpsVg8NHKQI65PWJ20cDc2BTjqdeu5cCDrtO3zILJVZO5v3bu2FoY/ffTTg # bNFKbOoOfgp70wlUCaWieN+pNU9B21W4aeMsbeeeKmxlIY/5WCN8+oZy+/h+SnqI # FLGehJROdJgnEwDBln/zurlx+HFAdDeGkAqugLComkvjWnaAe0CiAA9r/EqYw9yw # rRVojBxJJxJkUruDwgycTABzgSzjOWzJbQQXO8FcOnbPbffTZObvbxS4CvUMs0LA # GRLV1KuqWHURjXIQMcpvlbLXygbKBFzfQHCR/9lMN7dmL+eZ+fdGko/4UMHlsfeN # fluvA2XlYPomH443GDPH2AH3XrgI+e14NGTYPR112jc6XXHtvikTvlTzgrxdSJxs # +M7ab8gu5qA0lfn0KfyciwfDuu6VxOHqi0r392jfxfMD6vSFiHwbWvee1xAu7fEu # R/l1FmMIM/2MhxQEua2zvbKJ3IEF1hHyEsr0elynqXQJtKw8rvgNntR4duGXcgF7 # fgayNKBdLS93HspKMhXx7o1Ajuxj/9kes+icVRJPvhTKNt8XMYIaITCCGh0CAQEw # fTBpMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNV # BAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgQ29kZSBTaWduaW5nIFJTQTQwOTYgU0hB # Mzg0IDIwMjEgQ0ExAhAEsHM0tIaHE0aTXWqfk0f3MA0GCWCGSAFlAwQCAQUAoHww # EAYKKwYBBAGCNwIBDDECMAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYK # KwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIP2v5IEM # aLWD4CQS/bTbN/LZiQA5KMt+C1vbiXKZn6/IMA0GCSqGSIb3DQEBAQUABIIBgAUg # nhmyEKdpAsucO64AKEQYLEfRv6AVTscot6K++Lyj66ecspoFOdcO2Iit05vxTEo5 # qfcZukF6aD71LaJDvOtKHXtJoQdNvyzsB4sjwgiBlt7cCv3/aFaslEx28OoK9hFJ # T37x72hAmTe8RxqtUN41sK6Gv7kiZ5flBdBxw35HV6WdSMqT0ewvQ8y/EVGDwqo1 # VOpGG+vJ7LxRaaUv1j56TJYa/FRu7pwBEfTkzU4iN4fzv9bIB4xbquW89UaTxh77 # lHeKelOdCSXlRcoQ+FNvS9m9Ntl8YMW2tHOc9GeQ9PAkF0ixvqLqCJi2/V3VVlDY # vYHuxp4Pa4D5GPF4hTwnrTqArj7SjLXGjUH5Du0M7oJ4malxUqIo09Lgba0whSn+ # RqDPXocNzMs/0WySB5sTmV1WnDJ7frRerYSxVp3mRtANXlyv4+4r7W/XwTO2rgam # IENrjU5IoOmJjnVnNDkAUPzAdwYIAxOAQer8KrJaO1563uTuDfCqdGpogacqpKGC # F3cwghdzBgorBgEEAYI3AwMBMYIXYzCCF18GCSqGSIb3DQEHAqCCF1AwghdMAgED # MQ8wDQYJYIZIAWUDBAIBBQAweAYLKoZIhvcNAQkQAQSgaQRnMGUCAQEGCWCGSAGG # /WwHATAxMA0GCWCGSAFlAwQCAQUABCCjVh316FXeafYtA/nR+YC0MoF2T1HQrKsG # x9IjRx3SwQIRAMCjOCixYm8c0EVTYgLbx3YYDzIwMjYwNzI4MTU0NDQ0WqCCEzow # ggbtMIIE1aADAgECAhAKgO8YS43xBYLRxHanlXRoMA0GCSqGSIb3DQEBCwUAMGkx # CzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjFBMD8GA1UEAxM4 # RGlnaUNlcnQgVHJ1c3RlZCBHNCBUaW1lU3RhbXBpbmcgUlNBNDA5NiBTSEEyNTYg # MjAyNSBDQTEwHhcNMjUwNjA0MDAwMDAwWhcNMzYwOTAzMjM1OTU5WjBjMQswCQYD # VQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xOzA5BgNVBAMTMkRpZ2lD # ZXJ0IFNIQTI1NiBSU0E0MDk2IFRpbWVzdGFtcCBSZXNwb25kZXIgMjAyNSAxMIIC # IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0EasLRLGntDqrmBWsytXum9R # /4ZwCgHfyjfMGUIwYzKomd8U1nH7C8Dr0cVMF3BsfAFI54um8+dnxk36+jx0Tb+k # +87H9WPxNyFPJIDZHhAqlUPt281mHrBbZHqRK71Em3/hCGC5KyyneqiZ7syvFXJ9 # A72wzHpkBaMUNg7MOLxI6E9RaUueHTQKWXymOtRwJXcrcTTPPT2V1D/+cFllESvi # H8YjoPFvZSjKs3SKO1QNUdFd2adw44wDcKgH+JRJE5Qg0NP3yiSyi5MxgU6cehGH # r7zou1znOM8odbkqoK+lJ25LCHBSai25CFyD23DZgPfDrJJJK77epTwMP6eKA0kW # a3osAe8fcpK40uhktzUd/Yk0xUvhDU6lvJukx7jphx40DQt82yepyekl4i0r8OEp # s/FNO4ahfvAk12hE5FVs9HVVWcO5J4dVmVzix4A77p3awLbr89A90/nWGjXMGn7F # QhmSlIUDy9Z2hSgctaepZTd0ILIUbWuhKuAeNIeWrzHKYueMJtItnj2Q+aTyLLKL # M0MheP/9w6CtjuuVHJOVoIJ/DtpJRE7Ce7vMRHoRon4CWIvuiNN1Lk9Y+xZ66laz # s2kKFSTnnkrT3pXWETTJkhd76CIDBbTRofOsNyEhzZtCGmnQigpFHti58CSmvEyJ # cAlDVcKacJ+A9/z7eacCAwEAAaOCAZUwggGRMAwGA1UdEwEB/wQCMAAwHQYDVR0O # BBYEFOQ7/PIx7f391/ORcWMZUEPPYYzoMB8GA1UdIwQYMBaAFO9vU0rp5AZ8esri # kFb2L9RJ7MtOMA4GA1UdDwEB/wQEAwIHgDAWBgNVHSUBAf8EDDAKBggrBgEFBQcD # CDCBlQYIKwYBBQUHAQEEgYgwgYUwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRp # Z2ljZXJ0LmNvbTBdBggrBgEFBQcwAoZRaHR0cDovL2NhY2VydHMuZGlnaWNlcnQu # Y29tL0RpZ2lDZXJ0VHJ1c3RlZEc0VGltZVN0YW1waW5nUlNBNDA5NlNIQTI1NjIw # MjVDQTEuY3J0MF8GA1UdHwRYMFYwVKBSoFCGTmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0 # LmNvbS9EaWdpQ2VydFRydXN0ZWRHNFRpbWVTdGFtcGluZ1JTQTQwOTZTSEEyNTYy # MDI1Q0ExLmNybDAgBgNVHSAEGTAXMAgGBmeBDAEEAjALBglghkgBhv1sBwEwDQYJ # KoZIhvcNAQELBQADggIBAGUqrfEcJwS5rmBB7NEIRJ5jQHIh+OT2Ik/bNYulCrVv # hREafBYF0RkP2AGr181o2YWPoSHz9iZEN/FPsLSTwVQWo2H62yGBvg7ouCODwrx6 # ULj6hYKqdT8wv2UV+Kbz/3ImZlJ7YXwBD9R0oU62PtgxOao872bOySCILdBghQ/Z # LcdC8cbUUO75ZSpbh1oipOhcUT8lD8QAGB9lctZTTOJM3pHfKBAEcxQFoHlt2s9s # XoxFizTeHihsQyfFg5fxUFEp7W42fNBVN4ueLaceRf9Cq9ec1v5iQMWTFQa0xNqI # tH3CPFTG7aEQJmmrJTV3Qhtfparz+BW60OiMEgV5GWoBy4RVPRwqxv7Mk0Sy4QHs # 7v9y69NBqycz0BZwhB9WOfOu/CIJnzkQTwtSSpGGhLdjnQ4eBpjtP+XB3pQCtv4E # 5UCSDag6+iX8MmB10nfldPF9SVD7weCC3yXZi/uuhqdwkgVxuiMFzGVFwYbQsiGn # oa9F5AaAyBjFBtXVLcKtapnMG3VH3EmAp/jsJ3FVF3+d1SVDTmjFjLbNFZUWMXuZ # yvgLfgyPehwJVxwC+UpX2MSey2ueIu9THFVkT+um1vshETaWyQo8gmBto/m3acaP # 9QsuLj3FNwFlTxq25+T4QwX9xa6ILs84ZPvmpovq90K8eWyG2N01c4IhSOxqt81n # MIIGtDCCBJygAwIBAgIQDcesVwX/IZkuQEMiDDpJhjANBgkqhkiG9w0BAQsFADBi # MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 # d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg # RzQwHhcNMjUwNTA3MDAwMDAwWhcNMzgwMTE0MjM1OTU5WjBpMQswCQYDVQQGEwJV # UzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRy # dXN0ZWQgRzQgVGltZVN0YW1waW5nIFJTQTQwOTYgU0hBMjU2IDIwMjUgQ0ExMIIC # IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtHgx0wqYQXK+PEbAHKx126NG # aHS0URedTa2NDZS1mZaDLFTtQ2oRjzUXMmxCqvkbsDpz4aH+qbxeLho8I6jY3xL1 # IusLopuW2qftJYJaDNs1+JH7Z+QdSKWM06qchUP+AbdJgMQB3h2DZ0Mal5kYp77j # YMVQXSZH++0trj6Ao+xh/AS7sQRuQL37QXbDhAktVJMQbzIBHYJBYgzWIjk8eDrY # hXDEpKk7RdoX0M980EpLtlrNyHw0Xm+nt5pnYJU3Gmq6bNMI1I7Gb5IBZK4ivbVC # iZv7PNBYqHEpNVWC2ZQ8BbfnFRQVESYOszFI2Wv82wnJRfN20VRS3hpLgIR4hjzL # 0hpoYGk81coWJ+KdPvMvaB0WkE/2qHxJ0ucS638ZxqU14lDnki7CcoKCz6eum5A1 # 9WZQHkqUJfdkDjHkccpL6uoG8pbF0LJAQQZxst7VvwDDjAmSFTUms+wV/FbWBqi7 # fTJnjq3hj0XbQcd8hjj/q8d6ylgxCZSKi17yVp2NL+cnT6Toy+rN+nM8M7LnLqCr # O2JP3oW//1sfuZDKiDEb1AQ8es9Xr/u6bDTnYCTKIsDq1BtmXUqEG1NqzJKS4kOm # xkYp2WyODi7vQTCBZtVFJfVZ3j7OgWmnhFr4yUozZtqgPrHRVHhGNKlYzyjlroPx # ul+bgIspzOwbtmsgY1MCAwEAAaOCAV0wggFZMBIGA1UdEwEB/wQIMAYBAf8CAQAw # HQYDVR0OBBYEFO9vU0rp5AZ8esrikFb2L9RJ7MtOMB8GA1UdIwQYMBaAFOzX44LS # cV1kTN8uZz/nupiuHA9PMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEF # BQcDCDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRp # Z2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMuZGlnaWNlcnQu # Y29tL0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5jcnQwQwYDVR0fBDwwOjA4oDagNIYy # aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5j # cmwwIAYDVR0gBBkwFzAIBgZngQwBBAIwCwYJYIZIAYb9bAcBMA0GCSqGSIb3DQEB # CwUAA4ICAQAXzvsWgBz+Bz0RdnEwvb4LyLU0pn/N0IfFiBowf0/Dm1wGc/Do7oVM # Y2mhXZXjDNJQa8j00DNqhCT3t+s8G0iP5kvN2n7Jd2E4/iEIUBO41P5F448rSYJ5 # 9Ib61eoalhnd6ywFLerycvZTAz40y8S4F3/a+Z1jEMK/DMm/axFSgoR8n6c3nuZB # 9BfBwAQYK9FHaoq2e26MHvVY9gCDA/JYsq7pGdogP8HRtrYfctSLANEBfHU16r3J # 05qX3kId+ZOczgj5kjatVB+NdADVZKON/gnZruMvNYY2o1f4MXRJDMdTSlOLh0HC # n2cQLwQCqjFbqrXuvTPSegOOzr4EWj7PtspIHBldNE2K9i697cvaiIo2p61Ed2p8 # xMJb82Yosn0z4y25xUbI7GIN/TpVfHIqQ6Ku/qjTY6hc3hsXMrS+U0yy+GWqAXam # 4ToWd2UQ1KYT70kZjE4YtL8Pbzg0c1ugMZyZZd/BdHLiRu7hAWE6bTEm4XYRkA6T # l4KSFLFk43esaUeqGkH/wyW4N7OigizwJWeukcyIPbAvjSabnf7+Pu0VrFgoiovR # Diyx3zEdmcif/sYQsfch28bZeUz2rtY/9TCA6TD8dC3JE3rYkrhLULy7Dc90G6e8 # BlqmyIjlgp2+VqsS9/wQD7yFylIz0scmbKvFoW2jNrbM1pD2T7m3XDCCBY0wggR1 # oAMCAQICEA6bGI750C3n79tQ4ghAGFowDQYJKoZIhvcNAQEMBQAwZTELMAkGA1UE # BhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2lj # ZXJ0LmNvbTEkMCIGA1UEAxMbRGlnaUNlcnQgQXNzdXJlZCBJRCBSb290IENBMB4X # DTIyMDgwMTAwMDAwMFoXDTMxMTEwOTIzNTk1OVowYjELMAkGA1UEBhMCVVMxFTAT # BgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEh # MB8GA1UEAxMYRGlnaUNlcnQgVHJ1c3RlZCBSb290IEc0MIICIjANBgkqhkiG9w0B # AQEFAAOCAg8AMIICCgKCAgEAv+aQc2jeu+RdSjwwIjBpM+zCpyUuySE98orYWcLh # Kac9WKt2ms2uexuEDcQwH/MbpDgW61bGl20dq7J58soR0uRf1gU8Ug9SH8aeFaV+ # vp+pVxZZVXKvaJNwwrK6dZlqczKU0RBEEC7fgvMHhOZ0O21x4i0MG+4g1ckgHWMp # Lc7sXk7Ik/ghYZs06wXGXuxbGrzryc/NrDRAX7F6Zu53yEioZldXn1RYjgwrt0+n # MNlW7sp7XeOtyU9e5TXnMcvak17cjo+A2raRmECQecN4x7axxLVqGDgDEI3Y1Dek # LgV9iPWCPhCRcKtVgkEy19sEcypukQF8IUzUvK4bA3VdeGbZOjFEmjNAvwjXWkmk # wuapoGfdpCe8oU85tRFYF/ckXEaPZPfBaYh2mHY9WV1CdoeJl2l6SPDgohIbZpp0 # yt5LHucOY67m1O+SkjqePdwA5EUlibaaRBkrfsCUtNJhbesz2cXfSwQAzH0clcOP # 9yGyshG3u3/y1YxwLEFgqrFjGESVGnZifvaAsPvoZKYz0YkH4b235kOkGLimdwHh # D5QMIR2yVCkliWzlDlJRR3S+Jqy2QXXeeqxfjT/JvNNBERJb5RBQ6zHFynIWIgnf # fEx1P2PsIV/EIFFrb7GrhotPwtZFX50g/KEexcCPorF+CiaZ9eRpL5gdLfXZqbId # 5RsCAwEAAaOCATowggE2MA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFOzX44LS # cV1kTN8uZz/nupiuHA9PMB8GA1UdIwQYMBaAFEXroq/0ksuCMS1Ri6enIZ3zbcgP # MA4GA1UdDwEB/wQEAwIBhjB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0 # dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2Vy # dHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDBFBgNV # HR8EPjA8MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRB # c3N1cmVkSURSb290Q0EuY3JsMBEGA1UdIAQKMAgwBgYEVR0gADANBgkqhkiG9w0B # AQwFAAOCAQEAcKC/Q1xV5zhfoKN0Gz22Ftf3v1cHvZqsoYcs7IVeqRq7IviHGmlU # Iu2kiHdtvRoU9BNKei8ttzjv9P+Aufih9/Jy3iS8UgPITtAq3votVs/59PesMHqa # i7Je1M/RQ0SbQyHrlnKhSLSZy51PpwYDE3cnRNTnf+hZqPC/Lwum6fI0POz3A8eH # qNJMQBk1RmppVLC4oVaO7KTVPeix3P0c2PR3WlxUjG/voVA9/HYJaISfb8rbII01 # YBwCA8sgsKxYoA5AY8WYIsGyWfVVa88nq2x2zm8jLfR+cWojayL/ErhULSd+2DrZ # 8LaHlv1b0VysGMNNn3O3AamfV6peKOK5lDGCA3wwggN4AgEBMH0waTELMAkGA1UE # BhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMUEwPwYDVQQDEzhEaWdpQ2Vy # dCBUcnVzdGVkIEc0IFRpbWVTdGFtcGluZyBSU0E0MDk2IFNIQTI1NiAyMDI1IENB # MQIQCoDvGEuN8QWC0cR2p5V0aDANBglghkgBZQMEAgEFAKCB0TAaBgkqhkiG9w0B # CQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDcyODE1NDQ0NFow # KwYLKoZIhvcNAQkQAgwxHDAaMBgwFgQU3WIwrIYKLTBr2jixaHlSMAf7QX4wLwYJ # KoZIhvcNAQkEMSIEIHS5FODZ7Uf9Us40vSi0HzgLxdHkzExbLTaOaX5F1pqzMDcG # CyqGSIb3DQEJEAIvMSgwJjAkMCIEIEqgP6Is11yExVyTj4KOZ2ucrsqzP+NtJpqj # NPFGEQozMA0GCSqGSIb3DQEBAQUABIICAHXtVynIx77bUrnDEmknvJpHnpzPkPLe # fo64nmGfnLbuAuw6IAXC4Wv1Alx+4A/K4B2GrFajqEuxZO1lYe6446u/+tQBZuSB # gWCTNDvw/PK0VSSP9bsrPNIR5xn3zGwDw+bORks8xy6NNdxx9MWUespqlUttMi2s # KCkxrRK7KWd1eXhgZzHV7d1/es7yEgALYftIwj4uht31L/70NwVHVsxF5bw86Vju # 3Zmo9/L5oXuz6+fEbyxcTry57BsgwlgV/Q6uCNdanUwGucKvw7JRlpOf8z8iFsbr # bWkS74PtGy/fFX82/K7x6cAAfe8gdhzdNnMXsPDVNMP6tWe5ddn/hYdBXEB2Jr/T # Gu4WAchM89gHwFsIKltdjBrV8HVlXFM4Sa4wzC7rqecq0AoC1xIbct3Yn8EQJSKI # bmeaBvfCXzI4MfUtO5jAMpuYTtRtL/LnMQtKyh6QN3mVL1kzlqBwguN7UtB7KYxH # gBLmukfkDKc7FF/GrS7YSxYKdl+gXblrL9z6DxOQ/ChQWPb/Uz+vEc3LUttohp1r # DyTZhdaoNL9WkS4XHHUqGPkYc9R4G7jFcwQCpU0WbKTtrfnO7aSYUL/stbZStIAo # A29KbVWGtcDSJFjdtNm3PN15FktILl2sZjkWELwinoJe9Y9ZctVowOj7irBtWEOy # NrqIK6KGGhCa # SIG # End signature block |