DSInternals.psd1

#
# Module manifest for module 'DSInternals'
#

@{

# Script module file associated with this manifest.
RootModule = 'DSInternals.Bootstrap.psm1'

# Version number of this module.
ModuleVersion = '6.1.1'

# Supported PSEditions
CompatiblePSEditions = @('Desktop', 'Core')

# ID used to uniquely identify this module
GUID = '766b3ad8-eb78-48e6-84bd-61b31d96b53e'

# Author of this module
Author = 'Michael Grafnetter'

# Company or vendor of this module
CompanyName = 'DSInternals'

# Copyright statement for this module
Copyright = '(c) 2015-2025 Michael Grafnetter. All rights reserved.'

# Description of the functionality provided by this module
Description = @"
The DSInternals PowerShell Module exposes several internal features of Active Directory and Azure Active Directory. These include FIDO2 and NGC key auditing, offline ntds.dit file manipulation, password auditing, DC recovery from IFM backups and password hash calculation.
 
DISCLAIMER: Features exposed through this module are not supported by Microsoft and it is therefore not intended to be used in production environments. Improper use might cause irreversible damage to domain controllers or negatively impact domain security.
"@


# Minimum version of the Windows PowerShell engine required by this module
PowerShellVersion = '5.1'

# Processor architecture (None, X86, Amd64, ARM64) required by this module
ProcessorArchitecture = 'None'

# Type files (.ps1xml) to be loaded when importing this module
TypesToProcess = @()

# Format files (.ps1xml) to be loaded when importing this module
FormatsToProcess = @(
    'Views\DSInternals.AzureADUser.format.ps1xml',
    'Views\DSInternals.Hash.format.ps1xml',
    'Views\DSInternals.RoamedCredential.format.ps1xml',
    'Views\DSInternals.Kerberos.format.ps1xml',
    'Views\DSInternals.KeyCredential.format.ps1xml',
    'Views\DSInternals.FidoKeyMaterial.format.ps1xml',
    'Views\DSInternals.BitLockerRecoveryInformation.format.ps1xml',
    'Views\DSInternals.LapsPasswordInformation.format.ps1xml',
    'Views\DSInternals.DSAccount.ExportViews.format.ps1xml',
    'Views\DSInternals.DSAccount.format.ps1xml',
    'Views\DSInternals.DSUser.format.ps1xml',
    'Views\DSInternals.DSComputer.format.ps1xml',
    'Views\DSInternals.GroupManagedServiceAccount.format.ps1xml',
    'Views\DSInternals.PasswordQualityTestResult.format.ps1xml',
    'Views\DSInternals.KdsRootKey.format.ps1xml',
    'Views\DSInternals.SamDomainPasswordInformation.format.ps1xml',
    'Views\DSInternals.LsaPolicyInformation.format.ps1xml',
    'Views\DSInternals.DnsResourceRecord.format.ps1xml',
    'Views\DSInternals.TrustedDomain.format.ps1xml'
)

# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
NestedModules = @()

# Functions to export from this module
FunctionsToExport = @()

# Cmdlets to export from this module
CmdletsToExport = @(
    'ConvertTo-NTHash',
    'ConvertTo-LMHash',
    'Set-SamAccountPasswordHash',
    'ConvertFrom-UnicodePassword',
    'ConvertTo-UnicodePassword',
    'ConvertTo-OrgIdHash',
    'ConvertFrom-GPPrefPassword',
    'ConvertTo-GPPrefPassword',
    'Set-ADDBPrimaryGroup',
    'Get-ADDBDomainController',
    'Set-ADDBDomainController',
    'Get-ADDBSchemaAttribute',
    'Remove-ADDBObject',
    'Get-ADDBAccount',
    'Get-BootKey',
    'Get-ADReplAccount',
    'ConvertTo-Hex',
    'ConvertTo-KerberosKey',
    'ConvertFrom-ADManagedPasswordBlob',
    'Get-ADReplKdsRootKey',
    'Get-ADDBBackupKey',
    'Get-ADReplBackupKey',
    'Save-DPAPIBlob',
    'Set-ADDBBootKey',
    'Test-PasswordQuality',
    'Get-ADDBServiceAccount',
    'Get-ADDBBitLockerRecoveryInformation',
    'Get-ADDBKdsRootKey',
    'Get-SamPasswordPolicy',
    'Get-ADSIAccount',
    'Enable-ADDBAccount',
    'Disable-ADDBAccount',
    'Get-ADKeyCredential',
    'Set-ADDBAccountPassword',
    'Set-ADDBAccountPasswordHash',
    'Get-LsaPolicyInformation',
    'Set-LSAPolicyInformation',
    'New-ADDBRestoreFromMediaScript',
    'Get-LsaBackupKey',
    'Add-ADReplNgcKey',
    'Get-AzureADUserEx',
    'Set-AzureADUserEx',
    'Unlock-ADDBAccount',
    'Get-ADDBDnsResourceRecord',
    'Get-ADDBDnsZone',
    'Set-ADDBAccountControl',
    'Get-ADDBTrust'
    # Intentionally excluded: 'Add-ADDBSidHistory'
)

# Variables to export from this module
VariablesToExport = @()

# Aliases to export from this module
AliasesToExport = @(
    'Set-WinUserPasswordHash',
    'Set-ADAccountPasswordHash',
    'ConvertFrom-UnattendXmlPassword',
    'ConvertTo-AADHash',
    'ConvertTo-MsoPasswordHash',
    'Get-ADReplicationAccount',
    'ConvertFrom-ManagedPasswordBlob',
    'Get-SysKey',
    'Set-ADDBSysKey',
    'New-NTHashSet',
    'Test-ADPasswordQuality',
    'Test-ADDBPasswordQuality',
    'Test-ADReplPasswordQuality',
    'Get-ADPasswordPolicy',
    'Get-ADDefaultPasswordPolicy',
    'Get-KeyCredential',
    'Get-KeyCredentialLink',
    'Get-ADKeyCredentialLink',
    'Get-LsaPolicy',
    'Set-LsaPolicy',
    'Get-SystemKey',
    'Write-ADReplNgcKey',
    'Write-ADNgcKey',
    'Add-ADNgcKey',
    'New-ADKeyCredential',
    'New-ADKeyCredentialLink',
    'New-ADNgcKey',
    'Get-ADDBGroupManagedServiceAccount',
    'Get-ADDBBitLockerRecoveryInfo',
    'Get-ADDBBitLockerKeyProtector',
    'Get-ADDBBitLockerRecoveryKey',
    'Get-ADDBBitLockerKey',
    'Get-ADDBBitLockerRecoveryPassword',
    'Get-ADDBFVERecoveryKey',
    'Get-ADDBFVERecoveryPassword',
    'Get-ADDBDelegatedManagedServiceAccount',
    'Get-ADDBFVERecoveryInformation',
    'Get-ADDBFVERecoveryInfo',
    'Get-ADDBDnsRecord'
)

# List of assemblies that must be loaded prior to importing this module
RequiredAssemblies = @()

# List of all files packaged with this module
FileList = @(
    'DSInternals.types.ps1xml',
    'License.txt',
    'Integrity.Tests.ps1',
    'en-US\about_DSInternals.help.txt',
    'en-US\DSInternals.PowerShell.dll-Help.xml',
    'net48\DSInternals.Common.dll',
    'net48\DSInternals.DataStore.dll',
    'net48\DSInternals.Replication.dll',
    'net48\DSInternals.Replication.Model.dll',
    'net48\DSInternals.SAM.dll',
    'net48\amd64\DSInternals.Replication.Interop.dll',
    'net48\arm64\DSInternals.Replication.Interop.dll',
    'net48\x86\DSInternals.Replication.Interop.dll',
    'net48\Esent.Interop.dll',
    'net48\Esent.Isam.dll',
    'net48\CBOR.dll',
    'net48\Numbers.dll',
    'net48\URIUtility.dll',
    'net48\System.Formats.Asn1.dll',
    'net48\System.Buffers.dll',
    'net48\System.Memory.dll',
    'net48\System.Numerics.Vectors.dll',
    'net48\System.Runtime.CompilerServices.Unsafe.dll',
    'net48\System.Text.Json.dll',
    'net48\System.Text.Encodings.Web.dll',
    'net48\System.IO.Pipelines.dll',
    'net48\System.Threading.Tasks.Extensions.dll',
    'net48\Microsoft.Bcl.AsyncInterfaces.dll',
    'net8.0-windows\DSInternals.DataStore.dll',
    'net8.0-windows\DSInternals.Replication.dll',
    'net8.0-windows\DSInternals.Replication.Model.dll',
    'net8.0-windows\DSInternals.Common.dll',
    'net8.0-windows\DSInternals.SAM.dll',
    'net8.0-windows\amd64\DSInternals.Replication.Interop.dll',
    'net8.0-windows\arm64\DSInternals.Replication.Interop.dll',
    'net8.0-windows\x86\DSInternals.Replication.Interop.dll',
    'net8.0-windows\Esent.Interop.dll',
    'net8.0-windows\Esent.Isam.dll',
    'net8.0-windows\CBOR.dll',
    'net8.0-windows\Numbers.dll',
    'net8.0-windows\URIUtility.dll'
)

# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
PrivateData = @{

    PSData = @{

        # Tags applied to this module. These help with module discovery in online galleries.
        Tags = @('ActiveDirectory', 'AzureAD', 'Security', 'SAM', 'LSA', 'DNS', 'BitLocker', 'LAPS', 'FIDO', 'NTDS', 'PSModule', 'Windows', 'PSEdition_Desktop', 'PSEdition_Core')

        # A URL to the license for this module.
        LicenseUri = 'https://github.com/MichaelGrafnetter/DSInternals/blob/master/Src/DSInternals.PowerShell/License.txt'

        # A URL to the main website for this project.
        ProjectUri = 'https://github.com/MichaelGrafnetter/DSInternals'

        # A URL to an icon representing this module.
        IconUri = 'https://raw.githubusercontent.com/MichaelGrafnetter/DSInternals/master/Src/Icons/module_black.png'

        # ReleaseNotes of this module
        ReleaseNotes = @"
- Resolved issues with parsing LAPS passwords and key credentials.
"@

    } # End of PSData hashtable

} # End of PrivateData hashtable

}

