Out-Message.ps1

function Out-Message {
<#
 
.SYNOPSIS
Logs a message to default message log target.
 
 
.DESCRIPTION
Logs a message to default message log target.
 
Logs a message in SYSLOG style to a defined autoselected log target in a synchronous way.
 
 
.OUTPUTS
This Cmdlet does not return a parameter.
 
 
.PARAMETER path
A SYSLOG severity. Default Informational (16).
 
 
.PARAMETER facility
A SYSLOG facility. Default LOCAL0 (16).
 
 
.EXAMPLE
Out-Message 16 6 "function-name" "Message string"
 
Logs a message to with facility := LOCAL0 and severity := Info
 
 
.EXAMPLE
Out-Message 16 6 "function-name" "Message string"
 
 
Logs a message to with facility := LOCAL0 and severity := Info
 
 
.EXAMPLE
Out-Message -Facility 16 -Severity 6 -FunctionName "function-name" -Message "Message string"
 
 
Logs a message to with facility := LOCAL0 and severity := Informational. Full parameter names are specified.
 
 
.LINK
http://dfch.biz/biz/dfch/PS/System/Logging/Out-Message/
 
 
 
.NOTES
This is a wrapper around the Apache 2.0 LOG4NET library.
 
#>


[CmdletBinding(
    HelpURI = 'http://dfch.biz/biz/dfch/PS/System/Logging/Out-Message/'
)]

Param (
        [Parameter(Mandatory = $true)]
        [alias("sev")]
        [ValidateRange(0,7)]
        [int] $Severity = $(throw("You must specify a severity level.")), 
        [Parameter(Mandatory = $true)]
        [alias("fn")]
        [string] $FunctionName = $(throw("You must specify a function name for logging.")), 
        [Parameter(Mandatory = $true)]
        [alias("msg")]
        [string] $Message = $(throw("You must specify a message string for logging.")), 
        [Parameter(Mandatory = $false)]
        [alias("fac")]
        [ValidateRange(0,23)]
        [int] $Facility = 0
)

PROCESS 
{
            try 
            {
                # Translate input parameters to strings
                [string] $FacilityString = $aFacility[$Facility];
                [string] $SeverityString = $aSeverity[$Severity];

                # Return if file logging option is not set
                if($true -ne $biz_dfch_PS_System_Logging.FileLogging) 
                {
                    return;
                }
        
                [string] $sFileMessageFormat = "{0}|{1}|{2}|{3}|{4}|{5}";
                switch($Severity) 
                {
                    $SysLogSeverity_EMERGENCY 
                    {
                        $biz_dfch_PS_System_Logging.Escalated.FatalFormat($sFileMessageFormat, $SeverityString, $Host.InstanceId, $biz_dfch_PS_System_Logging.EventSource, $FacilityString, $FunctionName, $Message);
                    }
                    $SysLogSeverity_CRITICAL 
                    {
                        $biz_dfch_PS_System_Logging.Escalated.FatalFormat($sFileMessageFormat, $SeverityString, $Host.InstanceId, $biz_dfch_PS_System_Logging.EventSource, $FacilityString, $FunctionName, $Message);
                    }
                    $SysLogSeverity_ALERT 
                    {
                        $biz_dfch_PS_System_Logging.Escalated.FatalFormat($sFileMessageFormat, $SeverityString, $Host.InstanceId, $biz_dfch_PS_System_Logging.EventSource, $FacilityString, $FunctionName, $Message);
                    }
                    $SysLogSeverity_ERROR 
                    {
                        $biz_dfch_PS_System_Logging.Logger.ErrorFormat($sFileMessageFormat, $SeverityString, $Host.InstanceId, $biz_dfch_PS_System_Logging.EventSource, $FacilityString, $FunctionName, $Message);
                    }
                    $SysLogSeverity_WARN 
                    {
                        $biz_dfch_PS_System_Logging.Logger.WarnFormat($sFileMessageFormat, $SeverityString, $Host.InstanceId, $biz_dfch_PS_System_Logging.EventSource, $FacilityString, $FunctionName, $Message);
                    }
                    $SysLogSeverity_NOTICE 
                    {
                        $biz_dfch_PS_System_Logging.Logger.InfoFormat($sFileMessageFormat, $SeverityString, $Host.InstanceId, $biz_dfch_PS_System_Logging.EventSource, $FacilityString, $FunctionName, $Message);
                    }
                    $SysLogSeverity_INFO 
                    {
                        $biz_dfch_PS_System_Logging.Logger.DebugFormat($sFileMessageFormat, $SeverityString, $Host.InstanceId, $biz_dfch_PS_System_Logging.EventSource, $FacilityString, $FunctionName, $Message);
                    }
                    $SysLogSeverity_DEBUG 
                    {
                        $biz_dfch_PS_System_Logging.Logger.DebugFormat($sFileMessageFormat, $SeverityString, $Host.InstanceId, $biz_dfch_PS_System_Logging.EventSource, $FacilityString, $FunctionName, $Message);
                    }
                    default 
                    {
                        $biz_dfch_PS_System_Logging.Logger.DebugFormat($sFileMessageFormat, $SeverityString, $Host.InstanceId, $biz_dfch_PS_System_Logging.EventSource, $FacilityString, $FunctionName, $Message);
                    }
                }
            }
            catch 
            {
                Write-Verbose "catch ALL";
                Write-Verbose $_.Exception.Message;
                $error
            }
            finally 
            {
                # N/A
            }
}

} # function
if($MyInvocation.ScriptName) { Export-ModuleMember -Function Out-Message; }

