Private/constants.ps1

# Some hard-coded definitions
New-Variable -Name "MSGraphAppId" -Value "00000003-0000-0000-c000-000000000000" -Scope "Script" -Option ReadOnly
#$MSGraphAppId = "00000003-0000-0000-c000-000000000000"
New-Variable -Name "MSGraphUserReadPermission" -Value "e1fe6dd8-ba31-4d61-89e7-88639da4683d" -Scope "Script" -Option ReadOnly
New-Variable -Name "AzAppId" -Value "04b07795-8ddb-461a-bbee-02f9e1bf7b46" -Scope "Script" -Option ReadOnly # Well-known App ID of the Azure CLI

New-Variable -Name "MSGraphDirectoryReadAllPermission" -Value "7ab1d382-f21e-4acd-a863-ba3e13f7da61" -Scope "Script" -Option ReadOnly
New-Variable -Name "MSGraphDeviceManagementReadPermission" -Value "2f51be20-0bb4-4fed-bf7b-db946066c75e" -Scope "Script" -Option ReadOnly
New-Variable -Name "MSGraphDeviceManagementConfigurationReadAll" -Value "dc377aa6-52d8-4e23-b271-2a7ae04cedf3" -Scope "Script" -Option ReadOnly
New-Variable -Name "MSGraphIdentityRiskyUserReadPermission" -Value "dc5007c0-2d7d-4c42-879c-2dab87571379" -Scope "Script" -Option ReadOnly # IdentityRiskyUser.Read.All

# "0000000a-0000-0000-c000-000000000000" # Service Principal App Id of Intune, not required here
New-Variable -Name "IntuneAppId" -Value "c161e42e-d4df-4a3d-9b42-e7a3c31f59d4" -Scope "Script" -Option ReadOnly # Well-known App ID of the Intune API
New-Variable -Name "IntuneSCEPChallengePermission" -Value "39d724e8-6a34-4930-9a36-364082c35716" -Scope "Script" -Option ReadOnly

# To-be JSON defining App Role that CertMaster uses to authenticate against SCEPman
New-Variable -Name "ScepmanManifest" -Scope "Script" -Option ReadOnly -Value @(@{
  'allowedMemberTypes' = @( 'Application' )
  'description' = "Request certificates via the raw CSR API. Only used internally for SCEPman."
  'displayName' = 'CSR Requesters'
  'isEnabled' = $true
  'value' = 'CSR.Request'
},
@{
  'allowedMemberTypes' = @( 'Application' )
  'description' = "Request certificates via the raw CSR API that automatically stores issued certificates"
  'displayName' = 'CSR DB Requesters'
  'isEnabled' = $true
  'value' = 'CSR.Request.Db'
},
@{
  'allowedMemberTypes' = @( 'Application' )
  'description' = "Request certificates via the raw CSR API with the caller being responsible for storing the certificates. Only used internally for SCEPman."
  'displayName' = 'Direct CSR Requesters'
  'isEnabled' = $true
  'value' = 'CSR.Request.Direct'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "Request certificates via EST or the raw CSR API for your own devices or your own user account."
  'displayName' = 'CSR Self Service'
  'isEnabled' = $true
  'value' = 'CSR.SelfService'
})

# To-be JSON defining App Roles that User can have when authenticating against CertMaster
New-Variable -Name "CertmasterManifest" -Scope "Script" -Option ReadOnly -Value @(@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "Full access to all SCEPman CertMaster functions like requesting and managing certificates"
  'displayName' = 'Full Admin'
  'isEnabled' = $true
  'value' = 'Admin.Full'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "See and revoke all issued certificates"
  'displayName' = 'Manage All'
  'isEnabled' = $true
  'value' = 'Manage.All'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "See all issued certificates"
  'displayName' = 'Manage All Readonly'
  'isEnabled' = $true
  'value' = 'Manage.All.Read'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "See and revoke certificates listed in the Azure Storage Account"
  'displayName' = 'Manage Storage Certificates'
  'isEnabled' = $true
  'value' = 'Manage.Storage'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "See certificates listed in the Azure Storage Account"
  'displayName' = 'Manage Storage Certificates Readonly'
  'isEnabled' = $true
  'value' = 'Manage.Storage.Read'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "See and revoke certificates enrolled via Intune"
  'displayName' = 'Manage Intune Certificates'
  'isEnabled' = $true
  'value' = 'Manage.Intune'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "See certificates enrolled via Intune"
  'displayName' = 'Manage Intune Certificates Readonly'
  'isEnabled' = $true
  'value' = 'Manage.Intune.Read'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "Request certificates of all types"
  'displayName' = 'Request All'
  'isEnabled' = $true
  'value' = 'Request.All'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "Request client certificates"
  'displayName' = 'Request Client'
  'isEnabled' = $true
  'value' = 'Request.Client'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "Request user certificates"
  'displayName' = 'Request User'
  'isEnabled' = $true
  'value' = 'Request.User'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "Request code signing certificates"
  'displayName' = 'Request Code Signing'
  'isEnabled' = $true
  'value' = 'Request.CodeSigning'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "Request Subordinate CA certificates for Firewalls"
  'displayName' = 'Request Subordinate CA'
  'isEnabled' = $true
  'value' = 'Request.SubCa'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "Request TLS server certificates"
  'displayName' = 'Request Server'
  'isEnabled' = $true
  'value' = 'Request.Server'
})