# SIG # Begin signature block
# MIIt6AYJKoZIhvcNAQcCoIIt2TCCLdUCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAm8P3kVS5zgXie
# BYg7duPwPrqT2gDowDbp5QfCKanfyqCCEg8wggV4MIIDYKADAgECAhBLLDsBAYut
# KryMe1s+7ZBXMA0GCSqGSIb3DQEBDAUAMFYxCzAJBgNVBAYTAkdCMRgwFgYDVQQK
# Ew9TZWN0aWdvIExpbWl0ZWQxLTArBgNVBAMTJFNlY3RpZ28gUHVibGljIENvZGUg
# U2lnbmluZyBSb290IFI0NjAeFw0yMTAzMjIwMDAwMDBaFw00NjAzMjEyMzU5NTla
# MFYxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxLTArBgNV
# BAMTJFNlY3RpZ28gUHVibGljIENvZGUgU2lnbmluZyBSb290IFI0NjCCAiIwDQYJ
# KoZIhvcNAQEBBQADggIPADCCAgoCggIBAI3nlBIiBCR0Lv8WIwKSirauNoWsR9Qj
# kSs+3H3iMaBRb6yEkeNSirXilt7Qh2MkiYr/7xKTO327toq9vQV/J5trZdOlDGmx
# vEk5mvFtbqrkoIMn2poNK1DpS1uzuGQ2pH5KPalxq2Gzc7M8Cwzv2zNX5b40N+OX
# G139HxI9ggN25vs/ZtKUMWn6bbM0rMF6eNySUPJkx6otBKvDaurgL6en3G7X6P/a
# IatAv7nuDZ7G2Z6Z78beH6kMdrMnIKHWuv2A5wHS7+uCKZVwjf+7Fc/+0Q82oi5P
# MpB0RmtHNRN3BTNPYy64LeG/ZacEaxjYcfrMCPJtiZkQsa3bPizkqhiwxgcBdWfe
# beljYx42f2mJvqpFPm5aX4+hW8udMIYw6AOzQMYNDzjNZ6hTiPq4MGX6b8fnHbGD
# dGk+rMRoO7HmZzOatgjggAVIQO72gmRGqPVzsAaV8mxln79VWxycVxrHeEZ8cKqU
# G4IXrIfptskOgRxA1hYXKfxcnBgr6kX1773VZ08oXgXukEx658b00Pz6zT4yRhMg
# NooE6reqB0acDZM6CWaZWFwpo7kMpjA4PNBGNjV8nLruw9X5Cnb6fgUbQMqSNenV
# etG1fwCuqZCqxX8BnBCxFvzMbhjcb2L+plCnuHu4nRU//iAMdcgiWhOVGZAA6RrV
# wobx447sX/TlAgMBAAGjQjBAMB0GA1UdDgQWBBQy65Ka/zWWSC8oQEJwIDaRXBeF
# 5jAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQwF
# AAOCAgEAdmXC49ciStcdiV7/aV7GFAJNc6bNzSjKsDfqv6fJIaqqX9q/9oNs0IDR
# ClwApMvzzDkPnkFxiNU86Ip7jBcj98o0dJFsBq5QPwBZsiY8PBeDVwM+LdEaPdTP
# B1SyQwtScqiI9cQX8m/RWKXRaOQ9mAgY7jb0SEia+lRw8IjUcBYwQknQ2T91S0Vx
# 2K6iu2EOiIVQV7m6ESs2KR+PIHKeXJ6J0YLaRY1qmdqEcWszpRC7efCX9nSBoD9X
# x4aMMIwOOJWuAcYeq9yoH28v1/92Hq4Xc23luXWzYQaolTPCTm+yN/KVvoVUErnI
# vWJCdvcq/PU3MQMmV/7R5tvwFgJyg4wIs4SsqeQH+KGIxBNaUEdUQqbt0EE0LJix
# PqI0oQxdvaz3f3mnv20MVjKFG0uXuOGs5KQ8cfGj4U5j1vRGuvULCOFjPO2iWS8K
# 1CxrI6KeoU3u0RLNGDNQ7UFuy389QWALYwt49XXvQxW3NgsQr9xcGKmY2TbZHdiE
# swaKguN7GySnQs7uDz5WXDJ97EveVis7O7r5eljQUbZs1vZYolIkekSGoRxgP0nT
# /Pr5hBwFwjS/4ubxGSqZL1ZXNZy19QfDRi/eOD0ZDfuj8d8Tnuepclgxr73q2tfW
# bXczM470rP3Bv0mH0nAFZ3QGpvZ4QC0WBJEPH9MWxLh6Fw0kybIwggYaMIIEAqAD
# AgECAhBiHW0MUgGeO5B5FSCJIRwKMA0GCSqGSIb3DQEBDAUAMFYxCzAJBgNVBAYT
# AkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxLTArBgNVBAMTJFNlY3RpZ28g
# UHVibGljIENvZGUgU2lnbmluZyBSb290IFI0NjAeFw0yMTAzMjIwMDAwMDBaFw0z
# NjAzMjEyMzU5NTlaMFQxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExp
# bWl0ZWQxKzApBgNVBAMTIlNlY3RpZ28gUHVibGljIENvZGUgU2lnbmluZyBDQSBS
# MzYwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCbK51T+jU/jmAGQ2rA
# z/V/9shTUxjIztNsfvxYB5UXeWUzCxEeAEZGbEN4QMgCsJLZUKhWThj/yPqy0iSZ
# hXkZ6Pg2A2NVDgFigOMYzB2OKhdqfWGVoYW3haT29PSTahYkwmMv0b/83nbeECbi
# MXhSOtbam+/36F09fy1tsB8je/RV0mIk8XL/tfCK6cPuYHE215wzrK0h1SWHTxPb
# PuYkRdkP05ZwmRmTnAO5/arnY83jeNzhP06ShdnRqtZlV59+8yv+KIhE5ILMqgOZ
# YAENHNX9SJDm+qxp4VqpB3MV/h53yl41aHU5pledi9lCBbH9JeIkNFICiVHNkRmq
# 4TpxtwfvjsUedyz8rNyfQJy/aOs5b4s+ac7IH60B+Ja7TVM+EKv1WuTGwcLmoU3F
# pOFMbmPj8pz44MPZ1f9+YEQIQty/NQd/2yGgW+ufflcZ/ZE9o1M7a5Jnqf2i2/uM
# SWymR8r2oQBMdlyh2n5HirY4jKnFH/9gRvd+QOfdRrJZb1sCAwEAAaOCAWQwggFg
# MB8GA1UdIwQYMBaAFDLrkpr/NZZILyhAQnAgNpFcF4XmMB0GA1UdDgQWBBQPKssg
# hyi47G9IritUpimqF6TNDDAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB
# /wIBADATBgNVHSUEDDAKBggrBgEFBQcDAzAbBgNVHSAEFDASMAYGBFUdIAAwCAYG
# Z4EMAQQBMEsGA1UdHwREMEIwQKA+oDyGOmh0dHA6Ly9jcmwuc2VjdGlnby5jb20v
# U2VjdGlnb1B1YmxpY0NvZGVTaWduaW5nUm9vdFI0Ni5jcmwwewYIKwYBBQUHAQEE
# bzBtMEYGCCsGAQUFBzAChjpodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3RpZ29Q
# dWJsaWNDb2RlU2lnbmluZ1Jvb3RSNDYucDdjMCMGCCsGAQUFBzABhhdodHRwOi8v
# b2NzcC5zZWN0aWdvLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEABv+C4XdjNm57oRUg
# mxP/BP6YdURhw1aVcdGRP4Wh60BAscjW4HL9hcpkOTz5jUug2oeunbYAowbFC2AK
# K+cMcXIBD0ZdOaWTsyNyBBsMLHqafvIhrCymlaS98+QpoBCyKppP0OcxYEdU0hps
# aqBBIZOtBajjcw5+w/KeFvPYfLF/ldYpmlG+vd0xqlqd099iChnyIMvY5HexjO2A
# mtsbpVn0OhNcWbWDRF/3sBp6fWXhz7DcML4iTAWS+MVXeNLj1lJziVKEoroGs9Ml
# izg0bUMbOalOhOfCipnx8CaLZeVme5yELg09Jlo8BMe80jO37PU8ejfkP9/uPak7
# VLwELKxAMcJszkyeiaerlphwoKx1uHRzNyE6bxuSKcutisqmKL5OTunAvtONEote
# SiabkPVSZ2z76mKnzAfZxCl/3dq3dUNw4rg3sTCggkHSRqTqlLMS7gjrhTqBmzu1
# L90Y1KWN/Y5JKdGvspbOrTfOXyXvmPL6E52z1NZJ6ctuMFBQZH3pwWvqURR8AgQd
# ULUvrxjUYbHHj95Ejza63zdrEcxWLDX6xWls/GDnVNueKjWUH3fTv1Y8Wdho698Y
# ADR7TNx8X8z2Bev6SivBBOHY+uqiirZtg0y9ShQoPzmCcn63Syatatvx157YK9hl
# cPmVoa1oDE5/L9Uo2bC5a4CH2RwwggZxMIIE2aADAgECAhBsg5osz2x/Auy2idY5
# 0JFYMA0GCSqGSIb3DQEBDAUAMFQxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9TZWN0
# aWdvIExpbWl0ZWQxKzApBgNVBAMTIlNlY3RpZ28gUHVibGljIENvZGUgU2lnbmlu
# ZyBDQSBSMzYwHhcNMjIxMTA0MDAwMDAwWhcNMjUxMTAzMjM1OTU5WjBnMQswCQYD
# VQQGEwJDWjEeMBwGA1UECAwVUHJhaGEsIEhsYXZuw60gbcSbc3RvMRswGQYDVQQK
# DBJNaWNoYWVsIEdyYWZuZXR0ZXIxGzAZBgNVBAMMEk1pY2hhZWwgR3JhZm5ldHRl
# cjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMHVk5c8z27bjQ82tQNj
# cU+ilNAnWJwrb0Pa2Z643b7M+wAKi1DhCsavzRWwPYGKKpPLuSWTipw5P7Tag7i9
# H580wR+mxr1jX8Kd7Qr1Eyt3QRsqXLDAwj67ExDrzcOFcIkSK3UKgZFQL+rFy2HB
# quQsHaGQQ8Jm2sWjGZod88/cmxOGUO0w7qvsysmY0QzzRNbUPpeJMPyzuq8zo2+P
# JYP6qQS535bVGaOaCRcXz3XtpvJt8BMVOUVSjb7cEwfBgDoOL72EP6lqJrMV42TI
# VpjR/rB/zT849lJtkvyAEfEr6UiOAiH9o5hm+GahTqPNMAPovb8hDPQRdu2QUpLg
# W+KHicuQWwoFABqsMIF7Oo00xDuD+J52VU12LwobKINFDJB3BdU3L2aYQRFt3YJQ
# gwH50gh1yNqaTcd78CNb2A5VwNvzTCZ0vhBaKdCK/BsLsu9atLld6FwBI8Pak6iA
# NXuFY0W/whPwlVYzMeTdELzr/m53Fk8DQFcd48SvaYt4dbgU3Q3ySbDDnnBgn/TB
# 5E+DRg7+tZgMH4ep8XXL8F/0gmIvhFXNJGXX9f8A2ox7G7Drj2Guf34P1UKZYjs7
# D2aJ71aPtZKPmXOPpTacuhNhdSVLX4ciwJOaRcZOt9pg2lwzjQVa5kw/GOs5Epeb
# OtHry/SsgiDBiCXVxXxxE9E3AgMBAAGjggGqMIIBpjAfBgNVHSMEGDAWgBQPKssg
# hyi47G9IritUpimqF6TNDDAdBgNVHQ4EFgQUnRBKK1Ym2UQhxb0SetlSGK5huJMw
# DgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUH
# AwMwSgYDVR0gBEMwQTA1BgwrBgEEAbIxAQIBAwIwJTAjBggrBgEFBQcCARYXaHR0
# cHM6Ly9zZWN0aWdvLmNvbS9DUFMwCAYGZ4EMAQQBMEkGA1UdHwRCMEAwPqA8oDqG
# OGh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGlnb1B1YmxpY0NvZGVTaWduaW5n
# Q0FSMzYuY3JsMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2Ny
# dC5zZWN0aWdvLmNvbS9TZWN0aWdvUHVibGljQ29kZVNpZ25pbmdDQVIzNi5jcnQw
# IwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNlY3RpZ28uY29tMB8GA1UdEQQYMBaB
# FGluZm9AZHNpbnRlcm5hbHMuY29tMA0GCSqGSIb3DQEBDAUAA4IBgQAuRlAwdZ32
# WVvW4tsRBmmPtse5BOqYjCP4OkxCYn47Sc+zajMgqDj8M5kGSx6SYexUbBcVssAu
# pkpIW7YDGRDo4mGJWY6zFqTXLthtRL14TfiFTTwtpLLSWsRkHbwCbRXbhchpH3nA
# pPshTMvd49gKKRT+AtDr5RrPVnh1LMYZdwuvQpWhkPgT/P0OYKTYtiieW5hSebdl
# /IaGVx1KJi/FrC9MaXj72nvjAaCk5drri7QSsf8R+ghRy5mUJShX11L1nJrGW80s
# hjaRBroT7ktr3WKryuc1cHvkXkKWZq78JosUWfGOtSQ0TJ9AiT+wBAbqtyv1H2X7
# wYNrrcq5cT543yO+SVhiuH+OQZZFjkYdhG5OoZgzABz/mXeHY4VnJHY+SuHJV3oy
# kb4NajXiID4+iy3bgQOdghwMARNUMwsdYlpXqw13iD/Li4B4weFq8d/1ZEa1BFtV
# DALXqV5+ZB4FJ/8CmonbGFIeHZfjj2PhcPL5rgGeMnFOwBjpZyvW4FUxghsvMIIb
# KwIBATBoMFQxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQx
# KzApBgNVBAMTIlNlY3RpZ28gUHVibGljIENvZGUgU2lnbmluZyBDQSBSMzYCEGyD
# mizPbH8C7LaJ1jnQkVgwDQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEK
# MAigAoAAoQKAADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3
# AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgkXThaQZs4wILD9ay
# ECSzQ4c6UYb/9ephLOCkzwbwAwowDQYJKoZIhvcNAQEBBQAEggIAWAy2IE7z0y8F
# qJNptNmB0LyBG8Rz1Pm5rUam4NUBmY1H7dRgRqmUy7hw8aYQwl24AsQtmK+n550h
# 8jT8je7p8/QUVsZe3iXA6nFTlhm/LT3CL9b3JMiR7TYaEOYy6uRZydZbGLKipjBm
# g9Au4ESb/49MjPiFK02cpClx4odfFJcwQini5hoDkDMlUxjKNBQvqShhQpIR7UVZ
# Dl6Rx7cPMQxYCo6F84Nh51VW/KPHuZ0/lNj8pwFgRQm0R5k2cDCTEvLgWIWYbDkd
# 7v+gZSJ0fIz+6drunwbWSG/ZugF2eZ81pctfuXrH+npB5R6Td7IDXKofE+wVdHSg
# bJaoCpn0NDw8wd/oFIxiXM35lVHMtqM4Ypp2B/R9mzP7q5MfoHEF+9y9amrkajvN
# mvHtiTUPxTEhda3byN/K6ZXs3kfV1Y1tPL0JS3HrF4Ufrypl8TasE9DCmfHlRP3Q
# W0LX4uUYwpJN7nwwAFc8SvkiZ+0aN3kdDisSHn6LgbLc5d7huYQ0RlvXuHEjfMG4
# xpRWV9QPio8Nb68D9EJkDele6AmN8cgdzook033yuNskcc6KCNAd+Ur1BbzKpQlt
# gYU1Dze2Mgb6ivzaPcQGgUYuw1F8pI7KnZn3Dvy8LlqKIrvRceDFWpvcMs7++RLQ
# N1C0O6tjnqforDG0OQJEIqhZWUifRRyhghgRMIIYDQYKKwYBBAGCNwMDATGCF/0w
# ghf5BgkqhkiG9w0BBwKgghfqMIIX5gIBAzEPMA0GCWCGSAFlAwQCAQUAMIIBYgYL
# KoZIhvcNAQkQAQSgggFRBIIBTTCCAUkCAQEGCisGAQQBhFkKAwEwMTANBglghkgB
# ZQMEAgEFAAQg3AtugrswcNJlI1P3DzqpeysEg8RlZKSC6f2gsYMSBJECBmiealYK
# 3BgTMjAyNTA4MTkwNjU2MDAuMjE1WjAEgAIB9KCB4aSB3jCB2zELMAkGA1UEBhMC
# VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV
# BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjElMCMGA1UECxMcTWljcm9zb2Z0IEFt
# ZXJpY2EgT3BlcmF0aW9uczEnMCUGA1UECxMeblNoaWVsZCBUU1MgRVNOOjc4MDAt
# MDVFMC1EOTQ3MTUwMwYDVQQDEyxNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1lIFN0
# YW1waW5nIEF1dGhvcml0eaCCDyEwggeCMIIFaqADAgECAhMzAAAABeXPD/9mLsmH
# AAAAAAAFMA0GCSqGSIb3DQEBDAUAMHcxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVN
# aWNyb3NvZnQgQ29ycG9yYXRpb24xSDBGBgNVBAMTP01pY3Jvc29mdCBJZGVudGl0
# eSBWZXJpZmljYXRpb24gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAyMDAe
# Fw0yMDExMTkyMDMyMzFaFw0zNTExMTkyMDQyMzFaMGExCzAJBgNVBAYTAlVTMR4w
# HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29m
# dCBQdWJsaWMgUlNBIFRpbWVzdGFtcGluZyBDQSAyMDIwMIICIjANBgkqhkiG9w0B
# AQEFAAOCAg8AMIICCgKCAgEAnnznUmP94MWfBX1jtQYioxwe1+eXM9ETBb1lRkd3
# kcFdcG9/sqtDlwxKoVIcaqDb+omFio5DHC4RBcbyQHjXCwMk/l3TOYtgoBjxnG/e
# ViS4sOx8y4gSq8Zg49REAf5huXhIkQRKe3Qxs8Sgp02KHAznEa/Ssah8nWo5hJM1
# xznkRsFPu6rfDHeZeG1Wa1wISvlkpOQooTULFm809Z0ZYlQ8Lp7i5F9YciFlyAKw
# n6yjN/kR4fkquUWfGmMopNq/B8U/pdoZkZZQbxNlqJOiBGgCWpx69uKqKhTPVi3g
# VErnc/qi+dR8A2MiAz0kN0nh7SqINGbmw5OIRC0EsZ31WF3Uxp3GgZwetEKxLms7
# 3KG/Z+MkeuaVDQQheangOEMGJ4pQZH55ngI0Tdy1bi69INBV5Kn2HVJo9XxRYR/J
# PGAaM6xGl57Ei95HUw9NV/uC3yFjrhc087qLJQawSC3xzY/EXzsT4I7sDbxOmM2r
# l4uKK6eEpurRduOQ2hTkmG1hSuWYBunFGNv21Kt4N20AKmbeuSnGnsBCd2cjRKG7
# 9+TX+sTehawOoxfeOO/jR7wo3liwkGdzPJYHgnJ54UxbckF914AqHOiEV7xTnD1a
# 69w/UTxwjEugpIPMIIE67SFZ2PMo27xjlLAHWW3l1CEAFjLNHd3EQ79PUr8FUXet
# Xr0CAwEAAaOCAhswggIXMA4GA1UdDwEB/wQEAwIBhjAQBgkrBgEEAYI3FQEEAwIB
# ADAdBgNVHQ4EFgQUa2koOjUvSGNAz3vYr0npPtk92yEwVAYDVR0gBE0wSzBJBgRV
# HSAAMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lv
# cHMvRG9jcy9SZXBvc2l0b3J5Lmh0bTATBgNVHSUEDDAKBggrBgEFBQcDCDAZBgkr
# BgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQY
# MBaAFMh+0mqFKhvKGZgEByfPUBBPaKiiMIGEBgNVHR8EfTB7MHmgd6B1hnNodHRw
# Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQlMjBJZGVu
# dGl0eSUyMFZlcmlmaWNhdGlvbiUyMFJvb3QlMjBDZXJ0aWZpY2F0ZSUyMEF1dGhv
# cml0eSUyMDIwMjAuY3JsMIGUBggrBgEFBQcBAQSBhzCBhDCBgQYIKwYBBQUHMAKG
# dWh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0
# JTIwSWRlbnRpdHklMjBWZXJpZmljYXRpb24lMjBSb290JTIwQ2VydGlmaWNhdGUl
# MjBBdXRob3JpdHklMjAyMDIwLmNydDANBgkqhkiG9w0BAQwFAAOCAgEAX4h2x35t
# tVoVdedMeGj6TuHYRJklFaW4sTQ5r+k77iB79cSLNe+GzRjv4pVjJviceW6AF6yc
# WoEYR0LYhaa0ozJLU5Yi+LCmcrdovkl53DNt4EXs87KDogYb9eGEndSpZ5ZM74LN
# vVzY0/nPISHz0Xva71QjD4h+8z2XMOZzY7YQ0Psw+etyNZ1CesufU211rLslLKsO
# 8F2aBs2cIo1k+aHOhrw9xw6JCWONNboZ497mwYW5EfN0W3zL5s3ad4Xtm7yFM7Uj
# rhc0aqy3xL7D5FR2J7x9cLWMq7eb0oYioXhqV2tgFqbKHeDick+P8tHYIFovIP7Y
# G4ZkJWag1H91KlELGWi3SLv10o4KGag42pswjybTi4toQcC/irAodDW8HNtX+cbz
# 0sMptFJK+KObAnDFHEsukxD+7jFfEV9Hh/+CSxKRsmnuiovCWIOb+H7DRon9Tlxy
# diFhvu88o0w35JkNbJxTk4MhF/KgaXn0GxdH8elEa2Imq45gaa8D+mTm8LWVydt4
# ytxYP/bqjN49D9NZ81coE6aQWm88TwIf4R4YZbOpMKN0CyejaPNN41LGXHeCUMYm
# Bx3PkP8ADHD1J2Cr/6tjuOOCztfp+o9Nc+ZoIAkpUcA/X2gSMkgHAPUvIdtoSAHE
# UKiBhI6JQivRepyvWcl+JYbYbBh7pmgAXVswggeXMIIFf6ADAgECAhMzAAAATBtL
# nGPC5NN6AAAAAABMMA0GCSqGSIb3DQEBDAUAMGExCzAJBgNVBAYTAlVTMR4wHAYD
# VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBQ
# dWJsaWMgUlNBIFRpbWVzdGFtcGluZyBDQSAyMDIwMB4XDTI0MTEyNjE4NDg1OVoX
# DTI1MTExOTE4NDg1OVowgdsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5n
# dG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y
# YXRpb24xJTAjBgNVBAsTHE1pY3Jvc29mdCBBbWVyaWNhIE9wZXJhdGlvbnMxJzAl
# BgNVBAsTHm5TaGllbGQgVFNTIEVTTjo3ODAwLTA1RTAtRDk0NzE1MDMGA1UEAxMs
# TWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZSBTdGFtcGluZyBBdXRob3JpdHkwggIi
# MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDcde8XEX4HjETYu6YHtWiP7+6V
# f2abeUo/si4NcaeiKrRMTF8F7mpCoPJyo/h5VHbhyKDZazOm1cLuzKeVEMzDN4vu
# f3fZb5hSlpVlCXBSJ3YBLwLnRJtWNk+XkUMcAc96RdalToVYWltOIwbCCkjE42fn
# CafwjZajw1UGaxl4tRQNHwVk5gwC2wlVVSJREJqCSsB9TXXHIKxPHnnFJqJ/LI1g
# oJ+Ve0Bar4PiKiMfnvnZ8LR3ktW24X6FDQJRKLjnJQ0JVebQEvI+q8Y/frheUldX
# eLVD4SfQNl1fLKN58o+NJsWI0ET6C8wYZc+eu+EqrzubIPXB7mKI9cbtmGHvztsl
# z1K/NmRvGGQkeKEKdOWfpfRuYxmhmeVmR1QMLe5pBccJiXw7PUIW+3MB0pM5SBF5
# FH6INtT1gf5vHwBA9vbeiiggbijJMuK0qu63sIbbE/YN4iYrCURvjZampsTtxmlE
# tN921N0qXNtNgU0vavdc/vJl/rDef6fMeQuJAinIHxcJzPDTsOXZlegwcCr/J52e
# ij6T9szMlPSCQVAt5u/agNcJ212t6qdwZ4hYYF4LkCmXQgDPZpR1lGDCaojAB6zy
# /H7nME+nnTvTgTMtR4d4lHVBQxpJDnvYNvGPurrnP7FZT3ue8YzfFEiE5chmJia8
# THexs46F8tCr8T5UxQIDAQABo4IByzCCAccwHQYDVR0OBBYEFGrqI3Sxu357rKTy
# lpgwcVAF1Nw/MB8GA1UdIwQYMBaAFGtpKDo1L0hjQM972K9J6T7ZPdshMGwGA1Ud
# HwRlMGMwYaBfoF2GW2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3Js
# L01pY3Jvc29mdCUyMFB1YmxpYyUyMFJTQSUyMFRpbWVzdGFtcGluZyUyMENBJTIw
# MjAyMC5jcmwweQYIKwYBBQUHAQEEbTBrMGkGCCsGAQUFBzAChl1odHRwOi8vd3d3
# Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMFB1YmxpYyUy
# MFJTQSUyMFRpbWVzdGFtcGluZyUyMENBJTIwMjAyMC5jcnQwDAYDVR0TAQH/BAIw
# ADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAOBgNVHQ8BAf8EBAMCB4AwZgYDVR0g
# BF8wXTBRBgwrBgEEAYI3TIN9AQEwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5t
# aWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMAgGBmeBDAEE
# AjANBgkqhkiG9w0BAQwFAAOCAgEAAFYcd7rrNVHRZWofhE4ft9YNZPVEzaQ90iE/
# 5kCDoQlCKTE7jFYnFcfxETrL4ed8JSj0JxCZSJQVUwEp6haUSPkiSg4mf7rq+m3q
# bCjHB8Dj82rsFSxAs8NqI/08Dq1Ci/rxVhryPOSZmtXRgNeJzxwDqSch50pNBGQM
# U8APLSnwpqzhwRN76MK5PXYCVqm/u/v579+fFJh0bIsw49/wTcTCXh3s0C9y0iAm
# SvsJKnTfEvtfe+eS9qw2wyf2LdJ5n8klFJ6OtDg8YB9n+E+0vX1EJIDPxN2yX7+2
# sJiABcUSc55jIHxPTArDdzR0YUwQIjZO0j9hIjyMbRYjgjJ4UK9ZLrvN2nUyc0up
# LqKKvhAqKP1jX0FL5M0wuneZ9/SGy2ZFn/Bg8ISBOp34ri+412tOlzqR9ZU+CU9X
# n1MqcWXvvDhTqjexxKZMVRMqGjRECQWSA62WdCGYjEOWnH5lQJqLYRhYpeAwvjsz
# dEAjSFtFXFLGTRw4bSKoad5TjUEvsKFO8DVPCjrbMEzGdku4znmeFddbqXR41Hlu
# npyOLuSoC1II/Bh+aX0nU19JU79T10OFRKZDFKUI3LWB9jTdT+3EOJr/pQ5T0fFe
# ei0A7UdmTgXbmP4IaCbTc41NG7KMmsmV6Xyank4qB5aSL30uegrrvnHPjQBLLYje
# rGCNtQMxggdDMIIHPwIBATB4MGExCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBQdWJsaWMgUlNB
# IFRpbWVzdGFtcGluZyBDQSAyMDIwAhMzAAAATBtLnGPC5NN6AAAAAABMMA0GCWCG
# SAFlAwQCAQUAoIIEnDARBgsqhkiG9w0BCRACDzECBQAwGgYJKoZIhvcNAQkDMQ0G
# CyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJBTEPFw0yNTA4MTkwNjU2MDBaMC8GCSqG
# SIb3DQEJBDEiBCBfQbs4IMKqwCGtcFGMtQi7ahfflJLspBPoH6iJZT2OQjCBuQYL
# KoZIhvcNAQkQAi8xgakwgaYwgaMwgaAEIN46bOoVmqp2Rt/G6TI8VIZkg7qJ8Odd
# iPDqk6jY+midMHwwZaRjMGExCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3Nv
# ZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBQdWJsaWMgUlNBIFRp
# bWVzdGFtcGluZyBDQSAyMDIwAhMzAAAATBtLnGPC5NN6AAAAAABMMIIDXgYLKoZI
# hvcNAQkQAhIxggNNMIIDSaGCA0UwggNBMIICKQIBATCCAQmhgeGkgd4wgdsxCzAJ
# BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k
# MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJTAjBgNVBAsTHE1pY3Jv
# c29mdCBBbWVyaWNhIE9wZXJhdGlvbnMxJzAlBgNVBAsTHm5TaGllbGQgVFNTIEVT
# Tjo3ODAwLTA1RTAtRDk0NzE1MDMGA1UEAxMsTWljcm9zb2Z0IFB1YmxpYyBSU0Eg
# VGltZSBTdGFtcGluZyBBdXRob3JpdHmiIwoBATAHBgUrDgMCGgMVAJueWs/5vWNY
# P+JGxmOfpj88ZvzBoGcwZaRjMGExCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBQdWJsaWMgUlNB
# IFRpbWVzdGFtcGluZyBDQSAyMDIwMA0GCSqGSIb3DQEBCwUAAgUA7E4upzAiGA8y
# MDI1MDgxODIyNTg0N1oYDzIwMjUwODE5MjI1ODQ3WjB0MDoGCisGAQQBhFkKBAEx
# LDAqMAoCBQDsTi6nAgEAMAcCAQACAhmFMAcCAQACAhN/MAoCBQDsT4AnAgEAMDYG
# CisGAQQBhFkKBAIxKDAmMAwGCisGAQQBhFkKAwKgCjAIAgEAAgMHoSChCjAIAgEA
# AgMBhqAwDQYJKoZIhvcNAQELBQADggEBADX8VAotY6IEAUvyImeWWCnUZH5gLdAp
# 0mLvPVS5IO0hEfzlBc2NwmV1blwepXsax3ifVIlwZztmRboQI5fSwj9uOQFwkp/p
# sP8cTJkQbdhtU6IJ5xRfgRoTURqg72MxwvZHLoDNXPEXky8/ExX1l0rMlT30Dil9
# /FokOVlGy6i2kUvx7dAmNvqXJLFwdCbP4kT9QTopMBYQvTb9xBW1uenQ5GBmUMI/
# D14YmxKtYH2T7I5J6qmzlqi3gwV1/qvhll0mV5uX2zjcT8wpUeN7R9vwVu5RRX3w
# 2K0xVyjdwZ2IOh/I0HX3fB9cqmvtZkXocP20He+HGjm+m9+5xF28HbswDQYJKoZI
# hvcNAQEBBQAEggIAw+r262JPAjCwFrg+h/2nqV9abonKAgEeuwV/1d1pZY88n4+T
# FEYNQG18uSqqfx4ohxKUE5Y8nPqSgZetRVIvUB3yf8t9kYBQlnDCRQTLDC1u0etY
# 2x6P7ff1AY49L4MDhmjozOaddc21aCm5wQPkBXXdOAeAlqFkZrt0KR+ojZMG8uvY
# 0pyMjZCNXYPeYyM0z96DzSJ4IzRdJFbDvC2c8UhyhSq7NwIBpyp4nMsaeIovCjYq
# cVLtvwmp6EwIWDU9s40riO2kBDapjunO3TcTCm0efePo39NRV6bL7V1e5Oc4GWBQ
# J71oQe1xp+sXMbCUn8zJ7JaP+6VN4IpAXB8WIhZoaX7mbmuf09XRnKj2JecH6rkf
# Ai7ZbPEDEi2/3VtDpwGGgTV3g5L1BikYDAK3YNWrMTl6Y49O/lrvvB++sgqDr230
# 0XuigJDiXi/hXcatVOt7yoWcHws7eF0B40tUp84rwihiO4PTRons0Pcuw+lxGwm+
# Bm4sjMpNE1iahodXV1cYYNIE2MxrxbzVy4kWHHPRcRrVIMR2WsDht4Unx2kcbqdu
# +6n7d8Ij+TXHuaKK5c/YC9Ve2EVhzI5pVxYDx0xlc2YTljM1YjkZSc1NqRznyyIH
# oenXBxswiHG8HeBlMuaLbMla6dxlPsxqhUW7uKWGnlgrZQUUGqr67Dz54v0=
# SIG # End signature block