From 036b4aaa0ffa0b1e7858baabcc7cb5467af9ddab Mon Sep 17 00:00:00 2001 From: SzenteP <22157560+szentep@users.noreply.github.com> Date: Wed, 21 Jan 2026 20:08:16 +0100 Subject: [PATCH 1/5] Fix warning --- Source/Falcor/Utils/UI/TextRenderer.3d.slang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Falcor/Utils/UI/TextRenderer.3d.slang b/Source/Falcor/Utils/UI/TextRenderer.3d.slang index f9214ef37..bec429036 100644 --- a/Source/Falcor/Utils/UI/TextRenderer.3d.slang +++ b/Source/Falcor/Utils/UI/TextRenderer.3d.slang @@ -45,7 +45,7 @@ void vsMain(float2 posS: POSITION, inout float2 texC: TEXCOORD, out float4 posSV float4 calcColor(float2 texC) { - float4 color = gFontTex.Load(int3(texC, 0)); + float4 color = gFontTex.Load(int3(int2(texC), 0)); color.rgb = gFontColor; return color; } From 182138a9d80975aef097ea56d5e59d6f644895d3 Mon Sep 17 00:00:00 2001 From: SzenteP <22157560+szentep@users.noreply.github.com> Date: Wed, 21 Jan 2026 20:08:40 +0100 Subject: [PATCH 2/5] Fix texture bug --- Source/Falcor/Core/API/Texture.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Source/Falcor/Core/API/Texture.cpp b/Source/Falcor/Core/API/Texture.cpp index 2a6193145..502e4c8c5 100644 --- a/Source/Falcor/Core/API/Texture.cpp +++ b/Source/Falcor/Core/API/Texture.cpp @@ -509,9 +509,17 @@ ref Texture::getDSV(uint32_t mipLevel, uint32_t firstArraySlic ref Texture::getUAV(uint32_t mipLevel, uint32_t firstArraySlice, uint32_t arraySize) { - auto createFunc = [](Texture* pTexture, uint32_t mostDetailedMip, uint32_t mipCount, uint32_t firstArraySlice, uint32_t arraySize) - { return UnorderedAccessView::create(pTexture->getDevice().get(), pTexture, mostDetailedMip, firstArraySlice, arraySize); }; - + auto createFunc = + [mipLevel](Texture* pTexture, uint32_t mostDetailedMip, uint32_t mipCount, uint32_t firstArraySlice, uint32_t arraySize) + { + auto& size = pTexture->getGfxTextureResource()->getDesc()->size; + gfx::ITextureResource::Extents origSize = size; + size.depth = size.depth >> mipLevel; + size.depth = size.depth < 1 ? 1 : size.depth; + auto view = UnorderedAccessView::create(pTexture->getDevice().get(), pTexture, mostDetailedMip, firstArraySlice, arraySize); + size = origSize; + return view; + }; return findViewCommon(this, mipLevel, 1, firstArraySlice, arraySize, mUavs, createFunc); } From 70a50c39995d344604c54c4a89afc98143fa8fc5 Mon Sep 17 00:00:00 2001 From: SzenteP <22157560+szentep@users.noreply.github.com> Date: Wed, 21 Jan 2026 20:14:04 +0100 Subject: [PATCH 3/5] VS2026 config --- .gitmodules | 2 +- CMakeLists.txt | 2 +- CMakePresets.json | 50 ++- dependencies.xml | 4 +- setup_vs2026.bat | 36 ++ tools/packman/bootstrap/configure.bat | 41 +- .../bootstrap/download_file_from_url.ps1 | 208 +++++++++- .../fetch_file_from_packman_bootstrap.cmd | 2 +- .../bootstrap/generate_temp_file_name.ps1 | 341 ++++++++++------- .../bootstrap/generate_temp_folder.ps1 | 341 ++++++++++------- tools/packman/bootstrap/install_package.py | 2 +- tools/packman/packman | 357 ++++++++++-------- tools/packman/packmanconf.py | 37 +- 13 files changed, 960 insertions(+), 463 deletions(-) create mode 100644 setup_vs2026.bat diff --git a/.gitmodules b/.gitmodules index d5b5353ff..802d85427 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "external/pybind11"] path = external/pybind11 - url = https://github.com/skallweitNV/pybind11.git + url = https://github.com/pybind/pybind11.git [submodule "external/glfw"] path = external/glfw url = https://github.com/glfw/glfw.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 365785a2b..582548341 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 4.2) cmake_policy(SET CMP0077 NEW) cmake_policy(SET CMP0091 NEW) diff --git a/CMakePresets.json b/CMakePresets.json index 8d52e7b13..f85158138 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -1,8 +1,8 @@ { "version": 3, "cmakeMinimumRequired": { - "major": 3, - "minor": 15, + "major": 4, + "minor": 2, "patch": 0 }, "configurePresets": [ @@ -10,7 +10,9 @@ "name": "base", "description": "Base configuration inherited by all presets.", "hidden": true, - "cacheVariables": {}, + "cacheVariables": { + "CMAKE_POLICY_VERSION_MINIMUM": "3.5" + }, "cmakeExecutable": "${sourceDir}/tools/.packman/cmake/bin/cmake", "binaryDir": "${sourceDir}/build/${presetName}" }, @@ -63,6 +65,36 @@ "ci" ] }, + { + "name": "windows-vs2026-base", + "description": "Base Visual Studio 2026 configuration.", + "hidden": true, + "inherits": "windows-base", + "generator": "Visual Studio 18 2026", + "architecture": { + "value": "x64", + "strategy": "set" + }, + "toolset": { + "value": "host=x64", + "strategy": "set" + } + }, + { + "name": "windows-vs2026", + "displayName": "Windows VS2026", + "inherits": [ + "windows-vs2026-base" + ] + }, + { + "name": "windows-vs2026-ci", + "displayName": "Windows VS2026 (CI)", + "inherits": [ + "windows-vs2026-base", + "ci" + ] + }, { "name": "windows-ninja-msvc-base", "description": "Base Ninja configuration using MSVC.", @@ -166,6 +198,18 @@ } ], "buildPresets": [ + { + "name": "windows-vs2026-release", + "displayName": "Release", + "configurePreset": "windows-vs2026", + "configuration": "Release" + }, + { + "name": "windows-vs2026-debug", + "displayName": "Debug", + "configurePreset": "windows-vs2026", + "configuration": "Debug" + }, { "name": "windows-ninja-msvc-release", "displayName": "Release", diff --git a/dependencies.xml b/dependencies.xml index 9ed0665b7..4261c9e08 100644 --- a/dependencies.xml +++ b/dependencies.xml @@ -1,10 +1,12 @@ + + - + diff --git a/setup_vs2026.bat b/setup_vs2026.bat new file mode 100644 index 000000000..cfa30f097 --- /dev/null +++ b/setup_vs2026.bat @@ -0,0 +1,36 @@ +: This script sets up a Visual Studio 2022 solution. + +@echo off +setlocal + +set PRESET_SUFFIX="" + +if "%~1"=="ci" ( + set PRESET_SUFFIX="-ci" +) + +: Fetch dependencies. +call %~dp0\setup.bat + +: Configuration. +set PRESET=windows-vs2026%PRESET_SUFFIX% +set TOOLSET=host=x64 +set CMAKE_EXE=%~dp0\tools\.packman\cmake\bin\cmake.exe +set CUSTOM_CUDA_DIR=%~dp0\external\packman\cuda + +: Check if custom CUDA directory contains a valid CUDA SDK. +: Adjust toolset string to use the custom CUDA toolkit. +if exist %CUSTOM_CUDA_DIR%\bin\nvcc.exe ( + set TOOLSET=%TOOLSET%,cuda="%CUSTOM_CUDA_DIR%" +) + +: Configure solution by running cmake. +echo Configuring Visual Studio solution ... +%CMAKE_EXE% --preset %PRESET% -T %TOOLSET% +if errorlevel 1 ( + echo Failed to configure solution! + exit /b 1 +) + +: Success. +exit /b 0 diff --git a/tools/packman/bootstrap/configure.bat b/tools/packman/bootstrap/configure.bat index 1511537ca..2ca03fa5e 100644 --- a/tools/packman/bootstrap/configure.bat +++ b/tools/packman/bootstrap/configure.bat @@ -12,7 +12,7 @@ :: See the License for the specific language governing permissions and :: limitations under the License. -set PM_PACKMAN_VERSION=7.23.2 +set PM_PACKMAN_VERSION=7.34 :: Specify where packman command is rooted set PM_INSTALL_PATH=%~dp0.. @@ -22,7 +22,7 @@ if defined PM_PACKAGES_ROOT goto ENSURE_DIR :: If the folder isn't set we assume that the best place for it is on the drive that we are currently :: running from -set PM_DRIVE=%CD:~0,2% +set PM_DRIVE=%PM_INSTALL_PATH:~0,2% set PM_PACKAGES_ROOT=%PM_DRIVE%\packman-repo @@ -59,7 +59,7 @@ if defined PM_PYTHON_EXT ( goto PACKMAN ) -set PM_PYTHON_VERSION=3.10.5-1-windows-x86_64 +set PM_PYTHON_VERSION=3.10.19-nv2-windows-x86_64 set PM_PYTHON_BASE_DIR=%PM_PACKAGES_ROOT%\python set PM_PYTHON_DIR=%PM_PYTHON_BASE_DIR%\%PM_PYTHON_VERSION% set PM_PYTHON=%PM_PYTHON_DIR%\python.exe @@ -91,8 +91,15 @@ if %errorlevel% neq 0 ( if exist "%PM_PYTHON%" ( call :CLEAN_UP_TEMP_FOLDER goto PACKMAN -) else ( - if exist "%PM_PYTHON_DIR%" ( rd /s /q "%PM_PYTHON_DIR%" > nul ) +) + +:: Clean out broken PM_PYTHON_DIR if it exists +if exist "%PM_PYTHON_DIR%" ( + call :REMOVE_DIR "%PM_PYTHON_DIR%" + if errorlevel 1 ( + call :CLEAN_UP_TEMP_FOLDER + goto ERROR + ) ) :: Perform atomic move (allowing overwrite, /y) @@ -122,7 +129,10 @@ set PM_MODULE=%PM_MODULE_DIR%\run.py if exist "%PM_MODULE%" goto END :: Clean out broken PM_MODULE_DIR if it exists -if exist "%PM_MODULE_DIR%" ( rd /s /q "%PM_MODULE_DIR%" > nul ) +if exist "%PM_MODULE_DIR%" ( + call :REMOVE_DIR "%PM_MODULE_DIR%" + if errorlevel 1 goto :ERROR +) set PM_MODULE_PACKAGE=packman-common@%PM_PACKMAN_VERSION%.zip for /f "delims=" %%a in ('powershell -ExecutionPolicy ByPass -NoLogo -NoProfile -File "%~dp0\generate_temp_file_name.ps1"') do set TEMP_FILE_NAME=%%a @@ -153,13 +163,26 @@ echo. echo Then launch a new command console for the changes to take effect and run packman command again. exit /B %errorlevel% +:REMOVE_DIR +rd /s /q "%~1" > nul +if exist "%~1" ( + echo !!! Error removing corrupt directory %~1 !!! + echo !!! Please remove this path manually !!! + exit /B 1 +) +exit /B 0 + :ERROR echo !!! Failure while configuring local machine :( !!! -exit /B %errorlevel% +exit /B 1 :CLEAN_UP_TEMP_FOLDER -rd /S /Q "%TEMP_FOLDER_NAME%" -exit /B +rd /S /Q "%TEMP_FOLDER_NAME%" > nul +if exist "%TEMP_FOLDER_NAME%" ( + echo !!! Error removing temporary directory %TEMP_FOLDER_NAME% !!! + exit /B 1 +) +exit /B 0 :CREATE_PYTHON_BASE_DIR :: We ignore errors and clean error state - if two processes create the directory one will fail which is fine diff --git a/tools/packman/bootstrap/download_file_from_url.ps1 b/tools/packman/bootstrap/download_file_from_url.ps1 index df5574560..f48746c34 100644 --- a/tools/packman/bootstrap/download_file_from_url.ps1 +++ b/tools/packman/bootstrap/download_file_from_url.ps1 @@ -50,4 +50,210 @@ if (Test-Path $fileName) { Remove-Item $fileName } -exit 1 \ No newline at end of file +exit 1 +# SIG # Begin signature block +# MIImLAYJKoZIhvcNAQcCoIImHTCCJhkCAQExDzANBglghkgBZQMEAgEFADB5Bgor +# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG +# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDHvhlkuNeNjVmZ +# 6t3EznwfeXwiLR1Z0fyC+qKth4P36qCCDbQwggawMIIEmKADAgECAhAIrUCyYNKc +# TJ9ezam9k67ZMA0GCSqGSIb3DQEBDAUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK +# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV +# BAMTGERpZ2lDZXJ0IFRydXN0ZWQgUm9vdCBHNDAeFw0yMTA0MjkwMDAwMDBaFw0z +# NjA0MjgyMzU5NTlaMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwg +# SW5jLjFBMD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcg +# UlNBNDA5NiBTSEEzODQgMjAyMSBDQTEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +# ggIKAoICAQDVtC9C0CiteLdd1TlZG7GIQvUzjOs9gZdwxbvEhSYwn6SOaNhc9es0 +# JAfhS0/TeEP0F9ce2vnS1WcaUk8OoVf8iJnBkcyBAz5NcCRks43iCH00fUyAVxJr +# Q5qZ8sU7H/Lvy0daE6ZMswEgJfMQ04uy+wjwiuCdCcBlp/qYgEk1hz1RGeiQIXhF +# LqGfLOEYwhrMxe6TSXBCMo/7xuoc82VokaJNTIIRSFJo3hC9FFdd6BgTZcV/sk+F +# LEikVoQ11vkunKoAFdE3/hoGlMJ8yOobMubKwvSnowMOdKWvObarYBLj6Na59zHh +# 3K3kGKDYwSNHR7OhD26jq22YBoMbt2pnLdK9RBqSEIGPsDsJ18ebMlrC/2pgVItJ +# wZPt4bRc4G/rJvmM1bL5OBDm6s6R9b7T+2+TYTRcvJNFKIM2KmYoX7BzzosmJQay +# g9Rc9hUZTO1i4F4z8ujo7AqnsAMrkbI2eb73rQgedaZlzLvjSFDzd5Ea/ttQokbI +# YViY9XwCFjyDKK05huzUtw1T0PhH5nUwjewwk3YUpltLXXRhTT8SkXbev1jLchAp +# QfDVxW0mdmgRQRNYmtwmKwH0iU1Z23jPgUo+QEdfyYFQc4UQIyFZYIpkVMHMIRro +# OBl8ZhzNeDhFMJlP/2NPTLuqDQhTQXxYPUez+rbsjDIJAsxsPAxWEQIDAQABo4IB +# WTCCAVUwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUaDfg67Y7+F8Rhvv+ +# YXsIiGX0TkIwHwYDVR0jBBgwFoAU7NfjgtJxXWRM3y5nP+e6mK4cD08wDgYDVR0P +# AQH/BAQDAgGGMBMGA1UdJQQMMAoGCCsGAQUFBwMDMHcGCCsGAQUFBwEBBGswaTAk +# BggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEEGCCsGAQUFBzAC +# hjVodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkUm9v +# dEc0LmNydDBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsMy5kaWdpY2VydC5j +# b20vRGlnaUNlcnRUcnVzdGVkUm9vdEc0LmNybDAcBgNVHSAEFTATMAcGBWeBDAED +# MAgGBmeBDAEEATANBgkqhkiG9w0BAQwFAAOCAgEAOiNEPY0Idu6PvDqZ01bgAhql +# +Eg08yy25nRm95RysQDKr2wwJxMSnpBEn0v9nqN8JtU3vDpdSG2V1T9J9Ce7FoFF +# UP2cvbaF4HZ+N3HLIvdaqpDP9ZNq4+sg0dVQeYiaiorBtr2hSBh+3NiAGhEZGM1h +# mYFW9snjdufE5BtfQ/g+lP92OT2e1JnPSt0o618moZVYSNUa/tcnP/2Q0XaG3Ryw +# YFzzDaju4ImhvTnhOE7abrs2nfvlIVNaw8rpavGiPttDuDPITzgUkpn13c5Ubdld +# AhQfQDN8A+KVssIhdXNSy0bYxDQcoqVLjc1vdjcshT8azibpGL6QB7BDf5WIIIJw +# 8MzK7/0pNVwfiThV9zeKiwmhywvpMRr/LhlcOXHhvpynCgbWJme3kuZOX956rEnP +# LqR0kq3bPKSchh/jwVYbKyP/j7XqiHtwa+aguv06P0WmxOgWkVKLQcBIhEuWTatE +# QOON8BUozu3xGFYHKi8QxAwIZDwzj64ojDzLj4gLDb879M4ee47vtevLt/B3E+bn +# KD+sEq6lLyJsQfmCXBVmzGwOysWGw/YmMwwHS6DTBwJqakAwSEs0qFEgu60bhQji +# WQ1tygVQK+pKHJ6l/aCnHwZ05/LWUpD9r4VIIflXO7ScA+2GRfS0YW6/aOImYIbq +# yK+p/pQd52MbOoZWeE4wggb8MIIE5KADAgECAhAJl8VsqlkFU5TZqc24vutWMA0G +# CSqGSIb3DQEBCwUAMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwg +# SW5jLjFBMD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcg +# UlNBNDA5NiBTSEEzODQgMjAyMSBDQTEwHhcNMjMwMTEzMDAwMDAwWhcNMjYwMTE2 +# MjM1OTU5WjCBgDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFDAS +# BgNVBAcTC1NhbnRhIENsYXJhMRswGQYDVQQKExJOVklESUEgQ29ycG9yYXRpb24x +# DDAKBgNVBAsTAzItSjEbMBkGA1UEAxMSTlZJRElBIENvcnBvcmF0aW9uMIIBojAN +# BgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAiIBdEHMI1HLTk5k1S0mC4p0nVHkc +# 1q129e2f6lZceD09+FT0DlluhbBI96OJnEmf1yVhZWnKM9uSQW9pMEth4cCubOzB +# q+zv5ty3h18FMFkbxCZz2S6xpo7E2e5R6+x4YALkfrVCwY5UBN1FB9KR9o/uRMEX +# 3C4hq3sFdWCU8CVlqBBNlYD8EDhWvwZ41VjmNTYLoX3TtQzqiux+xV+QEjwdKjAP +# VT99pNLXIwG7UzF49QpmiwWfa1gTh1RYh39W/ospaTfR7/rcLlSX17d5jvFpnh4L +# ROrGW4xZvZd28Jx/D10Qt4j7Sy5aWIUjIKBJ/cAq6r1xeegw4Gg8R4E6vddZ8II0 +# vF/1FwbHJo093UpxM44StIkwWk4KdWLmTKzY2tOsUwVVmJELj0GJ162hPpwe3dl/ +# 5UdHeup1RujjFKm6+x80DgZFhxYjYq9jdPqEGWuBOWueB8DfO06f7fwoYlq8RruI +# n6T+SOOcPju3SpChGK6MGL6r6a/oeDL+DRV5AgMBAAGjggIGMIICAjAfBgNVHSME +# GDAWgBRoN+Drtjv4XxGG+/5hewiIZfROQjAdBgNVHQ4EFgQUvm9ADtYQBGam7Qi3 +# Ak6bt/jwttEwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMIG1 +# BgNVHR8Ega0wgaowU6BRoE+GTWh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdp +# Q2VydFRydXN0ZWRHNENvZGVTaWduaW5nUlNBNDA5NlNIQTM4NDIwMjFDQTEuY3Js +# MFOgUaBPhk1odHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVk +# RzRDb2RlU2lnbmluZ1JTQTQwOTZTSEEzODQyMDIxQ0ExLmNybDA+BgNVHSAENzA1 +# MDMGBmeBDAEEATApMCcGCCsGAQUFBwIBFhtodHRwOi8vd3d3LmRpZ2ljZXJ0LmNv +# bS9DUFMwgZQGCCsGAQUFBwEBBIGHMIGEMCQGCCsGAQUFBzABhhhodHRwOi8vb2Nz +# cC5kaWdpY2VydC5jb20wXAYIKwYBBQUHMAKGUGh0dHA6Ly9jYWNlcnRzLmRpZ2lj +# ZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVTaWduaW5nUlNBNDA5NlNIQTM4 +# NDIwMjFDQTEuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggIBAE1r +# cSetpoyq/nxFlXWqfQrT22/zerHAdozr83jTDZ8yWOcY7FLFHWDT5HbpLte3CnMb +# 5vwtaZabIkqJkiiBWRx9mlyFLoHH70dxRKjtMEEmfjKVylDOSws4KZPr8NJ4gNi5 +# zJCIejw2rdeQumQloMROcIEO6Vhn72lq9BPiU2kHqx99uOwNxDsJlB0iZ3PI3B3z +# VznrFlzTm59WSuidbvyvfm/CHO413zxhBevbp8KUERd/dw2/K1W6k54dlPLQ5360 +# +cA+Xnvji6fR/UwOOIpGd7kWoOijYXgSh4lC5pLq1ZwVCDnl04SY7BITybB4sJYN +# NNaZlXrHQgYfBqB17VLmuSSbGm8BlFSRoP9lPLEOIfLA2L3zWYW8KdLWAoZ3wamo +# O4KGkoB63yK+AHfyFVMT+Oyy0rBAvsc0bGWaTuHIXGRtQ1eSLaDAn8JIZpCqpLdy +# 2MXlW/yZu0fZ/ekrcAVpc5bvAN+N66oX7KHpTFOhySAfoaBzi2P6tyvBaGduC74m +# WOUFtIq0aIRcyMD0JyBixs4hL1PX8VEA5bgrMJobYVpfl4iGcKpeXv1VrY5Xy6Ui +# AhufVdpBCTpG808jBnMzxMBFRNH13V522K47KbENibqPXpOaguReVZQYuPTn7Iq6 +# 3quSqZgKoIkdEcPRPstdSbB4ExYNDl7S3wANXwobMYIXzjCCF8oCAQEwfTBpMQsw +# CQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERp +# Z2lDZXJ0IFRydXN0ZWQgRzQgQ29kZSBTaWduaW5nIFJTQTQwOTYgU0hBMzg0IDIw +# MjEgQ0ExAhAJl8VsqlkFU5TZqc24vutWMA0GCWCGSAFlAwQCAQUAoHwwEAYKKwYB +# BAGCNwIBDDECMAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGC +# NwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEINQcPKmArPAXhM1r +# 6lvlPf4YmcUooW/49i8G7vdZiX3fMA0GCSqGSIb3DQEBAQUABIIBgFRVW7+Xx04P +# JzcPdOceKnpayy7VuiwqgtSP6vsn7s8pdRpu3WPdhMzr3h6+imHTKaLQ5kyrOwYI +# 9w5upAsOQLUWEIVCmSVv3Zl/tBMgGKvTq/4vhYDGOeNFdZx6e6aCZWS79Y/19z3I +# p5L7niH5oW88x8MwT1RP3D7jIscNEABmye4K5e81kMcMjKuju0FJJBzzNd6ECTWS +# 6nA9BoazFlfjM1hQN2Hfl73QjpLXCnSGuyM7npPoseNOxLrsWiabOUoGaRskfWqW +# DFCAAs0PDz+eUz6m6ErsXqnBocnmW8dHh0tQwOFEmg8EoYJrg9WEDU8eQlDcBRGa +# 2fc9TcB8G7xmxgudFK2TIW9MhvbfUP+zSsTuc7fvinhepomkY5cwh4x2kuIaov68 +# FI5tOkuOBJpF925+l269CPvBQQStYQFhnW3NRBqgtC2+SxzQT1mm6QBSh/7mMDn4 +# bSFEQQhjtjQ/rwxbF+g/aNuh6ztsfARnJDkwaITu3zYaG0Ndm4QG0KGCFSQwghUg +# BgorBgEEAYI3AwMBMYIVEDCCFQwGCSqGSIb3DQEHAqCCFP0wghT5AgEDMQ0wCwYJ +# YIZIAWUDBAIBMIHRBgsqhkiG9w0BCRABBKCBwQSBvjCBuwIBAQYKYIZIAYb6bAoD +# BTAxMA0GCWCGSAFlAwQCAQUABCBAiaX9dirvYXFsbOcRDuIZO7731s9cNi4YHgAE +# K62WDwIJAMTQtKHKVrhgGA8yMDI1MDgxNTE1MjExNlowAwIBAaBWpFQwUjELMAkG +# A1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKzApBgNVBAMTIkVudHJ1 +# c3QgVGltZXN0YW1wIEF1dGhvcml0eSAtIFRTQTGggg9tMIIEKjCCAxKgAwIBAgIE +# OGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5uZXQxQDA+ +# BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4g +# KGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExp +# bWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9y +# aXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQw +# EgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3LmVudHJ1c3QubmV0L0NQ +# U18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc +# KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u +# ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0B +# AQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4 +# QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyr +# pUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuXMlBvPci6Zgzj/L24ScF2 +# iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzWnLLPKQP5L6RQstRI +# zgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUiVBcA +# kCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNV +# HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJ +# uQijMfmhJAkWuXAwDQYJKoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZ +# lZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPyT/4xmf3IDExoU8aAghOY+rat2l098c5u +# 9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6YfzX1XEC+bBAlahLVu2B06 +# 4dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKTJ1wDLW8w +# 0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8 +# eS9enNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVEw +# ggUTMIID+6ADAgECAgxY2hP/AAAAAFHODfcwDQYJKoZIhvcNAQELBQAwgbQxFDAS +# BgNVBAoTC0VudHJ1c3QubmV0MUAwPgYDVQQLFDd3d3cuZW50cnVzdC5uZXQvQ1BT +# XzIwNDggaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwo +# YykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVkMTMwMQYDVQQDEypFbnRydXN0Lm5l +# dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAoMjA0OCkwHhcNMTUwNzIyMTkwMjU0 +# WhcNMjkwNjIyMTkzMjU0WjCBsjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1 +# c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy +# bXMxOTA3BgNVBAsTMChjKSAyMDE1IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9y +# aXplZCB1c2Ugb25seTEmMCQGA1UEAxMdRW50cnVzdCBUaW1lc3RhbXBpbmcgQ0Eg +# LSBUUzEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZI+YUpOh8S4Vx +# WPv4geZyi11Gw4gAHzjQiuHWblYw5a/aZFB9whM5+71mtNqE+4PQKB/LduhgUGmb +# 885PE+LBPsHfEssyo/heRCIOzDrpjUm5YHTI3lQ9QV5DXyhGqaa3yhArIrxbTVuM +# F2UShv0sd9XFoIzKwoPgR1d853CuYkUnMRgK1MCkGFVS92DGBEuz3WgybhAfNBG4 +# Enhk8e6p4PfjsSKPNFply4r04UVQdN+Tl6Y05tBMO583SVKnU06fLmdc7Zb8pb90 +# UYjjqo692bEvX1AwFvRRYCJrmcv/4VQ7uftEOKUIOSObaUf6PMTQ56rfRrLs8ooZ +# rCmyOJV1AgMBAAGjggEjMIIBHzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB +# /wQEAwIBBjA7BgNVHSAENDAyMDAGBFUdIAAwKDAmBggrBgEFBQcCARYaaHR0cDov +# L3d3dy5lbnRydXN0Lm5ldC9ycGEwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzAB +# hhdodHRwOi8vb2NzcC5lbnRydXN0Lm5ldDAyBgNVHR8EKzApMCegJaAjhiFodHRw +# Oi8vY3JsLmVudHJ1c3QubmV0LzIwNDhjYS5jcmwwEwYDVR0lBAwwCgYIKwYBBQUH +# AwgwHQYDVR0OBBYEFMPCcdJ712gFrjs5mzQlDGIDx1doMB8GA1UdIwQYMBaAFFXk +# gdERgL7YibkIozH5oSQJFrlwMA0GCSqGSIb3DQEBCwUAA4IBAQAdJOeadFuqcPyx +# DjFF1ywAf2Y6K6CaNKqsY22J+Z/fDXf9JCP8T5y3b4/z9B+2wf3WHMSMiGbBY426 +# V3fTuBoeyFGtzGA2GodqKOoRZd7MPCyMdLfoUEPTzCjoFWwRKp8UlSnJBVe1Zzbo +# PKmD70HBIRbTfvctEUdmdmCCEmmMdlVzD98vS13pbCP4B/a1fdZpRZxYfWEu/HhL +# Q06JkUZELKBTqEWh9hZYu5ET8kvF3wvA564per1Fs+dwMOc0jut69tO10d5rE5lG +# s4vSTZN1tfFvv9wAKMIlv7zno2U07D8NHZeM+qqIIqQYNdsFjnbjEMgpj2PQrqwY +# 2drEn1ESMIIGJDCCBQygAwIBAgIRAJhAfF4Wz4fB6cH/+bQKiI0wDQYJKoZIhvcN +# AQELBQAwgbIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgw +# JgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQL +# EzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9u +# bHkxJjAkBgNVBAMTHUVudHJ1c3QgVGltZXN0YW1waW5nIENBIC0gVFMxMB4XDTI1 +# MDEyMjE3NDIzM1oXDTI5MDYyMTIzNTk1OVowUjELMAkGA1UEBhMCVVMxFjAUBgNV +# BAoTDUVudHJ1c3QsIEluYy4xKzApBgNVBAMTIkVudHJ1c3QgVGltZXN0YW1wIEF1 +# dGhvcml0eSAtIFRTQTEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDm +# 9iF5EVHu6+vYYdyyuKHGhH5bwWPoQAv59YkNUS6zTT5Q4mSwi11ZngRfqaD0E/BY +# RsLH7yWVr/K6zDLx+zr3XkDr2tYUglrnZ4xa+BtjkkD264vLYYqCFwHzE9qBmrrU +# Xrlik1DXJ//9/+z9HUbzFxJUUcV22dtz4/+yIpZbejeIq/g6iFx5s1lFO431QG0g +# 0fMDmHDTXxn/EYnHnxlHx+1F2XNC3ZHzJp8MCuoSC3alqf9Hx+GU5NooXn1Z0u5k +# hap8UVD0ES7HzeDi/6ncN5gTN0+q5tQzpbH/9dwx6iysdR/Xqk+b4o45N/Xuqr9R +# mYz8IUDryx9VGz6kHvs3AM6UhPXcArOUXi5ZZ2/585S1e/h9KCFtSDhVeHSED5U/ +# GFqRAjvO7yXqeFl7dPuBEABxRXQOeZ887VfTWF0zjq6aT/DnXUDn8n3UNncznFBN +# hL+CqKPAfwiYkBvJ8JxKtwPNRcjfhgZZ1B6S5llmvPlcwn8eAE3pekVbaltizPiL +# oJUHmeBRkv+V5HeYXZAVt6PvBLnkPI/f8l//If9fGXwgnu7pMqroRem0qiC7D2Z2 +# sIpHcL0Z7quFhD3Yar8+yXaiKBsqrQNBx3Z/FH0wfhMtViXb/ZKXfaAmO5ppiUNr +# xxjdfwQBwywzjheY850e8aMEfGcLKHUyYnbrodf1vQIDAQABo4IBkjCCAY4wDAYD +# VR0TAQH/BAIwADAdBgNVHQ4EFgQU0c0BB2KBRpZcqfC9T+DFAJ96vtwwHwYDVR0j +# BBgwFoAUw8Jx0nvXaAWuOzmbNCUMYgPHV2gwDgYDVR0PAQH/BAQDAgeAMBYGA1Ud +# JQEB/wQMMAoGCCsGAQUFBwMIMGgGCCsGAQUFBwEBBFwwWjAjBggrBgEFBQcwAYYX +# aHR0cDovL29jc3AuZW50cnVzdC5uZXQwMwYIKwYBBQUHMAKGJ2h0dHA6Ly9haWEu +# ZW50cnVzdC5uZXQvdHMxLWNoYWluMjU2LmNlcjAxBgNVHR8EKjAoMCagJKAihiBo +# dHRwOi8vY3JsLmVudHJ1c3QubmV0L3RzMWNhLmNybDBMBgNVHSAERTBDMAgGBmeB +# DAEEAjA3BgpghkgBhvpsCgEHMCkwJwYIKwYBBQUHAgEWG2h0dHBzOi8vd3d3LmVu +# dHJ1c3QubmV0L3JwYTArBgNVHRAEJDAigA8yMDI1MDEyMjE3NDIzM1qBDzIwMjYw +# NDIxMTc0MjMyWjANBgkqhkiG9w0BAQsFAAOCAQEAUJMHkSbBPp9AsFTS38ZYKTvM +# /uC4uRbJb+XI8mkjHEC8KjKwRxBpoXdS8LUZeeo2xLTqBOqwYc2knsjmffBLMvmO +# vOXmGolrfxmAV8C1AXjXwjedN/2veyYpNAI/m1ppCZe3bSJq2KMUZNnaxrBom8ZX +# 8yVWBlqDm+SI79SvWhaAwhdQdV0Uw2TnHuTOcDGZMMpR5CWXBe8IvY3KPYyGkeKt +# d9DhkDTm2CTKSKzlpIkjeNUIfMuG/LYMZClutusx6UXSCBjdP+utU1fMluHvu6ej +# hQ/gClsmbLLI4XWQ08q3esSTwsZ3n44BdDFn1IUHmH6VEPtN7BKTXQrSvWOv6DGC +# BJ4wggSaAgEBMIHIMIGyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwg +# SW5jLjEoMCYGA1UECxMfU2VlIHd3dy5lbnRydXN0Lm5ldC9sZWdhbC10ZXJtczE5 +# MDcGA1UECxMwKGMpIDIwMTUgRW50cnVzdCwgSW5jLiAtIGZvciBhdXRob3JpemVk +# IHVzZSBvbmx5MSYwJAYDVQQDEx1FbnRydXN0IFRpbWVzdGFtcGluZyBDQSAtIFRT +# MQIRAJhAfF4Wz4fB6cH/+bQKiI0wCwYJYIZIAWUDBAIBoIIBqDAaBgkqhkiG9w0B +# CQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI1MDgxNTE1MjExNlow +# KwYJKoZIhvcNAQk0MR4wHDALBglghkgBZQMEAgGhDQYJKoZIhvcNAQELBQAwLwYJ +# KoZIhvcNAQkEMSIEILhs/SdSMrCDjragBCCMF+y0dTTUnMSMgAhaAE6kbPFkMIIB +# DAYLKoZIhvcNAQkQAi8xgfwwgfkwgfYwgfMEIKOKGKfJotdx9x+8kEqC4/FjmsgU +# DE4TVbX7wnGZTP66MIHOMIG4pIG1MIGyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +# RW50cnVzdCwgSW5jLjEoMCYGA1UECxMfU2VlIHd3dy5lbnRydXN0Lm5ldC9sZWdh +# bC10ZXJtczE5MDcGA1UECxMwKGMpIDIwMTUgRW50cnVzdCwgSW5jLiAtIGZvciBh +# dXRob3JpemVkIHVzZSBvbmx5MSYwJAYDVQQDEx1FbnRydXN0IFRpbWVzdGFtcGlu +# ZyBDQSAtIFRTMQIRAJhAfF4Wz4fB6cH/+bQKiI0wDQYJKoZIhvcNAQELBQAEggIA +# K6OhSPikCaoQL6QVhs2FzWoxUp1ACk7H/5TQ94X3hUODZTh+vPGoWRAJ6YEspD2a +# 9gILEWazcg+iCDYS7u07LzR0A23KkGekWpaLyaQB1bR866e9VoKDv3uOraDhb7ya +# MDO0YCRkvc0loRubvqepiyYhme6hDV41IunkuHTYxsDwIqMFluy82q0UaI9tE6h3 +# DcE4LUBQXQfVY2LGA3a3Q8VkF5U5bFGFikrRF8Tzcn4n6TQBVsZJZO20BKC6kVRt +# huu24nFC2+1OqsCzGslcuDzQoKURiVi+smxesdaUKKWGrL9eDHp6Nu9Q0GsS2YhQ +# 9qal6DYu0EAJktGQPoIGXBWfqqhvPYln+uram4hZXwkFU7JNqUGpuoVaq/vyKKBf +# OnS2eugJth1C5rVhaURII8xBnKnv5BjQIU2DX/9YLIEo/xQzsXb52WDB+LbVDtOd +# m45BeNrga8StpyBFn1FRiVT7BSqn2IKSriXo9dqL7lRexq/o3wuwSBFAQJsf9zvi +# T1nppio5unXDjfPslo8WQ1SC11S/tI46CqfhOU+h/PyigsS/9SwVv95k8nonXc+P +# oPFxcPxc6JRv1ON10vR0jU06Q32vcyRnu/J7Aje1TtywM9Y+nLZqdmxhFTABrn7O +# qhN0vs0MmHssobQk9h1iYjjtbxaqZJwS3FpPCDrjGJY= +# SIG # End signature block diff --git a/tools/packman/bootstrap/fetch_file_from_packman_bootstrap.cmd b/tools/packman/bootstrap/fetch_file_from_packman_bootstrap.cmd index bf3a88d50..80eb31b68 100644 --- a/tools/packman/bootstrap/fetch_file_from_packman_bootstrap.cmd +++ b/tools/packman/bootstrap/fetch_file_from_packman_bootstrap.cmd @@ -20,7 +20,7 @@ @echo Fetching %PACKAGE_NAME% ... @powershell -ExecutionPolicy ByPass -NoLogo -NoProfile -File "%~dp0download_file_from_url.ps1" ^ - -source "http://bootstrap.packman.nvidia.com/%PACKAGE_NAME%" -output %TARGET_PATH% + -source "https://bootstrap.packman.nvidia.com/%PACKAGE_NAME%" -output %TARGET_PATH% :: A bug in powershell prevents the errorlevel code from being set when using the -File execution option :: We must therefore do our own failure analysis, basically make sure the file exists: @if not exist %TARGET_PATH% goto ERROR_DOWNLOAD_FAILED diff --git a/tools/packman/bootstrap/generate_temp_file_name.ps1 b/tools/packman/bootstrap/generate_temp_file_name.ps1 index aa3f0048d..7ecceed1e 100644 --- a/tools/packman/bootstrap/generate_temp_file_name.ps1 +++ b/tools/packman/bootstrap/generate_temp_file_name.ps1 @@ -17,145 +17,208 @@ limitations under the License. $out = [System.IO.Path]::GetTempFileName() Write-Host $out # SIG # Begin signature block -# MIIaVwYJKoZIhvcNAQcCoIIaSDCCGkQCAQExDzANBglghkgBZQMEAgEFADB5Bgor +# MIImLAYJKoZIhvcNAQcCoIImHTCCJhkCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAK+Ewup1N0/mdf -# 1l4R58rxyumHgZvTmEhrYTb2Zf0zd6CCCiIwggTTMIIDu6ADAgECAhBi50XpIWUh -# PJcfXEkK6hKlMA0GCSqGSIb3DQEBCwUAMIGEMQswCQYDVQQGEwJVUzEdMBsGA1UE -# ChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0 -# IE5ldHdvcmsxNTAzBgNVBAMTLFN5bWFudGVjIENsYXNzIDMgU0hBMjU2IENvZGUg -# U2lnbmluZyBDQSAtIEcyMB4XDTE4MDcwOTAwMDAwMFoXDTIxMDcwOTIzNTk1OVow -# gYMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRQwEgYDVQQHDAtT -# YW50YSBDbGFyYTEbMBkGA1UECgwSTlZJRElBIENvcnBvcmF0aW9uMQ8wDQYDVQQL -# DAZJVC1NSVMxGzAZBgNVBAMMEk5WSURJQSBDb3Jwb3JhdGlvbjCCASIwDQYJKoZI -# hvcNAQEBBQADggEPADCCAQoCggEBALEZN63dA47T4i90jZ84CJ/aWUwVtLff8AyP -# YspFfIZGdZYiMgdb8A5tBh7653y0G/LZL6CVUkgejcpvBU/Dl/52a+gSWy2qJ2bH -# jMFMKCyQDhdpCAKMOUKSC9rfzm4cFeA9ct91LQCAait4LhLlZt/HF7aG+r0FgCZa -# HJjJvE7KNY9G4AZXxjSt8CXS8/8NQMANqjLX1r+F+Hl8PzQ1fVx0mMsbdtaIV4Pj -# 5flAeTUnz6+dCTx3vTUo8MYtkS2UBaQv7t7H2B7iwJDakEQKk1XHswJdeqG0osDU -# z6+NVks7uWE1N8UIhvzbw0FEX/U2kpfyWaB/J3gMl8rVR8idPj8CAwEAAaOCAT4w -# ggE6MAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUF -# BwMDMGEGA1UdIARaMFgwVgYGZ4EMAQQBMEwwIwYIKwYBBQUHAgEWF2h0dHBzOi8v -# ZC5zeW1jYi5jb20vY3BzMCUGCCsGAQUFBwICMBkMF2h0dHBzOi8vZC5zeW1jYi5j -# b20vcnBhMB8GA1UdIwQYMBaAFNTABiJJ6zlL3ZPiXKG4R3YJcgNYMCsGA1UdHwQk -# MCIwIKAeoByGGmh0dHA6Ly9yYi5zeW1jYi5jb20vcmIuY3JsMFcGCCsGAQUFBwEB -# BEswSTAfBggrBgEFBQcwAYYTaHR0cDovL3JiLnN5bWNkLmNvbTAmBggrBgEFBQcw -# AoYaaHR0cDovL3JiLnN5bWNiLmNvbS9yYi5jcnQwDQYJKoZIhvcNAQELBQADggEB -# AIJKh5vKJdhHJtMzATmc1BmXIQ3RaJONOZ5jMHn7HOkYU1JP0OIzb4pXXkH8Xwfr -# K6bnd72IhcteyksvKsGpSvK0PBBwzodERTAu1Os2N+EaakxQwV/xtqDm1E3IhjHk -# fRshyKKzmFk2Ci323J4lHtpWUj5Hz61b8gd72jH7xnihGi+LORJ2uRNZ3YuqMNC3 -# SBC8tAyoJqEoTJirULUCXW6wX4XUm5P2sx+htPw7szGblVKbQ+PFinNGnsSEZeKz -# D8jUb++1cvgTKH59Y6lm43nsJjkZU77tNqyq4ABwgQRk6lt8cS2PPwjZvTmvdnla -# ZhR0K4of+pQaUQHXVIBdji8wggVHMIIEL6ADAgECAhB8GzU1SufbdOdBXxFpymuo -# MA0GCSqGSIb3DQEBCwUAMIG9MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNp -# Z24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNV -# BAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl -# IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmlj -# YXRpb24gQXV0aG9yaXR5MB4XDTE0MDcyMjAwMDAwMFoXDTI0MDcyMTIzNTk1OVow -# gYQxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEf -# MB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29yazE1MDMGA1UEAxMsU3ltYW50 -# ZWMgQ2xhc3MgMyBTSEEyNTYgQ29kZSBTaWduaW5nIENBIC0gRzIwggEiMA0GCSqG -# SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDXlUPU3N9nrjn7UqS2JjEEcOm3jlsqujdp -# NZWPu8Aw54bYc7vf69F2P4pWjustS/BXGE6xjaUz0wt1I9VqeSfdo9P3Dodltd6t -# HPH1NbQiUa8iocFdS5B/wFlOq515qQLXHkmxO02H/sJ4q7/vUq6crwjZOeWaUT5p -# XzAQTnFjbFjh8CAzGw90vlvLEuHbjMSAlHK79kWansElC/ujHJ7YpglwcezAR0yP -# fcPeGc4+7gRyjhfT//CyBTIZTNOwHJ/+pXggQnBBsCaMbwDIOgARQXpBsKeKkQSg -# mXj0d7TzYCrmbFAEtxRg/w1R9KiLhP4h2lxeffUpeU+wRHRvbXL/AgMBAAGjggF4 -# MIIBdDAuBggrBgEFBQcBAQQiMCAwHgYIKwYBBQUHMAGGEmh0dHA6Ly9zLnN5bWNk -# LmNvbTASBgNVHRMBAf8ECDAGAQH/AgEAMGYGA1UdIARfMF0wWwYLYIZIAYb4RQEH -# FwMwTDAjBggrBgEFBQcCARYXaHR0cHM6Ly9kLnN5bWNiLmNvbS9jcHMwJQYIKwYB -# BQUHAgIwGRoXaHR0cHM6Ly9kLnN5bWNiLmNvbS9ycGEwNgYDVR0fBC8wLTAroCmg -# J4YlaHR0cDovL3Muc3ltY2IuY29tL3VuaXZlcnNhbC1yb290LmNybDATBgNVHSUE -# DDAKBggrBgEFBQcDAzAOBgNVHQ8BAf8EBAMCAQYwKQYDVR0RBCIwIKQeMBwxGjAY -# BgNVBAMTEVN5bWFudGVjUEtJLTEtNzI0MB0GA1UdDgQWBBTUwAYiSes5S92T4lyh -# uEd2CXIDWDAfBgNVHSMEGDAWgBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG -# 9w0BAQsFAAOCAQEAf+vKp+qLdkLrPo4gVDDjt7nc+kg+FscPRZUQzSeGo2bzAu1x -# +KrCVZeRcIP5Un5SaTzJ8eCURoAYu6HUpFam8x0AkdWG80iH4MvENGggXrTL+QXt -# nK9wUye56D5+UaBpcYvcUe2AOiUyn0SvbkMo0yF1u5fYi4uM/qkERgSF9xWcSxGN -# xCwX/tVuf5riVpLxlrOtLfn039qJmc6yOETA90d7yiW5+ipoM5tQct6on9TNLAs0 -# vYsweEDgjY4nG5BvGr4IFYFd6y/iUedRHsl4KeceZb847wFKAQkkDhbEFHnBQTc0 -# 0D2RUpSd4WjvCPDiaZxnbpALGpNx1CYCw8BaIzGCD4swgg+HAgEBMIGZMIGEMQsw -# CQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNV -# BAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxNTAzBgNVBAMTLFN5bWFudGVjIENs -# YXNzIDMgU0hBMjU2IENvZGUgU2lnbmluZyBDQSAtIEcyAhBi50XpIWUhPJcfXEkK -# 6hKlMA0GCWCGSAFlAwQCAQUAoHwwEAYKKwYBBAGCNwIBDDECMAAwGQYJKoZIhvcN -# AQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUw -# LwYJKoZIhvcNAQkEMSIEIPW+EpFrZSdzrjFFo0UT+PzFeYn/GcWNyWFaU/JMrMfR -# MA0GCSqGSIb3DQEBAQUABIIBAA8fmU/RJcF9t60DZZAjf8FB3EZddOaHgI9z40nV -# CnfTGi0OEYU48Pe9jkQQV2fABpACfW74xmNv3QNgP2qP++mkpKBVv28EIAuINsFt -# YAITEljLN/VOVul8lvjxar5GSFFgpE5F6j4xcvI69LuCWbN8cteTVsBGg+eGmjfx -# QZxP252z3FqPN+mihtFegF2wx6Mg6/8jZjkO0xjBOwSdpTL4uyQfHvaPBKXuWxRx -# ioXw4ezGAwkuBoxWK8UG7Qu+7CSfQ3wMOjvyH2+qn30lWEsvRMdbGAp7kvfr3EGZ -# a3WN7zXZ+6KyZeLeEH7yCDzukAjptaY/+iLVjJsuzC6tCSqhgg1EMIINQAYKKwYB -# BAGCNwMDATGCDTAwgg0sBgkqhkiG9w0BBwKggg0dMIINGQIBAzEPMA0GCWCGSAFl -# AwQCAQUAMHcGCyqGSIb3DQEJEAEEoGgEZjBkAgEBBglghkgBhv1sBwEwMTANBglg -# hkgBZQMEAgEFAAQg14BnPazQkW9whhZu1d0bC3lqqScvxb3SSb1QT8e3Xg0CEFhw -# aMBZ2hExXhr79A9+bXEYDzIwMjEwNDA4MDkxMTA5WqCCCjcwggT+MIID5qADAgEC -# AhANQkrgvjqI/2BAIc4UAPDdMA0GCSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVT -# MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j -# b20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNIQTIgQXNzdXJlZCBJRCBUaW1lc3RhbXBp -# bmcgQ0EwHhcNMjEwMTAxMDAwMDAwWhcNMzEwMTA2MDAwMDAwWjBIMQswCQYDVQQG -# EwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xIDAeBgNVBAMTF0RpZ2lDZXJ0 -# IFRpbWVzdGFtcCAyMDIxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA -# wuZhhGfFivUNCKRFymNrUdc6EUK9CnV1TZS0DFC1JhD+HchvkWsMlucaXEjvROW/ -# m2HNFZFiWrj/ZwucY/02aoH6KfjdK3CF3gIY83htvH35x20JPb5qdofpir34hF0e -# dsnkxnZ2OlPR0dNaNo/Go+EvGzq3YdZz7E5tM4p8XUUtS7FQ5kE6N1aG3JMjjfdQ -# Jehk5t3Tjy9XtYcg6w6OLNUj2vRNeEbjA4MxKUpcDDGKSoyIxfcwWvkUrxVfbENJ -# Cf0mI1P2jWPoGqtbsR0wwptpgrTb/FZUvB+hh6u+elsKIC9LCcmVp42y+tZji06l -# chzun3oBc/gZ1v4NSYS9AQIDAQABo4IBuDCCAbQwDgYDVR0PAQH/BAQDAgeAMAwG -# A1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwQQYDVR0gBDowODA2 -# BglghkgBhv1sBwEwKTAnBggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5j -# b20vQ1BTMB8GA1UdIwQYMBaAFPS24SAd/imu0uRhpbKiJbLIFzVuMB0GA1UdDgQW -# BBQ2RIaOpLqwZr68KC0dRDbd42p6vDBxBgNVHR8EajBoMDKgMKAuhixodHRwOi8v -# Y3JsMy5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLXRzLmNybDAyoDCgLoYsaHR0 -# cDovL2NybDQuZGlnaWNlcnQuY29tL3NoYTItYXNzdXJlZC10cy5jcmwwgYUGCCsG -# AQUFBwEBBHkwdzAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29t -# ME8GCCsGAQUFBzAChkNodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNl -# cnRTSEEyQXNzdXJlZElEVGltZXN0YW1waW5nQ0EuY3J0MA0GCSqGSIb3DQEBCwUA -# A4IBAQBIHNy16ZojvOca5yAOjmdG/UJyUXQKI0ejq5LSJcRwWb4UoOUngaVNFBUZ -# B3nw0QTDhtk7vf5EAmZN7WmkD/a4cM9i6PVRSnh5Nnont/PnUp+Tp+1DnnvntN1B -# Ion7h6JGA0789P63ZHdjXyNSaYOC+hpT7ZDMjaEXcw3082U5cEvznNZ6e9oMvD0y -# 0BvL9WH8dQgAdryBDvjA4VzPxBFy5xtkSdgimnUVQvUtMjiB2vRgorq0Uvtc4GEk -# JU+y38kpqHNDUdq9Y9YfW5v3LhtPEx33Sg1xfpe39D+E68Hjo0mh+s6nv1bPull2 -# YYlffqe0jmd4+TaY4cso2luHpoovMIIFMTCCBBmgAwIBAgIQCqEl1tYyG35B5AXa -# NpfCFTANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGln -# aUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtE -# aWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMTYwMTA3MTIwMDAwWhcNMzEw -# MTA3MTIwMDAwWjByMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j -# MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBT -# SEEyIEFzc3VyZWQgSUQgVGltZXN0YW1waW5nIENBMIIBIjANBgkqhkiG9w0BAQEF -# AAOCAQ8AMIIBCgKCAQEAvdAy7kvNj3/dqbqCmcU5VChXtiNKxA4HRTNREH3Q+X1N -# aH7ntqD0jbOI5Je/YyGQmL8TvFfTw+F+CNZqFAA49y4eO+7MpvYyWf5fZT/gm+vj -# RkcGGlV+Cyd+wKL1oODeIj8O/36V+/OjuiI+GKwR5PCZA207hXwJ0+5dyJoLVOOo -# CXFr4M8iEA91z3FyTgqt30A6XLdR4aF5FMZNJCMwXbzsPGBqrC8HzP3w6kfZiFBe -# /WZuVmEnKYmEUeaC50ZQ/ZQqLKfkdT66mA+Ef58xFNat1fJky3seBdCEGXIX8RcG -# 7z3N1k3vBkL9olMqT4UdxB08r8/arBD13ays6Vb/kwIDAQABo4IBzjCCAcowHQYD -# VR0OBBYEFPS24SAd/imu0uRhpbKiJbLIFzVuMB8GA1UdIwQYMBaAFEXroq/0ksuC -# MS1Ri6enIZ3zbcgPMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgGG -# MBMGA1UdJQQMMAoGCCsGAQUFBwMIMHkGCCsGAQUFBwEBBG0wazAkBggrBgEFBQcw -# AYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRwOi8v -# Y2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3J0 -# MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGln -# aUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsMy5kaWdp -# Y2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMFAGA1UdIARJMEcw -# OAYKYIZIAYb9bAACBDAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy -# dC5jb20vQ1BTMAsGCWCGSAGG/WwHATANBgkqhkiG9w0BAQsFAAOCAQEAcZUS6VGH -# VmnN793afKpjerN4zwY3QITvS4S/ys8DAv3Fp8MOIEIsr3fzKx8MIVoqtwU0HWqu -# mfgnoma/Capg33akOpMP+LLR2HwZYuhegiUexLoceywh4tZbLBQ1QwRostt1AuBy -# x5jWPGTlH0gQGF+JOGFNYkYkh2OMkVIsrymJ5Xgf1gsUpYDXEkdws3XVk4WTfraS -# Z/tTYYmo9WuWwPRYaQ18yAGxuSh1t5ljhSKMYcp5lH5Z/IwP42+1ASa2bKXuh1Eh -# 5Fhgm7oMLSttosR+u8QlK0cCCHxJrhO24XxCQijGGFbPQTS2Zl22dHv1VjMiLyI2 -# skuiSpXY9aaOUjGCAk0wggJJAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK -# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNV -# BAMTKERpZ2lDZXJ0IFNIQTIgQXNzdXJlZCBJRCBUaW1lc3RhbXBpbmcgQ0ECEA1C -# SuC+Ooj/YEAhzhQA8N0wDQYJYIZIAWUDBAIBBQCggZgwGgYJKoZIhvcNAQkDMQ0G -# CyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJBTEPFw0yMTA0MDgwOTExMDlaMCsGCyqG -# SIb3DQEJEAIMMRwwGjAYMBYEFOHXgqjhkb7va8oWkbWqtJSmJJvzMC8GCSqGSIb3 -# DQEJBDEiBCCHEAmNNj2zWjWYRfEi4FgzZvrI16kv/U2b9b3oHw6UVDANBgkqhkiG -# 9w0BAQEFAASCAQCdefEKh6Qmwx7xGCkrYi/A+/Cla6LdnYJp38eMs3fqTTvjhyDw -# HffXrwdqWy5/fgW3o3qJXqa5o7hLxYIoWSULOCpJRGdt+w7XKPAbZqHrN9elAhWJ -# vpBTCEaj7dVxr1Ka4NsoPSYe0eidDBmmvGvp02J4Z1j8+ImQPKN6Hv/L8Ixaxe7V -# mH4VtXIiBK8xXdi4wzO+A+qLtHEJXz3Gw8Bp3BNtlDGIUkIhVTM3Q1xcSEqhOLqo -# PGdwCw9acxdXNWWPjOJkNH656Bvmkml+0p6MTGIeG4JCeRh1Wpqm1ZGSoEcXNaof -# wOgj48YzI+dNqBD9i7RSWCqJr2ygYKRTxnuU +# 1l4R58rxyumHgZvTmEhrYTb2Zf0zd6CCDbQwggawMIIEmKADAgECAhAIrUCyYNKc +# TJ9ezam9k67ZMA0GCSqGSIb3DQEBDAUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK +# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV +# BAMTGERpZ2lDZXJ0IFRydXN0ZWQgUm9vdCBHNDAeFw0yMTA0MjkwMDAwMDBaFw0z +# NjA0MjgyMzU5NTlaMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwg +# SW5jLjFBMD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcg +# UlNBNDA5NiBTSEEzODQgMjAyMSBDQTEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +# ggIKAoICAQDVtC9C0CiteLdd1TlZG7GIQvUzjOs9gZdwxbvEhSYwn6SOaNhc9es0 +# JAfhS0/TeEP0F9ce2vnS1WcaUk8OoVf8iJnBkcyBAz5NcCRks43iCH00fUyAVxJr +# Q5qZ8sU7H/Lvy0daE6ZMswEgJfMQ04uy+wjwiuCdCcBlp/qYgEk1hz1RGeiQIXhF +# LqGfLOEYwhrMxe6TSXBCMo/7xuoc82VokaJNTIIRSFJo3hC9FFdd6BgTZcV/sk+F +# LEikVoQ11vkunKoAFdE3/hoGlMJ8yOobMubKwvSnowMOdKWvObarYBLj6Na59zHh +# 3K3kGKDYwSNHR7OhD26jq22YBoMbt2pnLdK9RBqSEIGPsDsJ18ebMlrC/2pgVItJ +# wZPt4bRc4G/rJvmM1bL5OBDm6s6R9b7T+2+TYTRcvJNFKIM2KmYoX7BzzosmJQay +# g9Rc9hUZTO1i4F4z8ujo7AqnsAMrkbI2eb73rQgedaZlzLvjSFDzd5Ea/ttQokbI +# YViY9XwCFjyDKK05huzUtw1T0PhH5nUwjewwk3YUpltLXXRhTT8SkXbev1jLchAp +# QfDVxW0mdmgRQRNYmtwmKwH0iU1Z23jPgUo+QEdfyYFQc4UQIyFZYIpkVMHMIRro +# OBl8ZhzNeDhFMJlP/2NPTLuqDQhTQXxYPUez+rbsjDIJAsxsPAxWEQIDAQABo4IB +# WTCCAVUwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUaDfg67Y7+F8Rhvv+ +# YXsIiGX0TkIwHwYDVR0jBBgwFoAU7NfjgtJxXWRM3y5nP+e6mK4cD08wDgYDVR0P +# AQH/BAQDAgGGMBMGA1UdJQQMMAoGCCsGAQUFBwMDMHcGCCsGAQUFBwEBBGswaTAk +# BggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEEGCCsGAQUFBzAC +# hjVodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkUm9v +# dEc0LmNydDBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsMy5kaWdpY2VydC5j +# b20vRGlnaUNlcnRUcnVzdGVkUm9vdEc0LmNybDAcBgNVHSAEFTATMAcGBWeBDAED +# MAgGBmeBDAEEATANBgkqhkiG9w0BAQwFAAOCAgEAOiNEPY0Idu6PvDqZ01bgAhql +# +Eg08yy25nRm95RysQDKr2wwJxMSnpBEn0v9nqN8JtU3vDpdSG2V1T9J9Ce7FoFF +# UP2cvbaF4HZ+N3HLIvdaqpDP9ZNq4+sg0dVQeYiaiorBtr2hSBh+3NiAGhEZGM1h +# mYFW9snjdufE5BtfQ/g+lP92OT2e1JnPSt0o618moZVYSNUa/tcnP/2Q0XaG3Ryw +# YFzzDaju4ImhvTnhOE7abrs2nfvlIVNaw8rpavGiPttDuDPITzgUkpn13c5Ubdld +# AhQfQDN8A+KVssIhdXNSy0bYxDQcoqVLjc1vdjcshT8azibpGL6QB7BDf5WIIIJw +# 8MzK7/0pNVwfiThV9zeKiwmhywvpMRr/LhlcOXHhvpynCgbWJme3kuZOX956rEnP +# LqR0kq3bPKSchh/jwVYbKyP/j7XqiHtwa+aguv06P0WmxOgWkVKLQcBIhEuWTatE +# QOON8BUozu3xGFYHKi8QxAwIZDwzj64ojDzLj4gLDb879M4ee47vtevLt/B3E+bn +# KD+sEq6lLyJsQfmCXBVmzGwOysWGw/YmMwwHS6DTBwJqakAwSEs0qFEgu60bhQji +# WQ1tygVQK+pKHJ6l/aCnHwZ05/LWUpD9r4VIIflXO7ScA+2GRfS0YW6/aOImYIbq +# yK+p/pQd52MbOoZWeE4wggb8MIIE5KADAgECAhAJl8VsqlkFU5TZqc24vutWMA0G +# CSqGSIb3DQEBCwUAMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwg +# SW5jLjFBMD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcg +# UlNBNDA5NiBTSEEzODQgMjAyMSBDQTEwHhcNMjMwMTEzMDAwMDAwWhcNMjYwMTE2 +# MjM1OTU5WjCBgDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFDAS +# BgNVBAcTC1NhbnRhIENsYXJhMRswGQYDVQQKExJOVklESUEgQ29ycG9yYXRpb24x +# DDAKBgNVBAsTAzItSjEbMBkGA1UEAxMSTlZJRElBIENvcnBvcmF0aW9uMIIBojAN +# BgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAiIBdEHMI1HLTk5k1S0mC4p0nVHkc +# 1q129e2f6lZceD09+FT0DlluhbBI96OJnEmf1yVhZWnKM9uSQW9pMEth4cCubOzB +# q+zv5ty3h18FMFkbxCZz2S6xpo7E2e5R6+x4YALkfrVCwY5UBN1FB9KR9o/uRMEX +# 3C4hq3sFdWCU8CVlqBBNlYD8EDhWvwZ41VjmNTYLoX3TtQzqiux+xV+QEjwdKjAP +# VT99pNLXIwG7UzF49QpmiwWfa1gTh1RYh39W/ospaTfR7/rcLlSX17d5jvFpnh4L +# ROrGW4xZvZd28Jx/D10Qt4j7Sy5aWIUjIKBJ/cAq6r1xeegw4Gg8R4E6vddZ8II0 +# vF/1FwbHJo093UpxM44StIkwWk4KdWLmTKzY2tOsUwVVmJELj0GJ162hPpwe3dl/ +# 5UdHeup1RujjFKm6+x80DgZFhxYjYq9jdPqEGWuBOWueB8DfO06f7fwoYlq8RruI +# n6T+SOOcPju3SpChGK6MGL6r6a/oeDL+DRV5AgMBAAGjggIGMIICAjAfBgNVHSME +# GDAWgBRoN+Drtjv4XxGG+/5hewiIZfROQjAdBgNVHQ4EFgQUvm9ADtYQBGam7Qi3 +# Ak6bt/jwttEwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMIG1 +# BgNVHR8Ega0wgaowU6BRoE+GTWh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdp +# Q2VydFRydXN0ZWRHNENvZGVTaWduaW5nUlNBNDA5NlNIQTM4NDIwMjFDQTEuY3Js +# MFOgUaBPhk1odHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVk +# RzRDb2RlU2lnbmluZ1JTQTQwOTZTSEEzODQyMDIxQ0ExLmNybDA+BgNVHSAENzA1 +# MDMGBmeBDAEEATApMCcGCCsGAQUFBwIBFhtodHRwOi8vd3d3LmRpZ2ljZXJ0LmNv +# bS9DUFMwgZQGCCsGAQUFBwEBBIGHMIGEMCQGCCsGAQUFBzABhhhodHRwOi8vb2Nz +# cC5kaWdpY2VydC5jb20wXAYIKwYBBQUHMAKGUGh0dHA6Ly9jYWNlcnRzLmRpZ2lj +# ZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVTaWduaW5nUlNBNDA5NlNIQTM4 +# NDIwMjFDQTEuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggIBAE1r +# cSetpoyq/nxFlXWqfQrT22/zerHAdozr83jTDZ8yWOcY7FLFHWDT5HbpLte3CnMb +# 5vwtaZabIkqJkiiBWRx9mlyFLoHH70dxRKjtMEEmfjKVylDOSws4KZPr8NJ4gNi5 +# zJCIejw2rdeQumQloMROcIEO6Vhn72lq9BPiU2kHqx99uOwNxDsJlB0iZ3PI3B3z +# VznrFlzTm59WSuidbvyvfm/CHO413zxhBevbp8KUERd/dw2/K1W6k54dlPLQ5360 +# +cA+Xnvji6fR/UwOOIpGd7kWoOijYXgSh4lC5pLq1ZwVCDnl04SY7BITybB4sJYN +# NNaZlXrHQgYfBqB17VLmuSSbGm8BlFSRoP9lPLEOIfLA2L3zWYW8KdLWAoZ3wamo +# O4KGkoB63yK+AHfyFVMT+Oyy0rBAvsc0bGWaTuHIXGRtQ1eSLaDAn8JIZpCqpLdy +# 2MXlW/yZu0fZ/ekrcAVpc5bvAN+N66oX7KHpTFOhySAfoaBzi2P6tyvBaGduC74m +# WOUFtIq0aIRcyMD0JyBixs4hL1PX8VEA5bgrMJobYVpfl4iGcKpeXv1VrY5Xy6Ui +# AhufVdpBCTpG808jBnMzxMBFRNH13V522K47KbENibqPXpOaguReVZQYuPTn7Iq6 +# 3quSqZgKoIkdEcPRPstdSbB4ExYNDl7S3wANXwobMYIXzjCCF8oCAQEwfTBpMQsw +# CQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERp +# Z2lDZXJ0IFRydXN0ZWQgRzQgQ29kZSBTaWduaW5nIFJTQTQwOTYgU0hBMzg0IDIw +# MjEgQ0ExAhAJl8VsqlkFU5TZqc24vutWMA0GCWCGSAFlAwQCAQUAoHwwEAYKKwYB +# BAGCNwIBDDECMAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGC +# NwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIPW+EpFrZSdzrjFF +# o0UT+PzFeYn/GcWNyWFaU/JMrMfRMA0GCSqGSIb3DQEBAQUABIIBgGT0uizw6IGX +# l3qq1itr8aN12SgJwJ0dwNbjsPAYuOepW8dt0UoWq3e8iDSH2CweptAO1XOh2R2H +# lLu31iDbHhbJ/FjqC1hD2HM/I/cGoc1xHHQtvId06QIisa7iJv7NGCdH/2qVoFEy +# P78Oru1I3HVqHfsJ8YGpdkrJXSa6ZxFF/7kCS1IvIg/4+mDA9zV02zOQVoadzHo5 +# dJY+nTdCytJPP2CKgdIf4n68ZXan3IcJ8YgG8JMTlRQik0ByW3oqGinK6/B5Jhe5 +# jg+8K6TcjPduQEUu00GimHkb49kgjGRvNqSXigh3Xd1YCp2m155wOw7ENIonT7Pm +# XRxqJH58nb+6k3jBDSyW0UylJrNLDEnpP1w7hzzlVM0+by4xP4ti2HYRxdMBLOZg +# qpht3JdQX2tVdBbnW3Miroma4NIBTKBh2GDqwuZ9ykX/TEcRGr9dDvx97M/z576W +# 3g3QYiN2cilwy8gOcqDCvlwevBien5jl/uIQWtX6G7TshzgQdjsso6GCFSQwghUg +# BgorBgEEAYI3AwMBMYIVEDCCFQwGCSqGSIb3DQEHAqCCFP0wghT5AgEDMQ0wCwYJ +# YIZIAWUDBAIBMIHRBgsqhkiG9w0BCRABBKCBwQSBvjCBuwIBAQYKYIZIAYb6bAoD +# BTAxMA0GCWCGSAFlAwQCAQUABCC1eiTETcVnKxX7svQp3+NwKuasxwcsQMuOQJSr +# 0Eq0eAIJAM2IJAkgmGgZGA8yMDI1MDgxNTE1NDUyNlowAwIBAaBWpFQwUjELMAkG +# A1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKzApBgNVBAMTIkVudHJ1 +# c3QgVGltZXN0YW1wIEF1dGhvcml0eSAtIFRTQTGggg9tMIIEKjCCAxKgAwIBAgIE +# OGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5uZXQxQDA+ +# BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4g +# KGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExp +# bWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9y +# aXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQw +# EgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3LmVudHJ1c3QubmV0L0NQ +# U18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc +# KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u +# ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0B +# AQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4 +# QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyr +# pUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuXMlBvPci6Zgzj/L24ScF2 +# iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzWnLLPKQP5L6RQstRI +# zgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUiVBcA +# kCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNV +# HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJ +# uQijMfmhJAkWuXAwDQYJKoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZ +# lZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPyT/4xmf3IDExoU8aAghOY+rat2l098c5u +# 9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6YfzX1XEC+bBAlahLVu2B06 +# 4dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKTJ1wDLW8w +# 0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8 +# eS9enNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVEw +# ggUTMIID+6ADAgECAgxY2hP/AAAAAFHODfcwDQYJKoZIhvcNAQELBQAwgbQxFDAS +# BgNVBAoTC0VudHJ1c3QubmV0MUAwPgYDVQQLFDd3d3cuZW50cnVzdC5uZXQvQ1BT +# XzIwNDggaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwo +# YykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVkMTMwMQYDVQQDEypFbnRydXN0Lm5l +# dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAoMjA0OCkwHhcNMTUwNzIyMTkwMjU0 +# WhcNMjkwNjIyMTkzMjU0WjCBsjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1 +# c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy +# bXMxOTA3BgNVBAsTMChjKSAyMDE1IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9y +# aXplZCB1c2Ugb25seTEmMCQGA1UEAxMdRW50cnVzdCBUaW1lc3RhbXBpbmcgQ0Eg +# LSBUUzEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZI+YUpOh8S4Vx +# WPv4geZyi11Gw4gAHzjQiuHWblYw5a/aZFB9whM5+71mtNqE+4PQKB/LduhgUGmb +# 885PE+LBPsHfEssyo/heRCIOzDrpjUm5YHTI3lQ9QV5DXyhGqaa3yhArIrxbTVuM +# F2UShv0sd9XFoIzKwoPgR1d853CuYkUnMRgK1MCkGFVS92DGBEuz3WgybhAfNBG4 +# Enhk8e6p4PfjsSKPNFply4r04UVQdN+Tl6Y05tBMO583SVKnU06fLmdc7Zb8pb90 +# UYjjqo692bEvX1AwFvRRYCJrmcv/4VQ7uftEOKUIOSObaUf6PMTQ56rfRrLs8ooZ +# rCmyOJV1AgMBAAGjggEjMIIBHzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB +# /wQEAwIBBjA7BgNVHSAENDAyMDAGBFUdIAAwKDAmBggrBgEFBQcCARYaaHR0cDov +# L3d3dy5lbnRydXN0Lm5ldC9ycGEwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzAB +# hhdodHRwOi8vb2NzcC5lbnRydXN0Lm5ldDAyBgNVHR8EKzApMCegJaAjhiFodHRw +# Oi8vY3JsLmVudHJ1c3QubmV0LzIwNDhjYS5jcmwwEwYDVR0lBAwwCgYIKwYBBQUH +# AwgwHQYDVR0OBBYEFMPCcdJ712gFrjs5mzQlDGIDx1doMB8GA1UdIwQYMBaAFFXk +# gdERgL7YibkIozH5oSQJFrlwMA0GCSqGSIb3DQEBCwUAA4IBAQAdJOeadFuqcPyx +# DjFF1ywAf2Y6K6CaNKqsY22J+Z/fDXf9JCP8T5y3b4/z9B+2wf3WHMSMiGbBY426 +# V3fTuBoeyFGtzGA2GodqKOoRZd7MPCyMdLfoUEPTzCjoFWwRKp8UlSnJBVe1Zzbo +# PKmD70HBIRbTfvctEUdmdmCCEmmMdlVzD98vS13pbCP4B/a1fdZpRZxYfWEu/HhL +# Q06JkUZELKBTqEWh9hZYu5ET8kvF3wvA564per1Fs+dwMOc0jut69tO10d5rE5lG +# s4vSTZN1tfFvv9wAKMIlv7zno2U07D8NHZeM+qqIIqQYNdsFjnbjEMgpj2PQrqwY +# 2drEn1ESMIIGJDCCBQygAwIBAgIRAJhAfF4Wz4fB6cH/+bQKiI0wDQYJKoZIhvcN +# AQELBQAwgbIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgw +# JgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQL +# EzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9u +# bHkxJjAkBgNVBAMTHUVudHJ1c3QgVGltZXN0YW1waW5nIENBIC0gVFMxMB4XDTI1 +# MDEyMjE3NDIzM1oXDTI5MDYyMTIzNTk1OVowUjELMAkGA1UEBhMCVVMxFjAUBgNV +# BAoTDUVudHJ1c3QsIEluYy4xKzApBgNVBAMTIkVudHJ1c3QgVGltZXN0YW1wIEF1 +# dGhvcml0eSAtIFRTQTEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDm +# 9iF5EVHu6+vYYdyyuKHGhH5bwWPoQAv59YkNUS6zTT5Q4mSwi11ZngRfqaD0E/BY +# RsLH7yWVr/K6zDLx+zr3XkDr2tYUglrnZ4xa+BtjkkD264vLYYqCFwHzE9qBmrrU +# Xrlik1DXJ//9/+z9HUbzFxJUUcV22dtz4/+yIpZbejeIq/g6iFx5s1lFO431QG0g +# 0fMDmHDTXxn/EYnHnxlHx+1F2XNC3ZHzJp8MCuoSC3alqf9Hx+GU5NooXn1Z0u5k +# hap8UVD0ES7HzeDi/6ncN5gTN0+q5tQzpbH/9dwx6iysdR/Xqk+b4o45N/Xuqr9R +# mYz8IUDryx9VGz6kHvs3AM6UhPXcArOUXi5ZZ2/585S1e/h9KCFtSDhVeHSED5U/ +# GFqRAjvO7yXqeFl7dPuBEABxRXQOeZ887VfTWF0zjq6aT/DnXUDn8n3UNncznFBN +# hL+CqKPAfwiYkBvJ8JxKtwPNRcjfhgZZ1B6S5llmvPlcwn8eAE3pekVbaltizPiL +# oJUHmeBRkv+V5HeYXZAVt6PvBLnkPI/f8l//If9fGXwgnu7pMqroRem0qiC7D2Z2 +# sIpHcL0Z7quFhD3Yar8+yXaiKBsqrQNBx3Z/FH0wfhMtViXb/ZKXfaAmO5ppiUNr +# xxjdfwQBwywzjheY850e8aMEfGcLKHUyYnbrodf1vQIDAQABo4IBkjCCAY4wDAYD +# VR0TAQH/BAIwADAdBgNVHQ4EFgQU0c0BB2KBRpZcqfC9T+DFAJ96vtwwHwYDVR0j +# BBgwFoAUw8Jx0nvXaAWuOzmbNCUMYgPHV2gwDgYDVR0PAQH/BAQDAgeAMBYGA1Ud +# JQEB/wQMMAoGCCsGAQUFBwMIMGgGCCsGAQUFBwEBBFwwWjAjBggrBgEFBQcwAYYX +# aHR0cDovL29jc3AuZW50cnVzdC5uZXQwMwYIKwYBBQUHMAKGJ2h0dHA6Ly9haWEu +# ZW50cnVzdC5uZXQvdHMxLWNoYWluMjU2LmNlcjAxBgNVHR8EKjAoMCagJKAihiBo +# dHRwOi8vY3JsLmVudHJ1c3QubmV0L3RzMWNhLmNybDBMBgNVHSAERTBDMAgGBmeB +# DAEEAjA3BgpghkgBhvpsCgEHMCkwJwYIKwYBBQUHAgEWG2h0dHBzOi8vd3d3LmVu +# dHJ1c3QubmV0L3JwYTArBgNVHRAEJDAigA8yMDI1MDEyMjE3NDIzM1qBDzIwMjYw +# NDIxMTc0MjMyWjANBgkqhkiG9w0BAQsFAAOCAQEAUJMHkSbBPp9AsFTS38ZYKTvM +# /uC4uRbJb+XI8mkjHEC8KjKwRxBpoXdS8LUZeeo2xLTqBOqwYc2knsjmffBLMvmO +# vOXmGolrfxmAV8C1AXjXwjedN/2veyYpNAI/m1ppCZe3bSJq2KMUZNnaxrBom8ZX +# 8yVWBlqDm+SI79SvWhaAwhdQdV0Uw2TnHuTOcDGZMMpR5CWXBe8IvY3KPYyGkeKt +# d9DhkDTm2CTKSKzlpIkjeNUIfMuG/LYMZClutusx6UXSCBjdP+utU1fMluHvu6ej +# hQ/gClsmbLLI4XWQ08q3esSTwsZ3n44BdDFn1IUHmH6VEPtN7BKTXQrSvWOv6DGC +# BJ4wggSaAgEBMIHIMIGyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwg +# SW5jLjEoMCYGA1UECxMfU2VlIHd3dy5lbnRydXN0Lm5ldC9sZWdhbC10ZXJtczE5 +# MDcGA1UECxMwKGMpIDIwMTUgRW50cnVzdCwgSW5jLiAtIGZvciBhdXRob3JpemVk +# IHVzZSBvbmx5MSYwJAYDVQQDEx1FbnRydXN0IFRpbWVzdGFtcGluZyBDQSAtIFRT +# MQIRAJhAfF4Wz4fB6cH/+bQKiI0wCwYJYIZIAWUDBAIBoIIBqDAaBgkqhkiG9w0B +# CQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI1MDgxNTE1NDUyNlow +# KwYJKoZIhvcNAQk0MR4wHDALBglghkgBZQMEAgGhDQYJKoZIhvcNAQELBQAwLwYJ +# KoZIhvcNAQkEMSIEIAk4R1ak5sPAW0xWZXJVIIa+z9nNMN7Rg/SOAmSvlggHMIIB +# DAYLKoZIhvcNAQkQAi8xgfwwgfkwgfYwgfMEIKOKGKfJotdx9x+8kEqC4/FjmsgU +# DE4TVbX7wnGZTP66MIHOMIG4pIG1MIGyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +# RW50cnVzdCwgSW5jLjEoMCYGA1UECxMfU2VlIHd3dy5lbnRydXN0Lm5ldC9sZWdh +# bC10ZXJtczE5MDcGA1UECxMwKGMpIDIwMTUgRW50cnVzdCwgSW5jLiAtIGZvciBh +# dXRob3JpemVkIHVzZSBvbmx5MSYwJAYDVQQDEx1FbnRydXN0IFRpbWVzdGFtcGlu +# ZyBDQSAtIFRTMQIRAJhAfF4Wz4fB6cH/+bQKiI0wDQYJKoZIhvcNAQELBQAEggIA +# clQa2C3U0KKmVbvCDhUulLlSDy+VsZCv0wy8FzX2rW8Xu6HHThZ90DIGx6gPD5qc +# bvhM91BsAew37hjtf63egCOxIax5kV1HN1xIAdDKmSZ1emqc3/0I8r4+eT71uoOO +# BnsmvyG421gSyGWkOMvZ6mfDGFpnbNhZ66WfDZ1Txzgi5utNp3JQUUMwbUSmA9L1 +# /eNfjnP9U0+BEnl++6f4TDJV6yYfwbUEM/xWJfmhzPgb9ojKl83BOzHhTQakAbRQ +# 1QhK8KWJZiSGRN6B7Kyhp8Zx66c3z/PHc6PAkr5qmuxBSxBY2AcRVav2dG1FmJC5 +# 5i/OA+FlA7984VMWINrWPYe8VmpfrvObffE45PykNKyo2xr4hYDy/lAsP+hCHXru +# D1IJ1UF1YJOi+YqfJf8XVCZn5JRDJGhg9VV6cu1AtHGCrQpcC0JdEDcIPW5eGu4s +# FPaRoQicyBLv0UsvTgY+C7pLyygTxQ/JmSqoqzoai2CZSfzeG4ux4Ltfxzxv/EAQ +# 9QLDUzBtijFL0mgmrDo8fJya93j0YMf7uwNkoR2GtEppSYN2VnRfpwB52pTtiwbw +# EuN0nx4clMeGALsOxlTJV08nRG7rEfuL0kOYuPvPHSVw/Kbnamtt+qAzP4bLFQeJ +# Wjd9/XOaCTQb7n+9F2/5+NiTT2RAn34e1ZDthcbt+3U= # SIG # End signature block diff --git a/tools/packman/bootstrap/generate_temp_folder.ps1 b/tools/packman/bootstrap/generate_temp_folder.ps1 index d34fc9ca5..280850ffb 100644 --- a/tools/packman/bootstrap/generate_temp_folder.ps1 +++ b/tools/packman/bootstrap/generate_temp_folder.ps1 @@ -23,145 +23,208 @@ New-Item -ItemType Directory -Path ($out) | Out-Null Write-Host $out # SIG # Begin signature block -# MIIaVwYJKoZIhvcNAQcCoIIaSDCCGkQCAQExDzANBglghkgBZQMEAgEFADB5Bgor +# MIImKwYJKoZIhvcNAQcCoIImHDCCJhgCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCB29nsqMEu+VmSF -# 7ckeVTPrEZ6hsXjOgPFlJm9ilgHUB6CCCiIwggTTMIIDu6ADAgECAhBi50XpIWUh -# PJcfXEkK6hKlMA0GCSqGSIb3DQEBCwUAMIGEMQswCQYDVQQGEwJVUzEdMBsGA1UE -# ChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0 -# IE5ldHdvcmsxNTAzBgNVBAMTLFN5bWFudGVjIENsYXNzIDMgU0hBMjU2IENvZGUg -# U2lnbmluZyBDQSAtIEcyMB4XDTE4MDcwOTAwMDAwMFoXDTIxMDcwOTIzNTk1OVow -# gYMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRQwEgYDVQQHDAtT -# YW50YSBDbGFyYTEbMBkGA1UECgwSTlZJRElBIENvcnBvcmF0aW9uMQ8wDQYDVQQL -# DAZJVC1NSVMxGzAZBgNVBAMMEk5WSURJQSBDb3Jwb3JhdGlvbjCCASIwDQYJKoZI -# hvcNAQEBBQADggEPADCCAQoCggEBALEZN63dA47T4i90jZ84CJ/aWUwVtLff8AyP -# YspFfIZGdZYiMgdb8A5tBh7653y0G/LZL6CVUkgejcpvBU/Dl/52a+gSWy2qJ2bH -# jMFMKCyQDhdpCAKMOUKSC9rfzm4cFeA9ct91LQCAait4LhLlZt/HF7aG+r0FgCZa -# HJjJvE7KNY9G4AZXxjSt8CXS8/8NQMANqjLX1r+F+Hl8PzQ1fVx0mMsbdtaIV4Pj -# 5flAeTUnz6+dCTx3vTUo8MYtkS2UBaQv7t7H2B7iwJDakEQKk1XHswJdeqG0osDU -# z6+NVks7uWE1N8UIhvzbw0FEX/U2kpfyWaB/J3gMl8rVR8idPj8CAwEAAaOCAT4w -# ggE6MAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUF -# BwMDMGEGA1UdIARaMFgwVgYGZ4EMAQQBMEwwIwYIKwYBBQUHAgEWF2h0dHBzOi8v -# ZC5zeW1jYi5jb20vY3BzMCUGCCsGAQUFBwICMBkMF2h0dHBzOi8vZC5zeW1jYi5j -# b20vcnBhMB8GA1UdIwQYMBaAFNTABiJJ6zlL3ZPiXKG4R3YJcgNYMCsGA1UdHwQk -# MCIwIKAeoByGGmh0dHA6Ly9yYi5zeW1jYi5jb20vcmIuY3JsMFcGCCsGAQUFBwEB -# BEswSTAfBggrBgEFBQcwAYYTaHR0cDovL3JiLnN5bWNkLmNvbTAmBggrBgEFBQcw -# AoYaaHR0cDovL3JiLnN5bWNiLmNvbS9yYi5jcnQwDQYJKoZIhvcNAQELBQADggEB -# AIJKh5vKJdhHJtMzATmc1BmXIQ3RaJONOZ5jMHn7HOkYU1JP0OIzb4pXXkH8Xwfr -# K6bnd72IhcteyksvKsGpSvK0PBBwzodERTAu1Os2N+EaakxQwV/xtqDm1E3IhjHk -# fRshyKKzmFk2Ci323J4lHtpWUj5Hz61b8gd72jH7xnihGi+LORJ2uRNZ3YuqMNC3 -# SBC8tAyoJqEoTJirULUCXW6wX4XUm5P2sx+htPw7szGblVKbQ+PFinNGnsSEZeKz -# D8jUb++1cvgTKH59Y6lm43nsJjkZU77tNqyq4ABwgQRk6lt8cS2PPwjZvTmvdnla -# ZhR0K4of+pQaUQHXVIBdji8wggVHMIIEL6ADAgECAhB8GzU1SufbdOdBXxFpymuo -# MA0GCSqGSIb3DQEBCwUAMIG9MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNp -# Z24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNV -# BAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl -# IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmlj -# YXRpb24gQXV0aG9yaXR5MB4XDTE0MDcyMjAwMDAwMFoXDTI0MDcyMTIzNTk1OVow -# gYQxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEf -# MB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29yazE1MDMGA1UEAxMsU3ltYW50 -# ZWMgQ2xhc3MgMyBTSEEyNTYgQ29kZSBTaWduaW5nIENBIC0gRzIwggEiMA0GCSqG -# SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDXlUPU3N9nrjn7UqS2JjEEcOm3jlsqujdp -# NZWPu8Aw54bYc7vf69F2P4pWjustS/BXGE6xjaUz0wt1I9VqeSfdo9P3Dodltd6t -# HPH1NbQiUa8iocFdS5B/wFlOq515qQLXHkmxO02H/sJ4q7/vUq6crwjZOeWaUT5p -# XzAQTnFjbFjh8CAzGw90vlvLEuHbjMSAlHK79kWansElC/ujHJ7YpglwcezAR0yP -# fcPeGc4+7gRyjhfT//CyBTIZTNOwHJ/+pXggQnBBsCaMbwDIOgARQXpBsKeKkQSg -# mXj0d7TzYCrmbFAEtxRg/w1R9KiLhP4h2lxeffUpeU+wRHRvbXL/AgMBAAGjggF4 -# MIIBdDAuBggrBgEFBQcBAQQiMCAwHgYIKwYBBQUHMAGGEmh0dHA6Ly9zLnN5bWNk -# LmNvbTASBgNVHRMBAf8ECDAGAQH/AgEAMGYGA1UdIARfMF0wWwYLYIZIAYb4RQEH -# FwMwTDAjBggrBgEFBQcCARYXaHR0cHM6Ly9kLnN5bWNiLmNvbS9jcHMwJQYIKwYB -# BQUHAgIwGRoXaHR0cHM6Ly9kLnN5bWNiLmNvbS9ycGEwNgYDVR0fBC8wLTAroCmg -# J4YlaHR0cDovL3Muc3ltY2IuY29tL3VuaXZlcnNhbC1yb290LmNybDATBgNVHSUE -# DDAKBggrBgEFBQcDAzAOBgNVHQ8BAf8EBAMCAQYwKQYDVR0RBCIwIKQeMBwxGjAY -# BgNVBAMTEVN5bWFudGVjUEtJLTEtNzI0MB0GA1UdDgQWBBTUwAYiSes5S92T4lyh -# uEd2CXIDWDAfBgNVHSMEGDAWgBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG -# 9w0BAQsFAAOCAQEAf+vKp+qLdkLrPo4gVDDjt7nc+kg+FscPRZUQzSeGo2bzAu1x -# +KrCVZeRcIP5Un5SaTzJ8eCURoAYu6HUpFam8x0AkdWG80iH4MvENGggXrTL+QXt -# nK9wUye56D5+UaBpcYvcUe2AOiUyn0SvbkMo0yF1u5fYi4uM/qkERgSF9xWcSxGN -# xCwX/tVuf5riVpLxlrOtLfn039qJmc6yOETA90d7yiW5+ipoM5tQct6on9TNLAs0 -# vYsweEDgjY4nG5BvGr4IFYFd6y/iUedRHsl4KeceZb847wFKAQkkDhbEFHnBQTc0 -# 0D2RUpSd4WjvCPDiaZxnbpALGpNx1CYCw8BaIzGCD4swgg+HAgEBMIGZMIGEMQsw -# CQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNV -# BAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxNTAzBgNVBAMTLFN5bWFudGVjIENs -# YXNzIDMgU0hBMjU2IENvZGUgU2lnbmluZyBDQSAtIEcyAhBi50XpIWUhPJcfXEkK -# 6hKlMA0GCWCGSAFlAwQCAQUAoHwwEAYKKwYBBAGCNwIBDDECMAAwGQYJKoZIhvcN -# AQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUw -# LwYJKoZIhvcNAQkEMSIEIG5YDmcpqLxn4SB0H6OnuVkZRPh6OJ77eGW/6Su/uuJg -# MA0GCSqGSIb3DQEBAQUABIIBAA3N2vqfA6WDgqz/7EoAKVIE5Hn7xpYDGhPvFAMV -# BslVpeqE3apTcYFCEcwLtzIEc/zmpULxsX8B0SUT2VXbJN3zzQ80b+gbgpq62Zk+ -# dQLOtLSiPhGW7MXLahgES6Oc2dUFaQ+wDfcelkrQaOVZkM4wwAzSapxuf/13oSIk -# ZX2ewQEwTZrVYXELO02KQIKUR30s/oslGVg77ALnfK9qSS96Iwjd4MyT7PzCkHUi -# ilwyGJi5a4ofiULiPSwUQNynSBqxa+JQALkHP682b5xhjoDfyG8laR234FTPtYgs -# P/FaeviwENU5Pl+812NbbtRD+gKlWBZz+7FKykOT/CG8sZahgg1EMIINQAYKKwYB -# BAGCNwMDATGCDTAwgg0sBgkqhkiG9w0BBwKggg0dMIINGQIBAzEPMA0GCWCGSAFl -# AwQCAQUAMHcGCyqGSIb3DQEJEAEEoGgEZjBkAgEBBglghkgBhv1sBwEwMTANBglg -# hkgBZQMEAgEFAAQgJhABfkDIPbI+nWYnA30FLTyaPK+W3QieT21B/vK+CMICEDF0 -# worcGsdd7OxpXLP60xgYDzIwMjEwNDA4MDkxMTA5WqCCCjcwggT+MIID5qADAgEC -# AhANQkrgvjqI/2BAIc4UAPDdMA0GCSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVT -# MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j -# b20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNIQTIgQXNzdXJlZCBJRCBUaW1lc3RhbXBp -# bmcgQ0EwHhcNMjEwMTAxMDAwMDAwWhcNMzEwMTA2MDAwMDAwWjBIMQswCQYDVQQG -# EwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xIDAeBgNVBAMTF0RpZ2lDZXJ0 -# IFRpbWVzdGFtcCAyMDIxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA -# wuZhhGfFivUNCKRFymNrUdc6EUK9CnV1TZS0DFC1JhD+HchvkWsMlucaXEjvROW/ -# m2HNFZFiWrj/ZwucY/02aoH6KfjdK3CF3gIY83htvH35x20JPb5qdofpir34hF0e -# dsnkxnZ2OlPR0dNaNo/Go+EvGzq3YdZz7E5tM4p8XUUtS7FQ5kE6N1aG3JMjjfdQ -# Jehk5t3Tjy9XtYcg6w6OLNUj2vRNeEbjA4MxKUpcDDGKSoyIxfcwWvkUrxVfbENJ -# Cf0mI1P2jWPoGqtbsR0wwptpgrTb/FZUvB+hh6u+elsKIC9LCcmVp42y+tZji06l -# chzun3oBc/gZ1v4NSYS9AQIDAQABo4IBuDCCAbQwDgYDVR0PAQH/BAQDAgeAMAwG -# A1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwQQYDVR0gBDowODA2 -# BglghkgBhv1sBwEwKTAnBggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5j -# b20vQ1BTMB8GA1UdIwQYMBaAFPS24SAd/imu0uRhpbKiJbLIFzVuMB0GA1UdDgQW -# BBQ2RIaOpLqwZr68KC0dRDbd42p6vDBxBgNVHR8EajBoMDKgMKAuhixodHRwOi8v -# Y3JsMy5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLXRzLmNybDAyoDCgLoYsaHR0 -# cDovL2NybDQuZGlnaWNlcnQuY29tL3NoYTItYXNzdXJlZC10cy5jcmwwgYUGCCsG -# AQUFBwEBBHkwdzAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29t -# ME8GCCsGAQUFBzAChkNodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNl -# cnRTSEEyQXNzdXJlZElEVGltZXN0YW1waW5nQ0EuY3J0MA0GCSqGSIb3DQEBCwUA -# A4IBAQBIHNy16ZojvOca5yAOjmdG/UJyUXQKI0ejq5LSJcRwWb4UoOUngaVNFBUZ -# B3nw0QTDhtk7vf5EAmZN7WmkD/a4cM9i6PVRSnh5Nnont/PnUp+Tp+1DnnvntN1B -# Ion7h6JGA0789P63ZHdjXyNSaYOC+hpT7ZDMjaEXcw3082U5cEvznNZ6e9oMvD0y -# 0BvL9WH8dQgAdryBDvjA4VzPxBFy5xtkSdgimnUVQvUtMjiB2vRgorq0Uvtc4GEk -# JU+y38kpqHNDUdq9Y9YfW5v3LhtPEx33Sg1xfpe39D+E68Hjo0mh+s6nv1bPull2 -# YYlffqe0jmd4+TaY4cso2luHpoovMIIFMTCCBBmgAwIBAgIQCqEl1tYyG35B5AXa -# NpfCFTANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGln -# aUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtE -# aWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMTYwMTA3MTIwMDAwWhcNMzEw -# MTA3MTIwMDAwWjByMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j -# MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBT -# SEEyIEFzc3VyZWQgSUQgVGltZXN0YW1waW5nIENBMIIBIjANBgkqhkiG9w0BAQEF -# AAOCAQ8AMIIBCgKCAQEAvdAy7kvNj3/dqbqCmcU5VChXtiNKxA4HRTNREH3Q+X1N -# aH7ntqD0jbOI5Je/YyGQmL8TvFfTw+F+CNZqFAA49y4eO+7MpvYyWf5fZT/gm+vj -# RkcGGlV+Cyd+wKL1oODeIj8O/36V+/OjuiI+GKwR5PCZA207hXwJ0+5dyJoLVOOo -# CXFr4M8iEA91z3FyTgqt30A6XLdR4aF5FMZNJCMwXbzsPGBqrC8HzP3w6kfZiFBe -# /WZuVmEnKYmEUeaC50ZQ/ZQqLKfkdT66mA+Ef58xFNat1fJky3seBdCEGXIX8RcG -# 7z3N1k3vBkL9olMqT4UdxB08r8/arBD13ays6Vb/kwIDAQABo4IBzjCCAcowHQYD -# VR0OBBYEFPS24SAd/imu0uRhpbKiJbLIFzVuMB8GA1UdIwQYMBaAFEXroq/0ksuC -# MS1Ri6enIZ3zbcgPMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgGG -# MBMGA1UdJQQMMAoGCCsGAQUFBwMIMHkGCCsGAQUFBwEBBG0wazAkBggrBgEFBQcw -# AYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRwOi8v -# Y2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3J0 -# MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGln -# aUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsMy5kaWdp -# Y2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMFAGA1UdIARJMEcw -# OAYKYIZIAYb9bAACBDAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy -# dC5jb20vQ1BTMAsGCWCGSAGG/WwHATANBgkqhkiG9w0BAQsFAAOCAQEAcZUS6VGH -# VmnN793afKpjerN4zwY3QITvS4S/ys8DAv3Fp8MOIEIsr3fzKx8MIVoqtwU0HWqu -# mfgnoma/Capg33akOpMP+LLR2HwZYuhegiUexLoceywh4tZbLBQ1QwRostt1AuBy -# x5jWPGTlH0gQGF+JOGFNYkYkh2OMkVIsrymJ5Xgf1gsUpYDXEkdws3XVk4WTfraS -# Z/tTYYmo9WuWwPRYaQ18yAGxuSh1t5ljhSKMYcp5lH5Z/IwP42+1ASa2bKXuh1Eh -# 5Fhgm7oMLSttosR+u8QlK0cCCHxJrhO24XxCQijGGFbPQTS2Zl22dHv1VjMiLyI2 -# skuiSpXY9aaOUjGCAk0wggJJAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK -# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNV -# BAMTKERpZ2lDZXJ0IFNIQTIgQXNzdXJlZCBJRCBUaW1lc3RhbXBpbmcgQ0ECEA1C -# SuC+Ooj/YEAhzhQA8N0wDQYJYIZIAWUDBAIBBQCggZgwGgYJKoZIhvcNAQkDMQ0G -# CyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJBTEPFw0yMTA0MDgwOTExMDlaMCsGCyqG -# SIb3DQEJEAIMMRwwGjAYMBYEFOHXgqjhkb7va8oWkbWqtJSmJJvzMC8GCSqGSIb3 -# DQEJBDEiBCDvFxQ6lYLr8vB+9czUl19rjCw1pWhhUXw/SqOmvIa/VDANBgkqhkiG -# 9w0BAQEFAASCAQB9ox2UrcUXQsBI4Uycnhl4AMpvhVXJME62tygFMppW1l7QftDy -# LvfPKRYm2YUioak/APxAS6geRKpeMkLvXuQS/Jlv0kY3BjxkeG0eVjvyjF4SvXbZ -# 3JCk9m7wLNE+xqOo0ICjYlIJJgRLudjWkC5Skpb1NpPS8DOaIYwRV+AWaSOUPd9P -# O5yVcnbl7OpK3EAEtwDrybCVBMPn2MGhAXybIHnth3+MFp1b6Blhz3WlReQyarjq -# 1f+zaFB79rg6JswXoOTJhwICBP3hO2Ua3dMAswbfl+QNXF+igKLJPYnaeSVhBbm6 -# VCu2io27t4ixqvoD0RuPObNX/P3oVA38afiM +# 7ckeVTPrEZ6hsXjOgPFlJm9ilgHUB6CCDbQwggawMIIEmKADAgECAhAIrUCyYNKc +# TJ9ezam9k67ZMA0GCSqGSIb3DQEBDAUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK +# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV +# BAMTGERpZ2lDZXJ0IFRydXN0ZWQgUm9vdCBHNDAeFw0yMTA0MjkwMDAwMDBaFw0z +# NjA0MjgyMzU5NTlaMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwg +# SW5jLjFBMD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcg +# UlNBNDA5NiBTSEEzODQgMjAyMSBDQTEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +# ggIKAoICAQDVtC9C0CiteLdd1TlZG7GIQvUzjOs9gZdwxbvEhSYwn6SOaNhc9es0 +# JAfhS0/TeEP0F9ce2vnS1WcaUk8OoVf8iJnBkcyBAz5NcCRks43iCH00fUyAVxJr +# Q5qZ8sU7H/Lvy0daE6ZMswEgJfMQ04uy+wjwiuCdCcBlp/qYgEk1hz1RGeiQIXhF +# LqGfLOEYwhrMxe6TSXBCMo/7xuoc82VokaJNTIIRSFJo3hC9FFdd6BgTZcV/sk+F +# LEikVoQ11vkunKoAFdE3/hoGlMJ8yOobMubKwvSnowMOdKWvObarYBLj6Na59zHh +# 3K3kGKDYwSNHR7OhD26jq22YBoMbt2pnLdK9RBqSEIGPsDsJ18ebMlrC/2pgVItJ +# wZPt4bRc4G/rJvmM1bL5OBDm6s6R9b7T+2+TYTRcvJNFKIM2KmYoX7BzzosmJQay +# g9Rc9hUZTO1i4F4z8ujo7AqnsAMrkbI2eb73rQgedaZlzLvjSFDzd5Ea/ttQokbI +# YViY9XwCFjyDKK05huzUtw1T0PhH5nUwjewwk3YUpltLXXRhTT8SkXbev1jLchAp +# QfDVxW0mdmgRQRNYmtwmKwH0iU1Z23jPgUo+QEdfyYFQc4UQIyFZYIpkVMHMIRro +# OBl8ZhzNeDhFMJlP/2NPTLuqDQhTQXxYPUez+rbsjDIJAsxsPAxWEQIDAQABo4IB +# WTCCAVUwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUaDfg67Y7+F8Rhvv+ +# YXsIiGX0TkIwHwYDVR0jBBgwFoAU7NfjgtJxXWRM3y5nP+e6mK4cD08wDgYDVR0P +# AQH/BAQDAgGGMBMGA1UdJQQMMAoGCCsGAQUFBwMDMHcGCCsGAQUFBwEBBGswaTAk +# BggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEEGCCsGAQUFBzAC +# hjVodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkUm9v +# dEc0LmNydDBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsMy5kaWdpY2VydC5j +# b20vRGlnaUNlcnRUcnVzdGVkUm9vdEc0LmNybDAcBgNVHSAEFTATMAcGBWeBDAED +# MAgGBmeBDAEEATANBgkqhkiG9w0BAQwFAAOCAgEAOiNEPY0Idu6PvDqZ01bgAhql +# +Eg08yy25nRm95RysQDKr2wwJxMSnpBEn0v9nqN8JtU3vDpdSG2V1T9J9Ce7FoFF +# UP2cvbaF4HZ+N3HLIvdaqpDP9ZNq4+sg0dVQeYiaiorBtr2hSBh+3NiAGhEZGM1h +# mYFW9snjdufE5BtfQ/g+lP92OT2e1JnPSt0o618moZVYSNUa/tcnP/2Q0XaG3Ryw +# YFzzDaju4ImhvTnhOE7abrs2nfvlIVNaw8rpavGiPttDuDPITzgUkpn13c5Ubdld +# AhQfQDN8A+KVssIhdXNSy0bYxDQcoqVLjc1vdjcshT8azibpGL6QB7BDf5WIIIJw +# 8MzK7/0pNVwfiThV9zeKiwmhywvpMRr/LhlcOXHhvpynCgbWJme3kuZOX956rEnP +# LqR0kq3bPKSchh/jwVYbKyP/j7XqiHtwa+aguv06P0WmxOgWkVKLQcBIhEuWTatE +# QOON8BUozu3xGFYHKi8QxAwIZDwzj64ojDzLj4gLDb879M4ee47vtevLt/B3E+bn +# KD+sEq6lLyJsQfmCXBVmzGwOysWGw/YmMwwHS6DTBwJqakAwSEs0qFEgu60bhQji +# WQ1tygVQK+pKHJ6l/aCnHwZ05/LWUpD9r4VIIflXO7ScA+2GRfS0YW6/aOImYIbq +# yK+p/pQd52MbOoZWeE4wggb8MIIE5KADAgECAhAJl8VsqlkFU5TZqc24vutWMA0G +# CSqGSIb3DQEBCwUAMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwg +# SW5jLjFBMD8GA1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBDb2RlIFNpZ25pbmcg +# UlNBNDA5NiBTSEEzODQgMjAyMSBDQTEwHhcNMjMwMTEzMDAwMDAwWhcNMjYwMTE2 +# MjM1OTU5WjCBgDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFDAS +# BgNVBAcTC1NhbnRhIENsYXJhMRswGQYDVQQKExJOVklESUEgQ29ycG9yYXRpb24x +# DDAKBgNVBAsTAzItSjEbMBkGA1UEAxMSTlZJRElBIENvcnBvcmF0aW9uMIIBojAN +# BgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAiIBdEHMI1HLTk5k1S0mC4p0nVHkc +# 1q129e2f6lZceD09+FT0DlluhbBI96OJnEmf1yVhZWnKM9uSQW9pMEth4cCubOzB +# q+zv5ty3h18FMFkbxCZz2S6xpo7E2e5R6+x4YALkfrVCwY5UBN1FB9KR9o/uRMEX +# 3C4hq3sFdWCU8CVlqBBNlYD8EDhWvwZ41VjmNTYLoX3TtQzqiux+xV+QEjwdKjAP +# VT99pNLXIwG7UzF49QpmiwWfa1gTh1RYh39W/ospaTfR7/rcLlSX17d5jvFpnh4L +# ROrGW4xZvZd28Jx/D10Qt4j7Sy5aWIUjIKBJ/cAq6r1xeegw4Gg8R4E6vddZ8II0 +# vF/1FwbHJo093UpxM44StIkwWk4KdWLmTKzY2tOsUwVVmJELj0GJ162hPpwe3dl/ +# 5UdHeup1RujjFKm6+x80DgZFhxYjYq9jdPqEGWuBOWueB8DfO06f7fwoYlq8RruI +# n6T+SOOcPju3SpChGK6MGL6r6a/oeDL+DRV5AgMBAAGjggIGMIICAjAfBgNVHSME +# GDAWgBRoN+Drtjv4XxGG+/5hewiIZfROQjAdBgNVHQ4EFgQUvm9ADtYQBGam7Qi3 +# Ak6bt/jwttEwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMIG1 +# BgNVHR8Ega0wgaowU6BRoE+GTWh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdp +# Q2VydFRydXN0ZWRHNENvZGVTaWduaW5nUlNBNDA5NlNIQTM4NDIwMjFDQTEuY3Js +# MFOgUaBPhk1odHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVk +# RzRDb2RlU2lnbmluZ1JTQTQwOTZTSEEzODQyMDIxQ0ExLmNybDA+BgNVHSAENzA1 +# MDMGBmeBDAEEATApMCcGCCsGAQUFBwIBFhtodHRwOi8vd3d3LmRpZ2ljZXJ0LmNv +# bS9DUFMwgZQGCCsGAQUFBwEBBIGHMIGEMCQGCCsGAQUFBzABhhhodHRwOi8vb2Nz +# cC5kaWdpY2VydC5jb20wXAYIKwYBBQUHMAKGUGh0dHA6Ly9jYWNlcnRzLmRpZ2lj +# ZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNENvZGVTaWduaW5nUlNBNDA5NlNIQTM4 +# NDIwMjFDQTEuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggIBAE1r +# cSetpoyq/nxFlXWqfQrT22/zerHAdozr83jTDZ8yWOcY7FLFHWDT5HbpLte3CnMb +# 5vwtaZabIkqJkiiBWRx9mlyFLoHH70dxRKjtMEEmfjKVylDOSws4KZPr8NJ4gNi5 +# zJCIejw2rdeQumQloMROcIEO6Vhn72lq9BPiU2kHqx99uOwNxDsJlB0iZ3PI3B3z +# VznrFlzTm59WSuidbvyvfm/CHO413zxhBevbp8KUERd/dw2/K1W6k54dlPLQ5360 +# +cA+Xnvji6fR/UwOOIpGd7kWoOijYXgSh4lC5pLq1ZwVCDnl04SY7BITybB4sJYN +# NNaZlXrHQgYfBqB17VLmuSSbGm8BlFSRoP9lPLEOIfLA2L3zWYW8KdLWAoZ3wamo +# O4KGkoB63yK+AHfyFVMT+Oyy0rBAvsc0bGWaTuHIXGRtQ1eSLaDAn8JIZpCqpLdy +# 2MXlW/yZu0fZ/ekrcAVpc5bvAN+N66oX7KHpTFOhySAfoaBzi2P6tyvBaGduC74m +# WOUFtIq0aIRcyMD0JyBixs4hL1PX8VEA5bgrMJobYVpfl4iGcKpeXv1VrY5Xy6Ui +# AhufVdpBCTpG808jBnMzxMBFRNH13V522K47KbENibqPXpOaguReVZQYuPTn7Iq6 +# 3quSqZgKoIkdEcPRPstdSbB4ExYNDl7S3wANXwobMYIXzTCCF8kCAQEwfTBpMQsw +# CQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERp +# Z2lDZXJ0IFRydXN0ZWQgRzQgQ29kZSBTaWduaW5nIFJTQTQwOTYgU0hBMzg0IDIw +# MjEgQ0ExAhAJl8VsqlkFU5TZqc24vutWMA0GCWCGSAFlAwQCAQUAoHwwEAYKKwYB +# BAGCNwIBDDECMAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGC +# NwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIG5YDmcpqLxn4SB0 +# H6OnuVkZRPh6OJ77eGW/6Su/uuJgMA0GCSqGSIb3DQEBAQUABIIBgHXTyZX1DES8 +# 3u8d+ddcglOpBabxJ8s5KFvMEys6SRuKZNwinH8XASKMwFqLFWW4sDfQPTP7SAXA +# jt0RrGPkwgorXKWV21LAE4hxMTyDTtAmJayNra22fe8azm4/+Muh01GSTa13jMJZ +# smaC4D/62Q8DExSMpQPwIdJuk3ZSxWHEoIbpGj66DFhmbtYfK+eaviYOJ9ovDzNJ +# tbs6VHt54i9TTXCe1LXrUqtcAA0Lr8TfDKvoR6xK0H9eVl/OpG40ZayFvVdNgO1f +# jd+2T6yDVBSdeXtseKvX+GRlQ6pQl9/NwwhrOlvyWvPf6ahTQME3UgIOBXXZW8Yp +# 0DhHnN9+Cw+NMxEmjugFdBJPFfsoWYXdEztGnj3H2wYcvHBi0GVhNaoMVIks99HG +# 2qJdXygc7AYJBqNvxlIqEodr98ihQzfFOmlSAL9pv/swyqTmOFSS4Wn3plykgXfm +# PZnK3cVOEJGefONMHKTa+CZTauMQzrsCdBpd4MfI/QCaIHvakoIzA6GCFSMwghUf +# BgorBgEEAYI3AwMBMYIVDzCCFQsGCSqGSIb3DQEHAqCCFPwwghT4AgEDMQ0wCwYJ +# YIZIAWUDBAIBMIHQBgsqhkiG9w0BCRABBKCBwASBvTCBugIBAQYKYIZIAYb6bAoD +# BTAxMA0GCWCGSAFlAwQCAQUABCBEVaF6VHPqFMwqNaiFyCNxduE85zVchUTTjn+p +# BBiLbAIILNDH1sggr6gYDzIwMjUwODE2MTAwMjM3WjADAgEBoFakVDBSMQswCQYD +# VQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwgSW5jLjErMCkGA1UEAxMiRW50cnVz +# dCBUaW1lc3RhbXAgQXV0aG9yaXR5IC0gVFNBMaCCD20wggQqMIIDEqADAgECAgQ4 +# Y974MA0GCSqGSIb3DQEBBQUAMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4G +# A1UECxQ3d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAo +# bGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGlt +# aXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +# dHkgKDIwNDgpMB4XDTk5MTIyNDE3NTA1MVoXDTI5MDcyNDE0MTUxMlowgbQxFDAS +# BgNVBAoTC0VudHJ1c3QubmV0MUAwPgYDVQQLFDd3d3cuZW50cnVzdC5uZXQvQ1BT +# XzIwNDggaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwo +# YykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVkMTMwMQYDVQQDEypFbnRydXN0Lm5l +# dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAoMjA0OCkwggEiMA0GCSqGSIb3DQEB +# AQUAA4IBDwAwggEKAoIBAQCtTUupEoay6qMgBxUWZCorS9G/C0pNju2AdqVnt3hA +# wHNCyGjA21Mr3V64dpg1k4sanXwTOg4fW7cez+UkFB6xgamNfbjMa0sD8QIM3Kul +# QCQAf3SUoZ0IKbOIC/WHd51VzeTDftdqZKuFFIaVW5cyUG89yLpmDOP8vbhJwXaJ +# SRn9wKi9iaNnL8afvHEZYLgt6SzJkHZme5Tir3jWZVNdPNacss8pA/kvpFCy1EjO +# BTJViv2yZEwO5JgHddt/37kIVWCFMCn5e0ikaYbjNT8ehl16ehW97wCOFSJUFwCQ +# JpO8Dklokb/4R9OdlULBDk3fbybPwxghYmZDcNbVwAfhAgMBAAGjQjBAMA4GA1Ud +# DwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRV5IHREYC+2Im5 +# CKMx+aEkCRa5cDANBgkqhkiG9w0BAQUFAAOCAQEAO5uPVpsw51OZfHp5p02X1xmV +# kPsGH8ozfEZjj5ZmJPpAGyEnyuZyc/JP/jGZ/cgMTGhTxoCCE5j6tq3aXT3xzm72 +# FRGUggzuP5WvEasP1y/eHwOPVyweybuaGkSV6xhPph/NfVcQL5sECVqEtW7YHTrh +# 1p7RbHleeRwUxePQTJM7ZTzt3z2+puWVGsO1GcO9Xlu7/yPvaBnLEpMnXAMtbzDQ +# HrYarN5a99GqqCem/nmBxHmZM1e6ErCp4EJsk8pW3v5thAsIi36N6teYIcbz5zx5 +# L16c0UwVjeHsIjfMmkMLl9yAkI2zZ5tvSAgVVs+/8St8Xpp26VmQxXyDNRFlUTCC +# BRMwggP7oAMCAQICDFjaE/8AAAAAUc4N9zANBgkqhkiG9w0BAQsFADCBtDEUMBIG +# A1UEChMLRW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNf +# MjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChj +# KSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0 +# IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw0xNTA3MjIxOTAyNTRa +# Fw0yOTA2MjIxOTMyNTRaMIGyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVz +# dCwgSW5jLjEoMCYGA1UECxMfU2VlIHd3dy5lbnRydXN0Lm5ldC9sZWdhbC10ZXJt +# czE5MDcGA1UECxMwKGMpIDIwMTUgRW50cnVzdCwgSW5jLiAtIGZvciBhdXRob3Jp +# emVkIHVzZSBvbmx5MSYwJAYDVQQDEx1FbnRydXN0IFRpbWVzdGFtcGluZyBDQSAt +# IFRTMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANkj5hSk6HxLhXFY +# +/iB5nKLXUbDiAAfONCK4dZuVjDlr9pkUH3CEzn7vWa02oT7g9AoH8t26GBQaZvz +# zk8T4sE+wd8SyzKj+F5EIg7MOumNSblgdMjeVD1BXkNfKEapprfKECsivFtNW4wX +# ZRKG/Sx31cWgjMrCg+BHV3zncK5iRScxGArUwKQYVVL3YMYES7PdaDJuEB80EbgS +# eGTx7qng9+OxIo80WmXLivThRVB035OXpjTm0Ew7nzdJUqdTTp8uZ1ztlvylv3RR +# iOOqjr3ZsS9fUDAW9FFgImuZy//hVDu5+0Q4pQg5I5tpR/o8xNDnqt9Gsuzyihms +# KbI4lXUCAwEAAaOCASMwggEfMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/ +# BAQDAgEGMDsGA1UdIAQ0MDIwMAYEVR0gADAoMCYGCCsGAQUFBwIBFhpodHRwOi8v +# d3d3LmVudHJ1c3QubmV0L3JwYTAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAGG +# F2h0dHA6Ly9vY3NwLmVudHJ1c3QubmV0MDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6 +# Ly9jcmwuZW50cnVzdC5uZXQvMjA0OGNhLmNybDATBgNVHSUEDDAKBggrBgEFBQcD +# CDAdBgNVHQ4EFgQUw8Jx0nvXaAWuOzmbNCUMYgPHV2gwHwYDVR0jBBgwFoAUVeSB +# 0RGAvtiJuQijMfmhJAkWuXAwDQYJKoZIhvcNAQELBQADggEBAB0k55p0W6pw/LEO +# MUXXLAB/ZjoroJo0qqxjbYn5n98Nd/0kI/xPnLdvj/P0H7bB/dYcxIyIZsFjjbpX +# d9O4Gh7IUa3MYDYah2oo6hFl3sw8LIx0t+hQQ9PMKOgVbBEqnxSVKckFV7VnNug8 +# qYPvQcEhFtN+9y0RR2Z2YIISaYx2VXMP3y9LXelsI/gH9rV91mlFnFh9YS78eEtD +# TomRRkQsoFOoRaH2Fli7kRPyS8XfC8Dnril6vUWz53Aw5zSO63r207XR3msTmUaz +# i9JNk3W18W+/3AAowiW/vOejZTTsPw0dl4z6qogipBg12wWOduMQyCmPY9CurBjZ +# 2sSfURIwggYkMIIFDKADAgECAhEAmEB8XhbPh8Hpwf/5tAqIjTANBgkqhkiG9w0B +# AQsFADCBsjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAm +# BgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsT +# MChjKSAyMDE1IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s +# eTEmMCQGA1UEAxMdRW50cnVzdCBUaW1lc3RhbXBpbmcgQ0EgLSBUUzEwHhcNMjUw +# MTIyMTc0MjMzWhcNMjkwNjIxMjM1OTU5WjBSMQswCQYDVQQGEwJVUzEWMBQGA1UE +# ChMNRW50cnVzdCwgSW5jLjErMCkGA1UEAxMiRW50cnVzdCBUaW1lc3RhbXAgQXV0 +# aG9yaXR5IC0gVFNBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAOb2 +# IXkRUe7r69hh3LK4ocaEflvBY+hAC/n1iQ1RLrNNPlDiZLCLXVmeBF+poPQT8FhG +# wsfvJZWv8rrMMvH7OvdeQOva1hSCWudnjFr4G2OSQPbri8thioIXAfMT2oGautRe +# uWKTUNcn//3/7P0dRvMXElRRxXbZ23Pj/7Iillt6N4ir+DqIXHmzWUU7jfVAbSDR +# 8wOYcNNfGf8RicefGUfH7UXZc0LdkfMmnwwK6hILdqWp/0fH4ZTk2ihefVnS7mSF +# qnxRUPQRLsfN4OL/qdw3mBM3T6rm1DOlsf/13DHqLKx1H9eqT5vijjk39e6qv1GZ +# jPwhQOvLH1UbPqQe+zcAzpSE9dwCs5ReLllnb/nzlLV7+H0oIW1IOFV4dIQPlT8Y +# WpECO87vJep4WXt0+4EQAHFFdA55nzztV9NYXTOOrppP8OddQOfyfdQ2dzOcUE2E +# v4Koo8B/CJiQG8nwnEq3A81FyN+GBlnUHpLmWWa8+VzCfx4ATel6RVtqW2LM+Iug +# lQeZ4FGS/5Xkd5hdkBW3o+8EueQ8j9/yX/8h/18ZfCCe7ukyquhF6bSqILsPZnaw +# ikdwvRnuq4WEPdhqvz7JdqIoGyqtA0HHdn8UfTB+Ey1WJdv9kpd9oCY7mmmJQ2vH +# GN1/BAHDLDOOF5jznR7xowR8ZwsodTJiduuh1/W9AgMBAAGjggGSMIIBjjAMBgNV +# HRMBAf8EAjAAMB0GA1UdDgQWBBTRzQEHYoFGllyp8L1P4MUAn3q+3DAfBgNVHSME +# GDAWgBTDwnHSe9doBa47OZs0JQxiA8dXaDAOBgNVHQ8BAf8EBAMCB4AwFgYDVR0l +# AQH/BAwwCgYIKwYBBQUHAwgwaAYIKwYBBQUHAQEEXDBaMCMGCCsGAQUFBzABhhdo +# dHRwOi8vb2NzcC5lbnRydXN0Lm5ldDAzBggrBgEFBQcwAoYnaHR0cDovL2FpYS5l +# bnRydXN0Lm5ldC90czEtY2hhaW4yNTYuY2VyMDEGA1UdHwQqMCgwJqAkoCKGIGh0 +# dHA6Ly9jcmwuZW50cnVzdC5uZXQvdHMxY2EuY3JsMEwGA1UdIARFMEMwCAYGZ4EM +# AQQCMDcGCmCGSAGG+mwKAQcwKTAnBggrBgEFBQcCARYbaHR0cHM6Ly93d3cuZW50 +# cnVzdC5uZXQvcnBhMCsGA1UdEAQkMCKADzIwMjUwMTIyMTc0MjMzWoEPMjAyNjA0 +# MjExNzQyMzJaMA0GCSqGSIb3DQEBCwUAA4IBAQBQkweRJsE+n0CwVNLfxlgpO8z+ +# 4Li5Fslv5cjyaSMcQLwqMrBHEGmhd1LwtRl56jbEtOoE6rBhzaSeyOZ98Esy+Y68 +# 5eYaiWt/GYBXwLUBeNfCN503/a97Jik0Aj+bWmkJl7dtImrYoxRk2drGsGibxlfz +# JVYGWoOb5Ijv1K9aFoDCF1B1XRTDZOce5M5wMZkwylHkJZcF7wi9jco9jIaR4q13 +# 0OGQNObYJMpIrOWkiSN41Qh8y4b8tgxkKW626zHpRdIIGN0/661TV8yW4e+7p6OF +# D+AKWyZsssjhdZDTyrd6xJPCxnefjgF0MWfUhQeYfpUQ+03sEpNdCtK9Y6/oMYIE +# njCCBJoCAQEwgcgwgbIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJ +# bmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkw +# NwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg +# dXNlIG9ubHkxJjAkBgNVBAMTHUVudHJ1c3QgVGltZXN0YW1waW5nIENBIC0gVFMx +# AhEAmEB8XhbPh8Hpwf/5tAqIjTALBglghkgBZQMEAgGgggGoMBoGCSqGSIb3DQEJ +# AzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjUwODE2MTAwMjM3WjAr +# BgkqhkiG9w0BCTQxHjAcMAsGCWCGSAFlAwQCAaENBgkqhkiG9w0BAQsFADAvBgkq +# hkiG9w0BCQQxIgQgtzHiAvUJ7MhWI5Uz14dh+qRHHi3//dHE0DYsDNa1iN4wggEM +# BgsqhkiG9w0BCRACLzGB/DCB+TCB9jCB8wQgo4oYp8mi13H3H7yQSoLj8WOayBQM +# ThNVtfvCcZlM/rowgc4wgbikgbUwgbIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1F +# bnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs +# LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1 +# dGhvcml6ZWQgdXNlIG9ubHkxJjAkBgNVBAMTHUVudHJ1c3QgVGltZXN0YW1waW5n +# IENBIC0gVFMxAhEAmEB8XhbPh8Hpwf/5tAqIjTANBgkqhkiG9w0BAQsFAASCAgCE +# Se5TcaCjItszxMYFp6FW+UcXXVC0pM9ZTVw+hqsFeqfKtSkrOpXPcKhunfAQEoPV +# 3ycWlFQ1JAOkfFnXjH0oPlOQYz2HuJetPSlsK7delZNjY1PtGRfiy6Mbi2FZqcxL +# EkOekqXmQT0Lgjfy+TIGxMcecq5U1Zo1mNbfA5lY/BCVVnVFlIkEEtzjQUiTzABN +# 8+FDoNv7SSf8v5909C1SPofqE4oOFt7CeJG/ZauQxgZ44s/XSyRG6sYMagd/kHbE +# evTM7rocjOinRCUdSQ7/DUvsDcqP+G1srJGH277F/XSa8BY7qzuVGaQErIEEg0Pj +# RmvBnFRLB3gU1nYQhqVFC3Wd9UJagYFHy3JPv0LRQhD+f8ne+DgxT6SC5Bk+upAB +# z3XtloYRrg/tUOkOkMMSXwXUbMPwbsYpHmBpS6JhYIokmvZXH5xgABH18s4Z+mex +# PGpE0dTfZ+UQOqbfNuKaCjKT2N7pQosrmnskWk8CyMi4YEIhYnrXAg772IyrU3N0 +# tNv5bgsdfk8Bn4VTHqjcKtTpJYs9tp8jN+0WocIODZyoasLlwwFHvdPPk1ZL8Ogs +# qiU5CgMGwXqMclhWQIhR34jseR0bKqnDBrsbOXPlxSevBp4yjSpLq0aXQ9Pm5riE +# aTWQ5Ilgy7nGMAX2Bqzz+Tx2oJp5dPDmmQxHcB6ggA== # SIG # End signature block diff --git a/tools/packman/bootstrap/install_package.py b/tools/packman/bootstrap/install_package.py index 5baa9eca2..e19bb14ae 100644 --- a/tools/packman/bootstrap/install_package.py +++ b/tools/packman/bootstrap/install_package.py @@ -142,7 +142,7 @@ def generate_sha256_for_file(file_path: Union[str, os.PathLike]) -> str: def install_common_module(package_path, install_path): - COMMON_SHA256 = "dc5b18d2b507f04ce560b3d3e8b6b1eeac55b8931653096378cb45337874fd33" + COMMON_SHA256 = "2d10ba240a2a0bf052f3d5913b957bc6a56d513db3b97daac619f593936eac42" package_sha256 = generate_sha256_for_file(package_path) if package_sha256 != COMMON_SHA256: raise RuntimeError( diff --git a/tools/packman/packman b/tools/packman/packman index 2577fbe19..063972cd6 100755 --- a/tools/packman/packman +++ b/tools/packman/packman @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2019-2023 NVIDIA CORPORATION +# Copyright 2019-2025 NVIDIA CORPORATION # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,8 +13,11 @@ # 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. -SAVED_SETTINGS="$-" -set -eu +SAVED_SETTINGS=`echo $-` +# Fail on undefined variables +set -u +# Don't exit on errors +set +e if echo ${PM_VERBOSITY-} | grep -i "debug" > /dev/null ; then set -x @@ -24,169 +27,213 @@ else PM_CURL_SILENT="-s -S" PM_WGET_QUIET="--quiet" fi -export PM_PACKMAN_VERSION=7.23.2 +export PM_PACKMAN_VERSION=7.34 -# This is necessary for newer macOS -if [ `uname` == 'Darwin' ]; then - export LC_ALL=en_US.UTF-8 - export LANG=en_US.UTF-8 -fi - -# We cannot rely on realpath, it isn't installed on macOS and some Linux distros -get_abs_filename() { - echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")" -} - -# Specify where packman command exists -export PM_INSTALL_PATH="$(get_abs_filename "$(dirname "${BASH_SOURCE}")")" - -# The packages root may already be configured by the user -if [ -z "${PM_PACKAGES_ROOT:-}" ]; then - # Set variable temporarily in this process so that the following execution will work - if [ `uname` == 'Darwin' ]; then - export PM_PACKAGES_ROOT="${HOME}/Library/Application Support/packman-cache" - else - if [ -z "${XDG_CACHE_HOME:-}" ]; then - export PM_PACKAGES_ROOT="${HOME}/.cache/packman" - else - export PM_PACKAGES_ROOT="${XDG_CACHE_HOME}/packman" - fi - fi -fi -# Ensure the packages root path exists: -if [ ! -d "$PM_PACKAGES_ROOT" ]; then - echo "Creating packman packages cache at $PM_PACKAGES_ROOT" - mkdir -p -m a+rwx "$PM_PACKAGES_ROOT" -fi +cleanup() { + # Remove temporary variable file if it exists + if [[ -n "${PM_VAR_PATH:-}" && -f "$PM_VAR_PATH" ]]; then + rm -f "$PM_VAR_PATH" + fi -fetch_file_from_s3() -{ - SOURCE=$1 - SOURCE_URL=http://bootstrap.packman.nvidia.com/$SOURCE - TARGET=$2 - echo "Fetching $SOURCE from bootstrap.packman.nvidia.com ..." - if command -v wget >/dev/null 2>&1; then - wget $PM_WGET_QUIET -O$TARGET $SOURCE_URL - else - curl -o $TARGET $SOURCE_URL $PM_CURL_SILENT - fi -} + # Restore the settings we may have altered during our run + if [[ "$SAVED_SETTINGS" == *"e"* ]]; then + set -e + fi -generate_temp_file_name() -{ - if [ `uname` == "Darwin" ]; then - local tmpfile=`mktemp -t packman` - else - local tmpfile=`mktemp -t packman.XXXXXXXX` - fi - echo "$tmpfile" -} + if [[ "$SAVED_SETTINGS" != *"x"* ]]; then + set +x + fi -install_python() -{ - PLATFORM=`uname` - PROCESSOR=`uname -m` - PYTHON_VERSION=3.10.5-1 - - if [ $PLATFORM == 'Darwin' ]; then - PYTHON_PACKAGE=$PYTHON_VERSION-macos-x86_64 - elif [ $PLATFORM == 'Linux' ] && [ $PROCESSOR == 'x86_64' ]; then - PYTHON_PACKAGE=$PYTHON_VERSION-linux-x86_64 - elif [ $PLATFORM == 'Linux' ] && [ $PROCESSOR == 'aarch64' ]; then - PYTHON_PACKAGE=$PYTHON_VERSION-linux-aarch64 - else - echo "Operating system not supported" - exit 1 - fi - - PYTHON_INSTALL_FOLDER="$PM_PACKAGES_ROOT/python/$PYTHON_PACKAGE" - if [ ! -d "$PYTHON_INSTALL_FOLDER" ]; then - mkdir -p "$PYTHON_INSTALL_FOLDER" - fi - - export PM_PYTHON="$PYTHON_INSTALL_FOLDER/python" - - if [ ! -f "$PM_PYTHON" ]; then - PYTHON_PACKAGE_TMP=$(generate_temp_file_name) - fetch_file_from_s3 "python@$PYTHON_PACKAGE.tar.gz" "$PYTHON_PACKAGE_TMP" - if [ "$?" -eq "0" ]; then - echo "Unpacking python" - tar -xf "$PYTHON_PACKAGE_TMP" -C "$PYTHON_INSTALL_FOLDER" - rm "$PYTHON_PACKAGE_TMP" - else - echo "Failed downloading the Python interpreter" - exit $? - fi - fi + # the e setting is always set in source mode so we remove it here so it + # doesn't leak (in regular ./ execution doesn't matter) + set +u } -# Ensure python is available: -if [ -z "${PM_PYTHON_EXT:-}" ]; then - install_python -else - PM_PYTHON="$PM_PYTHON_EXT" -fi - -# The packman module may be externally configured -if [ -z "${PM_MODULE_DIR_EXT:-}" ]; then - PM_MODULE_DIR="$PM_PACKAGES_ROOT/packman-common/$PM_PACKMAN_VERSION" -else - PM_MODULE_DIR="$PM_MODULE_DIR_EXT" -fi -export PM_MODULE="$PM_MODULE_DIR/run.py" - -# Ensure the packman package exists: -if [ ! -f "$PM_MODULE" ]; then - # Remove a previously corrupt packman-common if it's there - if [ -d "$PM_MODULE_DIR" ]; then - rm -rf "$PM_MODULE_DIR" - fi - PM_MODULE_PACKAGE="packman-common@$PM_PACKMAN_VERSION.zip" - TARGET=$(generate_temp_file_name) - # We always fetch packman from S3: - fetch_file_from_s3 "$PM_MODULE_PACKAGE" "$TARGET" - if [ "$?" -eq "0" ]; then - echo "Unpacking ..." - "$PM_PYTHON" -S -s -u -E "$PM_INSTALL_PATH/bootstrap/install_package.py" "$TARGET" "$PM_MODULE_DIR" - rm "$TARGET" - else - echo "Failure while fetching packman module from S3!" - exit 1 - fi -fi +main() { + # This is necessary for newer macOS + if [ `uname` == 'Darwin' ]; then + export LC_ALL=en_US.UTF-8 + export LANG=en_US.UTF-8 + fi + + # We cannot rely on realpath, it isn't installed on macOS and some Linux distros + get_abs_filename() { + echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")" + } + + # Specify where packman command exists + export PM_INSTALL_PATH="$(get_abs_filename "$(dirname "${BASH_SOURCE}")")" + + # The packages root may already be configured by the user + if [ -z "${PM_PACKAGES_ROOT:-}" ]; then + # Set variable temporarily in this process so that the following execution will work + if [ `uname` == 'Darwin' ]; then + export PM_PACKAGES_ROOT="${HOME}/Library/Application Support/packman-cache" + else + if [ -z "${XDG_CACHE_HOME:-}" ]; then + export PM_PACKAGES_ROOT="${HOME}/.cache/packman" + else + export PM_PACKAGES_ROOT="${XDG_CACHE_HOME}/packman" + fi + fi + fi + + # Ensure the packages root path exists: + if [ ! -d "$PM_PACKAGES_ROOT" ]; then + echo "Creating packman packages cache at $PM_PACKAGES_ROOT" + mkdir -p -m a+rwx "$PM_PACKAGES_ROOT" || return 1 + fi + + execute_with_retry() + { + local CMD="$1" + local MAX_TRIES=4 + local DELAY=2 + local TRIES=0 + local exit_code + + while [ $TRIES -lt $MAX_TRIES ] + do + ((TRIES++)) + eval $CMD + exit_code=$? + if [ $exit_code -eq 0 ]; then + return 0 + fi + + if [ $TRIES -lt $MAX_TRIES ]; then + echo "Attempt $TRIES failed. Retrying in $DELAY seconds ..." + sleep $DELAY + DELAY=$((DELAY * DELAY)) + echo "Retrying ..." + fi + done + + echo "Command failed after $MAX_TRIES attempts: $CMD" + return $exit_code + } + + fetch_file_from_s3() + { + local SOURCE=$1 + local SOURCE_URL=https://bootstrap.packman.nvidia.com/$SOURCE + local TARGET=$2 + echo "Fetching $SOURCE from bootstrap.packman.nvidia.com ..." + local CMD="curl -o $TARGET $SOURCE_URL $PM_CURL_SILENT" + if command -v wget >/dev/null 2>&1; then + CMD="wget $PM_WGET_QUIET -O$TARGET $SOURCE_URL" + fi + execute_with_retry "$CMD" + return $? + } + + generate_temp_file_name() + { + if [ `uname` == "Darwin" ]; then + local tmpfile=`mktemp -t packman` + else + local tmpfile=`mktemp -t packman.XXXXXXXX` + fi + echo "$tmpfile" + } + + install_python() + { + PLATFORM=`uname` + PROCESSOR=`uname -m` + PYTHON_VERSION=3.10.19-nv2 + + if [ $PLATFORM == 'Darwin' ]; then + PYTHON_PACKAGE=3.10.5-1-macos-x86_64 + elif [ $PLATFORM == 'Linux' ] && [ $PROCESSOR == 'x86_64' ]; then + PYTHON_PACKAGE=$PYTHON_VERSION-linux-x86_64 + elif [ $PLATFORM == 'Linux' ] && [ $PROCESSOR == 'aarch64' ]; then + PYTHON_PACKAGE=$PYTHON_VERSION-linux-aarch64 + else + echo "Operating system not supported" + return 1 + fi -# Generate temporary file name for environment variables: -PM_VAR_PATH=`mktemp -u -t tmp.$$.pmvars.XXXXXX` + PYTHON_INSTALL_FOLDER="$PM_PACKAGES_ROOT/python/$PYTHON_PACKAGE" + if [ ! -d "$PYTHON_INSTALL_FOLDER" ]; then + mkdir -p "$PYTHON_INSTALL_FOLDER" || return 1 + fi -if [ $# -ne 0 ] - then - PM_VAR_PATH_ARG=--var-path="$PM_VAR_PATH" -fi + export PM_PYTHON="$PYTHON_INSTALL_FOLDER/python" -"$PM_PYTHON" -S -s -u -E "$PM_MODULE" "$@" ${PM_VAR_PATH_ARG:-} -exit_code=$? -# Export the variables if the file was used and remove the file: -if [ -f "$PM_VAR_PATH" ]; then - while read -r line - do - if [ ${#line} -gt 0 ]; then - export "$line" + if [ ! -f "$PM_PYTHON" ]; then + PYTHON_PACKAGE_TMP=$(generate_temp_file_name) + fetch_file_from_s3 "python@$PYTHON_PACKAGE.tar.gz" "$PYTHON_PACKAGE_TMP" || return 1 + echo "Unpacking python" + tar -xf "$PYTHON_PACKAGE_TMP" -C "$PYTHON_INSTALL_FOLDER" || return 1 + rm "$PYTHON_PACKAGE_TMP" || return 1 fi - done < "$PM_VAR_PATH" - rm -f "$PM_VAR_PATH" -fi - -# avoid leaking -e and -u into the host script if they weren't originally set -if [[ ! ( "$SAVED_SETTINGS" =~ e ) ]]; then - set +e -fi + } + + # Ensure python is available: + if [ -z "${PM_PYTHON_EXT:-}" ]; then + install_python || return 1 + else + PM_PYTHON="$PM_PYTHON_EXT" + fi + + # The packman module may be externally configured + if [ -z "${PM_MODULE_DIR_EXT:-}" ]; then + PM_MODULE_DIR="$PM_PACKAGES_ROOT/packman-common/$PM_PACKMAN_VERSION" + else + PM_MODULE_DIR="$PM_MODULE_DIR_EXT" + fi + export PM_MODULE="$PM_MODULE_DIR/run.py" + + # Ensure the packman package exists: + if [ ! -f "$PM_MODULE" ]; then + # Remove a previously corrupt packman-common if it's there + if [ -d "$PM_MODULE_DIR" ]; then + rm -rf "$PM_MODULE_DIR" || return 1 + fi + PM_MODULE_PACKAGE="packman-common@$PM_PACKMAN_VERSION.zip" + TARGET=$(generate_temp_file_name) + # We always fetch packman from S3: + fetch_file_from_s3 "$PM_MODULE_PACKAGE" "$TARGET" || return 1 + echo "Unpacking ..." + "$PM_PYTHON" -S -s -u -E "$PM_INSTALL_PATH/bootstrap/install_package.py" "$TARGET" "$PM_MODULE_DIR" || return 1 + rm "$TARGET" || return 1 + fi + + # Generate temporary file name for environment variables: + PM_VAR_PATH=`mktemp -u -t tmp.$$.pmvars.XXXXXX` + + if [ $# -ne 0 ]; then + PM_VAR_PATH_ARG=--var-path="$PM_VAR_PATH" + else + PM_VAR_PATH_ARG="" + fi + + "$PM_PYTHON" -S -s -u -E "$PM_MODULE" "$@" ${PM_VAR_PATH_ARG:-} || return 1 + # Export the variables if the file was used: + if [ -f "$PM_VAR_PATH" ]; then + while read -r line + do + if [ ${#line} -gt 0 ]; then + export "$line" + fi + done < "$PM_VAR_PATH" + fi + + # Return success + return 0 +} -if [[ ! ( "$SAVED_SETTINGS" =~ u ) ]]; then - set +u -fi +main "$@" +exit_code=$? +cleanup -# Return the exit code from python -if [ "$exit_code" != 0 ]; then - exit "$exit_code" +# Determine execution context and return accordingly +if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then + # This is direct execution + exit $exit_code +else + # This is sourced execution + return $exit_code fi diff --git a/tools/packman/packmanconf.py b/tools/packman/packmanconf.py index db220d27e..57ade83f6 100644 --- a/tools/packman/packmanconf.py +++ b/tools/packman/packmanconf.py @@ -29,6 +29,26 @@ import sys +MIN_PYTHON_VERSION = (3, 10, 0) +MAX_PYTHON_VERSION = (3, 11, 2) + + +def is_valid_python_version(version: tuple[int, int, int] = sys.version_info[:3]): + return MIN_PYTHON_VERSION <= version <= MAX_PYTHON_VERSION + + +def validate_python_version(version: tuple[int, int, int] = sys.version_info[:3]): + if not is_valid_python_version(version): + + def ver_str(pyver): + return ".".join(str(x) for x in pyver) + + raise RuntimeError( + f"This version of packman requires Python {ver_str(MIN_PYTHON_VERSION)} " + f"up to {ver_str(MAX_PYTHON_VERSION)}, but {ver_str(version)} was provided" + ) + + def init(): """Call this function to initialize the packman configuration. @@ -46,17 +66,7 @@ def init(): >>> import packmanapi >>> packmanapi.set_verbosity_level(packmanapi.VERBOSITY_HIGH) """ - major = sys.version_info.major - minor = sys.version_info.minor - patch = sys.version_info.micro - if major == 3 and (minor == 10 or (minor == 11 and patch <= 2)): - # we are good - pass - else: - raise RuntimeError( - f"This version of packman requires Python 3.10.0 up to 3.11.2, " - f"but {major}.{minor}.{patch} was provided" - ) + validate_python_version() conf_dir = os.path.dirname(os.path.abspath(__file__)) os.environ["PM_INSTALL_PATH"] = conf_dir packages_root = get_packages_root(conf_dir) @@ -98,7 +108,10 @@ def get_module_dir(conf_dir, packages_root: str, version: str) -> str: tf = tempfile.NamedTemporaryFile(delete=False) target_name = tf.name tf.close() - url = f"http://bootstrap.packman.nvidia.com/packman-common@{version}.zip" + # Forced to change to https because some customers will simply not allow http, + # even when it's used in a safe way (with download checksum verification). + # See issue #367 for more background. + url = f"https://bootstrap.packman.nvidia.com/packman-common@{version}.zip" print(f"Downloading '{url}' ...") import urllib.request From d75e9045a7ac18ced4ebe7887a7863bea2032409 Mon Sep 17 00:00:00 2001 From: SzenteP <22157560+szentep@users.noreply.github.com> Date: Wed, 21 Jan 2026 20:16:42 +0100 Subject: [PATCH 4/5] Screenshot with PrintScreen --- Source/Falcor/Core/SampleApp.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/Falcor/Core/SampleApp.cpp b/Source/Falcor/Core/SampleApp.cpp index 145bbaca0..00f726b7c 100644 --- a/Source/Falcor/Core/SampleApp.cpp +++ b/Source/Falcor/Core/SampleApp.cpp @@ -214,6 +214,7 @@ void SampleApp::handleKeyboardEvent(const KeyboardEvent& keyEvent) switch (keyEvent.key) { case Input::Key::F12: + case Input::Key::PrintScreen: mCaptureScreen = true; break; #if FALCOR_ENABLE_PROFILER @@ -352,7 +353,7 @@ std::string SampleApp::getKeyboardShortcutsStr() "F2 - Show/hide UI\n" "F3 - Capture current camera location\n" "F5 - Reload shaders\n" - "F12 - Capture screenshot\n" + "F12/PrintScreen - Capture screenshot\n" "V - Toggle VSync\n" "Pause|Space - Pause/resume the global timer\n" "Ctrl+Pause|Space - Pause/resume the renderer\n" From d6a03b4110d702f246dc252ae6ee6d4eeb2e28a6 Mon Sep 17 00:00:00 2001 From: SzenteP <22157560+szentep@users.noreply.github.com> Date: Wed, 21 Jan 2026 20:57:51 +0100 Subject: [PATCH 5/5] Bump slang, clang-format Remove deprecated functionality. --- Source/Falcor/Core/API/Device.cpp | 2 +- .../Falcor/Core/Program/ProgramReflection.cpp | 32 +------------------ dependencies.xml | 8 ++--- 3 files changed, 6 insertions(+), 36 deletions(-) diff --git a/Source/Falcor/Core/API/Device.cpp b/Source/Falcor/Core/API/Device.cpp index 38db0faf4..f11687ded 100644 --- a/Source/Falcor/Core/API/Device.cpp +++ b/Source/Falcor/Core/API/Device.cpp @@ -499,7 +499,7 @@ Device::Device(const Desc& desc) : mDesc(desc) // Setup debug layer. FALCOR_GFX_CALL(gfxSetDebugCallback(&gGFXDebugCallBack)); if (mDesc.enableDebugLayer) - gfx::gfxEnableDebugLayer(); + gfx::gfxEnableDebugLayer(true); // Get list of available GPUs. const auto gpus = getGPUs(mDesc.type); diff --git a/Source/Falcor/Core/Program/ProgramReflection.cpp b/Source/Falcor/Core/Program/ProgramReflection.cpp index 71cd4eca0..a0e9cd091 100644 --- a/Source/Falcor/Core/Program/ProgramReflection.cpp +++ b/Source/Falcor/Core/Program/ProgramReflection.cpp @@ -173,13 +173,6 @@ struct ExtendedReflectionPath : ReflectionPath primaryLinkStorage.pParent = pPrimary; primaryLinkStorage.pVar = pVar; pPrimary = &primaryLinkStorage; - - if (auto pDeferredVar = pVar->getPendingDataLayout()) - { - deferredLinkStorage.pParent = pDeferred; - deferredLinkStorage.pVar = pDeferredVar; - pDeferred = &deferredLinkStorage; - } } } @@ -956,29 +949,6 @@ ref reflectInterfaceType( bindingInfo.flavor = ParameterBlockReflection::ResourceRangeBindingInfo::Flavor::Interface; - if (auto pSlangPendingTypeLayout = pSlangType->getPendingDataTypeLayout()) - { - ReflectionPath subPath; - subPath.pPrimary = pPath->pDeferred; - subPath.pDeferred = nullptr; - - auto pPendingBlock = ParameterBlockReflection::createEmpty(pProgramVersion); - auto pPendingType = reflectType(pSlangPendingTypeLayout, pPendingBlock.get(), &subPath, pProgramVersion); - pPendingBlock->setElementType(pPendingType); - - // TODO: What to do if `pPendingType->getByteSize()` is non-zero? - - pPendingBlock->finalize(); - - pType->setParameterBlockReflector(pPendingBlock); - - bindingInfo.pSubObjectReflector = pPendingBlock; - - category = slang::ParameterCategory::Uniform; - bindingInfo.regIndex = (uint32_t)getRegisterIndexFromPath(pPath->pDeferred, SlangParameterCategory(category)); - bindingInfo.regSpace = getRegisterSpaceFromPath(pPath->pPrimary, SlangParameterCategory(category)); - } - if (pBlock) { pBlock->addResourceRange(bindingInfo); @@ -996,7 +966,7 @@ ref reflectSpecializedType( { auto pSlangBaseType = pSlangType->getElementTypeLayout(); - auto pSlangVarLayout = pSlangType->getSpecializedTypePendingDataVarLayout(); + auto pSlangVarLayout = pSlangType->getElementVarLayout(); ReflectionPathLink deferredLink; deferredLink.pParent = pPath->pPrimary; diff --git a/dependencies.xml b/dependencies.xml index 4261c9e08..09296295e 100644 --- a/dependencies.xml +++ b/dependencies.xml @@ -1,18 +1,18 @@ - - + + - + @@ -24,7 +24,7 @@ - +