Utilities/IPValidationUtility.ps1


using module "..\MCCA.psm1"
<#
 This function returns list of parent labels and sublabels
#>


Function Get-LabelClassification {
    Param(
        $LogFile
    )
    $SubLabels = @{}
    $ParentLabels = @{}
    $ParentSubLabelAssociation = @{}
    $ParentNameForSubLabelAssociation = @{}
    try {
        foreach ($LabelDefined in $Config["GetLabel"]) {
            $Label = $LabelDefined
            if ($($Label.ParentId)) {
                $SubLabels.add($($Label.Name), $Label)
                if ($ParentSubLabelAssociation.ContainsKey($($Label.ParentId))) {
                    $ParentSubLabelAssociation[$($Label.ParentId)].Add($($Label.Name)) #+= $($Label.Name)
                }
                else {
                    $ParentSubLabelAssociation.add($($Label.ParentId), [System.Collections.ArrayList]@()) #$($Label.Name))
                    $ParentSubLabelAssociation[$($Label.ParentId)].Add($($Label.Name))
                }
            }
            else {
                $ParentLabels.add($($Label.Name), $Label)
            }
              
        }
    
        # Setting parent name for the parent with sublabels by creating a hash table with key as
        # parent guid and value as parent name.
        if ($($($ParentSubLabelAssociation.Keys).count) -gt 0) {
            foreach ($ParentGUID in $($ParentSubLabelAssociation.Keys)) {
                foreach ($LabelDefined in $Config["GetLabel"]) {
                    if ($($LabelDefined.Guid) -eq $ParentGUID) {
                        $ParentNameForSubLabelAssociation[$ParentGUID] = $LabelDefined.Name
                    }
                }
            }
        }
    }
    catch {
        Write-Host "Error:$(Get-Date) There was an issue while running MCCA. Please try running the tool again after some time." -ForegroundColor:Red
        $ErrorMessage = $_.ToString()
        $StackTraceInfo = $_.ScriptStackTrace
        Write-Log -IsError -ErrorMessage $ErrorMessage -StackTraceInfo $StackTraceInfo -LogFile $LogFile -ErrorAction:SilentlyContinue
    }
    

    $LabelClassification = New-Object -TypeName psobject
    $LabelClassification | Add-Member -MemberType NoteProperty -Name sublabels -Value $SubLabels
    $LabelClassification | Add-Member -MemberType NoteProperty -Name parentlabels -Value $ParentLabels    
    $LabelClassification | Add-Member -MemberType NoteProperty -Name parentsublabelassociation -Value $ParentSubLabelAssociation       
    $LabelClassification | Add-Member -MemberType NoteProperty -Name parentnameforsublabelassociation -Value $ParentNameForSubLabelAssociation              
    return $LabelClassification
}