function Out-MessageEmergency() {
    [CmdletBinding(
        HelpURI='http://dfch.biz/biz/dfch/PS/System/Logging/Out-MessageEmergency/'
    )]
    Param (
            [Parameter(Mandatory = $true)]
            [alias("fn")]
            [string] $FunctionName = $(throw("You must specify a function name for logging.")), 
            [Parameter(Mandatory = $true)]
            [alias("msg")]
            [string] $Message = $(throw("You must specify a message string for logging.")), 
            [Parameter(Mandatory = $false)]
            [alias("fac")]
            [int] $Facility = 0 
        ) # Param
        Out-Message -Facility $Facility -Severity $SysLogSeverity_EMERGENCY -FunctionName $FunctionName -Message $Message;
    } # function
Set-Alias -Name Log-Emergency -Value Out-MessageEmergency;
if($MyInvocation.ScriptName) { Export-ModuleMember -Function Out-MessageEmergency -Alias Log-Emergency; }

function Out-MessageCritical() {
    [CmdletBinding(
        HelpURI='http://dfch.biz/biz/dfch/PS/System/Logging/Out-MessageCritical/'
    )]
    Param (
            [Parameter(Mandatory = $true)]
            [alias("fn")]
            [string] $FunctionName = $(throw("You must specify a function name for logging.")), 
            [Parameter(Mandatory = $true)]
            [alias("msg")]
            [string] $Message = $(throw("You must specify a message string for logging.")), 
            [Parameter(Mandatory = $false)]
            [alias("fac")]
            [int] $Facility = 0 
        ) # Param
        Out-Message -Facility $Facility -Severity $SysLogSeverity_CRITICAL -FunctionName $FunctionName -Message $Message;
    } # function
Set-Alias -Name Log-Critical -Value Out-MessageCritical;
if($MyInvocation.ScriptName) { Export-ModuleMember -Function Out-MessageCritical -Alias Log-Critical; }

function Out-MessageAlert() {
    [CmdletBinding(
        HelpURI='http://dfch.biz/biz/dfch/PS/System/Logging/Out-MessageAlert/'
    )]
    Param (
            [Parameter(Mandatory = $true)]
            [alias("fn")]
            [string] $FunctionName = $(throw("You must specify a function name for logging.")), 
            [Parameter(Mandatory = $true)]
            [alias("msg")]
            [string] $Message = $(throw("You must specify a message string for logging.")), 
            [Parameter(Mandatory = $false)]
            [alias("fac")]
            [int] $Facility = 0 
        ) # Param
        Out-Message -Facility $Facility -Severity $SysLogSeverity_ALERT -FunctionName $FunctionName -Message $Message;
    } # function
Set-Alias -Name Log-Alert -Value Out-MessageAlert;
if($MyInvocation.ScriptName) { Export-ModuleMember -Function Out-MessageAlert -Alias Log-Alert; }