# To-be JSON defining additional, non-default, App Roles that User can have when authenticating against CertMaster
New-Variable -Name "CertmasterAdditionalManifest" -Scope "Script" -Option ReadOnly -Value @(@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "Request certificates of all types using CSR"
  'displayName' = 'Request All (CSR)'
  'isEnabled' = $true
  'value' = 'Request.All.Csr'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "Request certificates of all types using form"
  'displayName' = 'Request All (Form)'
  'isEnabled' = $true
  'value' = 'Request.All.Form'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "Request client certificates using CSR"
  'displayName' = 'Request Client (CSR)'
  'isEnabled' = $true
  'value' = 'Request.Client.Csr'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "Request client certificates using form"
  'displayName' = 'Request Client (Form)'
  'isEnabled' = $true
  'value' = 'Request.Client.Form'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "Request user certificates using CSR"
  'displayName' = 'Request User (CSR)'
  'isEnabled' = $true
  'value' = 'Request.User.Csr'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "Request user certificates using form"
  'displayName' = 'Request User (Form)'
  'isEnabled' = $true
  'value' = 'Request.User.Form'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "Request code signing certificates using CSR"
  'displayName' = 'Request Code Signing (CSR)'
  'isEnabled' = $true
  'value' = 'Request.CodeSigning.Csr'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "Request code signing certificates using form"
  'displayName' = 'Request Code Signing (Form)'
  'isEnabled' = $true
  'value' = 'Request.CodeSigning.Form'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "Request Subordinate CA certificates for Firewalls using CSR"
  'displayName' = 'Request Subordinate CA (CSR)'
  'isEnabled' = $true
  'value' = 'Request.SubCa.Csr'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "Request Subordinate CA certificates for Firewalls using form"
  'displayName' = 'Request Subordinate CA (Form)'
  'isEnabled' = $true
  'value' = 'Request.SubCa.Form'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "Request server certificates using CSR"
  'displayName' = 'Request Server (CSR)'
  'isEnabled' = $true
  'value' = 'Request.Server.Csr'
},
@{
  'allowedMemberTypes' = @( 'User' )
  'description' = "Request server certificates using form"
  'displayName' = 'Request Server (Form)'
  'isEnabled' = $true
  'value' = 'Request.Server.Form'
})

New-Variable -Name "Artifacts_Certmaster" -Scope "Script" -Option ReadOnly -Value @{
  windows = @{
    prod =  "https://raw.githubusercontent.com/scepman/install/master/dist-certmaster/CertMaster-Artifacts.zip"
    beta = "https://raw.githubusercontent.com/scepman/install/master/dist-certmaster/CertMaster-Artifacts-Beta.zip"
    internal = "https://raw.githubusercontent.com/scepman/install/master/dist-certmaster/CertMaster-Artifacts-Intern.zip"
  }
  linux = @{
    prod =  "https://raw.githubusercontent.com/scepman/install/master/dist-certmaster/CertMaster-Artifacts-Linux.zip"
    beta = "https://raw.githubusercontent.com/scepman/install/master/dist-certmaster/CertMaster-Artifacts-Linux-Beta.zip"
    internal = "https://raw.githubusercontent.com/scepman/install/master/dist-certmaster/CertMaster-Artifacts-Linux-Internal.zip"
  }
}

New-Variable -Name "Artifacts_Scepman" -Scope "Script" -Option ReadOnly -Value @{
  windows = @{
    prod =  "https://raw.githubusercontent.com/scepman/install/master/dist/Artifacts.zip"
    beta = "https://raw.githubusercontent.com/scepman/install/master/dist/Artifacts-Beta.zip"
    internal = "https://raw.githubusercontent.com/scepman/install/master/dist/Artifacts-Intern.zip"
  }
  linux = @{
    prod =  "https://raw.githubusercontent.com/scepman/install/master/dist/Artifacts-Linux.zip"
    beta = "https://raw.githubusercontent.com/scepman/install/master/dist/Artifacts-Linux-Beta.zip"
    internal = "https://raw.githubusercontent.com/scepman/install/master/dist/Artifacts-Linux-Internal.zip"
  }
}

New-Variable -Name "DCRName" -Value "dcr-scepmanlogs" -Scope "Script" -Option ReadOnly
New-Variable -Name "DCRAssociationName" -Value "dcr-association-scepmanlogs" -Scope "Script" -Option ReadOnly
New-Variable -Name "LogsTableName" -Value "SCEPman_CL" -Scope "Script" -Option ReadOnly
New-Variable -Name "LogsDestinationName" -Value "SCEPmanLogAnalyticsDestination" -Scope "Script" -Option ReadOnly

