Public/Show-Countdown.ps1
<#
.SYNOPSIS Zeigt die Restlaufzeit in einem GUI-Fenster. .EXAMPLE Start-Countdown -Minutes 15 -Title 'Kaffeepause-Ende in' #> function Show-Countdown { [CmdletBinding()] param ( [ValidateRange(1, 525600)] # 1 Minute bis 1 Jahr [decimal]$Minutes = 1, [ValidateLength(3, 50)] [string]$Title = 'Restlaufzeit des Countdowns' ) Add-Type -AssemblyName 'WindowsBase' Add-Type -AssemblyName 'PresentationFramework' Add-Type -AssemblyName 'PresentationCore' $Script:My = [HashTable]::Synchronized(@{}) $Script:My.WindowXaml = @' <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Countdown" WindowStartupLocation="CenterScreen" Height="270" Width="770"> <Viewbox StretchDirection="Both" Stretch="Uniform"> <Grid> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition /> <RowDefinition /> </Grid.RowDefinitions> <TextBlock x:Name="Überschrift" Grid.Row="0" HorizontalAlignment="Center" Margin="50 20" VerticalAlignment="Center" FontFamily="Consolas" FontSize="40" FontWeight="ExtraBold" /> <TextBlock x:Name="CounterText" Grid.Row="1" HorizontalAlignment="Center" Margin="50 20" VerticalAlignment="Center" FontFamily="Consolas" FontSize="40" /> <ProgressBar x:Name="ProgressBar" Grid.Row="2" Background="Transparent" Maximum="100" Margin="50 20" Height="50" /> </Grid> </Viewbox> </Window> '@ $Script:My.Window = [System.Windows.Markup.XamlReader]::Parse($Script:My.WindowXaml) $Script:My.Überschrift = $Script:My.Window.FindName('Überschrift') $Script:My.Überschrift.Text = $Title $Script:My.CounterText = $Script:My.Window.FindName('CounterText') $Script:My.ProgressBar = $Script:My.Window.FindName('ProgressBar') $Script:My.Timer = New-Object -TypeName 'System.Windows.Threading.DispatcherTimer' $Script:My.DauerGesamt = New-TimeSpan -Minutes $Minutes $Script:My.Ende = (Get-Date) + $Script:My.DauerGesamt $Script:My.Window.Add_Loaded({ $Script:My.Timer.Interval = [timespan]::FromSeconds(1) $Script:My.Timer.Add_Tick({ $DauerRest = $Script:My.Ende - (Get-Date) if ($DauerRest.TotalSeconds -le 0) { $Script:My.Timer.Stop() $Script:My.CounterText.Text = '{0:#.##} Minuten sind abgelaufen! ' -f $DauerRest.TotalMinutes } $ZeitAbgelaufenInSekunden = [int]($Script:My.DauerGesamt.TotalSeconds - $DauerRest.TotalSeconds) $ZeitAbgelaufenInProzent = [int]($ZeitAbgelaufenInSekunden / $Script:My.DauerGesamt.TotalSeconds * 100) $CountdownMessage = '{0} Stunden - {1} Minuten - {2} Sekunden' -f $DauerRest.Hours, $DauerRest.Minutes, $DauerRest.Seconds if ($DauerRest.Hours -eq 1) { $CountdownMessage = $CountdownMessage -replace 'Stunden' , 'Stunde' } if ($DauerRest.Minutes -eq 1) { $CountdownMessage = $CountdownMessage -replace 'Minuten' , 'Minute' } if ($DauerRest.Seconds -eq 1) { $CountdownMessage = $CountdownMessage -replace 'Sekunden' , 'Sekunde' } $Script:My.CounterText.Text = $CountdownMessage $Script:My.ProgressBar.Value = $ZeitAbgelaufenInProzent switch ($ZeitAbgelaufenInProzent) { { $_ -ge 0 -and $_ -le 10 } { $Script:My.ProgressBar.Foreground = "Yellow" ; break } { $_ -gt 10 -and $_ -le 20 } { $Script:My.ProgressBar.Foreground = "GreenYellow" ; break } { $_ -gt 20 -and $_ -le 30 } { $Script:My.ProgressBar.Foreground = "YellowGreen" ; break } { $_ -gt 30 -and $_ -le 40 } { $Script:My.ProgressBar.Foreground = "Green" ; break } { $_ -gt 40 -and $_ -le 50 } { $Script:My.ProgressBar.Foreground = "DeepSkyBlue" ; break } { $_ -gt 50 -and $_ -le 60 } { $Script:My.ProgressBar.Foreground = "DodgerBlue" ; break } { $_ -gt 60 -and $_ -le 70 } { $Script:My.ProgressBar.Foreground = "Blue" ; break } { $_ -gt 70 -and $_ -le 80 } { $Script:My.ProgressBar.Foreground = "Orange" ; break } { $_ -gt 80 -and $_ -le 90 } { $Script:My.ProgressBar.Foreground = "OrangeRed" ; break } { $_ -gt 90 } { $Script:My.ProgressBar.Foreground = "Red" ; break } } }) $Script:My.Timer.Start() }) $Script:My.Window.Add_Unloaded({ $Script:My.Timer.Stop() }) $Script:My.Window.Topmost = $true $Script:My.Window.ShowDialog() | Out-Null Remove-Variable -Name My -Scope Script -Force } # SIG # Begin signature block # MIIcYgYJKoZIhvcNAQcCoIIcUzCCHE8CAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDleyTYEgtP2PdU # FedjeHvIYChBCzzFRGzcUyuiz5WXBqCCFn0wggNyMIICWqADAgECAhA8emkJ82H0 # pEx+itPRny0WMA0GCSqGSIb3DQEBDQUAMFExIzAhBgkqhkiG9w0BCQEWFGluZm9A # YXR0aWxha3JpY2suY29tMSowKAYDVQQDDCFBdHRpbGEgS3JpY2sgKFNvZnR3YXJl # IERldmVsb3BlcikwHhcNMjIxMDE2MTg1MTA3WhcNMzIxMDE2MTkwMTA3WjBRMSMw # IQYJKoZIhvcNAQkBFhRpbmZvQGF0dGlsYWtyaWNrLmNvbTEqMCgGA1UEAwwhQXR0 # aWxhIEtyaWNrIChTb2Z0d2FyZSBEZXZlbG9wZXIpMIIBIjANBgkqhkiG9w0BAQEF # AAOCAQ8AMIIBCgKCAQEAvbn3JNw62vDI7mnX6gD+V/MyDkvFSzclaqC3Kfn+wDxj # xkmgwho343N/JCxAUjHoBjNDpx4W3KTVv3X7PYrPHxoz/134JTIBdV+yIyL/VkCS # Mnp9exMhMPxa1RvX3p/zphPMosv7xGgRPF3QVKxoBBUtifql80/pDHvOCPtROZ+9 # xSfXJ6P9jXGH4YSlNJxAKv53AXV0avihpa1BWL6ohyS1Bnjdbcw/hq0TIf4as1Dy # 7IbrU6Fneaqm/XIEEs11I0BrDNwgXnmB8PSojsm/DOtQY5Ps8eGJzwiXP2Vdvk0j # OsqDaJe3cxiOCXk6dz2zylB6rfP+Kph97bjaQoNI2QIDAQABo0YwRDAOBgNVHQ8B # Af8EBAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwMwHQYDVR0OBBYEFKrSiXRUaupI # 5orXIniIR5sTcWwIMA0GCSqGSIb3DQEBDQUAA4IBAQAQ+6LPLF6Ua7JCC9LuwOCG # UlWwawgV/D5wK+FU8PQ+/onwBx9ZBqXnZw4f7NQtqaiR1bwm7sRTZeaIcif57zHM # /WBicYjB9dwZoGylfeCW6LRNQaoBvjuavOTsQw3lYF//ylJV8QyUKloJd9W6CVtm # tBSJEYopjygAm/9E9CxRFPSXxX/G+Af0+G+VeeBjSpaYKO688dVXa7pqMOm6hq9P # Ww6jgiCL3aRk0qbWwl2mt1POcfdRk/rdvt66BcO91cLDKhSCOIp7coJZ8Cf2xHDP # 99NcZ8ct02Cco6qjtlUkrCBRYNsuUAcToTvqQLiSSkywj+jTI4gm0vcjSiVXwnyy # MIIFjTCCBHWgAwIBAgIQDpsYjvnQLefv21DiCEAYWjANBgkqhkiG9w0BAQwFADBl # MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 # d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv # b3QgQ0EwHhcNMjIwODAxMDAwMDAwWhcNMzExMTA5MjM1OTU5WjBiMQswCQYDVQQG # EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl # cnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0G # CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7J # IT3yithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxS # D1Ifxp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb # 7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1ef # VFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoY # OAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSa # M0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI # 8OCiEhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9L # BADMfRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfm # Q6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDr # McXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15Gkv # mB0t9dmpsh3lGwIDAQABo4IBOjCCATYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E # FgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wHwYDVR0jBBgwFoAUReuir/SSy4IxLVGL # p6chnfNtyA8wDgYDVR0PAQH/BAQDAgGGMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF # BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw # Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu # Y3J0MEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9E # aWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwEQYDVR0gBAowCDAGBgRVHSAAMA0G # CSqGSIb3DQEBDAUAA4IBAQBwoL9DXFXnOF+go3QbPbYW1/e/Vwe9mqyhhyzshV6p # Grsi+IcaaVQi7aSId229GhT0E0p6Ly23OO/0/4C5+KH38nLeJLxSA8hO0Cre+i1W # z/n096wwepqLsl7Uz9FDRJtDIeuWcqFItJnLnU+nBgMTdydE1Od/6Fmo8L8vC6bp # 8jQ87PcDx4eo0kxAGTVGamlUsLihVo7spNU96LHc/RzY9HdaXFSMb++hUD38dglo # hJ9vytsgjTVgHAIDyyCwrFigDkBjxZgiwbJZ9VVrzyerbHbObyMt9H5xaiNrIv8S # uFQtJ37YOtnwtoeW/VvRXKwYw02fc7cBqZ9Xql4o4rmUMIIGrjCCBJagAwIBAgIQ # BzY3tyRUfNhHrP0oZipeWzANBgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJVUzEV # MBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29t # MSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMjIwMzIzMDAw # MDAwWhcNMzcwMzIyMjM1OTU5WjBjMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGln # aUNlcnQsIEluYy4xOzA5BgNVBAMTMkRpZ2lDZXJ0IFRydXN0ZWQgRzQgUlNBNDA5 # NiBTSEEyNTYgVGltZVN0YW1waW5nIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A # MIICCgKCAgEAxoY1BkmzwT1ySVFVxyUDxPKRN6mXUaHW0oPRnkyibaCwzIP5WvYR # oUQVQl+kiPNo+n3znIkLf50fng8zH1ATCyZzlm34V6gCff1DtITaEfFzsbPuK4CE # iiIY3+vaPcQXf6sZKz5C3GeO6lE98NZW1OcoLevTsbV15x8GZY2UKdPZ7Gnf2ZCH # RgB720RBidx8ald68Dd5n12sy+iEZLRS8nZH92GDGd1ftFQLIWhuNyG7QKxfst5K # fc71ORJn7w6lY2zkpsUdzTYNXNXmG6jBZHRAp8ByxbpOH7G1WE15/tePc5OsLDni # pUjW8LAxE6lXKZYnLvWHpo9OdhVVJnCYJn+gGkcgQ+NDY4B7dW4nJZCYOjgRs/b2 # nuY7W+yB3iIU2YIqx5K/oN7jPqJz+ucfWmyU8lKVEStYdEAoq3NDzt9KoRxrOMUp # 88qqlnNCaJ+2RrOdOqPVA+C/8KI8ykLcGEh/FDTP0kyr75s9/g64ZCr6dSgkQe1C # vwWcZklSUPRR8zZJTYsg0ixXNXkrqPNFYLwjjVj33GHek/45wPmyMKVM1+mYSlg+ # 0wOI/rOP015LdhJRk8mMDDtbiiKowSYI+RQQEgN9XyO7ZONj4KbhPvbCdLI/Hgl2 # 7KtdRnXiYKNYCQEoAA6EVO7O6V3IXjASvUaetdN2udIOa5kM0jO0zbECAwEAAaOC # AV0wggFZMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFLoW2W1NhS9zKXaa # L3WMaiCPnshvMB8GA1UdIwQYMBaAFOzX44LScV1kTN8uZz/nupiuHA9PMA4GA1Ud # DwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcDCDB3BggrBgEFBQcBAQRrMGkw # JAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcw # AoY1aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZFJv # b3RHNC5jcnQwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybDMuZGlnaWNlcnQu # Y29tL0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5jcmwwIAYDVR0gBBkwFzAIBgZngQwB # BAIwCwYJYIZIAYb9bAcBMA0GCSqGSIb3DQEBCwUAA4ICAQB9WY7Ak7ZvmKlEIgF+ # ZtbYIULhsBguEE0TzzBTzr8Y+8dQXeJLKftwig2qKWn8acHPHQfpPmDI2AvlXFvX # bYf6hCAlNDFnzbYSlm/EUExiHQwIgqgWvalWzxVzjQEiJc6VaT9Hd/tydBTX/6tP # iix6q4XNQ1/tYLaqT5Fmniye4Iqs5f2MvGQmh2ySvZ180HAKfO+ovHVPulr3qRCy # Xen/KFSJ8NWKcXZl2szwcqMj+sAngkSumScbqyQeJsG33irr9p6xeZmBo1aGqwpF # yd/EjaDnmPv7pp1yr8THwcFqcdnGE4AJxLafzYeHJLtPo0m5d2aR8XKc6UsCUqc3 # fpNTrDsdCEkPlM05et3/JWOZJyw9P2un8WbDQc1PtkCbISFA0LcTJM3cHXg65J6t # 5TRxktcma+Q4c6umAU+9Pzt4rUyt+8SVe+0KXzM5h0F4ejjpnOHdI/0dKNPH+ejx # mF/7K9h+8kaddSweJywm228Vex4Ziza4k9Tm8heZWcpw8De/mADfIBZPJ/tgZxah # ZrrdVcA6KYawmKAr7ZVBtzrVFZgxtGIJDwq9gdkT/r+k0fNX2bwE+oLeMt8EifAA # zV3C+dAjfwAL5HYCJtnwZXZCpimHCUcr5n8apIUP/JiW9lVUKx+A+sDyDivl1vup # L0QVSucTDh3bNzgaoSv27dZ8/DCCBsAwggSooAMCAQICEAxNaXJLlPo8Kko9KQeA # PVowDQYJKoZIhvcNAQELBQAwYzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lD # ZXJ0LCBJbmMuMTswOQYDVQQDEzJEaWdpQ2VydCBUcnVzdGVkIEc0IFJTQTQwOTYg # U0hBMjU2IFRpbWVTdGFtcGluZyBDQTAeFw0yMjA5MjEwMDAwMDBaFw0zMzExMjEy # MzU5NTlaMEYxCzAJBgNVBAYTAlVTMREwDwYDVQQKEwhEaWdpQ2VydDEkMCIGA1UE # AxMbRGlnaUNlcnQgVGltZXN0YW1wIDIwMjIgLSAyMIICIjANBgkqhkiG9w0BAQEF # AAOCAg8AMIICCgKCAgEAz+ylJjrGqfJru43BDZrboegUhXQzGias0BxVHh42bbyS # VQxh9J0Jdz0Vlggva2Sk/QaDFteRkjgcMQKW+3KxlzpVrzPsYYrppijbkGNcvYlT # 4DotjIdCriak5Lt4eLl6FuFWxsC6ZFO7KhbnUEi7iGkMiMbxvuAvfTuxylONQIMe # 58tySSgeTIAehVbnhe3yYbyqOgd99qtu5Wbd4lz1L+2N1E2VhGjjgMtqedHSEJFG # Kes+JvK0jM1MuWbIu6pQOA3ljJRdGVq/9XtAbm8WqJqclUeGhXk+DF5mjBoKJL6c # qtKctvdPbnjEKD+jHA9QBje6CNk1prUe2nhYHTno+EyREJZ+TeHdwq2lfvgtGx/s # K0YYoxn2Off1wU9xLokDEaJLu5i/+k/kezbvBkTkVf826uV8MefzwlLE5hZ7Wn6l # JXPbwGqZIS1j5Vn1TS+QHye30qsU5Thmh1EIa/tTQznQZPpWz+D0CuYUbWR4u5j9 # lMNzIfMvwi4g14Gs0/EH1OG92V1LbjGUKYvmQaRllMBY5eUuKZCmt2Fk+tkgbBhR # YLqmgQ8JJVPxvzvpqwcOagc5YhnJ1oV/E9mNec9ixezhe7nMZxMHmsF47caIyLBu # MnnHC1mDjcbu9Sx8e47LZInxscS451NeX1XSfRkpWQNO+l3qRXMchH7XzuLUOncC # AwEAAaOCAYswggGHMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMBYGA1Ud # JQEB/wQMMAoGCCsGAQUFBwMIMCAGA1UdIAQZMBcwCAYGZ4EMAQQCMAsGCWCGSAGG # /WwHATAfBgNVHSMEGDAWgBS6FtltTYUvcyl2mi91jGogj57IbzAdBgNVHQ4EFgQU # Yore0GH8jzEU7ZcLzT0qlBTfUpwwWgYDVR0fBFMwUTBPoE2gS4ZJaHR0cDovL2Ny # bDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0UlNBNDA5NlNIQTI1NlRp # bWVTdGFtcGluZ0NBLmNybDCBkAYIKwYBBQUHAQEEgYMwgYAwJAYIKwYBBQUHMAGG # GGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBYBggrBgEFBQcwAoZMaHR0cDovL2Nh # Y2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZEc0UlNBNDA5NlNIQTI1 # NlRpbWVTdGFtcGluZ0NBLmNydDANBgkqhkiG9w0BAQsFAAOCAgEAVaoqGvNG83hX # NzD8deNP1oUj8fz5lTmbJeb3coqYw3fUZPwV+zbCSVEseIhjVQlGOQD8adTKmyn7 # oz/AyQCbEx2wmIncePLNfIXNU52vYuJhZqMUKkWHSphCK1D8G7WeCDAJ+uQt1wmJ # efkJ5ojOfRu4aqKbwVNgCeijuJ3XrR8cuOyYQfD2DoD75P/fnRCn6wC6X0qPGjpS # tOq/CUkVNTZZmg9U0rIbf35eCa12VIp0bcrSBWcrduv/mLImlTgZiEQU5QpZomvn # Ij5EIdI/HMCb7XxIstiSDJFPPGaUr10CU+ue4p7k0x+GAWScAMLpWnR1DT3heYi/ # HAGXyRkjgNc2Wl+WFrFjDMZGQDvOXTXUWT5Dmhiuw8nLw/ubE19qtcfg8wXDWd8n # YiveQclTuf80EGf2JjKYe/5cQpSBlIKdrAqLxksVStOYkEVgM4DgI974A6T2RUfl # zrgDQkfoQTZxd639ouiXdE4u2h4djFrIHprVwvDGIqhPm73YHJpRxC+a9l+nJ5e6 # li6FV8Bg53hWf2rvwpWaSxECyIKcyRoFfLpxtU56mWz06J7UWpjIn7+NuxhcQ/XQ # KujiYu54BNu90ftbCqhwfvCXhHjjCANdRyxjqCU4lwHSPzra5eX25pvcfizM/xdM # TQCi2NYBDriL7ubgclWJLCcZYfZ3AYwxggU7MIIFNwIBATBlMFExIzAhBgkqhkiG # 9w0BCQEWFGluZm9AYXR0aWxha3JpY2suY29tMSowKAYDVQQDDCFBdHRpbGEgS3Jp # Y2sgKFNvZnR3YXJlIERldmVsb3BlcikCEDx6aQnzYfSkTH6K09GfLRYwDQYJYIZI # AWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkqhkiG9w0B # CQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAv # BgkqhkiG9w0BCQQxIgQguXQLkNdraH8u+xas1NhTVdpScNc0qbm77BL2TYaVBiUw # DQYJKoZIhvcNAQEBBQAEggEAhRLD2VoAIFXmfUl2qD9gV7xex/5vB4DLwOuxlueY # hq6/AFXMLXyCuAYYG+jJWfy1Bd5tOiX0bNCT8ryRM56QfuafIC3676WQdKYAHMpt # tP2lPbi/98Wh/+AkcbNqPiDjVYjX8wHkhUTviEP0JQrUDjWWaA9cUf11jVxcXt1v # mcVUc4o6Y2u4zCHM/aTAp5LImX6X9LABbF0NNbiaJyYx/KG4Eh/uOE4w4fn5Mn67 # Tr9ePng1bB54Gcd4fAcQYvaamdromLDMh6y5IcO0YSbWwlP42nyjGcOQpIriImuz # CIbM/l7ASAvLAI/BHxM3xRmRd8CNNyi2FIG7d/7Uym8hx6GCAyAwggMcBgkqhkiG # 9w0BCQYxggMNMIIDCQIBATB3MGMxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdp # Q2VydCwgSW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgVHJ1c3RlZCBHNCBSU0E0MDk2 # IFNIQTI1NiBUaW1lU3RhbXBpbmcgQ0ECEAxNaXJLlPo8Kko9KQeAPVowDQYJYIZI # AWUDBAIBBQCgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJ # BTEPFw0yMzAyMDgyMTM1MjNaMC8GCSqGSIb3DQEJBDEiBCC4CE3hbh2uqz9A2vXo # siSVEn/WoA+YpNlXkitKF2q6RzANBgkqhkiG9w0BAQEFAASCAgAUo5roK1cNWAoM # fpQCjewGblj0Wd3WhcVigWz/2VJAs76fgmdbqircsB2xuGgP60UUUpgEnJPxpzqE # /DqYMKR/lmk5saCBf9LcOAG2JAaN62kCuxhhTi1Z3bjmu4fqabqB/Hq3gXWHvEZa # 4clqspTTQtvJ9dw8rXzzFjH014CSigMjgqnLB8TmNpI4v0YsrM8FjjAjZcnHf0st # Pi53dAnDjvEoExLAqnT+8P99G2ahlBXTr/VLZ5fHF2Wit9AW/uRVWsiPpLyfR0AT # QpXQ/QaAHXPGlwOdLdBNUXVJg2vlbCtVLaBTs6HFbmYfJFWWe99vws2XYC0B4the # IrZTF48cf59q2QqY4bfPaoCTRGsUx1dyXU23Sasis4SlkOJe/KQfYWLlYeWdtZPu # thQLDH3wZyjqqEbre1PckoL12Fl2LOqn00fxYuRL1KDdzxO0UGz5yNWfmhu7MA4S # TgEAwMIyUD0U3eog8PFxfLp4P/jAS9XGpjPyNxwJ69TCzQOu+FUxaAvFH9Bh5Lju # uSRKRc3c2E7yoCMVXlg7TthuyIGl2/rq8jm8KklnpaboUEwaaaqxpCvPLKlhDmbD # MMAz+MFiaWXMugXhjFK4Y1sBdSX8hl1/LL7Bo74Dmb1UPhiyyttmg6Xb9uux4QMp # NYBnNHy/uOdHpa0/2if9hN3hoyUHKg== # SIG # End signature block |