function Out-MessageError() {
    [CmdletBinding(
        HelpURI='http://dfch.biz/biz/dfch/PS/System/Logging/Out-MessageError/'
    )]
    Param (
            [Parameter(Mandatory = $true)]
            [alias("fn")]
            [string] $FunctionName = $(throw("You must specify a function name for logging.")), 
            [Parameter(Mandatory = $true)]
            [alias("msg")]
            [string] $Message = $(throw("You must specify a message string for logging.")), 
            [Parameter(Mandatory = $false)]
            [alias("fac")]
            [int] $Facility = 0 
        ) # Param
        Out-Message -Facility $Facility -Severity $SysLogSeverity_ERROR -FunctionName $FunctionName -Message $Message;
    } # function
Set-Alias -Name Log-Error -Value Out-MessageError;
Set-Alias -Name Log-Err -Value Out-MessageError;
if($MyInvocation.ScriptName) { Export-ModuleMember -Function Out-MessageError -Alias Log-Error, Log-Err; }

function Out-MessageWarning() {
    [CmdletBinding(
        HelpURI='http://dfch.biz/biz/dfch/PS/System/Logging/Out-MessageWarning/'
    )]
    Param (
            [Parameter(Mandatory = $true)]
            [alias("fn")]
            [string] $FunctionName = $(throw("You must specify a function name for logging.")), 
            [Parameter(Mandatory = $true)]
            [alias("msg")]
            [string] $Message = $(throw("You must specify a message string for logging.")), 
            [Parameter(Mandatory = $false)]
            [alias("fac")]
            [int] $Facility = 0 
        ) # Param
        Out-Message -Facility $Facility -Severity $SysLogSeverity_WARNING -FunctionName $FunctionName -Message $Message;
    } # function
Set-Alias -Name Log-Warning -Value Out-MessageWarning;
Set-Alias -Name Log-Warn -Value Out-MessageWarning;
if($MyInvocation.ScriptName) { Export-ModuleMember -Function Out-MessageWarning -Alias Log-Warning, Log-Warn; }

function Out-MessageNotice() {
    [CmdletBinding(
        HelpURI='http://dfch.biz/biz/dfch/PS/System/Logging/Out-MessageNotice/'
    )]
    Param (
            [Parameter(Mandatory = $true)]
            [alias("fn")]
            [string] $FunctionName = $(throw("You must specify a function name for logging.")), 
            [Parameter(Mandatory = $true)]
            [alias("msg")]
            [string] $Message = $(throw("You must specify a message string for logging.")), 
            [Parameter(Mandatory = $false)]
            [alias("fac")]
            [int] $Facility = 0 
        ) # Param
        Out-Message -Facility $Facility -Severity $SysLogSeverity_NOTICE -FunctionName $FunctionName -Message $Message;
} # function
Set-Alias -Name Log-Notice -Value Out-MessageNotice;
if($MyInvocation.ScriptName) { Export-ModuleMember -Function Out-MessageNotice -Alias Log-Notice; }

function Out-MessageInformational() {
    [CmdletBinding(
        HelpURI='http://dfch.biz/biz/dfch/PS/System/Logging/Out-MessageInformational/'
    )]
    Param (
            [Parameter(Mandatory = $true)]
            [alias("fn")]
            [string] $FunctionName = $(throw("You must specify a function name for logging.")), 
            [Parameter(Mandatory = $true)]
            [alias("msg")]
            [string] $Message = $(throw("You must specify a message string for logging.")), 
            [Parameter(Mandatory = $false)]
            [alias("fac")]
            [int] $Facility = 0 
        ) # Param
        Out-Message -Facility $Facility -Severity $SysLogSeverity_INFO -FunctionName $FunctionName -Message $Message;
} # function
Set-Alias -Name Log-Informational -Value Out-MessageInformational;
Set-Alias -Name Log-Info -Value Out-MessageInformational;
if($MyInvocation.ScriptName) { Export-ModuleMember -Function Out-MessageInformational -Alias Log-Informational, Log-Info; }