# SIG # Begin signature block
# MIIsjAYJKoZIhvcNAQcCoIIsfTCCLHkCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBDZjROoH4myKtv
# SJRvL4XIBLOPLQ2vbmSKTHhz2+FlFKCCFA4wggVyMIIDWqADAgECAhB2U/6sdUZI
# k/Xl10pIOk74MA0GCSqGSIb3DQEBDAUAMFMxCzAJBgNVBAYTAkJFMRkwFwYDVQQK
# ExBHbG9iYWxTaWduIG52LXNhMSkwJwYDVQQDEyBHbG9iYWxTaWduIENvZGUgU2ln
# bmluZyBSb290IFI0NTAeFw0yMDAzMTgwMDAwMDBaFw00NTAzMTgwMDAwMDBaMFMx
# CzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMSkwJwYDVQQD
# EyBHbG9iYWxTaWduIENvZGUgU2lnbmluZyBSb290IFI0NTCCAiIwDQYJKoZIhvcN
# AQEBBQADggIPADCCAgoCggIBALYtxTDdeuirkD0DcrA6S5kWYbLl/6VnHTcc5X7s
# k4OqhPWjQ5uYRYq4Y1ddmwCIBCXp+GiSS4LYS8lKA/Oof2qPimEnvaFE0P31PyLC
# o0+RjbMFsiiCkV37WYgFC5cGwpj4LKczJO5QOkHM8KCwex1N0qhYOJbp3/kbkbuL
# ECzSx0Mdogl0oYCve+YzCgxZa4689Ktal3t/rlX7hPCA/oRM1+K6vcR1oW+9YRB0
# RLKYB+J0q/9o3GwmPukf5eAEh60w0wyNA3xVuBZwXCR4ICXrZ2eIq7pONJhrcBHe
# OMrUvqHAnOHfHgIB2DvhZ0OEts/8dLcvhKO/ugk3PWdssUVcGWGrQYP1rB3rdw1G
# R3POv72Vle2dK4gQ/vpY6KdX4bPPqFrpByWbEsSegHI9k9yMlN87ROYmgPzSwwPw
# jAzSRdYu54+YnuYE7kJuZ35CFnFi5wT5YMZkobacgSFOK8ZtaJSGxpl0c2cxepHy
# 1Ix5bnymu35Gb03FhRIrz5oiRAiohTfOB2FXBhcSJMDEMXOhmDVXR34QOkXZLaRR
# kJipoAc3xGUaqhxrFnf3p5fsPxkwmW8x++pAsufSxPrJ0PBQdnRZ+o1tFzK++Ol+
# A/Tnh3Wa1EqRLIUDEwIrQoDyiWo2z8hMoM6e+MuNrRan097VmxinxpI68YJj8S4O
# JGTfAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0G
# A1UdDgQWBBQfAL9GgAr8eDm3pbRD2VZQu86WOzANBgkqhkiG9w0BAQwFAAOCAgEA
# Xiu6dJc0RF92SChAhJPuAW7pobPWgCXme+S8CZE9D/x2rdfUMCC7j2DQkdYc8pzv
# eBorlDICwSSWUlIC0PPR/PKbOW6Z4R+OQ0F9mh5byV2ahPwm5ofzdHImraQb2T07
# alKgPAkeLx57szO0Rcf3rLGvk2Ctdq64shV464Nq6//bRqsk5e4C+pAfWcAvXda3
# XaRcELdyU/hBTsz6eBolSsr+hWJDYcO0N6qB0vTWOg+9jVl+MEfeK2vnIVAzX9Rn
# m9S4Z588J5kD/4VDjnMSyiDN6GHVsWbcF9Y5bQ/bzyM3oYKJThxrP9agzaoHnT5C
# JqrXDO76R78aUn7RdYHTyYpiF21PiKAhoCY+r23ZYjAf6Zgorm6N1Y5McmaTgI0q
# 41XHYGeQQlZcIlEPs9xOOe5N3dkdeBBUO27Ql28DtR6yI3PGErKaZND8lYUkqP/f
# obDckUCu3wkzq7ndkrfxzJF0O2nrZ5cbkL/nx6BvcbtXv7ePWu16QGoWzYCELS/h
# AtQklEOzFfwMKxv9cW/8y7x1Fzpeg9LJsy8b1ZyNf1T+fn7kVqOHp53hWVKUQY9t
# W76GlZr/GnbdQNJRSnC0HzNjI3c/7CceWeQIh+00gkoPP/6gHcH1Z3NFhnj0qinp
# J4fGGdvGExTDOUmHTaCX4GUT9Z13Vunas1jHOvLAzYIwggboMIIE0KADAgECAhB3
# vQ4Ft1kLth1HYVMeP3XtMA0GCSqGSIb3DQEBCwUAMFMxCzAJBgNVBAYTAkJFMRkw
# FwYDVQQKExBHbG9iYWxTaWduIG52LXNhMSkwJwYDVQQDEyBHbG9iYWxTaWduIENv
# ZGUgU2lnbmluZyBSb290IFI0NTAeFw0yMDA3MjgwMDAwMDBaFw0zMDA3MjgwMDAw
# MDBaMFwxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTIw
# MAYDVQQDEylHbG9iYWxTaWduIEdDQyBSNDUgRVYgQ29kZVNpZ25pbmcgQ0EgMjAy
# MDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMsg75ceuQEyQ6BbqYoj
# /SBerjgSi8os1P9B2BpV1BlTt/2jF+d6OVzA984Ro/ml7QH6tbqT76+T3PjisxlM
# g7BKRFAEeIQQaqTWlpCOgfh8qy+1o1cz0lh7lA5tD6WRJiqzg09ysYp7ZJLQ8LRV
# X5YLEeWatSyyEc8lG31RK5gfSaNf+BOeNbgDAtqkEy+FSu/EL3AOwdTMMxLsvUCV
# 0xHK5s2zBZzIU+tS13hMUQGSgt4T8weOdLqEgJ/SpBUO6K/r94n233Hw0b6nskEz
# IHXMsdXtHQcZxOsmd/KrbReTSam35sOQnMa47MzJe5pexcUkk2NvfhCLYc+YVaMk
# oog28vmfvpMusgafJsAMAVYS4bKKnw4e3JiLLs/a4ok0ph8moKiueG3soYgVPMLq
# 7rfYrWGlr3A2onmO3A1zwPHkLKuU7FgGOTZI1jta6CLOdA6vLPEV2tG0leis1Ult
# 5a/dm2tjIF2OfjuyQ9hiOpTlzbSYszcZJBJyc6sEsAnchebUIgTvQCodLm3HadNu
# twFsDeCXpxbmJouI9wNEhl9iZ0y1pzeoVdwDNoxuz202JvEOj7A9ccDhMqeC5LYy
# AjIwfLWTyCH9PIjmaWP47nXJi8Kr77o6/elev7YR8b7wPcoyPm593g9+m5XEEofn
# GrhO7izB36Fl6CSDySrC/blTAgMBAAGjggGtMIIBqTAOBgNVHQ8BAf8EBAMCAYYw
# EwYDVR0lBAwwCgYIKwYBBQUHAwMwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4E
# FgQUJZ3Q/FkJhmPF7POxEztXHAOSNhEwHwYDVR0jBBgwFoAUHwC/RoAK/Hg5t6W0
# Q9lWULvOljswgZMGCCsGAQUFBwEBBIGGMIGDMDkGCCsGAQUFBzABhi1odHRwOi8v
# b2NzcC5nbG9iYWxzaWduLmNvbS9jb2Rlc2lnbmluZ3Jvb3RyNDUwRgYIKwYBBQUH
# MAKGOmh0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5jb20vY2FjZXJ0L2NvZGVzaWdu
# aW5ncm9vdHI0NS5jcnQwQQYDVR0fBDowODA2oDSgMoYwaHR0cDovL2NybC5nbG9i
# YWxzaWduLmNvbS9jb2Rlc2lnbmluZ3Jvb3RyNDUuY3JsMFUGA1UdIAROMEwwQQYJ
# KwYBBAGgMgECMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24u
# Y29tL3JlcG9zaXRvcnkvMAcGBWeBDAEDMA0GCSqGSIb3DQEBCwUAA4ICAQAldaAJ
# yTm6t6E5iS8Yn6vW6x1L6JR8DQdomxyd73G2F2prAk+zP4ZFh8xlm0zjWAYCImbV
# YQLFY4/UovG2XiULd5bpzXFAM4gp7O7zom28TbU+BkvJczPKCBQtPUzosLp1pnQt
# pFg6bBNJ+KUVChSWhbFqaDQlQq+WVvQQ+iR98StywRbha+vmqZjHPlr00Bid/XSX
# hndGKj0jfShziq7vKxuav2xTpxSePIdxwF6OyPvTKpIz6ldNXgdeysEYrIEtGiH6
# bs+XYXvfcXo6ymP31TBENzL+u0OF3Lr8psozGSt3bdvLBfB+X3Uuora/Nao2Y8nO
# ZNm9/Lws80lWAMgSK8YnuzevV+/Ezx4pxPTiLc4qYc9X7fUKQOL1GNYe6ZAvytOH
# X5OKSBoRHeU3hZ8uZmKaXoFOlaxVV0PcU4slfjxhD4oLuvU/pteO9wRWXiG7n9dq
# cYC/lt5yA9jYIivzJxZPOOhRQAyuku++PX33gMZMNleElaeEFUgwDlInCI2Oor0i
# xxnJpsoOqHo222q6YV8RJJWk4o5o7hmpSZle0LQ0vdb5QMcQlzFSOTUpEYck08T7
# qWPLd0jV+mL8JOAEek7Q5G7ezp44UCb0IXFl1wkl1MkHAHq4x/N36MXU4lXQ0x72
# f1LiSY25EXIMiEQmM2YBRN/kMw4h3mKJSAfa9TCCB6gwggWQoAMCAQICDF3VjaKN
# us83AvC1UTANBgkqhkiG9w0BAQsFADBcMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQ
# R2xvYmFsU2lnbiBudi1zYTEyMDAGA1UEAxMpR2xvYmFsU2lnbiBHQ0MgUjQ1IEVW
# IENvZGVTaWduaW5nIENBIDIwMjAwHhcNMjUxMTI3MTcwNDI2WhcNMjcxMTI4MTcw
# NDI2WjCCAQwxHTAbBgNVBA8MFFByaXZhdGUgT3JnYW5pemF0aW9uMRIwEAYDVQQF
# EwlIUkIgMTIzODExEzARBgsrBgEEAYI3PAIBAxMCREUxFzAVBgsrBgEEAYI3PAIB
# AhMGSGVzc2VuMSIwIAYLKwYBBAGCNzwCAQETEU9mZmVuYmFjaCBhbSBNYWluMQsw
# CQYDVQQGEwJERTEPMA0GA1UECBMGSGVzc2VuMRowGAYDVQQHExFPZmZlbmJhY2gg
# YW0gTWFpbjEZMBcGA1UECQwQS2Fpc2Vyc3RyYcOfZSAzOTEXMBUGA1UEChMOZ2x1
# ZWNra2FuamEgQUcxFzAVBgNVBAMTDmdsdWVja2thbmphIEFHMIICIjANBgkqhkiG
# 9w0BAQEFAAOCAg8AMIICCgKCAgEAkQoXi0dUFVttodx+Ydj1O6EZZqgDdlSGDA/6
# x1UCkMrWNVEW+LdbUGU8KW7fUcKPCAcDJNrXfXxZeBht2G4pPvhaMz/kBdSK6bI1
# sqo1WSN//beapdUefQpq/wgnUneq13tEJQAke6EWdLyidObcogBSp9wCXBbMWsTO
# utgCONjyu8AilmzRY+94lO7VwUA2LGGPX8FRAEt5AMzifsEo2lIEKiDou2H8HUUC
# PibiChiuT3oGIDYYnCA/RzS44E0cAuAzlD3NQNCeIDzfoFiUD8mAC1gYU6i8yIej
# jUGl8+kpbpBYjgzwbsiCBn0rDhrlpJ3MHkZCrp82kzWK0l7c3ukNvdlGcU4tKdXk
# AHgpJecdYUDvz9iaYFvYEivF+Jg+Tc8ZnzsP5/q3KKw4g0QiJ+MXgvwJx8OSvAKW
# tkwkLxgE9oxufs3Y8xsmwyWqxWDBcyzzvs6yISnUaeTtGmyB8BsEbahDFrxHhV6U
# nwxNpJ+iM+j08J1tNIW0AXjY6ojGOIC8IIL+EiK34MXJ6Jxy22mntMnc6ztK6c7H
# IKiRHIPX4jXtg7IYRS/k5muuIt/xKzN7qtF9xJbaZi8jRE6fgWDwszLJUMHSLthh
# yKTsUEvuqZ79WnSHErg26EPQYirAY/IFt7Z7+3SDW2WI8uG2qY6hkpE0hm+/F3uS
# M+s98jUCAwEAAaOCAbYwggGyMA4GA1UdDwEB/wQEAwIHgDCBnwYIKwYBBQUHAQEE
# gZIwgY8wTAYIKwYBBQUHMAKGQGh0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5jb20v
# Y2FjZXJ0L2dzZ2NjcjQ1ZXZjb2Rlc2lnbmNhMjAyMC5jcnQwPwYIKwYBBQUHMAGG
# M2h0dHA6Ly9vY3NwLmdsb2JhbHNpZ24uY29tL2dzZ2NjcjQ1ZXZjb2Rlc2lnbmNh
# MjAyMDBVBgNVHSAETjBMMEEGCSsGAQQBoDIBAjA0MDIGCCsGAQUFBwIBFiZodHRw
# czovL3d3dy5nbG9iYWxzaWduLmNvbS9yZXBvc2l0b3J5LzAHBgVngQwBAzAJBgNV
# HRMEAjAAMEcGA1UdHwRAMD4wPKA6oDiGNmh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5j
# b20vZ3NnY2NyNDVldmNvZGVzaWduY2EyMDIwLmNybDATBgNVHSUEDDAKBggrBgEF
# BQcDAzAfBgNVHSMEGDAWgBQlndD8WQmGY8Xs87ETO1ccA5I2ETAdBgNVHQ4EFgQU
# q/cn5ijjtp0mG1yoiF02hg4dx4IwDQYJKoZIhvcNAQELBQADggIBAJ1TZv/rvy2w
# jANcL/kb6rTk+/6L7l49UghLghUKFVfrdEEc+21iexA7zlkvhM0TrhdiFU7TjDky
# InPctzsDlqwUhawEx4PT8ZkZkZzm25YWaqtZH44st/Fz59KiG+85NUdRd+0cL3Y8
# NR66z3xfI6K3W/nrIcE6RHm/opOM+L02Hd2MBligLnoFYcTvR3NPCA21A6+IOaYM
# n5YZzNKFXWry8ZHpWjnE4u9mxHYpS1zu2aIkwL8mfYM5moYoh0PAcp9XA5Sm4KrV
# LeIzZ3HIy4EzLCbFBP+OGFpkqq8pTtmYItG+g1rYEg5a8egrY83zJMHazaTFBgRI
# MNXCgeMZhC8O6NsAtbj3FSbiYKg1hNwZzHYL+uL3jcPZjuUoOpmvXu67xWs4ZfdT
# Mluy5E7FyWwtnOjr/04EXWyKATYMDIkd47Wqam/ZB7umF5T5YPnmTlv18ArEXuVQ
# EEpS/cN90DtRz2OGruu+V9bg3fk6NKDJLve8detDOTTBN0C/bFGxI5YLHmwVAdaq
# pz3t14ShRjVcxP7aN0bEL3YOuQvjnjQGe29H6n/MPf8UG4WYMd+a8qIP4HROLJq0
# YJylzYBglqoQeQC/OG+PtWTvL9oByPVYNc+llAuap/xmWSLZgAqPbi+PAfow69Lg
# bppHUCnJhNkXD/mJ4qB0KvPG+bzL19dEMYIX1DCCF9ACAQEwbDBcMQswCQYDVQQG
# EwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEyMDAGA1UEAxMpR2xvYmFs
# U2lnbiBHQ0MgUjQ1IEVWIENvZGVTaWduaW5nIENBIDIwMjACDF3VjaKNus83AvC1
# UTANBglghkgBZQMEAgEFAKCBhDAYBgorBgEEAYI3AgEMMQowCKACgAChAoAAMBkG
# CSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEE
# AYI3AgEVMC8GCSqGSIb3DQEJBDEiBCB5cMpwISHxEs1p+YXYc6D4dx19ifjjVPoC
# TxVBoynpGTANBgkqhkiG9w0BAQEFAASCAgBCvZLWFtj+KoZ2Cdc+sXhnPjvECk3l
# PtmJD1k4gSOyE2p28zNMJ2EpnL5PXEqmjLkhs0F/wDLgmZPNWInh6hsnXrbGSIun
# cT5E4NCDv8UM9lmLhgE8F7hQoU6ftZj87GxZyEouRfKAaZbsG7ODZRwX93OYaCVC
# 3G9oR0ixX+FKiv4wMuq8Z5Ho4RMQ5fA/MBdkYky0mrRois7TlXIs0Ni8HZFSqsA3
# NkQ7SmF0EtwhkVwR8/Hj9zUuaObBrmVPyZ6DqGw1yILI1cuAlfrCnllkGSWkBInp
# 2sIkC0gtmfkQKOmbHMyWFebyEYW6YBCIAvCjIzrBMi7Ueo12UQA9tES0+2OBygBG
# ckCVlkqDvcMi2Y/stw6DUgivlZ9VjxpcDn6WUOdgQGVXtFVtnMUoYF0bmxB/LRkS
# a0l8OoNcXaT70KSwr+MJq3DIUz48BzsMVbXbPPefXWJTYrojOQFC8Aq9fDmylYDz
# YqfPPnbv0//p3BkkIw6d3A7izdwdi61nNKMRRESBpV0xA83jZe4jk0Gt6jyRQtFq
# mKtjZg+hMpgJ5mtlq0j6ig1L6U6osQnW5FGoGIm7e6Xwu84RY9OT6MJO6iDrG2TG
# ++zlNIZ4/lUPFlmR2Sahn4YGiTu7VbSKOXEwK1M4rIZjcWVl7EisL0SkPwrkwE3r
# 25OXm5Mv8XlHi6GCFLIwghSuBgorBgEEAYI3AwMBMYIUnjCCFJoGCSqGSIb3DQEH
# AqCCFIswghSHAgEDMQ8wDQYJYIZIAWUDBAIBBQAwggFqBgsqhkiG9w0BCRABBKCC
# AVkEggFVMIIBUQIBAQYKKwYBBAGEWQoDATAxMA0GCWCGSAFlAwQCAQUABCCWVTvI
# Qx5/KMy3JbzIt9RhBuR7/saRgtzY2niLQgGWjQIGacZcWt9AGBMyMDI2MDMzMTEw
# MTgwNy44MThaMASAAgH0oIHppIHmMIHjMQswCQYDVQQGEwJVUzETMBEGA1UECBMK
# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
# IENvcnBvcmF0aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRp
# b25zIExpbWl0ZWQxJzAlBgNVBAsTHm5TaGllbGQgVFNTIEVTTjo0NTFBLTA1RTAt
# RDk0NzE1MDMGA1UEAxMsTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZSBTdGFtcGlu
# ZyBBdXRob3JpdHmggg8pMIIHgjCCBWqgAwIBAgITMwAAAAXlzw//Zi7JhwAAAAAA
# BTANBgkqhkiG9w0BAQwFADB3MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9z
# b2Z0IENvcnBvcmF0aW9uMUgwRgYDVQQDEz9NaWNyb3NvZnQgSWRlbnRpdHkgVmVy
# aWZpY2F0aW9uIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMjAwHhcNMjAx
# MTE5MjAzMjMxWhcNMzUxMTE5MjA0MjMxWjBhMQswCQYDVQQGEwJVUzEeMBwGA1UE
# ChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUHVi
# bGljIFJTQSBUaW1lc3RhbXBpbmcgQ0EgMjAyMDCCAiIwDQYJKoZIhvcNAQEBBQAD
# ggIPADCCAgoCggIBAJ5851Jj/eDFnwV9Y7UGIqMcHtfnlzPREwW9ZUZHd5HBXXBv
# f7KrQ5cMSqFSHGqg2/qJhYqOQxwuEQXG8kB41wsDJP5d0zmLYKAY8Zxv3lYkuLDs
# fMuIEqvGYOPURAH+Ybl4SJEESnt0MbPEoKdNihwM5xGv0rGofJ1qOYSTNcc55EbB
# T7uq3wx3mXhtVmtcCEr5ZKTkKKE1CxZvNPWdGWJUPC6e4uRfWHIhZcgCsJ+sozf5
# EeH5KrlFnxpjKKTavwfFP6XaGZGWUG8TZaiTogRoAlqcevbiqioUz1Yt4FRK53P6
# ovnUfANjIgM9JDdJ4e0qiDRm5sOTiEQtBLGd9Vhd1MadxoGcHrRCsS5rO9yhv2fj
# JHrmlQ0EIXmp4DhDBieKUGR+eZ4CNE3ctW4uvSDQVeSp9h1SaPV8UWEfyTxgGjOs
# RpeexIveR1MPTVf7gt8hY64XNPO6iyUGsEgt8c2PxF87E+CO7A28TpjNq5eLiiun
# hKbq0XbjkNoU5JhtYUrlmAbpxRjb9tSreDdtACpm3rkpxp7AQndnI0Shu/fk1/rE
# 3oWsDqMX3jjv40e8KN5YsJBnczyWB4JyeeFMW3JBfdeAKhzohFe8U5w9WuvcP1E8
# cIxLoKSDzCCBOu0hWdjzKNu8Y5SwB1lt5dQhABYyzR3dxEO/T1K/BVF3rV69AgMB
# AAGjggIbMIICFzAOBgNVHQ8BAf8EBAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAwHQYD
# VR0OBBYEFGtpKDo1L0hjQM972K9J6T7ZPdshMFQGA1UdIARNMEswSQYEVR0gADBB
# MD8GCCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0Rv
# Y3MvUmVwb3NpdG9yeS5odG0wEwYDVR0lBAwwCgYIKwYBBQUHAwgwGQYJKwYBBAGC
# NxQCBAweCgBTAHUAYgBDAEEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTI
# ftJqhSobyhmYBAcnz1AQT2ioojCBhAYDVR0fBH0wezB5oHegdYZzaHR0cDovL3d3
# dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwSWRlbnRpdHkl
# MjBWZXJpZmljYXRpb24lMjBSb290JTIwQ2VydGlmaWNhdGUlMjBBdXRob3JpdHkl
# MjAyMDIwLmNybDCBlAYIKwYBBQUHAQEEgYcwgYQwgYEGCCsGAQUFBzAChnVodHRw
# Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMElk
# ZW50aXR5JTIwVmVyaWZpY2F0aW9uJTIwUm9vdCUyMENlcnRpZmljYXRlJTIwQXV0
# aG9yaXR5JTIwMjAyMC5jcnQwDQYJKoZIhvcNAQEMBQADggIBAF+Idsd+bbVaFXXn
# THho+k7h2ESZJRWluLE0Oa/pO+4ge/XEizXvhs0Y7+KVYyb4nHlugBesnFqBGEdC
# 2IWmtKMyS1OWIviwpnK3aL5JedwzbeBF7POyg6IGG/XhhJ3UqWeWTO+Czb1c2NP5
# zyEh89F72u9UIw+IfvM9lzDmc2O2END7MPnrcjWdQnrLn1Ntday7JSyrDvBdmgbN
# nCKNZPmhzoa8PccOiQljjTW6GePe5sGFuRHzdFt8y+bN2neF7Zu8hTO1I64XNGqs
# t8S+w+RUdie8fXC1jKu3m9KGIqF4aldrYBamyh3g4nJPj/LR2CBaLyD+2BuGZCVm
# oNR/dSpRCxlot0i79dKOChmoONqbMI8m04uLaEHAv4qwKHQ1vBzbV/nG89LDKbRS
# SvijmwJwxRxLLpMQ/u4xXxFfR4f/gksSkbJp7oqLwliDm/h+w0aJ/U5ccnYhYb7v
# PKNMN+SZDWycU5ODIRfyoGl59BsXR/HpRGtiJquOYGmvA/pk5vC1lcnbeMrcWD/2
# 6ozePQ/TWfNXKBOmkFpvPE8CH+EeGGWzqTCjdAsno2jzTeNSxlx3glDGJgcdz5D/
# AAxw9Sdgq/+rY7jjgs7X6fqPTXPmaCAJKVHAP19oEjJIBwD1LyHbaEgBxFCogYSO
# iUIr0Xqcr1nJfiWG2GwYe6ZoAF1bMIIHnzCCBYegAwIBAgITMwAAAFxhTACmp/Lp
# IwAAAAAAXDANBgkqhkiG9w0BAQwFADBhMQswCQYDVQQGEwJVUzEeMBwGA1UEChMV
# TWljcm9zb2Z0IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUHVibGlj
# IFJTQSBUaW1lc3RhbXBpbmcgQ0EgMjAyMDAeFw0yNjAxMDgxODU5MDZaFw0yNzAx
# MDcxODU5MDZaMIHjMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQ
# MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u
# MS0wKwYDVQQLEyRNaWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQx
# JzAlBgNVBAsTHm5TaGllbGQgVFNTIEVTTjo0NTFBLTA1RTAtRDk0NzE1MDMGA1UE
# AxMsTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZSBTdGFtcGluZyBBdXRob3JpdHkw
# ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCuNYzOVXmTR3eDbVZVMTaD
# h6n+nv04Jw4zW6v7OTN1oTSxBIhyq6QKMBanA2eXpOyqQ0VvcXgcC5Sz3aMgldXy
# KR79bMIeLVPQtXSCsjrrLjd9mpdd5VQq4HfKgaisPLFv6ynp1x2g1veINh5V+bLE
# Fp1XCqWWCEd1KRMQpkUkLSFRBZaFmb6Nz3MGrRAmU4nxt0wIV/20wSlzhaFKalpP
# 0hSwI+1sVCxN8H8rlgh+0jGNZgCJEnXKw3SO/wJEjRhZMPaUSGEX7cwCrzqj/y1h
# nA+a8GbwfZ0lCQPmMrjbcvx3j1VL6VecFnpdhfyP5ApLH5CSkXtNYhiFi7mG889+
# Miz+Ccr7awPiFP1LvAR9CTDZHz4ua/A5r4jOehH9AU7eEPxulAwy0BBywOl7tpK3
# gKMexwQygHFpZe5d7TPiuVzKwktbh9ro4CkDwcpdUHCRgysNOuZr8Wd60f9DLkio
# oQFRh/micZx82DUTDlM5Ctcl4Ns4HejZNRGr+Gvd7V9kKuZF6XmW2td9qIZGL4eb
# 515I0FUPRycH3viftPZVKYDbkh8G/4I84tmfPh4PacHu6JCdkC0BsOU0EZMP8Su2
# h9NmgwVzk86NVH7f1JhFcWwsxZxhRgI3K9EcH5xhWiMsqxebmZkrFighdqO7+yzo
# zZZ3lkkqBWikYTg7ikY8PwIDAQABo4IByzCCAccwHQYDVR0OBBYEFK77MhyRGGRE
# OW504FoDEie6JOdpMB8GA1UdIwQYMBaAFGtpKDo1L0hjQM972K9J6T7ZPdshMGwG
# A1UdHwRlMGMwYaBfoF2GW2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMv
# Y3JsL01pY3Jvc29mdCUyMFB1YmxpYyUyMFJTQSUyMFRpbWVzdGFtcGluZyUyMENB
# JTIwMjAyMC5jcmwweQYIKwYBBQUHAQEEbTBrMGkGCCsGAQUFBzAChl1odHRwOi8v
# d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMFB1Ymxp
# YyUyMFJTQSUyMFRpbWVzdGFtcGluZyUyMENBJTIwMjAyMC5jcnQwDAYDVR0TAQH/
# BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAOBgNVHQ8BAf8EBAMCB4AwZgYD
# VR0gBF8wXTBRBgwrBgEEAYI3TIN9AQEwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3
# dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMAgGBmeB
# DAEEAjANBgkqhkiG9w0BAQwFAAOCAgEAhXbQN9yxJIQFnYCFueVeZ09WRv1WkODN
# sgQQ7iClH9tHz1tD6pbi0LT3KHa1xmQ3gojjdzqd5FE1wGMAaZvu2DzKyW0ZWYDE
# D7BbW0nRwvWxE9DSVfKFwxhFgTkHu5cMB9Ofj2te8Qdv5plXp1lra2V9dSPAaBY3
# D9g8GUieV9Ruk03uhmCZffR+fIobO07/0xGT+3PJo+nlXjgrIsihl6UU2CS/cpbb
# enCinHJnK2lUozE7+N25qSyy9Vgqvsv09xxLY14syl0aOZt0xOvVIIqLKmeui3h9
# HbxQfbtfgexLQ40z7wsnOJ/N/lt75vQaswZr39xEoMLeCeShyvgqMionmkQXT961
# Ti6LpNzGhZABR7YVpX+q84f9A6Kbl8amG8txKLdXOd9DKkCd9b+9sSTEnuULPsyu
# earCoNtr3JOm9psIQ/2TYeumHgbFWNpEvWoZBjLUfjoD89A5w4vjnketG8ImRyYn
# 8MhzE3Brk/aVJ6e5wrentLyIYbZidbZRCDLq1uEmLVColC8z+ki3avMrNfgVKIQo
# bf7YIvom1n00p6O73gQu8WiYuibJKgPxPD3RM1Dlh2m8GIkh15WTG6Gzk0dA5NyM
# 2qoFFF/hNsbH5lY9qLrYb1meeXNfz3yytaeMs0Xvfq2N1eDYtDkRlEFoXn4JDWLK
# QdY2Ylw6vIMxggPUMIID0AIBATB4MGExCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVN
# aWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBQdWJsaWMg
# UlNBIFRpbWVzdGFtcGluZyBDQSAyMDIwAhMzAAAAXGFMAKan8ukjAAAAAABcMA0G
# CWCGSAFlAwQCAQUAoIIBLTAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwLwYJ
# KoZIhvcNAQkEMSIEII3qFEwYui/lxhuvHFYZDztewRsRq6abRtRvWug0+vjkMIHd
# BgsqhkiG9w0BCRACLzGBzTCByjCBxzCBoAQg97pqQYd3bjD5LeiLZCbTs0cAUbdU
# PCOdd6vJa36g7twwfDBlpGMwYTELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jv
# c29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFB1YmxpYyBSU0Eg
# VGltZXN0YW1waW5nIENBIDIwMjACEzMAAABcYUwApqfy6SMAAAAAAFwwIgQgCg5A
# b32DSSb6iTYeuTBEyMqGeW2AZarzQz7wXipoN/kwDQYJKoZIhvcNAQELBQAEggIA
# HCi4x6d8F/6fNxxFGH4obEIt/z/Uceo0livhw12q4AqQFi9d5v8ijh2JoBjfSfBr
# A8C4MQ5GU27HeMqPHFUKWHfi7mt3bpGxQMheSyaTjhd/JECvLFAlV2lRm0vkC7gQ
# JM+/Tb5gpp5yuo8uHujY9Il5fUolWEshENIaPlfowwD9IImY95HHVKCahN6mBG3/
# jG+9Gk47iFV5HPm9VAF+vO46dqTsWcOchUlpfU1BP1zDVDGDt2BKvS+7DM5YfyZV
# 3pEHTVctP8BBE3kDH0PzEn05kw8awfaXJG5v3lK1Jd2e4WDAb/puqNAnWAbOCN63
# XjBaC182aUHH7tbga6P89PRib+ebVi2fcQZHifdwldquKbtiQ/YaaOBdglbxBkND
# rciC4GlzXZ0rQjuJ7jKkBfxr61wLb7wDrEb4hLek695vaOOo53Ihfl8J7xuv/db0
# LyP2HVI26mQNCnDHldOLixRrVQAO1k0fHdqi/cRA+Uj2jLu8QV2vDHPlxDk4WeN/
# m0uDYnJrdgEdKqJGvnIIzERgmd/t/UBYX5Gr/Fw4AuN7vM0PHWy90UFhqcVeh6uz
# ZhrzgRZ1MBMoo2mffzVVt/u1uql/Tf47pbA142J6xGeY6ff/bQLmbYaIIOt3GwGk
# oomdkAFVF/B9XwXUKNLbV9lF+pliF5c6Zpx2JCThKRU=
# SIG # End signature block