Set-StrictMode -Version Latest InModuleScope Pester { Describe "Write nunit test results (Legacy)" { Setup -Dir "Results" It "should write a successful test result" { #create state $TestResults = New-PesterState -Path TestDrive:\ $testResults.EnterDescribe('Mocked Describe') $TestResults.AddTestResult("Successful testcase","Passed",(New-TimeSpan -Seconds 1)) #export and validate the file $testFile = "$TestDrive\Results\Tests.xml" Export-NunitReport $testResults $testFile -LegacyFormat $xmlResult = [xml] (Get-Content $testFile) $xmlTestCase = $xmlResult.'test-results'.'test-suite'.'results'.'test-suite'.'results'.'test-case' $xmlTestCase.name | Should Be "Successful testcase" $xmlTestCase.result | Should Be "Success" $xmlTestCase.time | Should Be "1" } It "should write a failed test result" { #create state $TestResults = New-PesterState -Path TestDrive:\ $testResults.EnterDescribe('Mocked Describe') $time = [TimeSpan]::FromSeconds(2.5) $TestResults.AddTestResult("Failed testcase","Failed",$time,'Assert failed: "Expected: Test. But was: Testing"','at line: 28 in C:\Pester\Result.Tests.ps1') #export and validate the file $testFile = "$TestDrive\Results\Tests.xml" Export-NunitReport $testResults $testFile -LegacyFormat $xmlResult = [xml] (Get-Content $testFile) $xmlTestCase = $xmlResult.'test-results'.'test-suite'.'results'.'test-suite'.'results'.'test-case' $xmlTestCase.name | Should Be "Failed testcase" $xmlTestCase.result | Should Be "Failure" $xmlTestCase.time | Should Be "2.5" $xmlTestCase.failure.message | Should Be 'Assert failed: "Expected: Test. But was: Testing"' $xmlTestCase.failure.'stack-trace' | Should Be 'at line: 28 in C:\Pester\Result.Tests.ps1' } It "should write the test summary" { #create state $TestResults = New-PesterState -Path TestDrive:\ $testResults.EnterDescribe('Mocked Describe') $TestResults.AddTestResult("Testcase","Passed",(New-TimeSpan -Seconds 1)) #export and validate the file $testFile = "$TestDrive\Results\Tests.xml" Export-NunitReport $testResults $testFile -LegacyFormat $xmlResult = [xml] (Get-Content $testFile) $xmlTestResult = $xmlResult.'test-results' $xmlTestResult.total | Should Be 1 $xmlTestResult.failures | Should Be 0 $xmlTestResult.date | Should Be $true $xmlTestResult.time | Should Be $true } it "should write the test-suite information" { #create state $TestResults = New-PesterState -Path TestDrive:\ $testResults.EnterDescribe('Mocked Describe') $TestResults.AddTestResult("Successful testcase","Passed",[timespan]10000000) #1.0 seconds $TestResults.AddTestResult("Successful testcase","Passed",[timespan]11000000) #1.1 seconds #export and validate the file $testFile = "$TestDrive\Results\Tests.xml" Export-NunitReport $testResults $testFile -LegacyFormat $xmlResult = [xml] (Get-Content $testFile) $xmlTestResult = $xmlResult.'test-results'.'test-suite'.results.'test-suite' $description = $null if ($xmlTestResult.PSObject.Properties['description']) { $description = $xmlTestResult.description } $xmlTestResult.type | Should Be "Powershell" $xmlTestResult.name | Should Be "Mocked Describe" $description | Should BeNullOrEmpty $xmlTestResult.result | Should Be "Success" $xmlTestResult.success | Should Be "True" $xmlTestResult.time | Should Be 2.1 } it "should write two test-suite elements for two describes" { #create state $TestResults = New-PesterState -Path TestDrive:\ $testResults.EnterDescribe('Describe #1') $TestResults.AddTestResult("Successful testcase","Passed",(New-TimeSpan -Seconds 1)) $TestResults.LeaveDescribe() $testResults.EnterDescribe('Describe #2') $TestResults.AddTestResult("Failed testcase","Failed",(New-TimeSpan -Seconds 2)) #export and validate the file $testFile = "$TestDrive\Results\Tests.xml" Export-NunitReport $testResults $testFile -LegacyFormat $xmlResult = [xml] (Get-Content $testFile) $xmlTestSuite1 = $xmlResult.'test-results'.'test-suite'.results.'test-suite'[0] $description = $null if ($xmlTestSuite1.PSObject.Properties['description']) { $description = $xmlTestSuite1.description } $xmlTestSuite1.name | Should Be "Describe #1" $description | Should BeNullOrEmpty $xmlTestSuite1.result | Should Be "Success" $xmlTestSuite1.success | Should Be "True" $xmlTestSuite1.time | Should Be 1.0 $xmlTestSuite2 = $xmlResult.'test-results'.'test-suite'.results.'test-suite'[1] $description = $null if ($xmlTestSuite2.PSObject.Properties['description']) { $description = $xmlTestSuite2.description } $xmlTestSuite2.name | Should Be "Describe #2" $description | Should BeNullOrEmpty $xmlTestSuite2.result | Should Be "Failure" $xmlTestSuite2.success | Should Be "False" $xmlTestSuite2.time | Should Be 2.0 } it "should write parent results in tree correctly" { #create state $TestResults = New-PesterState -Path TestDrive:\ $testResults.EnterDescribe('Failed') $TestResults.AddTestResult("Failed","Failed") $TestResults.AddTestResult("Skipped","Skipped") $TestResults.AddTestResult("Pending","Pending") $TestResults.AddTestResult("Passed","Passed") $TestResults.LeaveDescribe() $testResults.EnterDescribe('Skipped') $TestResults.AddTestResult("Skipped","Skipped") $TestResults.AddTestResult("Pending","Pending") $TestResults.AddTestResult("Passed","Passed") $TestResults.LeaveDescribe() $testResults.EnterDescribe('Pending') $TestResults.AddTestResult("Pending","Pending") $TestResults.AddTestResult("Passed","Passed") $TestResults.LeaveDescribe() $testResults.EnterDescribe('Passed') $TestResults.AddTestResult("Passed","Passed") $TestResults.LeaveDescribe() #export and validate the file $testFile = "$TestDrive\Results\Tests.xml" Export-NunitReport $testResults $testFile $xmlResult = [xml] (Get-Content $testFile) $xmlTestSuite1 = $xmlResult.'test-results'.'test-suite'.results.'test-suite'[0] $xmlTestSuite1.name | Should Be "Failed" $xmlTestSuite1.result | Should Be "Failure" $xmlTestSuite1.success | Should Be "False" $xmlTestSuite2 = $xmlResult.'test-results'.'test-suite'.results.'test-suite'[1] $xmlTestSuite2.name | Should Be "Skipped" $xmlTestSuite2.result | Should Be "Ignored" $xmlTestSuite2.success | Should Be "True" $xmlTestSuite3 = $xmlResult.'test-results'.'test-suite'.results.'test-suite'[2] $xmlTestSuite3.name | Should Be "Pending" $xmlTestSuite3.result | Should Be "Inconclusive" $xmlTestSuite3.success | Should Be "True" $xmlTestSuite4 = $xmlResult.'test-results'.'test-suite'.results.'test-suite'[3] $xmlTestSuite4.name | Should Be "Passed" $xmlTestSuite4.result | Should Be "Success" $xmlTestSuite4.success | Should Be "True" } it "should write the environment information" { $state = New-PesterState "." $testFile = "$TestDrive\Results\Tests.xml" Export-NunitReport $state $testFile -LegacyFormat $xmlResult = [xml] (Get-Content $testFile) $xmlEnvironment = $xmlResult.'test-results'.'environment' $xmlEnvironment.'os-Version' | Should Be $true $xmlEnvironment.platform | Should Be $true $xmlEnvironment.cwd | Should Be (Get-Location).Path if ($env:Username) { $xmlEnvironment.user | Should Be $env:Username } $xmlEnvironment.'machine-name' | Should Be $env:ComputerName } it "Should validate test results against the nunit 2.5 schema" { #create state $TestResults = New-PesterState -Path TestDrive:\ $testResults.EnterDescribe('Describe #1') $TestResults.AddTestResult("Successful testcase","Passed",(New-TimeSpan -Seconds 1)) $TestResults.LeaveDescribe() $testResults.EnterDescribe('Describe #2') $TestResults.AddTestResult("Failed testcase","Failed",(New-TimeSpan -Seconds 2)) #export and validate the file $testFile = "$TestDrive\Results\Tests.xml" Export-NunitReport $testResults $testFile -LegacyFormat $xml = [xml] (Get-Content $testFile) $schemePath = (Get-Module -Name Pester).Path | Split-Path | Join-Path -ChildPath "nunit_schema_2.5.xsd" $xml.Schemas.Add($null,$schemePath) > $null { $xml.Validate({throw $args.Exception }) } | Should Not Throw } it "handles special characters in block descriptions well -!@#$%^&*()_+`1234567890[];'',./""- " { #create state $TestResults = New-PesterState -Path TestDrive:\ $testResults.EnterDescribe('Describe -!@#$%^&*()_+`1234567890[];'',./"- #1') $TestResults.AddTestResult("Successful testcase -!@#$%^&*()_+`1234567890[];'',./""-","Passed",(New-TimeSpan -Seconds 1)) $TestResults.LeaveDescribe() #export and validate the file $testFile = "$TestDrive\Results\Tests.xml" Export-NunitReport $testResults $testFile -LegacyFormat $xml = [xml] (Get-Content $testFile) $schemePath = (Get-Module -Name Pester).Path | Split-Path | Join-Path -ChildPath "nunit_schema_2.5.xsd" $xml.Schemas.Add($null,$schemePath) > $null { $xml.Validate({throw $args.Exception }) } | Should Not Throw } Context 'Exporting Parameterized Tests (New Legacy)' { #create state $TestResults = New-PesterState -Path TestDrive:\ $testResults.EnterDescribe('Mocked Describe') $TestResults.AddTestResult( 'Parameterized Testcase One', 'Passed', (New-TimeSpan -Seconds 1), $null, $null, 'Parameterized Testcase ', @{ Parameter = 'One' } ) $TestResults.AddTestResult( 'Parameterized Testcase ', 'Failed', (New-TimeSpan -Seconds 1), 'Assert failed: "Expected: Test. But was: Testing"', 'at line: 28 in C:\Pester\Result.Tests.ps1', 'Parameterized Testcase ', @{ Parameter = 'Two' } ) #export and validate the file $testFile = "$TestDrive\Results\Tests.xml" Export-NunitReport $testResults $testFile -LegacyFormat $xmlResult = [xml] (Get-Content $testFile) It 'should write parameterized test results correctly' { $xmlTestSuite = $xmlResult.'test-results'.'test-suite'.'results'.'test-suite'.'results'.'test-suite' $description = $null if ($xmlTestSuite.PSObject.Properties['description']) { $description = $xmlTestSuite.description } $xmlTestSuite.name | Should Be 'Parameterized Testcase ' $description | Should BeNullOrEmpty $xmlTestSuite.type | Should Be 'ParameterizedTest' $xmlTestSuite.result | Should Be 'Failure' $xmlTestSuite.success | Should Be 'False' $xmlTestSuite.time | Should Be '2' foreach ($testCase in $xmlTestSuite.results.'test-case') { $testCase.Name | Should Match '^Parameterized Testcase (One|)$' $testCase.time | Should Be 1 } } it 'Should validate test results against the nunit 2.5 schema' { $schemaPath = (Get-Module -Name Pester).Path | Split-Path | Join-Path -ChildPath "nunit_schema_2.5.xsd" $null = $xmlResult.Schemas.Add($null,$schemaPath) { $xmlResult.Validate({throw $args.Exception }) } | Should Not Throw } } } Describe "Write nunit test results (Newer format)" { Setup -Dir "Results" It "should write a successful test result" { #create state $TestResults = New-PesterState -Path TestDrive:\ $testResults.EnterDescribe('Mocked Describe') $TestResults.AddTestResult("Successful testcase",'Passed',(New-TimeSpan -Seconds 1)) #export and validate the file $testFile = "$TestDrive\Results\Tests.xml" Export-NunitReport $testResults $testFile $xmlResult = [xml] (Get-Content $testFile) $xmlTestCase = $xmlResult.'test-results'.'test-suite'.'results'.'test-suite'.'results'.'test-case' $xmlTestCase.name | Should Be "Mocked Describe.Successful testcase" $xmlTestCase.result | Should Be "Success" $xmlTestCase.time | Should Be "1" } It "should write a failed test result" { #create state $TestResults = New-PesterState -Path TestDrive:\ $testResults.EnterDescribe('Mocked Describe') $time = [TimeSpan]25000000 #2.5 seconds $TestResults.AddTestResult("Failed testcase",'Failed',$time,'Assert failed: "Expected: Test. But was: Testing"','at line: 28 in C:\Pester\Result.Tests.ps1') #export and validate the file $testFile = "$TestDrive\Results\Tests.xml" Export-NunitReport $testResults $testFile $xmlResult = [xml] (Get-Content $testFile) $xmlTestCase = $xmlResult.'test-results'.'test-suite'.'results'.'test-suite'.'results'.'test-case' $xmlTestCase.name | Should Be "Mocked Describe.Failed testcase" $xmlTestCase.result | Should Be "Failure" $xmlTestCase.time | Should Be "2.5" $xmlTestCase.failure.message | Should Be 'Assert failed: "Expected: Test. But was: Testing"' $xmlTestCase.failure.'stack-trace' | Should Be 'at line: 28 in C:\Pester\Result.Tests.ps1' } It "should write the test summary" { #create state $TestResults = New-PesterState -Path TestDrive:\ $testResults.EnterDescribe('Mocked Describe') $TestResults.AddTestResult("Testcase",'Passed',(New-TimeSpan -Seconds 1)) #export and validate the file $testFile = "$TestDrive\Results\Tests.xml" Export-NunitReport $testResults $testFile $xmlResult = [xml] (Get-Content $testFile) $xmlTestResult = $xmlResult.'test-results' $xmlTestResult.total | Should Be 1 $xmlTestResult.failures | Should Be 0 $xmlTestResult.date | Should Be $true $xmlTestResult.time | Should Be $true } it "should write the test-suite information" { #create state $TestResults = New-PesterState -Path TestDrive:\ $testResults.EnterDescribe('Mocked Describe') $TestResults.AddTestResult("Successful testcase",'Passed',[timespan]10000000) #1.0 seconds $TestResults.AddTestResult("Successful testcase",'Passed',[timespan]11000000) #1.1 seconds #export and validate the file $testFile = "$TestDrive\Results\Tests.xml" Export-NunitReport $testResults $testFile $xmlResult = [xml] (Get-Content $testFile) $xmlTestResult = $xmlResult.'test-results'.'test-suite'.results.'test-suite' $xmlTestResult.type | Should Be "TestFixture" $xmlTestResult.name | Should Be "Mocked Describe" $xmlTestResult.description | Should Be "Mocked Describe" $xmlTestResult.result | Should Be "Success" $xmlTestResult.success | Should Be "True" $xmlTestResult.time | Should Be 2.1 } it "should write two test-suite elements for two describes" { #create state $TestResults = New-PesterState -Path TestDrive:\ $testResults.EnterDescribe('Describe #1') $TestResults.AddTestResult("Successful testcase",'Passed',(New-TimeSpan -Seconds 1)) $TestResults.LeaveDescribe() $testResults.EnterDescribe('Describe #2') $TestResults.AddTestResult("Failed testcase",'Failed',(New-TimeSpan -Seconds 2)) #export and validate the file $testFile = "$TestDrive\Results\Tests.xml" Export-NunitReport $testResults $testFile $xmlResult = [xml] (Get-Content $testFile) $xmlTestSuite1 = $xmlResult.'test-results'.'test-suite'.results.'test-suite'[0] $xmlTestSuite1.name | Should Be "Describe #1" $xmlTestSuite1.description | Should Be "Describe #1" $xmlTestSuite1.result | Should Be "Success" $xmlTestSuite1.success | Should Be "True" $xmlTestSuite1.time | Should Be 1.0 $xmlTestSuite2 = $xmlResult.'test-results'.'test-suite'.results.'test-suite'[1] $xmlTestSuite2.name | Should Be "Describe #2" $xmlTestSuite2.description | Should Be "Describe #2" $xmlTestSuite2.result | Should Be "Failure" $xmlTestSuite2.success | Should Be "False" $xmlTestSuite2.time | Should Be 2.0 } it "should write the environment information" { $state = New-PesterState "." $testFile = "$TestDrive\Results\Tests.xml" Export-NunitReport $state $testFile $xmlResult = [xml] (Get-Content $testFile) $xmlEnvironment = $xmlResult.'test-results'.'environment' $xmlEnvironment.'os-Version' | Should Be $true $xmlEnvironment.platform | Should Be $true $xmlEnvironment.cwd | Should Be (Get-Location).Path if ($env:Username) { $xmlEnvironment.user | Should Be $env:Username } $xmlEnvironment.'machine-name' | Should Be $env:ComputerName } it "Should validate test results against the nunit 2.5 schema" { #create state $TestResults = New-PesterState -Path TestDrive:\ $testResults.EnterDescribe('Describe #1') $TestResults.AddTestResult("Successful testcase",'Passed',(New-TimeSpan -Seconds 1)) $TestResults.LeaveDescribe() $testResults.EnterDescribe('Describe #2') $TestResults.AddTestResult("Failed testcase",'Failed',(New-TimeSpan -Seconds 2)) #export and validate the file $testFile = "$TestDrive\Results\Tests.xml" Export-NunitReport $testResults $testFile $xml = [xml] (Get-Content $testFile) $schemePath = (Get-Module -Name Pester).Path | Split-Path | Join-Path -ChildPath "nunit_schema_2.5.xsd" $xml.Schemas.Add($null,$schemePath) > $null { $xml.Validate({throw $args.Exception }) } | Should Not Throw } it "handles special characters in block descriptions well -!@#$%^&*()_+`1234567890[];'',./""- " { #create state $TestResults = New-PesterState -Path TestDrive:\ $testResults.EnterDescribe('Describe -!@#$%^&*()_+`1234567890[];'',./"- #1') $TestResults.AddTestResult("Successful testcase -!@#$%^&*()_+`1234567890[];'',./""-",'Passed',(New-TimeSpan -Seconds 1)) $TestResults.LeaveDescribe() #export and validate the file $testFile = "$TestDrive\Results\Tests.xml" Export-NunitReport $testResults $testFile $xml = [xml] (Get-Content $testFile) $schemePath = (Get-Module -Name Pester).Path | Split-Path | Join-Path -ChildPath "nunit_schema_2.5.xsd" $xml.Schemas.Add($null,$schemePath) > $null { $xml.Validate({throw $args.Exception }) } | Should Not Throw } Context 'Exporting Parameterized Tests (Newer format)' { #create state $TestResults = New-PesterState -Path TestDrive:\ $testResults.EnterDescribe('Mocked Describe') $TestResults.AddTestResult( 'Parameterized Testcase One', 'Passed', (New-TimeSpan -Seconds 1), $null, $null, 'Parameterized Testcase ', @{Parameter = 'One'} ) $parameters = New-Object System.Collections.Specialized.OrderedDictionary $parameters.Add('StringParameter', 'Two') $parameters.Add('NullParameter', $null) $parameters.Add('NumberParameter', -42.67) $TestResults.AddTestResult( 'Parameterized Testcase ', 'Failed', (New-TimeSpan -Seconds 1), 'Assert failed: "Expected: Test. But was: Testing"', 'at line: 28 in C:\Pester\Result.Tests.ps1', 'Parameterized Testcase ', $parameters ) #export and validate the file $testFile = "$TestDrive\Results\Tests.xml" Export-NunitReport $testResults $testFile $xmlResult = [xml] (Get-Content $testFile) It 'should write parameterized test results correctly' { $xmlTestSuite = $xmlResult.'test-results'.'test-suite'.'results'.'test-suite'.'results'.'test-suite' $xmlTestSuite.name | Should Be 'Mocked Describe.Parameterized Testcase ' $xmlTestSuite.description | Should Be 'Parameterized Testcase ' $xmlTestSuite.type | Should Be 'ParameterizedTest' $xmlTestSuite.result | Should Be 'Failure' $xmlTestSuite.success | Should Be 'False' $xmlTestSuite.time | Should Be '2' $testCase1 = $xmlTestSuite.results.'test-case'[0] $testCase2 = $xmlTestSuite.results.'test-case'[1] $testCase1.Name | Should Be 'Mocked Describe.Parameterized Testcase One' $testCase1.Time | Should Be 1 $testCase2.Name | Should Be 'Mocked Describe.Parameterized Testcase ("Two",null,-42.67)' $testCase2.Time | Should Be 1 } it 'Should validate test results against the nunit 2.5 schema' { $schemaPath = (Get-Module -Name Pester).Path | Split-Path | Join-Path -ChildPath "nunit_schema_2.5.xsd" $null = $xmlResult.Schemas.Add($null,$schemaPath) { $xmlResult.Validate({throw $args.Exception }) } | Should Not Throw } } } Describe "Get-TestTime" { function Using-Culture { param ( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] [ScriptBlock]$ScriptBlock, [System.Globalization.CultureInfo]$Culture='en-US' ) $oldCulture = [System.Threading.Thread]::CurrentThread.CurrentCulture try { [System.Threading.Thread]::CurrentThread.CurrentCulture = $Culture $ExecutionContext.InvokeCommand.InvokeScript($ScriptBlock) } finally { [System.Threading.Thread]::CurrentThread.CurrentCulture = $oldCulture } } It "output is culture agnostic" { #on cs-CZ, de-DE and other systems where decimal separator is ",". value [double]3.5 is output as 3,5 #this makes some of the tests fail, it could also leak to the nUnit report if the time was output $TestResult = New-Object -TypeName psObject -Property @{ Time = [timespan]35000000 } #3.5 seconds #using the string formatter here to know how the string will be output to screen $Result = { Get-TestTime -Tests $TestResult | Out-String -Stream } | Using-Culture -Culture de-DE $Result | Should Be "3.5" } It "Time is measured in seconds with 0,1 millisecond as lowest value" { $TestResult = New-Object -TypeName psObject -Property @{ Time = [timespan]1000 } Get-TestTime -Tests $TestResult | Should Be 0.0001 $TestResult = New-Object -TypeName psObject -Property @{ Time = [timespan]100 } Get-TestTime -Tests $TestResult | Should Be 0 $TestResult = New-Object -TypeName psObject -Property @{ Time = [timespan]1234567 } Get-TestTime -Tests $TestResult | Should Be 0.1235 } } Describe "GetFullPath" { It "Resolves non existing path correctly" { pushd TestDrive:\ $p = GetFullPath notexistingfile.txt popd $p | Should Be (Join-Path $TestDrive notexistingfile.txt) } It "Resolves existing path correctly" { pushd TestDrive:\ New-Item -ItemType File -Name existingfile.txt $p = GetFullPath existingfile.txt popd $p | Should Be (Join-Path $TestDrive existingfile.txt) } It "Resolves full path correctly" { GetFullPath C:\Windows\System32\notepad.exe | Should Be C:\Windows\System32\notepad.exe } } } # SIG # Begin signature block # MIInZAYJKoZIhvcNAQcCoIInVTCCJ1ECAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBKD7WI8pBtccjL # Ep1BJK+QbNkIDGYkDdkUBOY1i/oaFaCCC7QwggXLMIIEs6ADAgECAhMzAAABQGf2 # mGsxCLhyAAAAAAFAMA0GCSqGSIb3DQEBCwUAMIGOMQswCQYDVQQGEwJVUzETMBEG # A1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj # cm9zb2Z0IENvcnBvcmF0aW9uMTgwNgYDVQQDEy9NaWNyb3NvZnQgV2luZG93cyBU # aGlyZCBQYXJ0eSBDb21wb25lbnQgQ0EgMjAxMjAeFw0yNTExMTMxOTU5NDNaFw0y # NjExMTAxOTU5NDNaMIGEMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv # bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 # aW9uMS4wLAYDVQQDEyVNaWNyb3NvZnQgV2luZG93cyAzcmQgcGFydHkgQ29tcG9u # ZW50MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEArGt4Hrjs3D7+IIab # GkPGtg4XeWQFi8nKsdeF+N6nkYF9wsmw0qPk4OovEiJnCSRiEtLfYy3Icn4iOp7L # 24oCa0zlgYCND3OnNfYOuVpMsq3CSkXYg3H+VMiB11hOLcctTu4RWy4ZRKsL5NVI # AduJFgd/1Qs2mQpUuOyFfLKhu/+Z+T2c9YALxsfnPvqn8Tn8Tt8wdZuFwz7kK3jl # e2T3YBofybAR2aH678TnOxhLe2/hEpTdKaVfcqyrIX0Mw/LwqEJnj4G8amBbQ7OG # RnKm1VNd4nMpRt1SflNlVo1Q3Qqnj9K6mSPw99YGMCTaVr6jKPylsWyW4nsvu8m0 # MbBJJiLOi0sOTHtwQEVcBH6WM7xbODqwPaklS1wDbED1wfzImIUR8WsXJVjDm7Fg # x4JDo8oLIjKFrEvzBfrYWsvlDg8p9XgR7EB/IJwXGuJbFzo/S+r3D5DkUZXX/72k # XA4FeRJAgLePAuGChPvyQiLtKJeJm9ftJeukrIcs7JpJVHObAgMBAAGjggGoMIIB # pDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUB9FDBUZ0W11vsv6qqb9t # vKspCIowRQYDVR0RBD4wPKQ6MDgxHjAcBgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3Jh # dGlvbjEWMBQGA1UEBRMNMjMwODA5KzUwNjIyOTAfBgNVHSMEGDAWgBRhcaeHr/9p # 1SF2T1KTKAC+eRKrhDB0BgNVHR8EbTBrMGmgZ6BlhmNodHRwOi8vd3d3Lm1pY3Jv # c29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQlMjBXaW5kb3dzJTIwVGhpcmQl # MjBQYXJ0eSUyMENvbXBvbmVudCUyMENBJTIwMjAxMi5jcmwwgYEGCCsGAQUFBwEB # BHUwczBxBggrBgEFBQcwAoZlaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9w # cy9jZXJ0cy9NaWNyb3NvZnQlMjBXaW5kb3dzJTIwVGhpcmQlMjBQYXJ0eSUyMENv # bXBvbmVudCUyMENBJTIwMjAxMi5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0B # AQsFAAOCAQEAmFzJPKhkAXPOcfy9S4q1nP3XCvmABVGv/VRzFZ1e+oVtVzOFkbZ6 # osY1OpZqa9CEvtgcrtciv1y9mV1SpxAMwfEqq+Nhw2GdZ3IWqFzWFsEe2S9U196s # XRIRIxglZMBWyzdy8rQ+P7L2+LciW4qcaw2wtv6YoI0q1isgk0t1OF5kEL0t9hhx # UrBavTdoqZ3b5JtwDqzmIsxuLtGbE9Pqbz2gx/me+7yduYpIcYlmEmPQkg3gmWkZ # lnSRePu7/5RXS2TGW1O5JP8aqVcMn0ZkHEhtT368pE/CxQVAkAYHNz6+enP9n+HC # 2udu395c0fVlRHy/d53f32RukfbjakH8uzCCBeEwggPJoAMCAQICCmELqsEAAAAA # AAkwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo # aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y # cG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290IENlcnRpZmljYXRlIEF1 # dGhvcml0eSAyMDEwMB4XDTEyMDQxODIzNDgzOFoXDTI3MDQxODIzNTgzOFowgY4x # CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt # b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xODA2BgNVBAMTL01p # Y3Jvc29mdCBXaW5kb3dzIFRoaXJkIFBhcnR5IENvbXBvbmVudCBDQSAyMDEyMIIB # IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo5wwhAmnYy7PCkfw6iT5ozAg # D15XMSaBmjEHslDUzmcJCGUKWqVLrtXtEC7npZm1n2gvmItYAqwgtCnEcb0oHKX9 # PJtk5MXr32ElvPDuaL/Rp8t+KgKBTmRcDFOGeVcZN2G3mPkMoE4iWZv5Gy1nPCc8 # VpBm4/1/ZX0Phr01R+iKzPTajulqTqunVeyiiR7VM0VTy/med73NLPkFuH90AR3o # +xjhQ9EN6arcN2+9/rgP7R1NAUZOCqz8gujsVoMTjjoB7RRkdOpksmYQtmhtyHAA # fVBILj1D7uAklcbNjsf9uOSVz91++5VeoQHNQ7EH16Qw7puGGipuwQtZonRviwID # AQABo4IBQzCCAT8wEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFGFxp4ev/2nV # IXZPUpMoAL55EquEMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQE # AwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNX2VsuP6KJcYmjRPZSQ # W9fOmhjEMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNv # bS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNybDBa # BggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cubWljcm9zb2Z0 # LmNvbS9wa2kvY2VydHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3J0MA0GCSqG # SIb3DQEBCwUAA4ICAQBaimfazNX9DSZBd78KRni0s94SaSt3I8JlLwFf0gP0YbpQ # nS6MOXLzbD5qsR52bey384LczLvFaXAoc2YXP1Tr7gEWSMRG2RuAroE6jQ95bWiw # nuotPznTyjh+vV58CG4Z3MbC9DgzaGHiUkeD4QABVtK6y4eCBTEKQYtO539fX+1f # 0zktReuiE7/9HsKYQXFhFl/ICnAlfFlpMSTkcecKuwQX959yHsnSuxq+PQL+CQyy # Q7RZGplTk5YhX+DWtyYBQpU2rCf9vvSFd2g9GL30vpiIIhGGUhbzRewDlxBwh6Nw # Q3E828mGAxcM9XNbxn3hXGTt18VI1+0y4tGq08+n9ldOYfl362fyiLPeANoDj9CK # NDc+HdhiuNKx8+Evi3I7gZZ8b/zsZnZyYBsk8qCJbVttAC7vKN2GhwXCtLnlvmTC # KvJKFVyY4sQnhf9S42J+D7ICC9dmxwqy0z0gBBRQMlmDCn2b7Vo4EgFSui9eIHKO # SvH953ECjDvhB77Jc/TdR9i077SkszC5iT52yrkAmFZ+q+qKuKXQOKtpdxMLFC/p # qkEf97q9Ois0iu4Kq2PmY/eIJI4gDSs7nePCSVKsnx8OOTtd1G5QauZ9UjqqfDMV # KQ0mXgFYp06pPXqEb3Q/YJ/kMk82AK9tcdM+pkZlX4F08f7BcdpMoEFagt3xHzGC # GwYwghsCAgEBMIGmMIGOMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv # bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 # aW9uMTgwNgYDVQQDEy9NaWNyb3NvZnQgV2luZG93cyBUaGlyZCBQYXJ0eSBDb21w # b25lbnQgQ0EgMjAxMgITMwAAAUBn9phrMQi4cgAAAAABQDANBglghkgBZQMEAgEF # AKCCARgwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEO # MAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIAtCrOOmU+fI6XQbEUarXWB+ # NUpGtbZphyCf3NlKjEfAMFAGCisGAQQBgjcKAxwxQgxAODAzODYyRDNGNDVGMUVE # NEQ0QzE2NUJBNjAxN0U3REJEMDBFMUZFQ0EwRTUxNTJDOUE0NEQ5NEQ2OUY1N0Uz # QjBaBgorBgEEAYI3AgEMMUwwSqAkgCIATQBpAGMAcgBvAHMAbwBmAHQAIABXAGkA # bgBkAG8AdwBzoSKAIGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS93aW5kb3dzMA0G # CSqGSIb3DQEBAQUABIIBgENRYnH27qO1IOVSyec6A4Pr0S/OAqxU6kV4B9cn9uN2 # jXf7+f21/wjhihUBeXTp4F+KJH5zocKZpTeQ9ZQtwBHatVud91mWP03+IX6Fi0S6 # l/8ox7MiKFE3249eOr71hGMwykW63uov2kAMTPlLwvLsnCaWpV9DlH/LM4ro1MFz # rL1qXxNyXv0uy2nPqttkfGS1Txi/+1BEzj0G0yLN9EvbZQCV9XpmfiL8Zc/1PfBs # Jqun9xAAbWSdVmh5sHIVDddHh71WJ8VMunl+9S7kmHWUgjij09ZeVXwKzvqNiXg0 # 1j9t1ZpuIzfm8z3NTly3AiK/HKiOhBDPEbSZnGdKPGwT2AaaKR85OrX7deF0/08W # m4k8L1dhvTV+o1YBjTb7D9/nLJENhVZ5UXJm7o64cAUeAvmIkUNG960cTspacFBU # 8LE5CBXiRZkzm4p/0IxAWN3Z5QuZsoAP3D82NBdM4bUZWgEVPhwtOhJD1aU2nftb # ifmzzwFOiaij3go1XphCl6GCF5QwgheQBgorBgEEAYI3AwMBMYIXgDCCF3wGCSqG # SIb3DQEHAqCCF20wghdpAgEDMQ8wDQYJYIZIAWUDBAIBBQAwggFSBgsqhkiG9w0B # CRABBKCCAUEEggE9MIIBOQIBAQYKKwYBBAGEWQoDATAxMA0GCWCGSAFlAwQCAQUA # BCBkSj63Z/LF2UWtARGC7IvUnuMIvS+1KO+X6LJyZj4KrwIGagytRTeQGBMyMDI2 # MDUyMzA2MzQ1Ni41MThaMASAAgH0oIHRpIHOMIHLMQswCQYDVQQGEwJVUzETMBEG # A1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj # cm9zb2Z0IENvcnBvcmF0aW9uMSUwIwYDVQQLExxNaWNyb3NvZnQgQW1lcmljYSBP # cGVyYXRpb25zMScwJQYDVQQLEx5uU2hpZWxkIFRTUyBFU046ODkwMC0wNUUwLUQ5 # NDcxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2WgghHqMIIH # IDCCBQigAwIBAgITMwAAAiJB0vaq/8i1/wABAAACIjANBgkqhkiG9w0BAQsFADB8 # MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk # bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1N # aWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDAeFw0yNjAyMTkxOTM5NTZaFw0y # NzA1MTcxOTM5NTZaMIHLMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv # bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 # aW9uMSUwIwYDVQQLExxNaWNyb3NvZnQgQW1lcmljYSBPcGVyYXRpb25zMScwJQYD # VQQLEx5uU2hpZWxkIFRTUyBFU046ODkwMC0wNUUwLUQ5NDcxJTAjBgNVBAMTHE1p # Y3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2UwggIiMA0GCSqGSIb3DQEBAQUAA4IC # DwAwggIKAoICAQC1ueKJukIuUsAAJo/AY5DZRqH7bhgv7CWGNlEdbRGoITrdE6Ws # n57NaNu1BTdjBbFcv7Rfixte0x+HRvXSqsD+WeSX/6/y9wE0Mz+xRPTGIY20K7aQ # Da68OyzVyUeUCypyZC/gW/3ytO/ZOnU9H2ri77kJP8ABrqyy1UxX/OseEgvHsj8y # ikWT0ARtrjWbXMHFzSOo5hQcfUmMXKqWWz6+N0+UynhGy1n+doW4WZgpH8Y5W7hp # SokWj1M/Lu4wi3o6Dz9vVWukcgUFGjLAl4YZpOhah7HuiC/alXImMQf8C3A8q/6/ # 1hFoeIZB4UGkywxB/OSTOSsL6+39pDqzM7CgOpf4V799kN94yM9uXJI5T/SiA5Md # IZIhEW0+bh85RqDh5YW3/oav54RPxw5OPlH64QV6KJkl0FIElMVoLNo8UWRQcMD1 # 79x7WASjC6LsaNZ7yK0qcESIsL1wiQmdfQBxcqrFCpIQfnmQFkOp9IyXUWqza8tm # pz8E6aXg9b1eiAT3PVTgrOlPi/hYZCfPxX/6jGtyPjy1CiwOmJamohmSU//COAen # fRT2G2HMRUpCX1zs+AmDmdQM1XRab4YSALLAlDzGCsgI77nnuJjoXAliJmv7Nfrv # WAcA5KqCUOWQ6kSPt5r28MfKXWJJpSXtFeS/MkDzJy/iJRVyHcFy/B+MtwIDAQAB # o4IBSTCCAUUwHQYDVR0OBBYEFFkHwGoDJ5ZbEEiu8KstiusqaozQMB8GA1UdIwQY # MBaAFJ+nFV0AXmJdg/Tl0mWnG1M1GelyMF8GA1UdHwRYMFYwVKBSoFCGTmh0dHA6 # Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMFRpbWUt # U3RhbXAlMjBQQ0ElMjAyMDEwKDEpLmNybDBsBggrBgEFBQcBAQRgMF4wXAYIKwYB # BQUHMAKGUGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWlj # cm9zb2Z0JTIwVGltZS1TdGFtcCUyMFBDQSUyMDIwMTAoMSkuY3J0MAwGA1UdEwEB # /wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwDgYDVR0PAQH/BAQDAgeAMA0G # CSqGSIb3DQEBCwUAA4ICAQBiAM+nqrpwG29txSXv42o+CsTe2C4boaRfFju9JaWk # LTHwq7pknNONL3n+UG3x/B083EKXiFYrAmul7BTHCGXU63/xRsZ2wj3ZmR0A4d9n # f9saCJVm4juPVFBai/oktOOYH2j+1+zM70woN5ongB/pvy7X8AfY6JB4XPvb80Qz # 7fY5eddbnwjzg1sZhUPFbbcweWeACINrzqFK62mMeXKmhtufMraoogJeJXfWY3x4 # /pbubgENT3+pXT65203CPF9kfdKE7GKAIRYy3xkBTDvFd8dufjOpCn38nK6qMlVt # nBjDhWQG0PM3E/oxBs5UBrI6pBYkmIHtbjifDquHT+ThaVV7xHc6InoSc3aNzX49 # JHUgQmuvDdMjLkbYXeA0/1q5IxSg2U+ycZBOvAi3udZPKhA5VzODjf/ucu/vFtXr # YcRkmGKN3jujaK3/yMZi2Ju5NEL3ISWorwp7RjeZg+JMIK0fosuVj+YCm5r64LH/ # D9QJDAj+XfZaNeFdv90K5A0QRRGP/poB9yTIVjEXj/uJzp8L4Dd44sAquqDOiHdk # LgxfK8nPqpCSWPZ9G+RCPm85o9cAfxENtrSuOwcpyKzxsRCYCL+PK4+98orit9EV # J/LLoCeG+jLlj0KaD4Qy6sZe4rWMr1brQLosTBZNwFnXxNjInCWBd0i7is1yTS/4 # qTCCB3EwggVZoAMCAQICEzMAAAAVxedrngKbSZkAAAAAABUwDQYJKoZIhvcNAQEL # BQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH # EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNV # BAMTKU1pY3Jvc29mdCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDEwMB4X # DTIxMDkzMDE4MjIyNVoXDTMwMDkzMDE4MzIyNVowfDELMAkGA1UEBhMCVVMxEzAR # BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1p # Y3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3Rh # bXAgUENBIDIwMTAwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDk4aZM # 57RyIQt5osvXJHm9DtWC0/3unAcH0qlsTnXIyjVX9gF/bErg4r25PhdgM/9cT8dm # 95VTcVrifkpa/rg2Z4VGIwy1jRPPdzLAEBjoYH1qUoNEt6aORmsHFPPFdvWGUNzB # RMhxXFExN6AKOG6N7dcP2CZTfDlhAnrEqv1yaa8dq6z2Nr41JmTamDu6GnszrYBb # fowQHJ1S/rboYiXcag/PXfT+jlPP1uyFVk3v3byNpOORj7I5LFGc6XBpDco2LXCO # Mcg1KL3jtIckw+DJj361VI/c+gVVmG1oO5pGve2krnopN6zL64NF50ZuyjLVwIYw # XE8s4mKyzbnijYjklqwBSru+cakXW2dg3viSkR4dPf0gz3N9QZpGdc3EXzTdEonW # /aUgfX782Z5F37ZyL9t9X4C626p+Nuw2TPYrbqgSUei/BQOj0XOmTTd0lBw0gg/w # EPK3Rxjtp+iZfD9M269ewvPV2HM9Q07BMzlMjgK8QmguEOqEUUbi0b1qGFphAXPK # Z6Je1yh2AuIzGHLXpyDwwvoSCtdjbwzJNmSLW6CmgyFdXzB0kZSU2LlQ+QuJYfM2 # BjUYhEfb3BvR/bLUHMVr9lxSUV0S2yW6r1AFemzFER1y7435UsSFF5PAPBXbGjfH # CBUYP3irRbb1Hode2o+eFnJpxq57t7c+auIurQIDAQABo4IB3TCCAdkwEgYJKwYB # BAGCNxUBBAUCAwEAATAjBgkrBgEEAYI3FQIEFgQUKqdS/mTEmr6CkTxGNSnPEP8v # BO4wHQYDVR0OBBYEFJ+nFV0AXmJdg/Tl0mWnG1M1GelyMFwGA1UdIARVMFMwUQYM # KwYBBAGCN0yDfQEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0 # LmNvbS9wa2lvcHMvRG9jcy9SZXBvc2l0b3J5Lmh0bTATBgNVHSUEDDAKBggrBgEF # BQcDCDAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYD # VR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvXzpoYxDBW # BgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2Ny # bC9wcm9kdWN0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYIKwYBBQUH # AQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtp # L2NlcnRzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNydDANBgkqhkiG9w0BAQsF # AAOCAgEAnVV9/Cqt4SwfZwExJFvhnnJL/Klv6lwUtj5OR2R4sQaTlz0xM7U518Jx # Nj/aZGx80HU5bbsPMeTCj/ts0aGUGCLu6WZnOlNN3Zi6th542DYunKmCVgADsAW+ # iehp4LoJ7nvfam++Kctu2D9IdQHZGN5tggz1bSNU5HhTdSRXud2f8449xvNo32X2 # pFaq95W2KFUn0CS9QKC/GbYSEhFdPSfgQJY4rPf5KYnDvBewVIVCs/wMnosZiefw # C2qBwoEZQhlSdYo2wh3DYXMuLGt7bj8sCXgU6ZGyqVvfSaN0DLzskYDSPeZKPmY7 # T7uG+jIa2Zb0j/aRAfbOxnT99kxybxCrdTDFNLB62FD+CljdQDzHVG2dY3RILLFO # Ry3BFARxv2T5JL5zbcqOCb2zAVdJVGTZc9d/HltEAY5aGZFrDZ+kKNxnGSgkujhL # mm77IVRrakURR6nxt67I6IleT53S0Ex2tVdUCbFpAUR+fKFhbHP+CrvsQWY9af3L # wUFJfn6Tvsv4O+S3Fb+0zj6lMVGEvL8CwYKiexcdFYmNcP7ntdAoGokLjzbaukz5 # m/8K6TT4JDVnK+ANuOaMmdbhIurwJ0I9JZTmdHRbatGePu1+oDEzfbzL6Xu/OHBE # 0ZDxyKs6ijoIYn/ZcGNTTY3ugm2lBRDBcQZqELQdVTNYs6FwZvKhggNNMIICNQIB # ATCB+aGB0aSBzjCByzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x # EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv # bjElMCMGA1UECxMcTWljcm9zb2Z0IEFtZXJpY2EgT3BlcmF0aW9uczEnMCUGA1UE # CxMeblNoaWVsZCBUU1MgRVNOOjg5MDAtMDVFMC1EOTQ3MSUwIwYDVQQDExxNaWNy # b3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNloiMKAQEwBwYFKw4DAhoDFQC7ycXVZx3b # sDpJkr7VucgpksozuKCBgzCBgKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpX # YXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQg # Q29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAy # MDEwMA0GCSqGSIb3DQEBCwUAAgUA7bvIKTAiGA8yMDI2MDUyMzA2MzEwNVoYDzIw # MjYwNTI0MDYzMTA1WjB0MDoGCisGAQQBhFkKBAExLDAqMAoCBQDtu8gpAgEAMAcC # AQACAg3bMAcCAQACAhLmMAoCBQDtvRmpAgEAMDYGCisGAQQBhFkKBAIxKDAmMAwG # CisGAQQBhFkKAwKgCjAIAgEAAgMHoSChCjAIAgEAAgMBhqAwDQYJKoZIhvcNAQEL # BQADggEBAFrIL6dnS5isjb7Amy/o1NbM11Nmvg8KJCwpAZC9G7xWZRQ7KWXX1WZB # komOo3cRm7pk0oISYxW21vPpQNzbHgWufbQHjBn2Zpog32z4sAznDIIOOQAsbzka # kLog40l908WfQ000dVl5DVEersUHZf3WTKdkzXtO9Tck1w5UCfdiZB016RIFgn7Q # M1UCJadhofVV4aZN3NglGRRMldLwSL/cVd7biLsTlxylG3spnc/QZ9RiZBDZGz8A # DtvIH3Krg8+/4Y8Hx1ELFkg5A2s2PX6VjQrLwv/0vkc+K+43HKqcGaruWhLcRJZk # X5DfIMdFBpj2r7u+jhYwNI0LKMeckwExggQNMIIECQIBATCBkzB8MQswCQYDVQQG # EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG # A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQg # VGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAAiJB0vaq/8i1/wABAAACIjANBglghkgB # ZQMEAgEFAKCCAUowGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMC8GCSqGSIb3 # DQEJBDEiBCAl6xqmY35ESd3ORBrJU54CCKKrbO7eEnKUy1tUMNrSDzCB+gYLKoZI # hvcNAQkQAi8xgeowgecwgeQwgb0EIAVgXQEKBOfGgjNskmDOmbcEIOnHGNwA+QcR # ufDR5AkTMIGYMIGApH4wfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0 # b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh # dGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTACEzMA # AAIiQdL2qv/Itf8AAQAAAiIwIgQg78XYavMxNCvzYXGX0xPmgMP0AKPFZRT7pTLk # EQzgJKowDQYJKoZIhvcNAQELBQAEggIAPHCPKxUeM0Z+byguldda1NN+vPPiprrH # P4Y+lyZORr7gdrz58Dv7j17madI6GqgwiqQ79DzFxXwn8yL0MAyUihQRHdx521at # NeFpuA29Jm++WkrXDamefFp1hDIUVWVDCjYv1xS21SLzHd65UuY6mgH62tQFfW+z # qOc0MANxRAXV2ee0npqbWyTFy1r1Kb/7bB+hFEwbJUS8BAi3uEJw0Qgx7rR81oDE # beLsXqbRTwu2kOECtpsjb9Y6FtJMt+A+/om486INnz5nge3nacWdOfj8b5tN4h+I # safGtgaHBBiEbTaJhtxT7R9IPn9NV2xss/DS0U1WDppwiDvNb5i98ECmqYG4fhB1 # lUDtEJ67OdoxW2X3hgk23WEvDNQkrjvEu/batBEBFmepm77SYdSHvuJoblVcDmYx # TkcX3uyFh8uGSW5m+g7JC8GDMl8/t5oqMMqlkNqPmDMyzJEY4RrjRWvc/IdwT1Lw # M7W3UdBvusoiEZPLPIwzgNzNH9AydlmNPGwiK5x/OI5gOPm4BgqIApb/76D/hZDW # Y4L9D7HULzShuzkvxlXnbG9gHFfr+NsuPBtuzcgqxjU8ubxYHIZnYgThuKk27Apx # aapBpnql+1mC1VWXnkZmX4s70nNwVW/epAtHu0Nmsrapm/Yv86k7kB4jhs9gVbT6 # 7WOSURMhcqU= # SIG # End signature block