function Out-MessageDebug() {
<#
.SYNOPSIS
 
Logs a DEBUG message to the default logger.
 
 
.EXAMPLE
 
Log-Debug "funcenstein" ("DateTime now '{0}'" -f [DateTime]::Now)
 
Logs a DEBUG message for function "funcenstein" to the default logger, if enabled for this log level.
 
 
#>

    [CmdletBinding(
        HelpURI='http://dfch.biz/biz/dfch/PS/System/Logging/Out-MessageDebug/'
    )]
    Param (
            [Parameter(Mandatory = $true)]
            [alias("fn")]
            [string] $FunctionName = $(throw("You must specify a function name for logging.")), 
            [Parameter(Mandatory = $true)]
            [alias("msg")]
            [string] $Message = $(throw("You must specify a message string for logging.")), 
            [Parameter(Mandatory = $false)]
            [alias("fac")]
            [int] $Facility = 0 
        ) # Param
        Out-Message -Facility $Facility -Severity $SysLogSeverity_DEBUG -FunctionName $FunctionName -Message $Message;
} # function
Set-Alias -Name Log-Debug -Value 'Out-MessageDebug';
Set-Alias -Name Log-Dbg -Value 'Out-MessageDebug';
if($MyInvocation.ScriptName) { Export-ModuleMember -Function Out-MessageDebug -Alias Log-Debug, Log-Dbg; } 

<##
 #
 #
 # Copyright 2015 d-fens GmbH
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at
 #
 # http://www.apache.org/licenses/LICENSE-2.0
 #
 # Unless required by applicable law or agreed to in writing, software
 # distributed under the License is distributed on an "AS IS" BASIS,
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
 #>