# SIG # Begin signature block
# MIIhngYJKoZIhvcNAQcCoIIhjzCCIYsCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCbRZdNXbD+9iao
# VWGFSAWoDbXYG5cTs2C6j2b6OZPb3aCCC4QwggUAMIID6KADAgECAhMzAAAEU+We
# zhfpk+4QAAAAAARTMA0GCSqGSIb3DQEBCwUAMHkxCzAJBgNVBAYTAlVTMRMwEQYD
# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jvc29mdCBUZXN0aW5nIFBD
# QSAyMDEwMB4XDTIwMTIxNTE5NDMyN1oXDTIxMTIwMjE5NDMyN1owfDELMAkGA1UE
# BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc
# BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdQ29kZSBTaWdu
# IFRlc3QgKERPIE5PVCBUUlVTVCkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
# AoIBAQDIbLqmXHPCGqCpfikwr9Gwu7mmwKaRk2l2c7HiFdxA4N/5QBm3ZfoonyX/
# oaX3WbsvBD3MoCMZJCYGVJeCkW0Iy0ahCtcxjmCmy9T7g0Du1vR29P+TTghXQ4ZP
# fVj+XDxo82IsqpD7uxaa/VujruYpxvYfwRZB11kf0SpaRLae1TvONYQZ/eNifGSx
# zUridwIkDPogu1vzsehp1O+SMhv3foM6Rz95ajbWOJMxgooE+LoAapjHe8jDciok
# 4jPC/5F5HGbf50i6Wj/QLN3VKLQFsSBzBC1RFqUITmcRP4ngQeDvLpvTluC8KFmy
# IlZunmBqGx2ynTmebwVysIa+qV/NAgMBAAGjggF8MIIBeDATBgNVHSUEDDAKBggr
# BgEFBQcDAzAdBgNVHQ4EFgQUrvqOOBCgPTy+cAoXZUhGw1P2yF4wUAYDVR0RBEkw
# R6RFMEMxKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1ZXJ0byBSaWNv
# MRYwFAYDVQQFEw0yMzAwNzIrNDYzMDE4MB8GA1UdIwQYMBaAFN3WR4sjFC/YOGhC
# oz5tw/CQ9yzQMFkGA1UdHwRSMFAwTqBMoEqGSGh0dHA6Ly93d3cubWljcm9zb2Z0
# LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMFRlc3RpbmclMjBQQ0ElMjAyMDEw
# LmNybDBmBggrBgEFBQcBAQRaMFgwVgYIKwYBBQUHMAKGSmh0dHA6Ly93d3cubWlj
# cm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwVGVzdGluZyUyMFBD
# QSUyMDIwMTAuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggEBACnT
# 9Iwyq9Jk/Ee6QBrLTjw5+p0XjjxX7Oocz1R/iNdfx7iJtSf4VHWcDGXr92BPQLgl
# MOdq6PCrIRstWMg1aBQ4eH9Q6VfiWZq3FyaQNpDG4g/+Z6Zo5A6LgbtEnZB5tboP
# ZsE4o0wDlIXX5pGCsCTIiVMtJqbCZPn5hLG5V7wMlLae9A4xOW+JyBy8vA/FpE+A
# QQoHSJ4LrC22bwpn2+cQRF5SlFRIqZVx+wclji96Nerfosz2ZPLfydHvs8jH65dA
# 2WFAMvN8/KxdX7fp98Bzk+vhCPYc4/CKyPdscD7yJvOxveEAzDiLyyWrnbFU9qP7
# aI/JTxrVA5IGS7wIJKwwggZ8MIIEZKADAgECAgphEYRvAAAAAAADMA0GCSqGSIb3
# DQEBCwUAMIGQMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G
# A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTow
# OAYDVQQDEzFNaWNyb3NvZnQgVGVzdGluZyBSb290IENlcnRpZmljYXRlIEF1dGhv
# cml0eSAyMDEwMB4XDTEwMDcwMTIxMjMwMVoXDTI1MDcwMTIxMzMwMVoweTELMAkG
# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx
# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEjMCEGA1UEAxMaTWljcm9z
# b2Z0IFRlc3RpbmcgUENBIDIwMTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
# AoIBAQDBvSHVS2YGAJIwORjKy3NCWbHvmyeo4OhVvSmw+SQfOtHow1mJ7ZG2wegz
# Y/ZaZBniLnwMkIAFOL8cproNai/vJ5er3vbvUPOD59fDRTciPxi1wpYRto0Sg1mL
# J1EGVnW5YGoTDtUmPy2WqgXMoYc/vk807wxMb8wE1KHmZ80KJzOf46+bb2h8vLQM
# czSMWoH5h/tUHMVHbOqfV7RZ/c4ZqXd8h0KftXmUvMt2ktuWl6FfBCQ5/qGV4Z+G
# 417ZXFbfQ5CfyRTq0fWgW6vzCATdKK8b4qouE6AK7dKZRCr1mUT7K6RP8bthwh0t
# 9SUnAqh475M59F51ge7S4HYMWyPvAgMBAAGjggHsMIIB6DAQBgkrBgEEAYI3FQEE
# AwIBADAdBgNVHQ4EFgQU3dZHiyMUL9g4aEKjPm3D8JD3LNAwGQYJKwYBBAGCNxQC
# BAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHwYD
# VR0jBBgwFoAUowEEfjCIM+u5MZzK64V2Z/xltNEwWQYDVR0fBFIwUDBOoEygSoZI
# aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWljVGVz
# Um9vQ2VyQXV0XzIwMTAtMDYtMTcuY3JsMF0GCCsGAQUFBwEBBFEwTzBNBggrBgEF
# BQcwAoZBaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNUZXNS
# b29DZXJBdXRfMjAxMC0wNi0xNy5jcnQwgaAGA1UdIAEB/wSBlTCBkjCBjwYJKwYB
# BAGCNy4DMIGBMD0GCCsGAQUFBwIBFjFodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20v
# UEtJL2RvY3MvQ1BTL2RlZmF1bHQuaHRtMEAGCCsGAQUFBwICMDQeMiAdAEwAZQBn
# AGEAbABfAFAAbwBsAGkAYwB5AF8AUwB0AGEAdABlAG0AZQBuAHQALiAdMA0GCSqG
# SIb3DQEBCwUAA4ICAQBAYQU+N90ze1LCSGuA92ADFrbJLol+vdlYHGPT9ZLS9loE
# DQjuh7/rmDQ6ZXxQ5MgbKVB5VXsYOZG1QSbzF3+YlWd8TN1y5B21BM3DSPb6r+3b
# rl50kW2t1JqACtiLbZnmhmh5hkdJi8HYUfLQ7xKcP0g1CIJP9CyKil7UJv/HnMXK
# igTGiBaHjfVtVwG5k8roymrEirpBDcOMVB0OZiTXxYIHDbM4v7LItZYIISdPs6+L
# wxwzwdroMdpj42+3dWQBumpRGQAgqJ9i5UiBQtUM+9vLpKIRnujnWfQxbaIuIt2H
# RLFpHUYKGOXRlf148o+71dX3YWap88+ocaxkM8rkavgDNkcWSe9Dpoq8a3tS2P9B
# pxewDV+iSzF0JRo9UOZeciaSQDZvrkQskxJjtdO725L6E5Fu1Ti+lGl6exRCnhPb
# ooxCqHEGLRdiwXkrmLp+huTGAK8zmfEt0d1JFrrDdu5kqoG3OVT2dN4JVFNpOFvC
# U/LNiVDCyCIcG0cSRVtDjyNckMhu1PcPtberjr1mcL8RkTzvonoH4pIvQk1k4IOL
# pdxslOj2oigApZjqCBJA3mIEZHlnwRuglg4Er74nSmL6953C0r1Vwl7T0vXnQO8i
# zb+incAb1r6Y+45N5aVXww+PqHJBRjvhjyBKG+1aDLVM3ixjV9P6OZkOvp4uozGC
# FXAwghVsAgEBMIGQMHkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u
# MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp
# b24xIzAhBgNVBAMTGk1pY3Jvc29mdCBUZXN0aW5nIFBDQSAyMDEwAhMzAAAEU+We
# zhfpk+4QAAAAAARTMA0GCWCGSAFlAwQCAQUAoIGwMBkGCSqGSIb3DQEJAzEMBgor
# BgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMC8GCSqGSIb3
# DQEJBDEiBCB6+HbcTWaoa9S5yir125ELW4iTc7BiB3OVe9Ip/sundTBEBgorBgEE
# AYI3AgEMMTYwNKAUgBIATQBpAGMAcgBvAHMAbwBmAHShHIAaaHR0cHM6Ly93d3cu
# bWljcm9zb2Z0LmNvbSAwDQYJKoZIhvcNAQEBBQAEggEAIonWVE7itk3pUTOWdBbD
# zhEF62AqBvceL19k8sDc/eA15uEdain6DZ+bQXx2/zlnE3PGoWlor8KB0j0zkJvh
# 30kWDgin25d56HN+c9Q3q0WrEBPIQcSj8jXCzRdVt3XxGCOPh1/epZXvTG5lQwoN
# SvdCB+kA5yiGxGK9ewzlHTr4gzX8FAqA5rCuN66N6mZeyQV0kEZGk6Pj71zst4B1
# BETNLsSSEvoHOOfqZ6k4x6Sju0Yypzh4crbdeLbnNGU/TaSPNghyf7rgNyHn17xA
# VVzKi5cZ78nkr0nQxqn/nUSzcq2BvajObcJzyHZxf3C51ffwARG7kVuxZKrHvycp
# q6GCEv0wghL5BgorBgEEAYI3AwMBMYIS6TCCEuUGCSqGSIb3DQEHAqCCEtYwghLS
# AgEDMQ8wDQYJYIZIAWUDBAIBBQAwggFYBgsqhkiG9w0BCRABBKCCAUcEggFDMIIB
# PwIBAQYKKwYBBAGEWQoDATAxMA0GCWCGSAFlAwQCAQUABCBaITsJ/Td57g4uOaMG
# s10DhDPf12S4ooAhvfl2QAYXCgIGYLDoqUTTGBIyMDIxMDYxODEwMDgzNC45NFow
# BIACAfSggdikgdUwgdIxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u
# MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp
# b24xLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJhdGlvbnMgTGltaXRl
# ZDEmMCQGA1UECxMdVGhhbGVzIFRTUyBFU046MDg0Mi00QkU2LUMyOUExJTAjBgNV
# BAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2Wggg5NMIIE+TCCA+GgAwIB
# AgITMwAAATnM6OhDi/A04QAAAAABOTANBgkqhkiG9w0BAQsFADB8MQswCQYDVQQG
# EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG
# A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQg
# VGltZS1TdGFtcCBQQ0EgMjAxMDAeFw0yMDEwMTUxNzI4MjFaFw0yMjAxMTIxNzI4
# MjFaMIHSMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE
# BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMS0wKwYD
# VQQLEyRNaWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxJjAkBgNV
# BAsTHVRoYWxlcyBUU1MgRVNOOjA4NDItNEJFNi1DMjlBMSUwIwYDVQQDExxNaWNy
# b3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
# MIIBCgKCAQEA2hP5jOMlkyWhjrMqBvyiePhaH5g3T39Qwdu6HqAnWcLlz9/ZKoC/
# QFz45gb0ad14IvqFaFm2J6o+vhhbf4oQJOHDTcjZXBKQTbQT/w6LCWvdCXnFQl2a
# 8nEd42EmE7rxRVmKumbHoEKV+QwYdGc70q5O8M2YkqJ/StcrFhFtmhFxcvVZ+gg4
# azzvE87+soIzYV6zqM2KWO/TSy9Zeoi5X4QobV6AKuwJH08ySZ2lQBXznd8rwDzy
# 6+BYqJXim+b+V+7E3741b6cQ9fmONApHLhkGqo07/B14NkGqqO978hAjXtVoQpKj
# Ku6yxXzsspQnj0rlfsV/HySW/l+izx7KTwIDAQABo4IBGzCCARcwHQYDVR0OBBYE
# FJmem4ZyVMKZ2pKKsZ9G9lAtBgzpMB8GA1UdIwQYMBaAFNVjOlyKMZDzQ3t8RhvF
# M2hahW1VMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNv
# bS9wa2kvY3JsL3Byb2R1Y3RzL01pY1RpbVN0YVBDQV8yMDEwLTA3LTAxLmNybDBa
# BggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cubWljcm9zb2Z0
# LmNvbS9wa2kvY2VydHMvTWljVGltU3RhUENBXzIwMTAtMDctMDEuY3J0MAwGA1Ud
# EwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwgwDQYJKoZIhvcNAQELBQADggEB
# AFhcKGrz/zcahc3BWu1Dgoi/EA2xJvu69hGIk6FtIPHXWMiuVmtRQHf8pyQ9asnP
# 2ccfRz/dMqlyk/q8+INcCLEElpSgm91xuCFYbFhAhLJtoozf38aH5rY2ZxWN9buD
# EknJfiGiK6Q+8kkCNWmbWj2DxRwEF8IfBwjF7EPhYDgdilKz486uwhgosor1GuDW
# ilYjGoMNq3lrwDIkY/83KUpJhorlpiBdkINEsVkCfzyELme9C3tamZtMSXxrUZwX
# 6Wrf3dSYEAqy36PJZJriwTwhvzjIeqD8eKzUUh3ufE2/EjEAbabBhCo2+tUoynT6
# TAJtjdiva4g7P73/VQrScMcwggZxMIIEWaADAgECAgphCYEqAAAAAAACMA0GCSqG
# SIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQ
# MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u
# MTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkg
# MjAxMDAeFw0xMDA3MDEyMTM2NTVaFw0yNTA3MDEyMTQ2NTVaMHwxCzAJBgNVBAYT
# AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD
# VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBU
# aW1lLVN0YW1wIFBDQSAyMDEwMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
# AQEAqR0NvHcRijog7PwTl/X6f2mUa3RUENWlCgCChfvtfGhLLF/Fw+Vhwna3PmYr
# W/AVUycEMR9BGxqVHc4JE458YTBZsTBED/FgiIRUQwzXTbg4CLNC3ZOs1nMwVyaC
# o0UN0Or1R4HNvyRgMlhgRvJYR4YyhB50YWeRX4FUsc+TTJLBxKZd0WETbijGGvmG
# gLvfYfxGwScdJGcSchohiq9LZIlQYrFd/XcfPfBXday9ikJNQFHRD5wGPmd/9WbA
# A5ZEfu/QS/1u5ZrKsajyeioKMfDaTgaRtogINeh4HLDpmc085y9Euqf03GS9pAHB
# IAmTeM38vMDJRF1eFpwBBU8iTQIDAQABo4IB5jCCAeIwEAYJKwYBBAGCNxUBBAMC
# AQAwHQYDVR0OBBYEFNVjOlyKMZDzQ3t8RhvFM2hahW1VMBkGCSsGAQQBgjcUAgQM
# HgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1Ud
# IwQYMBaAFNX2VsuP6KJcYmjRPZSQW9fOmhjEMFYGA1UdHwRPME0wS6BJoEeGRWh0
# dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0Nl
# ckF1dF8yMDEwLTA2LTIzLmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKG
# Pmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljUm9vQ2VyQXV0
# XzIwMTAtMDYtMjMuY3J0MIGgBgNVHSABAf8EgZUwgZIwgY8GCSsGAQQBgjcuAzCB
# gTA9BggrBgEFBQcCARYxaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL1BLSS9kb2Nz
# L0NQUy9kZWZhdWx0Lmh0bTBABggrBgEFBQcCAjA0HjIgHQBMAGUAZwBhAGwAXwBQ
# AG8AbABpAGMAeQBfAFMAdABhAHQAZQBtAGUAbgB0AC4gHTANBgkqhkiG9w0BAQsF
# AAOCAgEAB+aIUQ3ixuCYP4FxAz2do6Ehb7Prpsz1Mb7PBeKp/vpXbRkws8LFZslq
# 3/Xn8Hi9x6ieJeP5vO1rVFcIK1GCRBL7uVOMzPRgEop2zEBAQZvcXBf/XPleFzWY
# JFZLdO9CEMivv3/Gf/I3fVo/HPKZeUqRUgCvOA8X9S95gWXZqbVr5MfO9sp6AG9L
# MEQkIjzP7QOllo9ZKby2/QThcJ8ySif9Va8v/rbljjO7Yl+a21dA6fHOmWaQjP9q
# Yn/dxUoLkSbiOewZSnFjnXshbcOco6I8+n99lmqQeKZt0uGc+R38ONiU9MalCpaG
# pL2eGq4EQoO4tYCbIjggtSXlZOz39L9+Y1klD3ouOVd2onGqBooPiRa6YacRy5rY
# DkeagMXQzafQ732D8OE7cQnfXXSYIghh2rBQHm+98eEA3+cxB6STOvdlR3jo+KhI
# q/fecn5ha293qYHLpwmsObvsxsvYgrRyzR30uIUBHoD7G4kqVDmyW9rIDVWZeodz
# OwjmmC3qjeAzLhIp9cAvVCch98isTtoouLGp25ayp0Kiyc8ZQU3ghvkqmqMRZjDT
# u3QyS99je/WZii8bxyGvWbWu3EQ8l1Bx16HSxVXjad5XwdHeMMD9zOZN+w2/XU/p
# nR4ZOC+8z1gFLu8NoFA12u8JJxzVs341Hgi62jbb01+P3nSISRKhggLXMIICQAIB
# ATCCAQChgdikgdUwgdIxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u
# MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp
# b24xLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJhdGlvbnMgTGltaXRl
# ZDEmMCQGA1UECxMdVGhhbGVzIFRTUyBFU046MDg0Mi00QkU2LUMyOUExJTAjBgNV
# BAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2WiIwoBATAHBgUrDgMCGgMV
# AA1NlP4b3paEjXQ/He5KBMazZYwHoIGDMIGApH4wfDELMAkGA1UEBhMCVVMxEzAR
# BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1p
# Y3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3Rh
# bXAgUENBIDIwMTAwDQYJKoZIhvcNAQEFBQACBQDkdmzjMCIYDzIwMjEwNjE4MDg1
# MjUxWhgPMjAyMTA2MTkwODUyNTFaMHcwPQYKKwYBBAGEWQoEATEvMC0wCgIFAOR2
# bOMCAQAwCgIBAAICH+sCAf8wBwIBAAICEVkwCgIFAOR3vmMCAQAwNgYKKwYBBAGE
# WQoEAjEoMCYwDAYKKwYBBAGEWQoDAqAKMAgCAQACAwehIKEKMAgCAQACAwGGoDAN
# BgkqhkiG9w0BAQUFAAOBgQAIhWEtI6Oz+xBxLyJQVvm41Ch1dqUitatMykyNmfQ4
# IBrjmRo5h9GMKI8CB3ibJUJsIsP+wWLr516sB88RMqrHM6kHciWAmLXTvoZ5jwMF
# +a7qgdjYvLKO5rwbLzevsk+XqCGB2C3Xv25EdyK8QzWEBqt2TzT5/BAgMsBrSK5J
# FTGCAw0wggMJAgEBMIGTMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5n
# dG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y
# YXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMz
# AAABOczo6EOL8DThAAAAAAE5MA0GCWCGSAFlAwQCAQUAoIIBSjAaBgkqhkiG9w0B
# CQMxDQYLKoZIhvcNAQkQAQQwLwYJKoZIhvcNAQkEMSIEIP1HxTYmpyatxsK8EBey
# qnFDY8InOpg93e1LAEm2bNdlMIH6BgsqhkiG9w0BCRACLzGB6jCB5zCB5DCBvQQg
# PKGO5Dij1yR7MUKx4oEFrnxqVSfzmnqfJqbUoAcP/J8wgZgwgYCkfjB8MQswCQYD
# VQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe
# MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3Nv
# ZnQgVGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAATnM6OhDi/A04QAAAAABOTAiBCAN
# trGkabMgWcHDeeQWErLFhFRYUW1xaRgu5UrHZoFHMDANBgkqhkiG9w0BAQsFAASC
# AQBThG/7s6k6gH3Wn5+NBKDEdPO50J+RKT40xPcx7uoxXq2cgUOrdzLJZE5WKDRm
# 5p8lOtBVt4tRgqNpyCUw4rdKori7KPCQ5z0Z1GOe4gskxb6WqsamL47KwpI0jjzd
# Z9dIkGt0g6a6gbf0ZatDtpQMwYeENDyQ4uvbsdMgdPDkhcVurPFRHO+8e1B4nXNE
# 7H/tVPpdeGf1ZUUzr55JzyT4lqcRHvNU6jiytQGf9ga1UV5u//pj27o+fNm/fiN8
# ds++TGvfE9RY/nU05UD8QNUnxZlNZIAQtigwA5x/aACe4rqCK5dv2whqqRmeqeWK
# o6RNwtMD1RURgbxG+tmeBAb0
# SIG # End signature block