File: C:/Program Files (x86)/WindowsPowerShell/Modules/Pester/3.4.0/Functions/SetupTeardown.Tests.ps1
Describe 'Describe-Scoped Test Case setup' {
BeforeEach {
$testVariable = 'From BeforeEach'
}
$testVariable = 'Set in Describe'
It 'Assigns the correct value in first test' {
$testVariable | Should Be 'From BeforeEach'
$testVariable = 'Set in It'
}
It 'Assigns the correct value in subsequent tests' {
$testVariable | Should Be 'From BeforeEach'
}
}
Describe 'Context-scoped Test Case setup' {
$testVariable = 'Set in Describe'
Context 'The context' {
BeforeEach {
$testVariable = 'From BeforeEach'
}
It 'Assigns the correct value inside the context' {
$testVariable | Should Be 'From BeforeEach'
}
}
It 'Reports the original value after the Context' {
$testVariable | Should Be 'Set in Describe'
}
}
Describe 'Multiple Test Case setup blocks' {
$testVariable = 'Set in Describe'
BeforeEach {
$testVariable = 'Set in Describe BeforeEach'
}
Context 'The context' {
It 'Executes Describe setup blocks first, then Context blocks in the order they were defined (even if they are defined after the It block.)' {
$testVariable | Should Be 'Set in the second Context BeforeEach'
}
BeforeEach {
$testVariable = 'Set in the first Context BeforeEach'
}
BeforeEach {
$testVariable = 'Set in the second Context BeforeEach'
}
}
It 'Continues to execute Describe setup blocks after the Context' {
$testVariable | Should Be 'Set in Describe BeforeEach'
}
}
Describe 'Describe-scoped Test Case teardown' {
$testVariable = 'Set in Describe'
AfterEach {
$testVariable = 'Set in AfterEach'
}
It 'Does not modify the variable before the first test' {
$testVariable | Should Be 'Set in Describe'
}
It 'Modifies the variable after the first test' {
$testVariable | Should Be 'Set in AfterEach'
}
}
Describe 'Multiple Test Case teardown blocks' {
$testVariable = 'Set in Describe'
AfterEach {
$testVariable = 'Set in Describe AfterEach'
}
Context 'The context' {
AfterEach {
$testVariable = 'Set in the first Context AfterEach'
}
It 'Performs a test in Context' { "some output to prevent the It being marked as Pending and failing because of Strict mode"}
It 'Executes Describe teardown blocks after Context teardown blocks' {
$testVariable | Should Be 'Set in the second Describe AfterEach'
}
}
AfterEach {
$testVariable = 'Set in the second Describe AfterEach'
}
}
$script:DescribeBeforeAllCounter = 0
$script:DescribeAfterAllCounter = 0
$script:ContextBeforeAllCounter = 0
$script:ContextAfterAllCounter = 0
Describe 'Test Group Setup and Teardown' {
It 'Executed the Describe BeforeAll regardless of definition order' {
$script:DescribeBeforeAllCounter | Should Be 1
}
It 'Did not execute any other block yet' {
$script:DescribeAfterAllCounter | Should Be 0
$script:ContextBeforeAllCounter | Should Be 0
$script:ContextAfterAllCounter | Should Be 0
}
BeforeAll {
$script:DescribeBeforeAllCounter++
}
AfterAll {
$script:DescribeAfterAllCounter++
}
Context 'Context scoped setup and teardown' {
BeforeAll {
$script:ContextBeforeAllCounter++
}
AfterAll {
$script:ContextAfterAllCounter++
}
It 'Executed the Context BeforeAll block' {
$script:ContextBeforeAllCounter | Should Be 1
}
It 'Has not executed any other blocks yet' {
$script:DescribeBeforeAllCounter | Should Be 1
$script:DescribeAfterAllCounter | Should Be 0
$script:ContextAfterAllCounter | Should Be 0
}
}
It 'Executed the Context AfterAll block' {
$script:ContextAfterAllCounter | Should Be 1
}
}
Describe 'Finishing TestGroup Setup and Teardown tests' {
It 'Executed each Describe and Context group block once' {
$script:DescribeBeforeAllCounter | Should Be 1
$script:DescribeAfterAllCounter | Should Be 1
$script:ContextBeforeAllCounter | Should Be 1
$script:ContextAfterAllCounter | Should Be 1
}
}
if ($PSVersionTable.PSVersion.Major -ge 3)
{
$thisTestScriptFilePath = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($PSCommandPath)
Describe 'Script Blocks and file association (testing automatic variables)' {
BeforeEach {
$commandPath = $PSCommandPath
}
$beforeEachBlock = InModuleScope Pester {
$pester.BeforeEach[0].ScriptBlock
}
It 'Creates script block objects associated with the proper file' {
$scriptBlockFilePath = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($beforeEachBlock.File)
$scriptBlockFilePath | Should Be $thisTestScriptFilePath
}
It 'Has the correct automatic variable values inside the BeforeEach block' {
$commandPath | Should Be $PSCommandPath
}
}
}
#Testing if failing setup or teardown will fail 'It' is done in the TestsRunningInCleanRunspace.Tests.ps1 file
# SIG # Begin signature block
# MIInYQYJKoZIhvcNAQcCoIInUjCCJ04CAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAuMr2lGMekvHLf
# +pJ03VWUau1QIy87P40nhLpns6ETnKCCC7QwggXLMIIEs6ADAgECAhMzAAABQGf2
# 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
# GwMwghr/AgEBMIGmMIGOMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv
# bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0
# aW9uMTgwNgYDVQQDEy9NaWNyb3NvZnQgV2luZG93cyBUaGlyZCBQYXJ0eSBDb21w
# b25lbnQgQ0EgMjAxMgITMwAAAUBn9phrMQi4cgAAAAABQDANBglghkgBZQMEAgEF
# AKCB+jAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAvBgkqhkiG9w0BCQQxIgQg
# t/ThmHMA36xthBAcvt1/04eG3bCXqC+or9whkYtTR58wUAYKKwYBBAGCNwoDHDFC
# DEA0MjdCQkJCMEUzQkQzNUYwMjgxNjRFRjdDNEI0REY3NUJBNzM1REU4M0NGQzg2
# Mzg2MEU4NkRBRDk1RDI0ODA4MFoGCisGAQQBgjcCAQwxTDBKoCSAIgBNAGkAYwBy
# AG8AcwBvAGYAdAAgAFcAaQBuAGQAbwB3AHOhIoAgaHR0cDovL3d3dy5taWNyb3Nv
# ZnQuY29tL3dpbmRvd3MwDQYJKoZIhvcNAQEBBQAEggGAdlt5tnX3dRurtIrL0nxm
# DG9zn7E6MrSZjRGhlvZ6YOmTeLHTKQzj/fW5/k5KGOQhkDhzM3mexm+PNR/ALT9V
# lzTcUGqhE2Uru6x0FRXkf5UomYINRYK9/DFhAeJRagqMEZbroR00ThA4yYyZINSi
# KuF5gW7jVLbw67LonF/UV8cRjL1IekBFbP6QUqk/utlwHNjBHbLEfBx1VaqVZExi
# IIqWwtfmvrfVdplnpHuoeHDbBGLlrw5qHspyQc/AJqpk8khLzXUHoTULLXNROQwa
# rGoaXl7HouSYSZkS0pekopdBLEgyqzfIxCAsAmCHVmOtTGv7nfNBiwY/ZW3JcVCG
# Pjiaxs5jyazIGP1ByOZetoD6InHY2kEdNXLzLg5m/7fFdXcsS2ik+OezScbEggE+
# hVAY5xNR//QYtcmeV02R8ySq9StZjcktR9mJ86/WBC7tujjqB/y+Ws6thnThGTNu
# enVBsMw/WgpNuGM/+VT3yaZZvLZtGK/JPmIn6+/aVdLFoYIXsDCCF6wGCisGAQQB
# gjcDAwExghecMIIXmAYJKoZIhvcNAQcCoIIXiTCCF4UCAQMxDzANBglghkgBZQME
# AgEFADCCAVoGCyqGSIb3DQEJEAEEoIIBSQSCAUUwggFBAgEBBgorBgEEAYRZCgMB
# MDEwDQYJYIZIAWUDBAIBBQAEIH8WISckT7HIIUb4vX5Nm1q5B7JSoYfz6EBg5MlA
# ANA2AgZqiPS5sd4YEzIwMjYwOTA1MjI0MzI1LjMzM1owBIACAfSggdmkgdYwgdMx
# CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt
# b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xLTArBgNVBAsTJE1p
# Y3Jvc29mdCBJcmVsYW5kIE9wZXJhdGlvbnMgTGltaXRlZDEnMCUGA1UECxMeblNo
# aWVsZCBUU1MgRVNOOjRDMUEtMDVFMC1EOTQ3MSUwIwYDVQQDExxNaWNyb3NvZnQg
# VGltZS1TdGFtcCBTZXJ2aWNloIIR/jCCBygwggUQoAMCAQICEzMAAAIYJdmSBeLn
# 5eQAAQAAAhgwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
# Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m
# dCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENB
# IDIwMTAwHhcNMjUwODE0MTg0ODI1WhcNMjYxMTEzMTg0ODI1WjCB0zELMAkGA1UE
# BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc
# BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0
# IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMScwJQYDVQQLEx5uU2hpZWxkIFRT
# UyBFU046NEMxQS0wNUUwLUQ5NDcxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0
# YW1wIFNlcnZpY2UwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCx3Ojq
# 65AmoB/Eue8QF8i+PqScr6npucxcQVn9CM84XLCVyMN/MjwODWfMOXGbv+mpu+Na
# HK9rMqYXI7qps/AKV9GcjnuHk4KLGCk44IYklAhlJOIyC6LcHwM+IW0k9x/NG3cW
# yfGMtfAEiMaCeMZ+ZCXvN6MDVahgv+oGZCHD8UMVNZ5vF+jibREII7F/arCPfVo6
# NzZphR4+0sxcexco8UfS2nlIogX/20nFFKDQ1gS9CpWKWN7xpCQ93erMC7HYxzkc
# xIrg0xO1VUJgBYNRnin7qIMj23kE0IEix/migU1Ra3EKqekViItiQd8V/GFVQFnw
# sYbFiwDfqycPrmzYd/i3zqTR7xZ6Uf+6x+Fio4zfPbJojyuDTzrfUiTCpTPJCgQ+
# oyweAF6bXGmY4ZIhSdW9OwC/6WYQIvZGqtw5mVlrHwrRqKKPyHpSRYE3YgD+KRpy
# RNIZVEFCZZZm4sVZX9PjG43OxwLRfvGjh962CmypoQDSNj9B6+RO8u/g6U03144v
# ws2HtWbRHrk/uhps5AOq1QUDAKCOA8nSJX+NAJowBw7dJikbnBIBiImSThcuM1KU
# 3FTYh2OzWw5GGXuzssLqE5vttUAdXA43vgbF8U2IQgDoF+50A2OlAnSdRz+mkRel
# PimAMEexi1Xw7IpKMqwjE50VHt8gkiMNzwO9SQIDAQABo4IBSTCCAUUwHQYDVR0O
# BBYEFCQuocRcOhtjt0e6hAIFrixftovRMB8GA1UdIwQYMBaAFJ+nFV0AXmJdg/Tl
# 0mWnG1M1GelyMF8GA1UdHwRYMFYwVKBSoFCGTmh0dHA6Ly93d3cubWljcm9zb2Z0
# LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMFRpbWUtU3RhbXAlMjBQQ0ElMjAy
# MDEwKDEpLmNybDBsBggrBgEFBQcBAQRgMF4wXAYIKwYBBQUHMAKGUGh0dHA6Ly93
# d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwVGltZS1T
# dGFtcCUyMFBDQSUyMDIwMTAoMSkuY3J0MAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/
# BAwwCgYIKwYBBQUHAwgwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IC
# AQCeSNGGPA+B2gim+3hiKhP+PQta4HEXcBEEpcMQ2CCtoq8LShE/BuMCaxec8Sa2
# 6jkwPy4n1fD15ivGqqQrgMX2ydkyscx+ijEJr77WKsvPxiijMLi1yL5rg3ftJuR7
# Wm3XGz2pm2+Q+BkZafkFzBV+YDBJkseLYK5nTpjT9f63p80GetsxWi81oNfhY93I
# j0YTPF8iCAOxyTYimjhVcv8CtzPunYXtsRkZG7LGOAwL7CgKQMlof/KT/BxmkCyL
# F7g8503QNbplvfk7cODf5rqmsA0xzdYh298oOXvk/RqpxBtABHtvR/iAfg0yRRy3
# RabgY3kqGwTVgrtX/ACoMqYriPHfMvPdrwezFr0cHcbKK2WYLmwOE6XhBMY3mRGL
# qgKhXiEr6QgWCeRaMeFJE2ibPfpCdsJIb8EcsSbYZFT27f8jjNR30TUAL3sgkQZ/
# Bv7Q1ZvdARyuTKl0Z1bCXQsQ5uGtBH0HVXv551zI2axfSnYFfSsWl3U+RclJvF/w
# hwSLD9uQ2BqBkT5WUO3Fd6u4t2jmTeUY6/us9i44RqhljEO9m2kc/0/frCZbgg2N
# Ho0iefZQz6Ss//F4udFsMGSb1GyWegOFWtqWIoMfrYHGFyAv22JGA4eVwjTCq9VY
# t2/zJbyvGRrA6WEJGpPcQoQJbyS1QA/A1sFQuRP6hZy8FzCCB3EwggVZoAMCAQIC
# EzMAAAAVxedrngKbSZkAAAAAABUwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYT
# AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD
# VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBS
# b290IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTIxMDkzMDE4MjIyNVoX
# DTMwMDkzMDE4MzIyNVowfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0
# b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh
# dGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwggIi
# MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDk4aZM57RyIQt5osvXJHm9DtWC
# 0/3unAcH0qlsTnXIyjVX9gF/bErg4r25PhdgM/9cT8dm95VTcVrifkpa/rg2Z4VG
# Iwy1jRPPdzLAEBjoYH1qUoNEt6aORmsHFPPFdvWGUNzBRMhxXFExN6AKOG6N7dcP
# 2CZTfDlhAnrEqv1yaa8dq6z2Nr41JmTamDu6GnszrYBbfowQHJ1S/rboYiXcag/P
# XfT+jlPP1uyFVk3v3byNpOORj7I5LFGc6XBpDco2LXCOMcg1KL3jtIckw+DJj361
# VI/c+gVVmG1oO5pGve2krnopN6zL64NF50ZuyjLVwIYwXE8s4mKyzbnijYjklqwB
# Sru+cakXW2dg3viSkR4dPf0gz3N9QZpGdc3EXzTdEonW/aUgfX782Z5F37ZyL9t9
# X4C626p+Nuw2TPYrbqgSUei/BQOj0XOmTTd0lBw0gg/wEPK3Rxjtp+iZfD9M269e
# wvPV2HM9Q07BMzlMjgK8QmguEOqEUUbi0b1qGFphAXPKZ6Je1yh2AuIzGHLXpyDw
# wvoSCtdjbwzJNmSLW6CmgyFdXzB0kZSU2LlQ+QuJYfM2BjUYhEfb3BvR/bLUHMVr
# 9lxSUV0S2yW6r1AFemzFER1y7435UsSFF5PAPBXbGjfHCBUYP3irRbb1Hode2o+e
# FnJpxq57t7c+auIurQIDAQABo4IB3TCCAdkwEgYJKwYBBAGCNxUBBAUCAwEAATAj
# BgkrBgEEAYI3FQIEFgQUKqdS/mTEmr6CkTxGNSnPEP8vBO4wHQYDVR0OBBYEFJ+n
# FV0AXmJdg/Tl0mWnG1M1GelyMFwGA1UdIARVMFMwUQYMKwYBBAGCN0yDfQEBMEEw
# PwYIKwYBBQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvRG9j
# cy9SZXBvc2l0b3J5Lmh0bTATBgNVHSUEDDAKBggrBgEFBQcDCDAZBgkrBgEEAYI3
# FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAf
# BgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvXzpoYxDBWBgNVHR8ETzBNMEugSaBH
# hkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNS
# b29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUF
# BzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0Nl
# ckF1dF8yMDEwLTA2LTIzLmNydDANBgkqhkiG9w0BAQsFAAOCAgEAnVV9/Cqt4Swf
# ZwExJFvhnnJL/Klv6lwUtj5OR2R4sQaTlz0xM7U518JxNj/aZGx80HU5bbsPMeTC
# j/ts0aGUGCLu6WZnOlNN3Zi6th542DYunKmCVgADsAW+iehp4LoJ7nvfam++Kctu
# 2D9IdQHZGN5tggz1bSNU5HhTdSRXud2f8449xvNo32X2pFaq95W2KFUn0CS9QKC/
# GbYSEhFdPSfgQJY4rPf5KYnDvBewVIVCs/wMnosZiefwC2qBwoEZQhlSdYo2wh3D
# YXMuLGt7bj8sCXgU6ZGyqVvfSaN0DLzskYDSPeZKPmY7T7uG+jIa2Zb0j/aRAfbO
# xnT99kxybxCrdTDFNLB62FD+CljdQDzHVG2dY3RILLFORy3BFARxv2T5JL5zbcqO
# Cb2zAVdJVGTZc9d/HltEAY5aGZFrDZ+kKNxnGSgkujhLmm77IVRrakURR6nxt67I
# 6IleT53S0Ex2tVdUCbFpAUR+fKFhbHP+CrvsQWY9af3LwUFJfn6Tvsv4O+S3Fb+0
# zj6lMVGEvL8CwYKiexcdFYmNcP7ntdAoGokLjzbaukz5m/8K6TT4JDVnK+ANuOaM
# mdbhIurwJ0I9JZTmdHRbatGePu1+oDEzfbzL6Xu/OHBE0ZDxyKs6ijoIYn/ZcGNT
# TY3ugm2lBRDBcQZqELQdVTNYs6FwZvKhggNZMIICQQIBATCCAQGhgdmkgdYwgdMx
# CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt
# b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xLTArBgNVBAsTJE1p
# Y3Jvc29mdCBJcmVsYW5kIE9wZXJhdGlvbnMgTGltaXRlZDEnMCUGA1UECxMeblNo
# aWVsZCBUU1MgRVNOOjRDMUEtMDVFMC1EOTQ3MSUwIwYDVQQDExxNaWNyb3NvZnQg
# VGltZS1TdGFtcCBTZXJ2aWNloiMKAQEwBwYFKw4DAhoDFQCda0atdaK40TxCsp+b
# gK0avnvP6aCBgzCBgKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5n
# dG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y
# YXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwMA0G
# CSqGSIb3DQEBCwUAAgUA7kaPaTAiGA8yMDI2MDkwNTEyNTQwMVoYDzIwMjYwOTA2
# MTI1NDAxWjB3MD0GCisGAQQBhFkKBAExLzAtMAoCBQDuRo9pAgEAMAoCAQACAgXH
# AgH/MAcCAQACAhOXMAoCBQDuR+DpAgEAMDYGCisGAQQBhFkKBAIxKDAmMAwGCisG
# AQQBhFkKAwKgCjAIAgEAAgMHoSChCjAIAgEAAgMBhqAwDQYJKoZIhvcNAQELBQAD
# ggEBAHyDRO9JSnOlmHYe7T0J/W2cFRG3e8mQtDr/ONMGqiZHZmQeYVBP1Tw0aFJl
# SCqCGT8g3o7vC1JzxakH5MSFUW0zwMmAPXyjuVovo5WD1HLATvEDN3a2H15oahQt
# g6f6yeV5w3BKyvUe67J013VDDw2c7GzCDSFSaG9+/kyhZDm96DRmzBMNP2xGxNPZ
# sOKT35f4FcA6mH7Zo7/kQlcNpB80nPHWEmgJ8GwiQR+aVdPQNDnmldHONtH3PGZo
# x7l7AztSp0cFyezr+uCvXjwzJl+Sx/qOpONx7L105pIfzgJpxbRt5B6r8wuyuSd5
# CWhZb8KYjPvGFdyZGLzQTpKN9kUxggQNMIIECQIBATCBkzB8MQswCQYDVQQGEwJV
# UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UE
# ChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGlt
# ZS1TdGFtcCBQQ0EgMjAxMAITMwAAAhgl2ZIF4ufl5AABAAACGDANBglghkgBZQME
# AgEFAKCCAUowGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMC8GCSqGSIb3DQEJ
# BDEiBCBN2jAbk1iAtT+fzbwwJd14mtiusZ8zVnZst2PkxrlzJjCB+gYLKoZIhvcN
# AQkQAi8xgeowgecwgeQwgb0EIJkT3Im45Mi0jBZoRLqXMYorVdxKjPXKdHNo5XPH
# 14VqMIGYMIGApH4wfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x
# EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
# bjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTACEzMAAAIY
# JdmSBeLn5eQAAQAAAhgwIgQgjbQb07YdUESQp4FERT5zy3vYAyahwnnV8Bz6ARxR
# DoUwDQYJKoZIhvcNAQELBQAEggIAYY0QF8Ldy5A3WGOJ2zEzxboZ8ruzrHGVox+f
# QmQYyWAmcMyBPHf5YNiUrkVEJaeT7XYzG4Cqa96IHBvQ2FHmOaCuO+CWnbnzKR+5
# 4lCZBIcN5dlSoEyc6hmHAVCKM/X2afce+nq2s5fAvmXJxgGCoj/dD+WnpWLcqJ/Q
# PjUP8ml3MplQYhzecJzZlmOum6QtJ2Db5CqpPvncBX15drhuuDol3QLOBKOeaA3O
# 5MWPbc1HnAW4vyEPrNqxo+NlEIZf2cmXRSzAq4qmNECQ4I6UdqO21JvC/4aLKtTc
# br4hxLEVyVBh/G3h2kEcfWoL4fz2I4TL9lfQjPWcPd6rqRgN98GM85l7r3JO3wa3
# CCFErxSarwqG5k57bxznAD0S2z8owmuFaPPv1ADA2aZILyAMX6QlCkrmhhvABDFD
# aD6qnu984iYfhNEKynNWgnXRTNFBmccM6SELReUcb7LnO14JHJhh+uGicX6ejVBO
# AclEUXhtF4op4fCF8ecSs9lwau+17E1d8S8N/7ZBccTffjBXT7XnGz+Xofr502qn
# Glvcquwl0TY66B1i005zF/0VmYEJjY9X+4doeUCXye822NbmVkUWpjeub0P+/Vms
# aVwpCvqlgeA/UiJGtPwr3j9hYnZZWCItzOudX74lXYJ9nvnHQ67UEzFiE9a7N+yN
# kvvUn7E=
# SIG # End signature block