ScriptsToProcess/PreLoadTypes.ps1
|
# Pure-managed Ahtola stack — no native e_sqlite3 / SQLitePCLRaw preload. $moduleRoot = Split-Path -Path $PSScriptRoot -Parent $binPath = Join-Path -Path $moduleRoot -ChildPath 'bin' if (-not (Test-Path -LiteralPath $binPath)) { Write-Error "Devolutions.Ahtola.Sqlite bin folder not found: $binPath" return } # Load dependency assemblies before the binary module binds types. $preferredOrder = @( 'Devolutions.Ahtola.Core.dll' 'Devolutions.Ahtola.Data.dll' 'Devolutions.Ahtola.Data.Sqlite.dll' 'Devolutions.Ahtola.PowerShell.dll' ) $loadedNames = [System.Collections.Generic.HashSet[string]]::new([StringComparer]::OrdinalIgnoreCase) foreach ($assembly in [AppDomain]::CurrentDomain.GetAssemblies()) { try { $name = [System.IO.Path]::GetFileName($assembly.Location) if ($name) { [void]$loadedNames.Add($name) } } catch { # Dynamic assemblies have no Location. } } function Import-AhtolaAssembly { param([Parameter(Mandatory)][string]$Path) $fileName = [System.IO.Path]::GetFileName($Path) if ($loadedNames.Contains($fileName)) { Write-Verbose "Assembly already loaded: $fileName" return } Write-Verbose "Loading assembly: $Path" $null = [System.Reflection.Assembly]::LoadFrom($Path) [void]$loadedNames.Add($fileName) } foreach ($name in $preferredOrder) { $path = Join-Path -Path $binPath -ChildPath $name if (Test-Path -LiteralPath $path) { Import-AhtolaAssembly -Path $path } } Get-ChildItem -LiteralPath $binPath -Filter '*.dll' | Where-Object { -not $loadedNames.Contains($_.Name) } | ForEach-Object { Import-AhtolaAssembly -Path $_.FullName } # SIG # Begin signature block # MII2cgYJKoZIhvcNAQcCoII2YzCCNl8CAQExDTALBglghkgBZQMEAgEwdwYKKwYB # BAGCNwIBBKBpMGcwNAYKKwYBBAGCNwIBHjAmAgMBAAAEEB/MO2BZSwhOtyTSxil+ # 81ECAQACAQACAQACAQACAQAwLzALBglghkgBZQMEAgEEIFCgI8Sp7lOjq+dVEgjo # prHKSJy7Turq9qkp77NB4l89oIIbTDCCBcwwggO0oAMCAQICEFSY0tHUWxmVSBN5 # yBHAh5kwDQYJKoZIhvcNAQEMBQAwdzELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1p # Y3Jvc29mdCBDb3Jwb3JhdGlvbjFIMEYGA1UEAxM/TWljcm9zb2Z0IElkZW50aXR5 # IFZlcmlmaWNhdGlvbiBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDIwMB4X # DTIwMDQxNjE4MzYxNloXDTQ1MDQxNjE4NDQ0MFowdzELMAkGA1UEBhMCVVMxHjAc # BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjFIMEYGA1UEAxM/TWljcm9zb2Z0 # IElkZW50aXR5IFZlcmlmaWNhdGlvbiBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 # eSAyMDIwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAs5EqB4MGZ/2e # neDHwLek5kIEfw+m21/71VrXRaD7dwvwgPOmbVpNeVPYoIaEV0Ugx6JU+8eiv4rH # bjXzohXEL07jSoWWSQ3/vpnYFPa8JwfuQpsr9QuSBuT9aRNlqJFy8piE64M9DuTX # cRJIIcsN7fZHSbeb+cnHF7aET/+4rJrXc2dJheOGvTdA0CWG1N61wm1iatWpeLwt # b0n55WwUFP0Ux9NlFjfey268XimN/WKbFSzWBea5iTIzo2LH19ZSZwjELvRWK54L # h8zsp7SmqusFzRlXpToLBCcckWeeLWItLx6+2sAgywQZyjP7ib6Y4nKgcjW+eeGc # g2/kbRdvkPM9AIZ1OI7Q4Emau9vT+DDK1VeIaE1y079tf3HY/b0NrpJkSLdbb3km # tc2blSGE0e8PMj17V4zzRQdMfOBeGA41dottnss2dKsF+OBzXTJWlGeXJQrGNT2U # l+fBRIuA/cH49HQZ5TD2BvshVz4GHItrFYYnSXuCk8pZ6HVH6D849MdTeaC2tOJc # Ue+9XzjBE+Z4DJVaLsVAWSjMDyTA7LoJdyOZOKa2HNrHuiC21zfYfzevCOM7cdtu # cxt9mXKw5IYzWXS1FgB7UG3GhhPa/cQ5gj0kAJpg2rqUwAVRLDSsUJkTh7uzBYCy # TTACXLgmg120Y3PvriOVT2AovjfVW6UCAwEAAaNUMFIwDgYDVR0PAQH/BAQDAgGG # MA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMh+0mqFKhvKGZgEByfPUBBPaKii # MBAGCSsGAQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBDAUAA4ICAQCvat3mGectlEMZ # TsvpUJVkpQORAoviNoA7FaJSwhYZtmpaXXRDMPSb/2B0CbEhHpAWbcUkj1xmiGP0 # T8x98hJMQBCLAZ/aqciu8pUbz50F60k+dKBoW+VWLGUcgn5T2lbZRhd5kkXEEDYI # UikXyy+m8n7UaSSKHo+wcw3MHEqrsqrtp5FjAWQiqDK4fjIos2dzLZG03DEBC/dH # Cqbx10rtVmDELAije0CwvHQnUofWvojdN4qJbmeIHfXJXaD+tqs6gNcalzwXNiJB # HqxN1YPmPDi9TzDpVKnTtgTDMnZhu7AYxSsYs8CA1beVsF5RTSL87Fiq6NiUtKUu # 7ZLe5xh8IVfdVWP3v23NH9Kmdyhwx+JbOlsI0ltOyACWs+GDNq+GCmVcdPbq7Hpq # dKDwS+7vlKOsUPKH7dc6MIPJ+31XvuXj+EHK5WSus6PsWOyFmszvuerzVhi5XHOa # r8V3F4NZ2zcaGHJUpUHStiN1o0Oa5Xd8lnm3QY2/7NyAoJ/Rd3VYXzUT4CUaZwt9 # ziX6BwrkYSHY1BzlB8Y2mfSW0MYV/k7N166LndsW/QTGkr3UiOapo6q792Q4O1/M # DNA1vnQZA6bFqkyiYTaCPh3zK7yXXdtLeDst9TvvYCPo9ewLIzaVr5hmv1PTe7hp # SiqWZmnElMb0X26smHiIgAZcorLtojCCBqowggSSoAMCAQICEzMABcdmLnX1LsBf # ZuAAAAAFx2YwDQYJKoZIhvcNAQEMBQAwWjELMAkGA1UEBhMCVVMxHjAcBgNVBAoT # FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjErMCkGA1UEAxMiTWljcm9zb2Z0IElEIFZl # cmlmaWVkIENTIEFPQyBDQSAwMzAeFw0yNjA5MDEyMDU3MzJaFw0yNjA5MDQyMDU3 # MzJaMGwxCzAJBgNVBAYTAkNBMRUwEwYDVQQIHgwAUQB1AOkAYgBlAGMxEjAQBgNV # BAcTCUxhdmFsdHJpZTEYMBYGA1UEChMPRGV2b2x1dGlvbnMgSW5jMRgwFgYDVQQD # Ew9EZXZvbHV0aW9ucyBJbmMwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIB # gQCOx23GEkZOOmNlgWgIs5IHV+Wvgr5lrZ6p6jbsN4dzJWY8NGfTSXAeIGXpKuiP # 6ZSmRenvNm2a0vxfqYpuK8n/JJs/QQdoWGYHSRsBCBcrv2PR+JkH+R5IeJeCU48C # dplcG5edx0R7jIcWp96qG6l59V54ii/ExNX1vPHG7NHBfHaVImjuDwAKL7c1jp7I # sOnzTR2IPbW+yfoKKnD3L3oiBs+AhecHwny1D/uPM2DXgmL6oF38gtNbBL5wY4ku # yoOeN5GE0QLbjYusAaMdy3DKvEiKshHPU7JieC5MY6w41Q2QpBP3G7BMZEuFogm/ # 6WMMLiFzQQesvigW7xK3Cee7pZV9iVMBMrDlDvyTl9WMsVo7jXtgm0DxFKCFlw/I # ymHUFToGkx3FdRVKTda5DdGvBE9wcjwVJGhzsCjbXP58EUH2bLlOCcOMtpnNMEM5 # 6Sp+HT0+ncT+ryTWlcLGmZKN8HLr9Iz3V4/t2ygOb7oKbr5syn3cHu4XCmrlA6wW # PKUCAwEAAaOCAdUwggHRMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMDwG # A1UdJQQ1MDMGCisGAQQBgjdhAQAGCCsGAQUFBwMDBhsrBgEEAYI3YYGIgLEFgoX5 # gFL4yJBqgdOiwFUwHQYDVR0OBBYEFHzQqfs+HnNInT5OS09v8kbf7AamMB8GA1Ud # IwQYMBaAFKRDDH92WqWF5z6NKA8MF6JFaXDGMGcGA1UdHwRgMF4wXKBaoFiGVmh0 # dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMElE # JTIwVmVyaWZpZWQlMjBDUyUyMEFPQyUyMENBJTIwMDMuY3JsMHQGCCsGAQUFBwEB # BGgwZjBkBggrBgEFBQcwAoZYaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9w # cy9jZXJ0cy9NaWNyb3NvZnQlMjBJRCUyMFZlcmlmaWVkJTIwQ1MlMjBBT0MlMjBD # QSUyMDAzLmNydDBUBgNVHSAETTBLMEkGBFUdIAAwQTA/BggrBgEFBQcCARYzaHR0 # cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRt # MA0GCSqGSIb3DQEBDAUAA4ICAQBupVT/1gwre0AYqAunJNFdWCH5pACO4fOxVo9R # jPCzE+XIqhqhok/TZqgVyx7dwHRQuo0dlAhJbuCbIXiV38Z6HfKL2y4f7b0kpBSe # M+nGMe97pBf7xQdKhTz+BqsGDLa7HwYrkPM0tIyqr53gqxHMPsXV35zO0C3xRrLm # X4FPeZRwsyPCBT15KAl5gy4GK2KTdfuowZOSFo6uzyvtTxhMxLVDPwvxHwUpN0au # hHJZT1Rri04hKCUBqhks1LLBOng8F6DGkV9R9uZvNmHVl7MXUu+V9PexPdZWUfOc # wa5hHEtz+tkLuMKu1SbTihCZk6R6jn2itITR7fc/fQpM5Kpwl9NipPjQxz6t4WnR # o8qhx82tTkHc+a9cm+ee7tgC/f5C4AJUYzhTZEX4AptBzPFjyh/oPcUU0n6tCIEk # 5FtNwzllsZf5oPLkYLhQWTVc5bavkA4a/jEc45r3Q8/6kADIvKEqLPtfL8GtGyaa # PC7zypfmJ422Ii8TfbaDm/uLG/5HRuV725bb5k7N80pIOujjZjy1e0ylIAJHFGDv # uv5paEwD8AqULthxRvRWNg/eItf4QgCnoeA40E9AOtFX4hJOC98joV11AlT5SZbV # IGcbsjBJc3DLQFtzAnaqD108d1I9AU/8gDCo38qefsnLwKbuIQm3+Inh84Bcerzn # 5oUgkjCCBygwggUQoAMCAQICEzMAAAAYDeuRVamKAJgAAAAAABgwDQYJKoZIhvcN # AQEMBQAwYzELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh # dGlvbjE0MDIGA1UEAxMrTWljcm9zb2Z0IElEIFZlcmlmaWVkIENvZGUgU2lnbmlu # ZyBQQ0EgMjAyMTAeFw0yNjAzMjYxODExMzJaFw0zMTAzMjYxODExMzJaMFoxCzAJ # BgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKzApBgNV # BAMTIk1pY3Jvc29mdCBJRCBWZXJpZmllZCBDUyBBT0MgQ0EgMDMwggIiMA0GCSqG # SIb3DQEBAQUAA4ICDwAwggIKAoICAQDIgNpgNFaiif2VWeWP5I6PnFXxJ/lB37fJ # R55GCvR7GLZBMkBijbiKVwgpBI3xM5nf484znH/qncJ+OCq6y3jgnQW+R8Zd7U+7 # LjlrmcskalzSQ0ghMxEpnBW8/HHs2V8ZJzQk6HP+SDsbvsL7LdlH/eO2l4mknhDB # wr0Z/Q966TvEth5b8kCxj1vqiV4YNthLGRqZR9u2fK/yBMWu83p6O4uo2Edg++gE # ew5IL7vnnnKFqmSh/R9vPJy3WF1YcZewAUx8sXZNUnx3ZhVg59l2LpitPiwzE6FM # qIsqaEvVe3MzuFd2a/uWDZH6VbDyUiRK78mIg1DQYA9zDEyyBFcNI+nxVSzglvL6 # u7PRuNqgcV3sf6ELxw89ysQM/Z4R1hRFWXRpyOWKKAKtfBHTk0UnNiPcxmLMMYs8 # jeUjOidfVPjTIry/UVwnwxdlkK85cZfBEMYZ/DBNOwdomP459Y1n8izKkbhsa+p4 # lw+cQVxATBFx9ggR79HhryT7HDmpPLvkJvBZ4wW4CW32UT2SMyDe28nIOU3m+hfH # lVeKcLBQcym5VoRDjIcCVI7uqgGW2PNME0cfei8zCwCy6HCsssJWFS7eg/YbFhnA # TJcyWfMrkNuAbMfMN8Npg8crS6jVVowyD0GG5zdgi+uQVcSK/638mA1xEYK3pnIo # QgO09uuDBwIDAQABo4IB3DCCAdgwDgYDVR0PAQH/BAQDAgGGMBAGCSsGAQQBgjcV # AQQDAgEAMB0GA1UdDgQWBBSkQwx/dlqlhec+jSgPDBeiRWlwxjBUBgNVHSAETTBL # MEkGBFUdIAAwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29t # L3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMBkGCSsGAQQBgjcUAgQMHgoAUwB1 # AGIAQwBBMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAU2UEpsA8PY2zv # adf1zSmepEhqMOYwcAYDVR0fBGkwZzBloGOgYYZfaHR0cDovL3d3dy5taWNyb3Nv # ZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwSUQlMjBWZXJpZmllZCUyMENv # ZGUlMjBTaWduaW5nJTIwUENBJTIwMjAyMS5jcmwwfQYIKwYBBQUHAQEEcTBvMG0G # CCsGAQUFBzAChmFodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRz # L01pY3Jvc29mdCUyMElEJTIwVmVyaWZpZWQlMjBDb2RlJTIwU2lnbmluZyUyMFBD # QSUyMDIwMjEuY3J0MA0GCSqGSIb3DQEBDAUAA4ICAQBxxyBW+X6mhdRiSwD9PMMW # cGUAnx5/QUwnNvZdFGEX+4DRDIr9WCh4C87wHtw+lg1D3uzK10DstPX0LFLBFAC3 # vWMYX4ImXwoLhoR0xlN8mUdorJ3bgnpCJWuI1531Z1rCwPuUrSkBxfOIGDk3p2EC # b3Ho/xHi5PRSR/OUrWuQHwXiaXMTuXu3IRLezwVkZpFmNwYRD57R9Nx2F/yM7tzO # Y0Hh0hGCaYEK38/6FrS0SXadXWyDUCfn5XOGACRjUCnHx+JQUG0f4SHD+iblpAI0 # gl+ZHnVmdXXxHTZeTa0CYCIhFxKP2922s0g6zLmeiV13LWUmtt/UF7TrWXpMi2/0 # UNniaDoH7rnPGRV5xVX8uXy4sZii4aswzqPM7Y7+mzcranqZ8EjZk5gjLhQ3A2sZ # aprlOu8CaRmyfcIiVH7zVfgAvm81MWXFziAf7my7QOvnyEFPGddq8MSfPtfRyw/U # q3uH6KpoaJNIfPYH6fceZSi53Rat1A9grExq3ROjhhSpTcchuBItAMNVPxoKNbUm # +iR/X3XkL+9WQginjyHe+hXLclY8vAGXFD1p40PqMIpAYsmEJBFKW9df4//1N5oQ # Dr/FY9IBJl/oSS979i5rtT7NZz9KvYraCPRBGs0QCy+sWvgQa0coM70QJVLeVwmS # xUO/0od0w9Qry7bSLrxGoDCCB54wggWGoAMCAQICEzMAAAAHh6M0o3uljhwAAAAA # AAcwDQYJKoZIhvcNAQEMBQAwdzELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jv # c29mdCBDb3Jwb3JhdGlvbjFIMEYGA1UEAxM/TWljcm9zb2Z0IElkZW50aXR5IFZl # cmlmaWNhdGlvbiBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDIwMB4XDTIx # MDQwMTIwMDUyMFoXDTM2MDQwMTIwMTUyMFowYzELMAkGA1UEBhMCVVMxHjAcBgNV # BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjE0MDIGA1UEAxMrTWljcm9zb2Z0IElE # IFZlcmlmaWVkIENvZGUgU2lnbmluZyBQQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEB # BQADggIPADCCAgoCggIBALLwwK8ZiCji3VR6TElsaQhVCbRS/3pK+MHrJSj3Zxd3 # KU3rlfL3qrZilYKJNqztA9OQacr1AwoNcHbKBLbsQAhBnIB34zxf52bDpIO3NJlf # IaTE/xrweLoQ71lzCHkD7A4As1Bs076Iu+mA6cQzsYYH/Cbl1icwQ6C65rU4V9NQ # hNUwgrx9rGQ//h890Q8JdjLLw0nV+ayQ2Fbkd242o9kH82RZsH3HEyqjAB5a8+Ae # 2nPIPc8sZU6ZE7iRrRZywRmrKDp5+TcmJX9MRff241UaOBs4NmHOyke8oU1TYrkx # h+YeHgfWo5tTgkoSMoayqoDpHOLJs+qG8Tvh8SnifW2Jj3+ii11TS8/FGngEaNAW # rbyfNrC69oKpRQXY9bGH6jn9NEJv9weFxhTwyvx9OJLXmRGbAUXN1U9nf4lXezky # 6Uh/cgjkVd6CGUAf0K+Jw+GE/5VpIVbcNr9rNE50Sbmy/4RTCEGvOq3GhjITbCa4 # crCzTTHgYYjHs1NbOc6brH+eKpWLtr+bGecy9CrwQyx7S/BfYJ+ozst7+yZtG2wR # 461uckFu0t+gCwLdN0A6cFtSRtR8bvxVFyWwTtgMMFRuBa3vmUOTnfKLsLefRaQc # VTgRnzeLzdpt32cdYKp+dhr2ogc+qM6K4CBI5/j4VFyC4QFeUP2YAidLtvpXRRo3 # AgMBAAGjggI1MIICMTAOBgNVHQ8BAf8EBAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAw # HQYDVR0OBBYEFNlBKbAPD2Ns72nX9c0pnqRIajDmMFQGA1UdIARNMEswSQYEVR0g # ADBBMD8GCCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3Bz # L0RvY3MvUmVwb3NpdG9yeS5odG0wGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEw # DwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTIftJqhSobyhmYBAcnz1AQT2io # ojCBhAYDVR0fBH0wezB5oHegdYZzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3Br # aW9wcy9jcmwvTWljcm9zb2Z0JTIwSWRlbnRpdHklMjBWZXJpZmljYXRpb24lMjBS # b290JTIwQ2VydGlmaWNhdGUlMjBBdXRob3JpdHklMjAyMDIwLmNybDCBwwYIKwYB # BQUHAQEEgbYwgbMwgYEGCCsGAQUFBzAChnVodHRwOi8vd3d3Lm1pY3Jvc29mdC5j # b20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMElkZW50aXR5JTIwVmVyaWZpY2F0 # aW9uJTIwUm9vdCUyMENlcnRpZmljYXRlJTIwQXV0aG9yaXR5JTIwMjAyMC5jcnQw # LQYIKwYBBQUHMAGGIWh0dHA6Ly9vbmVvY3NwLm1pY3Jvc29mdC5jb20vb2NzcDAN # BgkqhkiG9w0BAQwFAAOCAgEAfyUqnv7Uq+rdZgrbVyNMul5skONbhls5fccPlmIb # zi+OwVdPQ4H55v7VOInnmezQEeW4LqK0wja+fBznANbXLB0KrdMCbHQpbLvG6UA/ # Xv2pfpVIE1CRFfNF4XKO8XYEa3oW8oVH+KZHgIQRIwAbyFKQ9iyj4aOWeAzwk+f9 # E5StNp5T8FG7/VEURIVWArbAzPt9ThVN3w1fAZkF7+YU9kbq1bCR2YD+MtunSQ1R # ft6XG7b4e0ejRA7mB2IoX5hNh3UEauY0byxNRG+fT2MCEhQl9g2i2fs6VOG19CNe # p7SquKaBjhWmirYyANb0RJSLWjinMLXNOAga10n8i9jqeprzSMU5ODmrMCJE12xS # /NWShg/tuLjAsKP6SzYZ+1Ry358ZTFcx0FS/mx2vSoU8s8HRvy+rnXqyUJ9HBqS0 # DErVLjQwK8VtsBdekBmdTbQVoCgPCqr+PDPB3xajYnzevs7eidBsM71PINK2BoE2 # UfMwxCCX3mccFgx6UsQeRSdVVVNSyALQe6PT12418xon2iDGE81OGCreLzDcMAZn # rUAx4XQLUz6ZTl65yPUiOh3k7Yww94lDf+8oG2oZmDh5O1Qe38E+M3vhKwmzIeoB # 1dVLlz4i3IpaDcR+iuGjH2TdaC1ZOmBXiCRKJLj4DT2uhJ04ji+tHD6n58vhavFI # rmcxghqAMIIafAIBATBxMFoxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3Nv # ZnQgQ29ycG9yYXRpb24xKzApBgNVBAMTIk1pY3Jvc29mdCBJRCBWZXJpZmllZCBD # UyBBT0MgQ0EgMDMCEzMABcdmLnX1LsBfZuAAAAAFx2YwCwYJYIZIAWUDBAIBoEww # GQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwLwYJKoZIhvcNAQkEMSIEIEs1KZdR # GCw84ue5E2Y28k4/G9VUhV3SEP/Xokvy2qMdMA0GCSqGSIb3DQEBCwUABIIBgA4g # s7J6sRu9129Phg57DtavWzCnAnQoQcR7rhWTU9vz8AFIItepCZlWq2MazRp3SONw # WPrNONqFXvpF5qSeKH1vB+8oeliJhUR0WDmX3LcTzpLfla6tciABslXgcNcovW9y # +3Jd1PWULn9UvnZZ8gWyvqq/9WlfFsfsUHxFhvyn1yGD8Z1es1b1h9XsjaU+4NMq # PvgxsimEzJS8fb5UAyRB9nHbQ/BxbeYJChCAQKBvIg31auh31qnLsnZPQrA+2o0N # otMNl/PPuutQPV8D8s+JWuIlKYXh2ZsQBEqAdmT0Mr1O1TTkmIIQHHgjTEoQr+lZ # 9xAR7mchTmAzsW9TuWJSNmth88djnG7Aho/Sem2Hvk55FP30OHW/L9zaOfrcWW5U # Gfuc7GwjFRu6Sw6bcdn5PQHMVxzLaow6qRgArwlFQ94gb1Ms0U5eymrJN05Cem8v # qZiXdsGhGjjSTWpfuWNGe/7mZn9cjFN45YJyOWYGghmyGNRGj3g3vMgl/S+ivaGC # GBQwghgQBgorBgEEAYI3AwMBMYIYADCCF/wGCSqGSIb3DQEHAqCCF+0wghfpAgED # MQ8wDQYJYIZIAWUDBAIBBQAwggFiBgsqhkiG9w0BCRABBKCCAVEEggFNMIIBSQIB # AQYKKwYBBAGEWQoDATAxMA0GCWCGSAFlAwQCAQUABCACR3KhrwDh3+okO6ZIxRGs # G54mC46MNRGB2ANU/Gpt9QIGaoSC4Yj3GBMyMDI2MDkwMzEzMDkwNC42MzNaMASA # AgH0oIHhpIHeMIHbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQ # MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u # MSUwIwYDVQQLExxNaWNyb3NvZnQgQW1lcmljYSBPcGVyYXRpb25zMScwJQYDVQQL # Ex5uU2hpZWxkIFRTUyBFU046N0QwMC0wNUUwLUQ5NDcxNTAzBgNVBAMTLE1pY3Jv # c29mdCBQdWJsaWMgUlNBIFRpbWUgU3RhbXBpbmcgQXV0aG9yaXR5oIIPITCCB4Iw # ggVqoAMCAQICEzMAAAAF5c8P/2YuyYcAAAAAAAUwDQYJKoZIhvcNAQEMBQAwdzEL # MAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjFIMEYG # A1UEAxM/TWljcm9zb2Z0IElkZW50aXR5IFZlcmlmaWNhdGlvbiBSb290IENlcnRp # ZmljYXRlIEF1dGhvcml0eSAyMDIwMB4XDTIwMTExOTIwMzIzMVoXDTM1MTExOTIw # NDIzMVowYTELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh # dGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZXN0YW1waW5n # IENBIDIwMjAwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCefOdSY/3g # xZ8FfWO1BiKjHB7X55cz0RMFvWVGR3eRwV1wb3+yq0OXDEqhUhxqoNv6iYWKjkMc # LhEFxvJAeNcLAyT+XdM5i2CgGPGcb95WJLiw7HzLiBKrxmDj1EQB/mG5eEiRBEp7 # dDGzxKCnTYocDOcRr9KxqHydajmEkzXHOeRGwU+7qt8Md5l4bVZrXAhK+WSk5Cih # NQsWbzT1nRliVDwunuLkX1hyIWXIArCfrKM3+RHh+Sq5RZ8aYyik2r8HxT+l2hmR # llBvE2Wok6IEaAJanHr24qoqFM9WLeBUSudz+qL51HwDYyIDPSQ3SeHtKog0ZubD # k4hELQSxnfVYXdTGncaBnB60QrEuazvcob9n4yR65pUNBCF5qeA4QwYnilBkfnme # AjRN3LVuLr0g0FXkqfYdUmj1fFFhH8k8YBozrEaXnsSL3kdTD01X+4LfIWOuFzTz # uoslBrBILfHNj8RfOxPgjuwNvE6YzauXi4orp4Sm6tF245DaFOSYbWFK5ZgG6cUY # 2/bUq3g3bQAqZt65KcaewEJ3ZyNEobv35Nf6xN6FrA6jF9447+NHvCjeWLCQZ3M8 # lgeCcnnhTFtyQX3XgCoc6IRXvFOcPVrr3D9RPHCMS6Ckg8wggTrtIVnY8yjbvGOU # sAdZbeXUIQAWMs0d3cRDv09SvwVRd61evQIDAQABo4ICGzCCAhcwDgYDVR0PAQH/ # BAQDAgGGMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRraSg6NS9IY0DPe9iv # Sek+2T3bITBUBgNVHSAETTBLMEkGBFUdIAAwQTA/BggrBgEFBQcCARYzaHR0cDov # L3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMBMG # A1UdJQQMMAoGCCsGAQUFBwMIMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMA8G # A1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUyH7SaoUqG8oZmAQHJ89QEE9oqKIw # gYQGA1UdHwR9MHsweaB3oHWGc2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lv # cHMvY3JsL01pY3Jvc29mdCUyMElkZW50aXR5JTIwVmVyaWZpY2F0aW9uJTIwUm9v # dCUyMENlcnRpZmljYXRlJTIwQXV0aG9yaXR5JTIwMjAyMC5jcmwwgZQGCCsGAQUF # BwEBBIGHMIGEMIGBBggrBgEFBQcwAoZ1aHR0cDovL3d3dy5taWNyb3NvZnQuY29t # L3BraW9wcy9jZXJ0cy9NaWNyb3NvZnQlMjBJZGVudGl0eSUyMFZlcmlmaWNhdGlv # biUyMFJvb3QlMjBDZXJ0aWZpY2F0ZSUyMEF1dGhvcml0eSUyMDIwMjAuY3J0MA0G # CSqGSIb3DQEBDAUAA4ICAQBfiHbHfm21WhV150x4aPpO4dhEmSUVpbixNDmv6Tvu # IHv1xIs174bNGO/ilWMm+Jx5boAXrJxagRhHQtiFprSjMktTliL4sKZyt2i+SXnc # M23gRezzsoOiBhv14YSd1Klnlkzvgs29XNjT+c8hIfPRe9rvVCMPiH7zPZcw5nNj # thDQ+zD563I1nUJ6y59TbXWsuyUsqw7wXZoGzZwijWT5oc6GvD3HDokJY401uhnj # 3ubBhbkR83RbfMvmzdp3he2bvIUztSOuFzRqrLfEvsPkVHYnvH1wtYyrt5vShiKh # eGpXa2AWpsod4OJyT4/y0dggWi8g/tgbhmQlZqDUf3UqUQsZaLdIu/XSjgoZqDja # mzCPJtOLi2hBwL+KsCh0Nbwc21f5xvPSwym0Ukr4o5sCcMUcSy6TEP7uMV8RX0eH # /4JLEpGyae6Ki8JYg5v4fsNGif1OXHJ2IWG+7zyjTDfkmQ1snFOTgyEX8qBpefQb # F0fx6URrYiarjmBprwP6ZObwtZXJ23jK3Fg/9uqM3j0P01nzVygTppBabzxPAh/h # Hhhls6kwo3QLJ6No803jUsZcd4JQxiYHHc+Q/wAMcPUnYKv/q2O444LO1+n6j01z # 5mggCSlRwD9faBIySAcA9S8h22hIAcRQqIGEjolCK9F6nK9ZyX4lhthsGHumaABd # WzCCB5cwggV/oAMCAQICEzMAAABV2d1pJij5+OIAAAAAAFUwDQYJKoZIhvcNAQEM # BQAwYTELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv # bjEyMDAGA1UEAxMpTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZXN0YW1waW5nIENB # IDIwMjAwHhcNMjUxMDIzMjA0NjQ5WhcNMjYxMDIyMjA0NjQ5WjCB2zELMAkGA1UE # BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc # BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjElMCMGA1UECxMcTWljcm9zb2Z0 # IEFtZXJpY2EgT3BlcmF0aW9uczEnMCUGA1UECxMeblNoaWVsZCBUU1MgRVNOOjdE # MDAtMDVFMC1EOTQ3MTUwMwYDVQQDEyxNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1l # IFN0YW1waW5nIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC # ggIBAL25H5IeWUiz9DAlFmn2sPymaFWbvYkMfK+ScIWb3a1IvOlIwghUDjY0Gp6y # MRhfYURiGS0GedIB6ywvuH6VBCX3+bdOFcAclgtv21jrpOjZmk4fSaT2Q3BszUfe # UJa8o3xI7ZfoMY9dszTxHQAz6ZVX87fHGEVhQcfxW33IdPJOj/ae419qtYxT21MV # mCfsTshgtWioQxmOW/vMC9/b+qgtBxSMf798vm3qfmhF6KCvFaHlivrM32hY16PG # E3L0PFC+LM7vRxU7mTb+r76CeybvqOWk4+dbKYftPhV1t/E5S/6wwXeYmu/Y7JC7 # Tnh2w45G5Y4pcM3oHMb/YuPRdOWa0v+RC2QgmNVWqjuxDiylWscXQDuaMtb29Acd # GUVV9ZsRY2M2sthAtOdZOshiR5ufMtaHtiCkWv0jNfgUxrHurxzYuUNneWZ6EfQD # gFAw8CSCKkSOK2c9jEop4ddVq10xvbqxdrqMneVXvvIcXrPQAXj9j2ECpV2EwMb3 # Wnmpw00P78JpzPsk3Fs61ZvOGd/F1RcOBu6f2TWdp7HL7+rq7tgHr13MldbfIWu4 # lpoYYE1gTQa1Yrg5XN4j7zs9klT2z3qocmPzV8DWQgIHNh+aTs7bujMEMQyI7Xt1 # zPxZCgcR6H0tmmzU/9BxvsWbRalCQ2sYGyWupTdc4e7KY7kPAgMBAAGjggHLMIIB # xzAdBgNVHQ4EFgQUVgRfEG3cCAPwyL+pyRbKwdesZbYwHwYDVR0jBBgwFoAUa2ko # OjUvSGNAz3vYr0npPtk92yEwbAYDVR0fBGUwYzBhoF+gXYZbaHR0cDovL3d3dy5t # aWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwUHVibGljJTIwUlNB # JTIwVGltZXN0YW1waW5nJTIwQ0ElMjAyMDIwLmNybDB5BggrBgEFBQcBAQRtMGsw # aQYIKwYBBQUHMAKGXWh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2Vy # dHMvTWljcm9zb2Z0JTIwUHVibGljJTIwUlNBJTIwVGltZXN0YW1waW5nJTIwQ0El # MjAyMDIwLmNydDAMBgNVHRMBAf8EAjAAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMI # MA4GA1UdDwEB/wQEAwIHgDBmBgNVHSAEXzBdMFEGDCsGAQQBgjdMg30BATBBMD8G # CCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3Mv # UmVwb3NpdG9yeS5odG0wCAYGZ4EMAQQCMA0GCSqGSIb3DQEBDAUAA4ICAQBSHuGS # VHvalCnFnlsqXIQefH1xP2SFr9g+Vz+f5P7QeywjfQb5jUlSmd1XnJUDPe/MHxL7 # r3TEElL+mNtG6CDPAytStSFPXD9tTBtBMYh8Wqo64pH9qm361yIqeBH979mzWCkM # QsTd0nM6dUl9B+7qiti+ToXwxIl39eYqLuYYfhD2mqqePXMzUKSQzkf73yYIVHP6 # nLJQz4aAmaWcfG9jg78sBkDV8KpW7JgktuLhphJEN1B+SVHjenPdcmrFXIUu/K4j # K5ukfWaQIjuaXzSjBlNjC5tQN6adPfA3GxUwHPeR4ekL5If/9vBf13tmzBW+gy+0 # sNGTveb9IL9GU8iX8UvywsX62nhCCPRUhTigDBKdczRUrNrntBhowbfchBDFML8a # vRMRc9Gmc2JvIryX336SFQ51//q1UU2HMSJEMhWLJSIWJVhfUowsOa+PampIzETY # fFvTu2mqKJUlWZXkGYxrdCvCczJcqeoadpW1ul6kcdnDh228SQ8ZhDc6IRlM4iNd # 5SNoNgX+aom3wuGyjUaSaPZWxPB1G2NKiYhPLt0lPHg0Gskj1zhISY8UQkMMDr3o # 2JgRuT+wnJEDQUp55ddvhSkSoD6I9DL/s+TjIY/c9jLaW5xywJHqdKHUApRMsghv # 7kebSua1upmR+TquelFktDSOjVdSRkuya4uoxTGCB0YwggdCAgEBMHgwYTELMAkG # A1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UE # AxMpTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZXN0YW1waW5nIENBIDIwMjACEzMA # AABV2d1pJij5+OIAAAAAAFUwDQYJYIZIAWUDBAIBBQCgggSfMBEGCyqGSIb3DQEJ # EAIPMQIFADAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkF # MQ8XDTI2MDkwMzEzMDkwNFowLwYJKoZIhvcNAQkEMSIEIJ0+5SrVfeHOs1FeqdJg # lTzy1gKW7nQ4bDdNgKUky0oYMIG5BgsqhkiG9w0BCRACLzGBqTCBpjCBozCBoAQg # 2Lk8l2SGYru/ff7+D2qrJnkswcYdK6pGKu7GGGr4/s0wfDBlpGMwYTELMAkGA1UE # BhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMp # TWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZXN0YW1waW5nIENBIDIwMjACEzMAAABV # 2d1pJij5+OIAAAAAAFUwggNhBgsqhkiG9w0BCRACEjGCA1AwggNMoYIDSDCCA0Qw # ggIsAgEBMIIBCaGB4aSB3jCB2zELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp # bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw # b3JhdGlvbjElMCMGA1UECxMcTWljcm9zb2Z0IEFtZXJpY2EgT3BlcmF0aW9uczEn # MCUGA1UECxMeblNoaWVsZCBUU1MgRVNOOjdEMDAtMDVFMC1EOTQ3MTUwMwYDVQQD # EyxNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1lIFN0YW1waW5nIEF1dGhvcml0eaIj # CgEBMAcGBSsOAwIaAxUAHTtUAYJlv7bgWVeRBo4X7FeHDeqgZzBlpGMwYTELMAkG # A1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UE # AxMpTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZXN0YW1waW5nIENBIDIwMjAwDQYJ # KoZIhvcNAQELBQACBQDuQ3CEMCIYDzIwMjYwOTAzMDQwNTI0WhgPMjAyNjA5MDQw # NDA1MjRaMHcwPQYKKwYBBAGEWQoEATEvMC0wCgIFAO5DcIQCAQAwCgIBAAICHoUC # Af8wBwIBAAICEkkwCgIFAO5EwgQCAQAwNgYKKwYBBAGEWQoEAjEoMCYwDAYKKwYB # BAGEWQoDAqAKMAgCAQACAwehIKEKMAgCAQACAwGGoDANBgkqhkiG9w0BAQsFAAOC # AQEAQ6awYFyra+/SNgXW0M+vQ1mZYsjYRibqdqpXqPG3CwG5HHH3BIs1iltDEsu+ # O+TJs+uqSqctCOd5AKapJNkL27SARlOVpadQsZp53hLRJve6F4RzIZm1GjXkCUeg # lSP4ERhT9YTofNPzw4iQmtuRVQaGD/C+zNRIKTRzJhkakoD9Q2SbEH268QfiClc5 # BiXw2VmyLD7Yur5MPq93zt5uNCP6x3y5oRH9aQisLNgUu2F1v97JhykAKC7ijUNx # fgmW8/Nc8OwxEutSqlUAB4mLLe06DvR+0pT/NnPQMLR1mixPqQIxOaqxvk/MSXXo # xD1jS3O0gm/vPDa6ETvNnJKmxDANBgkqhkiG9w0BAQEFAASCAgBlxseF3+C/m3AP # uRTRU46rp0UDPYAsOChjQ8oDD9NqZXIj1JsfJV3syyQJGEpoQFoRVjoccgtRC4BO # PMlxs9f3B/GbmLBr6Iqc8Di7L/ie51FKyb+dzYDEH9MzQv1nvNpy4hrjW5S5Pr70 # TvADmW06tlCVg8ZEbp7yF8+Gy2JliBkdUf7kOzw8gCqa05CyVoOlhAhwGXyEOtje # e6oYHraajgHcEgDe5hSs8BQDTrcTPNEAzC0XbeDeu8N2iMXNRf5GEk3mfI4LxBi2 # 9XJEv3Vvm6o4uOuZvaep539QZ6Jk5dQUyJ03/ZreTaCDw6J3OKB8N2MT1od4zkSQ # oKELSYodxZMIxm5tILlFjzTETID9HLu0jT2EeipSKlBmCFFN5apLO4GYVVjvLJ8K # TjpaI4aUdfQ+n1ZJERJEWSkgBFxG3R3zaYbdwIq24KszEEmf79Q428w/g2FMP5b3 # FZ1Nsc2KZFC7n5I2Ts/Eo8TNzC/yTG08OxfA5HB4ixVBXODEQuTZb1eXBDNzVUbT # av1Iz2WE+1ULGdcF0eFbpZEcXptaZJPMqpCCwWC/f+gqS3s87mx8lCYRzuiggOwG # NpU3U8W8z9HvgF8bPUPWlElaFvNiF8S875dt6MI7UpUYl5eF54eWjKAAPRLmDDz7 # cr1J52iYawNvFxPH3r0x1R6vV9Rz6w== # SIG # End signature block |