# SIG # Begin signature block
# MIIXDwYJKoZIhvcNAQcCoIIXADCCFvwCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQU8FCGvxupllgX+br0bboNe6pr
# vZ+gghHCMIIEFDCCAvygAwIBAgILBAAAAAABL07hUtcwDQYJKoZIhvcNAQEFBQAw
# VzELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNV
# BAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xMTA0
# MTMxMDAwMDBaFw0yODAxMjgxMjAwMDBaMFIxCzAJBgNVBAYTAkJFMRkwFwYDVQQK
# ExBHbG9iYWxTaWduIG52LXNhMSgwJgYDVQQDEx9HbG9iYWxTaWduIFRpbWVzdGFt
# cGluZyBDQSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlO9l
# +LVXn6BTDTQG6wkft0cYasvwW+T/J6U00feJGr+esc0SQW5m1IGghYtkWkYvmaCN
# d7HivFzdItdqZ9C76Mp03otPDbBS5ZBb60cO8eefnAuQZT4XljBFcm05oRc2yrmg
# jBtPCBn2gTGtYRakYua0QJ7D/PuV9vu1LpWBmODvxevYAll4d/eq41JrUJEpxfz3
# zZNl0mBhIvIG+zLdFlH6Dv2KMPAXCae78wSuq5DnbN96qfTvxGInX2+ZbTh0qhGL
# 2t/HFEzphbLswn1KJo/nVrqm4M+SU4B09APsaLJgvIQgAIMboe60dAXBKY5i0Eex
# +vBTzBj5Ljv5cH60JQIDAQABo4HlMIHiMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB
# Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBRG2D7/3OO+/4Pm9IWbsN1q1hSpwTBHBgNV
# HSAEQDA+MDwGBFUdIAAwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xvYmFs
# c2lnbi5jb20vcmVwb3NpdG9yeS8wMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2Ny
# bC5nbG9iYWxzaWduLm5ldC9yb290LmNybDAfBgNVHSMEGDAWgBRge2YaRQ2XyolQ
# L30EzTSo//z9SzANBgkqhkiG9w0BAQUFAAOCAQEATl5WkB5GtNlJMfO7FzkoG8IW
# 3f1B3AkFBJtvsqKa1pkuQJkAVbXqP6UgdtOGNNQXzFU6x4Lu76i6vNgGnxVQ380W
# e1I6AtcZGv2v8Hhc4EvFGN86JB7arLipWAQCBzDbsBJe/jG+8ARI9PBw+DpeVoPP
# PfsNvPTF7ZedudTbpSeE4zibi6c1hkQgpDttpGoLoYP9KOva7yj2zIhd+wo7AKvg
# IeviLzVsD440RZfroveZMzV+y5qKu0VN5z+fwtmK+mWybsd+Zf/okuEsMaL3sCc2
# SI8mbzvuTXYfecPlf5Y1vC0OzAGwjn//UYCAp5LUs0RGZIyHTxZjBzFLY7Df8zCC
# BCkwggMRoAMCAQICCwQAAAAAATGJxjfoMA0GCSqGSIb3DQEBCwUAMEwxIDAeBgNV
# BAsTF0dsb2JhbFNpZ24gUm9vdCBDQSAtIFIzMRMwEQYDVQQKEwpHbG9iYWxTaWdu
# MRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTExMDgwMjEwMDAwMFoXDTE5MDgwMjEw
# MDAwMFowWjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex
# MDAuBgNVBAMTJ0dsb2JhbFNpZ24gQ29kZVNpZ25pbmcgQ0EgLSBTSEEyNTYgLSBH
# MjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKPv0Z8p6djTgnY8YqDS
# SdYWHvHP8NC6SEMDLacd8gE0SaQQ6WIT9BP0FoO11VdCSIYrlViH6igEdMtyEQ9h
# JuH6HGEVxyibTQuCDyYrkDqW7aTQaymc9WGI5qRXb+70cNCNF97mZnZfdB5eDFM4
# XZD03zAtGxPReZhUGks4BPQHxCMD05LL94BdqpxWBkQtQUxItC3sNZKaxpXX9c6Q
# MeJ2s2G48XVXQqw7zivIkEnotybPuwyJy9DDo2qhydXjnFMrVyb+Vpp2/WFGomDs
# KUZH8s3ggmLGBFrn7U5AXEgGfZ1f53TJnoRlDVve3NMkHLQUEeurv8QfpLqZ0BdY
# Nc0CAwEAAaOB/TCB+jAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIB
# ADAdBgNVHQ4EFgQUGUq4WuRNMaUU5V7sL6Mc+oCMMmswRwYDVR0gBEAwPjA8BgRV
# HSAAMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3Jl
# cG9zaXRvcnkvMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwuZ2xvYmFsc2ln
# bi5uZXQvcm9vdC1yMy5jcmwwEwYDVR0lBAwwCgYIKwYBBQUHAwMwHwYDVR0jBBgw
# FoAUj/BLf6guRSSuTVD6Y5qL3uLdG7wwDQYJKoZIhvcNAQELBQADggEBAHmwaTTi
# BYf2/tRgLC+GeTQD4LEHkwyEXPnk3GzPbrXsCly6C9BoMS4/ZL0Pgmtmd4F/ximl
# F9jwiU2DJBH2bv6d4UgKKKDieySApOzCmgDXsG1szYjVFXjPE/mIpXNNwTYr3MvO
# 23580ovvL72zT006rbtibiiTxAzL2ebK4BEClAOwvT+UKFaQHlPCJ9XJPM0aYx6C
# WRW2QMqngarDVa8z0bV16AnqRwhIIvtdG/Mseml+xddaXlYzPK1X6JMlQsPSXnE7
# ShxU7alVrCgFx8RsXdw8k/ZpPIJRzhoVPV4Bc/9Aouq0rtOO+u5dbEfHQfXUVlfy
# GDcy1tTMS/Zx4HYwggSfMIIDh6ADAgECAhIRIQaggdM/2HrlgkzBa1IJTgMwDQYJ
# KoZIhvcNAQEFBQAwUjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24g
# bnYtc2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGltZXN0YW1waW5nIENBIC0gRzIw
# HhcNMTUwMjAzMDAwMDAwWhcNMjYwMzAzMDAwMDAwWjBgMQswCQYDVQQGEwJTRzEf
# MB0GA1UEChMWR01PIEdsb2JhbFNpZ24gUHRlIEx0ZDEwMC4GA1UEAxMnR2xvYmFs
# U2lnbiBUU0EgZm9yIE1TIEF1dGhlbnRpY29kZSAtIEcyMIIBIjANBgkqhkiG9w0B
# AQEFAAOCAQ8AMIIBCgKCAQEAsBeuotO2BDBWHlgPse1VpNZUy9j2czrsXV6rJf02
# pfqEw2FAxUa1WVI7QqIuXxNiEKlb5nPWkiWxfSPjBrOHOg5D8NcAiVOiETFSKG5d
# QHI88gl3p0mSl9RskKB2p/243LOd8gdgLE9YmABr0xVU4Prd/4AsXximmP/Uq+yh
# RVmyLm9iXeDZGayLV5yoJivZF6UQ0kcIGnAsM4t/aIAqtaFda92NAgIpA6p8N7u7
# KU49U5OzpvqP0liTFUy5LauAo6Ml+6/3CGSwekQPXBDXX2E3qk5r09JTJZ2Cc/os
# +XKwqRk5KlD6qdA8OsroW+/1X1H0+QrZlzXeaoXmIwRCrwIDAQABo4IBXzCCAVsw
# DgYDVR0PAQH/BAQDAgeAMEwGA1UdIARFMEMwQQYJKwYBBAGgMgEeMDQwMgYIKwYB
# BQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMAkG
# A1UdEwQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwQgYDVR0fBDswOTA3oDWg
# M4YxaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9nc3RpbWVzdGFtcGluZ2cy
# LmNybDBUBggrBgEFBQcBAQRIMEYwRAYIKwYBBQUHMAKGOGh0dHA6Ly9zZWN1cmUu
# Z2xvYmFsc2lnbi5jb20vY2FjZXJ0L2dzdGltZXN0YW1waW5nZzIuY3J0MB0GA1Ud
# DgQWBBTUooRKOFoYf7pPMFC9ndV6h9YJ9zAfBgNVHSMEGDAWgBRG2D7/3OO+/4Pm
# 9IWbsN1q1hSpwTANBgkqhkiG9w0BAQUFAAOCAQEAgDLcB40coJydPCroPSGLWaFN
# fsxEzgO+fqq8xOZ7c7tL8YjakE51Nyg4Y7nXKw9UqVbOdzmXMHPNm9nZBUUcjaS4
# A11P2RwumODpiObs1wV+Vip79xZbo62PlyUShBuyXGNKCtLvEFRHgoQ1aSicDOQf
# FBYk+nXcdHJuTsrjakOvz302SNG96QaRLC+myHH9z73YnSGY/K/b3iKMr6fzd++d
# 3KNwS0Qa8HiFHvKljDm13IgcN+2tFPUHCya9vm0CXrG4sFhshToN9v9aJwzF3lPn
# VDxWTMlOTDD28lz7GozCgr6tWZH2G01Ve89bAdz9etNvI1wyR5sB88FRFEaKmzCC
# BNYwggO+oAMCAQICEhEhDRayW4wRltP+V8mGEea62TANBgkqhkiG9w0BAQsFADBa
# MQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEwMC4GA1UE
# AxMnR2xvYmFsU2lnbiBDb2RlU2lnbmluZyBDQSAtIFNIQTI1NiAtIEcyMB4XDTE1
# MDUwNDE2NDMyMVoXDTE4MDUwNDE2NDMyMVowVTELMAkGA1UEBhMCQ0gxDDAKBgNV
# BAgTA1p1ZzEMMAoGA1UEBxMDWnVnMRQwEgYDVQQKEwtkLWZlbnMgR21iSDEUMBIG
# A1UEAxMLZC1mZW5zIEdtYkgwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
# AQDNPSzSNPylU9jFM78Q/GjzB7N+VNqikf/use7p8mpnBZ4cf5b4qV3rqQd62rJH
# RlAsxgouCSNQrl8xxfg6/t/I02kPvrzsR4xnDgMiVCqVRAeQsWebafWdTvWmONBS
# lxJejPP8TSgXMKFaDa+2HleTycTBYSoErAZSWpQ0NqF9zBadjsJRVatQuPkTDrwL
# eWibiyOipK9fcNoQpl5ll5H9EG668YJR3fqX9o0TQTkOmxXIL3IJ0UxdpyDpLEkt
# tBG6Y5wAdpF2dQX2phrfFNVY54JOGtuBkNGMSiLFzTkBA1fOlA6ICMYjB8xIFxVv
# rN1tYojCrqYkKMOjwWQz5X8zAgMBAAGjggGZMIIBlTAOBgNVHQ8BAf8EBAMCB4Aw
# TAYDVR0gBEUwQzBBBgkrBgEEAaAyATIwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93
# d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCQYDVR0TBAIwADATBgNVHSUE
# DDAKBggrBgEFBQcDAzBCBgNVHR8EOzA5MDegNaAzhjFodHRwOi8vY3JsLmdsb2Jh
# bHNpZ24uY29tL2dzL2dzY29kZXNpZ25zaGEyZzIuY3JsMIGQBggrBgEFBQcBAQSB
# gzCBgDBEBggrBgEFBQcwAoY4aHR0cDovL3NlY3VyZS5nbG9iYWxzaWduLmNvbS9j
# YWNlcnQvZ3Njb2Rlc2lnbnNoYTJnMi5jcnQwOAYIKwYBBQUHMAGGLGh0dHA6Ly9v
# Y3NwMi5nbG9iYWxzaWduLmNvbS9nc2NvZGVzaWduc2hhMmcyMB0GA1UdDgQWBBTN
# GDddiIYZy9p3Z84iSIMd27rtUDAfBgNVHSMEGDAWgBQZSrha5E0xpRTlXuwvoxz6
# gIwyazANBgkqhkiG9w0BAQsFAAOCAQEAAApsOzSX1alF00fTeijB/aIthO3UB0ks
# 1Gg3xoKQC1iEQmFG/qlFLiufs52kRPN7L0a7ClNH3iQpaH5IEaUENT9cNEXdKTBG
# 8OrJS8lrDJXImgNEgtSwz0B40h7bM2Z+0DvXDvpmfyM2NwHF/nNVj7NzmczrLRqN
# 9de3tV0pgRqnIYordVcmb24CZl3bzpwzbQQy14Iz+P5Z2cnw+QaYzAuweTZxEUcJ
# bFwpM49c1LMPFJTuOKkUgY90JJ3gVTpyQxfkc7DNBnx74PlRzjFmeGC/hxQt0hvo
# eaAiBdjo/1uuCTToigVnyRH+c0T2AezTeoFb7ne3I538hWeTdU5q9jGCBLcwggSz
# AgEBMHAwWjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex
# MDAuBgNVBAMTJ0dsb2JhbFNpZ24gQ29kZVNpZ25pbmcgQ0EgLSBTSEEyNTYgLSBH
# MgISESENFrJbjBGW0/5XyYYR5rrZMAkGBSsOAwIaBQCgeDAYBgorBgEEAYI3AgEM
# MQowCKACgAChAoAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQB
# gjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBT4Q7P/iPyIhozK
# YjVjbkwyuSpOeTANBgkqhkiG9w0BAQEFAASCAQATYsGR5ARC11NPI7ZwDvLcn9dU
# XALqBH2vm5X7NbqkcthcQocQghiK7ojoJtgGlMFV3TeNEd3Nq1gBgXJ+/KwSrS9x
# jKNkTmyCM+axs+r2A43fCG1OB6TzL2hsobCaPMexierm0wvp3dOnEkSyxDuV2jsE
# ocSPP2woYL3VSRUbZ0obNgbq4lIno2rUbY3RTTe3pD3fZJsCXvk4CCBq6W9qgkEW
# i3bQ7C6RB196CFGG1XGvG9SQeNyYS0LM+QHq3+/swAI9pYK+nJN1906vMbc3TG/1
# po8vRhdn+rKTqu18dtwSst8hTB52r3nmWoteMrzHnMPyMu4o33mdCw9og+fzoYIC
# ojCCAp4GCSqGSIb3DQEJBjGCAo8wggKLAgEBMGgwUjELMAkGA1UEBhMCQkUxGTAX
# BgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGlt
# ZXN0YW1waW5nIENBIC0gRzICEhEhBqCB0z/YeuWCTMFrUglOAzAJBgUrDgMCGgUA
# oIH9MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE1
# MTIyMDE0MzgzNFowIwYJKoZIhvcNAQkEMRYEFK/haHO894k4gkY3V1d4nKLtBX6u
# MIGdBgsqhkiG9w0BCRACDDGBjTCBijCBhzCBhAQUs2MItNTN7U/PvWa5Vfrjv7Es
# KeYwbDBWpFQwUjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt
# c2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGltZXN0YW1waW5nIENBIC0gRzICEhEh
# BqCB0z/YeuWCTMFrUglOAzANBgkqhkiG9w0BAQEFAASCAQB/5m9dvZrqxm7j86vJ
# OmLRkFLGGZPuUdIzY+xTycPk7IboKELZpMEw4l0ec7SQ9sDlf9xgvKPG7Glcu80l
# wydiV1EpGM3J5g3W9ZGC9BsZU14jHQvOBUF5B4KTsOFldgmGygtv3XgdbWg44jEU
# g311l8JQ5YzF8VkIIBlpcS6gd7h4MsxnvQnfUyvoaJuduKkCpboy/JlIyb4Urt++
# bVGVphfLihrUr3NUicd2x2p4hd1bu1BtzhRuJo/udNIoP5L7ZFo4B/cYCR8Of4o8
# VWb51ttH8YbvIxx/8n8fFnS7oLcpC0iNqDQWJJjBA7HW0p/nvMu4YGVNkrbqoNEb
# 1lU1
# SIG # End signature block