From 68a77a852cd911a44a97733aec870e9bd93a3b86 Mon Sep 17 00:00:00 2001 From: "Li, Xun" Date: Wed, 15 Jun 2022 08:48:53 +0800 Subject: [PATCH] Intel(R) SGX DCAP 1.14 Release Re-signed all the Intel SGX Architecture Enclaves (AEs) to address CVE-2022-21123, CVE-2022-21125 and CVE-2022-21166. Added Intel TDX Attestation support. Added Rust support for ECDSA quote verification. Upgraded Intel ECDSA Quote Verification Enclave to integrate SgxSSL/OpenSSL version 1.1.1o. Fixed bugs. Signed-off-by: Li, Xun --- QuoteGeneration/Makefile | 73 +- QuoteGeneration/README.md | 40 +- .../common/inc/internal/se_trace.h | 2 +- .../common/inc/internal/se_version.h | 23 +- QuoteGeneration/download_prebuilt.bat | 8 +- QuoteGeneration/download_prebuilt.sh | 6 +- .../BOMs/libsgx-ae-tdqe-package.txt | 3 + .../libsgx-ae-tdqe/BOMs/libsgx-ae-tdqe.txt | 2 + .../linux/common/libsgx-ae-tdqe/Makefile | 45 + .../common/libsgx-ae-tdqe/createTarball.sh | 62 + .../linux/common/libsgx-ae-tdqe/installConfig | 6 + .../linux/common/libsgx-pce-logic/Makefile | 6 + .../common/libsgx-pce-logic/createTarball.sh | 2 + .../BOMs/libsgx-tdx-logic-dev.txt | 2 + .../BOMs/libsgx-tdx-logic-package.txt | 3 + .../BOMs/libsgx-tdx-logic.txt | 3 + .../linux/common/libsgx-tdx-logic/Makefile | 59 + .../common/libsgx-tdx-logic/createTarball.sh | 63 + .../common/libsgx-tdx-logic/installConfig | 7 + .../libtdx-attest/BOMs/libtdx-attest-dev.txt | 4 + .../BOMs/libtdx-attest-package.txt | 3 + .../libtdx-attest/BOMs/libtdx-attest.txt | 2 + .../linux/common/libtdx-attest/Makefile | 62 + .../common/libtdx-attest/createTarball.sh | 65 + .../linux/common/libtdx-attest/installConfig | 9 + .../sgx-dcap-pccs/BOMs/sgx-dcap-pccs.txt | 3 + .../linux/common/sgx-dcap-pccs/Makefile | 15 + .../common/tdx-qgs/BOMs/tdx-qgs-package.txt | 3 + .../linux/common/tdx-qgs/BOMs/tdx-qgs.txt | 8 + .../installer/linux/common/tdx-qgs/Makefile | 73 + .../installer/linux/common/tdx-qgs/cleanup.sh | 55 + .../linux/common/tdx-qgs/createTarball.sh | 59 + .../linux/common/tdx-qgs/installConfig | 7 + .../installer/linux/common/tdx-qgs/linksgx.sh | 63 + .../installer/linux/common/tdx-qgs/startup.sh | 57 + .../linux/deb/libsgx-ae-tdqe/build.sh | 116 + .../linux/deb/libsgx-ae-tdqe/clean.sh | 47 + .../libsgx-ae-tdqe-1.0/debian/changelog | 5 + .../libsgx-ae-tdqe-1.0/debian/compat | 1 + .../libsgx-ae-tdqe-1.0/debian/control | 11 + .../libsgx-ae-tdqe-1.0/debian/docs | 0 .../libsgx-ae-tdqe-1.0/debian/rules | 8 + .../libsgx-ae-tdqe-1.0/debian/source/format | 1 + .../linux/deb/libsgx-dcap-ql/build.sh | 4 +- .../libsgx-dcap-ql-1.0/debian/control | 4 +- .../libsgx-dcap-ql-1.0/debian/rules | 3 + .../debian/control | 2 +- .../libsgx-pce-logic-1.0/debian/control | 2 +- .../libsgx-qe3-logic-1.0/debian/control | 2 +- .../linux/deb/libsgx-tdx-logic/build.sh | 125 + .../linux/deb/libsgx-tdx-logic/clean.sh | 47 + .../libsgx-tdx-logic-1.0/debian/changelog | 5 + .../libsgx-tdx-logic-1.0/debian/compat | 1 + .../libsgx-tdx-logic-1.0/debian/control | 18 + .../libsgx-tdx-logic-1.0/debian/docs | 0 .../libsgx-tdx-logic-1.0/debian/rules | 11 + .../libsgx-tdx-logic-1.0/debian/source/format | 1 + .../linux/deb/libtdx-attest/build.sh | 124 + .../linux/deb/libtdx-attest/clean.sh | 47 + .../libtdx-attest-1.0/debian/changelog | 5 + .../libtdx-attest-1.0/debian/compat | 1 + .../libtdx-attest-1.0/debian/control | 18 + .../libtdx-attest-1.0/debian/docs | 0 .../libtdx-attest-1.0/debian/rules | 8 + .../libtdx-attest-1.0/debian/source/format | 1 + .../linux/deb/sgx-dcap-pccs/build.sh | 3 +- .../sgx-dcap-pccs-1.0/debian/postinst | 42 +- .../sgx-dcap-pccs-1.0/debian/postrm | 67 - .../sgx-dcap-pccs-1.0/debian/prerm | 41 + .../installer/linux/deb/tdx-qgs/build.sh | 129 + .../installer/linux/deb/tdx-qgs/clean.sh | 47 + .../deb/tdx-qgs/tdx-qgs-1.0/debian/changelog | 5 + .../deb/tdx-qgs/tdx-qgs-1.0/debian/compat | 1 + .../deb/tdx-qgs/tdx-qgs-1.0/debian/control | 12 + .../linux/deb/tdx-qgs/tdx-qgs-1.0/debian/docs | 0 .../deb/tdx-qgs/tdx-qgs-1.0/debian/postinst | 42 + .../deb/tdx-qgs/tdx-qgs-1.0/debian/prerm | 41 + .../deb/tdx-qgs/tdx-qgs-1.0/debian/rules | 11 + .../tdx-qgs/tdx-qgs-1.0/debian/source/format | 1 + .../linux/rpm/libsgx-ae-tdqe/build.sh | 88 + .../linux/rpm/libsgx-ae-tdqe/clean.sh | 41 + .../rpm/libsgx-ae-tdqe/libsgx-ae-tdqe.spec | 66 + .../rpm/libsgx-dcap-ql/libsgx-dcap-ql.spec | 4 +- .../libsgx-dcap-quote-verify.spec | 4 +- .../libsgx-pce-logic/libsgx-pce-logic.spec | 2 +- .../libsgx-qe3-logic/libsgx-qe3-logic.spec | 2 +- .../linux/rpm/libsgx-tdx-logic/build.sh | 88 + .../linux/rpm/libsgx-tdx-logic/clean.sh | 41 + .../libsgx-tdx-logic/libsgx-tdx-logic.spec | 84 + .../linux/rpm/libtdx-attest/build.sh | 94 + .../linux/rpm/libtdx-attest/clean.sh | 41 + .../rpm/libtdx-attest/libtdx-attest.spec | 84 + .../rpm/sgx-dcap-pccs/sgx-dcap-pccs.spec | 95 +- .../installer/linux/rpm/tdx-qgs/build.sh | 95 + .../installer/linux/rpm/tdx-qgs/clean.sh | 41 + .../installer/linux/rpm/tdx-qgs/tdx-qgs.spec | 72 + .../installer/win/DCAP_Components.bat | 2 +- .../DCAP_Components/DCAP_Components.nuspec | 4 +- .../installer/win/Dcap/dcap_copy_file.bat | 1 + .../installer/win/Dcap/dcap_generate.bat | 2 +- .../installer/win/Dcap/sgx_dcap_default.inf | 2 + .../win/Dcap/sgx_dcap_dev_default.inf | 2 + QuoteGeneration/pccs/cleanup.sh | 3 +- QuoteGeneration/pccs/config/test.json | 2 +- QuoteGeneration/pccs/constants/index.js | 6 +- QuoteGeneration/pccs/container/Dockerfile | 4 +- .../pccs/controllers/identityController.js | 8 +- .../platformCollateralController.js | 4 +- .../pccs/controllers/rootcacrlController.js | 2 +- .../pccs/controllers/tcbinfoController.js | 12 +- .../pccs/dao/enclaveIdentityDao.js | 9 +- QuoteGeneration/pccs/dao/fmspcTcbDao.js | 9 +- .../pccs/dao/models/enclave_identities.js | 1 + QuoteGeneration/pccs/dao/models/fmspc_tcbs.js | 1 + QuoteGeneration/pccs/install.bat | 2 +- QuoteGeneration/pccs/middleware/auth.js | 18 +- .../pccs/migrations/03_db_version_3.js | 87 + QuoteGeneration/pccs/package.json | 8 +- QuoteGeneration/pccs/pccs_server.js | 58 +- QuoteGeneration/pccs/pcs_client/pcs_client.js | 33 +- QuoteGeneration/pccs/routes/index.js | 7 +- .../services/caching_modes/cachingMode.js | 12 +- .../caching_modes/cachingModeManager.js | 8 +- .../pccs/services/identityService.js | 7 +- .../pccs/services/logic/commonCacheLogic.js | 68 +- .../pccs/services/logic/qvCollateralLogic.js | 53 +- QuoteGeneration/pccs/services/pccs_schemas.js | 440 ++- .../pccs/services/pckcertService.js | 2 +- .../services/platformCollateralService.js | 57 +- .../pccs/services/refreshService.js | 84 +- .../pccs/services/tcbinfoService.js | 10 +- QuoteGeneration/pccs/startup.sh | 14 +- QuoteGeneration/pccs/utils/apputil.js | 37 +- QuoteGeneration/pce_wrapper/linux/Makefile | 8 +- .../psw/ae/data/prebuilt/README.md | 11 +- QuoteGeneration/qcnl/inc/network_wrapper.h | 2 +- QuoteGeneration/qcnl/inc/qcnl_config.h | 9 +- .../qcnl/inc/qv_collateral_provider.h | 12 +- .../qcnl/inc/sgx_default_qcnl_wrapper.h | 15 +- .../qcnl/linux/network_wrapper.cpp | 75 +- .../qcnl/linux/qcnl_config_impl.cpp | 6 +- .../qcnl/linux/sgx_default_qcnl.lds | 2 + QuoteGeneration/qcnl/qcnl_config.cpp | 10 +- QuoteGeneration/qcnl/qcnl_util.cpp | 4 + .../qcnl/qv_collateral_provider.cpp | 33 +- .../qcnl/sgx_default_qcnl_wrapper.cpp | 93 +- QuoteGeneration/qcnl/win/qcnl_wrapper.def | 4 +- .../qpl/inc/sgx_default_quote_provider.h | 7 +- .../qpl/linux/sgx_default_quote_provider.lds | 2 + QuoteGeneration/qpl/linux/x509.cpp | 1 + QuoteGeneration/qpl/qpl_api.txt | 74 +- .../qpl/sgx_default_quote_provider.cpp | 109 +- QuoteGeneration/qpl/win/qpl.def | 2 + .../{quote => common}/inc/ecdsa_quote.h | 16 +- .../common/inc/sgx_ql_lib_common.h | 23 +- .../quote_wrapper/common/inc/sgx_quote_3.h | 4 +- .../quote_wrapper/common/inc/sgx_quote_4.h | 156 + .../quote_wrapper/common/inc/user_types.h | 15 +- QuoteGeneration/quote_wrapper/qgs/Makefile | 86 + QuoteGeneration/quote_wrapper/qgs/qgs.conf | 2 + .../quote_wrapper/qgs/qgs.message.proto | 33 + QuoteGeneration/quote_wrapper/qgs/qgs_log.cpp | 106 + QuoteGeneration/quote_wrapper/qgs/qgs_log.h | 70 + .../quote_wrapper/qgs/qgs_msg_wrapper.h | 102 + .../quote_wrapper/qgs/qgs_server.cpp | 312 ++ .../quote_wrapper/qgs/qgs_server.h | 59 + QuoteGeneration/quote_wrapper/qgs/qgsd.conf | 26 + .../quote_wrapper/qgs/qgsd.service | 27 + .../quote_wrapper/qgs/server_main.cpp | 192 ++ .../quote/enclave/linux/Makefile | 1 - .../quote/enclave/linux/config.xml | 2 +- .../quote/enclave/quoting_enclave_3.cpp | 120 +- .../quote/enclave/win/config.xml | 2 +- .../quote/id_enclave/linux/config.xml | 2 +- .../quote/id_enclave/win/config.xml | 12 + .../quote/id_enclave/win/id_enclave.rc | Bin 0 -> 4618 bytes .../quote/id_enclave/win/id_enclave.vcxproj | 391 +++ .../id_enclave/win/id_enclave.vcxproj.filters | 30 + .../quote/id_enclave/win/resource.h | 15 + .../quote/id_enclave/win/targetver.h | 8 + .../quote_wrapper/quote/qe_logic.cpp | 71 +- .../quote/win/qe3_core_wrapper_static.vcxproj | 17 +- .../qe3_core_wrapper_static.vcxproj.filters | 11 + .../quote_wrapper/tdx_attest/Makefile.sample | 42 + .../quote_wrapper/tdx_attest/linux/Makefile | 85 + .../tdx_attest/linux/tdx_attest.lds | 10 + .../quote_wrapper/tdx_attest/tdx_attest.c | 494 ++++ .../quote_wrapper/tdx_attest/tdx_attest.h | 256 ++ .../tdx_attest/test_tdx_attest.c | 112 + .../tdx_quote/enclave/linux/Makefile | 89 + .../tdx_quote/enclave/linux/config.xml | 13 + .../tdx_quote/enclave/linux/enclave.lds | 10 + .../enclave/quoting_enclave_tdqe.cpp | 1649 +++++++++++ .../tdx_quote/enclave/quoting_enclave_tdqe.h | 114 + .../quote_wrapper/tdx_quote/enclave/tdqe.edl | 79 + .../tdx_quote/enclave/win/config.xml | 14 + .../tdx_quote/enclave/win/config_debug.xml | 14 + .../tdx_quote/enclave/win/resource.h | 15 + .../tdx_quote/enclave/win/targetver.h | 8 + .../tdx_quote/enclave/win/tdqe.filters | 35 + .../tdx_quote/enclave/win/tdqe.rc | Bin 0 -> 4598 bytes .../tdx_quote/enclave/win/tdqe.vcxproj | 393 +++ .../quote_wrapper/tdx_quote/linux/Makefile | 130 + .../tdx_quote/linux/td_ql_logic.lds | 12 + .../quote_wrapper/tdx_quote/td_ql_logic.cpp | 2497 +++++++++++++++++ .../quote_wrapper/tdx_quote/td_ql_logic.h | 64 + .../quote_wrapper/tdx_quote/win/dllmain.cpp | 22 + .../quote_wrapper/tdx_quote/win/framework.h | 5 + .../quote_wrapper/tdx_quote/win/resource.h | 15 + .../quote_wrapper/tdx_quote/win/tdx_logic.def | 9 + .../quote_wrapper/tdx_quote/win/tdx_logic.rc | Bin 0 -> 4680 bytes .../tdx_quote/win/tdx_logic.vcxproj | 256 ++ .../tdx_quote/win/tdx_logic.vcxproj.filters | 64 + .../src/Verifiers/QuoteVerifier.cpp | 21 +- .../test/IntegrationTests/VerifyQuoteIT.cpp | 11 +- .../test/UnitTests/QuoteV4VerifierUT.cpp | 34 +- QuoteVerification/QVL/Src/CMakeLists.txt | 6 +- .../AttestationLibrary.vcxproj | 7 +- .../AttestationParsers.vcxproj | 7 +- .../QvE/Enclave/linux/config.xml | 2 +- QuoteVerification/QvE/Enclave/qve.vcxproj | 7 +- QuoteVerification/QvE/Enclave/win/config.xml | 4 +- .../AttestationLibrary_untrusted.vcxproj | 5 +- .../AttestationParsers_untrusted.vcxproj | 5 +- .../inc/sgx_dcap_qv_internal.h | 2 +- .../sgx-dcap-quoteverify-rs/.gitignore | 2 + .../sgx-dcap-quoteverify-rs/Cargo.toml | 9 + .../sgx-dcap-quoteverify-rs/src/lib.rs | 302 ++ .../sgx-dcap-quoteverify-sys/.gitignore | 2 + .../sgx-dcap-quoteverify-sys/Cargo.toml | 12 + .../sgx-dcap-quoteverify-sys/bindings.h | 32 + .../sgx-dcap-quoteverify-sys/build.rs | 89 + .../sgx-dcap-quoteverify-sys/src/lib.rs | 52 + QuoteVerification/dcap_tvl/sgx_dcap_tvl.cpp | 23 +- QuoteVerification/dcap_tvl/sgx_dcap_tvl.edl | 4 +- QuoteVerification/dcap_tvl/sgx_dcap_tvl.h | 4 +- QuoteVerification/prepare_sgxssl.cmd | 10 +- QuoteVerification/prepare_sgxssl.sh | 8 +- SGX_DCAP.sln | 62 + SampleCode/QuoteGenerationSample/Makefile | 9 +- SampleCode/QuoteGenerationSample/README.md | 10 +- .../QuoteVerificationSample/App/App.cpp | 27 +- SampleCode/QuoteVerificationSample/README.md | 2 +- .../RustQuoteVerificationSample/.gitignore | 2 + .../RustQuoteVerificationSample/Cargo.toml | 11 + .../RustQuoteVerificationSample/README.md | 72 + .../RustQuoteVerificationSample/build.rs | 34 + .../RustQuoteVerificationSample/src/main.rs | 342 +++ .../TDQuoteVerificationSample/App/App.cpp | 409 +++ .../Enclave/Enclave.config.xml | 12 + .../Enclave/Enclave.cpp | 41 + .../Enclave/Enclave.edl | 52 + .../Enclave/Enclave.lds | 10 + .../Enclave/Enclave_private_sample.pem | 39 + SampleCode/TDQuoteVerificationSample/Makefile | 267 ++ .../TDQuoteVerificationSample/README.md | 44 + driver/win/FLCMSR/FLCMSR.vcxproj | 2 + driver/win/WinLe/WinLe.vcxproj | 2 + .../win/WinLeProxyUMDF/WinLeProxyUMDF.vcxproj | 2 + prebuilt/openssl/inc/openssl/engine.h | 3 +- prebuilt/openssl/inc/openssl/obj_mac.h | 2 +- prebuilt/openssl/inc/openssl/opensslconf.h | 14 +- prebuilt/openssl/inc/openssl/opensslv.h | 6 +- prebuilt/openssl/lib/linux64/libcrypto.a | Bin 4538086 -> 4538630 bytes prebuilt/openssl/lib/win64/libcrypto.lib | Bin 15684816 -> 15472092 bytes .../PCKSelectionSample/main.cpp | 37 +- .../SampleData/{pck0.pem => pck0_sample.pem} | 0 .../SampleData/{pck1.pem => pck1_sample.pem} | 0 .../SampleData/{pck2.pem => pck2_sample.pem} | 0 .../SampleData/pck3_sample.pem | 27 + .../SampleData/pck4_sample.pem | 27 + .../SampleData/pck5_sample.pem | 27 + .../SampleData/pck6_sample.pem | 27 + .../PCKCertSelection/SampleData/tcb_info.json | 279 +- .../SampleData/tcb_info_4.json | 1270 +++++++++ .../App/linux/network_wrapper.cpp | 2 +- tools/PCKRetrievalTool/App/utility.cpp | 30 +- .../App/win/network_wrapper.cpp | 2 +- tools/PCKRetrievalTool/README.build | 2 - .../ThirdPartyLicenseIndex.txt | 971 +++++++ .../debian/control | 2 +- .../sgx-pck-id-retrieval-tool.spec | 2 +- tools/PCKRetrievalTool/network_setting.conf | 4 +- tools/PccsAdminTool/License.txt | 77 + tools/PccsAdminTool/lib/intelsgx/pcs.py | 7 +- tools/PccsAdminTool/pccsadmin.py | 42 +- .../SGXPlatformRegistration/inf/inf_build.cmd | 2 +- 287 files changed, 16855 insertions(+), 998 deletions(-) create mode 100644 QuoteGeneration/installer/linux/common/libsgx-ae-tdqe/BOMs/libsgx-ae-tdqe-package.txt create mode 100644 QuoteGeneration/installer/linux/common/libsgx-ae-tdqe/BOMs/libsgx-ae-tdqe.txt create mode 100644 QuoteGeneration/installer/linux/common/libsgx-ae-tdqe/Makefile create mode 100755 QuoteGeneration/installer/linux/common/libsgx-ae-tdqe/createTarball.sh create mode 100644 QuoteGeneration/installer/linux/common/libsgx-ae-tdqe/installConfig create mode 100644 QuoteGeneration/installer/linux/common/libsgx-tdx-logic/BOMs/libsgx-tdx-logic-dev.txt create mode 100644 QuoteGeneration/installer/linux/common/libsgx-tdx-logic/BOMs/libsgx-tdx-logic-package.txt create mode 100644 QuoteGeneration/installer/linux/common/libsgx-tdx-logic/BOMs/libsgx-tdx-logic.txt create mode 100644 QuoteGeneration/installer/linux/common/libsgx-tdx-logic/Makefile create mode 100755 QuoteGeneration/installer/linux/common/libsgx-tdx-logic/createTarball.sh create mode 100644 QuoteGeneration/installer/linux/common/libsgx-tdx-logic/installConfig create mode 100644 QuoteGeneration/installer/linux/common/libtdx-attest/BOMs/libtdx-attest-dev.txt create mode 100644 QuoteGeneration/installer/linux/common/libtdx-attest/BOMs/libtdx-attest-package.txt create mode 100644 QuoteGeneration/installer/linux/common/libtdx-attest/BOMs/libtdx-attest.txt create mode 100644 QuoteGeneration/installer/linux/common/libtdx-attest/Makefile create mode 100755 QuoteGeneration/installer/linux/common/libtdx-attest/createTarball.sh create mode 100644 QuoteGeneration/installer/linux/common/libtdx-attest/installConfig create mode 100644 QuoteGeneration/installer/linux/common/tdx-qgs/BOMs/tdx-qgs-package.txt create mode 100644 QuoteGeneration/installer/linux/common/tdx-qgs/BOMs/tdx-qgs.txt create mode 100644 QuoteGeneration/installer/linux/common/tdx-qgs/Makefile create mode 100755 QuoteGeneration/installer/linux/common/tdx-qgs/cleanup.sh create mode 100755 QuoteGeneration/installer/linux/common/tdx-qgs/createTarball.sh create mode 100644 QuoteGeneration/installer/linux/common/tdx-qgs/installConfig create mode 100755 QuoteGeneration/installer/linux/common/tdx-qgs/linksgx.sh create mode 100755 QuoteGeneration/installer/linux/common/tdx-qgs/startup.sh create mode 100755 QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/build.sh create mode 100755 QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/clean.sh create mode 100644 QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/changelog create mode 100644 QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/compat create mode 100644 QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/control create mode 100644 QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/docs create mode 100755 QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/rules create mode 100644 QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/source/format create mode 100755 QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/build.sh create mode 100755 QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/clean.sh create mode 100644 QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/changelog create mode 100644 QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/compat create mode 100644 QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/control create mode 100644 QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/docs create mode 100755 QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/rules create mode 100644 QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/source/format create mode 100755 QuoteGeneration/installer/linux/deb/libtdx-attest/build.sh create mode 100755 QuoteGeneration/installer/linux/deb/libtdx-attest/clean.sh create mode 100644 QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/changelog create mode 100644 QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/compat create mode 100644 QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/control create mode 100644 QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/docs create mode 100755 QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/rules create mode 100644 QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/source/format delete mode 100755 QuoteGeneration/installer/linux/deb/sgx-dcap-pccs/sgx-dcap-pccs-1.0/debian/postrm create mode 100755 QuoteGeneration/installer/linux/deb/sgx-dcap-pccs/sgx-dcap-pccs-1.0/debian/prerm create mode 100755 QuoteGeneration/installer/linux/deb/tdx-qgs/build.sh create mode 100755 QuoteGeneration/installer/linux/deb/tdx-qgs/clean.sh create mode 100644 QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/changelog create mode 100644 QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/compat create mode 100644 QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/control create mode 100644 QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/docs create mode 100644 QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/postinst create mode 100644 QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/prerm create mode 100755 QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/rules create mode 100644 QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/source/format create mode 100755 QuoteGeneration/installer/linux/rpm/libsgx-ae-tdqe/build.sh create mode 100755 QuoteGeneration/installer/linux/rpm/libsgx-ae-tdqe/clean.sh create mode 100644 QuoteGeneration/installer/linux/rpm/libsgx-ae-tdqe/libsgx-ae-tdqe.spec create mode 100755 QuoteGeneration/installer/linux/rpm/libsgx-tdx-logic/build.sh create mode 100755 QuoteGeneration/installer/linux/rpm/libsgx-tdx-logic/clean.sh create mode 100644 QuoteGeneration/installer/linux/rpm/libsgx-tdx-logic/libsgx-tdx-logic.spec create mode 100755 QuoteGeneration/installer/linux/rpm/libtdx-attest/build.sh create mode 100755 QuoteGeneration/installer/linux/rpm/libtdx-attest/clean.sh create mode 100644 QuoteGeneration/installer/linux/rpm/libtdx-attest/libtdx-attest.spec create mode 100755 QuoteGeneration/installer/linux/rpm/tdx-qgs/build.sh create mode 100755 QuoteGeneration/installer/linux/rpm/tdx-qgs/clean.sh create mode 100644 QuoteGeneration/installer/linux/rpm/tdx-qgs/tdx-qgs.spec create mode 100644 QuoteGeneration/pccs/migrations/03_db_version_3.js rename QuoteGeneration/quote_wrapper/{quote => common}/inc/ecdsa_quote.h (88%) create mode 100644 QuoteGeneration/quote_wrapper/common/inc/sgx_quote_4.h create mode 100644 QuoteGeneration/quote_wrapper/qgs/Makefile create mode 100644 QuoteGeneration/quote_wrapper/qgs/qgs.conf create mode 100644 QuoteGeneration/quote_wrapper/qgs/qgs.message.proto create mode 100644 QuoteGeneration/quote_wrapper/qgs/qgs_log.cpp create mode 100644 QuoteGeneration/quote_wrapper/qgs/qgs_log.h create mode 100644 QuoteGeneration/quote_wrapper/qgs/qgs_msg_wrapper.h create mode 100644 QuoteGeneration/quote_wrapper/qgs/qgs_server.cpp create mode 100644 QuoteGeneration/quote_wrapper/qgs/qgs_server.h create mode 100644 QuoteGeneration/quote_wrapper/qgs/qgsd.conf create mode 100644 QuoteGeneration/quote_wrapper/qgs/qgsd.service create mode 100644 QuoteGeneration/quote_wrapper/qgs/server_main.cpp create mode 100644 QuoteGeneration/quote_wrapper/quote/id_enclave/win/config.xml create mode 100644 QuoteGeneration/quote_wrapper/quote/id_enclave/win/id_enclave.rc create mode 100644 QuoteGeneration/quote_wrapper/quote/id_enclave/win/id_enclave.vcxproj create mode 100644 QuoteGeneration/quote_wrapper/quote/id_enclave/win/id_enclave.vcxproj.filters create mode 100644 QuoteGeneration/quote_wrapper/quote/id_enclave/win/resource.h create mode 100644 QuoteGeneration/quote_wrapper/quote/id_enclave/win/targetver.h create mode 100644 QuoteGeneration/quote_wrapper/tdx_attest/Makefile.sample create mode 100644 QuoteGeneration/quote_wrapper/tdx_attest/linux/Makefile create mode 100644 QuoteGeneration/quote_wrapper/tdx_attest/linux/tdx_attest.lds create mode 100644 QuoteGeneration/quote_wrapper/tdx_attest/tdx_attest.c create mode 100644 QuoteGeneration/quote_wrapper/tdx_attest/tdx_attest.h create mode 100644 QuoteGeneration/quote_wrapper/tdx_attest/test_tdx_attest.c create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/enclave/linux/Makefile create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/enclave/linux/config.xml create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/enclave/linux/enclave.lds create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/enclave/quoting_enclave_tdqe.cpp create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/enclave/quoting_enclave_tdqe.h create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/enclave/tdqe.edl create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/config.xml create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/config_debug.xml create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/resource.h create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/targetver.h create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/tdqe.filters create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/tdqe.rc create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/tdqe.vcxproj create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/linux/Makefile create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/linux/td_ql_logic.lds create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/td_ql_logic.cpp create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/td_ql_logic.h create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/win/dllmain.cpp create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/win/framework.h create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/win/resource.h create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/win/tdx_logic.def create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/win/tdx_logic.rc create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/win/tdx_logic.vcxproj create mode 100644 QuoteGeneration/quote_wrapper/tdx_quote/win/tdx_logic.vcxproj.filters create mode 100644 QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-rs/.gitignore create mode 100644 QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-rs/Cargo.toml create mode 100644 QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-rs/src/lib.rs create mode 100644 QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-sys/.gitignore create mode 100644 QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-sys/Cargo.toml create mode 100644 QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-sys/bindings.h create mode 100644 QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-sys/build.rs create mode 100644 QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-sys/src/lib.rs create mode 100644 SampleCode/RustQuoteVerificationSample/.gitignore create mode 100644 SampleCode/RustQuoteVerificationSample/Cargo.toml create mode 100644 SampleCode/RustQuoteVerificationSample/README.md create mode 100644 SampleCode/RustQuoteVerificationSample/build.rs create mode 100644 SampleCode/RustQuoteVerificationSample/src/main.rs create mode 100644 SampleCode/TDQuoteVerificationSample/App/App.cpp create mode 100644 SampleCode/TDQuoteVerificationSample/Enclave/Enclave.config.xml create mode 100644 SampleCode/TDQuoteVerificationSample/Enclave/Enclave.cpp create mode 100644 SampleCode/TDQuoteVerificationSample/Enclave/Enclave.edl create mode 100644 SampleCode/TDQuoteVerificationSample/Enclave/Enclave.lds create mode 100644 SampleCode/TDQuoteVerificationSample/Enclave/Enclave_private_sample.pem create mode 100644 SampleCode/TDQuoteVerificationSample/Makefile create mode 100644 SampleCode/TDQuoteVerificationSample/README.md rename tools/PCKCertSelection/SampleData/{pck0.pem => pck0_sample.pem} (100%) rename tools/PCKCertSelection/SampleData/{pck1.pem => pck1_sample.pem} (100%) rename tools/PCKCertSelection/SampleData/{pck2.pem => pck2_sample.pem} (100%) create mode 100644 tools/PCKCertSelection/SampleData/pck3_sample.pem create mode 100644 tools/PCKCertSelection/SampleData/pck4_sample.pem create mode 100644 tools/PCKCertSelection/SampleData/pck5_sample.pem create mode 100644 tools/PCKCertSelection/SampleData/pck6_sample.pem create mode 100644 tools/PCKCertSelection/SampleData/tcb_info_4.json create mode 100644 tools/PCKRetrievalTool/ThirdPartyLicenseIndex.txt create mode 100644 tools/PccsAdminTool/License.txt diff --git a/QuoteGeneration/Makefile b/QuoteGeneration/Makefile index 0ac78d29..c55c3619 100644 --- a/QuoteGeneration/Makefile +++ b/QuoteGeneration/Makefile @@ -31,17 +31,28 @@ CUR_MKFILE:= $(lastword $(MAKEFILE_LIST)) -.PHONY: all dcap opt_check_failed clean rebuild pce_logic qe3_logic qcnl_wrapper qpl_wrapper qve_wrapper +.PHONY: all dcap opt_check_failed clean rebuild pce_logic tdx_logic tdx_qgs tdx_attest qe3_logic qcnl_wrapper qpl_wrapper qve_wrapper all: dcap +#-------------------------------------------------------------------------------------- +# Function: get_distr_info +# Arguments: 1: the grep keyword to be searched from /etc/os-release +# Returns: Return the value for the Linux distribution info corresponding to the keyword +#--------------------------------------------------------------------------------------- +get_distr_info = $(patsubst "%",%,$(shell grep $(1) /etc/os-release 2> /dev/null | awk -F'=' '{print $$2}')) + +DISTR_ID := $(call get_distr_info, '^ID=') +DISTR_VER := $(call get_distr_info, '^VERSION_ID=') + + # DCAP requires prebuilt enclaves. CHECK_OPT := ifeq ("$(wildcard psw/ae/data/prebuilt)", "") CHECK_OPT := opt_check_failed endif -dcap: $(CHECK_OPT) pce_logic qe3_logic qcnl_wrapper qpl_wrapper qve_wrapper +dcap: tdx_logic tdx_qgs tdx_attest $(CHECK_OPT) pce_logic qe3_logic qcnl_wrapper qpl_wrapper qve_wrapper tdx_qe id_enclave opt_check_failed: @echo "Please run download_prebuilt.sh before compiling" @@ -50,6 +61,8 @@ opt_check_failed: pce_logic: $(MAKE) -C pce_wrapper/linux +id_enclave: + $(MAKE) -C quote_wrapper/quote/id_enclave/linux qe3_logic: pce_logic $(MAKE) -C quote_wrapper/ql/linux @@ -95,6 +108,35 @@ deb_sgx_ae_id_enclave_pkg: $(CHECK_OPT) deb_sgx_ae_qve_pkg: $(CHECK_OPT) ./installer/linux/deb/libsgx-ae-qve/build.sh +.PHONY: deb_sgx_ae_tdqe_pkg deb_sgx_tdx_logic_pkg deb_sgx_tdx_qgs_pkg deb_sgx_tdx_attest_pkg +ifeq ($(DISTR_ID)$(DISTR_VER),ubuntu18.04) +tdx_qe deb_sgx_ae_tdqe_pkg: + echo "Skip tdqe in ubuntu 18.04" +tdx_logic deb_sgx_tdx_logic_pkg: + echo "Skip tdx_logic in ubuntu 18.04" +tdx_qgs deb_sgx_tdx_qgs_pkg: + echo "Skip tdx_qgs in ubuntu 18.04" +tdx_attest deb_sgx_tdx_attest_pkg: + echo "Skip tdx_attest in ubuntu 18.04" +else +tdx_qe: + $(MAKE) -C quote_wrapper/tdx_quote/enclave/linux +tdx_logic: pce_logic + $(MAKE) -C quote_wrapper/tdx_quote/linux +tdx_qgs: tdx_logic + $(MAKE) -C quote_wrapper/qgs +tdx_attest: + $(MAKE) -C quote_wrapper/tdx_attest/linux +deb_sgx_ae_tdqe_pkg: $(CHECK_OPT) + ./installer/linux/deb/libsgx-ae-tdqe/build.sh +deb_sgx_tdx_logic_pkg: tdx_logic + ./installer/linux/deb/libsgx-tdx-logic/build.sh +deb_sgx_tdx_qgs_pkg: tdx_qgs + ./installer/linux/deb/tdx-qgs/build.sh +deb_sgx_tdx_attest_pkg: tdx_attest + ./installer/linux/deb/libtdx-attest/build.sh +endif + .PHONY: deb_sgx_qe3_logic_pkg deb_sgx_qe3_logic_pkg: qe3_logic ./installer/linux/deb/libsgx-qe3-logic/build.sh @@ -114,7 +156,7 @@ deb_sgx_ra_service_pkg: .PHONY: deb_pkg -deb_pkg: deb_sgx_pce_logic_pkg deb_sgx_qe3_logic_pkg deb_sgx_dcap_ql_pkg deb_sgx_dcap_quote_verify_pkg deb_sgx_dcap_default_qpl_pkg deb_sgx_dcap_pccs_pkg deb_sgx_ae_qe3_pkg deb_sgx_ae_id_enclave_pkg deb_sgx_ae_qve_pkg deb_sgx_pck_id_retrieval_tool_pkg deb_sgx_ra_service_pkg +deb_pkg: deb_sgx_pce_logic_pkg deb_sgx_qe3_logic_pkg deb_sgx_dcap_ql_pkg deb_sgx_dcap_quote_verify_pkg deb_sgx_dcap_default_qpl_pkg deb_sgx_dcap_pccs_pkg deb_sgx_ae_qe3_pkg deb_sgx_ae_tdqe_pkg deb_sgx_ae_id_enclave_pkg deb_sgx_ae_qve_pkg deb_sgx_tdx_logic_pkg deb_sgx_tdx_qgs_pkg deb_sgx_tdx_attest_pkg deb_sgx_pck_id_retrieval_tool_pkg deb_sgx_ra_service_pkg @$(RM) -f ./installer/linux/deb/*.deb ./installer/linux/deb/*.ddeb cp `find ./installer/linux/deb/ -name "*.deb" -o -name "*.ddeb"` ./installer/linux/deb/ cp `find ../tools/PCKRetrievalTool/installer/deb/ -name "*.deb" -o -name "*.ddeb"` ./installer/linux/deb/ @@ -139,6 +181,9 @@ rpm_sgx_dcap_pccs_pkg: rpm_sgx_ae_qe3_pkg: $(CHECK_OPT) ./installer/linux/rpm/libsgx-ae-qe3/build.sh +.PHONY: rpm_sgx_ae_tdqe_pkg +rpm_sgx_ae_tdqe_pkg: $(CHECK_OPT) + ./installer/linux/rpm/libsgx-ae-tdqe/build.sh .PHONY: rpm_sgx_ae_id_enclave_pkg rpm_sgx_ae_id_enclave_pkg: $(CHECK_OPT) ./installer/linux/rpm/libsgx-ae-id-enclave/build.sh @@ -146,6 +191,15 @@ rpm_sgx_ae_id_enclave_pkg: $(CHECK_OPT) .PHONY: rpm_sgx_ae_qve_pkg rpm_sgx_ae_qve_pkg: $(CHECK_OPT) qve_wrapper ./installer/linux/rpm/libsgx-ae-qve/build.sh +.PHONY: rpm_sgx_tdx_logic_pkg +rpm_sgx_tdx_logic_pkg: tdx_logic + ./installer/linux/rpm/libsgx-tdx-logic/build.sh +.PHONY: rpm_sgx_tdx_qgs_pkg +rpm_sgx_tdx_qgs_pkg: tdx_qgs + ./installer/linux/rpm/tdx-qgs/build.sh +.PHONY: rpm_sgx_tdx_attest_pkg +rpm_sgx_tdx_attest_pkg: tdx_attest + ./installer/linux/rpm/libtdx-attest/build.sh .PHONY: rpm_sgx_dcap_quote_verify_pkg rpm_sgx_dcap_quote_verify_pkg: $(CHECK_OPT) qve_wrapper @@ -169,7 +223,7 @@ rpm_sgx_ra_service_pkg: $(MAKE) -C ../tools/SGXPlatformRegistration/ rpm_pkg .PHONY: rpm_pkg -rpm_pkg: rpm_sgx_dcap_ql_pkg rpm_sgx_dcap_default_qpl_pkg rpm_sgx_dcap_pccs_pkg rpm_sgx_ae_qe3_pkg rpm_sgx_ae_id_enclave_pkg rpm_sgx_ae_qve_pkg rpm_sgx_dcap_quote_verify_pkg rpm_sgx_pce_logic_pkg rpm_sgx_qe3_logic_pkg rpm_sgx_pck_id_retrieval_tool_pkg rpm_sgx_ra_service_pkg +rpm_pkg: rpm_sgx_dcap_ql_pkg rpm_sgx_dcap_default_qpl_pkg rpm_sgx_dcap_pccs_pkg rpm_sgx_ae_qe3_pkg rpm_sgx_ae_tdqe_pkg rpm_sgx_ae_id_enclave_pkg rpm_sgx_ae_qve_pkg rpm_sgx_tdx_logic_pkg rpm_sgx_tdx_qgs_pkg rpm_sgx_tdx_attest_pkg rpm_sgx_dcap_quote_verify_pkg rpm_sgx_pce_logic_pkg rpm_sgx_qe3_logic_pkg rpm_sgx_pck_id_retrieval_tool_pkg rpm_sgx_ra_service_pkg @$(RM) -f ./installer/linux/rpm/*.rpm cp `find ./installer/linux/rpm/ -name "*.rpm"` ./installer/linux/rpm/ cp `find ../tools/PCKRetrievalTool/installer/rpm/ -name "*.rpm"` ./installer/linux/rpm/ @@ -178,6 +232,9 @@ rpm_pkg: rpm_sgx_dcap_ql_pkg rpm_sgx_dcap_default_qpl_pkg rpm_sgx_dcap_pccs_pkg clean: $(MAKE) -C pce_wrapper/linux clean $(MAKE) -C quote_wrapper/ql/linux clean + $(MAKE) -C quote_wrapper/qgs clean + $(MAKE) -C quote_wrapper/tdx_quote/linux clean + $(MAKE) -C quote_wrapper/tdx_attest/linux clean $(MAKE) -C qcnl/linux clean $(MAKE) -C qpl/linux clean $(MAKE) -C ../QuoteVerification clean @@ -190,20 +247,28 @@ clean: ./installer/linux/deb/libsgx-dcap-ql/clean.sh ./installer/linux/deb/libsgx-dcap-quote-verify/clean.sh ./installer/linux/deb/libsgx-ae-qe3/clean.sh + ./installer/linux/deb/libsgx-ae-tdqe/clean.sh ./installer/linux/deb/libsgx-ae-id-enclave/clean.sh ./installer/linux/deb/libsgx-ae-qve/clean.sh ./installer/linux/deb/libsgx-pce-logic/clean.sh ./installer/linux/deb/libsgx-qe3-logic/clean.sh + ./installer/linux/deb/libsgx-tdx-logic/clean.sh + ./installer/linux/deb/tdx-qgs/clean.sh + ./installer/linux/deb/libtdx-attest/clean.sh ./installer/linux/deb/libsgx-dcap-default-qpl/clean.sh ./installer/linux/deb/sgx-dcap-pccs/clean.sh ../tools/PCKRetrievalTool/installer/deb/sgx-pck-id-retrieval-tool/clean.sh ./installer/linux/rpm/libsgx-dcap-ql/clean.sh ./installer/linux/rpm/libsgx-ae-qe3/clean.sh + ./installer/linux/rpm/libsgx-ae-tdqe/clean.sh ./installer/linux/rpm/libsgx-ae-id-enclave/clean.sh ./installer/linux/rpm/libsgx-ae-qve/clean.sh ./installer/linux/rpm/libsgx-dcap-quote-verify/clean.sh ./installer/linux/rpm/libsgx-pce-logic/clean.sh ./installer/linux/rpm/libsgx-qe3-logic/clean.sh + ./installer/linux/rpm/libsgx-tdx-logic/clean.sh + ./installer/linux/rpm/tdx-qgs/clean.sh + ./installer/linux/rpm/libtdx-attest/clean.sh ./installer/linux/rpm/libsgx-dcap-default-qpl/clean.sh ./installer/linux/rpm/sgx-dcap-pccs/clean.sh ../tools/PCKRetrievalTool/installer/rpm/sgx-pck-id-retrieval-tool/clean.sh diff --git a/QuoteGeneration/README.md b/QuoteGeneration/README.md index 7b7c2810..94e0a7c7 100644 --- a/QuoteGeneration/README.md +++ b/QuoteGeneration/README.md @@ -2,7 +2,7 @@ Intel(R) Software Guard Extensions Data Center Attestation Primitives (Intel(R) ================================================ For Windows* OS ------------------ +----------------- ## Prerequisites - Ensure that you have the following required operating systems: * Windows* Server 2016 (Long-Term Servicing Channel) @@ -22,7 +22,7 @@ For Windows* OS ## How to build - In the top directory, open the Microsoft Visual Studio* solution `SGX_DCAP.sln` and run a build. - The Intel(R) SGX DCAP NuGet* package generation depends on a standalone tool `nuget.exe`. To build the Intel(R) SGX DCAP NuGet* package: - 1. Download the standalone tool `nuget.exe` from [nuget.org/downloads](https://nuget.org/downloads) and put it to `installer\win\` folder or add the folder where you placed `nuget.exe` to your PATH environment variable. + 1. Download the standalone tool `nuget.exe` from [nuget.org/downloads](https://nuget.org/downloads) and put it to `installer\win\` folder or add the folder where you placed `nuget.exe` to your PATH environment variable. 2. Go to `installer\win\` folder and run the following command from the Command Prompt: ``` DCAP_Components.bat @@ -33,11 +33,11 @@ For Windows* OS dcap_copy_file.bat dcap_generate.bat ``` - The target INF installers `sgx_dcap.inf` and `sgx_dcap_dev.inf` will be generated in the same folder. + The target INF installers `sgx_dcap.inf` and `sgx_dcap_dev.inf` will be generated in the same folder. **NOTE**:`sgx_dcap_dev.inf` is for Windows* Server 2016 LTSC and `sgx_dcap.inf` is for Windows* Server 2019 LTSC. ## How to install - Refer to the *"Installation Instructions"* section in the [Intel(R) Software Guard Extensions: Data Center Attestation Primitives Installation Guide For Windows* OS](https://download.01.org/intel-sgx/sgx-dcap/1.13/windows/docs/Intel_SGX_DCAP_Windows_SW_Installation_Guide.pdf) to install the right packages on your platform. + Refer to the *"Installation Instructions"* section in the [Intel(R) Software Guard Extensions: Data Center Attestation Primitives Installation Guide For Windows* OS](https://download.01.org/intel-sgx/sgx-dcap/1.14/windows/docs/Intel_SGX_DCAP_Windows_SW_Installation_Guide.pdf) to install the right packages on your platform. For Linux* OS @@ -47,8 +47,8 @@ For Linux* OS * Ubuntu* 18.04 LTS Desktop 64bits * Ubuntu* 18.04 LTS Server 64bits * Ubuntu* 20.04 LTS Server 64bits - * Red Hat Enterprise Linux Server release 8.2 64bits - * CentOS 8.2 64bits + * Red Hat Enterprise Linux Server release 8.5 64bits + * CentOS Stream 8 64bits - Ensure that you have the following required hardware: * 8th Generation Intel(R) Core(TM) Processor or newer with **Flexible Launch Control** support* * Intel(R) Atom(TM) Processor with **Flexible Launch Control** support* @@ -60,17 +60,17 @@ For Linux* OS ``` * On Ubuntu 20.04 ``` - $ sudo apt-get install build-essential wget python-is-python3 debhelper zip libcurl4-openssl-dev + $ sudo apt-get install build-essential wget python-is-python3 debhelper zip libcurl4-openssl-dev pkgconf libboost-dev libboost-system-dev protobuf-c-compiler libprotobuf-c-dev protobuf-compiler ``` - * On Red Hat Enterprise Linux 8.2 + * On Red Hat Enterprise Linux 8.5 ``` $ sudo yum groupinstall 'Development Tools' - $ sudo yum install wget python2 rpm-build zip + $ sudo yum install wget python2 rpm-build zip pkgconf boost-devel protobuf-lite-devel protobuf-c-compiler protobuf-c-devel ``` - * On CentOS 8.2 + * On CentOS Stream 8 ``` $ sudo dnf group install 'Development Tools' - $ sudo dnf --enablerepo=PowerTools install wget python2 rpm-build zip + $ sudo dnf --enablerepo=powertools install wget python2 rpm-build zip pkgconf boost-devel protobuf-lite-devel protobuf-c-compiler protobuf-c-devel ``` - Install latest prebuilt Intel(R) SGX SDK Installer from [01.org](https://01.org/intel-software-guard-extensions/downloads) ``` @@ -98,7 +98,7 @@ A `README.md` is provided in the Intel(R) SGX driver package for Intel(R) SGX DC - To build the Intel(R) SGX DCAP Quote Generation Library and the Intel(R) SGX Default Quote Provider Library, enter the following command: ``` $ make -``` +``` - To clean the files generated by previous `make` command, enter the following command: ``` $ make clean @@ -117,12 +117,12 @@ A `README.md` is provided in the Intel(R) SGX driver package for Intel(R) SGX DC $ make deb_pkg ``` You can find the generated installers located under `linux/installer/deb/`. - **Note**: On Ubuntu 18.04 and Ubuntu 20.04, the above command also generates another debug symbol package with extension name of `.ddeb` for debug purpose. + **Note**: On Ubuntu 18.04 and Ubuntu 20.04, the above command also generates another debug symbol package with extension name of `.ddeb` for debug purpose. **Note**: The above command builds the installers with default configuration firstly and then generates the target installers. To build the installers without optimization and with full debug information kept in the libraries, enter the following command: ``` $ make deb_pkg DEBUG=1 ``` - * On Red Hat Enterprise Linux 8.2 and CentOS 8.2: + * On Red Hat Enterprise Linux 8.5 and CentOS Stream 8: ``` $ make rpm_pkg ``` @@ -140,7 +140,7 @@ A `README.md` is provided in the Intel(R) SGX driver package for Intel(R) SGX DC ``` **NOTE**: Sometimes we will split old package into smaller ones or move files between different packages. In such cases, you need to add `--force-overwrite` to overwrite existing files. If you're doing a fresh install, you can omit this option. - * On Red Hat Enterprise Linux 8.2 and CentOS 8.2: + * On Red Hat Enterprise Linux 8.5 and CentOS Stream 8: ``` $ sudo rpm -ivh libsgx-ae-pce*.rpm libsgx-ae-qe3*.rpm libsgx-ae-id-enclave*.rpm libsgx-ae-qve*.rpm libsgx-enclave-common*.rpm libsgx-urts*.rpm ``` @@ -151,7 +151,7 @@ A `README.md` is provided in the Intel(R) SGX driver package for Intel(R) SGX DC ``` $ sudo dpkg -i libsgx-dcap-ql_*.deb ``` - * On Red Hat Enterprise Linux 8.2 and CentOS 8.2: + * On Red Hat Enterprise Linux 8.5 and CentOS Stream 8: ``` $ sudo rpm -ivh libsgx-dcap-ql*.rpm ``` @@ -162,7 +162,7 @@ A `README.md` is provided in the Intel(R) SGX driver package for Intel(R) SGX DC $ sudo dpkg -i libsgx-dcap-ql-dev_*.deb $ sudo dpkg -i libsgx-dcap-ql-dbgsym_*.deb ``` - * On Red Hat Enterprise Linux 8.2 and CentOS 8.2: + * On Red Hat Enterprise Linux 8.5 and CentOS Stream 8: ``` $ sudo rpm -ivh libsgx-dcap-ql-devel*.rpm $ sudo rpm -ivh libsgx-dcap-ql-debuginfo*.rpm @@ -175,7 +175,7 @@ A `README.md` is provided in the Intel(R) SGX driver package for Intel(R) SGX DC $ sudo dpkg -i libsgx-dcap-default-qpl_*.deb $ sudo dpkg -i sgx-dcap-pccs_*.deb ``` - * On Red Hat Enterprise Linux 8.2 and CentOS 8.2: + * On Red Hat Enterprise Linux 8.5 and CentOS Stream 8: ``` $ sudo rpm -ivh libsgx-dcap-default-qpl*.rpm $ sudo rpm -ivh sgx-dcap-pccs*.rpm @@ -187,8 +187,10 @@ A `README.md` is provided in the Intel(R) SGX driver package for Intel(R) SGX DC $ sudo dpkg -i libsgx-dcap-default-qpl-dev*.deb libsgx-headers*.deb $ sudo dpkg -i libsgx-dcap-default-qpl-dbgsym*.deb ``` - * On Red Hat Enterprise Linux 8.2 and CentOS 8.2: + * On Red Hat Enterprise Linux 8.5 and CentOS Stream 8: ``` $ sudo rpm -ivh libsgx-dcap-default-qpl-devel*.rpm libsgx-headers*.rpm $ sudo rpm -ivh libsgx-dcap-default-qpl-debuginfo*.rpm ``` +## TDX Attestation Support +- From version 1.14, TDX attestation feature is added into DCAP. Corresponding packages will be built along with the DCAP Quote Generation Library adn DCAP Quote Verification Library. Currently, TDX attestation support has been verified on Red Hat Enterprise Linux 8.5 and CentOS Stream 8 only. diff --git a/QuoteGeneration/common/inc/internal/se_trace.h b/QuoteGeneration/common/inc/internal/se_trace.h index 1aa03967..91a9c218 100644 --- a/QuoteGeneration/common/inc/internal/se_trace.h +++ b/QuoteGeneration/common/inc/internal/se_trace.h @@ -119,7 +119,7 @@ void __attribute__((weak)) sgx_proc_log_report(int level, const char* format, . #else #define SE_PROD_LOG(fmt, ...) \ do { \ - if(sgx_proc_log_report) { \ + if(sgx_proc_log_report != NULL) { \ sgx_proc_log_report(1, "[%s %s:%d] " fmt, __FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__); \ } else { \ se_trace_internal(SE_TRACE_ERROR, "[%s %s:%d] " fmt, __FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__); \ diff --git a/QuoteGeneration/common/inc/internal/se_version.h b/QuoteGeneration/common/inc/internal/se_version.h index df997c8f..9f8a558e 100644 --- a/QuoteGeneration/common/inc/internal/se_version.h +++ b/QuoteGeneration/common/inc/internal/se_version.h @@ -28,18 +28,21 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ -#define STRFILEVER "1.13.100.4" +#define STRFILEVER "1.14.100.3" #define COPYRIGHT "Copyright (C) 2022 Intel Corporation" -#define FILEVER 1,13,100,4 -#define PRODUCTVER 1,13,100,4 -#define STRPRODUCTVER "1.13.100.4" +#define FILEVER 1,14,100,3 +#define PRODUCTVER 1,14,100,3 +#define STRPRODUCTVER "1.14.100.3" #define COMPANYNAME "Intel Corporation" #define PRODUCTNAME "Intel® Software Guard Extensions" -#define DEFAULT_QPL_VERSION "1.12.102.0" -#define QUOTE_VERIFIER_VERSION "1.11.102.0" -#define QUOTE_LOADER_VERSION "1.11.102.1" +#define DEFAULT_QPL_VERSION "1.13.100.3" +#define QUOTE_VERIFIER_VERSION "1.12.100.3" +#define QUOTE_LOADER_VERSION "1.11.103.3" +#define TDQE_WRAPPER_VERSION "1.14.100.3" +#define PCE_WRAPPER_VERSION "1.14.100.3" -#define QE3_VERSION "1.11.101.1" -#define QVE_VERSION "1.11.101.1" -#define IDE_VERSION "1.11.101.1" +#define QE3_VERSION "1.14.100.2" +#define QVE_VERSION "1.14.100.2" +#define IDE_VERSION "1.14.100.2" +#define TDQE_VERSION "1.14.100.2" diff --git a/QuoteGeneration/download_prebuilt.bat b/QuoteGeneration/download_prebuilt.bat index e0e333af..9d4ebaf2 100644 --- a/QuoteGeneration/download_prebuilt.bat +++ b/QuoteGeneration/download_prebuilt.bat @@ -1,4 +1,4 @@ -@REM Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +@REM Copyright (C) 2011-2022 Intel Corporation. All rights reserved. @REM @REM Redistribution and use in source and binary forms, with or without @REM modification, are permitted provided that the following conditions @@ -29,9 +29,9 @@ @echo off -set ae_file_name=prebuilt_windows_dcap_1.13.zip -set checksum_file=SHA256SUM_prebuilt_windows_dcap_1.13.cfg -set server_url_path=https://download.01.org//intel-sgx/sgx-dcap/1.13/windows/ +set ae_file_name=prebuilt_windows_dcap_1.14.zip +set checksum_file=SHA256SUM_prebuilt_windows_dcap_1.14.cfg +set server_url_path=https://download.01.org/intel-sgx/sgx-dcap/1.14/windows/ set server_ae_url=%server_url_path%/%ae_file_name% set server_checksum_url=%server_url_path%/%checksum_file% diff --git a/QuoteGeneration/download_prebuilt.sh b/QuoteGeneration/download_prebuilt.sh index 828e6ac9..00c21227 100755 --- a/QuoteGeneration/download_prebuilt.sh +++ b/QuoteGeneration/download_prebuilt.sh @@ -32,9 +32,9 @@ top_dir=`dirname $0` out_dir=$top_dir -ae_file_name=prebuilt_dcap_1.13.tar.gz -checksum_file=SHA256SUM_prebuilt_dcap_1.13.cfg -server_url_path=https://download.01.org/intel-sgx/sgx-dcap/1.13/linux +ae_file_name=prebuilt_dcap_1.14.tar.gz +checksum_file=SHA256SUM_prebuilt_dcap_1.14.cfg +server_url_path=https://download.01.org/intel-sgx/sgx-dcap/1.14/linux server_ae_url=$server_url_path/$ae_file_name server_checksum_url=$server_url_path/$checksum_file diff --git a/QuoteGeneration/installer/linux/common/libsgx-ae-tdqe/BOMs/libsgx-ae-tdqe-package.txt b/QuoteGeneration/installer/linux/common/libsgx-ae-tdqe/BOMs/libsgx-ae-tdqe-package.txt new file mode 100644 index 00000000..1aed0baa --- /dev/null +++ b/QuoteGeneration/installer/linux/common/libsgx-ae-tdqe/BOMs/libsgx-ae-tdqe-package.txt @@ -0,0 +1,3 @@ +DeliveryName InstallName FileCheckSum FileFeature FileOwner +/installer/linux/common/libsgx-ae-tdqe/installConfig /installConfig 0 main STP +/installer/linux/common/libsgx-ae-tdqe/Makefile /Makefile 0 main STP diff --git a/QuoteGeneration/installer/linux/common/libsgx-ae-tdqe/BOMs/libsgx-ae-tdqe.txt b/QuoteGeneration/installer/linux/common/libsgx-ae-tdqe/BOMs/libsgx-ae-tdqe.txt new file mode 100644 index 00000000..7445fa47 --- /dev/null +++ b/QuoteGeneration/installer/linux/common/libsgx-ae-tdqe/BOMs/libsgx-ae-tdqe.txt @@ -0,0 +1,2 @@ +DeliveryName InstallName FileCheckSum FileFeature FileOwner +/psw/ae/data/prebuilt/libsgx_tdqe.signed.so /lib/libsgx_tdqe.signed.so 0 main STP diff --git a/QuoteGeneration/installer/linux/common/libsgx-ae-tdqe/Makefile b/QuoteGeneration/installer/linux/common/libsgx-ae-tdqe/Makefile new file mode 100644 index 00000000..afb01bf7 --- /dev/null +++ b/QuoteGeneration/installer/linux/common/libsgx-ae-tdqe/Makefile @@ -0,0 +1,45 @@ +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + +include installConfig + +USR_LIB_PATH=$(shell readlink -m $(DESTDIR)/usr/$(notdir $(shell gcc -print-multi-os-directory))/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null)) + +USR_LIB_VER=1.0.0 +SPLIT_VERSION=$(word $2,$(subst ., ,$1)) +default: + +install: + install -d $(USR_LIB_PATH) + install ${LIB_DIR}/* $(USR_LIB_PATH) + cd $(USR_LIB_PATH) && \ + mv libsgx_tdqe.signed.so libsgx_tdqe.signed.so.$(USR_LIB_VER) && \ + ln -fs libsgx_tdqe.signed.so.$(USR_LIB_VER) libsgx_tdqe.signed.so.$(call SPLIT_VERSION,$(USR_LIB_VER),1) \ No newline at end of file diff --git a/QuoteGeneration/installer/linux/common/libsgx-ae-tdqe/createTarball.sh b/QuoteGeneration/installer/linux/common/libsgx-ae-tdqe/createTarball.sh new file mode 100755 index 00000000..9f5e4df4 --- /dev/null +++ b/QuoteGeneration/installer/linux/common/libsgx-ae-tdqe/createTarball.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +SCRIPT_DIR=$(dirname "$0") +ROOT_DIR="${SCRIPT_DIR}/../../../../" +LINUX_INSTALLER_DIR="${ROOT_DIR}/installer/linux" +LINUX_INSTALLER_COMMON_DIR="${LINUX_INSTALLER_DIR}/common" + +INSTALL_PATH=${SCRIPT_DIR}/output + +# Cleanup +rm -fr ${INSTALL_PATH} + +# Get the configuration for this package +source ${SCRIPT_DIR}/installConfig + +# Fetch the gen_source script +cp ${LINUX_INSTALLER_COMMON_DIR}/gen_source/gen_source.py ${SCRIPT_DIR} + +# Copy the files according to the BOM +python ${SCRIPT_DIR}/gen_source.py --bom=BOMs/libsgx-ae-tdqe.txt +python ${SCRIPT_DIR}/gen_source.py --bom=BOMs/libsgx-ae-tdqe-package.txt --cleanup=false +python ${SCRIPT_DIR}/gen_source.py --bom=../licenses/BOM_license.txt --cleanup=false + +# Create the tarball +SGX_VERSION=$(awk '/TDQE_VERSION/ {print $3}' ${ROOT_DIR}/common/inc/internal/se_version.h|sed 's/^\"\(.*\)\"$/\1/') +pushd ${INSTALL_PATH} &> /dev/null +sed -i "s/USR_LIB_VER=.*/USR_LIB_VER=${SGX_VERSION}/" Makefile +tar -zcvf ${TARBALL_NAME} * +popd &> /dev/null diff --git a/QuoteGeneration/installer/linux/common/libsgx-ae-tdqe/installConfig b/QuoteGeneration/installer/linux/common/libsgx-ae-tdqe/installConfig new file mode 100644 index 00000000..9c3afe0b --- /dev/null +++ b/QuoteGeneration/installer/linux/common/libsgx-ae-tdqe/installConfig @@ -0,0 +1,6 @@ +AE_TDX_VERSION="1.0" +TARBALL_NAME=libsgx-ae-tdqe_1.0.orig.tar.gz + +AE_TDX_PACKAGE_NAME=libsgx-ae-tdqe + +LIB_DIR=lib diff --git a/QuoteGeneration/installer/linux/common/libsgx-pce-logic/Makefile b/QuoteGeneration/installer/linux/common/libsgx-pce-logic/Makefile index c269102d..5ef6e663 100644 --- a/QuoteGeneration/installer/linux/common/libsgx-pce-logic/Makefile +++ b/QuoteGeneration/installer/linux/common/libsgx-pce-logic/Makefile @@ -35,6 +35,8 @@ PACKAGE_ROOT_FOLDER=pkgroot PACKAGES=$(notdir $(wildcard $(PACKAGE_ROOT_FOLDER)/*)) USR_LIB_PATH=/usr/$(notdir $(shell gcc -print-multi-os-directory))/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null) +USR_LIB_VER=1.0.0 +SPLIT_VERSION=$(word $2,$(subst ., ,$1)) default: @@ -44,3 +46,7 @@ $(PACKAGES): $(if $(wildcard $(PACKAGE_ROOT_FOLDER)/$@/$(LIB_DIR)/*.so), \ install -d $(shell readlink -m $(DESTDIR)/$(USR_LIB_PATH)) && \ mv $(PACKAGE_ROOT_FOLDER)/$@/$(LIB_DIR)/*.so $(DESTDIR)/$(USR_LIB_PATH)) + cd $(DESTDIR)/$(USR_LIB_PATH) && \ + mv libsgx_pce_logic.so libsgx_pce_logic.so.$(USR_LIB_VER) && \ + ln -fs libsgx_pce_logic.so.$(USR_LIB_VER) libsgx_pce_logic.so.$(call SPLIT_VERSION,$(USR_LIB_VER),1) && \ + ln -fs libsgx_pce_logic.so.$(call SPLIT_VERSION,$(USR_LIB_VER),1) libsgx_pce_logic.so diff --git a/QuoteGeneration/installer/linux/common/libsgx-pce-logic/createTarball.sh b/QuoteGeneration/installer/linux/common/libsgx-pce-logic/createTarball.sh index d36332c4..ebb12395 100755 --- a/QuoteGeneration/installer/linux/common/libsgx-pce-logic/createTarball.sh +++ b/QuoteGeneration/installer/linux/common/libsgx-pce-logic/createTarball.sh @@ -55,6 +55,8 @@ python ${SCRIPT_DIR}/gen_source.py --bom=BOMs/libsgx-pce-logic-package.txt --cl python ${SCRIPT_DIR}/gen_source.py --bom=../licenses/BOM_license.txt --cleanup=false # Create the tarball +SGX_VERSION=$(awk '/PCE_WRAPPER_VERSION/ {print $3}' ${ROOT_DIR}/common/inc/internal/se_version.h|sed 's/^\"\(.*\)\"$/\1/') pushd ${INSTALL_PATH} &> /dev/null +sed -i "s/USR_LIB_VER=.*/USR_LIB_VER=${SGX_VERSION}/" Makefile tar -zcvf ${TARBALL_NAME} * popd &> /dev/null diff --git a/QuoteGeneration/installer/linux/common/libsgx-tdx-logic/BOMs/libsgx-tdx-logic-dev.txt b/QuoteGeneration/installer/linux/common/libsgx-tdx-logic/BOMs/libsgx-tdx-logic-dev.txt new file mode 100644 index 00000000..d2966f42 --- /dev/null +++ b/QuoteGeneration/installer/linux/common/libsgx-tdx-logic/BOMs/libsgx-tdx-logic-dev.txt @@ -0,0 +1,2 @@ +DeliveryName InstallName FileCheckSum FileFeature FileOwner +/quote_wrapper/tdx_quote/td_ql_logic.h /include/td_ql_logic.h 0 main STP diff --git a/QuoteGeneration/installer/linux/common/libsgx-tdx-logic/BOMs/libsgx-tdx-logic-package.txt b/QuoteGeneration/installer/linux/common/libsgx-tdx-logic/BOMs/libsgx-tdx-logic-package.txt new file mode 100644 index 00000000..80c8cb40 --- /dev/null +++ b/QuoteGeneration/installer/linux/common/libsgx-tdx-logic/BOMs/libsgx-tdx-logic-package.txt @@ -0,0 +1,3 @@ +DeliveryName InstallName FileCheckSum FileFeature FileOwner +/installer/linux/common/libsgx-tdx-logic/installConfig /installConfig 0 main STP +/installer/linux/common/libsgx-tdx-logic/Makefile /Makefile 0 main STP diff --git a/QuoteGeneration/installer/linux/common/libsgx-tdx-logic/BOMs/libsgx-tdx-logic.txt b/QuoteGeneration/installer/linux/common/libsgx-tdx-logic/BOMs/libsgx-tdx-logic.txt new file mode 100644 index 00000000..7c17637b --- /dev/null +++ b/QuoteGeneration/installer/linux/common/libsgx-tdx-logic/BOMs/libsgx-tdx-logic.txt @@ -0,0 +1,3 @@ +DeliveryName InstallName FileCheckSum FileFeature FileOwner +/build/linux/libsgx_tdx_logic.so /lib/libsgx_tdx_logic.so 0 main STP + diff --git a/QuoteGeneration/installer/linux/common/libsgx-tdx-logic/Makefile b/QuoteGeneration/installer/linux/common/libsgx-tdx-logic/Makefile new file mode 100644 index 00000000..e703b11c --- /dev/null +++ b/QuoteGeneration/installer/linux/common/libsgx-tdx-logic/Makefile @@ -0,0 +1,59 @@ +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + +include installConfig + +PACKAGE_ROOT_FOLDER=pkgroot +PACKAGES=$(notdir $(wildcard $(PACKAGE_ROOT_FOLDER)/*)) + +USR_LIB_PATH=/usr/$(notdir $(shell gcc -print-multi-os-directory))/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null) +USR_INC_PATH=/usr/$(INC_DIR) +USR_LIB_VER=1.0.0 +SPLIT_VERSION=$(word $2,$(subst ., ,$1)) + +default: + +install: $(PACKAGES) + + +$(PACKAGES): + install -d $(shell readlink -m $(DESTDIR)/$@) + $(if $(wildcard $(PACKAGE_ROOT_FOLDER)/$@/$(LIB_DIR)/*.so), \ + install -d $(shell readlink -m $(DESTDIR)/$@/$(USR_LIB_PATH)) && \ + mv $(PACKAGE_ROOT_FOLDER)/$@/$(LIB_DIR)/*.so $(DESTDIR)/$@/$(USR_LIB_PATH) && \ + cd $(DESTDIR)/$@/$(USR_LIB_PATH) && \ + mv libsgx_tdx_logic.so libsgx_tdx_logic.so.$(USR_LIB_VER) && \ + ln -fs libsgx_tdx_logic.so.$(USR_LIB_VER) libsgx_tdx_logic.so.$(call SPLIT_VERSION,$(USR_LIB_VER),1) && \ + ln -fs libsgx_tdx_logic.so.$(call SPLIT_VERSION,$(USR_LIB_VER),1) libsgx_tdx_logic.so) + $(if $(wildcard $(PACKAGE_ROOT_FOLDER)/$@/$(INC_DIR)/.*), \ + install -d $(shell readlink -m $(DESTDIR)/$@/$(USR_INC_PATH)) && \ + install -d $(shell readlink -m $(DESTDIR)/$@/$(USR_LIB_PATH)) && \ + mv $(PACKAGE_ROOT_FOLDER)/$@/$(INC_DIR)/* $(DESTDIR)/$@/$(USR_INC_PATH)) diff --git a/QuoteGeneration/installer/linux/common/libsgx-tdx-logic/createTarball.sh b/QuoteGeneration/installer/linux/common/libsgx-tdx-logic/createTarball.sh new file mode 100755 index 00000000..80dff971 --- /dev/null +++ b/QuoteGeneration/installer/linux/common/libsgx-tdx-logic/createTarball.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +SCRIPT_DIR=$(dirname "$0") +ROOT_DIR="${SCRIPT_DIR}/../../../../" +LINUX_INSTALLER_DIR="${ROOT_DIR}/installer/linux" +LINUX_INSTALLER_COMMON_DIR="${LINUX_INSTALLER_DIR}/common" + +INSTALL_PATH=${SCRIPT_DIR}/output + +# Cleanup +rm -fr ${INSTALL_PATH} + +# Get the configuration for this package +source ${SCRIPT_DIR}/installConfig + +# Fetch the gen_source script +cp ${LINUX_INSTALLER_COMMON_DIR}/gen_source/gen_source.py ${SCRIPT_DIR} + +# Copy the files according to the BOM +python ${SCRIPT_DIR}/gen_source.py --bom=BOMs/libsgx-tdx-logic.txt --installdir=pkgroot/libsgx-tdx-logic +python ${SCRIPT_DIR}/gen_source.py --bom=BOMs/libsgx-tdx-logic-dev.txt --cleanup=false --installdir=pkgroot/libsgx-tdx-logic-dev +python ${SCRIPT_DIR}/gen_source.py --bom=BOMs/libsgx-tdx-logic-package.txt --cleanup=false +python ${SCRIPT_DIR}/gen_source.py --bom=../licenses/BOM_license.txt --cleanup=false + +# Create the tarball +SGX_VERSION=$(awk '/TDQE_WRAPPER_VERSION/ {print $3}' ${ROOT_DIR}/common/inc/internal/se_version.h|sed 's/^\"\(.*\)\"$/\1/') +pushd ${INSTALL_PATH} &> /dev/null +sed -i "s/USR_LIB_VER=.*/USR_LIB_VER=${SGX_VERSION}/" Makefile +tar -zcvf ${TARBALL_NAME} * +popd &> /dev/null diff --git a/QuoteGeneration/installer/linux/common/libsgx-tdx-logic/installConfig b/QuoteGeneration/installer/linux/common/libsgx-tdx-logic/installConfig new file mode 100644 index 00000000..60cbfaa6 --- /dev/null +++ b/QuoteGeneration/installer/linux/common/libsgx-tdx-logic/installConfig @@ -0,0 +1,7 @@ +TDX_LOGIC_VERSION="1.0" +TARBALL_NAME=libsgx-tdx-logic_1.0.orig.tar.gz + +TDX_LOGIC_PACKAGE_NAME=libsgx-tdx-logic +TDX_LOGIC_DEV_PACKAGE_NAME=libsgx-tdx-logic-dev +LIB_DIR=lib +INC_DIR=include diff --git a/QuoteGeneration/installer/linux/common/libtdx-attest/BOMs/libtdx-attest-dev.txt b/QuoteGeneration/installer/linux/common/libtdx-attest/BOMs/libtdx-attest-dev.txt new file mode 100644 index 00000000..c0d1ce2b --- /dev/null +++ b/QuoteGeneration/installer/linux/common/libtdx-attest/BOMs/libtdx-attest-dev.txt @@ -0,0 +1,4 @@ +DeliveryName InstallName FileCheckSum FileFeature FileOwner +/quote_wrapper/tdx_attest/tdx_attest.h /include/tdx_attest.h 0 main STP +/quote_wrapper/tdx_attest/test_tdx_attest.c /sample/test_tdx_attest.c 0 main STP +/quote_wrapper/tdx_attest/Makefile.sample /sample/Makefile 0 main STP diff --git a/QuoteGeneration/installer/linux/common/libtdx-attest/BOMs/libtdx-attest-package.txt b/QuoteGeneration/installer/linux/common/libtdx-attest/BOMs/libtdx-attest-package.txt new file mode 100644 index 00000000..835062bd --- /dev/null +++ b/QuoteGeneration/installer/linux/common/libtdx-attest/BOMs/libtdx-attest-package.txt @@ -0,0 +1,3 @@ +DeliveryName InstallName FileCheckSum FileFeature FileOwner +/installer/linux/common/libtdx-attest/installConfig /installConfig 0 main STP +/installer/linux/common/libtdx-attest/Makefile /Makefile 0 main STP diff --git a/QuoteGeneration/installer/linux/common/libtdx-attest/BOMs/libtdx-attest.txt b/QuoteGeneration/installer/linux/common/libtdx-attest/BOMs/libtdx-attest.txt new file mode 100644 index 00000000..474bad91 --- /dev/null +++ b/QuoteGeneration/installer/linux/common/libtdx-attest/BOMs/libtdx-attest.txt @@ -0,0 +1,2 @@ +DeliveryName InstallName FileCheckSum FileFeature FileOwner +/build/linux/libtdx_attest.so /lib/libtdx_attest.so 0 main STP diff --git a/QuoteGeneration/installer/linux/common/libtdx-attest/Makefile b/QuoteGeneration/installer/linux/common/libtdx-attest/Makefile new file mode 100644 index 00000000..aa7768b3 --- /dev/null +++ b/QuoteGeneration/installer/linux/common/libtdx-attest/Makefile @@ -0,0 +1,62 @@ +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + +include installConfig + +PACKAGE_ROOT_FOLDER=pkgroot +PACKAGES=$(notdir $(wildcard $(PACKAGE_ROOT_FOLDER)/*)) + +USR_LIB_PATH=/usr/$(notdir $(shell gcc -print-multi-os-directory))/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null) +USR_INC_PATH=/usr/$(INC_DIR) +OPT_SAMPLE_PATH=/opt/intel/tdx-quote-generation-sample + +USR_LIB_VER=1.0.0 +SPLIT_VERSION=$(word $2,$(subst ., ,$1)) + +default: + +install: $(PACKAGES) + cd $(shell readlink -m $(DESTDIR)/$(TDX_ATTEST_PACKAGE_NAME)/$(USR_LIB_PATH)) && \ + mv libtdx_attest.so libtdx_attest.so.$(USR_LIB_VER) && \ + ln -fs libtdx_attest.so.$(USR_LIB_VER) libtdx_attest.so.$(call SPLIT_VERSION,$(USR_LIB_VER),1) + +$(PACKAGES): + install -d $(shell readlink -m $(DESTDIR)/$@) + $(if $(wildcard $(PACKAGE_ROOT_FOLDER)/$@/$(LIB_DIR)/*.so), \ + install -d $(shell readlink -m $(DESTDIR)/$@/$(USR_LIB_PATH)) && \ + mv $(PACKAGE_ROOT_FOLDER)/$@/$(LIB_DIR)/*.so $(DESTDIR)/$@/$(USR_LIB_PATH)) + $(if $(wildcard $(PACKAGE_ROOT_FOLDER)/$@/$(INC_DIR)/.*), \ + install -d $(shell readlink -m $(DESTDIR)/$@/$(USR_INC_PATH)) && \ + install -d $(shell readlink -m $(DESTDIR)/$@/$(USR_LIB_PATH)) && \ + mv $(PACKAGE_ROOT_FOLDER)/$@/$(INC_DIR)/* $(DESTDIR)/$@/$(USR_INC_PATH)) + $(if $(wildcard $(PACKAGE_ROOT_FOLDER)/$@/$(SAMPLE_DIR)/.*), \ + install -d $(shell readlink -m $(DESTDIR)/$@/$(OPT_SAMPLE_PATH)) && \ + mv $(PACKAGE_ROOT_FOLDER)/$@/$(SAMPLE_DIR)/* $(DESTDIR)/$@/$(OPT_SAMPLE_PATH)) diff --git a/QuoteGeneration/installer/linux/common/libtdx-attest/createTarball.sh b/QuoteGeneration/installer/linux/common/libtdx-attest/createTarball.sh new file mode 100755 index 00000000..4e530858 --- /dev/null +++ b/QuoteGeneration/installer/linux/common/libtdx-attest/createTarball.sh @@ -0,0 +1,65 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +SCRIPT_DIR=$(dirname "$0") +ROOT_DIR="${SCRIPT_DIR}/../../../../" +LINUX_INSTALLER_DIR="${ROOT_DIR}/installer/linux" +LINUX_INSTALLER_COMMON_DIR="${LINUX_INSTALLER_DIR}/common" + +INSTALL_PATH=${SCRIPT_DIR}/output + +[[ -z "${SGX_SDK}" ]] && SGX_SDK=/opt/intel/sgxsdk + +# Cleanup +rm -fr ${INSTALL_PATH} + +# Get the configuration for this package +source ${SCRIPT_DIR}/installConfig + +# Fetch the gen_source script +cp ${LINUX_INSTALLER_COMMON_DIR}/gen_source/gen_source.py ${SCRIPT_DIR} + +# Copy the files according to the BOM +python ${SCRIPT_DIR}/gen_source.py --bom=BOMs/libtdx-attest.txt --installdir=pkgroot/libtdx-attest +python ${SCRIPT_DIR}/gen_source.py --bom=BOMs/libtdx-attest-dev.txt --cleanup=false --installdir=pkgroot/libtdx-attest-dev +python ${SCRIPT_DIR}/gen_source.py --bom=BOMs/libtdx-attest-package.txt --cleanup=false +python ${SCRIPT_DIR}/gen_source.py --bom=../licenses/BOM_license.txt --cleanup=false + +# Create the tarball +SGX_VERSION=$(awk '/STRFILEVER/ {print $3}' ${ROOT_DIR}/common/inc/internal/se_version.h|sed 's/^\"\(.*\)\"$/\1/') +pushd ${INSTALL_PATH} &> /dev/null +sed -i "s/USR_LIB_VER=.*/USR_LIB_VER=${SGX_VERSION}/" Makefile +tar -zcvf ${TARBALL_NAME} * +popd &> /dev/null diff --git a/QuoteGeneration/installer/linux/common/libtdx-attest/installConfig b/QuoteGeneration/installer/linux/common/libtdx-attest/installConfig new file mode 100644 index 00000000..c0e45aa7 --- /dev/null +++ b/QuoteGeneration/installer/linux/common/libtdx-attest/installConfig @@ -0,0 +1,9 @@ +TDX_ATTEST_VERSION="1.0" +TARBALL_NAME=libtdx-attest_1.0.orig.tar.gz + +TDX_ATTEST_PACKAGE_NAME=libtdx-attest +TDX_ATTEST_DEV_PACKAGE_NAME=libtdx-attest-dev + +LIB_DIR=lib +INC_DIR=include +SAMPLE_DIR=sample diff --git a/QuoteGeneration/installer/linux/common/sgx-dcap-pccs/BOMs/sgx-dcap-pccs.txt b/QuoteGeneration/installer/linux/common/sgx-dcap-pccs/BOMs/sgx-dcap-pccs.txt index c5c70fe8..5d7820f9 100644 --- a/QuoteGeneration/installer/linux/common/sgx-dcap-pccs/BOMs/sgx-dcap-pccs.txt +++ b/QuoteGeneration/installer/linux/common/sgx-dcap-pccs/BOMs/sgx-dcap-pccs.txt @@ -43,6 +43,7 @@ DeliveryName InstallName FileCheckSum FileFeature FileOwner /pccs/migrations/00_db_initialize.up.sql /migrations/00_db_initialize.up.sql 0 main STP /pccs/migrations/01_db_version_1.js /migrations/01_db_version_1.js 0 main STP /pccs/migrations/02_db_version_2.js /migrations/02_db_version_2.js 0 main STP +/pccs/migrations/03_db_version_3.js /migrations/03_db_version_3.js 0 main STP /pccs/pcs_client/pcs_client.js /pcs_client/pcs_client.js 0 main STP /pccs/routes/index.js /routes/index.js 0 main STP /pccs/services/identityService.js /services/identityService.js 0 main STP @@ -69,4 +70,6 @@ DeliveryName InstallName FileCheckSum FileFeature FileOwner /pccs/package.json /package.json 0 main STP /pccs/pccs_server.js /pccs_server.js 0 main STP /pccs/pccs.service /pccs.service 0 main STP +/pccs/startup.sh /startup.sh 0 main STP +/pccs/cleanup.sh /cleanup.sh 0 main STP /pccs/README.md /README.md 0 main STP diff --git a/QuoteGeneration/installer/linux/common/sgx-dcap-pccs/Makefile b/QuoteGeneration/installer/linux/common/sgx-dcap-pccs/Makefile index 97c16dec..06f81f50 100644 --- a/QuoteGeneration/installer/linux/common/sgx-dcap-pccs/Makefile +++ b/QuoteGeneration/installer/linux/common/sgx-dcap-pccs/Makefile @@ -34,9 +34,24 @@ include installConfig PACKAGE_ROOT_FOLDER=pkgroot PACKAGES=$(notdir $(wildcard $(PACKAGE_ROOT_FOLDER)/*)) +PCCS_CONF=pccs.service +PCCS_CONF_PATH=$(if $(wildcard /run/systemd/system/.),$(if $(wildcard /lib/systemd/system/.),/lib/systemd/system,/usr/lib/systemd/system),$(if $(wildcard /etc/init/.),/etc/init/)) + +ifeq ($(PCCS_CONF_PATH),) +ifneq ($(shell awk -F/ '$$2 == "docker"' /proc/self/cgroup),) +PCCS_CONF_PATH=/lib/systemd/system +$(warning "You may need to start service manually after it's installed!") +else +(error "Unsupported platform - neither systemctl nor initctl is found!") +endif +endif + default: install: $(PACKAGES) + install -d $(shell readlink -m $(DESTDIR)/$(PCCS_CONF_PATH)) && \ + mv $(DESTDIR)/$(DCAP_PCCS_PACKAGE_PATH)/$(DCAP_PCCS_PACKAGE_NAME)/$(PCCS_CONF) $(DESTDIR)/$(PCCS_CONF_PATH) + $(PACKAGES): install -d $(shell readlink -m $(DESTDIR)/$(DCAP_PCCS_PACKAGE_PATH)/$(DCAP_PCCS_PACKAGE_NAME)) diff --git a/QuoteGeneration/installer/linux/common/tdx-qgs/BOMs/tdx-qgs-package.txt b/QuoteGeneration/installer/linux/common/tdx-qgs/BOMs/tdx-qgs-package.txt new file mode 100644 index 00000000..bf52fb38 --- /dev/null +++ b/QuoteGeneration/installer/linux/common/tdx-qgs/BOMs/tdx-qgs-package.txt @@ -0,0 +1,3 @@ +DeliveryName InstallName FileCheckSum FileFeature FileOwner +/installer/linux/common/tdx-qgs/installConfig /installConfig 0 main STP +/installer/linux/common/tdx-qgs/Makefile /Makefile 0 main STP diff --git a/QuoteGeneration/installer/linux/common/tdx-qgs/BOMs/tdx-qgs.txt b/QuoteGeneration/installer/linux/common/tdx-qgs/BOMs/tdx-qgs.txt new file mode 100644 index 00000000..51054d85 --- /dev/null +++ b/QuoteGeneration/installer/linux/common/tdx-qgs/BOMs/tdx-qgs.txt @@ -0,0 +1,8 @@ +DeliveryName InstallName FileCheckSum FileFeature FileOwner +/quote_wrapper/qgs/qgsd.service /qgsd.service 0 main STP +/quote_wrapper/qgs/qgsd.conf /qgsd.conf 0 main STP +/quote_wrapper/qgs/qgs.conf /conf/qgs.conf 0 main STP +/quote_wrapper/qgs/qgs /qgs 0 main STP +/installer/linux/common/tdx-qgs/startup.sh /startup.sh 0 main STP +/installer/linux/common/tdx-qgs/cleanup.sh /cleanup.sh 0 main STP +/installer/linux/common/tdx-qgs/linksgx.sh /linksgx.sh 0 main STP diff --git a/QuoteGeneration/installer/linux/common/tdx-qgs/Makefile b/QuoteGeneration/installer/linux/common/tdx-qgs/Makefile new file mode 100644 index 00000000..fcf4b7f7 --- /dev/null +++ b/QuoteGeneration/installer/linux/common/tdx-qgs/Makefile @@ -0,0 +1,73 @@ +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + +include installConfig + +PACKAGE_ROOT_FOLDER=pkgroot +PACKAGES=$(notdir $(wildcard $(PACKAGE_ROOT_FOLDER)/*)) + +QGSD_CONF_NAME=$(if $(wildcard /run/systemd/system/.*),qgsd.service,$(if $(wildcard /etc/init/.*),qgsd.conf,)) +QGSD_CONF_DEL=$(if $(wildcard /run/systemd/system/.*),qgsd.conf,$(if $(wildcard /etc/init/.*),qgsd.service,)) +QGSD_CONF_PATH=$(if $(wildcard /run/systemd/system/.*),$(if $(wildcard /lib/systemd/system/.*),/lib/systemd/system,/usr/lib/systemd/system),$(if $(wildcard /etc/init/.*),/etc/init/)) + +ifeq ($(QGSD_CONF_NAME),) +ifneq ($(shell awk -F/ '$$2 == "docker"' /proc/self/cgroup),) +QGSD_CONF_NAME=qgsd.service +QGSD_CONF_DEL=qgsd.conf +QGSD_CONF_PATH=/lib/systemd/system +$(warning "You may need to start qgsd manually after it's installed!") +else +$(error "Unsupported platform - neither systemctl nor initctl is found!") +endif +endif + +default: + +install: $(PACKAGES) + install -d $(shell readlink -m $(DESTDIR)/$(QGSD_CONF_PATH)) + sed -e "s:@qgs_folder@:$(TDX_QGS_PACKAGE_PATH)/$(TDX_QGS_PACKAGE_NAME):" \ + $(DESTDIR)/$(TDX_QGS_PACKAGE_PATH)/$(TDX_QGS_PACKAGE_NAME)/$(QGSD_CONF_NAME) \ + > $(DESTDIR)/$(QGSD_CONF_PATH)/$(QGSD_CONF_NAME) + rm -f $(DESTDIR)/$(TDX_QGS_PACKAGE_PATH)/$(TDX_QGS_PACKAGE_NAME)/$(QGSD_CONF_NAME) + rm -f $(DESTDIR)/$(TDX_QGS_PACKAGE_PATH)/$(TDX_QGS_PACKAGE_NAME)/$(QGSD_CONF_DEL) + $(if $(shell grep '^ID=clear-linux-os' /usr/lib/os-release 2> /dev/null), \ + $(if $(wildcard $(DESTDIR)/$(TDX_QGS_PACKAGE_PATH)/$(TDX_QGS_PACKAGE_NAME)/conf/qgsd.conf), \ + mv $(DESTDIR)/$(TDX_QGS_PACKAGE_PATH)/$(TDX_QGS_PACKAGE_NAME)/conf/qgsd.conf \ + $(DESTDIR)/$(TDX_QGS_PACKAGE_PATH)/$(TDX_QGS_PACKAGE_NAME)/conf/qgsd.conf.sample), \ + $(if $(wildcard $(DESTDIR)/$(TDX_QGS_PACKAGE_PATH)/$(TDX_QGS_PACKAGE_NAME)/conf/.*), \ + install -d $(shell readlink -m $(DESTDIR)/$(ETC_DIR)) && \ + cp -fr $(DESTDIR)/$(TDX_QGS_PACKAGE_PATH)/$(TDX_QGS_PACKAGE_NAME)/conf/* \ + $(DESTDIR)/$(ETC_DIR) && \ + rm -fr $(DESTDIR)/$(TDX_QGS_PACKAGE_PATH)/$(TDX_QGS_PACKAGE_NAME)/conf)) + +$(PACKAGES): + install -d $(shell readlink -m $(DESTDIR)/$(TDX_QGS_PACKAGE_PATH)/$(TDX_QGS_PACKAGE_NAME)) + cp -r $(PACKAGE_ROOT_FOLDER)/$@/* $(DESTDIR)/$(TDX_QGS_PACKAGE_PATH)/$(TDX_QGS_PACKAGE_NAME) diff --git a/QuoteGeneration/installer/linux/common/tdx-qgs/cleanup.sh b/QuoteGeneration/installer/linux/common/tdx-qgs/cleanup.sh new file mode 100755 index 00000000..e0cf354b --- /dev/null +++ b/QuoteGeneration/installer/linux/common/tdx-qgs/cleanup.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +if test $(id -u) -ne 0; then + echo "Root privilege is required." + exit 1 +fi + +# Kill qgsd service +if [ -d /run/systemd/system ]; then + systemctl daemon-reload + systemctl stop qgsd + systemctl disable qgsd 2> /dev/null +elif [ -d /etc/init/ ]; then + /sbin/initctl reload-configuration + /sbin/initctl stop qgsd +fi + +# Remove qgsd user and group +/usr/sbin/userdel qgsd 2> /dev/null || true +/usr/sbin/groupdel qgsd 2> /dev/null || true + +exit 0 diff --git a/QuoteGeneration/installer/linux/common/tdx-qgs/createTarball.sh b/QuoteGeneration/installer/linux/common/tdx-qgs/createTarball.sh new file mode 100755 index 00000000..6797401f --- /dev/null +++ b/QuoteGeneration/installer/linux/common/tdx-qgs/createTarball.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +SCRIPT_DIR=$(dirname "$0") +ROOT_DIR="${SCRIPT_DIR}/../../../../" +LINUX_INSTALLER_DIR="${ROOT_DIR}/installer/linux" +LINUX_INSTALLER_COMMON_DIR="${LINUX_INSTALLER_DIR}/common" + +INSTALL_PATH=${SCRIPT_DIR}/output + +# Cleanup +rm -fr ${INSTALL_PATH} + +# Get the configuration for this package +source ${SCRIPT_DIR}/installConfig + +# Fetch the gen_source script +cp ${LINUX_INSTALLER_COMMON_DIR}/gen_source/gen_source.py ${SCRIPT_DIR} + +# Copy the files according to the BOM +python ${SCRIPT_DIR}/gen_source.py --bom=BOMs/tdx-qgs.txt --cleanup=false --installdir=pkgroot/tdx-qgs +python ${SCRIPT_DIR}/gen_source.py --bom=BOMs/tdx-qgs-package.txt --cleanup=false + +# Create the tarball +pushd ${INSTALL_PATH} &> /dev/null +tar -zcvf ${TARBALL_NAME} * +popd &> /dev/null diff --git a/QuoteGeneration/installer/linux/common/tdx-qgs/installConfig b/QuoteGeneration/installer/linux/common/tdx-qgs/installConfig new file mode 100644 index 00000000..811166c9 --- /dev/null +++ b/QuoteGeneration/installer/linux/common/tdx-qgs/installConfig @@ -0,0 +1,7 @@ +TDX_QGS_VERSION="1.0" +TARBALL_NAME=tdx-qgs_1.0.orig.tar.gz + +TDX_QGS_PACKAGE_PATH=/opt/intel +TDX_QGS_PACKAGE_NAME=tdx-qgs + +ETC_DIR=etc diff --git a/QuoteGeneration/installer/linux/common/tdx-qgs/linksgx.sh b/QuoteGeneration/installer/linux/common/tdx-qgs/linksgx.sh new file mode 100755 index 00000000..2d9bdb69 --- /dev/null +++ b/QuoteGeneration/installer/linux/common/tdx-qgs/linksgx.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + +if test $(id -u) -ne 0; then + echo "Root privilege is required." + exit 1 +fi + +if [ -c /dev/sgx_provision -o -c /dev/sgx/provision ]; then + getent group sgx_prv &> /dev/null + if [ "$?" != "0" ]; then + # Add sgx_prv for dcap driver, which ensures that no matter what + # the order of package installation, aesmd can have access to + # the sgx_provision device file. + groupadd sgx_prv + + if ! which udevadm &> /dev/null; then + exit 0 + fi + udevadm control --reload || : + udevadm trigger || : + fi + usermod -aG sgx_prv qgsd &> /dev/null + + # For systemd which supports https://github.com/systemd/systemd/pull/18944/files + if [ "sgx" = "$(stat -c '%G' /dev/sgx_enclave 2>/dev/null)" ]; then + usermod -aG sgx qgsd &> /dev/null + fi +fi + +/usr/sbin/modprobe vhost-vsock &> /dev/null +/usr/sbin/modprobe vsock_loopback &> /dev/null + +echo diff --git a/QuoteGeneration/installer/linux/common/tdx-qgs/startup.sh b/QuoteGeneration/installer/linux/common/tdx-qgs/startup.sh new file mode 100755 index 00000000..230c666d --- /dev/null +++ b/QuoteGeneration/installer/linux/common/tdx-qgs/startup.sh @@ -0,0 +1,57 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +if test $(id -u) -ne 0; then + echo "Root privilege is required." + exit 1 +fi + + +# Create user and group if not exist +id -u qgsd &> /dev/null || \ + /usr/sbin/useradd -r -U -c "User for qgsd" \ + -d /var/opt/qgsd -s /sbin/nologin qgsd + + +# Start the AESMD service +if [ -d /run/systemd/system ]; then + systemctl enable qgsd + systemctl start qgsd +elif [ -d /etc/init/ ]; then + /sbin/initctl reload-configuration + /sbin/initctl start qgsd +fi + +exit 0 diff --git a/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/build.sh b/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/build.sh new file mode 100755 index 00000000..6e62d93d --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/build.sh @@ -0,0 +1,116 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +SCRIPT_DIR=$(dirname "$0") +ROOT_DIR="${SCRIPT_DIR}/../../../../" +LINUX_INSTALLER_DIR="${ROOT_DIR}/installer/linux" +LINUX_INSTALLER_COMMON_DIR="${LINUX_INSTALLER_DIR}/common" +LINUX_INSTALLER_COMMON_AE_TDX_DIR="${LINUX_INSTALLER_COMMON_DIR}/libsgx-ae-tdqe" +source ${LINUX_INSTALLER_COMMON_AE_TDX_DIR}/installConfig +DEB_FOLDER=${AE_TDX_PACKAGE_NAME}-${AE_TDX_VERSION} + +SGX_VERSION=$(awk '/STRFILEVER/ {print $3}' ${ROOT_DIR}/common/inc/internal/se_version.h|sed 's/^\"\(.*\)\"$/\1/') +DEB_BUILD_FOLDER=${AE_TDX_PACKAGE_NAME}-${SGX_VERSION} + +main() { + pre_build + create_upstream_tarball + unpack_upstream_tarball + generate_copyright + update_version + rename_tarball + build_deb_package + post_build +} + +pre_build() { + rm -fR ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} + cp -fR ${SCRIPT_DIR}/${DEB_FOLDER} ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} +} + +post_build() { + rm -fR ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} +} + +create_upstream_tarball() { + ${LINUX_INSTALLER_COMMON_AE_TDX_DIR}/createTarball.sh + cp ${LINUX_INSTALLER_COMMON_AE_TDX_DIR}/output/${TARBALL_NAME} ${SCRIPT_DIR} +} + +unpack_upstream_tarball() { + pushd ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} + cp ../${TARBALL_NAME} . + tar xvf ${TARBALL_NAME} + rm -f ${TARBALL_NAME} + popd +} + +generate_copyright() { + pushd ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} + rm -f debian/copyright + find package/licenses/ -type f -print0 | xargs -0 -n1 cat >> debian/copyright + popd +} + +get_os_code() { + OS_CODE=$(lsb_release -cs 2> /dev/null) + if [ -z ${OS_CODE} ]; then + OS_CODE=$(grep "VERSION_CODENAME" /etc/os-release 2> /dev/null | cut -d= -f2) + fi + echo ${OS_CODE} +} + +update_version() { + pushd ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} + INS_VERSION=$(echo $(dpkg-parsechangelog |grep "Version" | cut -d: -f2)) + DEB_VERSION=$(echo $INS_VERSION | cut -d- -f2) + + FULL_VERSION=${SGX_VERSION}-$(get_os_code)${DEB_VERSION} + sed -i "s/${INS_VERSION}/${FULL_VERSION}/" debian/changelog + popd +} + +rename_tarball() { + TARBALL_NAME_NEW_VERSION=$(echo ${TARBALL_NAME} | sed "s/${AE_TDX_VERSION}/${SGX_VERSION}/") + mv ${SCRIPT_DIR}/${TARBALL_NAME} ${SCRIPT_DIR}/${TARBALL_NAME_NEW_VERSION} +} + +build_deb_package() { + pushd ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} + SOURCE_DATE_EPOCH="$(date +%s)" dpkg-buildpackage -us -uc + popd +} + +main $@ diff --git a/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/clean.sh b/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/clean.sh new file mode 100755 index 00000000..d9232837 --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/clean.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +SCRIPT_DIR=$(dirname "$0") +COMMON_DIR="${SCRIPT_DIR}/../../common/libsgx-ae-tdqe" + +rm -f ${SCRIPT_DIR}/libsgx-ae-tdqe*.deb +rm -f ${SCRIPT_DIR}/libsgx-ae-tdqe*.ddeb +rm -f ${SCRIPT_DIR}/libsgx-ae-tdqe*.tar.gz +rm -f ${SCRIPT_DIR}/libsgx-ae-tdqe*.tar.xz +rm -f ${SCRIPT_DIR}/libsgx-ae-tdqe*.dsc +rm -f ${SCRIPT_DIR}/libsgx-ae-tdqe*.changes +rm -f ${SCRIPT_DIR}/libsgx-ae-tdqe*.buildinfo +rm -f ${COMMON_DIR}/gen_source.py +rm -rf ${COMMON_DIR}/output diff --git a/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/changelog b/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/changelog new file mode 100644 index 00000000..8c74db78 --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/changelog @@ -0,0 +1,5 @@ +libsgx-ae-tdqe (1.0-1) unstable; urgency=low + + * 0.1 pre-alpha release + + -- Qiu Feng Mon, 27 Jul 2020 10:54:41 +0800 diff --git a/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/compat b/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/compat new file mode 100644 index 00000000..ec635144 --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/compat @@ -0,0 +1 @@ +9 diff --git a/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/control b/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/control new file mode 100644 index 00000000..89010583 --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/control @@ -0,0 +1,11 @@ +Source: libsgx-ae-tdqe +Section: libs +Priority: optional +Maintainer: +Build-Depends: debhelper (>= 8.0.0) +Standards-Version: 3.9.4 +Homepage: https://github.com/intel/SGXDataCenterAttestationPrimitives + +Package: libsgx-ae-tdqe +Architecture: amd64 +Description: Intel(R) Trust Domain Extensions QE diff --git a/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/docs b/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/docs new file mode 100644 index 00000000..e69de29b diff --git a/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/rules b/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/rules new file mode 100755 index 00000000..ecf4506c --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/rules @@ -0,0 +1,8 @@ +#!/usr/bin/make -f +# -*- makefile -*- + +# Uncomment this to turn on verbose mode. +export DH_VERBOSE=1 + +%: + dh $@ diff --git a/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/source/format b/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/source/format new file mode 100644 index 00000000..163aaf8d --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/libsgx-ae-tdqe/libsgx-ae-tdqe-1.0/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/QuoteGeneration/installer/linux/deb/libsgx-dcap-ql/build.sh b/QuoteGeneration/installer/linux/deb/libsgx-dcap-ql/build.sh index eac8450e..851eae8d 100755 --- a/QuoteGeneration/installer/linux/deb/libsgx-dcap-ql/build.sh +++ b/QuoteGeneration/installer/linux/deb/libsgx-dcap-ql/build.sh @@ -35,6 +35,7 @@ set -e SCRIPT_DIR=$(dirname "$0") ROOT_DIR="${SCRIPT_DIR}/../../../../" +LINUX_BUILD_DIR=$(readlink -m "${ROOT_DIR}/build/linux") LINUX_INSTALLER_DIR="${ROOT_DIR}/installer/linux" LINUX_INSTALLER_COMMON_DIR="${LINUX_INSTALLER_DIR}/common" LINUX_INSTALLER_COMMON_DCAP_QL_DIR="${LINUX_INSTALLER_COMMON_DIR}/libsgx-dcap-ql" @@ -117,8 +118,7 @@ rename_tarball() { build_deb_package() { pushd ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} - SOURCE_DATE_EPOCH="$(date +%s)" dpkg-buildpackage -us -uc + SOURCE_DATE_EPOCH="$(date +%s)" LINUX_BUILD_DIR="${LINUX_BUILD_DIR}" dpkg-buildpackage -us -uc popd } - main $@ diff --git a/QuoteGeneration/installer/linux/deb/libsgx-dcap-ql/libsgx-dcap-ql-1.0/debian/control b/QuoteGeneration/installer/linux/deb/libsgx-dcap-ql/libsgx-dcap-ql-1.0/debian/control index 9d05d971..91ae8f13 100644 --- a/QuoteGeneration/installer/linux/deb/libsgx-dcap-ql/libsgx-dcap-ql-1.0/debian/control +++ b/QuoteGeneration/installer/linux/deb/libsgx-dcap-ql/libsgx-dcap-ql-1.0/debian/control @@ -9,11 +9,11 @@ Homepage: https://github.com/intel/SGXDataCenterAttestationPrimitives Package: libsgx-dcap-ql Architecture: amd64 Depends: libsgx-qe3-logic(>= @dep_version@), libsgx-pce-logic(>= @dep_version@), ${shlibs:Depends}, ${misc:Depends} -Recommends: libsgx-dcap-quote-verify(>= @dep_version@), libsgx-quote-ex(>= 2.16) +Recommends: libsgx-dcap-quote-verify(>= @dep_version@), libsgx-quote-ex(>= 2.17) Description: Intel(R) Software Guard Extensions Data Center Attestation Primitives Package: libsgx-dcap-ql-dev Section: devel Architecture: amd64 -Depends: libsgx-dcap-ql (= @dep_version@), libsgx-headers (>= 2.16) +Depends: libsgx-dcap-ql (= @dep_version@), libsgx-headers (>= 2.17) Description: Intel(R) Software Guard Extensions Data Center Attestation Primitives For Developers diff --git a/QuoteGeneration/installer/linux/deb/libsgx-dcap-ql/libsgx-dcap-ql-1.0/debian/rules b/QuoteGeneration/installer/linux/deb/libsgx-dcap-ql/libsgx-dcap-ql-1.0/debian/rules index ecf4506c..208b0b31 100755 --- a/QuoteGeneration/installer/linux/deb/libsgx-dcap-ql/libsgx-dcap-ql-1.0/debian/rules +++ b/QuoteGeneration/installer/linux/deb/libsgx-dcap-ql/libsgx-dcap-ql-1.0/debian/rules @@ -6,3 +6,6 @@ export DH_VERBOSE=1 %: dh $@ + +override_dh_shlibdeps: + dh_shlibdeps -l $(LINUX_BUILD_DIR) --dpkg-shlibdeps-params=--ignore-missing-info diff --git a/QuoteGeneration/installer/linux/deb/libsgx-dcap-quote-verify/libsgx-dcap-quote-verify-1.0/debian/control b/QuoteGeneration/installer/linux/deb/libsgx-dcap-quote-verify/libsgx-dcap-quote-verify-1.0/debian/control index 43047847..d64ae373 100644 --- a/QuoteGeneration/installer/linux/deb/libsgx-dcap-quote-verify/libsgx-dcap-quote-verify-1.0/debian/control +++ b/QuoteGeneration/installer/linux/deb/libsgx-dcap-quote-verify/libsgx-dcap-quote-verify-1.0/debian/control @@ -15,5 +15,5 @@ Description: Intel(R) Software Guard Extensions Data Center Attestation Primitiv Package: libsgx-dcap-quote-verify-dev Section: devel Architecture: amd64 -Depends: libsgx-dcap-quote-verify (= @dep_version@), libsgx-headers (>= 2.16) +Depends: libsgx-dcap-quote-verify (= @dep_version@), libsgx-headers (>= 2.17) Description: Intel(R) Software Guard Extensions Data Center Attestation Primitives For Developers diff --git a/QuoteGeneration/installer/linux/deb/libsgx-pce-logic/libsgx-pce-logic-1.0/debian/control b/QuoteGeneration/installer/linux/deb/libsgx-pce-logic/libsgx-pce-logic-1.0/debian/control index 3984c0e2..be6a5ecd 100644 --- a/QuoteGeneration/installer/linux/deb/libsgx-pce-logic/libsgx-pce-logic-1.0/debian/control +++ b/QuoteGeneration/installer/linux/deb/libsgx-pce-logic/libsgx-pce-logic-1.0/debian/control @@ -8,5 +8,5 @@ Homepage: https://github.com/intel/SGXDataCenterAttestationPrimitives Package: libsgx-pce-logic Architecture: amd64 -Depends: libsgx-urts (>= 2.16), libsgx-ae-pce(>= 2.16), ${shlibs:Depends}, ${misc:Depends} +Depends: libsgx-urts (>= 2.17), libsgx-ae-pce(>= 2.17), ${shlibs:Depends}, ${misc:Depends} Description: Intel(R) Software Guard Extensions Data Center Attestation Primitives diff --git a/QuoteGeneration/installer/linux/deb/libsgx-qe3-logic/libsgx-qe3-logic-1.0/debian/control b/QuoteGeneration/installer/linux/deb/libsgx-qe3-logic/libsgx-qe3-logic-1.0/debian/control index 5ea7cadf..accd0c1f 100644 --- a/QuoteGeneration/installer/linux/deb/libsgx-qe3-logic/libsgx-qe3-logic-1.0/debian/control +++ b/QuoteGeneration/installer/linux/deb/libsgx-qe3-logic/libsgx-qe3-logic-1.0/debian/control @@ -8,5 +8,5 @@ Homepage: https://github.com/intel/SGXDataCenterAttestationPrimitives Package: libsgx-qe3-logic Architecture: amd64 -Depends: libsgx-urts (>= 2.16), libsgx-ae-qe3(>= @dep_version@), libsgx-ae-id-enclave(>= @dep_version@), ${shlibs:Depends}, ${misc:Depends} +Depends: libsgx-urts (>= 2.17), libsgx-ae-qe3(>= @dep_version@), libsgx-ae-id-enclave(>= @dep_version@), ${shlibs:Depends}, ${misc:Depends} Description: Intel(R) Software Guard Extensions Data Center Attestation Primitives diff --git a/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/build.sh b/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/build.sh new file mode 100755 index 00000000..c6ba7fd3 --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/build.sh @@ -0,0 +1,125 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +SCRIPT_DIR=$(dirname "$0") +ROOT_DIR="${SCRIPT_DIR}/../../../../" +LINUX_BUILD_DIR=$(readlink -m "${ROOT_DIR}/build/linux") +LINUX_INSTALLER_DIR="${ROOT_DIR}/installer/linux" +LINUX_INSTALLER_COMMON_DIR="${LINUX_INSTALLER_DIR}/common" +LINUX_INSTALLER_COMMON_TDX_LOGIC_DIR="${LINUX_INSTALLER_COMMON_DIR}/libsgx-tdx-logic" + +source ${LINUX_INSTALLER_COMMON_TDX_LOGIC_DIR}/installConfig +DEB_FOLDER=${TDX_LOGIC_PACKAGE_NAME}-${TDX_LOGIC_VERSION} + +SGX_VERSION=$(awk '/STRFILEVER/ {print $3}' ${ROOT_DIR}/common/inc/internal/se_version.h|sed 's/^\"\(.*\)\"$/\1/') +DEB_BUILD_FOLDER=${TDX_LOGIC_PACKAGE_NAME}-${SGX_VERSION} + +main() { + pre_build + create_upstream_tarball + unpack_upstream_tarball + generate_install + generate_copyright + update_version + rename_tarball + build_deb_package + post_build +} + +pre_build() { + rm -fR ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} + cp -fR ${SCRIPT_DIR}/${DEB_FOLDER} ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} +} + +post_build() { + rm -fR ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} +} + +create_upstream_tarball() { + ${LINUX_INSTALLER_COMMON_TDX_LOGIC_DIR}/createTarball.sh + cp ${LINUX_INSTALLER_COMMON_TDX_LOGIC_DIR}/output/${TARBALL_NAME} ${SCRIPT_DIR} +} + +unpack_upstream_tarball() { + pushd ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} + cp ../${TARBALL_NAME} . + tar xvf ${TARBALL_NAME} + rm -f ${TARBALL_NAME} + popd +} + +generate_install() { + echo "debian/tmp/${TDX_LOGIC_PACKAGE_NAME}/* ." > ${SCRIPT_DIR}/${DEB_BUILD_FOLDER}/debian/${TDX_LOGIC_PACKAGE_NAME}.install + echo "debian/tmp/${TDX_LOGIC_DEV_PACKAGE_NAME}/* ." > ${SCRIPT_DIR}/${DEB_BUILD_FOLDER}/debian/${TDX_LOGIC_DEV_PACKAGE_NAME}.install +} + +generate_copyright() { + pushd ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} + rm -f debian/copyright + find package/licenses/ -type f -print0 | xargs -0 -n1 cat >> debian/copyright + popd +} + +get_os_code() { + OS_CODE=$(lsb_release -cs 2> /dev/null) + if [ -z ${OS_CODE} ]; then + OS_CODE=$(grep "VERSION_CODENAME" /etc/os-release 2> /dev/null | cut -d= -f2) + fi + echo ${OS_CODE} +} + +update_version() { + pushd ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} + INS_VERSION=$(echo $(dpkg-parsechangelog |grep "Version" | cut -d: -f2)) + DEB_VERSION=$(echo $INS_VERSION | cut -d- -f2) + + FULL_VERSION=${SGX_VERSION}-$(get_os_code)${DEB_VERSION} + sed -i "s/${INS_VERSION}/${FULL_VERSION}/" debian/changelog + sed -i "s/@dep_version@/${FULL_VERSION}/g" debian/control + popd +} + +rename_tarball() { + TARBALL_NAME_NEW_VERSION=$(echo ${TARBALL_NAME} | sed "s/${TDX_LOGIC_VERSION}/${SGX_VERSION}/") + mv ${SCRIPT_DIR}/${TARBALL_NAME} ${SCRIPT_DIR}/${TARBALL_NAME_NEW_VERSION} +} + +build_deb_package() { + pushd ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} + SOURCE_DATE_EPOCH="$(date +%s)" LINUX_BUILD_DIR="${LINUX_BUILD_DIR}" dpkg-buildpackage -us -uc + popd +} + +main $@ diff --git a/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/clean.sh b/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/clean.sh new file mode 100755 index 00000000..552c65c2 --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/clean.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +SCRIPT_DIR=$(dirname "$0") +COMMON_DIR="${SCRIPT_DIR}/../../common/libsgx-tdx-logic" + +rm -f ${SCRIPT_DIR}/libsgx-tdx-logic*.deb +rm -f ${SCRIPT_DIR}/libsgx-tdx-logic*.ddeb +rm -f ${SCRIPT_DIR}/libsgx-tdx-logic*.tar.gz +rm -f ${SCRIPT_DIR}/libsgx-tdx-logic*.tar.xz +rm -f ${SCRIPT_DIR}/libsgx-tdx-logic*.dsc +rm -f ${SCRIPT_DIR}/libsgx-tdx-logic*.changes +rm -f ${SCRIPT_DIR}/libsgx-tdx-logic*.buildinfo +rm -f ${COMMON_DIR}/gen_source.py +rm -rf ${COMMON_DIR}/output diff --git a/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/changelog b/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/changelog new file mode 100644 index 00000000..cd61389f --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/changelog @@ -0,0 +1,5 @@ +libsgx-tdx-logic (1.0-1) unstable; urgency=low + + * 0.1 pre-alpha release + + -- Qiu Feng Mon, 27 Jul 2020 10:54:41 +0800 diff --git a/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/compat b/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/compat new file mode 100644 index 00000000..ec635144 --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/compat @@ -0,0 +1 @@ +9 diff --git a/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/control b/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/control new file mode 100644 index 00000000..0b965bc6 --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/control @@ -0,0 +1,18 @@ +Source: libsgx-tdx-logic +Section: libs +Priority: optional +Maintainer: +Build-Depends: debhelper (>= 8.0.0) +Standards-Version: 3.9.4 +Homepage: https://github.com/intel/SGXDataCenterAttestationPrimitives + +Package: libsgx-tdx-logic +Architecture: amd64 +Depends: libsgx-urts (>= 2.17), libsgx-pce-logic(>= @dep_version@), libsgx-ae-tdqe(>= @dep_version@), libsgx-ae-id-enclave(>= @dep_version@), ${shlibs:Depends}, ${misc:Depends} +Description: Intel(R) Trust Domain Extensions QE logic library + +Package: libsgx-tdx-logic-dev +Section: devel +Architecture: amd64 +Depends: libsgx-tdx-logic (= @dep_version@) +Description: Intel(R) Trust Domain Extensions QE logic library For Developers diff --git a/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/docs b/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/docs new file mode 100644 index 00000000..e69de29b diff --git a/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/rules b/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/rules new file mode 100755 index 00000000..208b0b31 --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/rules @@ -0,0 +1,11 @@ +#!/usr/bin/make -f +# -*- makefile -*- + +# Uncomment this to turn on verbose mode. +export DH_VERBOSE=1 + +%: + dh $@ + +override_dh_shlibdeps: + dh_shlibdeps -l $(LINUX_BUILD_DIR) --dpkg-shlibdeps-params=--ignore-missing-info diff --git a/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/source/format b/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/source/format new file mode 100644 index 00000000..163aaf8d --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/libsgx-tdx-logic/libsgx-tdx-logic-1.0/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/QuoteGeneration/installer/linux/deb/libtdx-attest/build.sh b/QuoteGeneration/installer/linux/deb/libtdx-attest/build.sh new file mode 100755 index 00000000..f1ba8f9f --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/libtdx-attest/build.sh @@ -0,0 +1,124 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +SCRIPT_DIR=$(dirname "$0") +ROOT_DIR="${SCRIPT_DIR}/../../../../" +LINUX_INSTALLER_DIR="${ROOT_DIR}/installer/linux" +LINUX_INSTALLER_COMMON_DIR="${LINUX_INSTALLER_DIR}/common" +LINUX_INSTALLER_COMMON_TDX_ATTEST_DIR="${LINUX_INSTALLER_COMMON_DIR}/libtdx-attest" + +source ${LINUX_INSTALLER_COMMON_TDX_ATTEST_DIR}/installConfig +DEB_FOLDER=${TDX_ATTEST_PACKAGE_NAME}-${TDX_ATTEST_VERSION} + +SGX_VERSION=$(awk '/STRFILEVER/ {print $3}' ${ROOT_DIR}/common/inc/internal/se_version.h|sed 's/^\"\(.*\)\"$/\1/') +DEB_BUILD_FOLDER=${TDX_ATTEST_PACKAGE_NAME}-${SGX_VERSION} + +main() { + pre_build + create_upstream_tarball + unpack_upstream_tarball + generate_install + generate_copyright + update_version + rename_tarball + build_deb_package + post_build +} + +pre_build() { + rm -fR ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} + cp -fR ${SCRIPT_DIR}/${DEB_FOLDER} ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} +} + +post_build() { + rm -fR ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} +} + +create_upstream_tarball() { + ${LINUX_INSTALLER_COMMON_TDX_ATTEST_DIR}/createTarball.sh + cp ${LINUX_INSTALLER_COMMON_TDX_ATTEST_DIR}/output/${TARBALL_NAME} ${SCRIPT_DIR} +} + +unpack_upstream_tarball() { + pushd ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} + cp ../${TARBALL_NAME} . + tar xvf ${TARBALL_NAME} + rm -f ${TARBALL_NAME} + popd +} + +generate_install() { + echo "debian/tmp/${TDX_ATTEST_PACKAGE_NAME}/* ." > ${SCRIPT_DIR}/${DEB_BUILD_FOLDER}/debian/${TDX_ATTEST_PACKAGE_NAME}.install + echo "debian/tmp/${TDX_ATTEST_DEV_PACKAGE_NAME}/* ." > ${SCRIPT_DIR}/${DEB_BUILD_FOLDER}/debian/${TDX_ATTEST_DEV_PACKAGE_NAME}.install +} + +generate_copyright() { + pushd ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} + rm -f debian/copyright + find package/licenses/ -type f -print0 | xargs -0 -n1 cat >> debian/copyright + popd +} + +get_os_code() { + OS_CODE=$(lsb_release -cs 2> /dev/null) + if [ -z ${OS_CODE} ]; then + OS_CODE=$(grep "VERSION_CODENAME" /etc/os-release 2> /dev/null | cut -d= -f2) + fi + echo ${OS_CODE} +} + +update_version() { + pushd ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} + INS_VERSION=$(echo $(dpkg-parsechangelog |grep "Version" | cut -d: -f2)) + DEB_VERSION=$(echo $INS_VERSION | cut -d- -f2) + + FULL_VERSION=${SGX_VERSION}-$(get_os_code)${DEB_VERSION} + sed -i "s/${INS_VERSION}/${FULL_VERSION}/" debian/changelog + sed -i "s/@dep_version@/${FULL_VERSION}/g" debian/control + popd +} + +rename_tarball() { + TARBALL_NAME_NEW_VERSION=$(echo ${TARBALL_NAME} | sed "s/${TDX_ATTEST_VERSION}/${SGX_VERSION}/") + mv ${SCRIPT_DIR}/${TARBALL_NAME} ${SCRIPT_DIR}/${TARBALL_NAME_NEW_VERSION} +} + +build_deb_package() { + pushd ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} + SOURCE_DATE_EPOCH="$(date +%s)" dpkg-buildpackage -us -uc + popd +} + +main $@ diff --git a/QuoteGeneration/installer/linux/deb/libtdx-attest/clean.sh b/QuoteGeneration/installer/linux/deb/libtdx-attest/clean.sh new file mode 100755 index 00000000..63175f24 --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/libtdx-attest/clean.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +SCRIPT_DIR=$(dirname "$0") +COMMON_DIR="${SCRIPT_DIR}/../../common/libsgx-dcap-ql" + +rm -f ${SCRIPT_DIR}/libsgx-dcap-ql*.deb +rm -f ${SCRIPT_DIR}/libsgx-dcap-ql*.ddeb +rm -f ${SCRIPT_DIR}/libsgx-dcap-ql*.tar.gz +rm -f ${SCRIPT_DIR}/libsgx-dcap-ql*.tar.xz +rm -f ${SCRIPT_DIR}/libsgx-dcap-ql*.dsc +rm -f ${SCRIPT_DIR}/libsgx-dcap-ql*.changes +rm -f ${SCRIPT_DIR}/libsgx-dcap-ql*.buildinfo +rm -f ${COMMON_DIR}/gen_source.py +rm -rf ${COMMON_DIR}/output diff --git a/QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/changelog b/QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/changelog new file mode 100644 index 00000000..e3443d07 --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/changelog @@ -0,0 +1,5 @@ +libtdx-attest (1.0-1) unstable; urgency=low + + * Initial revision + + -- Feng Qiu Wed, 20 Jan 2021 15:19:41 +0800 diff --git a/QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/compat b/QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/compat new file mode 100644 index 00000000..ec635144 --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/compat @@ -0,0 +1 @@ +9 diff --git a/QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/control b/QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/control new file mode 100644 index 00000000..72dfa2be --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/control @@ -0,0 +1,18 @@ +Source: libtdx-attest +Section: libs +Priority: optional +Maintainer: +Build-Depends: debhelper (>= 8.0.0) +Standards-Version: 3.9.4 +Homepage: https://github.com/intel/SGXDataCenterAttestationPrimitives + +Package: libtdx-attest +Architecture: amd64 +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Intel(R) Trust Domain Extensions Attestation library + +Package: libtdx-attest-dev +Section: devel +Architecture: amd64 +Depends: libtdx-attest (= @dep_version@) +Description: Intel(R) Trust Domain Extensions Attestation For Developers diff --git a/QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/docs b/QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/docs new file mode 100644 index 00000000..e69de29b diff --git a/QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/rules b/QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/rules new file mode 100755 index 00000000..ecf4506c --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/rules @@ -0,0 +1,8 @@ +#!/usr/bin/make -f +# -*- makefile -*- + +# Uncomment this to turn on verbose mode. +export DH_VERBOSE=1 + +%: + dh $@ diff --git a/QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/source/format b/QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/source/format new file mode 100644 index 00000000..163aaf8d --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/libtdx-attest/libtdx-attest-1.0/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/QuoteGeneration/installer/linux/deb/sgx-dcap-pccs/build.sh b/QuoteGeneration/installer/linux/deb/sgx-dcap-pccs/build.sh index 62bcd847..d98b9d7f 100755 --- a/QuoteGeneration/installer/linux/deb/sgx-dcap-pccs/build.sh +++ b/QuoteGeneration/installer/linux/deb/sgx-dcap-pccs/build.sh @@ -107,7 +107,8 @@ update_version() { update_install_path() { pushd ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} sed -i "s#@pkg_path@#${DCAP_PCCS_PACKAGE_PATH}/${DCAP_PCCS_PACKAGE_NAME}#" debian/conffiles - sed -i "s#@pkg_path@#${DCAP_PCCS_PACKAGE_PATH}/${DCAP_PCCS_PACKAGE_NAME}#" debian/postrm + sed -i "s#@pkg_path@#${DCAP_PCCS_PACKAGE_PATH}/${DCAP_PCCS_PACKAGE_NAME}#" debian/postinst + sed -i "s#@pkg_path@#${DCAP_PCCS_PACKAGE_PATH}/${DCAP_PCCS_PACKAGE_NAME}#" debian/prerm popd } diff --git a/QuoteGeneration/installer/linux/deb/sgx-dcap-pccs/sgx-dcap-pccs-1.0/debian/postinst b/QuoteGeneration/installer/linux/deb/sgx-dcap-pccs/sgx-dcap-pccs-1.0/debian/postinst index bd65d786..eafe0a64 100755 --- a/QuoteGeneration/installer/linux/deb/sgx-dcap-pccs/sgx-dcap-pccs-1.0/debian/postinst +++ b/QuoteGeneration/installer/linux/deb/sgx-dcap-pccs/sgx-dcap-pccs-1.0/debian/postinst @@ -17,49 +17,11 @@ set -e # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package +PACKAGE_PATH=@pkg_path@ case "$1" in configure) - PCCS_USER=pccs - PCCS_HOME=/opt/intel/sgx-dcap-pccs - if ! id "$PCCS_USER" &>/dev/null; then - adduser --quiet --system $PCCS_USER --group --home $PCCS_HOME --no-create-home --shell /bin/bash - fi - chown -R $PCCS_USER:$PCCS_USER $PCCS_HOME - if [ "${DEBIAN_FRONTEND}" != "noninteractive" ] - then - /bin/su -c "/opt/intel/sgx-dcap-pccs/install.sh" $PCCS_USER - fi - - #Install PCCS as system service - echo -n "Installing PCCS service ..." - if [ -d /run/systemd/system ]; then - PCCS_NAME=pccs.service - PCCS_TEMP=$PCCS_HOME/$PCCS_NAME - if [ -d /lib/systemd/system ]; then - PCCS_DEST=/lib/systemd/system/$PCCS_NAME - else - PCCS_DEST=/usr/lib/systemd/system/$PCCS_NAME - fi - cp $PCCS_TEMP $PCCS_DEST - chmod 0644 $PCCS_DEST - systemctl daemon-reload - systemctl enable pccs - systemctl start pccs - elif [ -d /etc/init/ ]; then - PCCS_NAME=pccs.service - PCCS_TEMP=$PCCS_HOME/$PCCS_NAME - PCCS_DEST=/etc/init/$PCCS_NAME - cp $PCCS_TEMP $PCCS_DEST - chmod 0644 $PCCS_DEST - /sbin/initctl reload-configuration - else - echo "failed." - echo "Unsupported platform - neither systemctl nor initctl was found." - exit 5 - fi - echo "finished." - echo "Installation completed successfully." + if [ -x ${PACKAGE_PATH}/startup.sh ]; then ${PACKAGE_PATH}/startup.sh debian; fi ;; abort-upgrade|abort-remove|abort-deconfigure) diff --git a/QuoteGeneration/installer/linux/deb/sgx-dcap-pccs/sgx-dcap-pccs-1.0/debian/postrm b/QuoteGeneration/installer/linux/deb/sgx-dcap-pccs/sgx-dcap-pccs-1.0/debian/postrm deleted file mode 100755 index 0d1376dc..00000000 --- a/QuoteGeneration/installer/linux/deb/sgx-dcap-pccs/sgx-dcap-pccs-1.0/debian/postrm +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/env bash -# postrm script for sgx-dcap-pccs -# -# see: dh_installdeb(1) - -set -e - -# summary of how this script can be called: -# * `remove' -# * `purge' -# * `upgrade' -# * `failed-upgrade' -# * `abort-install' -# * `abort-install' -# * `abort-upgrade' -# * `disappear' -# -# for details, see http://www.debian.org/doc/debian-policy/ or -# the debian-policy package - - -case "$1" in - remove) - if [ -d @pkg_path@ ] - then - pushd @pkg_path@ &> /dev/null - rm -rf node_modules || true - popd &> /dev/null - fi - - #Remove PCCS system service - echo -n "Uninstalling PCCS service ..." - if [ -d /run/systemd/system ]; then - PCCS_NAME=pccs.service - if [ -d /lib/systemd/system ]; then - PCCS_DEST=/lib/systemd/system/$PCCS_NAME - else - PCCS_DEST=/usr/lib/systemd/system/$PCCS_NAME - fi - systemctl stop pccs || true - systemctl disable pccs || true - rm $PCCS_DEST || true - systemctl daemon-reload - elif [ -d /etc/init/ ]; then - PCCS_NAME=pccs.service - PCCS_DEST=/etc/init/$PCCS_NAME - rm $PCCS_DEST || true - /sbin/initctl reload-configuration - fi - echo "finished." - ;; - - purge|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) - ;; - - *) - echo "postrm called with unknown argument \`$1'" >&2 - exit 1 - ;; -esac - -# dh_installdeb will replace this with shell code automatically -# generated by other debhelper scripts. - -#DEBHELPER# - -exit 0 diff --git a/QuoteGeneration/installer/linux/deb/sgx-dcap-pccs/sgx-dcap-pccs-1.0/debian/prerm b/QuoteGeneration/installer/linux/deb/sgx-dcap-pccs/sgx-dcap-pccs-1.0/debian/prerm new file mode 100755 index 00000000..c6e81731 --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/sgx-dcap-pccs/sgx-dcap-pccs-1.0/debian/prerm @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# prerm script for sgx-dcap-pccs +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `upgrade' +# * `failed-upgrade' +# * `remove' `in-favour' +# * `deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +PACKAGE_PATH=@pkg_path@ + +case "$1" in + remove|upgrade|deconfigure) + if [ -x ${PACKAGE_PATH}/cleanup.sh ]; then ${PACKAGE_PATH}/cleanup.sh; fi + ;; + + failed-upgrade) + ;; + + *) + echo "prerm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/QuoteGeneration/installer/linux/deb/tdx-qgs/build.sh b/QuoteGeneration/installer/linux/deb/tdx-qgs/build.sh new file mode 100755 index 00000000..f4e2f71a --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/tdx-qgs/build.sh @@ -0,0 +1,129 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +SCRIPT_DIR=$(dirname "$0") +ROOT_DIR="${SCRIPT_DIR}/../../../../" +LINUX_BUILD_DIR=$(readlink -m "${ROOT_DIR}/build/linux") +LINUX_INSTALLER_DIR="${ROOT_DIR}/installer/linux" +LINUX_INSTALLER_COMMON_DIR="${LINUX_INSTALLER_DIR}/common" +LINUX_INSTALLER_COMMON_TDX_QGS_DIR="${LINUX_INSTALLER_COMMON_DIR}/tdx-qgs" + +source ${LINUX_INSTALLER_COMMON_TDX_QGS_DIR}/installConfig +DEB_FOLDER=${TDX_QGS_PACKAGE_NAME}-${TDX_QGS_VERSION} + +SGX_VERSION=$(awk '/STRFILEVER/ {print $3}' ${ROOT_DIR}/common/inc/internal/se_version.h|sed 's/^\"\(.*\)\"$/\1/') +DEB_BUILD_FOLDER=${TDX_QGS_PACKAGE_NAME}-${SGX_VERSION} + +PACKAGE_NAMES[0]=${TDX_QGS_PACKAGE_NAME} + +main() { + pre_build + create_upstream_tarball + unpack_upstream_tarball + generate_copyright + update_version + update_install_path + rename_tarball + build_deb_package + post_build +} + +pre_build() { + rm -fR ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} + cp -fR ${SCRIPT_DIR}/${DEB_FOLDER} ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} +} + +post_build() { + rm -fR ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} +} + +create_upstream_tarball() { + ${LINUX_INSTALLER_COMMON_TDX_QGS_DIR}/createTarball.sh + cp ${LINUX_INSTALLER_COMMON_TDX_QGS_DIR}/output/${TARBALL_NAME} ${SCRIPT_DIR} +} + +unpack_upstream_tarball() { + pushd ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} + cp ../${TARBALL_NAME} . + tar xvf ${TARBALL_NAME} + rm -f ${TARBALL_NAME} + popd +} + +generate_copyright() { + pushd ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} + rm -f debian/copyright + find package/licenses/ -type f -print0 | xargs -0 -n1 cat >> debian/copyright + popd +} + +get_os_code() { + OS_CODE=$(lsb_release -cs 2> /dev/null) + if [ -z ${OS_CODE} ]; then + OS_CODE=$(grep "VERSION_CODENAME" /etc/os-release 2> /dev/null | cut -d= -f2) + fi + echo ${OS_CODE} +} + +update_version() { + pushd ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} + INS_VERSION=$(echo $(dpkg-parsechangelog |grep "Version" | cut -d: -f2)) + DEB_VERSION=$(echo ${INS_VERSION} | cut -d- -f2) + + FULL_VERSION=${SGX_VERSION}-$(get_os_code)${DEB_VERSION} + sed -i "s/${INS_VERSION}/${FULL_VERSION}/" debian/changelog + sed -i "s/@dep_version@/${FULL_VERSION}/g" debian/control + popd +} + +update_install_path() { + pushd ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} + sed -i "s#@pkg_path@#${TDX_QGS_PACKAGE_PATH}/${TDX_QGS_PACKAGE_NAME}#" debian/postinst + sed -i "s#@pkg_path@#${TDX_QGS_PACKAGE_PATH}/${TDX_QGS_PACKAGE_NAME}#" debian/prerm + popd +} + +rename_tarball() { + TARBALL_NAME_NEW_VERSION=$(echo ${TARBALL_NAME} | sed "s/${TDX_QGS_VERSION}/${SGX_VERSION}/") + mv ${SCRIPT_DIR}/${TARBALL_NAME} ${SCRIPT_DIR}/${TARBALL_NAME_NEW_VERSION} +} + +build_deb_package() { + pushd ${SCRIPT_DIR}/${DEB_BUILD_FOLDER} + SOURCE_DATE_EPOCH="$(date +%s)" LINUX_BUILD_DIR="${LINUX_BUILD_DIR}" dpkg-buildpackage -us -uc + popd +} + +main $@ diff --git a/QuoteGeneration/installer/linux/deb/tdx-qgs/clean.sh b/QuoteGeneration/installer/linux/deb/tdx-qgs/clean.sh new file mode 100755 index 00000000..1b71343b --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/tdx-qgs/clean.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +SCRIPT_DIR=$(dirname "$0") +COMMON_DIR="${SCRIPT_DIR}/../../common/tdx-qgs" + +rm -f ${SCRIPT_DIR}/tdx-qgs*.deb +rm -f ${SCRIPT_DIR}/tdx-qgs*dbgsym*.ddeb +rm -f ${SCRIPT_DIR}/tdx-qgs*.tar.gz +rm -f ${SCRIPT_DIR}/tdx-qgs*.tar.xz +rm -f ${SCRIPT_DIR}/tdx-qgs*.dsc +rm -f ${SCRIPT_DIR}/tdx-qgs*.changes +rm -f ${SCRIPT_DIR}/tdx-qgs*.buildinfo +rm -f ${COMMON_DIR}/gen_source.py +rm -rf ${COMMON_DIR}/output \ No newline at end of file diff --git a/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/changelog b/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/changelog new file mode 100644 index 00000000..b98dfd99 --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/changelog @@ -0,0 +1,5 @@ +tdx-qgs (1.0-1) unstable; urgency=low + + * Initial Release + + -- Xiangquan Liu Wed, 23 Dec 2020 15:23:51 +0800 diff --git a/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/compat b/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/compat new file mode 100644 index 00000000..ec635144 --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/compat @@ -0,0 +1 @@ +9 diff --git a/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/control b/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/control new file mode 100644 index 00000000..203779d4 --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/control @@ -0,0 +1,12 @@ +Source: tdx-qgs +Section: utils +Priority: optional +Maintainer: +Build-Depends: debhelper (>= 8.0.0) +Standards-Version: 3.9.4 +Homepage: https://github.com/intel/SGXDataCenterAttestationPrimitives + +Package: tdx-qgs +Architecture: amd64 +Depends: ${shlibs:Depends}, ${misc:Depends}, libsgx-tdx-logic(>= @dep_version@) +Description: Intel(R) TD Quoting Generation Service \ No newline at end of file diff --git a/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/docs b/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/docs new file mode 100644 index 00000000..e69de29b diff --git a/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/postinst b/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/postinst new file mode 100644 index 00000000..c5f96f3c --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/postinst @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +# postinst script for tdx-qgs +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-remove' +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +PACKAGE_PATH=@pkg_path@ + +case "$1" in + configure) + [[ -x ${PACKAGE_PATH}/startup.sh ]] && ${PACKAGE_PATH}/startup.sh + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/prerm b/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/prerm new file mode 100644 index 00000000..20fcc99e --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/prerm @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# prerm script for tdx-qgs +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `upgrade' +# * `failed-upgrade' +# * `remove' `in-favour' +# * `deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +PACKAGE_PATH=@pkg_path@ + +case "$1" in + remove|upgrade|deconfigure) + [[ -x ${PACKAGE_PATH}/cleanup.sh ]] && ${PACKAGE_PATH}/cleanup.sh + ;; + + failed-upgrade) + ;; + + *) + echo "prerm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/rules b/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/rules new file mode 100755 index 00000000..7770058a --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/rules @@ -0,0 +1,11 @@ +#!/usr/bin/make -f +# -*- makefile -*- + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +%: + dh $@ + +override_dh_shlibdeps: + dh_shlibdeps -l $(LINUX_BUILD_DIR) --dpkg-shlibdeps-params=--ignore-missing-info diff --git a/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/source/format b/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/source/format new file mode 100644 index 00000000..163aaf8d --- /dev/null +++ b/QuoteGeneration/installer/linux/deb/tdx-qgs/tdx-qgs-1.0/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/QuoteGeneration/installer/linux/rpm/libsgx-ae-tdqe/build.sh b/QuoteGeneration/installer/linux/rpm/libsgx-ae-tdqe/build.sh new file mode 100755 index 00000000..7888eb82 --- /dev/null +++ b/QuoteGeneration/installer/linux/rpm/libsgx-ae-tdqe/build.sh @@ -0,0 +1,88 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +SCRIPT_DIR=$(dirname "$0") +ROOT_DIR="${SCRIPT_DIR}/../../../../" +LINUX_INSTALLER_DIR="${ROOT_DIR}/installer/linux" +LINUX_INSTALLER_COMMON_DIR="${LINUX_INSTALLER_DIR}/common" +LINUX_INSTALLER_COMMON_AE_TDX_DIR="${LINUX_INSTALLER_COMMON_DIR}/libsgx-ae-tdqe" + +source ${LINUX_INSTALLER_COMMON_AE_TDX_DIR}/installConfig + +SGX_VERSION=$(awk '/STRFILEVER/ {print $3}' ${ROOT_DIR}/common/inc/internal/se_version.h|sed 's/^\"\(.*\)\"$/\1/') +RPM_BUILD_FOLDER=${AE_TDX_PACKAGE_NAME}-${SGX_VERSION} + +main() { + pre_build + update_spec + create_upstream_tarball + build_rpm_package + post_build +} + +pre_build() { + rm -fR ${SCRIPT_DIR}/${RPM_BUILD_FOLDER} + mkdir -p ${SCRIPT_DIR}/${RPM_BUILD_FOLDER}/{BUILD,RPMS,SOURCES,SPECS,SRPMS} + cp -f ${SCRIPT_DIR}/${AE_TDX_PACKAGE_NAME}.spec ${SCRIPT_DIR}/${RPM_BUILD_FOLDER}/SPECS +} + +post_build() { + for FILE in $(find ${SCRIPT_DIR}/${RPM_BUILD_FOLDER} -name "*.rpm" 2> /dev/null); do + cp "${FILE}" ${SCRIPT_DIR} + done + rm -fR ${SCRIPT_DIR}/${RPM_BUILD_FOLDER} +} + +update_spec() { + pushd ${SCRIPT_DIR}/${RPM_BUILD_FOLDER} + sed -i "s/@version@/${SGX_VERSION}/" SPECS/${AE_TDX_PACKAGE_NAME}.spec + popd +} + +create_upstream_tarball() { + ${LINUX_INSTALLER_COMMON_AE_TDX_DIR}/createTarball.sh + tar -xvf ${LINUX_INSTALLER_COMMON_AE_TDX_DIR}/output/${TARBALL_NAME} -C ${SCRIPT_DIR}/${RPM_BUILD_FOLDER}/SOURCES + pushd ${SCRIPT_DIR}/${RPM_BUILD_FOLDER}/SOURCES + tar -zcvf ${RPM_BUILD_FOLDER}$(echo ${TARBALL_NAME}|awk -F'.' '{print "."$(NF-1)"."$(NF)}') * + popd +} + +build_rpm_package() { + pushd ${SCRIPT_DIR}/${RPM_BUILD_FOLDER} + rpmbuild --define="_topdir `pwd`" --define='_debugsource_template %{nil}' -ba SPECS/${AE_TDX_PACKAGE_NAME}.spec + popd +} + +main $@ diff --git a/QuoteGeneration/installer/linux/rpm/libsgx-ae-tdqe/clean.sh b/QuoteGeneration/installer/linux/rpm/libsgx-ae-tdqe/clean.sh new file mode 100755 index 00000000..5dc24ca3 --- /dev/null +++ b/QuoteGeneration/installer/linux/rpm/libsgx-ae-tdqe/clean.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +SCRIPT_DIR=$(dirname "$0") +COMMON_DIR="${SCRIPT_DIR}/../../common/libsgx-ae-tdqe" + +rm -f ${SCRIPT_DIR}/libsgx*.rpm +rm -f ${COMMON_DIR}/gen_source.py +rm -rf ${COMMON_DIR}/output diff --git a/QuoteGeneration/installer/linux/rpm/libsgx-ae-tdqe/libsgx-ae-tdqe.spec b/QuoteGeneration/installer/linux/rpm/libsgx-ae-tdqe/libsgx-ae-tdqe.spec new file mode 100644 index 00000000..38301d3d --- /dev/null +++ b/QuoteGeneration/installer/linux/rpm/libsgx-ae-tdqe/libsgx-ae-tdqe.spec @@ -0,0 +1,66 @@ +# +# Copyright (C) 2011-2019 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + +%define _license_file COPYING + +Name: libsgx-ae-tdqe +Version: @version@ +Release: 1%{?dist} +Summary: Intel(R) Trust Domain Extensions QE +Group: Development/Libraries + +License: BSD License +URL: https://github.com/intel/SGXDataCenterAttestationPrimitives +Source0: %{name}-%{version}.tar.gz + +%description +Intel(R) Trust Domain Extensions QE + +%prep +%setup -qc + +%build +make %{?_smp_mflags} + +%install +make DESTDIR=%{?buildroot} install +install -d %{?buildroot}%{_docdir}/%{name} +find %{?_sourcedir}/package/licenses/ -type f -print0 | xargs -0 -n1 cat >> %{?buildroot}%{_docdir}/%{name}/%{_license_file} +rm -f %{_specdir}/list-%{name} +for f in $(find %{?buildroot} -type f -o -type l); do + echo $f | sed -e "s#%{?buildroot}##" >> %{_specdir}/list-%{name} +done + +%files -f %{_specdir}/list-%{name} + +%changelog +* Mon Jul 27 2020 SGX Team +- Initial Release diff --git a/QuoteGeneration/installer/linux/rpm/libsgx-dcap-ql/libsgx-dcap-ql.spec b/QuoteGeneration/installer/linux/rpm/libsgx-dcap-ql/libsgx-dcap-ql.spec index 461e34dc..222c8a70 100644 --- a/QuoteGeneration/installer/linux/rpm/libsgx-dcap-ql/libsgx-dcap-ql.spec +++ b/QuoteGeneration/installer/linux/rpm/libsgx-dcap-ql/libsgx-dcap-ql.spec @@ -37,7 +37,7 @@ Release: 1%{?dist} Summary: Intel(R) Software Guard Extensions Data Center Attestation Primitives Group: Development/Libraries Requires: libsgx-qe3-logic >= %{version}-%{release} libsgx-pce-logic >= %{version}-%{release} -Recommends: libsgx-dcap-quote-verify >= %{version}-%{release} libsgx-quote-ex >= 2.16 +Recommends: libsgx-dcap-quote-verify >= %{version}-%{release} libsgx-quote-ex >= 2.17 License: BSD License URL: https://github.com/intel/SGXDataCenterAttestationPrimitives @@ -49,7 +49,7 @@ Intel(R) Software Guard Extensions Data Center Attestation Primitives %package devel Summary: Intel(R) Software Guard Extensions Data Center Attestation Primitives for Developers Group: Development/Libraries -Requires: %{name} = %{version}-%{release} libsgx-headers >= 2.16 +Requires: %{name} = %{version}-%{release} libsgx-headers >= 2.17 %description devel Intel(R) Software Guard Extensions Data Center Attestation Primitives for Developers diff --git a/QuoteGeneration/installer/linux/rpm/libsgx-dcap-quote-verify/libsgx-dcap-quote-verify.spec b/QuoteGeneration/installer/linux/rpm/libsgx-dcap-quote-verify/libsgx-dcap-quote-verify.spec index c81cae74..9d8db4cf 100644 --- a/QuoteGeneration/installer/linux/rpm/libsgx-dcap-quote-verify/libsgx-dcap-quote-verify.spec +++ b/QuoteGeneration/installer/linux/rpm/libsgx-dcap-quote-verify/libsgx-dcap-quote-verify.spec @@ -36,7 +36,7 @@ Version: @version@ Release: 1%{?dist} Summary: Intel(R) Software Guard Extensions Data Center Attestation Primitives Group: Development/Libraries -Recommends: libsgx-ae-qve >= %{version}-%{release} libsgx-urts >= %{version}-%{release} +Recommends: libsgx-ae-qve >= %{version}-%{release} libsgx-urts >= 2.17 License: BSD License URL: https://github.com/intel/SGXDataCenterAttestationPrimitives @@ -48,7 +48,7 @@ Intel(R) Software Guard Extensions Data Center Attestation Primitives %package devel Summary: Intel(R) Software Guard Extensions Data Center Attestation Primitives for Developers Group: Development/Libraries -Requires: %{name} = %{version}-%{release} libsgx-headers >= 2.16 +Requires: %{name} = %{version}-%{release} libsgx-headers >= 2.17 %description devel Intel(R) Software Guard Extensions Data Center Attestation Primitives for Developers diff --git a/QuoteGeneration/installer/linux/rpm/libsgx-pce-logic/libsgx-pce-logic.spec b/QuoteGeneration/installer/linux/rpm/libsgx-pce-logic/libsgx-pce-logic.spec index f288e5c5..b3bf250e 100644 --- a/QuoteGeneration/installer/linux/rpm/libsgx-pce-logic/libsgx-pce-logic.spec +++ b/QuoteGeneration/installer/linux/rpm/libsgx-pce-logic/libsgx-pce-logic.spec @@ -36,7 +36,7 @@ Version: @version@ Release: 1%{?dist} Summary: Intel(R) Software Guard Extensions PCE logic Group: Development/Libraries -Requires: libsgx-urts >= 2.16 libsgx-ae-pce >= 2.16 +Requires: libsgx-urts >= 2.17 libsgx-ae-pce >= 2.17 License: BSD License URL: https://github.com/intel/SGXDataCenterAttestationPrimitives diff --git a/QuoteGeneration/installer/linux/rpm/libsgx-qe3-logic/libsgx-qe3-logic.spec b/QuoteGeneration/installer/linux/rpm/libsgx-qe3-logic/libsgx-qe3-logic.spec index d6798cd3..3aeeaefc 100644 --- a/QuoteGeneration/installer/linux/rpm/libsgx-qe3-logic/libsgx-qe3-logic.spec +++ b/QuoteGeneration/installer/linux/rpm/libsgx-qe3-logic/libsgx-qe3-logic.spec @@ -36,7 +36,7 @@ Version: @version@ Release: 1%{?dist} Summary: Intel(R) Software Guard Extensions QE3 logic Group: Development/Libraries -Requires: libsgx-urts >= 2.16 libsgx-ae-qe3 >= %{version}-%{release} libsgx-ae-id-enclave >= %{version}-%{release} +Requires: libsgx-urts >= 2.17 libsgx-ae-qe3 >= %{version}-%{release} libsgx-ae-id-enclave >= %{version}-%{release} License: BSD License URL: https://github.com/intel/SGXDataCenterAttestationPrimitives diff --git a/QuoteGeneration/installer/linux/rpm/libsgx-tdx-logic/build.sh b/QuoteGeneration/installer/linux/rpm/libsgx-tdx-logic/build.sh new file mode 100755 index 00000000..e82cb5d1 --- /dev/null +++ b/QuoteGeneration/installer/linux/rpm/libsgx-tdx-logic/build.sh @@ -0,0 +1,88 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +SCRIPT_DIR=$(dirname "$0") +ROOT_DIR="${SCRIPT_DIR}/../../../../" +LINUX_INSTALLER_DIR="${ROOT_DIR}/installer/linux" +LINUX_INSTALLER_COMMON_DIR="${LINUX_INSTALLER_DIR}/common" +LINUX_INSTALLER_COMMON_TDX_LOGIC_DIR="${LINUX_INSTALLER_COMMON_DIR}/libsgx-tdx-logic" + +source ${LINUX_INSTALLER_COMMON_TDX_LOGIC_DIR}/installConfig + +SGX_VERSION=$(awk '/STRFILEVER/ {print $3}' ${ROOT_DIR}/common/inc/internal/se_version.h|sed 's/^\"\(.*\)\"$/\1/') +RPM_BUILD_FOLDER=${TDX_LOGIC_PACKAGE_NAME}-${SGX_VERSION} + +main() { + pre_build + update_spec + create_upstream_tarball + build_rpm_package + post_build +} + +pre_build() { + rm -fR ${SCRIPT_DIR}/${RPM_BUILD_FOLDER} + mkdir -p ${SCRIPT_DIR}/${RPM_BUILD_FOLDER}/{BUILD,RPMS,SOURCES,SPECS,SRPMS} + cp -f ${SCRIPT_DIR}/${TDX_LOGIC_PACKAGE_NAME}.spec ${SCRIPT_DIR}/${RPM_BUILD_FOLDER}/SPECS +} + +post_build() { + for FILE in $(find ${SCRIPT_DIR}/${RPM_BUILD_FOLDER} -name "*.rpm" 2> /dev/null); do + cp "${FILE}" ${SCRIPT_DIR} + done + rm -fR ${SCRIPT_DIR}/${RPM_BUILD_FOLDER} +} + +update_spec() { + pushd ${SCRIPT_DIR}/${RPM_BUILD_FOLDER} + sed -i "s/@version@/${SGX_VERSION}/" SPECS/${TDX_LOGIC_PACKAGE_NAME}.spec + popd +} + +create_upstream_tarball() { + ${LINUX_INSTALLER_COMMON_TDX_LOGIC_DIR}/createTarball.sh + tar -xvf ${LINUX_INSTALLER_COMMON_TDX_LOGIC_DIR}/output/${TARBALL_NAME} -C ${SCRIPT_DIR}/${RPM_BUILD_FOLDER}/SOURCES + pushd ${SCRIPT_DIR}/${RPM_BUILD_FOLDER}/SOURCES + tar -zcvf ${RPM_BUILD_FOLDER}$(echo ${TARBALL_NAME}|awk -F'.' '{print "."$(NF-1)"."$(NF)}') * + popd +} + +build_rpm_package() { + pushd ${SCRIPT_DIR}/${RPM_BUILD_FOLDER} + rpmbuild --define="_topdir `pwd`" --define='_debugsource_template %{nil}' -ba SPECS/${TDX_LOGIC_PACKAGE_NAME}.spec + popd +} + +main $@ diff --git a/QuoteGeneration/installer/linux/rpm/libsgx-tdx-logic/clean.sh b/QuoteGeneration/installer/linux/rpm/libsgx-tdx-logic/clean.sh new file mode 100755 index 00000000..7b655737 --- /dev/null +++ b/QuoteGeneration/installer/linux/rpm/libsgx-tdx-logic/clean.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +SCRIPT_DIR=$(dirname "$0") +COMMON_DIR="${SCRIPT_DIR}/../../common/libsgx-tdx-logic" + +rm -f ${SCRIPT_DIR}/libsgx*.rpm +rm -f ${COMMON_DIR}/gen_source.py +rm -rf ${COMMON_DIR}/output diff --git a/QuoteGeneration/installer/linux/rpm/libsgx-tdx-logic/libsgx-tdx-logic.spec b/QuoteGeneration/installer/linux/rpm/libsgx-tdx-logic/libsgx-tdx-logic.spec new file mode 100644 index 00000000..2f8a0a6a --- /dev/null +++ b/QuoteGeneration/installer/linux/rpm/libsgx-tdx-logic/libsgx-tdx-logic.spec @@ -0,0 +1,84 @@ +# +# Copyright (C) 2011-2019 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + +%define _license_file COPYING + +Name: libsgx-tdx-logic +Version: @version@ +Release: 1%{?dist} +Summary: Intel(R) Trust Domain Extensions QE logic library +Group: Development/Libraries +Requires: libsgx-urts >= 2.17 libsgx-ae-tdqe >= %{version}-%{release} libsgx-ae-id-enclave >= %{version}-%{release} libsgx-pce-logic >= %{version}-%{release} + +License: BSD License +URL: https://github.com/intel/SGXDataCenterAttestationPrimitives +Source0: %{name}-%{version}.tar.gz + + +%description +Intel(R) Trust Domain Extensions QE logic library + +%package devel +Summary: Intel(R) Trust Domain Extensions QE logic library For Developers +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} +%description devel +Intel(R) Trust Domain Extensions QE logic library For Developers +%prep +%setup -qc + + +%build +make %{?_smp_mflags} + +%install +make DESTDIR=%{?buildroot} install +install -d %{?buildroot}/%{name}%{_docdir}/%{name} +find %{?_sourcedir}/package/licenses/ -type f -print0 | xargs -0 -n1 cat >> %{?buildroot}/%{name}%{_docdir}/%{name}/%{_license_file} +rm -f %{_specdir}/list-%{name} +for f in $(find %{?buildroot}/%{name} -type f -o -type l); do + echo $f | sed -e "s#%{?buildroot}/%{name}##" >> %{_specdir}/list-%{name} +done +cp -r %{?buildroot}/%{name}/* %{?buildroot}/ +rm -fr %{?buildroot}/%{name} +rm -f %{_specdir}/list-%{name}-devel +for f in $(find %{?buildroot}/%{name}-dev -type f -o -type l); do + echo $f | sed -e "s#%{?buildroot}/%{name}-dev##" >> %{_specdir}/list-%{name}-devel +done +cp -r %{?buildroot}/%{name}-dev/* %{?buildroot}/ +rm -fr %{?buildroot}/%{name}-dev + +%files -f %{_specdir}/list-%{name} + +%files devel -f %{_specdir}/list-%{name}-devel +%changelog +* Mon Jul 27 2020 SGX Team +- Initial Release diff --git a/QuoteGeneration/installer/linux/rpm/libtdx-attest/build.sh b/QuoteGeneration/installer/linux/rpm/libtdx-attest/build.sh new file mode 100755 index 00000000..56faed39 --- /dev/null +++ b/QuoteGeneration/installer/linux/rpm/libtdx-attest/build.sh @@ -0,0 +1,94 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +SCRIPT_DIR=$(dirname "$0") +ROOT_DIR="${SCRIPT_DIR}/../../../../" +LINUX_INSTALLER_DIR="${ROOT_DIR}/installer/linux" +LINUX_INSTALLER_COMMON_DIR="${LINUX_INSTALLER_DIR}/common" +LINUX_INSTALLER_COMMON_TDX_ATTEST_DIR="${LINUX_INSTALLER_COMMON_DIR}/libtdx-attest" + +source ${LINUX_INSTALLER_COMMON_TDX_ATTEST_DIR}/installConfig + +SGX_VERSION=$(awk '/STRFILEVER/ {print $3}' ${ROOT_DIR}/common/inc/internal/se_version.h|sed 's/^\"\(.*\)\"$/\1/') +RPM_BUILD_FOLDER=${TDX_ATTEST_PACKAGE_NAME}-${SGX_VERSION} + +main() { + pre_build + update_spec + create_upstream_tarball + build_rpm_package + post_build +} + +pre_build() { + rm -fR ${SCRIPT_DIR}/${RPM_BUILD_FOLDER} + mkdir -p ${SCRIPT_DIR}/${RPM_BUILD_FOLDER}/{BUILD,RPMS,SOURCES,SPECS,SRPMS} + cp -f ${SCRIPT_DIR}/${TDX_ATTEST_PACKAGE_NAME}.spec ${SCRIPT_DIR}/${RPM_BUILD_FOLDER}/SPECS +} + +post_build() { + for FILE in $(find ${SCRIPT_DIR}/${RPM_BUILD_FOLDER} -name "*.rpm" 2> /dev/null); do + cp "${FILE}" ${SCRIPT_DIR} + done + rm -fR ${SCRIPT_DIR}/${RPM_BUILD_FOLDER} +} + +update_spec() { + min_version="4.12" + rpm_version=$(rpmbuild --version 2> /dev/null | awk '{print $NF}') + cur_version=$(echo -e "${rpm_version}\n${min_version}" | sort -V | head -n 1) + pushd ${SCRIPT_DIR}/${RPM_BUILD_FOLDER} + sed -i "s/@version@/${SGX_VERSION}/" SPECS/${TDX_ATTEST_PACKAGE_NAME}.spec + if [ "${min_version}" != "${cur_version}" ]; then + sed -i "s/^Recommends:/Requires: /" SPECS/${TDX_ATTEST_PACKAGE_NAME}.spec + fi + popd +} + +create_upstream_tarball() { + ${LINUX_INSTALLER_COMMON_TDX_ATTEST_DIR}/createTarball.sh + tar -xvf ${LINUX_INSTALLER_COMMON_TDX_ATTEST_DIR}/output/${TARBALL_NAME} -C ${SCRIPT_DIR}/${RPM_BUILD_FOLDER}/SOURCES + pushd ${SCRIPT_DIR}/${RPM_BUILD_FOLDER}/SOURCES + tar -zcvf ${RPM_BUILD_FOLDER}$(echo ${TARBALL_NAME}|awk -F'.' '{print "."$(NF-1)"."$(NF)}') * + popd +} + +build_rpm_package() { + pushd ${SCRIPT_DIR}/${RPM_BUILD_FOLDER} + rpmbuild --define="_topdir `pwd`" --define='_debugsource_template %{nil}' -ba SPECS/${TDX_ATTEST_PACKAGE_NAME}.spec + popd +} + +main $@ diff --git a/QuoteGeneration/installer/linux/rpm/libtdx-attest/clean.sh b/QuoteGeneration/installer/linux/rpm/libtdx-attest/clean.sh new file mode 100755 index 00000000..b491cca9 --- /dev/null +++ b/QuoteGeneration/installer/linux/rpm/libtdx-attest/clean.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +SCRIPT_DIR=$(dirname "$0") +COMMON_DIR="${SCRIPT_DIR}/../../common/libtdx-attest" + +rm -f ${SCRIPT_DIR}/libtdx-attest*.rpm +rm -f ${COMMON_DIR}/gen_source.py +rm -rf ${COMMON_DIR}/output diff --git a/QuoteGeneration/installer/linux/rpm/libtdx-attest/libtdx-attest.spec b/QuoteGeneration/installer/linux/rpm/libtdx-attest/libtdx-attest.spec new file mode 100644 index 00000000..0bcff481 --- /dev/null +++ b/QuoteGeneration/installer/linux/rpm/libtdx-attest/libtdx-attest.spec @@ -0,0 +1,84 @@ +# +# Copyright (C) 2011-2020 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + +%define _license_file COPYING + +Name: libtdx-attest +Version: @version@ +Release: 1%{?dist} +Summary: Intel(R) Trust Domain Extensions Attestation library +Group: Development/Libraries + +License: BSD License +URL: https://github.com/intel/SGXDataCenterAttestationPrimitives +Source0: %{name}-%{version}.tar.gz + +%description +Intel(R) Trust Domain Extensions Attestation library + +%package devel +Summary: Intel(R) Trust Domain Extensions Attestation For Developers +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%description devel +Intel(R) Trust Domain Extensions Attestation For Developers + +%prep +%setup -qc + +%build +make %{?_smp_mflags} + +%install +make DESTDIR=%{?buildroot} install +install -d %{?buildroot}/%{name}%{_docdir}/%{name} +find %{?_sourcedir}/package/licenses/ -type f -print0 | xargs -0 -n1 cat >> %{?buildroot}/%{name}%{_docdir}/%{name}/%{_license_file} +rm -f %{_specdir}/list-%{name} +for f in $(find %{?buildroot}/%{name} -type f -o -type l); do + echo $f | sed -e "s#%{?buildroot}/%{name}##" >> %{_specdir}/list-%{name} +done +cp -r %{?buildroot}/%{name}/* %{?buildroot}/ +rm -fr %{?buildroot}/%{name} +rm -f %{_specdir}/list-%{name}-devel +for f in $(find %{?buildroot}/%{name}-dev -type f -o -type l); do + echo $f | sed -e "s#%{?buildroot}/%{name}-dev##" >> %{_specdir}/list-%{name}-devel +done +cp -r %{?buildroot}/%{name}-dev/* %{?buildroot}/ +rm -fr %{?buildroot}/%{name}-dev + +%files -f %{_specdir}/list-%{name} + +%files devel -f %{_specdir}/list-%{name}-devel + +%changelog +* Thu Feb 18 2021 SGX Team +- Initial Release diff --git a/QuoteGeneration/installer/linux/rpm/sgx-dcap-pccs/sgx-dcap-pccs.spec b/QuoteGeneration/installer/linux/rpm/sgx-dcap-pccs/sgx-dcap-pccs.spec index 61d7d84d..0c10ccf6 100644 --- a/QuoteGeneration/installer/linux/rpm/sgx-dcap-pccs/sgx-dcap-pccs.spec +++ b/QuoteGeneration/installer/linux/rpm/sgx-dcap-pccs/sgx-dcap-pccs.spec @@ -52,80 +52,35 @@ Intel(R) Software Guard Extensions PCK Caching Service %install make DESTDIR=%{?buildroot} install install -d %{?buildroot}%{_docdir}/%{name} -find %{?_sourcedir}/package/licenses/ -type f -print0 | xargs -0 -n1 cat >> %{?buildroot}%{_docdir}/%{name}/%{_license_file} -echo "%{_install_path}" > %{_specdir}/listfiles -echo %{_docdir}/%{name}/%{_license_file} >> %{_specdir}/listfiles -echo "%config %{_install_path}/config/default.json" >> %{_specdir}/listfiles -%files -f %{_specdir}/listfiles - -%post -PCCS_USER=pccs -PCCS_HOME=%{_install_path} -if [ ! $(getent group $PCCS_USER) ]; then - groupadd $PCCS_USER -fi -if ! id "$PCCS_USER" &>/dev/null; then - adduser --system $PCCS_USER -g $PCCS_USER --home $PCCS_HOME --no-create-home --shell /bin/bash -fi -chown -R $PCCS_USER:$PCCS_USER $PCCS_HOME -chmod 640 $PCCS_HOME/config/default.json -#Install PCCS as system service -echo -n "Installing PCCS service ..." -if [ -d /run/systemd/system ]; then - PCCS_NAME=pccs.service - PCCS_TEMP=$PCCS_HOME/$PCCS_NAME - if [ -d /lib/systemd/system ]; then - PCCS_DEST=/lib/systemd/system/$PCCS_NAME +find linux/installer/common/sdk/output/package/licenses/ -type f -print0 | \ +xargs -0 -n1 cat >> %{?buildroot}%{_docdir}/%{name}/%{_license_file} +find %{?buildroot} -type d -links 2 | \ +sed -e "s#^%{?buildroot}##" | \ +grep -v "^%{_libdir}" | \ +grep -v "^%{_bindir}" | \ +grep -v "^%{_sysconfdir}" | \ +grep -v "^%{_install_path}" | \ +sed -e "s#^#%dir #" > %{_specdir}/listfiles +for f in $(find %{?buildroot}); do + if [ -d ${f} ]; then + echo ${f} | \ + sed -e "s#^%{?buildroot}##" | \ + grep "^%{_install_path}" | \ + sed -e "s#^#%dir #" >> %{_specdir}/listfiles else - PCCS_DEST=/usr/lib/systemd/system/$PCCS_NAME + echo ${f} | \ + sed -e "s#^%{?buildroot}##" >> %{_specdir}/listfiles fi - cp $PCCS_TEMP $PCCS_DEST - chmod 0644 $PCCS_DEST - systemctl daemon-reload - systemctl enable pccs -elif [ -d /etc/init/ ]; then - PCCS_NAME=pccs.service - PCCS_TEMP=$PCCS_HOME/$PCCS_NAME - PCCS_DEST=/etc/init/$PCCS_NAME - cp $PCCS_TEMP $PCCS_DEST - chmod 0644 $PCCS_DEST - /sbin/initctl reload-configuration -else - echo " failed." - echo "Unsupported platform - neither systemctl nor initctl was found." - exit 5 -fi -echo "finished." -echo "Installation completed successfully." +done +sed -i 's#^%{_install_path}/config/default.json#%config &#' %{_specdir}/listfiles -%postun -if [ $1 == 0 ]; then - echo -n "Uninstalling PCCS service ..." - if [ -d /run/systemd/system ]; then - PCCS_NAME=pccs.service - if [ -d /lib/systemd/system ]; then - PCCS_DEST=/lib/systemd/system/$PCCS_NAME - else - PCCS_DEST=/usr/lib/systemd/system/$PCCS_NAME - fi - systemctl stop pccs || true - systemctl disable pccs || true - rm $PCCS_DEST || true - systemctl daemon-reload - elif [ -d /etc/init/ ]; then - PCCS_NAME=pccs.service - PCCS_DEST=/etc/init/$PCCS_NAME - rm $PCCS_DEST || true - /sbin/initctl reload-configuration - fi - echo "finished." +%files -f %{_specdir}/listfiles - if [ -d %{_install_path} ]; then - pushd %{_install_path} &> /dev/null - rm -rf node_modules || true - popd &> /dev/null - fi -fi +%post +if [ -x %{_install_path}/startup.sh ]; then %{_install_path}/startup.sh; fi + +%preun +if [ $1 == 0 -a -x %{_install_path}/cleanup.sh ]; then %{_install_path}/cleanup.sh; fi %changelog * Mon Mar 10 2020 SGX Team diff --git a/QuoteGeneration/installer/linux/rpm/tdx-qgs/build.sh b/QuoteGeneration/installer/linux/rpm/tdx-qgs/build.sh new file mode 100755 index 00000000..35cea473 --- /dev/null +++ b/QuoteGeneration/installer/linux/rpm/tdx-qgs/build.sh @@ -0,0 +1,95 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +SCRIPT_DIR=$(dirname "$0") +ROOT_DIR="${SCRIPT_DIR}/../../../../" +LINUX_INSTALLER_DIR="${ROOT_DIR}/installer/linux" +LINUX_INSTALLER_COMMON_DIR="${LINUX_INSTALLER_DIR}/common" +LINUX_INSTALLER_COMMON_TDX_QGS_DIR="${LINUX_INSTALLER_COMMON_DIR}/tdx-qgs" + +source ${LINUX_INSTALLER_COMMON_TDX_QGS_DIR}/installConfig + +SGX_VERSION=$(awk '/STRFILEVER/ {print $3}' ${ROOT_DIR}/common/inc/internal/se_version.h|sed 's/^\"\(.*\)\"$/\1/') +RPM_BUILD_FOLDER=${TDX_QGS_PACKAGE_NAME}-${SGX_VERSION} + +main() { + pre_build + update_spec + create_upstream_tarball + build_rpm_package + post_build +} + +pre_build() { + rm -fR ${SCRIPT_DIR}/${RPM_BUILD_FOLDER} + mkdir -p ${SCRIPT_DIR}/${RPM_BUILD_FOLDER}/{BUILD,RPMS,SOURCES,SPECS,SRPMS} + cp -f ${SCRIPT_DIR}/${TDX_QGS_PACKAGE_NAME}.spec ${SCRIPT_DIR}/${RPM_BUILD_FOLDER}/SPECS +} + +post_build() { + for FILE in $(find ${SCRIPT_DIR}/${RPM_BUILD_FOLDER} -name "*.rpm" 2> /dev/null); do + cp "${FILE}" ${SCRIPT_DIR} + done + rm -fR ${SCRIPT_DIR}/${RPM_BUILD_FOLDER} +} + +update_spec() { + min_version="4.12" + rpm_version=$(rpmbuild --version 2> /dev/null | awk '{print $NF}') + cur_version=$(echo -e "${rpm_version}\n${min_version}" | sort -V | head -n 1) + pushd ${SCRIPT_DIR}/${RPM_BUILD_FOLDER} + sed -i "s#@version@#${SGX_VERSION}#" SPECS/${TDX_QGS_PACKAGE_NAME}.spec + sed -i "s#@install_path@#${TDX_QGS_PACKAGE_PATH}/${TDX_QGS_PACKAGE_NAME}#" SPECS/${TDX_QGS_PACKAGE_NAME}.spec + if [ "${min_version}" != "${cur_version}" ]; then + sed -i "s/^Recommends:/Requires: /" SPECS/${TDX_QGS_PACKAGE_NAME}.spec + fi + popd +} + +create_upstream_tarball() { + ${LINUX_INSTALLER_COMMON_TDX_QGS_DIR}/createTarball.sh + tar -xvf ${LINUX_INSTALLER_COMMON_TDX_QGS_DIR}/output/${TARBALL_NAME} -C ${SCRIPT_DIR}/${RPM_BUILD_FOLDER}/SOURCES + pushd ${SCRIPT_DIR}/${RPM_BUILD_FOLDER}/SOURCES + tar -zcvf ${RPM_BUILD_FOLDER}$(echo ${TARBALL_NAME}|awk -F'.' '{print "."$(NF-1)"."$(NF)}') * + popd +} + +build_rpm_package() { + pushd ${SCRIPT_DIR}/${RPM_BUILD_FOLDER} + rpmbuild --define="_topdir `pwd`" --define='_debugsource_template %{nil}' -ba SPECS/${TDX_QGS_PACKAGE_NAME}.spec + popd +} + +main $@ diff --git a/QuoteGeneration/installer/linux/rpm/tdx-qgs/clean.sh b/QuoteGeneration/installer/linux/rpm/tdx-qgs/clean.sh new file mode 100755 index 00000000..ba1c5cfe --- /dev/null +++ b/QuoteGeneration/installer/linux/rpm/tdx-qgs/clean.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +set -e + +SCRIPT_DIR=$(dirname "$0") +COMMON_DIR="${SCRIPT_DIR}/../../common/tdx-qgs" + +rm -f ${SCRIPT_DIR}/tdx-qgs*.rpm +rm -f ${COMMON_DIR}/gen_source.py +rm -rf ${COMMON_DIR}/output diff --git a/QuoteGeneration/installer/linux/rpm/tdx-qgs/tdx-qgs.spec b/QuoteGeneration/installer/linux/rpm/tdx-qgs/tdx-qgs.spec new file mode 100644 index 00000000..e602a23f --- /dev/null +++ b/QuoteGeneration/installer/linux/rpm/tdx-qgs/tdx-qgs.spec @@ -0,0 +1,72 @@ +# +# Copyright (C) 2011-2019 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + +%define _install_path @install_path@ + +Name: tdx-qgs +Version: @version@ +Release: 1%{?dist} +Summary: Intel(R) TD Quoting Generation Service +Group: Development/System + +License: BSD License +URL: https://github.com/intel/linux-sgx +Source0: %{name}-%{version}.tar.gz + +%description +Intel(R) TD Quoting Generation Service + +%prep +%setup -qc + +%build +make %{?_smp_mflags} + +%install +make DESTDIR=%{?buildroot} install +echo "%{_install_path}" > %{_specdir}/list-%{name} +find %{?buildroot} | sort | \ +awk '$0 !~ last "/" {print last} {last=$0} END {print last}' | \ +sed -e "s#^%{?buildroot}##" | \ +grep -v "^%{_install_path}" >> %{_specdir}/list-%{name} || : +sed -i 's#^/etc/qgsd.conf#%config &#' %{_specdir}/list-%{name} + +%files -f %{_specdir}/list-%{name} + +%post +if [ -x %{_install_path}/startup.sh ]; then %{_install_path}/startup.sh; fi + +%preun +if [ -x %{_install_path}/cleanup.sh ]; then %{_install_path}/cleanup.sh; fi + +%changelog +* Thu Feb 18 2021 SGX Team +- Initial Release diff --git a/QuoteGeneration/installer/win/DCAP_Components.bat b/QuoteGeneration/installer/win/DCAP_Components.bat index a32befc9..98f6c945 100644 --- a/QuoteGeneration/installer/win/DCAP_Components.bat +++ b/QuoteGeneration/installer/win/DCAP_Components.bat @@ -5,7 +5,7 @@ set QGFOLDER="..\..\" set QVFOLDER="%TOPFOLDER%\QuoteVerification" set DEBUGFILEFOLDER="..\..\..\x64\Debug\" set RELEASEFILEFOLDER="..\..\..\x64\Release\" -set PACKAGETNAME=DCAP_Components.1.11.100.0 +set PACKAGETNAME=DCAP_Components.1.14.100.0 set pwd=%~dp0DCAP_Components pushd "%~dp0" diff --git a/QuoteGeneration/installer/win/DCAP_Components/DCAP_Components.nuspec b/QuoteGeneration/installer/win/DCAP_Components/DCAP_Components.nuspec index ca6e1abe..f9b3dd28 100644 --- a/QuoteGeneration/installer/win/DCAP_Components/DCAP_Components.nuspec +++ b/QuoteGeneration/installer/win/DCAP_Components/DCAP_Components.nuspec @@ -2,7 +2,7 @@ DCAP_Components - 1.13.100.4 + 1.14.100.3 DCAP Components Intel(R) SGX Intel @@ -10,7 +10,7 @@ DCAP Components Copyright (C) 2022 Intel Corporation - + diff --git a/QuoteGeneration/installer/win/Dcap/dcap_copy_file.bat b/QuoteGeneration/installer/win/Dcap/dcap_copy_file.bat index f0c85f0d..8bac9482 100644 --- a/QuoteGeneration/installer/win/Dcap/dcap_copy_file.bat +++ b/QuoteGeneration/installer/win/Dcap/dcap_copy_file.bat @@ -27,6 +27,7 @@ echo * Copy needed files * echo ************************************************** copy /y "%PREBUILTFILEFOLDER%\pce.signed.dll" "%~dp0output\pce.signed.dll" copy /y "%PREBUILTFILEFOLDER%\qe3.signed.dll" "%~dp0output\qe3.signed.dll" +copy /y "%PREBUILTFILEFOLDER%\id_enclave.signed.dll" "%~dp0output\id_enclave.signed.dll" copy /y "%RELEASEFILEFOLDER%\sgx_dcap_ql.dll" "%~dp0output\sgx_dcap_ql.dll" copy /y "%PREBUILTFILEFOLDER%\qve.signed.dll" "%~dp0output\qve.signed.dll" diff --git a/QuoteGeneration/installer/win/Dcap/dcap_generate.bat b/QuoteGeneration/installer/win/Dcap/dcap_generate.bat index bd4993ca..d7bad317 100644 --- a/QuoteGeneration/installer/win/Dcap/dcap_generate.bat +++ b/QuoteGeneration/installer/win/Dcap/dcap_generate.bat @@ -26,7 +26,7 @@ copy /y "%~dp0\sgx_dcap_default.inf" "%~dp0output\sgx_dcap.inf" copy /y "%~dp0\sgx_dcap_dev_default.inf" "%~dp0output\sgx_dcap_dev.inf" "%WindowsSdkDir%\bin\x86\stampinf.exe" -f "%~dp0output\sgx_dcap.inf" -k "1.9" -d "*" -a "amd64" -v "%1" -c "sgx_dcap.cat" "%WindowsSdkDir%\bin\x86\stampinf.exe" -f "%~dp0output\sgx_dcap_dev.inf" -k "1.9" -d "*" -a "amd64" -v "%1" -c "sgx_dcap_dev.cat" -"%WindowsSdkDir%\bin\x86\Inf2Cat.exe" /driver:"%~dp0output" /os:"10_x64" +"%WindowsSdkDir%\bin\x86\Inf2Cat.exe" /driver:"%~dp0output" /os:"10_x64" /uselocaltime echo ************************************************** echo * Signing INF installer * diff --git a/QuoteGeneration/installer/win/Dcap/sgx_dcap_default.inf b/QuoteGeneration/installer/win/Dcap/sgx_dcap_default.inf index b25a77b9..f17a2501 100644 --- a/QuoteGeneration/installer/win/Dcap/sgx_dcap_default.inf +++ b/QuoteGeneration/installer/win/Dcap/sgx_dcap_default.inf @@ -46,6 +46,7 @@ AddService = , %SPSVCINST_ASSOCSERVICE% [SgxDCAPComponentsDevice_CopyFiles] sgx_dcap_ql.dll qe3.signed.dll +id_enclave.signed.dll pce.signed.dll qve.signed.dll sgx_dcap_quoteverify.dll @@ -57,6 +58,7 @@ ThirdPartyLicenses.txt [SourceDisksFiles] sgx_dcap_ql.dll = 1 qe3.signed.dll = 1 +id_enclave.signed.dll = 1 pce.signed.dll = 1 qve.signed.dll = 1 sgx_dcap_quoteverify.dll = 1 diff --git a/QuoteGeneration/installer/win/Dcap/sgx_dcap_dev_default.inf b/QuoteGeneration/installer/win/Dcap/sgx_dcap_dev_default.inf index 9aa618a4..708defdf 100644 --- a/QuoteGeneration/installer/win/Dcap/sgx_dcap_dev_default.inf +++ b/QuoteGeneration/installer/win/Dcap/sgx_dcap_dev_default.inf @@ -49,6 +49,7 @@ AddService = , %SPSVCINST_ASSOCSERVICE% [SgxDCAPComponentsDevice_CopyFiles] sgx_dcap_ql.dll qe3.signed.dll +id_enclave.signed.dll pce.signed.dll qve.signed.dll sgx_dcap_quoteverify.dll @@ -60,6 +61,7 @@ ThirdPartyLicenses.txt [SourceDisksFiles] sgx_dcap_ql.dll = 1 qe3.signed.dll = 1 +id_enclave.signed.dll = 1 pce.signed.dll = 1 qve.signed.dll = 1 sgx_dcap_quoteverify.dll = 1 diff --git a/QuoteGeneration/pccs/cleanup.sh b/QuoteGeneration/pccs/cleanup.sh index 6719270c..7a9e827b 100755 --- a/QuoteGeneration/pccs/cleanup.sh +++ b/QuoteGeneration/pccs/cleanup.sh @@ -38,7 +38,8 @@ if test $(id -u) -ne 0; then exit 1 fi -rm -rf node_modules +PCCS_HOME=$(readlink -m $(dirname "$0")) +rm -rf ${PCCS_HOME}/node_modules #Remove PCCS system service echo -n "Uninstalling PCCS service ..." diff --git a/QuoteGeneration/pccs/config/test.json b/QuoteGeneration/pccs/config/test.json index 1e11692e..c991b4d1 100644 --- a/QuoteGeneration/pccs/config/test.json +++ b/QuoteGeneration/pccs/config/test.json @@ -1,7 +1,7 @@ { "HTTPS_PORT" : 8082, "hosts" : "0.0.0.0", - "uri": "https://api.trustedservices.intel.com/sgx/certification/v3/", + "uri": "https://api.trustedservices.intel.com/sgx/certification/v4/", "ApiKey": "", "RefreshSchedule": "0 0 1 * * *", "UserTokenHash" : "", diff --git a/QuoteGeneration/pccs/constants/index.js b/QuoteGeneration/pccs/constants/index.js index c52824b6..dce2e346 100644 --- a/QuoteGeneration/pccs/constants/index.js +++ b/QuoteGeneration/pccs/constants/index.js @@ -38,7 +38,6 @@ function define(name, value) { }); } -define('API_VERSION', 3); define('DB_VERSION', 2); define('PLATF_REG_NEW', 0); @@ -58,12 +57,14 @@ define('PROCESSOR_INTERMEDIATE_CERT_ID', 2); define('PROCESSOR_SIGNING_CERT_ID', 3); define('PLATFORM_INTERMEDIATE_CERT_ID', 4); -// Product Type +// Product Type : SGX or TDX define('PROD_TYPE_SGX', 0); +define('PROD_TYPE_TDX', 1); // Enclave Identity IDs define('QE_IDENTITY_ID', 1); define('QVE_IDENTITY_ID', 2); +define('TDQE_IDENTITY_ID', 3); //CAs define('CA_PROCESSOR', 'PROCESSOR'); @@ -71,6 +72,7 @@ define('CA_PLATFORM', 'PLATFORM'); //Certchain names define('SGX_PCK_CERTIFICATE_ISSUER_CHAIN', 'SGX-PCK-Certificate-Issuer-Chain'); +define('TCB_INFO_ISSUER_CHAIN', 'TCB-Info-Issuer-Chain'); define('SGX_TCB_INFO_ISSUER_CHAIN', 'SGX-TCB-Info-Issuer-Chain'); define('SGX_ENCLAVE_IDENTITY_ISSUER_CHAIN', 'SGX-Enclave-Identity-Issuer-Chain'); define('SGX_PCK_CRL_ISSUER_CHAIN', 'SGX-PCK-CRL-Issuer-Chain'); diff --git a/QuoteGeneration/pccs/container/Dockerfile b/QuoteGeneration/pccs/container/Dockerfile index 57beb763..1e96caa5 100644 --- a/QuoteGeneration/pccs/container/Dockerfile +++ b/QuoteGeneration/pccs/container/Dockerfile @@ -1,7 +1,7 @@ FROM ubuntu:20.04 AS builder # DCAP version (github repo branch, tag or commit hash) -ARG DCAP_VERSION=DCAP_1.13 +ARG DCAP_VERSION=DCAP_1.14 # update and install packages RUN DEBIAN_FRONTEND=noninteractive \ @@ -15,7 +15,7 @@ RUN DEBIAN_FRONTEND=noninteractive \ zip # install node.js -RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - +RUN curl -sL https://deb.nodesource.com/setup_16.x | bash - RUN DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends nodejs RUN apt-get clean && rm -rf /var/lib/apt/lists/* diff --git a/QuoteGeneration/pccs/controllers/identityController.js b/QuoteGeneration/pccs/controllers/identityController.js index 132746fb..1a1eff4a 100644 --- a/QuoteGeneration/pccs/controllers/identityController.js +++ b/QuoteGeneration/pccs/controllers/identityController.js @@ -32,12 +32,15 @@ import { identityService } from '../services/index.js'; import PccsStatus from '../constants/pccs_status_code.js'; import Constants from '../constants/index.js'; +import * as appUtil from '../utils/apputil.js'; async function getEnclaveIdentity(req, res, next, enclave_id) { try { // call service + let version = appUtil.get_api_version_from_url(req.originalUrl); let enclaveIdentityJson = await identityService.getEnclaveIdentity( - enclave_id + enclave_id, + version ); // send response @@ -62,3 +65,6 @@ export async function getQveIdentity(req, res, next) { return getEnclaveIdentity(req, res, next, Constants.QVE_IDENTITY_ID); } +export async function getTdQeIdentity(req, res, next) { + return getEnclaveIdentity(req, res, next, Constants.TDQE_IDENTITY_ID); +} diff --git a/QuoteGeneration/pccs/controllers/platformCollateralController.js b/QuoteGeneration/pccs/controllers/platformCollateralController.js index 8c432b39..6cfc4db0 100644 --- a/QuoteGeneration/pccs/controllers/platformCollateralController.js +++ b/QuoteGeneration/pccs/controllers/platformCollateralController.js @@ -31,11 +31,13 @@ import { platformCollateralService } from '../services/index.js'; import PccsStatus from '../constants/pccs_status_code.js'; +import * as appUtil from '../utils/apputil.js'; export async function putPlatformCollateral(req, res, next) { try { // call service - let platf = await platformCollateralService.addPlatformCollateral(req.body); + let version = appUtil.get_api_version_from_url(req.originalUrl); + let platf = await platformCollateralService.addPlatformCollateral(req.body, version); // send response res diff --git a/QuoteGeneration/pccs/controllers/rootcacrlController.js b/QuoteGeneration/pccs/controllers/rootcacrlController.js index f9a134fc..7e306d7e 100644 --- a/QuoteGeneration/pccs/controllers/rootcacrlController.js +++ b/QuoteGeneration/pccs/controllers/rootcacrlController.js @@ -40,7 +40,7 @@ export async function getRootCaCrl(req, res, next) { // send response res .status(PccsStatus.PCCS_STATUS_SUCCESS[0]) - .header('Content-Type', 'application/x-pem-file') + .header('Content-Type', 'application/pkix-crl') .send(rootcacrl); } catch (err) { next(err); diff --git a/QuoteGeneration/pccs/controllers/tcbinfoController.js b/QuoteGeneration/pccs/controllers/tcbinfoController.js index 2cc45347..96460f41 100644 --- a/QuoteGeneration/pccs/controllers/tcbinfoController.js +++ b/QuoteGeneration/pccs/controllers/tcbinfoController.js @@ -33,12 +33,14 @@ import { tcbinfoService } from '../services/index.js'; import PccsError from '../utils/PccsError.js'; import PccsStatus from '../constants/pccs_status_code.js'; import Constants from '../constants/index.js'; +import * as appUtil from '../utils/apputil.js'; async function getTcbInfo(req, res, next, type) { const FMSPC_SIZE = 12; try { // validate request parameters + let version = appUtil.get_api_version_from_url(req.originalUrl); let fmspc = req.query.fmspc; if (fmspc == null || fmspc.length != FMSPC_SIZE) { throw new PccsError(PccsStatus.PCCS_STATUS_INVALID_REQ); @@ -48,14 +50,15 @@ async function getTcbInfo(req, res, next, type) { fmspc = fmspc.toUpperCase(); // call service - let tcbinfoJson = await tcbinfoService.getTcbInfo(type, fmspc); + let tcbinfoJson = await tcbinfoService.getTcbInfo(type, fmspc, version); + let issuerChainName = appUtil.getTcbInfoIssuerChainName(version); // send response res .status(PccsStatus.PCCS_STATUS_SUCCESS[0]) .header( - Constants.SGX_TCB_INFO_ISSUER_CHAIN, - tcbinfoJson[Constants.SGX_TCB_INFO_ISSUER_CHAIN] + issuerChainName, + tcbinfoJson[issuerChainName] ) .header('Content-Type', 'application/json') .send(tcbinfoJson['tcbinfo']); @@ -68,3 +71,6 @@ export async function getSgxTcbInfo(req, res, next) { await getTcbInfo(req, res, next, Constants.PROD_TYPE_SGX); } +export async function getTdxTcbInfo(req, res, next) { + await getTcbInfo(req, res, next, Constants.PROD_TYPE_TDX); +} diff --git a/QuoteGeneration/pccs/dao/enclaveIdentityDao.js b/QuoteGeneration/pccs/dao/enclaveIdentityDao.js index 4345084f..23a08857 100644 --- a/QuoteGeneration/pccs/dao/enclaveIdentityDao.js +++ b/QuoteGeneration/pccs/dao/enclaveIdentityDao.js @@ -34,9 +34,10 @@ import PccsError from '../utils/PccsError.js'; import PccsStatus from '../constants/pccs_status_code.js'; import { EnclaveIdentities, sequelize } from './models/index.js'; -export async function upsertEnclaveIdentity(id, identity) { +export async function upsertEnclaveIdentity(id, identity, version) { return await EnclaveIdentities.upsert({ id: id, + version: version, identity: identity, root_cert_id: Constants.PROCESSOR_ROOT_CERT_ID, signing_cert_id: Constants.PROCESSOR_SIGNING_CERT_ID, @@ -44,16 +45,16 @@ export async function upsertEnclaveIdentity(id, identity) { } //Query EnclaveIdentity -export async function getEnclaveIdentity(id) { +export async function getEnclaveIdentity(id, version) { const sql = 'select a.*,' + ' (select cert from pcs_certificates where id=a.root_cert_id) as root_cert,' + ' (select cert from pcs_certificates where id=a.signing_cert_id) as signing_cert' + ' from enclave_identities a ' + - ' where a.id=$id'; + ' where a.id=$id and a.version=$version'; const enclave_identity = await sequelize.query(sql, { type: sequelize.QueryTypes.SELECT, - bind: { id: id }, + bind: { id: id, version: version }, }); if (enclave_identity.length == 0) return null; else if (enclave_identity.length == 1) { diff --git a/QuoteGeneration/pccs/dao/fmspcTcbDao.js b/QuoteGeneration/pccs/dao/fmspcTcbDao.js index 18284e8b..a4da6f7e 100644 --- a/QuoteGeneration/pccs/dao/fmspcTcbDao.js +++ b/QuoteGeneration/pccs/dao/fmspcTcbDao.js @@ -40,6 +40,7 @@ export async function upsertFmspcTcb(tcbinfoJson) { return await FmspcTcbs.upsert({ type: tcbinfoJson.type, fmspc: tcbinfoJson.fmspc, + version: tcbinfoJson.version, tcbinfo: tcbinfoJson.tcbinfo, root_cert_id: Constants.PROCESSOR_ROOT_CERT_ID, signing_cert_id: Constants.PROCESSOR_SIGNING_CERT_ID, @@ -47,8 +48,8 @@ export async function upsertFmspcTcb(tcbinfoJson) { } //Query TCBInfo by fmspc -export async function getTcbInfo(type, fmspc) { - if (typeof type == 'undefined') { +export async function getTcbInfo(type, fmspc, version) { + if (typeof type == 'undefined' || typeof version == 'undefined') { throw new PccsError(PccsStatus.PCCS_STATUS_INTERNAL_ERROR); } @@ -58,12 +59,14 @@ export async function getTcbInfo(type, fmspc) { ' (select cert from pcs_certificates where id=a.signing_cert_id) as signing_cert' + ' from fmspc_tcbs a ' + ' where a.type=$type' + - ' and a.fmspc=$fmspc'; + ' and a.fmspc=$fmspc' + + ' and a.version=$version'; const tcbinfo = await sequelize.query(sql, { type: sequelize.QueryTypes.SELECT, bind: { type: type, fmspc: fmspc, + version: version, }, }); if (tcbinfo.length == 0) return null; diff --git a/QuoteGeneration/pccs/dao/models/enclave_identities.js b/QuoteGeneration/pccs/dao/models/enclave_identities.js index a0d77d0c..5dfb9d5d 100644 --- a/QuoteGeneration/pccs/dao/models/enclave_identities.js +++ b/QuoteGeneration/pccs/dao/models/enclave_identities.js @@ -35,6 +35,7 @@ export default class EnclaveIdentities extends Sequelize.Model { super.init( { id: { type: Sequelize.DataTypes.INTEGER, primaryKey: true }, + version: { type: Sequelize.DataTypes.INTEGER, primaryKey: true }, identity: { type: Sequelize.DataTypes.BLOB }, root_cert_id: { type: Sequelize.DataTypes.INTEGER }, signing_cert_id: { type: Sequelize.DataTypes.INTEGER }, diff --git a/QuoteGeneration/pccs/dao/models/fmspc_tcbs.js b/QuoteGeneration/pccs/dao/models/fmspc_tcbs.js index b358d2ce..076eadbf 100644 --- a/QuoteGeneration/pccs/dao/models/fmspc_tcbs.js +++ b/QuoteGeneration/pccs/dao/models/fmspc_tcbs.js @@ -36,6 +36,7 @@ export default class FmspcTcbs extends Sequelize.Model { { fmspc: { type: Sequelize.DataTypes.STRING, primaryKey: true }, type: { type: Sequelize.DataTypes.INTEGER, primaryKey: true }, + version: { type: Sequelize.DataTypes.INTEGER, primaryKey: true }, tcbinfo: { type: Sequelize.DataTypes.BLOB }, root_cert_id: { type: Sequelize.DataTypes.INTEGER }, signing_cert_id: { type: Sequelize.DataTypes.INTEGER }, diff --git a/QuoteGeneration/pccs/install.bat b/QuoteGeneration/pccs/install.bat index 195db158..215ebd29 100644 --- a/QuoteGeneration/pccs/install.bat +++ b/QuoteGeneration/pccs/install.bat @@ -6,7 +6,7 @@ echo Install npm packages ...... call npm install -call npm install node-windows -g +call npm install node-windows@1.0.0-beta.6 -g call npm link node-windows diff --git a/QuoteGeneration/pccs/middleware/auth.js b/QuoteGeneration/pccs/middleware/auth.js index 240ff305..4bdb4580 100644 --- a/QuoteGeneration/pccs/middleware/auth.js +++ b/QuoteGeneration/pccs/middleware/auth.js @@ -31,7 +31,7 @@ import Config from 'config'; import Crypto from 'crypto'; import PccsStatus from '../constants/pccs_status_code.js'; -import Constants from '../constants/index.js'; +import PccsError from '../utils/PccsError.js'; export function validateUser(req, res, next) { const HTTP_HEADER_USER_TOKEN = 'user-token'; @@ -42,16 +42,12 @@ export function validateUser(req, res, next) { let user_token_hash = hash.digest('hex'); if (user_token_hash != Config.get('UserTokenHash')) { - return res - .status(PccsStatus.PCCS_STATUS_UNAUTHORIZED[0]) - .send(PccsStatus.PCCS_STATUS_UNAUTHORIZED[1]); + throw new PccsError(PccsStatus.PCCS_STATUS_UNAUTHORIZED); } else { next(); } } else { - res - .status(PccsStatus.PCCS_STATUS_UNAUTHORIZED[0]) - .send(PccsStatus.PCCS_STATUS_UNAUTHORIZED[1]); + throw new PccsError(PccsStatus.PCCS_STATUS_UNAUTHORIZED); } } @@ -64,15 +60,11 @@ export function validateAdmin(req, res, next) { let admin_token_hash = hash.digest('hex'); if (admin_token_hash != Config.get('AdminTokenHash')) { - return res - .status(PccsStatus.PCCS_STATUS_UNAUTHORIZED[0]) - .send(PccsStatus.PCCS_STATUS_UNAUTHORIZED[1]); + throw new PccsError(PccsStatus.PCCS_STATUS_UNAUTHORIZED); } else { next(); } } else { - res - .status(PccsStatus.PCCS_STATUS_UNAUTHORIZED[0]) - .send(PccsStatus.PCCS_STATUS_UNAUTHORIZED[1]); + throw new PccsError(PccsStatus.PCCS_STATUS_UNAUTHORIZED); } } diff --git a/QuoteGeneration/pccs/migrations/03_db_version_3.js b/QuoteGeneration/pccs/migrations/03_db_version_3.js new file mode 100644 index 00000000..23a7defa --- /dev/null +++ b/QuoteGeneration/pccs/migrations/03_db_version_3.js @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ +import logger from '../utils/Logger.js'; + +async function up(sequelize) { + await sequelize.transaction(async (t) => { + logger.info('DB Migration (Ver.2 -> 3) -- Start'); + + // update pcs_version table + logger.debug('DB Migration -- Update pcs_version table'); + let sql = 'UPDATE pcs_version SET db_version=3,api_version=4'; + await sequelize.query(sql); + + // update fmspc_tcbs table + // this is done by 1.Create new table 2.Copy data 3.Drop old table 4.Rename new into old + logger.debug('DB Migration -- update fmspc_tcbs'); + sql = + 'CREATE TABLE IF NOT EXISTS fmspc_tcbs_temp (fmspc VARCHAR(255) NOT NULL, type INTEGER NOT NULL, version INTEGER NOT NULL, ' + + ' tcbinfo BLOB, root_cert_id INTEGER, signing_cert_id INTEGER, ' + + ' created_time DATETIME NOT NULL, updated_time DATETIME NOT NULL, PRIMARY KEY(fmspc, type, version));'; + await sequelize.query(sql); + + sql = + 'INSERT INTO fmspc_tcbs_temp (fmspc, type, version, tcbinfo, root_cert_id, signing_cert_id, created_time, updated_time) ' + + ' SELECT fmspc, 0 as type, 3 as version, tcbinfo, root_cert_id, signing_cert_id, created_time, updated_time ' + + ' FROM fmspc_tcbs '; + await sequelize.query(sql); + + sql = 'DROP TABLE fmspc_tcbs'; + await sequelize.query(sql); + + sql = 'ALTER TABLE fmspc_tcbs_temp RENAME TO fmspc_tcbs'; + await sequelize.query(sql); + + // update enclave_identities table + // this is done by 1.Create new table 2.Copy data 3.Drop old table 4.Rename new into old + logger.debug('DB Migration -- update enclave_identities'); + sql = + 'CREATE TABLE IF NOT EXISTS enclave_identities_temp (id INTEGER NOTE NULL, version INTEGER NOT NULL, identity BLOB, root_cert_id INTEGER, ' + + ' signing_cert_id INTEGER, created_time DATETIME NOT NULL, updated_time DATETIME NOT NULL, PRIMARY KEY(id, version));'; + await sequelize.query(sql); + + sql = + 'INSERT INTO enclave_identities_temp (id, version, identity, root_cert_id, signing_cert_id, created_time, updated_time) ' + + ' SELECT id, 3 as version, identity, root_cert_id, signing_cert_id, created_time, updated_time ' + + ' FROM enclave_identities '; + await sequelize.query(sql); + + sql = 'DROP TABLE enclave_identities'; + await sequelize.query(sql); + + sql = 'ALTER TABLE enclave_identities_temp RENAME TO enclave_identities'; + await sequelize.query(sql); + + logger.info('DB Migration -- Done.'); + }); +} + +export default { up }; diff --git a/QuoteGeneration/pccs/package.json b/QuoteGeneration/pccs/package.json index 665408b7..23a29a26 100644 --- a/QuoteGeneration/pccs/package.json +++ b/QuoteGeneration/pccs/package.json @@ -1,14 +1,14 @@ { "name": "PCCS", "description": "Provisioning Certificate Caching Service", - "version": "1.13.0", + "version": "1.14.0", "dependencies": { "@fidm/x509": "^1.2.1", "ajv": "^6.12.4", "body-parser": "^1.19.0", "caw": "^2.0.1", "cls-hooked": "^4.2.2", - "config": "^3.3.1", + "config": "^3.3.7", "esm": "^3.2.25", "express": "^4.17.1", "ffi-napi": "^4.0.3", @@ -18,8 +18,8 @@ "node-schedule": "^2.1.0", "ref-array-di": "^1.2.2", "ref-napi": "^3.0.3", - "sequelize": "^6.6.5", - "sqlite3": "npm:@vscode/sqlite3@^5.0.7", + "sequelize": "^6.19.0", + "sqlite3": "^5.0.6", "umzug": "^2.3.0", "winston": "^3.3.3" }, diff --git a/QuoteGeneration/pccs/pccs_server.js b/QuoteGeneration/pccs/pccs_server.js index bd50543b..83e436cc 100644 --- a/QuoteGeneration/pccs/pccs_server.js +++ b/QuoteGeneration/pccs/pccs_server.js @@ -31,13 +31,12 @@ */ import Config from 'config'; -import Constants from './constants/index.js'; import morgan from 'morgan'; import express from 'express'; import logger from './utils/Logger.js'; import node_schedule from 'node-schedule'; import body_parser from 'body-parser'; -import { sgxRouter } from './routes/index.js'; +import { sgxRouter, tdxRouter } from './routes/index.js'; import * as fs from 'fs'; import * as https from 'https'; import * as auth from './middleware/auth.js'; @@ -65,6 +64,9 @@ const app = express(); const { urlencoded, json } = body_parser; const { scheduleJob } = node_schedule; + // Get PCS API version from the config file + global.PCS_VERSION = appUtil.get_api_version_from_url(Config.get('uri')); + // startup check if (!appUtil.startup_check()) { logger.endAndExitProcess(); @@ -77,7 +79,7 @@ appUtil.database_check().then((db_init_ok) => { // Change storage file permission if DB is sqlite if (Config.get('DB_CONFIG') == 'sqlite') { - fs.chmod(Config.get('sqlite').options.storage, 0o640, ()=>{}); + fs.chmod(Config.get('sqlite').options.storage, 0o640, () => {}); } // logger @@ -90,44 +92,36 @@ appUtil.database_check().then((db_init_ok) => { app.use(urlencoded({ extended: true })); app.use(json({ limit: '200000kb' })); - // authentication middleware - app.get( - '/sgx/certification/v' + Constants.API_VERSION + '/platforms', - auth.validateAdmin - ); - app.post( - '/sgx/certification/v' + Constants.API_VERSION + '/platforms', - auth.validateUser - ); - app.use( - '/sgx/certification/v' + Constants.API_VERSION + '/platformcollateral', - auth.validateAdmin - ); - app.use( - '/sgx/certification/v' + Constants.API_VERSION + '/refresh', - auth.validateAdmin - ); + // authentication middleware for v3 + app.get('/sgx/certification/v3/platforms', auth.validateAdmin); + app.post('/sgx/certification/v3/platforms', auth.validateUser); + app.use('/sgx/certification/v3/platformcollateral', auth.validateAdmin); + app.use('/sgx/certification/v3/refresh', auth.validateAdmin); + if (global.PCS_VERSION == 4) { + // authentication middleware for v4 + app.get('/sgx/certification/v4/platforms', auth.validateAdmin); + app.post('/sgx/certification/v4/platforms', auth.validateUser); + app.use('/sgx/certification/v4/platformcollateral', auth.validateAdmin); + app.use('/sgx/certification/v4/refresh', auth.validateAdmin); + } // router - app.use('/sgx/certification/v' + Constants.API_VERSION, sgxRouter); + app.use('/sgx/certification/v3', sgxRouter); + if (global.PCS_VERSION == 4) { + app.use('/sgx/certification/v4', sgxRouter); + app.use('/tdx/certification/v4', tdxRouter); + } // error handling middleware app.use(error.errorHandling); - //Config Options - const CONFIG_OPTION_CACHE_FILL_MODE = 'CachingFillMode'; - //Config values - const CACHE_FILL_MODE_LAZY = 'LAZY'; - const CACHE_FILL_MODE_REQ = 'REQ'; - const CACHE_FILL_MODE_OFFLINE = 'OFFLINE'; - // set caching mode - let cacheMode = Config.get(CONFIG_OPTION_CACHE_FILL_MODE); - if (cacheMode == CACHE_FILL_MODE_LAZY) { + let cacheMode = Config.get('CachingFillMode'); + if (cacheMode == 'LAZY') { cachingModeManager.cachingMode = new LazyCachingMode(); - } else if (cacheMode == CACHE_FILL_MODE_REQ) { + } else if (cacheMode == 'REQ') { cachingModeManager.cachingMode = new ReqCachingMode(); - } else if (cacheMode == CACHE_FILL_MODE_OFFLINE) { + } else if (cacheMode == 'OFFLINE') { cachingModeManager.cachingMode = new OfflineCachingMode(); } else { logger.error('Unknown caching mode. Please check your configuration file.'); diff --git a/QuoteGeneration/pccs/pcs_client/pcs_client.js b/QuoteGeneration/pccs/pcs_client/pcs_client.js index 98e99212..5a2e8a1a 100644 --- a/QuoteGeneration/pccs/pcs_client/pcs_client.js +++ b/QuoteGeneration/pccs/pcs_client/pcs_client.js @@ -79,14 +79,15 @@ async function do_request(url, options) { let response = await got(url, options); logger.info('Request-ID is : ' + response.headers['request-id']); + logger.debug('Request URL ' + url); if (response.statusCode != Constants.HTTP_SUCCESS) { - logger.error('Intel PCS server returns error. ' + response.body); + logger.error('Intel PCS server returns error(' + response.statusCode + ').' + response.body); } return response; } catch (err) { - logger.debug(err); + logger.error(err); if (err.response && err.response.headers) { logger.info('Request-ID is : ' + err.response.headers['request-id']); } @@ -94,6 +95,10 @@ async function do_request(url, options) { } } +function getTdxUrl(url) { + return url.replace('/sgx/', '/tdx/'); +} + export async function getCert(enc_ppid, cpusvn, pcesvn, pceid) { const options = { searchParams: { @@ -150,8 +155,8 @@ export async function getPckCrl(ca) { return do_request(Config.get('uri') + 'pckcrl', options); } -export async function getTcb(type, fmspc) { - if (type != Constants.PROD_TYPE_SGX) { +export async function getTcb(type, fmspc, version) { + if (type != Constants.PROD_TYPE_SGX && type != Constants.PROD_TYPE_TDX) { throw new PccsError(PccsStatus.PCCS_STATUS_INTERNAL_ERROR); } @@ -163,14 +168,23 @@ export async function getTcb(type, fmspc) { }; let uri = Config.get('uri') + 'tcb'; + if (type == Constants.PROD_TYPE_TDX) { + uri = getTdxUrl(uri); + } + + if (global.PCS_VERSION == 4 && version == 3) { + // A little tricky here because we need to use the v3 PCS URL though v4 is configured + uri = uri.replace('/v4/', '/v3/'); + } return do_request(uri, options); } -export async function getEnclaveIdentity(enclave_id) { +export async function getEnclaveIdentity(enclave_id, version) { if ( enclave_id != Constants.QE_IDENTITY_ID && - enclave_id != Constants.QVE_IDENTITY_ID + enclave_id != Constants.QVE_IDENTITY_ID && + enclave_id != Constants.TDQE_IDENTITY_ID ) { throw new PccsError(PccsStatus.PCCS_STATUS_INTERNAL_ERROR); } @@ -183,6 +197,13 @@ export async function getEnclaveIdentity(enclave_id) { let uri = Config.get('uri') + 'qe/identity'; if (enclave_id == Constants.QVE_IDENTITY_ID) { uri = Config.get('uri') + 'qve/identity'; + } else if (enclave_id == Constants.TDQE_IDENTITY_ID) { + uri = getTdxUrl(uri); + } + + if (global.PCS_VERSION == 4 && version == 3) { + // A little tricky here because we need to use the v3 PCS URL though v4 is configured + uri = uri.replace('/v4/', '/v3/'); } return do_request(uri, options); diff --git a/QuoteGeneration/pccs/routes/index.js b/QuoteGeneration/pccs/routes/index.js index 869a9d6c..7ee29652 100644 --- a/QuoteGeneration/pccs/routes/index.js +++ b/QuoteGeneration/pccs/routes/index.js @@ -43,6 +43,7 @@ import { // express routes for our API const sgxRouter = Router(); +const tdxRouter = Router(); //---------------- Routes for SGX APIs------------------------------- sgxRouter @@ -73,5 +74,9 @@ sgxRouter .post(refreshController.refreshCache) .get(refreshController.refreshCache); +//---------------- Routes for TDX APIs------------------------------- +tdxRouter.route('/tcb').get(tcbinfoController.getTdxTcbInfo); -export { sgxRouter }; +tdxRouter.route('/qe/identity').get(identityController.getTdQeIdentity); + +export { sgxRouter, tdxRouter }; diff --git a/QuoteGeneration/pccs/services/caching_modes/cachingMode.js b/QuoteGeneration/pccs/services/caching_modes/cachingMode.js index 82ed1864..e2a27eb8 100644 --- a/QuoteGeneration/pccs/services/caching_modes/cachingMode.js +++ b/QuoteGeneration/pccs/services/caching_modes/cachingMode.js @@ -72,7 +72,7 @@ class CachingMode { throw new PccsError(PccsStatus.PCCS_STATUS_PLATFORM_UNKNOWN); } - async getEnclaveIdentityFromPCS(enclave_id) { + async getEnclaveIdentityFromPCS(enclave_id, version) { throw new PccsError(PccsStatus.PCCS_STATUS_NO_CACHE_DATA); } @@ -84,7 +84,7 @@ class CachingMode { throw new PccsError(PccsStatus.PCCS_STATUS_NO_CACHE_DATA); } - async getTcbInfoFromPCS(type, fmspc) { + async getTcbInfoFromPCS(type, fmspc, version) { throw new PccsError(PccsStatus.PCCS_STATUS_NO_CACHE_DATA); } @@ -133,8 +133,8 @@ export class LazyCachingMode extends CachingMode { ); } - async getEnclaveIdentityFromPCS(enclave_id) { - return await CommonCacheLogic.getEnclaveIdentityFromPCS(enclave_id); + async getEnclaveIdentityFromPCS(enclave_id, version) { + return await CommonCacheLogic.getEnclaveIdentityFromPCS(enclave_id, version); } async getPckCrlFromPCS(ca) { @@ -149,8 +149,8 @@ export class LazyCachingMode extends CachingMode { return await CommonCacheLogic.getCrlFromPCS(uri); } - async getTcbInfoFromPCS(type, fmspc) { - return await CommonCacheLogic.getTcbInfoFromPCS(type, fmspc); + async getTcbInfoFromPCS(type, fmspc, version) { + return await CommonCacheLogic.getTcbInfoFromPCS(type, fmspc, version); } isRefreshable() { diff --git a/QuoteGeneration/pccs/services/caching_modes/cachingModeManager.js b/QuoteGeneration/pccs/services/caching_modes/cachingModeManager.js index c721d027..e0443ce0 100644 --- a/QuoteGeneration/pccs/services/caching_modes/cachingModeManager.js +++ b/QuoteGeneration/pccs/services/caching_modes/cachingModeManager.js @@ -61,8 +61,8 @@ class CachingModeManager { ); } - async getEnclaveIdentityFromPCS(enclave_id) { - return this._mode.getEnclaveIdentityFromPCS(enclave_id); + async getEnclaveIdentityFromPCS(enclave_id, version) { + return this._mode.getEnclaveIdentityFromPCS(enclave_id, version); } async getPckCrlFromPCS(ca) { @@ -73,8 +73,8 @@ class CachingModeManager { return this._mode.getRootCACrlFromPCS(rootca); } - async getTcbInfoFromPCS(type, fmspc) { - return this._mode.getTcbInfoFromPCS(type, fmspc); + async getTcbInfoFromPCS(type, fmspc, version) { + return this._mode.getTcbInfoFromPCS(type, fmspc, version); } isRefreshable() { diff --git a/QuoteGeneration/pccs/services/identityService.js b/QuoteGeneration/pccs/services/identityService.js index c00b3c62..755ba43b 100644 --- a/QuoteGeneration/pccs/services/identityService.js +++ b/QuoteGeneration/pccs/services/identityService.js @@ -32,14 +32,15 @@ import Constants from '../constants/index.js'; import * as enclaveIdentityDao from '../dao/enclaveIdentityDao.js'; import { cachingModeManager } from './caching_modes/cachingModeManager.js'; -export async function getEnclaveIdentity(enclave_id) { +export async function getEnclaveIdentity(enclave_id, version) { // query enclave identity from local database first const enclaveIdentity = await enclaveIdentityDao.getEnclaveIdentity( - enclave_id + enclave_id, + version ); let result = {}; if (enclaveIdentity == null) { - result = await cachingModeManager.getEnclaveIdentityFromPCS(enclave_id); + result = await cachingModeManager.getEnclaveIdentityFromPCS(enclave_id, version); } else { result[Constants.SGX_ENCLAVE_IDENTITY_ISSUER_CHAIN] = enclaveIdentity.signing_cert + enclaveIdentity.root_cert; diff --git a/QuoteGeneration/pccs/services/logic/commonCacheLogic.js b/QuoteGeneration/pccs/services/logic/commonCacheLogic.js index 3b968bb0..1459671d 100644 --- a/QuoteGeneration/pccs/services/logic/commonCacheLogic.js +++ b/QuoteGeneration/pccs/services/logic/commonCacheLogic.js @@ -32,6 +32,7 @@ import PccsError from '../../utils/PccsError.js'; import PccsStatus from '../../constants/pccs_status_code.js'; import Constants from '../../constants/index.js'; import logger from '../../utils/Logger.js'; +import X509 from '../../x509/x509.js'; import * as pckcertDao from '../../dao/pckcertDao.js'; import * as pckCertchainDao from '../../dao/pckCertchainDao.js'; import * as platformTcbsDao from '../../dao/platformTcbsDao.js'; @@ -43,8 +44,8 @@ import * as platformsDao from '../../dao/platformsDao.js'; import * as crlCacheDao from '../../dao/crlCacheDao.js'; import * as pcsClient from '../../pcs_client/pcs_client.js'; import * as pckLibWrapper from '../../lib_wrapper/pcklib_wrapper.js'; +import * as appUtil from '../../utils/apputil.js'; import { sequelize } from '../../dao/models/index.js'; -import X509 from '../../x509/x509.js'; import { cachingModeManager } from '../caching_modes/cachingModeManager.js'; // Try to get PCK certs from Intel PCS for the platform with {pce_id, platform_manifest}, @@ -73,9 +74,9 @@ export async function getPckCertFromPCS( pceid ); } else { - // if enc_ppid is all zero, return NOT_FOUND + // if enc_ppid is all zero, return NO_CACHE_DATA if (enc_ppid.match(/^0+$/)) { - throw new PccsError(PccsStatus.PCCS_STATUS_NOT_FOUND); + throw new PccsError(PccsStatus.PCCS_STATUS_NO_CACHE_DATA); } // Call Intel PCS API with encrypted PPID @@ -84,6 +85,10 @@ export async function getPckCertFromPCS( // check HTTP status if (pck_server_res.statusCode != Constants.HTTP_SUCCESS) { + logger.error( + 'Intel PCS server returns error. Error code : ' + + pck_server_res.statusCode + ); throw new PccsError(PccsStatus.PCCS_STATUS_NO_CACHE_DATA); } @@ -124,7 +129,7 @@ export async function getPckCertFromPCS( } // Make PEM certificates array - let pem_certs = pckcerts_valid.map((o) => unescape(o.cert)); + let pem_certs = pckcerts_valid.map((o) => decodeURIComponent(o.cert)); // Get fmspc and ca type from response header const fmspc = pcsClient @@ -141,8 +146,8 @@ export async function getPckCertFromPCS( throw new PccsError(PccsStatus.PCCS_STATUS_INTERNAL_ERROR); } - // get tcbinfo for this fmspc - pck_server_res = await pcsClient.getTcb(Constants.PROD_TYPE_SGX, fmspc); + // get SGX tcbinfo for this fmspc + pck_server_res = await pcsClient.getTcb(Constants.PROD_TYPE_SGX, fmspc, global.PCS_VERSION); if (pck_server_res.statusCode != Constants.HTTP_SUCCESS) { throw new PccsError(PccsStatus.PCCS_STATUS_NO_CACHE_DATA); } @@ -150,9 +155,18 @@ export async function getPckCertFromPCS( const tcbinfo_str = pck_server_res.body; const tcbinfo_issuer_chain = pcsClient.getHeaderValue( pck_server_res.headers, - Constants.SGX_TCB_INFO_ISSUER_CHAIN + appUtil.getTcbInfoIssuerChainName(global.PCS_VERSION) ); + // also get TDX tcbinfo for this fmspc if it exists + let tcbinfo_tdx = null; + if (global.PCS_VERSION >= 4) { + pck_server_res = await pcsClient.getTcb(Constants.PROD_TYPE_TDX, fmspc, global.PCS_VERSION); + if (pck_server_res.statusCode == Constants.HTTP_SUCCESS) { + tcbinfo_tdx = pck_server_res.rawBody; + } + } + // Before we flush the caching database, get current raw TCBs that are already cached // We need to re-run PCK cert selection tool for existing raw TCB levels due to certs change let cached_platform_tcbs = await platformTcbsDao.getPlatformTcbsById( @@ -178,7 +192,7 @@ export async function getPckCertFromPCS( qeid, pceid, pckcert.tcbm, - unescape(pckcert.cert) + decodeURIComponent(pckcert.cert) ); } @@ -189,8 +203,17 @@ export async function getPckCertFromPCS( await fmspcTcbDao.upsertFmspcTcb({ type: Constants.PROD_TYPE_SGX, fmspc: fmspc, + version: global.PCS_VERSION, tcbinfo: tcbinfo, }); + if (tcbinfo_tdx) { + await fmspcTcbDao.upsertFmspcTcb({ + type: Constants.PROD_TYPE_TDX, + fmspc: fmspc, + version: global.PCS_VERSION, + tcbinfo: tcbinfo_tdx, + }); + } // Update or insert PCK Certchain await pckCertchainDao.upsertPckCertchain(ca_type); // Update or insert PCS certificates @@ -289,17 +312,18 @@ export async function getPckCrlFromPCS(ca) { return result; } -export async function getTcbInfoFromPCS(type, fmspc) { - const pck_server_res = await pcsClient.getTcb(type, fmspc); +export async function getTcbInfoFromPCS(type, fmspc, version) { + const pck_server_res = await pcsClient.getTcb(type, fmspc, version); if (pck_server_res.statusCode != Constants.HTTP_SUCCESS) { throw new PccsError(PccsStatus.PCCS_STATUS_NO_CACHE_DATA); } let result = {}; - result[Constants.SGX_TCB_INFO_ISSUER_CHAIN] = pcsClient.getHeaderValue( + let issuerChainName = appUtil.getTcbInfoIssuerChainName(version); + result[issuerChainName] = pcsClient.getHeaderValue( pck_server_res.headers, - Constants.SGX_TCB_INFO_ISSUER_CHAIN + issuerChainName ); result['tcbinfo'] = pck_server_res.rawBody; @@ -308,22 +332,18 @@ export async function getTcbInfoFromPCS(type, fmspc) { await fmspcTcbDao.upsertFmspcTcb({ type: type, fmspc: fmspc, + version: version, tcbinfo: result['tcbinfo'], }); // update or insert certificate chain - await pcsCertificatesDao.upsertTcbInfoIssuerChain( - pcsClient.getHeaderValue( - pck_server_res.headers, - Constants.SGX_TCB_INFO_ISSUER_CHAIN - ) - ); + await pcsCertificatesDao.upsertTcbInfoIssuerChain(result[issuerChainName]); }); return result; } -export async function getEnclaveIdentityFromPCS(enclave_id) { - const pck_server_res = await pcsClient.getEnclaveIdentity(enclave_id); +export async function getEnclaveIdentityFromPCS(enclave_id, version) { + const pck_server_res = await pcsClient.getEnclaveIdentity(enclave_id, version); if (pck_server_res.statusCode != Constants.HTTP_SUCCESS) { throw new PccsError(PccsStatus.PCCS_STATUS_NO_CACHE_DATA); @@ -341,7 +361,8 @@ export async function getEnclaveIdentityFromPCS(enclave_id) { // update or insert QE Identity await enclaveIdentityDao.upsertEnclaveIdentity( enclave_id, - pck_server_res.rawBody + pck_server_res.rawBody, + version ); // update or insert certificate chain await pcsCertificatesDao.upsertEnclaveIdentityIssuerChain( @@ -360,7 +381,8 @@ export async function getRootCACrlFromPCS(rootca) { if (rootca == null) { // Root Cert not cached const pck_server_res = await pcsClient.getEnclaveIdentity( - Constants.QE_IDENTITY_ID + Constants.QE_IDENTITY_ID, + global.PCS_VERSION ); if (pck_server_res.statusCode == Constants.HTTP_SUCCESS) { // update certificates @@ -383,7 +405,7 @@ export async function getRootCACrlFromPCS(rootca) { } const x509 = new X509(); - if (!x509.parseCert(unescape(rootca.cert)) || !x509.cdp_uri) { + if (!x509.parseCert(decodeURIComponent(rootca.cert)) || !x509.cdp_uri) { // Certificate is invalid throw new Error('Invalid PCS certificate!'); } diff --git a/QuoteGeneration/pccs/services/logic/qvCollateralLogic.js b/QuoteGeneration/pccs/services/logic/qvCollateralLogic.js index 213fd229..80e1bee5 100644 --- a/QuoteGeneration/pccs/services/logic/qvCollateralLogic.js +++ b/QuoteGeneration/pccs/services/logic/qvCollateralLogic.js @@ -47,18 +47,63 @@ export async function checkQuoteVerificationCollateral() { // QE identity const qeid = await enclaveIdentityDao.getEnclaveIdentity( - Constants.QE_IDENTITY_ID + Constants.QE_IDENTITY_ID, + global.PCS_VERSION ); if (qeid == null) { - await CommonCacheLogic.getEnclaveIdentityFromPCS(Constants.QE_IDENTITY_ID); + await CommonCacheLogic.getEnclaveIdentityFromPCS( + Constants.QE_IDENTITY_ID, + global.PCS_VERSION + ); } // QVE identity const qveid = await enclaveIdentityDao.getEnclaveIdentity( - Constants.QVE_IDENTITY_ID + Constants.QVE_IDENTITY_ID, + global.PCS_VERSION ); if (qveid == null) { - await CommonCacheLogic.getEnclaveIdentityFromPCS(Constants.QVE_IDENTITY_ID); + await CommonCacheLogic.getEnclaveIdentityFromPCS( + Constants.QVE_IDENTITY_ID, + global.PCS_VERSION + ); } + + if (global.PCS_VERSION == 4) { + // QE identity v3 + const qeid = await enclaveIdentityDao.getEnclaveIdentity( + Constants.QE_IDENTITY_ID, + 3 + ); + if (qeid == null) { + await CommonCacheLogic.getEnclaveIdentityFromPCS( + Constants.QE_IDENTITY_ID, + 3 + ); + } + // QVE identity v3 + const qveid = await enclaveIdentityDao.getEnclaveIdentity( + Constants.QVE_IDENTITY_ID, + 3 + ); + if (qveid == null) { + await CommonCacheLogic.getEnclaveIdentityFromPCS( + Constants.QVE_IDENTITY_ID, + 3 + ); + } + // TD QE identity v4 + const tdqeid = await enclaveIdentityDao.getEnclaveIdentity( + Constants.TDQE_IDENTITY_ID, + 4 + ); + if (tdqeid == null) { + await CommonCacheLogic.getEnclaveIdentityFromPCS( + Constants.TDQE_IDENTITY_ID, + 4 + ); + } + } + // Root CA crl let rootca = await pcsCertificatesDao.getCertificateById( Constants.PROCESSOR_ROOT_CERT_ID diff --git a/QuoteGeneration/pccs/services/pccs_schemas.js b/QuoteGeneration/pccs/services/pccs_schemas.js index 675a7ee0..57955af1 100644 --- a/QuoteGeneration/pccs/services/pccs_schemas.js +++ b/QuoteGeneration/pccs/services/pccs_schemas.js @@ -61,7 +61,7 @@ export const PLATFORM_REG_SCHEMA = { required: ['qe_id', 'pce_id'], }; -export const PLATFORM_COLLATERAL_SCHEMA = { +export const PLATFORM_COLLATERAL_SCHEMA_V3 = { title: 'Platform Registration', description: 'Platform Registration Data Format', type: 'object', @@ -442,3 +442,441 @@ export const PLATFORM_COLLATERAL_SCHEMA = { }, required: ['platforms', 'collaterals'], }; + +export const PLATFORM_COLLATERAL_SCHEMA_V4 = { + title: 'Platform Registration', + description: 'Platform Registration Data Format', + type: 'object', + properties: { + platforms: { + type: 'array', + items: { + 'type:': 'object', + properties: { + qe_id: { + type: 'string', + minLength: 1, + maxLength: 260, + }, + pce_id: { + type: 'string', + pattern: '^[a-fA-F0-9]{4}$', + }, + cpu_svn: { + type: 'string', + pattern: '^[a-fA-F0-9]{32}$|^$', + }, + pce_svn: { + type: 'string', + pattern: '^[a-fA-F0-9]{4}$|^$', + }, + enc_ppid: { + type: 'string', + pattern: '^[a-fA-F0-9]{768}$|^$', + }, + platform_manifest: { + type: 'string', + }, + }, + required: ['qe_id', 'pce_id'], + }, + }, + collaterals: { + type: 'object', + properties: { + pck_certs: { + type: 'array', + items: { + type: 'object', + properties: { + qe_id: { + type: 'string', + minLength: 1, + maxLength: 260, + }, + pce_id: { + type: 'string', + pattern: '^[a-fA-F0-9]{4}$', + }, + enc_ppid: { + type: 'string', + pattern: '^[a-fA-F0-9]{768}$|^$', + }, + platform_manifest: { + type: 'string', + }, + certs: { + type: 'array', + items: { + type: 'object', + properties: { + tcb: { + type: 'object', + properties: { + sgxtcbcomp01svn: { + type: 'integer', + minimum: 0, + maximum: 255, + }, + sgxtcbcomp02svn: { + type: 'integer', + minimum: 0, + maximum: 255, + }, + sgxtcbcomp03svn: { + type: 'integer', + minimum: 0, + maximum: 255, + }, + sgxtcbcomp04svn: { + type: 'integer', + minimum: 0, + maximum: 255, + }, + sgxtcbcomp05svn: { + type: 'integer', + minimum: 0, + maximum: 255, + }, + sgxtcbcomp06svn: { + type: 'integer', + minimum: 0, + maximum: 255, + }, + sgxtcbcomp07svn: { + type: 'integer', + minimum: 0, + maximum: 255, + }, + sgxtcbcomp08svn: { + type: 'integer', + minimum: 0, + maximum: 255, + }, + sgxtcbcomp09svn: { + type: 'integer', + minimum: 0, + maximum: 255, + }, + sgxtcbcomp10svn: { + type: 'integer', + minimum: 0, + maximum: 255, + }, + sgxtcbcomp11svn: { + type: 'integer', + minimum: 0, + maximum: 255, + }, + sgxtcbcomp12svn: { + type: 'integer', + minimum: 0, + maximum: 255, + }, + sgxtcbcomp13svn: { + type: 'integer', + minimum: 0, + maximum: 255, + }, + sgxtcbcomp14svn: { + type: 'integer', + minimum: 0, + maximum: 255, + }, + sgxtcbcomp15svn: { + type: 'integer', + minimum: 0, + maximum: 255, + }, + sgxtcbcomp16svn: { + type: 'integer', + minimum: 0, + maximum: 255, + }, + pcesvn: { + type: 'integer', + minimum: 0, + maximum: 65535, + }, + }, + }, + tcbm: { + type: 'string', + pattern: '^[0-9a-fA-F]{36}$', + }, + cert: { + type: 'string', + }, + }, + required: ['tcb', 'tcbm', 'cert'], + }, + }, + }, + required: ['qe_id', 'pce_id', 'enc_ppid', 'certs'], + }, + }, + tcbinfos: { + type: 'array', + items: { + type: 'object', + properties: { + fmspc: { + type: 'string', + }, + sgx_tcbinfo: { + type: 'object', + properties: { + tcbInfo: { + type: 'object', + properties: { + id: { + const: 'SGX', + }, + version: { + type: 'integer', + }, + issueDate: { + type: 'string', + format: 'date-time', + }, + nextUpdate: { + type: 'string', + format: 'date-time', + }, + fmspc: { + type: 'string', + pattern: '^[0-9a-fA-F]{12}$', + }, + pceId: { + type: 'string', + pattern: '^[0-9a-fA-F]{4}$', + }, + tcbType: { + type: 'integer', + }, + tcbEvaluationDataNumber: { + type: 'integer', + }, + tcbLevels: { + type: 'array', + items: { + type: 'object', + properties: { + tcb: { + type: 'object', + properties: { + sgxtcbcomponents: { + type: 'array', + items: { + type: 'object', + properties: { + svn: { + type: 'integer', + }, + category: { + type: 'string', + }, + type: { + type: 'string', + }, + }, + required: ['svn'], + }, + }, + pcesvn: { + type: 'integer', + }, + }, + required: ['sgxtcbcomponents'], + }, + tcbDate: { + type: 'string', + format: 'date-time', + }, + tcbStatus: { + type: 'string', + }, + advisoryIDs: { + type: 'array', + items: { + type: 'string', + }, + }, + }, + }, + }, + }, + }, + signature: { + type: 'string', + }, + }, + required: ['tcbInfo', 'signature'], + }, + tdx_tcbinfo: { + type: 'object', + properties: { + tcbInfo: { + type: 'object', + properties: { + id: { + const: 'TDX', + }, + version: { + type: 'integer', + }, + issueDate: { + type: 'string', + format: 'date-time', + }, + nextUpdate: { + type: 'string', + format: 'date-time', + }, + fmspc: { + type: 'string', + pattern: '^[0-9a-fA-F]{12}$', + }, + pceId: { + type: 'string', + pattern: '^[0-9a-fA-F]{4}$', + }, + tcbType: { + type: 'integer', + }, + tcbEvaluationDataNumber: { + type: 'integer', + }, + mrsignerseam: { + type: 'string', + }, + tcbLevels: { + type: 'array', + items: { + type: 'object', + properties: { + tcb: { + type: 'object', + properties: { + sgxtcbcomponents: { + type: 'array', + items: { + type: 'object', + properties: { + svn: { + type: 'integer', + }, + category: { + type: 'string', + }, + type: { + type: 'string', + }, + }, + required: ['svn'], + }, + }, + pcesvn: { + type: 'integer', + }, + tdxtcbcomponents: { + type: 'array', + items: { + type: 'object', + properties: { + svn: { + type: 'integer', + }, + category: { + type: 'string', + }, + type: { + type: 'string', + }, + }, + required: ['svn'], + }, + }, + }, + required: ['sgxtcbcomponents'], + }, + tcbDate: { + type: 'string', + format: 'date-time', + }, + tcbStatus: { + type: 'string', + }, + advisoryIDs: { + type: 'array', + items: { + type: 'string', + }, + }, + }, + }, + }, + }, + }, + signature: { + type: 'string', + }, + }, + required: ['tcbInfo', 'signature'], + }, + }, + required: ['fmspc'], + }, + }, + pckcacrl: { + type: 'object', + properties: { + processorCrl: { + type: 'string', + }, + platformCrl: { + type: 'string', + }, + }, + }, + qeidentity: { + type: 'string', + }, + tdqeidentity: { + type: 'string', + }, + qveidentity: { + type: 'string', + }, + certificates: { + type: 'object', + properties: { + 'SGX-PCK-Certificate-Issuer-Chain': { + type: 'object', + properties: { + PROCESSOR: { + type: 'string', + }, + PLATFORM: { + type: 'string', + }, + }, + }, + 'SGX-TCB-Info-Issuer-Chain': { + type: 'string', + }, + 'SGX-Enclave-Identity-Issuer-Chain': { + type: 'string', + }, + }, + required: ['SGX-PCK-Certificate-Issuer-Chain'], + }, + rootcacrl: { + type: 'string', + }, + }, + required: ['pck_certs', 'tcbinfos', 'certificates'], + }, + }, + required: ['platforms', 'collaterals'], +}; diff --git a/QuoteGeneration/pccs/services/pckcertService.js b/QuoteGeneration/pccs/services/pckcertService.js index c7e7d2c1..30c6e69f 100644 --- a/QuoteGeneration/pccs/services/pckcertService.js +++ b/QuoteGeneration/pccs/services/pckcertService.js @@ -60,7 +60,7 @@ export async function pckCertSelection( } // Always use SGX tcb info for PCK cert selection - let tcbinfo = await fmspcTcbDao.getTcbInfo(Constants.PROD_TYPE_SGX, fmspc); + let tcbinfo = await fmspcTcbDao.getTcbInfo(Constants.PROD_TYPE_SGX, fmspc, global.PCS_VERSION); if (tcbinfo == null || tcbinfo.tcbinfo == null) throw new PccsError(PccsStatus.PCCS_STATUS_NO_CACHE_DATA); diff --git a/QuoteGeneration/pccs/services/platformCollateralService.js b/QuoteGeneration/pccs/services/platformCollateralService.js index b67284f4..3dd1e74b 100644 --- a/QuoteGeneration/pccs/services/platformCollateralService.js +++ b/QuoteGeneration/pccs/services/platformCollateralService.js @@ -43,7 +43,8 @@ import * as enclaveIdentityDao from '../dao/enclaveIdentityDao.js'; import * as pckCertchainDao from '../dao/pckCertchainDao.js'; import * as pcsCertificatesDao from '../dao/pcsCertificatesDao.js'; import * as pckLibWrapper from '../lib_wrapper/pcklib_wrapper.js'; -import { PLATFORM_COLLATERAL_SCHEMA } from './pccs_schemas.js'; +import * as appUtil from '../utils/apputil.js'; +import { PLATFORM_COLLATERAL_SCHEMA_V4 } from './pccs_schemas.js'; import { sequelize } from '../dao/models/index.js'; const ajv = new Ajv(); @@ -58,10 +59,13 @@ function verify_cert(root1, root2) { return true; } -export async function addPlatformCollateral(collateralJson) { +export async function addPlatformCollateral(collateralJson, version) { return await sequelize.transaction(async (t) => { //check parameters - let valid = ajv.validate(PLATFORM_COLLATERAL_SCHEMA, collateralJson); + let valid; + if (version < 4) + valid = ajv.validate(PLATFORM_COLLATERAL_SCHEMA_V3, collateralJson); + else valid = ajv.validate(PLATFORM_COLLATERAL_SCHEMA_V4, collateralJson); if (!valid) { throw new PccsError(PccsStatus.PCCS_STATUS_INVALID_REQ); } @@ -80,7 +84,7 @@ export async function addPlatformCollateral(collateralJson) { toUpper(platform_certs.qe_id), toUpper(platform_certs.pce_id), toUpper(cert.tcbm), - unescape(cert.cert) + decodeURIComponent(cert.cert) ); } @@ -133,7 +137,7 @@ export async function addPlatformCollateral(collateralJson) { } // parse arbitary cert to get fmspc value const x509 = new X509(); - if (!x509.parseCert(unescape(mycerts[0].cert))) { + if (!x509.parseCert(decodeURIComponent(mycerts[0].cert))) { logger.error('Invalid certificate format.'); throw new PccsError(PccsStatus.PCCS_STATUS_INVALID_REQ); } @@ -151,14 +155,18 @@ export async function addPlatformCollateral(collateralJson) { throw new PccsError(PccsStatus.PCCS_STATUS_INVALID_REQ); } - let pem_certs = mycerts.map((o) => unescape(o.cert)); + let tcbinfo_str; + if (version < 4) tcbinfo_str = JSON.stringify(tcbinfo.tcbinfo); + else tcbinfo_str = JSON.stringify(tcbinfo.sgx_tcbinfo); + + let pem_certs = mycerts.map((o) => decodeURIComponent(o.cert)); for (let platform of platforms_cleaned) { // get the best cert with PCKCertSelectionTool let cert_index = pckLibWrapper.pck_cert_select( platform.cpu_svn, platform.pce_svn, platform.pce_id, - JSON.stringify(tcbinfo.tcbinfo), + tcbinfo_str, pem_certs, pem_certs.length ); @@ -194,11 +202,24 @@ export async function addPlatformCollateral(collateralJson) { // loop through tcbinfos for (const tcbinfo of tcbinfos) { tcbinfo.fmspc = toUpper(tcbinfo.fmspc); - if (tcbinfo.tcbinfo) { + tcbinfo.version = version; + if (version < 4 && tcbinfo.tcbinfo) { tcbinfo.type = Constants.PROD_TYPE_SGX; tcbinfo.tcbinfo = Buffer.from(JSON.stringify(tcbinfo.tcbinfo)); await fmspcTcbDao.upsertFmspcTcb(tcbinfo); } + if (version >= 4) { + if (tcbinfo.sgx_tcbinfo) { + tcbinfo.type = Constants.PROD_TYPE_SGX; + tcbinfo.tcbinfo = Buffer.from(JSON.stringify(tcbinfo.sgx_tcbinfo)); + await fmspcTcbDao.upsertFmspcTcb(tcbinfo); + } + if (tcbinfo.tdx_tcbinfo) { + tcbinfo.type = Constants.PROD_TYPE_TDX; + tcbinfo.tcbinfo = Buffer.from(JSON.stringify(tcbinfo.tdx_tcbinfo)); + await fmspcTcbDao.upsertFmspcTcb(tcbinfo); + } + } } // Update or insert PCK CRL @@ -219,14 +240,24 @@ export async function addPlatformCollateral(collateralJson) { if (collaterals.qeidentity) { await enclaveIdentityDao.upsertEnclaveIdentity( Constants.QE_IDENTITY_ID, - collaterals.qeidentity + collaterals.qeidentity, + version + ); + } + // Update or insert TDQE Identity + if (collaterals.tdqeidentity) { + await enclaveIdentityDao.upsertEnclaveIdentity( + Constants.TDQE_IDENTITY_ID, + collaterals.tdqeidentity, + version ); } // Update or insert QvE Identity if (collaterals.qveidentity) { await enclaveIdentityDao.upsertEnclaveIdentity( Constants.QVE_IDENTITY_ID, - collaterals.qveidentity + collaterals.qveidentity, + version ); } @@ -271,10 +302,12 @@ export async function addPlatformCollateral(collateralJson) { } } if ( - Boolean(collaterals.certificates[Constants.SGX_TCB_INFO_ISSUER_CHAIN]) + Boolean( + collaterals.certificates[appUtil.getTcbInfoIssuerChainName(version)] + ) ) { rootCert[2] = await pcsCertificatesDao.upsertTcbInfoIssuerChain( - collaterals.certificates[Constants.SGX_TCB_INFO_ISSUER_CHAIN] + collaterals.certificates[appUtil.getTcbInfoIssuerChainName(version)] ); } if ( diff --git a/QuoteGeneration/pccs/services/refreshService.js b/QuoteGeneration/pccs/services/refreshService.js index 7179c6a3..e1f75546 100644 --- a/QuoteGeneration/pccs/services/refreshService.js +++ b/QuoteGeneration/pccs/services/refreshService.js @@ -32,6 +32,7 @@ import PccsError from '../utils/PccsError.js'; import PccsStatus from '../constants/pccs_status_code.js'; import Constants from '../constants/index.js'; import logger from '../utils/Logger.js'; +import X509 from '../x509/x509.js'; import * as pckcertDao from '../dao/pckcertDao.js'; import * as enclaveIdentityDao from '../dao/enclaveIdentityDao.js'; import * as pckcrlDao from '../dao/pckcrlDao.js'; @@ -43,27 +44,52 @@ import * as pcsCertificatesDao from '../dao/pcsCertificatesDao.js'; import * as crlCacheDao from '../dao/crlCacheDao.js'; import * as pcsClient from '../pcs_client/pcs_client.js'; import * as pckLibWrapper from '../lib_wrapper/pcklib_wrapper.js'; +import * as appUtil from '../utils/apputil.js'; import { sequelize } from '../dao/models/index.js'; import { cachingModeManager } from './caching_modes/cachingModeManager.js'; -import X509 from '../x509/x509.js'; // Refresh the enclave_identities table -async function refresh_enclave_identity(enclave_id) { - const pck_server_res = await pcsClient.getEnclaveIdentity(enclave_id); - if (pck_server_res.statusCode == Constants.HTTP_SUCCESS) { - // Then refresh cache DB - await enclaveIdentityDao.upsertEnclaveIdentity( - enclave_id, - pck_server_res.rawBody - ); - await pcsCertificatesDao.upsertEnclaveIdentityIssuerChain( - pcsClient.getHeaderValue( - pck_server_res.headers, - Constants.SGX_ENCLAVE_IDENTITY_ISSUER_CHAIN - ) +async function refresh_enclave_identities() { + let enclave_id_list; + if (global.PCS_VERSION == 3) { + enclave_id_list = [ + [Constants.QE_IDENTITY_ID, 3], + [Constants.QVE_IDENTITY_ID, 3], + ]; + } else if (global.PCS_VERSION == 4) { + enclave_id_list = [ + [Constants.QE_IDENTITY_ID, 3], + [Constants.QVE_IDENTITY_ID, 3], + [Constants.QE_IDENTITY_ID, 4], + [Constants.QVE_IDENTITY_ID, 4], + [Constants.TDQE_IDENTITY_ID, 4], + ]; + } + let issuer_chain_updated = false; // Update issuer chain only once + for (const enclave_id of enclave_id_list) { + const pck_server_res = await pcsClient.getEnclaveIdentity( + enclave_id[0], + enclave_id[1] ); - } else { - throw new PccsError(PccsStatus.PCCS_STATUS_SERVICE_UNAVAILABLE); + if (pck_server_res.statusCode == Constants.HTTP_SUCCESS) { + // Then refresh cache DB + await enclaveIdentityDao.upsertEnclaveIdentity( + enclave_id[0], + pck_server_res.rawBody, + enclave_id[1] + ); + if (!issuer_chain_updated) { + await pcsCertificatesDao.upsertEnclaveIdentityIssuerChain( + pcsClient.getHeaderValue( + pck_server_res.headers, + Constants.SGX_ENCLAVE_IDENTITY_ISSUER_CHAIN + ) + ); + issuer_chain_updated = true; + } + } else { + throw new PccsError(PccsStatus.PCCS_STATUS_SERVICE_UNAVAILABLE); + } } } @@ -152,7 +178,7 @@ async function refresh_all_pckcerts(fmspc_array) { const tcbinfo = pck_server_res.rawBody; tcbinfo_str = pck_server_res.body; - pem_certs = pckcerts.map((o) => unescape(o.cert)); + pem_certs = pckcerts.map((o) => decodeURIComponent(o.cert)); // flush and add PCK certs await pckcertDao.deleteCerts(platformTcb.qe_id, platformTcb.pce_id); @@ -161,7 +187,7 @@ async function refresh_all_pckcerts(fmspc_array) { platformTcb.qe_id, platformTcb.pce_id, pckcert.tcbm, - unescape(pckcert.cert) + decodeURIComponent(pckcert.cert) ); } } @@ -232,11 +258,10 @@ async function refresh_rootca_crl() { let rootca = await pcsCertificatesDao.getCertificateById( Constants.PROCESSOR_ROOT_CERT_ID ); - if (!rootca) - throw new PccsError(PccsStatus.PCCS_STATUS_INTERNAL_ERROR); + if (!rootca) throw new PccsError(PccsStatus.PCCS_STATUS_INTERNAL_ERROR); const x509 = new X509(); - if (!x509.parseCert(unescape(rootca.cert)) || !x509.cdp_uri) { + if (!x509.parseCert(decodeURIComponent(rootca.cert)) || !x509.cdp_uri) { // Certificate is invalid throw new Error('Invalid PCS certificate!'); } @@ -260,20 +285,21 @@ async function refresh_cached_crls() { } // Refresh the TCB info for the specified fmspc value -async function refresh_one_tcb(fmspc) { - const pck_server_res = await pcsClient.getTcb(Constants.PROD_TYPE_SGX, fmspc); +async function refresh_one_tcb(fmspc, type, version) { + const pck_server_res = await pcsClient.getTcb(type, fmspc, version); if (pck_server_res.statusCode == Constants.HTTP_SUCCESS) { // Then refresh cache DB await fmspcTcbDao.upsertFmspcTcb({ + type: type, fmspc: fmspc, - type: Constants.PROD_TYPE_SGX, + version: version, tcbinfo: pck_server_res.rawBody, }); // update or insert certificate chain await pcsCertificatesDao.upsertTcbInfoIssuerChain( pcsClient.getHeaderValue( pck_server_res.headers, - Constants.SGX_TCB_INFO_ISSUER_CHAIN + appUtil.getTcbInfoIssuerChainName(version) ) ); } else { @@ -289,7 +315,7 @@ async function refresh_all_tcbs() { const tcbs = await fmspcTcbDao.getAllTcbs(); for (let tcb of tcbs) { // refresh each tcb - await refresh_one_tcb(tcb.fmspc); + await refresh_one_tcb(tcb.fmspc, tcb.type, tcb.version); } } @@ -306,8 +332,7 @@ export async function refreshCache(type, fmspc) { await sequelize.transaction(async (t) => { await refresh_pck_crls(); await refresh_all_tcbs(); - await refresh_enclave_identity(Constants.QE_IDENTITY_ID); - await refresh_enclave_identity(Constants.QVE_IDENTITY_ID); + await refresh_enclave_identities(); await refresh_rootca_crl(); await refresh_cached_crls(); }); @@ -333,8 +358,7 @@ export async function scheduledRefresh() { await sequelize.transaction(async (t) => { await refresh_pck_crls(); await refresh_all_tcbs(); - await refresh_enclave_identity(Constants.QE_IDENTITY_ID); - await refresh_enclave_identity(Constants.QVE_IDENTITY_ID); + await refresh_enclave_identities(); await refresh_rootca_crl(); await refresh_cached_crls(); }); diff --git a/QuoteGeneration/pccs/services/tcbinfoService.js b/QuoteGeneration/pccs/services/tcbinfoService.js index 609636e1..95724573 100644 --- a/QuoteGeneration/pccs/services/tcbinfoService.js +++ b/QuoteGeneration/pccs/services/tcbinfoService.js @@ -28,19 +28,19 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ -import Constants from '../constants/index.js'; import * as fmspcTcbDao from '../dao/fmspcTcbDao.js'; +import * as appUtil from '../utils/apputil.js'; import { cachingModeManager } from './caching_modes/cachingModeManager.js'; -export async function getTcbInfo(type, fmspc) { +export async function getTcbInfo(type, fmspc, version) { // query tcbinfo from local database first - const tcbinfo = await fmspcTcbDao.getTcbInfo(type, fmspc); + const tcbinfo = await fmspcTcbDao.getTcbInfo(type, fmspc, version); let result = {}; if (tcbinfo == null) { - result = await cachingModeManager.getTcbInfoFromPCS(type, fmspc); + result = await cachingModeManager.getTcbInfoFromPCS(type, fmspc, version); } else { - result[Constants.SGX_TCB_INFO_ISSUER_CHAIN] = + result[appUtil.getTcbInfoIssuerChainName(version)] = tcbinfo.signing_cert + tcbinfo.root_cert; result['tcbinfo'] = tcbinfo.tcbinfo; } diff --git a/QuoteGeneration/pccs/startup.sh b/QuoteGeneration/pccs/startup.sh index 4ec6aa3d..c6e99930 100755 --- a/QuoteGeneration/pccs/startup.sh +++ b/QuoteGeneration/pccs/startup.sh @@ -40,11 +40,15 @@ fi PCCS_USER=pccs PCCS_HOME=$(readlink -m $(dirname "$0")) -if [ ! $(getent group $PCCS_USER) ]; then - groupadd $PCCS_USER -fi -if ! id "$PCCS_USER" &>/dev/null; then - adduser --system $PCCS_USER -g $PCCS_USER --home $PCCS_HOME --no-create-home --shell /bin/bash +if [ "$1" == "debian" ]; then + adduser --quiet --system $PCCS_USER --group --home $PCCS_HOME --no-create-home --shell /bin/bash +else + if [ ! $(getent group $PCCS_USER) ]; then + groupadd $PCCS_USER + fi + if ! id "$PCCS_USER" &>/dev/null; then + adduser --system $PCCS_USER -g $PCCS_USER --home $PCCS_HOME --no-create-home --shell /bin/bash + fi fi chown -R $PCCS_USER:$PCCS_USER $PCCS_HOME chmod 640 $PCCS_HOME/config/default.json diff --git a/QuoteGeneration/pccs/utils/apputil.js b/QuoteGeneration/pccs/utils/apputil.js index d50aa3ee..3da918db 100644 --- a/QuoteGeneration/pccs/utils/apputil.js +++ b/QuoteGeneration/pccs/utils/apputil.js @@ -35,22 +35,35 @@ import { sequelize, PcsVersion } from '../dao/models/index.js'; import Umzug from 'umzug'; import * as fs from 'fs'; +export function get_api_version_from_url(url) { + if (!url) return 0; + + let verstr = url.match(/\/v([1-9][0-9]*)\//); + if (!verstr || verstr[0].length < 4) { + throw new Error('Unsupported API version'); + } + let ver = parseInt(verstr[0].substr(2).slice(0, -1)); + if (ver != 3 && ver != 4) { + throw new Error('Unsupported API version'); + } + return ver; +} + +export function getTcbInfoIssuerChainName(version) { + if (version == 3) { + return Constants.SGX_TCB_INFO_ISSUER_CHAIN; + } else { + return Constants.TCB_INFO_ISSUER_CHAIN; + } +} + // Check the version of PCS service currently configured export function startup_check() { - let pcs_api_version; - let pcs_url = Config.get('uri'); - let verstr = pcs_url.match(/\/v([1-9][0-9]*)\//); - if (verstr.length == 0) pcs_api_version = 1; - let ver = verstr[0].substr(2).slice(0, -1); - pcs_api_version = parseInt(ver); - - if (pcs_api_version != Constants.API_VERSION) { + if (global.PCS_VERSION != 3 && global.PCS_VERSION != 4) { logger.error( 'The PCS API version ' + - verstr[0] + - ' configured is not supported. Should be version ' + - Constants.API_VERSION + - '.' + global.PCS_VERSION + + ' configured is not supported. Should be v3 or v4.' ); return false; } diff --git a/QuoteGeneration/pce_wrapper/linux/Makefile b/QuoteGeneration/pce_wrapper/linux/Makefile index de308747..9f73dc14 100644 --- a/QuoteGeneration/pce_wrapper/linux/Makefile +++ b/QuoteGeneration/pce_wrapper/linux/Makefile @@ -31,6 +31,9 @@ include ../../buildenv.mk +PCE_WRAPPER_VER:= $(shell awk '$$2 ~ /PCE_WRAPPER_VERSION/ { print substr($$3, 2, length($$3) - 2); }'\ + $(COMMON_DIR)/inc/internal/se_version.h) + INCLUDE += -I. -I../inc INCLUDE += -I$(SGX_SDK)/include \ -I$(COMMON_DIR)/inc/internal \ @@ -64,6 +67,7 @@ LDUFLAGS += -Wl,--version-script=pce_wrapper.lds -Wl,--gc-sections LIBNAME = libsgx_pce_logic.so STATIC_LIBNAME = libsgx_pce_logic.a +PCE_WRAPPER_SONAME:= $(LIBNAME).$(call SPLIT_VERSION,$(PCE_WRAPPER_VER),1) .PHONY: all all: install_lib @@ -71,9 +75,11 @@ all: install_lib .PHONY: install_lib install_lib: $(LIBNAME) $(STATIC_LIBNAME) | $(BUILD_DIR) @$(CP) $(LIBNAME) $| + @ln -fs $(LIBNAME) $(BUILD_DIR)/$(PCE_WRAPPER_SONAME) $(LIBNAME): $(OBJ) - $(CXX) $(CXXFLAGS) $(OBJ) -shared -Wl,-soname=$@ $(LDUFLAGS) $(Link_Flags) -o $@ + $(CXX) $(CXXFLAGS) $(OBJ) -shared $(LDUFLAGS) $(Link_Flags) \ + -Wl,-soname=$(PCE_WRAPPER_SONAME) -o $@ $(STATIC_LIBNAME): $(OBJ) $(AR) rcsD $@ $^ diff --git a/QuoteGeneration/psw/ae/data/prebuilt/README.md b/QuoteGeneration/psw/ae/data/prebuilt/README.md index 549cd5b1..3ed56647 100644 --- a/QuoteGeneration/psw/ae/data/prebuilt/README.md +++ b/QuoteGeneration/psw/ae/data/prebuilt/README.md @@ -1,11 +1,14 @@ # PCE source code -The PCE is part of Intel(R) Software Guard Extensions for Linux\* OS which is published in [linux-sgx](https://github.com/intel/linux-sgx/) Github repository. The libsgx_pce.signed.so in prebuilt package is built by [pce](https://github.com/intel/linux-sgx/tree/master/psw/ae/pce) with branch [sgx_2.15_reproducible](https://github.com/intel/linux-sgx/tree/sgx_2.15_reproducible) and signed by Intel. +The PCE is part of Intel(R) Software Guard Extensions for Linux\* OS which is published in [linux-sgx](https://github.com/intel/linux-sgx/) Github repository. The libsgx_pce.signed.so in prebuilt package is built by [pce](https://github.com/intel/linux-sgx/tree/master/psw/ae/pce) with branch [sgx_2.17_reproducible](https://github.com/intel/linux-sgx/tree/sgx_2.17_reproducible) and signed by Intel. # QE3 source code -The QE3 is part of [Intel(R) Software Guard Extensions Data Center Attestation Primitives](https://github.com/intel/SGXDataCenterAttestationPrimitives/) Github repository. The libsgx_qe3.signed.so in prebuilt package is built by [qe3](https://github.com/intel/SGXDataCenterAttestationPrimitives/tree/master/QuoteGeneration/quote_wrapper/quote/enclave) with branch [sgx_2.15_reproducible](https://github.com/intel/linux-sgx/tree/sgx_2.15_reproducible) and signed by Intel. +The QE3 is part of [Intel(R) Software Guard Extensions Data Center Attestation Primitives](https://github.com/intel/SGXDataCenterAttestationPrimitives/) Github repository. The libsgx_qe3.signed.so in prebuilt package is built by [qe3](https://github.com/intel/SGXDataCenterAttestationPrimitives/tree/master/QuoteGeneration/quote_wrapper/quote/enclave) with branch [sgx_2.17_reproducible](https://github.com/intel/linux-sgx/tree/sgx_2.17_reproducible) and signed by Intel. # QVE source code -The QVE is part of [Intel(R) Software Guard Extensions Data Center Attestation Primitives](https://github.com/intel/SGXDataCenterAttestationPrimitives/) Github repository. The libsgx_qve.signed.so in prebuilt package is built by [qve](https://github.com/intel/SGXDataCenterAttestationPrimitives/tree/master/QuoteVerification/QvE/Enclave) with branch [sgx_2.16_reproducible](https://github.com/intel/linux-sgx/tree/sgx_2.16_reproducible)and signed by Intel. +The QVE is part of [Intel(R) Software Guard Extensions Data Center Attestation Primitives](https://github.com/intel/SGXDataCenterAttestationPrimitives/) Github repository. The libsgx_qve.signed.so in prebuilt package is built by [qve](https://github.com/intel/SGXDataCenterAttestationPrimitives/tree/master/QuoteVerification/QvE/Enclave) with branch [sgx_2.17_reproducible](https://github.com/intel/linux-sgx/tree/sgx_2.17_reproducible)and signed by Intel. # IDE source code -The IDE is part of [Intel(R) Software Guard Extensions Data Center Attestation Primitives](https://github.com/intel/SGXDataCenterAttestationPrimitives/) Github repository. The libsgx_id_enclave.signed.so in prebuilt package is built by [id_enclave](https://github.com/intel/SGXDataCenterAttestationPrimitives/tree/master/QuoteGeneration/quote_wrapper/quote/id_enclave) with branch [sgx_2.16_reproducible](https://github.com/intel/linux-sgx/tree/sgx_2.16_reproducible) and signed by Intel. +The IDE is part of [Intel(R) Software Guard Extensions Data Center Attestation Primitives](https://github.com/intel/SGXDataCenterAttestationPrimitives/) Github repository. The libsgx_id_enclave.signed.so in prebuilt package is built by [id_enclave](https://github.com/intel/SGXDataCenterAttestationPrimitives/tree/master/QuoteGeneration/quote_wrapper/quote/id_enclave) with branch [sgx_2.17_reproducible](https://github.com/intel/linux-sgx/tree/sgx_2.17_reproducible) and signed by Intel. + +# TDQE source code +The TDQE is part of [Intel(R) Software Guard Extensions Data Center Attestation Primitives](https://github.com/intel/SGXDataCenterAttestationPrimitives/) Github repository. The libsgx_tdqe.signed.so in prebuilt package is built by [tdqe](https://github.com/intel/SGXDataCenterAttestationPrimitives/tree/master/QuoteGeneration/quote_wrapper/tdx_quote/enclave) with branch [sgx_2.17_reproducible](https://github.com/intel/linux-sgx/tree/sgx_2.17_reproducible) and signed by Intel. diff --git a/QuoteGeneration/qcnl/inc/network_wrapper.h b/QuoteGeneration/qcnl/inc/network_wrapper.h index 358118d1..ca07c046 100644 --- a/QuoteGeneration/qcnl/inc/network_wrapper.h +++ b/QuoteGeneration/qcnl/inc/network_wrapper.h @@ -38,8 +38,8 @@ #pragma once #include "sgx_default_qcnl_wrapper.h" -#include #include +#include using namespace std; diff --git a/QuoteGeneration/qcnl/inc/qcnl_config.h b/QuoteGeneration/qcnl/inc/qcnl_config.h index 5c531cc7..fcc3c629 100644 --- a/QuoteGeneration/qcnl/inc/qcnl_config.h +++ b/QuoteGeneration/qcnl/inc/qcnl_config.h @@ -39,6 +39,7 @@ #include "document.h" #include +#include using namespace std; using namespace rapidjson; @@ -84,10 +85,6 @@ class QcnlConfig { cache_expire_hour_(0) {} // To define the virtual destructor outside the class: virtual ~QcnlConfig() { - if (myInstance) { - delete myInstance; - myInstance = nullptr; - } }; public: @@ -96,8 +93,8 @@ class QcnlConfig { QcnlConfig &operator=(QcnlConfig const &) = delete; QcnlConfig &operator=(QcnlConfig &&) = delete; - static QcnlConfig *myInstance; - static QcnlConfig *Instance(); + static std::shared_ptr myInstance; + static std::shared_ptr Instance(); string getServerUrl() { return server_url_; diff --git a/QuoteGeneration/qcnl/inc/qv_collateral_provider.h b/QuoteGeneration/qcnl/inc/qv_collateral_provider.h index 198dc675..ae381aea 100644 --- a/QuoteGeneration/qcnl/inc/qv_collateral_provider.h +++ b/QuoteGeneration/qcnl/inc/qv_collateral_provider.h @@ -50,10 +50,11 @@ class QvCollateralProvider { string get_custom_param_string(); sgx_qcnl_error_t build_pck_crl_url(const char *ca, string &url); - sgx_qcnl_error_t build_tcbinfo_url(const char *fmspc, + sgx_qcnl_error_t build_tcbinfo_url(sgx_prod_type_t prod_type, + const char *fmspc, uint16_t fmspc_size, string &url); - sgx_qcnl_error_t build_qeidentity_url(string &url); + sgx_qcnl_error_t build_qeidentity_url(sgx_qe_type_t qe_type, string &url); sgx_qcnl_error_t build_qveidentity_url(string &url); sgx_qcnl_error_t build_root_ca_crl_url(const char *root_ca_cdp_url, string &url); public: @@ -65,11 +66,12 @@ class QvCollateralProvider { uint16_t ca_size, uint8_t **p_crl_chain, uint16_t *p_crl_chain_size); - sgx_qcnl_error_t get_tcbinfo(const char *fmspc, + sgx_qcnl_error_t get_tcbinfo(sgx_prod_type_t prod_type, + const char *fmspc, uint16_t fmspc_size, uint8_t **p_tcbinfo, uint16_t *p_tcbinfo_size); - sgx_qcnl_error_t get_qe_identity(uint8_t qe_type, + sgx_qcnl_error_t get_qe_identity(sgx_qe_type_t qe_type, uint8_t **p_qe_identity, uint16_t *p_qe_identity_size); sgx_qcnl_error_t get_qve_identity(char **pp_qve_identity, @@ -80,4 +82,4 @@ class QvCollateralProvider { uint8_t **p_root_ca_crl, uint16_t *p_root_ca_crl_size); }; -#endif \ No newline at end of file +#endif diff --git a/QuoteGeneration/qcnl/inc/sgx_default_qcnl_wrapper.h b/QuoteGeneration/qcnl/inc/sgx_default_qcnl_wrapper.h index 4fe5ffe2..f049d9c7 100644 --- a/QuoteGeneration/qcnl/inc/sgx_default_qcnl_wrapper.h +++ b/QuoteGeneration/qcnl/inc/sgx_default_qcnl_wrapper.h @@ -65,6 +65,11 @@ typedef enum _sgx_qcnl_error_t { SGX_QCNL_INVALID_CONFIG = SGX_QCNL_MK_ERROR(0x0030), ///< Error in configuration file } sgx_qcnl_error_t; +typedef enum _sgx_qe_type_t { + SGX_QE_TYPE_ECDSA = 0, + SGX_QE_TYPE_TD = 1, +} sgx_qe_type_t; + #if defined(__cplusplus) extern "C" { #endif @@ -90,7 +95,15 @@ sgx_qcnl_error_t sgx_qcnl_get_tcbinfo(const char *fmspc, void sgx_qcnl_free_tcbinfo(uint8_t *p_tcbinfo); -sgx_qcnl_error_t sgx_qcnl_get_qe_identity(uint8_t qe_type, +sgx_qcnl_error_t tdx_qcnl_get_tcbinfo(const char *fmspc, + uint16_t fmspc_size, + const char* custom_param_b64_string, + uint8_t **p_tcbinfo, + uint16_t *p_tcbinfo_size); + +void tdx_qcnl_free_tcbinfo(uint8_t *p_tcbinfo); + +sgx_qcnl_error_t sgx_qcnl_get_qe_identity(sgx_qe_type_t qe_type, const char* custom_param_b64_string, uint8_t **p_qe_identity, uint16_t *p_qe_identity_size); diff --git a/QuoteGeneration/qcnl/linux/network_wrapper.cpp b/QuoteGeneration/qcnl/linux/network_wrapper.cpp index e4ef353f..5c8ea1f7 100644 --- a/QuoteGeneration/qcnl/linux/network_wrapper.cpp +++ b/QuoteGeneration/qcnl/linux/network_wrapper.cpp @@ -30,15 +30,15 @@ */ /** * File: network_wrapper.cpp - * + * * Description: Network access logic * */ -#include "sgx_default_qcnl_wrapper.h" #include "network_wrapper.h" #include "qcnl_config.h" #include "se_memcpy.h" +#include "sgx_default_qcnl_wrapper.h" #include #include @@ -72,12 +72,12 @@ static size_t write_callback(void *ptr, size_t size, size_t nmemb, void *stream) } /** -* This method converts CURL error codes to QCNL error codes -* -* @param curl_error Curl library error codes -* -* @return Collateral Network Library Error Codes -*/ + * This method converts CURL error codes to QCNL error codes + * + * @param curl_error Curl library error codes + * + * @return Collateral Network Library Error Codes + */ static sgx_qcnl_error_t curl_error_to_qcnl_error(CURLcode curl_error) { switch (curl_error) { case CURLE_OK: @@ -104,12 +104,12 @@ static sgx_qcnl_error_t curl_error_to_qcnl_error(CURLcode curl_error) { } /** -* This method converts PCCS HTTP status codes to QCNL error codes -* -* @param pccs_status_code PCCS HTTP status codes -* -* @return Collateral Network Library Error Codes -*/ + * This method converts PCCS HTTP status codes to QCNL error codes + * + * @param pccs_status_code PCCS HTTP status codes + * + * @return Collateral Network Library Error Codes + */ static sgx_qcnl_error_t pccs_status_to_qcnl_error(long pccs_status_code) { switch (pccs_status_code) { case 200: // PCCS_STATUS_SUCCESS @@ -130,20 +130,20 @@ static sgx_qcnl_error_t pccs_status_to_qcnl_error(long pccs_status_code) { } /** -* This method calls curl library to perform https POST request with raw body in JSON format and returns response body and header -* -* @param url HTTPS GET/POST URL -* @param req_body Request body in raw JSON format. For GET request it should be NULL. -* @param req_body_size Size of request body. For GET request it should be 0. -* @param user_token user token to access PCCS v3/platforms API. For GET request it should be NULL. -* @param user_token_size Size of user token. For GET request it should be 0. -* @param resp_msg Output buffer of response body -* @param resp_size Size of response body -* @param resp_header Output buffer of response header -* @param header_size Size of response header -* -* @return SGX_QCNL_SUCCESS Call https post successfully. Other return codes indicate an error occured. -*/ + * This method calls curl library to perform https POST request with raw body in JSON format and returns response body and header + * + * @param url HTTPS GET/POST URL + * @param req_body Request body in raw JSON format. For GET request it should be NULL. + * @param req_body_size Size of request body. For GET request it should be 0. + * @param user_token user token to access PCCS v3/platforms API. For GET request it should be NULL. + * @param user_token_size Size of user token. For GET request it should be 0. + * @param resp_msg Output buffer of response body + * @param resp_size Size of response body + * @param resp_header Output buffer of response header + * @param header_size Size of response header + * + * @return SGX_QCNL_SUCCESS Call https post successfully. Other return codes indicate an error occured. + */ sgx_qcnl_error_t qcnl_https_request(const char *url, http_header_map &header_map, const char *req_body, @@ -241,20 +241,13 @@ sgx_qcnl_error_t qcnl_https_request(const char *url, if (curl_ret == CURLE_OK) { curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code); qcnl_log(SGX_QL_LOG_INFO, "[QCNL] HTTP status code: %ld \n", http_code); - if (http_code == 404) { - ret = SGX_QCNL_ERROR_STATUS_NO_CACHE_DATA; - goto cleanup; + if (http_code == 200) { + break; } else if (http_code == 503) { // SERVICE_UNAVAILABLE need_retry = true; - } else if (http_code != 200) { - ret = pccs_status_to_qcnl_error(http_code); - goto cleanup; } } else if (curl_ret == CURLE_OPERATION_TIMEDOUT || curl_ret == CURLE_COULDNT_RESOLVE_HOST || curl_ret == CURLE_COULDNT_RESOLVE_PROXY || curl_ret == CURLE_COULDNT_CONNECT || curl_ret == CURLE_HTTP_RETURNED_ERROR) { need_retry = true; - } else { - ret = curl_error_to_qcnl_error(curl_ret); - goto cleanup; } retry_times--; @@ -267,9 +260,13 @@ sgx_qcnl_error_t qcnl_https_request(const char *url, } continue; } else { - break; + if (curl_ret != CURLE_OK) + ret = curl_error_to_qcnl_error(curl_ret); + else + ret = pccs_status_to_qcnl_error(http_code); + goto cleanup; } - } while (retry_times > 0); + } while (true); *resp_msg = res_body.base; resp_size = res_body.size; diff --git a/QuoteGeneration/qcnl/linux/qcnl_config_impl.cpp b/QuoteGeneration/qcnl/linux/qcnl_config_impl.cpp index fcaa37a3..60949252 100644 --- a/QuoteGeneration/qcnl/linux/qcnl_config_impl.cpp +++ b/QuoteGeneration/qcnl/linux/qcnl_config_impl.cpp @@ -75,14 +75,14 @@ bool QcnlConfigLegacy::load_config() { try { string::size_type sz; retry_times_ = stoi(value, &sz); - } catch (const invalid_argument &e) { + } catch (const invalid_argument &) { continue; } } else if (name.compare("RETRY_DELAY") == 0) { try { string::size_type sz; retry_delay_ = stoi(value, &sz); - } catch (const invalid_argument &e) { + } catch (const invalid_argument &) { continue; } } else if (name.compare("LOCAL_PCK_URL") == 0) { @@ -93,7 +93,7 @@ bool QcnlConfigLegacy::load_config() { cache_expire_hour_ = stoi(value, &sz); if (cache_expire_hour_ > CACHE_MAX_EXPIRY_HOURS) cache_expire_hour_ = CACHE_MAX_EXPIRY_HOURS; - } catch (const invalid_argument &e) { + } catch (const invalid_argument &) { continue; } } else { diff --git a/QuoteGeneration/qcnl/linux/sgx_default_qcnl.lds b/QuoteGeneration/qcnl/linux/sgx_default_qcnl.lds index 860bfda8..3dfb9a83 100644 --- a/QuoteGeneration/qcnl/linux/sgx_default_qcnl.lds +++ b/QuoteGeneration/qcnl/linux/sgx_default_qcnl.lds @@ -6,6 +6,8 @@ global: sgx_qcnl_free_pck_crl_chain; sgx_qcnl_get_tcbinfo; sgx_qcnl_free_tcbinfo; + tdx_qcnl_get_tcbinfo; + tdx_qcnl_free_tcbinfo; sgx_qcnl_get_qe_identity; sgx_qcnl_free_qe_identity; sgx_qcnl_get_qve_identity; diff --git a/QuoteGeneration/qcnl/qcnl_config.cpp b/QuoteGeneration/qcnl/qcnl_config.cpp index f8019ba7..ee2a055b 100644 --- a/QuoteGeneration/qcnl/qcnl_config.cpp +++ b/QuoteGeneration/qcnl/qcnl_config.cpp @@ -42,19 +42,19 @@ using namespace std; -QcnlConfig *QcnlConfig::myInstance = nullptr; +std::shared_ptr QcnlConfig::myInstance; -QcnlConfig *QcnlConfig::Instance() { - if (myInstance == nullptr) { +std::shared_ptr QcnlConfig::Instance() { + if (!myInstance) { QcnlConfigJson *pConfigJson = new QcnlConfigJson(); if (pConfigJson->load_config()) { - myInstance = pConfigJson; + myInstance.reset(pConfigJson); } else { delete pConfigJson; pConfigJson = nullptr; QcnlConfigLegacy *pConfigLegacy = new QcnlConfigLegacy(); pConfigLegacy->load_config(); - myInstance = pConfigLegacy; + myInstance.reset(pConfigLegacy); } } diff --git a/QuoteGeneration/qcnl/qcnl_util.cpp b/QuoteGeneration/qcnl/qcnl_util.cpp index c0ad234f..43fb8c35 100644 --- a/QuoteGeneration/qcnl/qcnl_util.cpp +++ b/QuoteGeneration/qcnl/qcnl_util.cpp @@ -127,6 +127,10 @@ bool byte_array_to_hex_string(const uint8_t *in_buf, uint32_t in_size, uint8_t * // This function is used to unescpae URL Codes, for example, %20 to SPACE character(0x20) string unescape(string &src) { + if (src.length() < 3) { + return src; + } + string dst; char ch; int i, value; diff --git a/QuoteGeneration/qcnl/qv_collateral_provider.cpp b/QuoteGeneration/qcnl/qv_collateral_provider.cpp index ca362cc3..d438d27e 100644 --- a/QuoteGeneration/qcnl/qv_collateral_provider.cpp +++ b/QuoteGeneration/qcnl/qv_collateral_provider.cpp @@ -165,12 +165,22 @@ sgx_qcnl_error_t QvCollateralProvider::get_pck_crl_chain(const char *ca, return ret; } -sgx_qcnl_error_t QvCollateralProvider::build_tcbinfo_url(const char *fmspc, +sgx_qcnl_error_t QvCollateralProvider::build_tcbinfo_url(sgx_prod_type_t prod_type, + const char *fmspc, uint16_t fmspc_size, string &url) { // initialize https request url url = QcnlConfig::Instance()->getCollateralServiceUrl(); + if (prod_type == SGX_PROD_TYPE_TDX) { + auto found = url.find("/sgx/"); + if (found != std::string::npos) { + url = url.replace(found, 5, "/tdx/"); + } else { + return SGX_QCNL_UNEXPECTED_ERROR; + } + } + // Append fmspc url.append("tcb?fmspc="); if (!concat_string_with_hex_buf(url, reinterpret_cast(fmspc), fmspc_size)) { @@ -185,12 +195,13 @@ sgx_qcnl_error_t QvCollateralProvider::build_tcbinfo_url(const char *fmspc, return SGX_QCNL_SUCCESS; } -sgx_qcnl_error_t QvCollateralProvider::get_tcbinfo(const char *fmspc, +sgx_qcnl_error_t QvCollateralProvider::get_tcbinfo(sgx_prod_type_t prod_type, + const char *fmspc, uint16_t fmspc_size, uint8_t **p_tcbinfo, uint16_t *p_tcbinfo_size) { string url(""); - sgx_qcnl_error_t ret = build_tcbinfo_url(fmspc, fmspc_size, url); + sgx_qcnl_error_t ret = build_tcbinfo_url(prod_type, fmspc, fmspc_size, url); if (ret != SGX_QCNL_SUCCESS) { return ret; } @@ -248,8 +259,18 @@ sgx_qcnl_error_t QvCollateralProvider::get_tcbinfo(const char *fmspc, return ret; } -sgx_qcnl_error_t QvCollateralProvider::build_qeidentity_url(string &url) { +sgx_qcnl_error_t QvCollateralProvider::build_qeidentity_url(sgx_qe_type_t qe_type, string &url) { url = QcnlConfig::Instance()->getCollateralServiceUrl(); + + if (qe_type == SGX_QE_TYPE_TD) { + auto found = url.find("/sgx/"); + if (found != std::string::npos) { + url = url.replace(found, 5, "/tdx/"); + } else { + return SGX_QCNL_UNEXPECTED_ERROR; + } + } + url.append("qe/identity"); if (!custom_param_.empty()) { url.append("?").append(get_custom_param_string()); @@ -260,13 +281,13 @@ sgx_qcnl_error_t QvCollateralProvider::build_qeidentity_url(string &url) { return SGX_QCNL_SUCCESS; } -sgx_qcnl_error_t QvCollateralProvider::get_qe_identity(uint8_t qe_type, +sgx_qcnl_error_t QvCollateralProvider::get_qe_identity(sgx_qe_type_t qe_type, uint8_t **p_qe_identity, uint16_t *p_qe_identity_size) { (void)qe_type; // initialize https request url string url(""); - sgx_qcnl_error_t ret = build_qeidentity_url(url); + sgx_qcnl_error_t ret = build_qeidentity_url(qe_type, url); if (ret != SGX_QCNL_SUCCESS) { return ret; } diff --git a/QuoteGeneration/qcnl/sgx_default_qcnl_wrapper.cpp b/QuoteGeneration/qcnl/sgx_default_qcnl_wrapper.cpp index b1befb18..595936a1 100644 --- a/QuoteGeneration/qcnl/sgx_default_qcnl_wrapper.cpp +++ b/QuoteGeneration/qcnl/sgx_default_qcnl_wrapper.cpp @@ -43,6 +43,7 @@ #include "sgx_pce.h" #include "qcnl_util.h" #include +#include static sgx_ql_logging_callback_t logger_callback = nullptr; @@ -153,6 +154,7 @@ void sgx_qcnl_free_pck_crl_chain(uint8_t *p_crl_chain) { * This API gets TCB information from PCCS server. The p_tcbinfo buffer allocated by this API * must be freed with sgx_qcnl_free_tcbinfo upon success. * +* @param prod_type SGX or TDX * @param fmspc Family-Model-Stepping value * @param fmspc_size Size of the fmspc buffer * @param p_tcbinfo Output buffer for TCB information @@ -160,11 +162,12 @@ void sgx_qcnl_free_pck_crl_chain(uint8_t *p_crl_chain) { * * @return SGX_QCNL_SUCCESS If the TCB information was retrieved from PCCS server successfully. */ -sgx_qcnl_error_t sgx_qcnl_get_tcbinfo(const char *fmspc, - uint16_t fmspc_size, - const char* custom_param_b64_string, - uint8_t **p_tcbinfo, - uint16_t *p_tcbinfo_size) { +sgx_qcnl_error_t qcnl_get_tcbinfo_internal(sgx_prod_type_t prod_type, + const char *fmspc, + uint16_t fmspc_size, + const char* custom_param_b64_string, + uint8_t **p_tcbinfo, + uint16_t *p_tcbinfo_size) { // Check input parameters // fmspc is always 6 bytes if (p_tcbinfo == NULL || p_tcbinfo_size == NULL) { @@ -175,7 +178,33 @@ sgx_qcnl_error_t sgx_qcnl_get_tcbinfo(const char *fmspc, } QvCollateralProvider qvCollateralProvider(custom_param_b64_string); - return qvCollateralProvider.get_tcbinfo(fmspc, fmspc_size, p_tcbinfo, p_tcbinfo_size); + return qvCollateralProvider.get_tcbinfo(prod_type, fmspc, fmspc_size, p_tcbinfo, p_tcbinfo_size); +} + +sgx_qcnl_error_t sgx_qcnl_get_tcbinfo(const char *fmspc, + uint16_t fmspc_size, + const char* custom_param_b64_string, + uint8_t **p_tcbinfo, + uint16_t *p_tcbinfo_size) { + return qcnl_get_tcbinfo_internal(SGX_PROD_TYPE_SGX, + fmspc, + fmspc_size, + custom_param_b64_string, + p_tcbinfo, + p_tcbinfo_size); +} + +sgx_qcnl_error_t tdx_qcnl_get_tcbinfo(const char *fmspc, + uint16_t fmspc_size, + const char* custom_param_b64_string, + uint8_t **p_tcbinfo, + uint16_t *p_tcbinfo_size) { + return qcnl_get_tcbinfo_internal(SGX_PROD_TYPE_TDX, + fmspc, + fmspc_size, + custom_param_b64_string, + p_tcbinfo, + p_tcbinfo_size); } /** @@ -188,22 +217,31 @@ void sgx_qcnl_free_tcbinfo(uint8_t *p_tcbinfo) { } } +/** +* This API frees the p_tcbinfo buffer allocated by tdx_qcnl_get_tcbinfo +*/ +void tdx_qcnl_free_tcbinfo(uint8_t *p_tcbinfo) { + if (p_tcbinfo) { + free(p_tcbinfo); + } +} + /** * This API gets QE identity from PCCS server. The p_qe_identity buffer allocated by this API * must be freed with sgx_qcnl_free_qe_identity upon success. * -* @param qe_type Currently only 0 (ECDSA QE) is supported +* @param qe_type Type of QE * @param p_qe_identity Output buffer for QE identity * @param p_qe_identity_size Size of QE identity * * @return SGX_QCNL_SUCCESS If the QE identity was retrieved from PCCS server successfully. */ -sgx_qcnl_error_t sgx_qcnl_get_qe_identity(uint8_t qe_type, +sgx_qcnl_error_t sgx_qcnl_get_qe_identity(sgx_qe_type_t qe_type, const char* custom_param_b64_string, uint8_t **p_qe_identity, uint16_t *p_qe_identity_size) { // Check input parameters - if (p_qe_identity == NULL || p_qe_identity_size == NULL || qe_type != 0) { + if (p_qe_identity == NULL || p_qe_identity_size == NULL ) { return SGX_QCNL_INVALID_PARAMETER; } @@ -297,20 +335,37 @@ void sgx_qcnl_free_root_ca_crl(uint8_t *p_root_ca_crl) { * This function returns the collateral version. */ bool sgx_qcnl_get_api_version(uint16_t *p_major_ver, uint16_t *p_minor_ver) { - *p_major_ver = 3; - *p_minor_ver = 1; - - if (!is_collateral_service_pcs()) { // PCCS - // Only 3.1 and 3.0 are supported - if (QcnlConfig::Instance()->getCollateralVersion() == "3.0") { - *p_minor_ver = 0; - } else if (QcnlConfig::Instance()->getCollateralVersion() != "3.1") { - *p_major_ver = 0; - *p_minor_ver = 0; + string version = QcnlConfig::Instance()->getCollateralVersion(); + if (!version.empty()) { + auto pos = version.find("."); + if (pos != std::string::npos) { + auto s_major = version.substr(0, pos); + auto s_minor = version.substr(pos + 1); + try { + string::size_type sz; + *p_major_ver = (uint16_t)stoi(s_major, &sz); + *p_minor_ver = (uint16_t)stoi(s_minor, &sz); + return true; + } catch (const invalid_argument &e) { + qcnl_log(SGX_QL_LOG_ERROR, "[QCNL] Failed to parse version string : %s", e.what()); + return false; + } + } else { return false; } } + string url = QcnlConfig::Instance()->getCollateralServiceUrl(); + if (url.find("/v3/") != std::string::npos) { + *p_major_ver = 3; + *p_minor_ver = 0; + } else if (url.find("/v4/") != std::string::npos) { + *p_major_ver = 4; + *p_minor_ver = 0; + } else { + return false; + } + return true; } diff --git a/QuoteGeneration/qcnl/win/qcnl_wrapper.def b/QuoteGeneration/qcnl/win/qcnl_wrapper.def index 1d0dc3b5..51f2e1fe 100644 --- a/QuoteGeneration/qcnl/win/qcnl_wrapper.def +++ b/QuoteGeneration/qcnl/win/qcnl_wrapper.def @@ -14,4 +14,6 @@ EXPORTS sgx_qcnl_get_root_ca_crl @11 sgx_qcnl_free_root_ca_crl @12 sgx_qcnl_get_api_version @13 - sgx_qcnl_set_logging_callback @14 \ No newline at end of file + sgx_qcnl_set_logging_callback @14 + tdx_qcnl_get_tcbinfo @15 + tdx_qcnl_free_tcbinfo @16 diff --git a/QuoteGeneration/qpl/inc/sgx_default_quote_provider.h b/QuoteGeneration/qpl/inc/sgx_default_quote_provider.h index ee820dd7..a0599240 100644 --- a/QuoteGeneration/qpl/inc/sgx_default_quote_provider.h +++ b/QuoteGeneration/qpl/inc/sgx_default_quote_provider.h @@ -48,7 +48,7 @@ extern "C" { quote3_error_t sgx_ql_get_quote_config(const sgx_ql_pck_cert_id_t *p_pck_cert_id, sgx_ql_config_t **pp_quote_config); quote3_error_t sgx_ql_free_quote_config(sgx_ql_config_t *p_quote_config); quote3_error_t sgx_ql_get_quote_verification_collateral(const uint8_t *fmspc, - uint16_t fmspc_size, + uint16_t fmspc_size, const char *pck_ca, sgx_ql_qve_collateral_t **pp_quote_collateral); quote3_error_t sgx_ql_get_quote_verification_collateral_with_params(const uint8_t *fmspc, @@ -58,6 +58,11 @@ quote3_error_t sgx_ql_get_quote_verification_collateral_with_params(const uint8_ const uint16_t custom_param_length, sgx_ql_qve_collateral_t **pp_quote_collateral); quote3_error_t sgx_ql_free_quote_verification_collateral(sgx_ql_qve_collateral_t *p_quote_collateral); +quote3_error_t tdx_ql_get_quote_verification_collateral(const uint8_t *fmspc, + uint16_t fmspc_size, + const char *pck_ca, + tdx_ql_qve_collateral_t **pp_quote_collateral); +quote3_error_t tdx_ql_free_quote_verification_collateral(tdx_ql_qve_collateral_t *p_quote_collateral); quote3_error_t sgx_ql_get_qve_identity(char **pp_qve_identity, uint32_t *p_qve_identity_size, char **pp_qve_identity_issuer_chain, diff --git a/QuoteGeneration/qpl/linux/sgx_default_quote_provider.lds b/QuoteGeneration/qpl/linux/sgx_default_quote_provider.lds index a8aacfbf..c65ece41 100644 --- a/QuoteGeneration/qpl/linux/sgx_default_quote_provider.lds +++ b/QuoteGeneration/qpl/linux/sgx_default_quote_provider.lds @@ -5,6 +5,8 @@ global: sgx_ql_get_quote_verification_collateral; sgx_ql_get_quote_verification_collateral_with_params; sgx_ql_free_quote_verification_collateral; + tdx_ql_get_quote_verification_collateral; + tdx_ql_free_quote_verification_collateral; sgx_ql_get_qve_identity; sgx_ql_free_qve_identity; sgx_ql_get_root_ca_crl; diff --git a/QuoteGeneration/qpl/linux/x509.cpp b/QuoteGeneration/qpl/linux/x509.cpp index d5f96c5c..044db8ce 100644 --- a/QuoteGeneration/qpl/linux/x509.cpp +++ b/QuoteGeneration/qpl/linux/x509.cpp @@ -34,6 +34,7 @@ * Description: X.509 parser * */ +#include "x509.h" #include #include #include diff --git a/QuoteGeneration/qpl/qpl_api.txt b/QuoteGeneration/qpl/qpl_api.txt index 6785eb50..9abd1731 100644 --- a/QuoteGeneration/qpl/qpl_api.txt +++ b/QuoteGeneration/qpl/qpl_api.txt @@ -50,7 +50,7 @@ Parameters Base 16-encoded representation of FMSPC. fmspc_size [In] Length of fmspc. - ca [In] + pck_ca [In] Null terminated string identifier of the PCK Cert CA that issued the PCK Certificates. pp_quote_collateral [Out] Pointer to a pointer to the PCK quote collateral data needed for quote verifcation. @@ -65,8 +65,64 @@ Return Values: SGX_QL_NO_QUOTE_COLLATERAL_DATA: The platform does not have the quote verification collateral data available. */ -quote3_error_t sgx_ql_get_quote_verification_collateral( const char *fmspc, uint16_t fmspc_size, const char *pck_ca, - sgx_ql_qve_collateral_t **pp_quote_collateral); +quote3_error_t sgx_ql_get_quote_verification_collateral( const uint8_t *fmspc, uint16_t fmspc_size, const char *pck_ca, + sgx_ql_qve_collateral_t **pp_quote_collateral); + +/** +Parameters + fmspc [In] + Base 16-encoded representation of FMSPC. + fmspc_size [In] + Length of fmspc. + pck_ca [In] + Null terminated string identifier of the PCK Cert CA that issued the PCK Certificates. + pp_quote_collateral [Out] + Pointer to a pointer to the PCK quote collateral data needed for quote verifcation. + +Return Values: + SGX_QL_SUCCESS: + The platform has the certification data available and has returned it in the p_quote_config buffer. + SGX_QL_INVALID_PARRAMETER: + The parameters are incorrect. + SGX_QL_OUT_OF_MEMORY: + Out of memory error. + SGX_QL_NO_QUOTE_COLLATERAL_DATA: + The platform does not have the quote verification collateral data available. +*/ +quote3_error_t tdx_ql_get_quote_verification_collateral( const uint8_t *fmspc, uint16_t fmspc_size, const char *pck_ca, + tdx_ql_qve_collateral_t **pp_quote_collateral); + +/** +Parameters + fmspc [In] + Base 16-encoded representation of FMSPC. + fmspc_size [In] + Length of fmspc. + pck_ca [In] + Null terminated string identifier of the PCK Cert CA that issued the PCK Certificates. + custom_param [In] + Custom parameter that will be appended to request URL in Base64 format ( ...&customParameters=Base64(custom_param) ) + custom_param_length [In] + Length of custom_param. + pp_quote_collateral [Out] + Pointer to a pointer to the PCK quote collateral data needed for quote verifcation. + +Return Values: + SGX_QL_SUCCESS: + The platform has the certification data available and has returned it in the p_quote_config buffer. + SGX_QL_INVALID_PARRAMETER: + The parameters are incorrect. + SGX_QL_OUT_OF_MEMORY: + Out of memory error. + SGX_QL_NO_QUOTE_COLLATERAL_DATA: + The platform does not have the quote verification collateral data available. +*/ +quote3_error_t sgx_ql_get_quote_verification_collateral_with_params(const uint8_t *fmspc, + const uint16_t fmspc_size, + const char *pck_ca, + const void* custom_param, + const uint16_t custom_param_length, + sgx_ql_qve_collateral_t **pp_quote_collateral); /** Parameters: @@ -78,6 +134,16 @@ Return Values: */ quote3_error_t sgx_ql_free_quote_verification_collateral(sgx_ql_qve_collateral_t *p_quote_collateral); +/** +Parameters: + p_quote_collateral [In] + Pointer to the PCK certification that the tdx_ql_get_quote_verification_collateral() API returns. +Return Values: + SGX_QL_SUCCESS: + The buffer was freed successfully. +*/ +quote3_error_t tdx_ql_free_quote_verification_collateral(tdx_ql_qve_collateral_t *p_quote_collateral); + /** Parameters: pp_qve_identity[Out] @@ -169,3 +235,5 @@ typedef struct _sgx_ql_qve_collateral_t char *qe_identity; /// QE Identity Structure uint32_t qe_identity_size; }sgx_ql_qve_collateral_t; + +typedef sgx_ql_qve_collateral_t tdx_ql_qve_collateral_t; \ No newline at end of file diff --git a/QuoteGeneration/qpl/sgx_default_quote_provider.cpp b/QuoteGeneration/qpl/sgx_default_quote_provider.cpp index 35eebeeb..a5c7013c 100644 --- a/QuoteGeneration/qpl/sgx_default_quote_provider.cpp +++ b/QuoteGeneration/qpl/sgx_default_quote_provider.cpp @@ -127,8 +127,10 @@ quote3_error_t sgx_ql_free_quote_config(sgx_ql_config_t *p_quote_config) { static quote3_error_t split_buffer(uint8_t *in_buf, uint16_t in_buf_size, char **__unaligned out_buf1, uint32_t *__unaligned out_buf1_size, char **__unaligned out_buf2, uint32_t *__unaligned out_buf2_size) { + const string delimiter = "-----BEGIN CERTIFICATE-----"; + string s0((char *)in_buf, in_buf_size); - size_t pos = s0.find(X509_DELIMITER); + size_t pos = s0.find(delimiter); if (pos == string::npos) { qpl_log(SGX_QL_LOG_ERROR, "[QPL] Invalid certificate chain.\n"); return SGX_QL_MESSAGE_ERROR; @@ -167,17 +169,13 @@ static quote3_error_t split_buffer(uint8_t *in_buf, uint16_t in_buf_size, char * return SGX_QL_SUCCESS; } -quote3_error_t sgx_ql_get_quote_verification_collateral(const uint8_t *fmspc, uint16_t fmspc_size, const char *pck_ca, - sgx_ql_qve_collateral_t **pp_quote_collateral) { - return sgx_ql_get_quote_verification_collateral_with_params(fmspc, fmspc_size, pck_ca, NULL, 0, pp_quote_collateral); -} - -quote3_error_t sgx_ql_get_quote_verification_collateral_with_params(const uint8_t *fmspc, - const uint16_t fmspc_size, - const char *pck_ca, - const void *custom_param, - const uint16_t custom_param_length, - sgx_ql_qve_collateral_t **pp_quote_collateral) { +quote3_error_t ql_get_quote_verification_collateral_internal(sgx_prod_type_t prod_type, + const uint8_t *fmspc, + const uint16_t fmspc_size, + const char *pck_ca, + const void* custom_param, + const uint16_t custom_param_length, + sgx_ql_qve_collateral_t **pp_quote_collateral) { if (fmspc == NULL || pck_ca == NULL || pp_quote_collateral == NULL || (custom_param != NULL && custom_param_length == 0) || (custom_param == NULL && custom_param_length != 0)) { @@ -237,7 +235,12 @@ quote3_error_t sgx_ql_get_quote_verification_collateral_with_params(const uint8_ } // Set TCBInfo and certchain - qcnl_ret = sgx_qcnl_get_tcbinfo(reinterpret_cast(fmspc), fmspc_size, base64_string, &p_tcbinfo, &tcbinfo_size); + if (prod_type == SGX_PROD_TYPE_SGX) { + qcnl_ret = sgx_qcnl_get_tcbinfo(reinterpret_cast(fmspc), fmspc_size, base64_string, &p_tcbinfo, &tcbinfo_size); + } else { + qcnl_ret = tdx_qcnl_get_tcbinfo(reinterpret_cast(fmspc), fmspc_size, base64_string, &p_tcbinfo, &tcbinfo_size); + } + if (qcnl_ret != SGX_QCNL_SUCCESS) { qpl_log(SGX_QL_LOG_ERROR, "[QPL] Failed to get TCBInfo : 0x%04x\n", qcnl_ret); ret = qcnl_error_to_ql_error(qcnl_ret); @@ -252,7 +255,12 @@ quote3_error_t sgx_ql_get_quote_verification_collateral_with_params(const uint8_ } // Set QEIdentity and certchain - qcnl_ret = sgx_qcnl_get_qe_identity(0, base64_string, &p_qe_identity, &qe_identity_size); + sgx_qe_type_t qe_type; + if (prod_type == SGX_PROD_TYPE_SGX) + qe_type = SGX_QE_TYPE_ECDSA; + else qe_type = SGX_QE_TYPE_TD; + + qcnl_ret = sgx_qcnl_get_qe_identity(qe_type, base64_string, &p_qe_identity, &qe_identity_size); if (qcnl_ret != SGX_QCNL_SUCCESS) { qpl_log(SGX_QL_LOG_ERROR, "[QPL] Failed to get QE identity : 0x%04x\n", qcnl_ret); ret = qcnl_error_to_ql_error(qcnl_ret); @@ -301,7 +309,11 @@ quote3_error_t sgx_ql_get_quote_verification_collateral_with_params(const uint8_ } while (0); sgx_qcnl_free_pck_crl_chain(p_pck_crl_chain); - sgx_qcnl_free_tcbinfo(p_tcbinfo); + if (prod_type == SGX_PROD_TYPE_SGX) { + sgx_qcnl_free_tcbinfo(p_tcbinfo); + } else { + tdx_qcnl_free_tcbinfo(p_tcbinfo); + } sgx_qcnl_free_qe_identity(p_qe_identity); if (base64_string) { free(base64_string); @@ -316,7 +328,7 @@ quote3_error_t sgx_ql_get_quote_verification_collateral_with_params(const uint8_ return ret; } -quote3_error_t sgx_ql_free_quote_verification_collateral(sgx_ql_qve_collateral_t *p_quote_collateral) { +quote3_error_t ql_free_quote_verification_collateral_internal(sgx_ql_qve_collateral_t *p_quote_collateral) { if (p_quote_collateral) { if (p_quote_collateral->pck_crl_issuer_chain) { free(p_quote_collateral->pck_crl_issuer_chain); @@ -353,6 +365,69 @@ quote3_error_t sgx_ql_free_quote_verification_collateral(sgx_ql_qve_collateral_t return SGX_QL_SUCCESS; } +quote3_error_t sgx_ql_get_quote_verification_collateral(const uint8_t *fmspc, + uint16_t fmspc_size, + const char *pck_ca, + sgx_ql_qve_collateral_t **pp_quote_collateral) { + quote3_error_t ret = ql_get_quote_verification_collateral_internal(SGX_PROD_TYPE_SGX, + fmspc, + fmspc_size, + pck_ca, + NULL, + 0, + pp_quote_collateral); + if (ret == SGX_QL_SUCCESS) { + (*pp_quote_collateral)->tee_type = 0x0; // SGX + } else { + qpl_log(SGX_QL_LOG_ERROR, "[QPL] Failed to get SGX quote verification collateral : %d\n", ret); + } + return ret; +} + +quote3_error_t sgx_ql_get_quote_verification_collateral_with_params(const uint8_t *fmspc, + const uint16_t fmspc_size, + const char *pck_ca, + const void* custom_param, + const uint16_t custom_param_length, + sgx_ql_qve_collateral_t **pp_quote_collateral) { + quote3_error_t ret = ql_get_quote_verification_collateral_internal(SGX_PROD_TYPE_SGX, + fmspc, + fmspc_size, + pck_ca, + custom_param, + custom_param_length, + pp_quote_collateral); + if (ret == SGX_QL_SUCCESS) { + (*pp_quote_collateral)->tee_type = 0x0; // SGX + } else { + qpl_log(SGX_QL_LOG_ERROR, "[QPL] Failed to get SGX quote verification collateral : %d\n", ret); + } + return ret; +} +quote3_error_t tdx_ql_get_quote_verification_collateral(const uint8_t *fmspc, uint16_t fmspc_size, const char *pck_ca, + sgx_ql_qve_collateral_t **pp_quote_collateral) { + quote3_error_t ret = ql_get_quote_verification_collateral_internal(SGX_PROD_TYPE_TDX, + fmspc, + fmspc_size, + pck_ca, + NULL, + 0, + pp_quote_collateral); + if (ret == SGX_QL_SUCCESS) { + (*pp_quote_collateral)->tee_type = 0x0; // SGX + } else { + qpl_log(SGX_QL_LOG_ERROR, "[QPL] Failed to get SGX quote verification collateral : %d\n", ret); + } + return ret; +} +quote3_error_t sgx_ql_free_quote_verification_collateral(sgx_ql_qve_collateral_t *p_quote_collateral) { + return ql_free_quote_verification_collateral_internal(p_quote_collateral); +} + +quote3_error_t tdx_ql_free_quote_verification_collateral(tdx_ql_qve_collateral_t *p_quote_collateral) { + return ql_free_quote_verification_collateral_internal((tdx_ql_qve_collateral_t *)p_quote_collateral); +} + quote3_error_t sgx_ql_get_qve_identity(char **pp_qve_identity, uint32_t *p_qve_identity_size, char **pp_qve_identity_issuer_chain, @@ -381,7 +456,7 @@ quote3_error_t sgx_ql_get_root_ca_crl(uint8_t **pp_root_ca_crl, uint16_t *p_root quote3_error_t ret = SGX_QL_ERROR_UNEXPECTED; // Get QEIdentity and certchain - sgx_qcnl_error_t qcnl_ret = sgx_qcnl_get_qe_identity(0, NULL, &p_qe_identity, &qe_identity_size); + sgx_qcnl_error_t qcnl_ret = sgx_qcnl_get_qe_identity(SGX_QE_TYPE_ECDSA, NULL, &p_qe_identity, &qe_identity_size); if (qcnl_ret != SGX_QCNL_SUCCESS) { qpl_log(SGX_QL_LOG_ERROR, "[QPL] Failed to get QE identity : 0x%04x\n", qcnl_ret); return qcnl_error_to_ql_error(qcnl_ret); diff --git a/QuoteGeneration/qpl/win/qpl.def b/QuoteGeneration/qpl/win/qpl.def index c1aaaf11..1b068e6b 100644 --- a/QuoteGeneration/qpl/win/qpl.def +++ b/QuoteGeneration/qpl/win/qpl.def @@ -11,3 +11,5 @@ EXPORTS sgx_ql_free_root_ca_crl @8 sgx_ql_set_logging_callback @9 sgx_ql_get_quote_verification_collateral_with_params @10 + tdx_ql_get_quote_verification_collateral @11 + tdx_ql_free_quote_verification_collateral @12 diff --git a/QuoteGeneration/quote_wrapper/quote/inc/ecdsa_quote.h b/QuoteGeneration/quote_wrapper/common/inc/ecdsa_quote.h similarity index 88% rename from QuoteGeneration/quote_wrapper/quote/inc/ecdsa_quote.h rename to QuoteGeneration/quote_wrapper/common/inc/ecdsa_quote.h index f69e19f8..7dde57bc 100644 --- a/QuoteGeneration/quote_wrapper/quote/inc/ecdsa_quote.h +++ b/QuoteGeneration/quote_wrapper/common/inc/ecdsa_quote.h @@ -59,25 +59,25 @@ * generate and store it on disk. It can be used later for the get_quote() to generate quotes using a pre-generated * and certified ECDSA Attestation Key. */ typedef struct _ref_plaintext_ecdsa_data_sdk_t { - uint8_t seal_blob_type; ///< Enclave-specific Sealblob Type, currently only one Sealblob type defined: REFQE3_SEAL_EPID_KEY_BLOB=0 + uint8_t seal_blob_type; ///< Enclave-specific Sealblob Type, currently only one Sealblob type defined: SGX_QL_SEAL_ECDSA_KEY_BLOB=0 uint8_t ecdsa_key_version; ///< Describes the version of the structure of this ECDSA blob. sgx_cpu_svn_t cert_cpu_svn; ///< The CPUSVN used to certify the ECDSA att key. - sgx_isv_svn_t cert_qe3_isv_svn; ///< The QE3's ISV_SVN when the ECDSA att key was generated. + sgx_isv_svn_t cert_qe_isv_svn; ///< The QE's ISV_SVN when the ECDSA att key was generated. sgx_pce_info_t cert_pce_info; ///< PCE ISVSVN and PCEID used to certify. sgx_ql_cert_key_type_t certification_key_type; ///< Certification key type of this blob. sgx_cpu_svn_t raw_cpu_svn; ///< The platform's raw CPUSVN when the ECDSA att key was certified. - sgx_pce_info_t raw_pce_info; ///< The platform's raw PCE ISV_SVN and PCIED when the ECDSA att key was certified.. - uint8_t signature_scheme; ///< Indicates the crypto algorithm used to sign the qe3_report + sgx_pce_info_t raw_pce_info; ///< The platform's raw PCE ISV_SVN and PCIED when the ECDSA att key was certified. + uint8_t signature_scheme; ///< Indicates the crypto algorithm used to sign the qe_report. sgx_target_info_t pce_target_info; ///< PCE Target info used when the key was certified. - sgx_report_t qe3_report; ///< Report of the QE3 used to generate the ECDSA Att Key. REPORTDATA = ECDSA_ID || AuthenticationData - sgx_ec256_signature_t qe3_report_cert_key_sig; ///< The ECDSA signature using the certification key (PCK for root signing). x and y each stored in Big Endian + sgx_report_t qe_report; ///< Report of the QE used to generate the ECDSA Att Key. REPORTDATA = ECDSA_ID || AuthenticationData + sgx_ec256_signature_t qe_report_cert_key_sig; ///< The ECDSA signature using the certification key (PCK for root signing). x and y each stored in Big Endian sgx_ec256_public_t ecdsa_att_public_key; ///< The public portion of the generated ECDSA Att Key. x and y each stored in Big Endian sgx_sha256_hash_t ecdsa_id; ///< The SHA256 hash of the ecdsa_att_public_key sgx_cpu_svn_t seal_cpu_svn; ///< The CPUSVN used to seal the blob. - sgx_isv_svn_t seal_qe3_isv_svn; ///< The QE3 ISV_SVN used to seal the blob. + sgx_isv_svn_t seal_qe_isv_svn; ///< The QE ISV_SVN used to seal the blob. uint32_t authentication_data_size; ///< The number of bytes in the authentication_data array. uint8_t authentication_data[REF_ECDSDA_AUTHENTICATION_DATA_SIZE]; ///< authentication_data buffer. - sgx_key_128bit_t qe3_id; + sgx_key_128bit_t qe_id; }ref_plaintext_ecdsa_data_sdk_t; #pragma pack(pop) diff --git a/QuoteGeneration/quote_wrapper/common/inc/sgx_ql_lib_common.h b/QuoteGeneration/quote_wrapper/common/inc/sgx_ql_lib_common.h index 502e9922..2bfc091e 100644 --- a/QuoteGeneration/quote_wrapper/common/inc/sgx_ql_lib_common.h +++ b/QuoteGeneration/quote_wrapper/common/inc/sgx_ql_lib_common.h @@ -165,12 +165,13 @@ typedef enum _sgx_ql_config_version_t typedef struct _sgx_ql_config_t { sgx_ql_config_version_t version; - sgx_cpu_svn_t cert_cpu_svn; ///< The CPUSVN used to generate the PCK Signature used to certify the attestation key. - sgx_isv_svn_t cert_pce_isv_svn; ///< The PCE ISVSVN used to generate the PCK Signature used to certify the attestation key. - uint32_t cert_data_size; ///< The size of the buffer pointed to by p_cert_data - uint8_t* p_cert_data; ///< The certificaton data used for the quote. - ///todo: It is the assumed to be the PCK Cert Chain. May want to change to support other cert types. -}sgx_ql_config_t; + sgx_cpu_svn_t cert_cpu_svn; ///< The CPUSVN used to generate the PCK Signature used to certify the attestation key. + sgx_isv_svn_t cert_pce_isv_svn; ///< The PCE ISVSVN used to generate the PCK Signature used to certify the attestation key. + uint32_t cert_data_size; ///< The size of the buffer pointed to by p_cert_data + uint8_t *p_cert_data; ///< The certificaton data used for the quote. + ///todo: It is the assumed to be the PCK Cert Chain. May want to change to support other cert types. +} sgx_ql_config_t; + #pragma pack(pop) #define MAX_PARAM_STRING_SIZE (256) @@ -198,7 +199,6 @@ typedef struct _sgx_ql_qve_collateral_t ///< in Base16 encoded DER. A minor version of 1 indicates the CRL’s are formatted in raw binary DER. }; }; - uint32_t tee_type; ///< 0x00000000: SGX or 0x00000081: TDX char *pck_crl_issuer_chain; uint32_t pck_crl_issuer_chain_size; @@ -233,4 +233,13 @@ typedef void (*sgx_ql_logging_callback_t)(sgx_ql_log_level_t level, const char* typedef sgx_ql_qve_collateral_t tdx_ql_qve_collateral_t; #endif +typedef enum _sgx_prod_type_t { + SGX_PROD_TYPE_SGX = 0, + SGX_PROD_TYPE_TDX = 1, +} sgx_prod_type_t; + +#ifndef tdx_ql_qve_collateral_t +typedef sgx_ql_qve_collateral_t tdx_ql_qve_collateral_t; +#endif + #endif //_SGX_QL_LIB_COMMON_H_ diff --git a/QuoteGeneration/quote_wrapper/common/inc/sgx_quote_3.h b/QuoteGeneration/quote_wrapper/common/inc/sgx_quote_3.h index b54e258c..9fc35aed 100644 --- a/QuoteGeneration/quote_wrapper/common/inc/sgx_quote_3.h +++ b/QuoteGeneration/quote_wrapper/common/inc/sgx_quote_3.h @@ -149,8 +149,8 @@ typedef struct _sgx_ql_certification_data_t { typedef struct _sgx_ql_ecdsa_sig_data_t { uint8_t sig[32*2]; ///< Signature over the Quote using the ECDSA Att key. Big Endian. uint8_t attest_pub_key[32*2]; ///< ECDSA Att Public Key. Hash in QE3Report.ReportData. Big Endian - sgx_report_body_t qe3_report; ///< QE3 Report of the QE when the Att key was generated. The ReportData will contain the ECDSA_ID - uint8_t qe3_report_sig[32*2]; ///< Signature of QE3 Report using the Certification Key (PCK for root signing). Big Endian + sgx_report_body_t qe_report; ///< QE3 Report of the QE when the Att key was generated. The ReportData will contain the ECDSA_ID + uint8_t qe_report_sig[32*2]; ///< Signature of QE Report using the Certification Key (PCK for root signing). Big Endian #ifdef _MSC_VER #pragma warning(push) #pragma warning ( disable:4200 ) diff --git a/QuoteGeneration/quote_wrapper/common/inc/sgx_quote_4.h b/QuoteGeneration/quote_wrapper/common/inc/sgx_quote_4.h new file mode 100644 index 00000000..11afbb87 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/common/inc/sgx_quote_4.h @@ -0,0 +1,156 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +/** + * File: sgx_quote_4.h + * Description: Definition for quote structure. + * + * Quote structure and all relative structure will be defined in this file. + */ + +#ifndef _SGX_QUOTE_4_H_ +#define _SGX_QUOTE_4_H_ + +#include "sgx_quote_3.h" +#include "sgx_report2.h" + + +#pragma pack(push, 1) + +#define TD_INFO_RESERVED_BYTES 112 +typedef struct _tee_info_t /* 512 bytes */ +{ + tee_attributes_t attributes; /* ( 0) TD's attributes */ + tee_attributes_t xfam; /* ( 8) TD's XFAM */ + tee_measurement_t mr_td; /* ( 16) Measurement of the initial contents of the TD */ + tee_measurement_t mr_config_id; /* ( 64) Software defined ID for non-owner-defined configuration on the guest TD. e.g., runtime or OS configuration */ + tee_measurement_t mr_owner; /* (112) Software defined ID for the guest TD's owner */ + tee_measurement_t mr_owner_config; /* (160) Software defined ID for owner-defined configuration of the guest TD, e.g., specific to the workload rather than the runtime or OS */ + tee_measurement_t rt_mr[4]; /* (208) Array of 4(TDX1: NUM_RTMRS is 4) runtime extendable measurement registers */ + uint8_t reserved[TD_INFO_RESERVED_BYTES]; /* (400) Reserved, must be zero */ +} tee_info_t; + + +#define TEE_TCB_SVN_SIZE 16 +typedef struct _tee_tcb_svn_t +{ + uint8_t tcb_svn[TEE_TCB_SVN_SIZE]; +} tee_tcb_svn_t; + +#define TD_TEE_TCB_INFO_RESERVED_BYTES 111 +typedef struct _tee_tcb_info_t +{ + uint8_t valid[8]; /* ( 0) Indicates TEE_TCB_INFO fields which are valid + - 1 in the i-th significant bit reflects that the field starting at byte offset(8*i) + - 0 in the i-th significant bit reflects that either no field start by byte offset(8*i) or that + field is not populated and is set to zero. */ + tee_tcb_svn_t tee_tcb_svn; /* ( 8) TEE_TCB_SVN Array */ + tee_measurement_t mr_seam; /* ( 24) Measurement of the SEAM module */ + tee_measurement_t mr_seam_signer; /* ( 72) Measurement of SEAM module signer. (Not populated for Intel SEAM modules) */ + tee_attributes_t attributes; /* (120) Additional configuration attributes.(Not populated for Intel SEAM modules) */ + uint8_t reserved[TD_TEE_TCB_INFO_RESERVED_BYTES]; /* (128) Reserved, must be zero */ +} tee_tcb_info_t; + +/** The SGX_QL_SGX_QL_ALG_ECDSA_P256 specific data structure. Appears in the signature_data[] of the sgx_quote3_t + * structure. */ +typedef struct _sgx_qe_report_certification_data_t { + sgx_report_body_t qe_report; ///< QE Report of the QE when the Att key was generated. The ReportData will contain the ECDSA_ID + uint8_t qe_report_sig[32*2]; ///< Signature of QE Report using the Certification Key (PCK for root signing). Big Endian +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning ( disable:4200 ) +#endif + uint8_t auth_certification_data[]; ///< Place holder for both the auth_data_t and certification_data_t. Concatenated in that order. +#ifdef _MSC_VER +#pragma warning(pop) +#endif +} sgx_qe_report_certification_data_t; + +typedef struct _sgx_ecdsa_sig_data_v4_t { + uint8_t sig[32*2]; ///< Signature over the Quote using the ECDSA Att key. Big Endian. + uint8_t attest_pub_key[32*2]; ///< ECDSA Att Public Key. Hash in QE Report.ReportData. Big Endian +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning ( disable:4200 ) +#endif + uint8_t certification_data[]; ///< Certification data associated with the cert_key_type +#ifdef _MSC_VER +#pragma warning(pop) +#endif +} sgx_ecdsa_sig_data_v4_t; + +/** The quote header. It is designed to compatible with earlier versions of the quote. */ +typedef struct _sgx_quote4_header_t { + uint16_t version; ///< 0: The version this quote structure. + uint16_t att_key_type; ///< 2: sgx_attestation_algorithm_id_t. Describes the type of signature in the signature_data[] field. + uint32_t tee_type; ///< 4: Type of Trusted Execution Environment for which the Quote has been generated. + /// Supported values: 0 (SGX), 0x81(TDX) + uint32_t reserved; ///< 8: Reserved field. + uint8_t vendor_id[16]; ///< 12: Unique identifier of QE Vendor. + uint8_t user_data[20]; ///< 28: Custom attestation key owner data. +} sgx_quote4_header_t; + +/** SGX Report2 body */ +typedef struct _sgx_report2_body_t { + tee_tcb_svn_t tee_tcb_svn; ///< 0: TEE_TCB_SVN Array + tee_measurement_t mr_seam; ///< 16: Measurement of the SEAM module + tee_measurement_t mrsigner_seam; ///< 64: Measurement of a 3rd party SEAM module’s signer (SHA384 hash). + /// The value is 0’ed for Intel SEAM module + tee_attributes_t seam_attributes; ///< 112: MBZ: TDX 1.0 + tee_attributes_t td_attributes; ///< 120: TD's attributes + tee_attributes_t xfam; ///< 128: TD's XFAM + tee_measurement_t mr_td; ///< 136: Measurement of the initial contents of the TD + tee_measurement_t mr_config_id; ///< 184: Software defined ID for non-owner-defined configuration on the guest TD. e.g., runtime or OS configuration + tee_measurement_t mr_owner; ///< 232: Software defined ID for the guest TD's owner + tee_measurement_t mr_owner_config; ///< 280: Software defined ID for owner-defined configuration of the guest TD, e.g., specific to the workload rather than the runtime or OS + tee_measurement_t rt_mr[4]; ///< 328: Array of 4(TDX1: NUM_RTMRS is 4) runtime extendable measurement registers + tee_report_data_t report_data; ///< 520: Additional report data +}sgx_report2_body_t; + +/** The generic TD quote data structure. This is the common part of the quote. The signature_data[] contains the signature and supporting + * information of the key used to sign the quote and the contents depend on the sgx_quote_sign_type_t value. */ +typedef struct _sgx_quote4_t { + sgx_quote4_header_t header; ///< 0: The quote header. + sgx_report2_body_t report_body; ///< 48: The REPORT of the TD that is attesting remotely. + uint32_t signature_data_len; ///< 656: The length of the signature_data. Varies depending on the type of sign_type. +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning ( disable:4200 ) +#endif + uint8_t signature_data[]; ///< 660: Contains the variable length containing the quote signature and support data for the signature. +#ifdef _MSC_VER +#pragma warning(pop) +#endif +} sgx_quote4_t; + +#pragma pack(pop) + +#endif //_SGX_QUOTE_4_H_ diff --git a/QuoteGeneration/quote_wrapper/common/inc/user_types.h b/QuoteGeneration/quote_wrapper/common/inc/user_types.h index 05174eea..6655b339 100644 --- a/QuoteGeneration/quote_wrapper/common/inc/user_types.h +++ b/QuoteGeneration/quote_wrapper/common/inc/user_types.h @@ -56,10 +56,10 @@ #define REF_ECP256_KEY_SIZE 32 #define REF_NISTP_ECP256_KEY_SIZE (REF_ECP256_KEY_SIZE/sizeof(uint32_t)) #define REF_SHA256_HASH_SIZE 32 -#define REF_RSA_OAEP_2048_MOD_SIZE 256 //hardcode n size to be 256 -#define REF_RSA_OAEP_2048_EXP_SIZE 4 //hardcode e size to be 4 -#define REF_RSA_OAEP_3072_MOD_SIZE 384 //hardcode n size to be 384 -#define REF_RSA_OAEP_3072_EXP_SIZE 4 //hardcode e size to be 4 +#define REF_RSA_OAEP_2048_MOD_SIZE 256 //hardcode n size to be 256 +#define REF_RSA_OAEP_2048_EXP_SIZE 4 //hardcode e size to be 4 +#define REF_RSA_OAEP_3072_MOD_SIZE 384 //hardcode n size to be 384 +#define REF_RSA_OAEP_3072_EXP_SIZE 4 //hardcode e size to be 4 #pragma pack(push, 1) typedef uint8_t ref_sha256_hash_t[REF_SHA256_HASH_SIZE]; @@ -87,10 +87,15 @@ typedef struct _sgx_psvn_t { typedef int errno_t; #endif +#ifndef _MSC_VER #define STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused)) +#else +#define STATIC_ASSERT_UNUSED_ATTRIBUTE +#endif #define _ASSERT_CONCAT(a, b) a##b #define ASSERT_CONCAT(a, b) _ASSERT_CONCAT(a, b) -#define ref_static_assert(e) typedef char ASSERT_CONCAT(assert_line, __LINE__)[(e)?1:-1] +#define ref_static_assert(e) typedef char ASSERT_CONCAT(assert_line, __LINE__)[(e)?1:-1] \ + STATIC_ASSERT_UNUSED_ATTRIBUTE #define MIN(x, y) (((x)>(y))?(y):(x)) #define MAX(x, y) (((x)>(y))?(x):(y)) #define ARRAY_LENGTH(x) (sizeof(x)/sizeof(x[0])) diff --git a/QuoteGeneration/quote_wrapper/qgs/Makefile b/QuoteGeneration/quote_wrapper/qgs/Makefile new file mode 100644 index 00000000..30faa15c --- /dev/null +++ b/QuoteGeneration/quote_wrapper/qgs/Makefile @@ -0,0 +1,86 @@ +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + +######## SGX SDK Settings ######## +TOP_DIR = ../.. +include $(TOP_DIR)/buildenv.mk + +QGS_SRCS = se_trace.c server_main.cpp qgs_server.cpp qgs_log.cpp qgs.message.pb.cc +QGS_OBJS = $(patsubst %.c,%.o,$(patsubst %.cc,%.o,$(patsubst %.cpp,%.o,$(QGS_SRCS)))) + +PROTOBUF_CFLAGS = `pkg-config --cflags protobuf-lite` + +QGS_INC = -I$(SGX_SDK)/include \ + -I$(COMMON_DIR)/inc/internal \ + -I$(TOP_DIR)/qpl/inc \ + -I$(TOP_DIR)/quote_wrapper/tdx_quote +QGS_CFLAGS = -g -MMD $(CFLAGS) $(QGS_INC) $(PROTOBUF_CFLAGS) +QGS_CXXFLAGS = -g -MMD $(CXXFLAGS) $(QGS_INC) $(PROTOBUF_CFLAGS) +ifeq ($(CC_NO_LESS_THAN_8), 1) + QGS_CFLAGS += -fcf-protection=none + QGS_CXXFLAGS += -fcf-protection=none +endif + +DEPENDS = ${QGS_OBJS:.o=.d} + +# SGX related libraries +QGS_LFLAGS = -L$(TOP_DIR)/build/linux -lsgx_tdx_logic -lsgx_pce_logic -ldl \ + -L$(SGX_SDK)/lib64 -lsgx_urts -g +# add protobuf for link +QGS_LFLAGS += `pkg-config --libs protobuf-lite` +# add boost_system for link +QGS_LFLAGS += -lboost_system -lpthread + +vpath %.c $(COMMON_DIR)/src + +-include ${DEPENDS} + +all: qgs + +qgs: $(QGS_OBJS) + $(CXX) -o $@ $^ $(QGS_LFLAGS) + +qgs.message.pb.o: qgs.message.proto + protoc --cpp_out=. $^ + $(CXX) -c qgs.message.pb.cc $(QGS_CXXFLAGS) + +%.o: %.cpp qgs.message.pb.o + $(CXX) -c $(QGS_CXXFLAGS) $< + +%.o: %.c + $(CC) -c $(QGS_CFLAGS) $< + +clean: + rm -f *.pb.* + rm -f *_pb2.* + rm -f *.d + rm -f *.o + rm -f qgs diff --git a/QuoteGeneration/quote_wrapper/qgs/qgs.conf b/QuoteGeneration/quote_wrapper/qgs/qgs.conf new file mode 100644 index 00000000..3d4b74bd --- /dev/null +++ b/QuoteGeneration/quote_wrapper/qgs/qgs.conf @@ -0,0 +1,2 @@ +#set port number +port = 4050 diff --git a/QuoteGeneration/quote_wrapper/qgs/qgs.message.proto b/QuoteGeneration/quote_wrapper/qgs/qgs.message.proto new file mode 100644 index 00000000..c39192d8 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/qgs/qgs.message.proto @@ -0,0 +1,33 @@ +syntax = "proto2"; +package qgs.message; +option optimize_for = LITE_RUNTIME; + +message UUID{ + required bytes value = 1; +} + +message Request{ + message GetQuoteRequest{ + required bytes report = 1; + repeated UUID id_list = 2; + } + + required uint32 type = 1; + oneof msg { + GetQuoteRequest getQuoteRequest = 2; + } +} + + +message Response{ + message GetQuoteResponse{ + required uint32 error_code = 1 [default = 1]; + optional UUID selected_id = 2; + optional bytes quote = 3; + } + + required uint32 type = 1; + oneof msg { + GetQuoteResponse getQuoteResponse = 2; + } +} diff --git a/QuoteGeneration/quote_wrapper/qgs/qgs_log.cpp b/QuoteGeneration/quote_wrapper/qgs/qgs_log.cpp new file mode 100644 index 00000000..a82e62ae --- /dev/null +++ b/QuoteGeneration/quote_wrapper/qgs/qgs_log.cpp @@ -0,0 +1,106 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include +#include "qgs_log.h" + +static bool _nosyslog = false; + +void qgs_log_init(void) +{ + if (!_nosyslog) { + openlog("qgsd", LOG_CONS|LOG_PID, LOG_USER); + } +} + +void qgs_log_init_ex(bool nosyslog) +{ + // If nosyslog is true, we will output logs to stdout instead of syslog + _nosyslog = nosyslog; + + qgs_log_init(); +} + +void qgs_log_fini(void) +{ + if (!_nosyslog) { + closelog(); + } +} + +extern "C" +void sgx_proc_log_report(int level, const char *format, ...) +{ + int priority = 0; + va_list ap; + // Make sure strlen(format) >= 1 + // so we can always add newline + if (!format || !(*format)) + return;//ignore + va_start(ap, format); + switch(level){ + case QGS_LOG_LEVEL_FATAL: + priority = LOG_CRIT; + break; + case QGS_LOG_LEVEL_ERROR: + priority = LOG_ERR; + break; + case QGS_LOG_LEVEL_WARNING: + priority = LOG_WARNING; + break; + case QGS_LOG_LEVEL_INFO: + priority = LOG_INFO; + break; + default: + return;//ignore + } + if (!_nosyslog) { + vsyslog(priority, format, ap); + } + else { + FILE* stream = nullptr; + if (level <= QGS_LOG_LEVEL_ERROR) { + stream = stderr; + } + else { + stream = stdout; + } + // Automatically add newline + vfprintf(stream, format, ap); + if (format[strlen(format)-1] != '\n') + fprintf(stream, "\n"); + fflush(stream); + } + va_end(ap); +} diff --git a/QuoteGeneration/quote_wrapper/qgs/qgs_log.h b/QuoteGeneration/quote_wrapper/qgs/qgs_log.h new file mode 100644 index 00000000..b06c1931 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/qgs/qgs_log.h @@ -0,0 +1,70 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef __QGS_LOG_H__ +#define __QGS_LOG_H__ + +#include "se_trace.h" +#define QGS_LOG_LEVEL_FATAL 0 +#define QGS_LOG_LEVEL_ERROR 1 +#define QGS_LOG_LEVEL_WARNING 2 +#define QGS_LOG_LEVEL_INFO 3 +#ifdef __cplusplus +extern "C" { +#endif/*__cplusplus*/ + void qgs_log_init(void); + void qgs_log_init_ex(bool nosyslog); + void qgs_log_fini(void); +#ifdef __cplusplus +}; +#endif/*__cplusplus*/ + +#define QGS_LOG_FATAL(format, args...) \ + do {\ + sgx_proc_log_report(QGS_LOG_LEVEL_FATAL, format, ## args); \ + }while(0) +#define QGS_LOG_ERROR(format, args...) \ + do { \ + sgx_proc_log_report(QGS_LOG_LEVEL_ERROR, format, ## args); \ + }while(0); +#define QGS_LOG_WARN(format, args...) \ + do { \ + sgx_proc_log_report(QGS_LOG_LEVEL_WARNING, format, ## args); \ + }while(0) +#define QGS_LOG_INFO(format, args...) \ + do { \ + sgx_proc_log_report(QGS_LOG_LEVEL_INFO, format, ## args); \ + }while(0) +#define QGS_LOG_INIT() qgs_log_init() +#define QGS_LOG_INIT_EX(nosyslog) qgs_log_init_ex(nosyslog) +#define QGS_LOG_FINI() qgs_log_fini() + +#endif/*__QGS_LOG_H__*/ diff --git a/QuoteGeneration/quote_wrapper/qgs/qgs_msg_wrapper.h b/QuoteGeneration/quote_wrapper/qgs/qgs_msg_wrapper.h new file mode 100644 index 00000000..d19a5578 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/qgs/qgs_msg_wrapper.h @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef QGS_MSG_WRAPPER_H +#define QGS_MSG_WRAPPER_H + +#include +#include +#include +#include +#include //for uint8_t + + +using data_buffer = std::vector; + +const unsigned HEADER_SIZE = 4; + +template +class QgsMsgWrapper +{ +public: + typedef boost::shared_ptr MessagePointer; + + explicit QgsMsgWrapper(MessagePointer msg = MessagePointer()) + : m_msg(msg) + {} + + void set_msg(MessagePointer msg) { + m_msg = msg; + } + + MessagePointer get_msg() { + return m_msg; + } + + bool pack(data_buffer& buf) const { + if (!m_msg) { + return false; + } + + unsigned msg_size = m_msg->ByteSize(); + buf.resize(HEADER_SIZE + msg_size); + encode_header(buf, msg_size); + return m_msg->SerializeToArray(&buf[HEADER_SIZE], msg_size); + } + + unsigned decode_header(const data_buffer& buf) const { + if (buf.size() < HEADER_SIZE) { + return 0; + } + unsigned msg_size = 0; + for (unsigned i = 0; i < HEADER_SIZE; ++i) { + msg_size = msg_size * 256 + (static_cast(buf[i]) & 0xFF); + } + return msg_size; + } + + bool unpack(const data_buffer& buf) { + return m_msg->ParseFromArray(&buf[HEADER_SIZE], + static_cast(buf.size() - HEADER_SIZE)); + } +private: + void encode_header(data_buffer& buf, unsigned size) const { + assert(buf.size() >= HEADER_SIZE); + buf[0] = static_cast((size >> 24) & 0xFF); + buf[1] = static_cast((size >> 16) & 0xFF); + buf[2] = static_cast((size >> 8) & 0xFF); + buf[3] = static_cast(size & 0xFF); + } + + MessagePointer m_msg; +}; + +#endif /* QGS_MSG_WRAPPER_H */ diff --git a/QuoteGeneration/quote_wrapper/qgs/qgs_server.cpp b/QuoteGeneration/quote_wrapper/qgs/qgs_server.cpp new file mode 100644 index 00000000..5f161f6e --- /dev/null +++ b/QuoteGeneration/quote_wrapper/qgs/qgs_server.cpp @@ -0,0 +1,312 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "qgs_log.h" +#include "qgs_server.h" +#include "qgs_msg_wrapper.h" +#include "qgs.message.pb.h" +#include "td_ql_logic.h" +#include "se_trace.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; +using boost::uint8_t; +using namespace qgs::message; +static const int QGS_TIMEOUT = 30; + +namespace intel { namespace sgx { namespace dcap { namespace qgs { + + + class QgsConnection : public boost::enable_shared_from_this + { + public: + using Pointer = boost::shared_ptr; + using RequestPointer = boost::shared_ptr; + using ResponsePointer = boost::shared_ptr; + using ConnectionSet = boost::unordered_set; + static Pointer create(boost::mutex& connection_mtx, + ConnectionSet& connections, + asio::thread_pool& pool, + asio::io_service& io_service) { + return Pointer(new QgsConnection(connection_mtx, connections, pool, + io_service)); + } + + gs::socket& get_socket() { + return m_socket; + } + + void start() { + m_timer.expires_from_now(timeout); + m_timer.async_wait([this](boost::system::error_code ec) { + if (!ec) { + QGS_LOG_ERROR("timeout\n"); + stop(); + } + }); + start_read_header(); + } + + void stop() { + boost::system::error_code ec; + QGS_LOG_INFO("About to shutdown and close socket\n"); + m_socket.shutdown(asio::socket_base::shutdown_both, ec); + m_socket.close(); + { + boost::lock_guard lock(m_connection_mtx); + m_connections.erase(shared_from_this()); + QGS_LOG_INFO("erased a connection, now [%d]\n", m_connections.size()); + } + } + + private: + boost::mutex& m_connection_mtx; + ConnectionSet& m_connections; + asio::thread_pool& m_pool; + gs::socket m_socket; + asio::deadline_timer m_timer; + vector m_readbuf; + QgsMsgWrapper m_packed_request; + + const boost::posix_time::time_duration timeout = + boost::posix_time::seconds(QGS_TIMEOUT); + + QgsConnection(boost::mutex &connection_mtx, + ConnectionSet &connections, + asio::thread_pool &pool, + asio::io_service &io_service) + : m_connection_mtx(connection_mtx), + m_connections(connections), + m_pool(pool), + m_socket(io_service), + m_timer(io_service), + m_packed_request(boost::shared_ptr(new Request())) { + } + + void handle_read_header(const boost::system::error_code& ec) { + std::ostringstream oss; + oss << ec.category().name() << ':' << ec.value(); + QGS_LOG_INFO("handle read header, status [%s]\n", + oss.str().c_str()); + if (!ec) { + QGS_LOG_INFO("Got header!\n"); + unsigned msg_len = m_packed_request.decode_header(m_readbuf); + QGS_LOG_INFO("body should be [%d] bytes!\n", msg_len); + start_read_body(msg_len); + } + } + + void handle_read_body(const boost::system::error_code& ec) { + std::ostringstream oss; + oss << ec.category().name() << ':' << ec.value(); + QGS_LOG_INFO("handle read body status [%s]\n", + oss.str().c_str()); + if (!ec) { + QGS_LOG_INFO("Got body!\n"); + handle_request(); + } + } + + void handle_request() { + if (m_packed_request.unpack(m_readbuf)) { + std::ostringstream oss; + oss << boost::this_thread::get_id(); + QGS_LOG_INFO("unpack message successfully in thread [%s]\n", + oss.str().c_str()); + RequestPointer req = m_packed_request.get_msg(); + asio::post(m_pool, [this, self = shared_from_this(), req] { + boost::system::error_code ec; + ResponsePointer resp = prepare_response(req); + + vector writebuf; + QgsMsgWrapper resp_msg(resp); + resp_msg.pack(writebuf); + std::ostringstream oss1; + oss1 << boost::this_thread::get_id(); + QGS_LOG_INFO("About to write response in thread [%s]\n", + oss1.str().c_str()); + asio::write(m_socket, asio::buffer(writebuf), ec); + m_timer.cancel(); + stop(); + }); + } + } + + void start_read_header() { + m_readbuf.resize(HEADER_SIZE); + asio::async_read(m_socket, asio::buffer(m_readbuf), + boost::bind(&QgsConnection::handle_read_header, + shared_from_this(), + asio::placeholders::error)); + } + + void start_read_body(unsigned msg_len) { + m_readbuf.resize(HEADER_SIZE + msg_len); + asio::mutable_buffers_1 buf = asio::buffer(&m_readbuf[HEADER_SIZE], + msg_len); + asio::async_read(m_socket, buf, + boost::bind(&QgsConnection::handle_read_body, + shared_from_this(), + asio::placeholders::error)); + } + + ResponsePointer prepare_response(RequestPointer req) { + ResponsePointer resp(new Response); + quote3_error_t quote3_ret = SGX_QL_SUCCESS; + + switch (req->type()) { + case Request::MsgCase::kGetQuoteRequest: + { + uint32_t size = 0; + vector quote_buf; + auto get_quote_resp = new Response::GetQuoteResponse(); + resp->set_type(Response::kGetQuoteResponse); + quote3_ret = td_init_quote(PPID_RSA3072_ENCRYPTED, false); + if (SGX_QL_SUCCESS != quote3_ret) { + get_quote_resp->set_error_code(1); + QGS_LOG_ERROR("td_init_quote return 0x%x\n", quote3_ret); + } + else if (SGX_QL_SUCCESS != (quote3_ret = td_get_quote_size(PPID_RSA3072_ENCRYPTED, &size))) { + get_quote_resp->set_error_code(1); + QGS_LOG_ERROR("td_get_quote_size return 0x%x\n", quote3_ret); + } else { + quote_buf.resize(size); + quote3_ret = td_get_quote((sgx_report2_t *)(req->getquoterequest().report().c_str()), + (sgx_quote4_t *)quote_buf.data(), size); + if (SGX_QL_SUCCESS != quote3_ret) { + get_quote_resp->set_error_code(1); + QGS_LOG_ERROR("td_get_quote return 0x%x\n", quote3_ret); + } else { + get_quote_resp->set_error_code(0); + get_quote_resp->set_quote(quote_buf.data(), size); + QGS_LOG_ERROR("td_get_quote return Success\n"); + } + } + resp->set_allocated_getquoteresponse(get_quote_resp); + QGS_LOG_INFO("byte length is: %d\n", resp->ByteSize()); + break; + } + default: + QGS_LOG_ERROR("Whoops, bad request!"); + break; + } + + return resp; + } + }; + + + struct QgsServer::QgsServerImpl + { + using vsock_acceptor = asio::basic_socket_acceptor; + boost::mutex connection_mtx; + boost::unordered_set> connections; + boost::asio::thread_pool pool; + QgsServerImpl(asio::io_service& in_io_service, gs::endpoint& ep) + : pool(4), acceptor(in_io_service, ep), io_service(in_io_service) { + start_accept(); + } + + void start_accept() + { + QgsConnection::Pointer new_connection = + QgsConnection::create(connection_mtx, connections, pool, + io_service); + + acceptor.async_accept(new_connection->get_socket(), + boost::bind(&QgsServerImpl::handle_accept, + this, new_connection, + asio::placeholders::error)); + } + + void handle_accept(QgsConnection::Pointer connection, + const boost::system::error_code& ec) { + if (!ec) { + { + boost::lock_guard lock(connection_mtx); + connections.insert(connection); + QGS_LOG_INFO("Added a new connection, now [%d]\n", connections.size()); + } + connection->start(); + start_accept(); + } + } + + void shutdown() { + QGS_LOG_INFO("About to close acceptor\n"); + acceptor.close(); + std::vector> connections_to_close; + int i = 0; + copy(connections.begin(), connections.end(), back_inserter(connections_to_close)); + for (auto& s : connections_to_close) { + i++; + s->stop(); + } + QGS_LOG_INFO("Stopped [%d] connections, about to clear connection list\n", i); + pool.join(); + QGS_LOG_INFO("Joined thread pool\n"); + io_service.stop(); + QGS_LOG_INFO("Stopped io_service\n"); + connections.clear(); + } + + private: + vsock_acceptor acceptor; + asio::io_service& io_service; + }; + + + QgsServer::QgsServer(asio::io_service& io_service, gs::endpoint& ep) + : d(new QgsServerImpl(io_service, ep)) { + } + + void QgsServer::shutdown() { + d->shutdown(); + } + + QgsServer::~QgsServer() { + } + +}}}} diff --git a/QuoteGeneration/quote_wrapper/qgs/qgs_server.h b/QuoteGeneration/quote_wrapper/qgs/qgs_server.h new file mode 100644 index 00000000..83f96b47 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/qgs/qgs_server.h @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef QGS_SERVER_H +#define QGS_SERVER_H + +#include +#include + +namespace intel { namespace sgx { namespace dcap { namespace qgs { + + namespace asio = boost::asio; + using gs = asio::generic::stream_protocol; + + class QgsServer { + public: + QgsServer(asio::io_service& io_service, gs::endpoint& ep); + ~QgsServer(); + void shutdown(); + + private: + QgsServer(); + //void start_accept(); + + struct QgsServerImpl; + // d will be deleted in ~QgsServer(); + boost::scoped_ptr d; + }; +}}}} +#endif /* QGS_SERVER_H */ + diff --git a/QuoteGeneration/quote_wrapper/qgs/qgsd.conf b/QuoteGeneration/quote_wrapper/qgs/qgsd.conf new file mode 100644 index 00000000..1f876862 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/qgs/qgsd.conf @@ -0,0 +1,26 @@ +description "Intel(R) TD Quoting Generation Service" + +start on runlevel [2345] +stop on runlevel [!2345] + +respawn +respawn limit 10 5 +normal exit 0 +umask 022 + +expect fork +console none +setuid "qgsd" + +env NAME="qgs" +env QGS_PATH=@qgs_folder@ +env DAEMON="$QGS_PATH/$NAME" + + +pre-start script + test -x $QGS_PATH/$NAME || { stop; exit 0; } +end script + + +env LD_LIBRARY_PATH=$QGS_PATH +exec $QGS_PATH/$NAME diff --git a/QuoteGeneration/quote_wrapper/qgs/qgsd.service b/QuoteGeneration/quote_wrapper/qgs/qgsd.service new file mode 100644 index 00000000..47364197 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/qgs/qgsd.service @@ -0,0 +1,27 @@ +[Unit] +Description=Intel(R) TD Quoting Generation Service +After=syslog.target network.target auditd.service +After=remount-dev-exec.service +Wants=remount-dev-exec.service + +[Service] +User=qgsd +Type=forking +Environment=NAME=qgsd +Environment=LD_LIBRARY_PATH=@qgs_folder@ +WorkingDirectory=@qgs_folder@ +PermissionsStartOnly=true +ExecStart=@qgs_folder@/qgs +ExecStartPre=@qgs_folder@/linksgx.sh +InaccessibleDirectories=/home +ExecReload=/bin/kill -SIGHUP $MAINPID +Restart=on-failure +RestartSec=15s +DevicePolicy=closed +DeviceAllow=/dev/sgx rw +DeviceAllow=/dev/sgx/enclave rw +DeviceAllow=/dev/sgx/provision rw +DeviceAllow=/dev/sgx_enclave rw +DeviceAllow=/dev/sgx_provision rw +[Install] +WantedBy=multi-user.target diff --git a/QuoteGeneration/quote_wrapper/qgs/server_main.cpp b/QuoteGeneration/quote_wrapper/qgs/server_main.cpp new file mode 100644 index 00000000..5e498378 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/qgs/server_main.cpp @@ -0,0 +1,192 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + +#include "qgs_server.h" +#include "qgs_log.h" +#include +#include +#include + +#define QGS_CONFIG_FILE "/etc/qgs.conf" + +using namespace std; +using namespace intel::sgx::dcap::qgs; +volatile bool reload = false; +static QgsServer* server = NULL; + +void signal_handler(int sig) +{ + switch(sig) + { + case SIGTERM: + if (server) + { + reload = false; + server->shutdown(); + } + break; + case SIGHUP: + if (server) + { + reload = true; + server->shutdown(); + } + break; + default: + break; + } +} + + +int main(int argc, const char* argv[]) +{ + bool no_daemon = false; + unsigned long int port = 0; + char *endptr = NULL; + if (argc > 3) { + cout << "Usage: " << argv[0] << "[--no-daemon] [-p=port_number]" + << endl; + exit(1); + } + + for (int i = 1; i < argc; i++) + { + if (strcmp(argv[i], "--no-daemon") == 0) { + cout << "--no-daemon option found, will not run as a daemon" + << endl; + no_daemon = true; + continue; + } else if (strncmp(argv[i], "-p=", 3 ) == 0) { + if (strspn(argv[i] + 3, "0123456789") != strlen(argv[i] + 3)) { + cout << "Please input valid port number" << endl; + exit(1); + } + errno = 0; + port = strtoul(argv[i] + 3, &endptr, 10); + if (errno || strlen(endptr) || (port > UINT_MAX) ) { + cout << "Please input valid port number" << endl; + exit(1); + } + cout << "port number [" << port << "] found in cmdline" << endl; + continue; + } else { + cout << "Usage: " << argv[0] << "[--no-daemon] [-p=port_number]" + << endl; + exit(1); + } + } + + // Use the port number in QGS_CONFIG_FILE if no valid port number on + // command line + if (port == 0) { + ifstream config_file(QGS_CONFIG_FILE); + if (config_file.is_open()) { + string line; + while(getline(config_file, line)) { + line.erase(remove_if(line.begin(), line.end(), ::isspace), + line.end()); + if(line.empty() || line[0] == '#' ) { + continue; + } + auto delimiterPos = line.find("="); + if (delimiterPos == std::string::npos) { + continue; + } + auto name = line.substr(0, delimiterPos); + if (name.empty()) { + cout << "Wrong config format in " << QGS_CONFIG_FILE + << endl; + exit(1); + } + if( name.compare("port") == 0) { + errno = 0; + endptr = NULL; + port = strtoul(line.substr(delimiterPos + 1).c_str(), + &endptr, 10); + if (errno || strlen(endptr) || (port > UINT_MAX) ) { + cout << "Please input valid port number in " + << QGS_CONFIG_FILE << endl; + exit(1); + } + } + // ignore unrecognized configs. + } + } else { + cout << "Failed to open config file " << QGS_CONFIG_FILE << endl; + } + } + + if (port == 0) { + cout << "Please provide valid port number in cmdline or " + << QGS_CONFIG_FILE << endl; + exit(1); + } + + if(!no_daemon && daemon(0, 0) < 0) { + exit(1); + } + + QGS_LOG_INIT_EX(no_daemon); + signal(SIGCHLD, SIG_IGN); + signal(SIGPIPE, SIG_IGN); + signal(SIGHUP, signal_handler); + signal(SIGTERM, signal_handler); + QGS_LOG_INFO("Added signal handler\n"); + + try { + do { + reload = false; + asio::io_service io_service; + struct sockaddr_vm vm_addr = {}; + vm_addr.svm_family = AF_VSOCK; + vm_addr.svm_reserved1 = 0; + vm_addr.svm_port = port & UINT_MAX; + vm_addr.svm_cid = VMADDR_CID_ANY; + asio::generic::stream_protocol::endpoint ep(&vm_addr, sizeof(vm_addr)); + QGS_LOG_INFO("About to create QgsServer\n"); + server = new QgsServer(io_service, ep); + QGS_LOG_INFO("About to start main loop\n"); + io_service.run(); + QGS_LOG_INFO("Quit main loop\n"); + QgsServer *temp_server = server; + server = NULL; + QGS_LOG_INFO("Deleted QgsServer object\n"); + delete temp_server; + } while (reload == true); + } catch (std::exception &e) { + cerr << e.what() << endl; + exit(1); + } + + QGS_LOG_FINI(); + return 0; +} diff --git a/QuoteGeneration/quote_wrapper/quote/enclave/linux/Makefile b/QuoteGeneration/quote_wrapper/quote/enclave/linux/Makefile index fdadabb7..cee1385c 100644 --- a/QuoteGeneration/quote_wrapper/quote/enclave/linux/Makefile +++ b/QuoteGeneration/quote_wrapper/quote/enclave/linux/Makefile @@ -39,7 +39,6 @@ SONAME := $(AENAME).so QE3_VER:= $(shell awk '$$2 ~ /QE3_VERSION/ { print substr($$3, 2, length($$3) - 2); }' $(COMMON_DIR)/inc/internal/se_version.h) -CONFIG := config.xml TCRYPTO_LIB_NAME := sgx_tcrypto INCLUDE := -I$(SGX_SDK)/include \ diff --git a/QuoteGeneration/quote_wrapper/quote/enclave/linux/config.xml b/QuoteGeneration/quote_wrapper/quote/enclave/linux/config.xml index 9694e366..87a51d12 100644 --- a/QuoteGeneration/quote_wrapper/quote/enclave/linux/config.xml +++ b/QuoteGeneration/quote_wrapper/quote/enclave/linux/config.xml @@ -2,7 +2,7 @@ 1 1 0x1 - 7 + 8 1 1 0 diff --git a/QuoteGeneration/quote_wrapper/quote/enclave/quoting_enclave_3.cpp b/QuoteGeneration/quote_wrapper/quote/enclave/quoting_enclave_3.cpp index 159944b5..33bc9aae 100644 --- a/QuoteGeneration/quote_wrapper/quote/enclave/quoting_enclave_3.cpp +++ b/QuoteGeneration/quote_wrapper/quote/enclave/quoting_enclave_3.cpp @@ -362,7 +362,7 @@ static qe3_error_t get_att_key_based_from_seal_key(sgx_ec256_private_t *p_att_pr } ref_static_assert(sizeof(g_sgx_nistp256_r_m1) == sizeof(sgx_ec256_private_t)); /*Unmatched size*/ - // Calculate pce private key + // Calculate attest key if (sgx_calculate_ecdsa_priv_key((const unsigned char*)hash_drg_output, HASH_DRBG_OUT_LEN, (const unsigned char*)g_sgx_nistp256_r_m1, @@ -398,92 +398,6 @@ static qe3_error_t get_att_key_based_from_seal_key(sgx_ec256_private_t *p_att_pr return ret; } -/** - * The QE_ID is a platform ID that is not associated with a particular SVN but is dependent on the Quoting Enclave's - * (QE) MRSIGNER and its Seal Key. The QE_ID is designed to be dependent on the seal key which is dependent on the - * platform's OWNER_EPOCH value. The OWNER_EPOCH value is set by the platform owner in the BIOS configuration. If the - * BIOS's non-volatile memory (FLASH) is wiped, then the QE_ID will change even if generated by the same QE. This - * prevents the QE_ID from being a true HW ID which cannot be modified by the platform owner. - * - * 1) QE_ID-Seed = EGETKEY(KEYNAME=SEAL_KEY, - * KEY_POLICY=MRSIGNER, - * KEY_ID = 0, - * CPUSVN=0, - * ISVSVN = 0) - * 2) QE_ID = AES128-CMAC(QE_ID-Seed, 16 bytes below) - * - * Byte Position | Value - * 0 | 0x00 - * 1-9 | "QE_ID_DER" (ascii encoded) - * 10-13 | 0x00000000 - * 14-15 | 0x0080 (Big Endian) - * - * @param p_qe_id[Out] Pointer to the QE_ID. Must not be NULL. - * - * @return REFQE3_SUCCESS Successfully created the QE_ID. - * @return REFQE3_ERROR_INVALID_PARAMETER The QE_ID pointer is NULL. - * @return REFQE3_ERROR_CRYPTO Error in the crypto library functions ues to generate the key. - * @return REFQE3_ERROR_OUT_OF_MEMORY Heap memory was exhausted. - * - */ -static qe3_error_t get_qe_id_internal(sgx_key_128bit_t *p_qe_id) -{ - sgx_status_t sgx_status = SGX_SUCCESS; - qe3_error_t ret = REFQE3_SUCCESS; - sgx_key_128bit_t key_tmp; - sgx_key_request_t qe_id_key_req; - - // Defense-in-depth. This is only called internally so should never be NULL - if (NULL == p_qe_id) { - return REFQE3_ERROR_INVALID_PARAMETER; - } - - memset(&key_tmp, 0, sizeof(key_tmp)); - - // Set up the key request structure for Seal Key with both CPUSVN and ISVSVN set to 0 and KeyID set to 0 - memset(&qe_id_key_req, 0, sizeof(sgx_key_request_t)); - qe_id_key_req.key_name = SGX_KEYSELECT_SEAL; // Seal key - qe_id_key_req.key_policy = SGX_KEYPOLICY_MRSIGNER; - qe_id_key_req.attribute_mask.xfrm = 0; - qe_id_key_req.misc_mask = 0xFFFFFFFF; - qe_id_key_req.attribute_mask.flags = ~SGX_FLAGS_MODE64BIT; //set all bits except the SGX_FLAGS_MODE64BIT - sgx_status = sgx_get_key(&qe_id_key_req, &key_tmp); - if (SGX_SUCCESS != sgx_status) { - ret = REFQE3_ERROR_CRYPTO; - goto ret_point; - } - - uint8_t content[16]; - memset(&content, 0, sizeof(content)); - //1-10bytes: "QE_ID_DER"(ascii encoded) - memcpy(content + 1, QE_ID_STRING, 9); - //14-15bytes: 0x0080 (Big Endian) - content[14] = 0x00; - content[15] = 0x80; - - // Generate the mac as QE_ID - ref_static_assert(sizeof(sgx_cmac_128bit_key_t) == sizeof(sgx_key_128bit_t)); - ref_static_assert(sizeof(sgx_cmac_128bit_tag_t) == sizeof(*p_qe_id)); - if ((sgx_status = sgx_rijndael128_cmac_msg(reinterpret_cast(&key_tmp), - content, - sizeof(content), - reinterpret_cast(p_qe_id))) != SGX_SUCCESS) { - if (sgx_status == SGX_ERROR_OUT_OF_MEMORY) { - ret = REFQE3_ERROR_OUT_OF_MEMORY; - } - else { - ret = REFQE3_ERROR_CRYPTO; - } - } - else { - ret = REFQE3_SUCCESS; - } - -ret_point: - (void)memset_s(&key_tmp, sizeof(key_tmp), 0, sizeof(key_tmp)); //clear provisioning key in stack - return ret; -} - /** * An internal function used to verify the ECDSA Blob. It will verify the format of the blob and check the * authenticity using the seal key. If the TCB of the platform has increased since the last time the blob was sealed, @@ -670,7 +584,6 @@ static qe3_error_t verify_blob_internal(uint8_t *p_blob, * @return REFQE3_ERROR_INVALID_PARAMETER One of the inputted parameters in invalid. * @return REFQE3_ECDSABLOB_ERROR There is a problem with the inputted blob format of unsealing. * @return REFQE3_ERROR_UNEXPECTED There is a problem retrieving the current platform TCB or resealing of the BLOB. - * @return REFQE3_ECDSABLOB_ERROR There is a problem with the inputted blob format of unsealing. */ uint32_t verify_blob(uint8_t *p_blob, uint32_t blob_size, @@ -1167,12 +1080,6 @@ uint32_t gen_att_key(uint8_t *p_blob, goto ret_point; } - // Add QE_ID to the ECDSA Blob - ret = get_qe_id_internal(&plaintext_data.qe3_id); - if (REFQE3_SUCCESS != ret) { - goto ret_point; - } - plaintext_data.seal_blob_type = SGX_QL_SEAL_ECDSA_KEY_BLOB; plaintext_data.ecdsa_key_version = SGX_QL_ECDSA_KEY_BLOB_VERSION_0; // Call sgx_seal_data to generate the ECDSA Blob with the updated information @@ -1320,7 +1227,7 @@ uint32_t store_cert_data(ref_plaintext_ecdsa_data_sdk_t *p_plaintext_data, } // Compare the ECDSA_ID passed in matches the value in the existing ECDSA Blob. This should catch keys that haven't been generated before storing - if (0 != memcmp(&local_plaintext_data.ecdsa_id, &p_plaintext_data->qe3_report.body.report_data, sizeof(local_plaintext_data.ecdsa_id))) { //ECDSA_ID is the first 32bytes or REPORT.ReportData + if (0 != memcmp(&local_plaintext_data.ecdsa_id, &p_plaintext_data->qe_report.body.report_data, sizeof(local_plaintext_data.ecdsa_id))) { //ECDSA_ID is the first 32bytes or REPORT.ReportData ret = REFQE3_ERROR_INVALID_PARAMETER; goto ret_point; } @@ -1341,7 +1248,7 @@ uint32_t store_cert_data(ref_plaintext_ecdsa_data_sdk_t *p_plaintext_data, /* Store the current QE PSVN with the blob to indicate what the TCB was when sealed. */ memcpy(&local_plaintext_data.seal_cpu_svn, &report.body.cpu_svn, sizeof(local_plaintext_data.seal_cpu_svn)); - local_plaintext_data.seal_qe3_isv_svn = report.body.isv_svn; + local_plaintext_data.seal_qe_isv_svn = report.body.isv_svn; // For recertification, the PPID does not change. No need to process the PPID information again since it is // unchanged from the previous certification. @@ -1405,7 +1312,7 @@ uint32_t store_cert_data(ref_plaintext_ecdsa_data_sdk_t *p_plaintext_data, } } - local_plaintext_data.cert_qe3_isv_svn = report.body.isv_svn; + local_plaintext_data.cert_qe_isv_svn = report.body.isv_svn; // Copy in the PCE identity used to certify the ECDSA Attestation key memcpy(&local_plaintext_data.cert_cpu_svn, &p_plaintext_data->cert_cpu_svn, sizeof(local_plaintext_data.cert_cpu_svn)); @@ -1414,13 +1321,14 @@ uint32_t store_cert_data(ref_plaintext_ecdsa_data_sdk_t *p_plaintext_data, // Re-copy in the old certification data local_plaintext_data.signature_scheme = p_plaintext_data->signature_scheme; - memcpy(&local_plaintext_data.qe3_report, &p_plaintext_data->qe3_report, sizeof(local_plaintext_data.qe3_report)); - memcpy(&local_plaintext_data.qe3_report_cert_key_sig, &p_plaintext_data->qe3_report_cert_key_sig, sizeof(local_plaintext_data.qe3_report_cert_key_sig)); + memcpy(&local_plaintext_data.qe_report, &p_plaintext_data->qe_report, sizeof(local_plaintext_data.qe_report)); + memcpy(&local_plaintext_data.qe_report_cert_key_sig, &p_plaintext_data->qe_report_cert_key_sig, sizeof(local_plaintext_data.qe_report_cert_key_sig)); local_plaintext_data.certification_key_type = p_plaintext_data->certification_key_type; memcpy_s(&local_plaintext_data.pce_target_info, sizeof(local_plaintext_data.pce_target_info), &p_plaintext_data->pce_target_info, sizeof(p_plaintext_data->pce_target_info)); memcpy_s(&local_plaintext_data.raw_cpu_svn, sizeof(local_plaintext_data.raw_cpu_svn), &p_plaintext_data->raw_cpu_svn, sizeof(p_plaintext_data->raw_cpu_svn)); local_plaintext_data.raw_pce_info.pce_isv_svn = p_plaintext_data->raw_pce_info.pce_isv_svn; local_plaintext_data.raw_pce_info.pce_id = p_plaintext_data->raw_pce_info.pce_id; + memcpy_s(&local_plaintext_data.qe_id, sizeof(local_plaintext_data.qe_id), &p_plaintext_data->qe_id, sizeof(p_plaintext_data->qe_id)); // Call sgx_seal_data to generate the ECDSA Blob with the updated information sgx_status = sgx_seal_data(sizeof(local_plaintext_data), @@ -1540,7 +1448,6 @@ uint32_t gen_quote(uint8_t *p_blob, sgx_ql_ppid_rsa3072_encrypted_cert_info_t *p_cert_encrypted_ppid_info_data; sgx_sha_state_handle_t sha_quote_context = NULL; sgx_report_data_t qe_report_data; - sgx_key_128bit_t qe_id = { 0 }; sgx_ec256_public_t le_att_pub_key; uint8_t verify_result = SGX_EC_INVALID_SIGNATURE; @@ -1667,7 +1574,7 @@ uint32_t gen_quote(uint8_t *p_blob, } // Verify sizeof header.userdata is large enough - ref_static_assert(sizeof(qe_id) <= sizeof(p_quote->header.user_data)); + ref_static_assert(sizeof(plaintext.qe_id) <= sizeof(p_quote->header.user_data)); // Clear out the quote buffer sgx_lfence(); @@ -1689,12 +1596,7 @@ uint32_t gen_quote(uint8_t *p_blob, p_quote->header.att_key_type = SGX_QL_ALG_ECDSA_P256; p_quote->header.pce_svn = pce_isvsvn; // Both are little endian // Sizes of user_data and qe_id were checked above. If here, then sizes are OK without overflow. - ///todo: Verify that the QE_ID matches the value in the blob. - ret = get_qe_id_internal(&qe_id); - if (REFQE3_SUCCESS != ret) { - goto ret_point; - } - memcpy(&p_quote->header.user_data, &qe_id, sizeof(qe_id)); + memcpy(&p_quote->header.user_data, &plaintext.qe_id, sizeof(plaintext.qe_id)); // Copy in Intel's Vender ID memcpy(p_quote->header.vendor_id, g_vendor_id, 16); // Copy the incoming report into Quote body. @@ -1778,10 +1680,10 @@ uint32_t gen_quote(uint8_t *p_blob, memcpy(p_quote_sig->attest_pub_key, &plaintext.ecdsa_att_public_key, sizeof(p_quote_sig->attest_pub_key)); // Add the QE Report to the Quote sig data (the qe report when it was signed by the PCE!). - memcpy(&p_quote_sig->qe3_report, &plaintext.qe3_report.body, sizeof(p_quote_sig->qe3_report)); + memcpy(&p_quote_sig->qe_report, &plaintext.qe_report.body, sizeof(p_quote_sig->qe_report)); // Add the PCE signature - memcpy(p_quote_sig->qe3_report_sig, &plaintext.qe3_report_cert_key_sig, sizeof(p_quote_sig->qe3_report_sig)); + memcpy(p_quote_sig->qe_report_sig, &plaintext.qe_report_cert_key_sig, sizeof(p_quote_sig->qe_report_sig)); // Copy in the Authentication Data if (0 != p_auth_data->size) { diff --git a/QuoteGeneration/quote_wrapper/quote/enclave/win/config.xml b/QuoteGeneration/quote_wrapper/quote/enclave/win/config.xml index bd890737..a243d6db 100644 --- a/QuoteGeneration/quote_wrapper/quote/enclave/win/config.xml +++ b/QuoteGeneration/quote_wrapper/quote/enclave/win/config.xml @@ -2,7 +2,7 @@ 1 1 0x1 - 7 + 8 1 1 0 diff --git a/QuoteGeneration/quote_wrapper/quote/id_enclave/linux/config.xml b/QuoteGeneration/quote_wrapper/quote/id_enclave/linux/config.xml index b2780c0e..bc4a86a7 100644 --- a/QuoteGeneration/quote_wrapper/quote/id_enclave/linux/config.xml +++ b/QuoteGeneration/quote_wrapper/quote/id_enclave/linux/config.xml @@ -2,7 +2,7 @@ 1 1 0x1 - 2 + 3 1 1 0 diff --git a/QuoteGeneration/quote_wrapper/quote/id_enclave/win/config.xml b/QuoteGeneration/quote_wrapper/quote/id_enclave/win/config.xml new file mode 100644 index 00000000..45e81438 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/quote/id_enclave/win/config.xml @@ -0,0 +1,12 @@ + + 1 + 1 + 0x1 + 3 + 1 + 1 + 0 + 0x1000 + 0x1000 + 1 + diff --git a/QuoteGeneration/quote_wrapper/quote/id_enclave/win/id_enclave.rc b/QuoteGeneration/quote_wrapper/quote/id_enclave/win/id_enclave.rc new file mode 100644 index 0000000000000000000000000000000000000000..bde3efe0932bb1606731afc60429c01ef8170c35 GIT binary patch literal 4618 zcmdUzTW=CU6vxlAiQi$RFE*N9eetmuibM*eTw;?Zq)Ju)iJU6Xj=TJKQp4uUl2G2piY*@c5SQo~`YQ!ZU<7=Wc zu}}CvCpwBl7q8#(TgU4o{8T)u(D%6W8ToS#F3I|r#kx5D>ld+Lk*|(>Vx>yD#_z|~ zMu>cnyIy0kE+M;P`fud=@+00pC+A~kp$|Je`L3MVW=R#yGCg(c;`J=*tsxQ*?1ZZF zJ=LLqdUV$jng>)@gG+M1aV1Mvc9C&L4G&n=Wc{Yo+JM@G+GDJ_It>)hS3`E4UVURP zk==ps5Q<-u=NRzTceSqo`LetM)E|93d5hNL{|*bvyFAo{M%}x_tei7(?+@|4=8!_% z$>J(U-V57Vps(`hBc@ftmB;8PL;MPLn#Y@pU4TCqRJ6zb)XHTR?LX3@RrPE*JRZ_% z!We%EBg*imSZyIk>xC*=Yh%08q2adgL`0~qc!Os(x+DkNUVYi z9k*jQnJZ2wbft7<-vqjJC2-V1fohH?PxriSo{?EQ^UqnaHj)a zBy_?T+b8P{7X$g8B8?ES3QG0ptYwnCgx%lkuRw1_>tX(#48Qg^X^mI3u+PhWg^jvi zE!L#5>2d~YW1;8UE4=p@8*>HC<#-`PZV_EYrh)}?YDA~G8}f9EXIErvjIEPg2bW6= zofJ!zCp-4qdGwy&7z@%hWq20ehOti`buLm2D%h>_(;dh&wy#v*C9^B&+Ha2V>y&6| zzd7eVU{+nkJV=YjSa$IL7>U`lukRnPqvE2Yy?SKd(OIW{w5R*i+kvat1e$i)a<790 z<+|gZ^*VJMJ0Qnfxhwu!`jkWZyW+%FP{FQ9a#ozMW_C z(k3Hk=&Erx=&q2H)R4^eG}H*BWIqA zRg6BX*H + + + + CVE-2020-0551-Load-Release + x64 + + + CVE-2020-0551-CF-Release + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + 15.0 + {BE9799F0-84D2-4107-A5DB-A54E22F81F31} + Win32Proj + id_enclave + 10.0.18362.0 + id_enclave + + + + DynamicLibrary + true + v142 + Unicode + + + DynamicLibrary + false + v142 + true + Unicode + + + DynamicLibrary + true + v142 + Unicode + + + DynamicLibrary + false + v142 + true + Unicode + + + DynamicLibrary + false + v142 + true + Unicode + + + DynamicLibrary + false + v142 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + false + + + false + + + false + + + false + + + false + + + + NotUsing + Level4 + MaxSpeed + true + false + true + NDEBUG;ID_ENCLAVE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + $(SGXSDKInstallPath)\include;$(SGXSDKInstallPath)\include\tlibc;$(SGXSDKInstallPath)\include\libc++;.;..\..\..\inc;..\..\..\..\common\inc\internal;..\..\..\..\common\inc\internal\win;..\..\..\common\inc;..\..\..\..\pce_wrapper\inc;.. + true + true + true + false + false + + + Windows + true + true + true + $(SGXSDKInstallPath)\bin\$(Platform)\Release;$(SolutionDir)$(Platform)\Release\;..\..\..\..\$(Platform)\Release\ + true + sgx_tstdc.lib;sgx_tservice.lib;sgx_trts.lib;sgx_tcxx.lib;sgx_tcrypto.lib + true + true + true + /PDBALTPATH:id_enclave.pdb %(AdditionalOptions) + + + ..\..\..\common\inc\internal + + + + + + + + + NotUsing + Level4 + MaxSpeed + true + false + true + NDEBUG;ID_ENCLAVE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + $(SGXSDKInstallPath)\include;$(SGXSDKInstallPath)\include\tlibc;$(SGXSDKInstallPath)\include\libc++;.;..\..\..\inc;..\..\..\..\common\inc\internal;..\..\..\..\common\inc\internal\win;..\..\..\common\inc;..\..\..\..\pce_wrapper\inc;.. + true + true + true + false + false + /Qspectre-load-cf + + + Windows + true + true + true + $(SGXSDKInstallPath)\bin\$(Platform)\CVE-2020-0551-CF-Release;$(SolutionDir)$(Platform)\CVE-2020-0551-CF-Release\;..\..\..\..\$(Platform)\CVE-2020-0551-CF-Release\ + true + sgx_tstdc.lib;sgx_tservice.lib;sgx_trts.lib;sgx_tcxx.lib;sgx_tcrypto.lib + true + true + true + /PDBALTPATH:id_enclave.pdb %(AdditionalOptions) + + + ..\..\..\common\inc\internal + + + + + + + + + NotUsing + Level4 + MaxSpeed + true + false + true + NDEBUG;ID_ENCLAVE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + $(SGXSDKInstallPath)\include;$(SGXSDKInstallPath)\include\tlibc;$(SGXSDKInstallPath)\include\libc++;.;..\..\..\inc;..\..\..\..\common\inc\internal;..\..\..\..\common\inc\internal\win;..\..\..\common\inc;..\..\..\..\pce_wrapper\inc;.. + true + true + true + false + false + /Qspectre-load + + + Windows + true + true + true + $(SGXSDKInstallPath)\bin\$(Platform)\CVE-2020-0551-Load-Release;$(SolutionDir)$(Platform)\CVE-2020-0551-Load-Release\;..\..\..\..\$(Platform)\CVE-2020-0551-Load-Release\ + true + sgx_tstdc.lib;sgx_tservice.lib;sgx_trts.lib;sgx_tcxx.lib;sgx_tcrypto.lib + true + true + true + /PDBALTPATH:id_enclave.pdb %(AdditionalOptions) + + + ..\..\..\common\inc\internal + + + + + + + + + NotUsing + Level4 + Disabled + true + WIN32;_DEBUG;ID_ENCLAVE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + $(SGXSDKInstallPath)\include;$(SGXSDKInstallPath)\include\tlibc;$(SGXSDKInstallPath)\include\libc++;.;..\..\..\inc;..\..\..\..\common\inc\internal;..\..\..\..\common\inc\internal\win;..\..\..\common\inc;..\..\..\..\pce_wrapper\inc;.. + ProgramDatabase + false + true + true + true + false + Default + true + false + + + Windows + true + $(SGXSDKInstallPath)\bin\$(Platform)\Debug;$(SolutionDir)Debug\;..\..\..\..\Debug + true + sgx_tstdc.lib;sgx_tservice.lib;sgx_trts.lib;sgx_tcxx.lib;sgx_tcrypto.lib + true + true + true + + + ..\..\..\common\inc\internal + + + + + + + + + NotUsing + Level4 + Disabled + true + _DEBUG;ID_ENCLAVE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + $(SGXSDKInstallPath)\include;$(SGXSDKInstallPath)\include\tlibc;$(SGXSDKInstallPath)\include\libc++;.;..\..\..\inc;..\..\..\..\common\inc\internal;..\..\..\..\common\inc\internal\win;..\..\..\common\inc;..\..\..\..\pce_wrapper\inc;.. + ProgramDatabase + false + true + true + true + false + Default + true + false + + + Windows + true + $(SGXSDKInstallPath)\bin\$(Platform)\Debug;$(SolutionDir)$(Platform)\Debug\;..\..\..\..\$(Platform)\Debug\ + true + sgx_tstdc.lib;sgx_tservice.lib;sgx_trts.lib;sgx_tcxx.lib;sgx_tcrypto.lib + true + true + true + /PDBALTPATH:id_enclave.pdb %(AdditionalOptions) + + + + + + + ..\..\..\common\inc\internal + + + + + NotUsing + Level4 + MaxSpeed + true + false + true + WIN32;NDEBUG;ID_ENCLAVE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + $(SGXSDKInstallPath)\include;$(SGXSDKInstallPath)\include\tlibc;$(SGXSDKInstallPath)\include\libc++;.;..\..\..\inc;..\..\..\..\common\inc\internal;..\..\..\..\common\inc\internal\win;..\..\..\common\inc;..\..\..\..\pce_wrapper\inc;.. + true + true + true + false + false + + + Windows + true + true + true + $(SGXSDKInstallPath)\bin\$(Platform)\Release;$(SolutionDir)Release\;..\..\..\..\Release\ + true + sgx_tstdc.lib;sgx_tservice.lib;sgx_trts.lib;sgx_tcxx.lib;sgx_tcrypto.lib + true + true + + + ..\..\..\common\inc\internal + + + + + + + + + + + + "$(SGXSDKInstallPath)bin\win32\release\sgx_edger8r.exe" --trusted "%(FullPath)" --search-path "$(SGXSDKInstallPath)include" + Creating proxy/bridge routines + %(Filename)_t.h;%(Filename)_t.c;%(Outputs) + config.xml;%(AdditionalInputs) + "$(SGXSDKInstallPath)bin\win32\release\sgx_edger8r.exe" --trusted "%(FullPath)" --search-path "$(SGXSDKInstallPath)include" + Creating proxy/bridge routines + %(Filename)_t.h;%(Filename)_t.c;%(Outputs) + config.xml;%(AdditionalInputs) + "$(SGXSDKInstallPath)bin\win32\release\sgx_edger8r.exe" --trusted "%(FullPath)" --search-path "$(SGXSDKInstallPath)include" + Creating proxy/bridge routines + %(Filename)_t.h;%(Filename)_t.c;%(Outputs) + config_debug.xml;%(AdditionalInputs) + "$(SGXSDKInstallPath)bin\win32\release\sgx_edger8r.exe" --trusted "%(FullPath)" --search-path "$(SGXSDKInstallPath)include" + Creating proxy/bridge routines + %(Filename)_t.h;%(Filename)_t.c;%(Outputs) + config_debug.xml;%(AdditionalInputs) + "$(SGXSDKInstallPath)bin\win32\release\sgx_edger8r.exe" --trusted "%(FullPath)" --search-path "$(SGXSDKInstallPath)include" + Creating proxy/bridge routines + %(Filename)_t.h;%(Filename)_t.c;%(Outputs) + config.xml;%(AdditionalInputs) + "$(SGXSDKInstallPath)bin\win32\release\sgx_edger8r.exe" --trusted "%(FullPath)" --search-path "$(SGXSDKInstallPath)include" + Creating proxy/bridge routines + %(Filename)_t.h;%(Filename)_t.c;%(Outputs) + config.xml;%(AdditionalInputs) + + + + + ..\..\..\..\common\inc\internal + ..\..\..\..\common\inc\internal + ..\..\..\..\common\inc\internal + ..\..\..\..\common\inc\internal + ..\..\..\..\common\inc\internal + ..\..\..\..\common\inc\internal + + + + + + \ No newline at end of file diff --git a/QuoteGeneration/quote_wrapper/quote/id_enclave/win/id_enclave.vcxproj.filters b/QuoteGeneration/quote_wrapper/quote/id_enclave/win/id_enclave.vcxproj.filters new file mode 100644 index 00000000..28cf0acf --- /dev/null +++ b/QuoteGeneration/quote_wrapper/quote/id_enclave/win/id_enclave.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + + + Resource Files + + + + + + \ No newline at end of file diff --git a/QuoteGeneration/quote_wrapper/quote/id_enclave/win/resource.h b/QuoteGeneration/quote_wrapper/quote/id_enclave/win/resource.h new file mode 100644 index 00000000..45961b57 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/quote/id_enclave/win/resource.h @@ -0,0 +1,15 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by qe3.rc +// + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/QuoteGeneration/quote_wrapper/quote/id_enclave/win/targetver.h b/QuoteGeneration/quote_wrapper/quote/id_enclave/win/targetver.h new file mode 100644 index 00000000..87c0086d --- /dev/null +++ b/QuoteGeneration/quote_wrapper/quote/id_enclave/win/targetver.h @@ -0,0 +1,8 @@ +#pragma once + +// Including SDKDDKVer.h defines the highest available Windows platform. + +// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and +// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. + +#include diff --git a/QuoteGeneration/quote_wrapper/quote/qe_logic.cpp b/QuoteGeneration/quote_wrapper/quote/qe_logic.cpp index e7f32db2..658ecc45 100644 --- a/QuoteGeneration/quote_wrapper/quote/qe_logic.cpp +++ b/QuoteGeneration/quote_wrapper/quote/qe_logic.cpp @@ -62,8 +62,8 @@ #include "se_trace.h" #include "qe3_u.h" +#include "id_enclave_u.h" #ifndef _MSC_VER - #include "id_enclave_u.h" #define QE3_ENCLAVE_NAME "libsgx_qe3.signed.so.1" #define QE3_ENCLAVE_NAME_LEGACY "libsgx_qe3.signed.so" #define ID_ENCLAVE_NAME "libsgx_id_enclave.signed.so.1" @@ -73,6 +73,7 @@ #define _T(x) (x) #else #define QE3_ENCLAVE_NAME _T("qe3.signed.dll") + #define ID_ENCLAVE_NAME _T("id_enclave.signed.dll") #define SGX_QL_QUOTE_CONFIG_LIB_FILE_NAME "dcap_quoteprov.dll" #endif #define ECDSA_BLOB_LABEL "ecdsa_data.blob" @@ -527,7 +528,7 @@ static quote3_error_t get_platform_quote_cert_data(sgx_ql_pck_cert_id_t *p_pck_c // use noinline here to aovid __builtin_return_address(0) returning an address outside libsgx_qe3_logic.so static bool #ifndef _MSC_VER -__attribute__ ((noinline)) +__attribute__ ((noinline)) #endif get_qe_path(const TCHAR *p_file_name, TCHAR *p_file_path, @@ -758,7 +759,6 @@ void unload_qe() } } -#ifndef _MSC_VER static quote3_error_t load_id_enclave(sgx_enclave_id_t* p_qe_eid) { quote3_error_t ret_val = SGX_QL_SUCCESS; @@ -831,6 +831,9 @@ static quote3_error_t load_id_enclave_get_id(sgx_key_128bit_t* p_id) goto CLEANUP; } + SE_TRACE(SE_TRACE_DEBUG, "QE_ID:\n"); + PRINT_BYTE_ARRAY(SE_TRACE_DEBUG, p_id, sizeof(sgx_key_128bit_t)); + CLEANUP: if (0 != id_enclave_eid) { sgx_destroy_enclave(id_enclave_eid); @@ -838,7 +841,6 @@ static quote3_error_t load_id_enclave_get_id(sgx_key_128bit_t* p_id) return ret_val; } -#endif /* This function output encrypted PPID which is encrypted with backend server's pub key * @@ -1150,7 +1152,7 @@ static quote3_error_t certify_key(uint8_t *p_ecdsa_blob, SE_TRACE(SE_TRACE_DEBUG, "\npce_cert_psvn.isv_svn = 0x%04x.\n", p_plaintext_data->cert_pce_info.pce_isv_svn); pce_error = sgx_pce_sign_report(&p_plaintext_data->cert_pce_info.pce_isv_svn, &p_plaintext_data->cert_cpu_svn, - &p_plaintext_data->qe3_report, + &p_plaintext_data->qe_report, (uint8_t*)&pce_sig, sizeof(pce_sig), &sig_out_size); @@ -1161,7 +1163,7 @@ static quote3_error_t certify_key(uint8_t *p_ecdsa_blob, } // Update the signature data and the report that was signed. - if(0 != memcpy_s(&p_plaintext_data->qe3_report_cert_key_sig, sizeof(p_plaintext_data->qe3_report_cert_key_sig), &pce_sig, sizeof(pce_sig))) { + if(0 != memcpy_s(&p_plaintext_data->qe_report_cert_key_sig, sizeof(p_plaintext_data->qe_report_cert_key_sig), &pce_sig, sizeof(pce_sig))) { refqt_ret = SGX_QL_ERROR_UNEXPECTED; goto CLEANUP; } @@ -1438,7 +1440,7 @@ quote3_error_t ECDSA256Quote::ecdsa_init_quote(sgx_ql_cert_key_type_t certificat } //QE's TCB has increased, (a decrease would cause a blob verification failure) then catch it here and generate a //new key - if((qe3_report_body.isv_svn > p_seal_data_plain_text->cert_qe3_isv_svn) || + if((qe3_report_body.isv_svn > p_seal_data_plain_text->cert_qe_isv_svn) || (0 != memcmp(&p_seal_data_plain_text->raw_cpu_svn, &qe3_report_body.cpu_svn, sizeof(p_seal_data_plain_text->raw_cpu_svn)))) { SE_TRACE(SE_TRACE_ERROR, "Platform TCB has increased, Requested certificaiton_key_type doesn't match existing blob's type, Gen and certify new key.\n"); gen_new_key = true; @@ -1464,7 +1466,6 @@ quote3_error_t ECDSA256Quote::ecdsa_init_quote(sgx_ql_cert_key_type_t certificat goto CLEANUP; } -#ifndef _MSC_VER if (NULL == g_ql_global_data.m_qe_id) { @@ -1480,7 +1481,6 @@ quote3_error_t ECDSA256Quote::ecdsa_init_quote(sgx_ql_cert_key_type_t certificat goto CLEANUP; } } -#endif // Determine if the raw-TCB has changed since the blob was last generated or the platform library // has a new TCBm. If the raw-TCB was downgraded, the ECDSA blob will not be accessible and fail @@ -1496,13 +1496,8 @@ quote3_error_t ECDSA256Quote::ecdsa_init_quote(sgx_ql_cert_key_type_t certificat // sgx_ql_get_quote_config(). If it is not available or the API returns SGX_QL_NO_PLATFORM_CERT_DATA, then use // the platform's raw TCB to certify the key. cert_data_size = 0; -#ifndef _MSC_VER pck_cert_id.p_qe3_id = (uint8_t*)g_ql_global_data.m_qe_id; pck_cert_id.qe3_id_size = sizeof(*g_ql_global_data.m_qe_id); -#else - pck_cert_id.p_qe3_id = (uint8_t*)&p_seal_data_plain_text->qe3_id; - pck_cert_id.qe3_id_size = sizeof(p_seal_data_plain_text->qe3_id); -#endif pck_cert_id.p_platform_cpu_svn = &qe3_report_body.cpu_svn; pck_cert_id.p_platform_pce_isv_svn = &pce_isv_svn; pck_cert_id.p_encrypted_ppid = encrypted_ppid; @@ -1543,18 +1538,18 @@ quote3_error_t ECDSA256Quote::ecdsa_init_quote(sgx_ql_cert_key_type_t certificat plaintext_data.raw_pce_info.pce_isv_svn = pce_isv_svn; plaintext_data.raw_pce_info.pce_id = p_seal_data_plain_text->cert_pce_info.pce_id; // For recertification, pull out out the certification data from the blob that doesn't need to change. - if(0 != memcpy_s(&plaintext_data.qe3_report, sizeof(plaintext_data.qe3_report), - &p_seal_data_plain_text->qe3_report, sizeof(p_seal_data_plain_text->qe3_report))) { + if(0 != memcpy_s(&plaintext_data.qe_report, sizeof(plaintext_data.qe_report), + &p_seal_data_plain_text->qe_report, sizeof(p_seal_data_plain_text->qe_report))) { refqt_ret = SGX_QL_ERROR_UNEXPECTED; goto CLEANUP; } -#ifndef _MSC_VER - if (0 != memcpy_s(&plaintext_data.qe3_id, sizeof(plaintext_data.qe3_id), + + if (0 != memcpy_s(&plaintext_data.qe_id, sizeof(plaintext_data.qe_id), g_ql_global_data.m_qe_id, sizeof(*g_ql_global_data.m_qe_id))) { refqt_ret = SGX_QL_ERROR_UNEXPECTED; goto CLEANUP; } -#endif + plaintext_data.signature_scheme = p_seal_data_plain_text->signature_scheme; ///todo: Not likely that the signature scheme changed but may want to re-get from PCE. It is just more involved. if(0 != memcpy_s(&plaintext_data.pce_target_info, sizeof(plaintext_data.pce_target_info), &pce_target_info, sizeof(pce_target_info))) { @@ -1596,18 +1591,18 @@ quote3_error_t ECDSA256Quote::ecdsa_init_quote(sgx_ql_cert_key_type_t certificat plaintext_data.raw_pce_info.pce_isv_svn = pce_isv_svn; plaintext_data.raw_pce_info.pce_id = p_seal_data_plain_text->cert_pce_info.pce_id; // For recertification, pull out out the certification data from the blob that doesn't need to change. - if(0 != memcpy_s(&plaintext_data.qe3_report, sizeof(plaintext_data.qe3_report), - &p_seal_data_plain_text->qe3_report, sizeof(p_seal_data_plain_text->qe3_report))){ + if(0 != memcpy_s(&plaintext_data.qe_report, sizeof(plaintext_data.qe_report), + &p_seal_data_plain_text->qe_report, sizeof(p_seal_data_plain_text->qe_report))){ refqt_ret = SGX_QL_ERROR_UNEXPECTED; goto CLEANUP; } -#ifndef _MSC_VER - if (0 != memcpy_s(&plaintext_data.qe3_id, sizeof(plaintext_data.qe3_id), + + if (0 != memcpy_s(&plaintext_data.qe_id, sizeof(plaintext_data.qe_id), g_ql_global_data.m_qe_id, sizeof(*g_ql_global_data.m_qe_id))) { refqt_ret = SGX_QL_ERROR_UNEXPECTED; goto CLEANUP; } -#endif + plaintext_data.signature_scheme = p_seal_data_plain_text->signature_scheme; ///todo: Not likely that the signature scheme changed but may want to re-get from PCE. It is just more involved. if(0 != memcpy_s(&plaintext_data.pce_target_info, sizeof(plaintext_data.pce_target_info), &pce_target_info, sizeof(pce_target_info))) { @@ -1677,7 +1672,7 @@ quote3_error_t ECDSA256Quote::ecdsa_init_quote(sgx_ql_cert_key_type_t certificat refqt_ret = SGX_QL_ERROR_UNEXPECTED; goto CLEANUP; } -#ifndef _MSC_VER + if (NULL == g_ql_global_data.m_qe_id) { @@ -1693,20 +1688,14 @@ quote3_error_t ECDSA256Quote::ecdsa_init_quote(sgx_ql_cert_key_type_t certificat goto CLEANUP; } } -#endif + // Certify the key // Get the certification data from the platform, if available p_sealed_ecdsa = reinterpret_cast(g_ql_global_data.m_ecdsa_blob); - p_seal_data_plain_text = reinterpret_cast(g_ql_global_data.m_ecdsa_blob + sizeof(sgx_sealed_data_t) + p_sealed_ecdsa->plain_text_offset); cert_data_size = 0; memset(&plaintext_data, 0, sizeof(plaintext_data)); -#ifndef _MSC_VER pck_cert_id.p_qe3_id = (uint8_t*)g_ql_global_data.m_qe_id; pck_cert_id.qe3_id_size = sizeof(*g_ql_global_data.m_qe_id); -#else - pck_cert_id.p_qe3_id = (uint8_t*)&p_seal_data_plain_text->qe3_id; - pck_cert_id.qe3_id_size = sizeof(p_seal_data_plain_text->qe3_id); -#endif pck_cert_id.p_platform_cpu_svn = &qe3_report.body.cpu_svn; pck_cert_id.p_platform_pce_isv_svn = &g_ql_global_data.m_pce_info.pce_isv_svn; pck_cert_id.p_encrypted_ppid = encrypted_ppid; @@ -1747,11 +1736,16 @@ quote3_error_t ECDSA256Quote::ecdsa_init_quote(sgx_ql_cert_key_type_t certificat } plaintext_data.raw_pce_info.pce_isv_svn = g_ql_global_data.m_pce_info.pce_isv_svn; plaintext_data.raw_pce_info.pce_id = g_ql_global_data.m_pce_info.pce_id; - if(0 != memcpy_s(&plaintext_data.qe3_report, sizeof(plaintext_data.qe3_report), + if(0 != memcpy_s(&plaintext_data.qe_report, sizeof(plaintext_data.qe_report), &qe3_report, sizeof(qe3_report))) { refqt_ret = SGX_QL_ERROR_UNEXPECTED; goto CLEANUP; } + if (0 != memcpy_s(&plaintext_data.qe_id, sizeof(plaintext_data.qe_id), + g_ql_global_data.m_qe_id, sizeof(*g_ql_global_data.m_qe_id))) { + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } plaintext_data.signature_scheme = PCE_NIST_P256_ECDSA_SHA256; if(0 != memcpy_s(&plaintext_data.pce_target_info, sizeof(plaintext_data.pce_target_info), &pce_target_info, sizeof(pce_target_info))) { @@ -1770,8 +1764,6 @@ quote3_error_t ECDSA256Quote::ecdsa_init_quote(sgx_ql_cert_key_type_t certificat SE_TRACE(SE_TRACE_DEBUG, "Failed to cerify key.\n"); goto CLEANUP; } - SE_TRACE(SE_TRACE_DEBUG, "QE3_ID:\n"); - PRINT_BYTE_ARRAY(SE_TRACE_DEBUG, &p_seal_data_plain_text->qe3_id, sizeof(p_seal_data_plain_text->qe3_id)); SE_TRACE(SE_TRACE_DEBUG, "Generated and certified a new key. ECDSA_ID:\n"); PRINT_BYTE_ARRAY(SE_TRACE_DEBUG, &qe3_report.body.report_data, sizeof(sgx_sha256_hash_t)); @@ -1952,8 +1944,8 @@ quote3_error_t ECDSA256Quote::ecdsa_get_quote_size(sgx_ql_cert_key_type_t certif p_sealed_ecdsa = reinterpret_cast(g_ql_global_data.m_ecdsa_blob); p_seal_data_plain_text = reinterpret_cast(g_ql_global_data.m_ecdsa_blob + sizeof(sgx_sealed_data_t) + p_sealed_ecdsa->plain_text_offset); cert_data_size = 0; - pck_cert_id.p_qe3_id = (uint8_t*)&p_seal_data_plain_text->qe3_id; - pck_cert_id.qe3_id_size = sizeof(p_seal_data_plain_text->qe3_id); + pck_cert_id.p_qe3_id = (uint8_t*)&p_seal_data_plain_text->qe_id; + pck_cert_id.qe3_id_size = sizeof(p_seal_data_plain_text->qe_id); pck_cert_id.p_platform_cpu_svn = &qe3_report_body.cpu_svn; pck_cert_id.p_platform_pce_isv_svn = &pce_isv_svn; pck_cert_id.p_encrypted_ppid = NULL; @@ -2197,8 +2189,8 @@ quote3_error_t ECDSA256Quote::ecdsa_get_quote(const sgx_report_t *p_app_report, p_sealed_ecdsa = reinterpret_cast(g_ql_global_data.m_ecdsa_blob); p_seal_data_plain_text = reinterpret_cast(g_ql_global_data.m_ecdsa_blob + sizeof(sgx_sealed_data_t) + p_sealed_ecdsa->plain_text_offset); cert_data_size = 0; - pck_cert_id.p_qe3_id = (uint8_t*)&p_seal_data_plain_text->qe3_id; - pck_cert_id.qe3_id_size = sizeof(p_seal_data_plain_text->qe3_id); + pck_cert_id.p_qe3_id = (uint8_t*)&p_seal_data_plain_text->qe_id; + pck_cert_id.qe3_id_size = sizeof(p_seal_data_plain_text->qe_id); pck_cert_id.p_platform_cpu_svn = &qe3_report_body.cpu_svn; pck_cert_id.p_platform_pce_isv_svn = &cur_pce_isv_svn; pck_cert_id.p_encrypted_ppid = NULL; @@ -2536,4 +2528,3 @@ quote3_error_t ECDSA256Quote::get_quote(const sgx_report_t *p_app_report, return(ret_val); } - diff --git a/QuoteGeneration/quote_wrapper/quote/win/qe3_core_wrapper_static.vcxproj b/QuoteGeneration/quote_wrapper/quote/win/qe3_core_wrapper_static.vcxproj index 61c754c1..27a1c236 100644 --- a/QuoteGeneration/quote_wrapper/quote/win/qe3_core_wrapper_static.vcxproj +++ b/QuoteGeneration/quote_wrapper/quote/win/qe3_core_wrapper_static.vcxproj @@ -110,7 +110,8 @@ true - "$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\enclave\qe3.edl --search-path ..\..\..\external\sgxssl\Windows\package\include;..\..\..\common\inc --untrusted + "$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\enclave\qe3.edl --search-path ..\..\..\common\inc --untrusted +"$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\id_enclave\id_enclave.edl --search-path ..\..\..\common\inc --untrusted true @@ -143,7 +144,8 @@ true - "$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\enclave\qe3.edl --search-path ..\..\..\external\sgxssl\Windows\package\include;..\..\..\common\inc --untrusted + "$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\enclave\qe3.edl --search-path ..\..\..\common\inc --untrusted +"$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\id_enclave\id_enclave.edl --search-path ..\..\..\common\inc --untrusted sgx_urts.lib;sgx_pce_wrapper_static.lib;%(AdditionalDependencies) @@ -186,7 +188,8 @@ true - "$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\enclave\qe3.edl --search-path ..\..\..\common\inc --untrusted + "$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\enclave\qe3.edl --search-path ..\..\..\common\inc --untrusted +"$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\id_enclave\id_enclave.edl --search-path ..\..\..\common\inc --untrusted @@ -215,7 +218,8 @@ true - "$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\enclave\qe3.edl --search-path ..\..\..\common\inc --untrusted + "$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\enclave\qe3.edl --search-path ..\..\..\common\inc --untrusted +"$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\id_enclave\id_enclave.edl --search-path ..\..\..\common\inc --untrusted sgx_urts.lib;sgx_pce_wrapper_static.lib;%(AdditionalDependencies) @@ -227,11 +231,13 @@ + + @@ -265,6 +271,9 @@ $(ProjectDir)%(Filename)_u.h;$(ProjectDir)%(Filename)_u.c;%(Outputs) + + + diff --git a/QuoteGeneration/quote_wrapper/quote/win/qe3_core_wrapper_static.vcxproj.filters b/QuoteGeneration/quote_wrapper/quote/win/qe3_core_wrapper_static.vcxproj.filters index 5fcbc917..a155441f 100644 --- a/QuoteGeneration/quote_wrapper/quote/win/qe3_core_wrapper_static.vcxproj.filters +++ b/QuoteGeneration/quote_wrapper/quote/win/qe3_core_wrapper_static.vcxproj.filters @@ -26,6 +26,9 @@ Header Files + + Generated Files + @@ -37,10 +40,18 @@ Generated Files + + Generated Files + Source Files + + + Source Files + + \ No newline at end of file diff --git a/QuoteGeneration/quote_wrapper/tdx_attest/Makefile.sample b/QuoteGeneration/quote_wrapper/tdx_attest/Makefile.sample new file mode 100644 index 00000000..6d40b0f4 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_attest/Makefile.sample @@ -0,0 +1,42 @@ +# +# Copyright (C) 2011-2019 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# +ifdef DEBUG + CFLAGS = -O0 -ggdb +else + CFLAGS = -O2 +endif + +test_tdx_attest: test_tdx_attest.c + $(CC) $(CFLAGS) $^ -l:libtdx_attest.so.1 -o $@ + +clean: + rm -rf ./test_tdx_attest + diff --git a/QuoteGeneration/quote_wrapper/tdx_attest/linux/Makefile b/QuoteGeneration/quote_wrapper/tdx_attest/linux/Makefile new file mode 100644 index 00000000..b06d426f --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_attest/linux/Makefile @@ -0,0 +1,85 @@ +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + +######## Basic Settings ######## +TOP_DIR = ../../.. +include $(TOP_DIR)/buildenv.mk + +######## Tdx_Attest Settings ######## +Protobuf_CFLAGS = `pkg-config --cflags libprotobuf-c` +Protobuf_LFLAGS = `pkg-config --libs libprotobuf-c` + +Tdx_Attest_C_Files := ../tdx_attest.c + +Tdx_Attest_Include_Paths := -I./ + +Tdx_Attest_C_Flags := $(CFLAGS) -g -MMD -fPIC -Wno-attributes $(Tdx_Attest_Include_Paths) + +LDUFLAGS := $(COMMON_LDFLAGS) +LDUFLAGS += -Wl,--version-script=tdx_attest.lds -Wl,--gc-sections -g + + +Tdx_Attest_C_Objects := $(Tdx_Attest_C_Files:.c=.o) +Tdx_Attest_C_Depends := $(Tdx_Attest_C_Files:.c=.d) + +Tdx_Attest_Name := libtdx_attest.so +-include $(Tdx_Attest_C_Depends) + +.PHONY: all test_app +all: install_lib + +install_lib: $(Tdx_Attest_Name) | $(BUILD_DIR) + @$(CP) $(Tdx_Attest_Name) $| + +######## Tdx_Attest Objects ######## +$(Tdx_Attest_Name): qgs.message.pb-c.o $(Tdx_Attest_C_Objects) + $(CC) $^ -shared -shared -Wl,-soname=$@.$(SGX_MAJOR_VER) $(Protobuf_LFLAGS) $(LDUFLAGS) -o $@ + @echo "LINK => $@" + +$(Tdx_Attest_C_Objects): %.o: qgs.message.pb-c.o %.c + $(CC) $(Tdx_Attest_C_Flags) -c $(Tdx_Attest_C_Files) -o $@ + +qgs.message.pb-c.o: ../../qgs/qgs.message.proto + protoc --c_out=. --proto_path=../../ ../../qgs/qgs.message.proto + $(CC) -c qgs/qgs.message.pb-c.c -I. $(Protobuf_CFLAGS) $(Tdx_Attest_C_Flags) + +test_app: $(Tdx_Attest_Name) ../test_tdx_attest.c ../tdx_attest.h + $(CC) -I. -L./linux ../test_tdx_attest.c -L. -ltdx_attest -g -o $@ + +$(BUILD_DIR): + @$(MKDIR) $@ + +.PHONY: clean + +clean: + @rm -rf $(Tdx_Attest_Name) $(Tdx_Attest_C_Objects) $(Tdx_Attest_C_Depends) qgs.message.pb-c.o ./qgs test_app + + diff --git a/QuoteGeneration/quote_wrapper/tdx_attest/linux/tdx_attest.lds b/QuoteGeneration/quote_wrapper/tdx_attest/linux/tdx_attest.lds new file mode 100644 index 00000000..7e5958a0 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_attest/linux/tdx_attest.lds @@ -0,0 +1,10 @@ +{ +global: + tdx_att_get_quote; + tdx_att_free_quote; + tdx_att_get_report; + tdx_att_extend; + tdx_att_get_supported_att_key_ids; +local: + *; +}; diff --git a/QuoteGeneration/quote_wrapper/tdx_attest/tdx_attest.c b/QuoteGeneration/quote_wrapper/tdx_attest/tdx_attest.c new file mode 100644 index 00000000..24183b55 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_attest/tdx_attest.c @@ -0,0 +1,494 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "qgs/qgs.message.pb-c.h" +#include +#include +#include "tdx_attest.h" + +#include +#include +#include +#include +#include +#include +#include +#include +// For strtoul +#include +#include +#include + +#define TDX_ATTEST_DEV_PATH "/dev/tdx-attest" +#define CFG_FILE_PATH "/etc/tdx-attest.conf" +//TODO: Should include kernel header +#define TDX_CMD_GET_TDREPORT _IOWR('T', 0x01, __u64) +#define TDX_CMD_EXTEND_RTMR _IOR('T', 0x04, __u64) +#define TDX_CMD_GET_EXTEND_SIZE _IOR('T', 0x05, __u64) +#define TDX_CMD_GEN_QUOTE _IOR('T', 0x02, __u64) + +#ifdef DEBUG +#define TDX_TRACE \ + do { \ + fprintf(stderr, "\n[%s:%d] ", __FILE__, __LINE__); \ + perror(NULL); \ + }while(0) +#else +#define TDX_TRACE +#endif + +#pragma pack(push, 1) +// It's a 4*4K byte structure +typedef struct _get_quote_blob_t +{ + // Following fields are used for transport layer, LE + uint64_t version; + uint64_t status; + uint32_t in_len; + uint32_t out_len; + // Following fields are consumed by QGS and this library + uint8_t trans_len[4]; // BE + uint8_t p_buf[4 * 4 * 1024 - 28]; +} get_quote_blob_t; + +typedef struct _get_quote_ioctl_arg_t +{ + void *p_blob; + size_t len; +} get_quote_ioctl_arg_t; +#pragma pack(pop) + +static const unsigned HEADER_SIZE = 4; +static const tdx_uuid_t g_intel_tdqe_uuid = {TDX_SGX_ECDSA_ATTESTATION_ID}; + +static unsigned int get_vsock_port(void) +{ + FILE *p_config_fd = NULL; + char *p_line = NULL; + char *p = NULL; + size_t line_len = 0; + long long_num = 0; + unsigned int port = 0; + + p_config_fd = fopen(CFG_FILE_PATH, "r"); + if (NULL == p_config_fd) { + TDX_TRACE; + return 0; + } + while(-1 != getline(&p_line, &line_len, p_config_fd)) { + char temp[11] = {0}; + int number = 0; + int ret = sscanf(p_line, " %10[#]", temp); + if (ret == 1) { + continue; + } + /* leading or trailing white space are ignored, white space around '=' + are also ignored. The number should no longer than 10 characters. + Trailing non-whitespace are not allowed. */ + ret = sscanf(p_line, " port = %10[0-9] %n", temp, &number); + /* Make sure number is positive then make the cast. It's not likely to + have a negtive value, just a defense-in-depth. The cast is used to + suppress the -Wsign-compare warning. */ + if (ret == 1 && number > 0 && ((size_t)number < line_len) + && !p_line[number]) { + errno = 0; + long_num = strtol(temp, &p, 10); + if (p == temp) { + TDX_TRACE; + port = 0; + break; + } + + // make sure that no range error occurred + if (errno == ERANGE || long_num > UINT_MAX) { + TDX_TRACE; + port = 0; + break; + } + + // range is ok, so we can convert to int + port = (unsigned int)long_num & 0xFFFFFFFF; + #ifdef DBUG + fprintf(stdout, "\nGet the vsock port number [%u]\n", port); + #endif + break; + } + } + + /* p_line is allocated by sscanf */ + free(p_line); + fclose(p_config_fd); + + return port; +} + +static tdx_attest_error_t get_tdx_report( + int devfd, + const tdx_report_data_t *p_tdx_report_data, + tdx_report_t *p_tdx_report) +{ + if (-1 == devfd) { + return TDX_ATTEST_ERROR_UNEXPECTED; + } + if (!p_tdx_report) { + fprintf(stderr, "\nNeed to input TDX report."); + return TDX_ATTEST_ERROR_INVALID_PARAMETER; + } + + uint8_t tdx_report[TDX_REPORT_SIZE] = {0}; + if (p_tdx_report_data) { + memcpy(tdx_report, p_tdx_report_data->d, sizeof(p_tdx_report_data->d)); + } + + if (-1 == ioctl(devfd, TDX_CMD_GET_TDREPORT, tdx_report)) { + TDX_TRACE; + return TDX_ATTEST_ERROR_REPORT_FAILURE; + } + memcpy(p_tdx_report->d, tdx_report, sizeof(p_tdx_report->d)); + return TDX_ATTEST_SUCCESS; +} + +tdx_attest_error_t tdx_att_get_quote( + const tdx_report_data_t *p_tdx_report_data, + const tdx_uuid_t *p_att_key_id_list, + uint32_t list_size, + tdx_uuid_t *p_att_key_id, + uint8_t **pp_quote, + uint32_t *p_quote_size, + uint32_t flags) +{ + int s = -1; + int devfd = -1; + int use_tdvmcall = 1; + uint32_t quote_size = 0; + uint32_t recieved_bytes = 0; + uint32_t in_msg_size = 0; + unsigned int vsock_port = 0; + tdx_attest_error_t ret = TDX_ATTEST_ERROR_UNEXPECTED; + get_quote_blob_t *p_get_quote_blob = NULL; + tdx_report_t tdx_report; + uint32_t msg_size = 0; + Qgs__Message__Response *resp; + Qgs__Message__Request request = QGS__MESSAGE__REQUEST__INIT; + Qgs__Message__Request__GetQuoteRequest get_quote_request = + QGS__MESSAGE__REQUEST__GET_QUOTE_REQUEST__INIT; + + if ((!p_att_key_id_list && list_size) || + (p_att_key_id_list && !list_size)) { + ret = TDX_ATTEST_ERROR_INVALID_PARAMETER; + goto ret_point; + } + if (!pp_quote) { + ret = TDX_ATTEST_ERROR_INVALID_PARAMETER; + goto ret_point; + } + if (flags) { + //TODO: I think we need to have a runtime version to make this flag usable. + ret = TDX_ATTEST_ERROR_INVALID_PARAMETER; + goto ret_point; + } + + // Currently only intel TDQE are supported + if (1 < list_size) { + ret = TDX_ATTEST_ERROR_INVALID_PARAMETER; + } + if (p_att_key_id_list && memcmp(p_att_key_id_list, &g_intel_tdqe_uuid, + sizeof(g_intel_tdqe_uuid))) { + ret = TDX_ATTEST_ERROR_INVALID_PARAMETER; + } + *pp_quote = NULL; + memset(&tdx_report, 0, sizeof(tdx_report)); + p_get_quote_blob = (get_quote_blob_t *)malloc(sizeof(get_quote_blob_t)); + if (!p_get_quote_blob) { + ret = TDX_ATTEST_ERROR_OUT_OF_MEMORY; + goto ret_point; + } + + devfd = open(TDX_ATTEST_DEV_PATH, O_RDWR | O_SYNC); + if (-1 == devfd) { + TDX_TRACE; + ret = TDX_ATTEST_ERROR_DEVICE_FAILURE; + goto ret_point; + } + + ret = get_tdx_report(devfd, p_tdx_report_data, &tdx_report); + if (TDX_ATTEST_SUCCESS != ret) { + goto ret_point; + } + + request.type = QGS__MESSAGE__REQUEST__MSG_GET_QUOTE_REQUEST; + get_quote_request.report.len = sizeof(tdx_report.d); + get_quote_request.report.data = tdx_report.d; + request.msg_case = QGS__MESSAGE__REQUEST__MSG_GET_QUOTE_REQUEST; + request.getquoterequest = &get_quote_request; + + // Add the size header + msg_size = (uint32_t)qgs__message__request__get_packed_size(&request); + p_get_quote_blob->trans_len[0] = (uint8_t)((msg_size >> 24) & 0xFF); + p_get_quote_blob->trans_len[1] = (uint8_t)((msg_size >> 16) & 0xFF); + p_get_quote_blob->trans_len[2] = (uint8_t)((msg_size >> 8) & 0xFF); + p_get_quote_blob->trans_len[3] = (uint8_t)(msg_size & 0xFF); + + // Serialization + qgs__message__request__pack(&request, p_get_quote_blob->p_buf); + + do { + vsock_port = get_vsock_port(); + if (!vsock_port) { + syslog(LOG_INFO, "libtdx_attest: fallback to tdvmcall mode."); + break; + } + s = socket(AF_VSOCK, SOCK_STREAM, 0); + if (-1 == s) { + syslog(LOG_INFO, "libtdx_attest: fallback to tdvmcall mode."); + break; + } + struct sockaddr_vm vm_addr; + memset(&vm_addr, 0, sizeof(vm_addr)); + vm_addr.svm_family = AF_VSOCK; + vm_addr.svm_reserved1 = 0; + vm_addr.svm_port = vsock_port; + vm_addr.svm_cid = VMADDR_CID_HOST; + if (connect(s, (struct sockaddr *)&vm_addr, sizeof(vm_addr))) { + syslog(LOG_INFO, "libtdx_attest: fallback to tdvmcall mode."); + break; + } + + // Write to socket + if (HEADER_SIZE + msg_size != send(s, p_get_quote_blob->trans_len, + HEADER_SIZE + msg_size, 0)) { + TDX_TRACE; + ret = TDX_ATTEST_ERROR_VSOCK_FAILURE; + goto ret_point; + } + + // Read the response size header + if (HEADER_SIZE != recv(s, p_get_quote_blob->trans_len, + HEADER_SIZE, 0)) { + TDX_TRACE; + ret = TDX_ATTEST_ERROR_VSOCK_FAILURE; + goto ret_point; + } + + // decode the size + for (unsigned i = 0; i < HEADER_SIZE; ++i) { + in_msg_size = in_msg_size * 256 + + ((p_get_quote_blob->trans_len[i]) & 0xFF); + } + + // prepare the buffer and read the reply body + #ifdef DEBUG + fprintf(stdout, "\nReply message body is %u bytes", in_msg_size); + #endif + + if (sizeof(p_get_quote_blob->p_buf) < in_msg_size) + { + #ifdef DEBUG + fprintf(stdout, "\nReply message body is too big"); + #endif + ret = TDX_ATTEST_ERROR_UNEXPECTED; + goto ret_point; + } + while( recieved_bytes < in_msg_size) { + int recv_ret = (int)recv(s, p_get_quote_blob->p_buf + recieved_bytes, + in_msg_size - recieved_bytes, 0); + if (recv_ret < 0) { + ret = TDX_ATTEST_ERROR_VSOCK_FAILURE; + goto ret_point; + } + recieved_bytes += (uint32_t)recv_ret; + } + #ifdef DEBUG + fprintf(stdout, "\nGet %u bytes response from vsock", recieved_bytes); + #endif + use_tdvmcall = 0; + } while (0); + + if (use_tdvmcall) { + int ioctl_ret = 0; + get_quote_ioctl_arg_t arg; + p_get_quote_blob->version = 1; + p_get_quote_blob->status = 0; + p_get_quote_blob->in_len = HEADER_SIZE + msg_size; + p_get_quote_blob->out_len = (uint32_t)(sizeof(*p_get_quote_blob) - 24); + arg.p_blob = p_get_quote_blob; + arg.len = sizeof(*p_get_quote_blob); + + ioctl_ret = ioctl(devfd, TDX_CMD_GEN_QUOTE, &arg); + if (EBUSY == ioctl_ret) { + TDX_TRACE; + ret = TDX_ATTEST_ERROR_BUSY; + goto ret_point; + } else if (ioctl_ret) { + TDX_TRACE; + ret = TDX_ATTEST_ERROR_QUOTE_FAILURE; + goto ret_point; + } + if (p_get_quote_blob->status + || p_get_quote_blob->out_len <= HEADER_SIZE) { + TDX_TRACE; + ret = TDX_ATTEST_ERROR_UNEXPECTED; + goto ret_point; + } + + //in_msg_size is the size of serialized response, remove 4bytes header + //TODO: Decode the HEAD and compare it with out_len as defense-in-depth + in_msg_size = p_get_quote_blob->out_len - HEADER_SIZE; + #ifdef DEBUG + fprintf(stdout, "\nGet %u bytes response from tdvmcall", in_msg_size); + #endif + } + + resp = qgs__message__response__unpack( + NULL, in_msg_size, p_get_quote_blob->p_buf); + if (!resp) { + ret = TDX_ATTEST_ERROR_UNEXPECTED; + goto ret_point; + } + + switch (resp->type) + { + case QGS__MESSAGE__RESPONSE__MSG_GET_QUOTE_RESPONSE: + if (resp->getquoteresponse->error_code != 0) { + ret = TDX_ATTEST_ERROR_UNEXPECTED; + goto ret_point; + } + quote_size = (uint32_t)resp->getquoteresponse->quote.len; + *pp_quote = malloc(quote_size); + if (!*pp_quote) { + ret = TDX_ATTEST_ERROR_OUT_OF_MEMORY; + goto ret_point; + } + memcpy(*pp_quote, resp->getquoteresponse->quote.data, quote_size); + if (p_quote_size) { + *p_quote_size = quote_size; + } + if (p_att_key_id) { + *p_att_key_id = g_intel_tdqe_uuid; + } + break; + default: + ret = TDX_ATTEST_ERROR_UNEXPECTED; + } + +ret_point: + if (s >= 0) { + close(s); + } + if (-1 != devfd) { + close(devfd); + } + free(p_get_quote_blob); + + return ret; +} + +tdx_attest_error_t tdx_att_free_quote( + uint8_t *p_quote) +{ + free(p_quote); + return TDX_ATTEST_SUCCESS; +} + +tdx_attest_error_t tdx_att_get_report( + const tdx_report_data_t *p_tdx_report_data, + tdx_report_t *p_tdx_report) +{ + int devfd; + tdx_attest_error_t ret = TDX_ATTEST_SUCCESS; + + devfd = open(TDX_ATTEST_DEV_PATH, O_RDWR | O_SYNC); + if (-1 == devfd) { + TDX_TRACE; + return TDX_ATTEST_ERROR_DEVICE_FAILURE; + } + + ret = get_tdx_report(devfd, p_tdx_report_data, p_tdx_report); + + close(devfd); + return ret; +} + +tdx_attest_error_t tdx_att_get_supported_att_key_ids( + tdx_uuid_t *p_att_key_id_list, + uint32_t *p_list_size) +{ + if (!p_list_size) { + return TDX_ATTEST_ERROR_INVALID_PARAMETER; + } + if (p_att_key_id_list && !*p_list_size) { + return TDX_ATTEST_ERROR_INVALID_PARAMETER; + } + if (!p_att_key_id_list && *p_list_size) { + return TDX_ATTEST_ERROR_INVALID_PARAMETER; + } + if (p_att_key_id_list) { + p_att_key_id_list[0] = g_intel_tdqe_uuid; + } + *p_list_size = 1; + return TDX_ATTEST_SUCCESS; +} + +tdx_attest_error_t tdx_att_extend( + const tdx_rtmr_event_t *p_rtmr_event) +{ + int devfd = -1; + uint64_t extend_data_size = 0; + if (!p_rtmr_event || p_rtmr_event->version != 1) { + return TDX_ATTEST_ERROR_INVALID_PARAMETER; + } + if (p_rtmr_event->event_data_size) { + return TDX_ATTEST_ERROR_NOT_SUPPORTED; + } + + devfd = open(TDX_ATTEST_DEV_PATH, O_RDWR | O_SYNC); + if (-1 == devfd) { + TDX_TRACE; + return TDX_ATTEST_ERROR_DEVICE_FAILURE; + } + + if (-1 == ioctl(devfd, TDX_CMD_GET_EXTEND_SIZE, &extend_data_size)) { + TDX_TRACE; + close(devfd); + return TDX_ATTEST_ERROR_EXTEND_FAILURE; + } + assert(extend_data_size == sizeof(p_rtmr_event->extend_data)); + if (-1 == ioctl(devfd, TDX_CMD_EXTEND_RTMR, &p_rtmr_event->rtmr_index)) { + TDX_TRACE; + close(devfd); + if (EINVAL == errno) { + return TDX_ATTEST_ERROR_INVALID_RTMR_INDEX; + } + return TDX_ATTEST_ERROR_EXTEND_FAILURE; + } + close(devfd); + return TDX_ATTEST_SUCCESS; +} diff --git a/QuoteGeneration/quote_wrapper/tdx_attest/tdx_attest.h b/QuoteGeneration/quote_wrapper/tdx_attest/tdx_attest.h new file mode 100644 index 00000000..0c79cc67 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_attest/tdx_attest.h @@ -0,0 +1,256 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + +/** + * File: tdx_attest.h + * + * Description: API definitions for TDX Attestation library + * + */ +#ifndef _TDX_ATTEST_H_ +#define _TDX_ATTEST_H_ +#include + +typedef enum _tdx_attest_error_t { + TDX_ATTEST_SUCCESS = 0x0000, ///< Success + TDX_ATTEST_ERROR_MIN = 0x0001, ///< Indicate min error to allow better translation. + TDX_ATTEST_ERROR_UNEXPECTED = 0x0001, ///< Unexpected error + TDX_ATTEST_ERROR_INVALID_PARAMETER = 0x0002, ///< The parameter is incorrect + TDX_ATTEST_ERROR_OUT_OF_MEMORY = 0x0003, ///< Not enough memory is available to complete this operation + TDX_ATTEST_ERROR_VSOCK_FAILURE = 0x0004, ///< vsock related failure + TDX_ATTEST_ERROR_REPORT_FAILURE = 0x0005, ///< Failed to get the TD Report + TDX_ATTEST_ERROR_EXTEND_FAILURE = 0x0006, ///< Failed to extend rtmr + TDX_ATTEST_ERROR_NOT_SUPPORTED = 0x0007, ///< Request feature is not supported + TDX_ATTEST_ERROR_QUOTE_FAILURE = 0x0008, ///< Failed to get the TD Quote + TDX_ATTEST_ERROR_BUSY = 0x0009, ///< The device driver return busy + TDX_ATTEST_ERROR_DEVICE_FAILURE = 0x000a, ///< Failed to acess tdx attest device + TDX_ATTEST_ERROR_INVALID_RTMR_INDEX = 0x000b, ///< Only supported RTMR index is 2 and 3 + TDX_ATTEST_ERROR_MAX +} tdx_attest_error_t; + +#define TDX_UUID_SIZE 16 + +#pragma pack(push, 1) + +#define TDX_UUID_SIZE 16 +typedef struct tdx_uuid_t +{ + uint8_t d[TDX_UUID_SIZE]; +} tdx_uuid_t; + +#define TDX_SGX_ECDSA_ATTESTATION_ID \ +{ \ + 0xe8, 0x6c, 0x04, 0x6e, 0x8c, 0xc4, 0x4d, 0x95, \ + 0x81, 0x73, 0xfc, 0x43, 0xc1, 0xfa, 0x4f, 0x3f \ +} + +#define TDX_REPORT_DATA_SIZE 64 +typedef struct _tdx_report_data_t +{ + uint8_t d[TDX_REPORT_DATA_SIZE]; +} tdx_report_data_t; + +#define TDX_REPORT_SIZE 1024 +typedef struct _tdx_report_t +{ + uint8_t d[TDX_REPORT_SIZE]; +} tdx_report_t; + +typedef struct _tdx_rtmr_event_t { + uint32_t version; + uint64_t rtmr_index; + uint8_t extend_data[48]; + uint32_t event_type; + uint32_t event_data_size; + uint8_t event_data[]; +} tdx_rtmr_event_t; + +#pragma pack(pop) + +#if defined(__cplusplus) +extern "C" { +#endif + +/** + * @brief Request a Quote of the calling TD. + * + * The caller provides data intended to be cryptographically bound to the + * resulting Quote. (This data should not require confidentiality protection.) + * The caller also provides information about the type of Quote signing that + * should be used. + * + * In general, a given platform can create Quotes using + * different cryptographic algorithms or using different vendors’ code/enclaves. + * The att_key_id_list parameter is related to this. It is a list of key IDs + * supported by the eventual verifier of the Quote. How the caller of this + * function obtains this list is outside the scope of the R3AAL. + * + * A default key ID is supported and will be used when att_key_id_list == NULL. + * In this case, the default key ID is returned via the p_att_key_id parameter. + * + * When the function returns successfully, p_quote will point to a buffer + * containing the Quote. This buffer is allocated by the function. Use + * tdx_att_free_quote to free this buffer. + * + * @param p_tdx_report_data [in] Pointer to data that the caller/TD wants to + * cryptographically bind to the Quote, + * typically a hash. May be NULL, in which case, + * all zeros will be used for the Report data. + * @param att_key_id_list [in] List (array) of the attestation key IDs supported + * by the Quote verifier. The function compares the + * key IDs in att_key_id_list to the key IDs that + * the platform supports and uses the first match. + * May be NULL. If NULL, the API will use the + * platform’s default key ID. The uuid_t + * corresponding to the key ID that’s used is + * pointed to by p_att_key_id when the function + * returns unless p_att_key_id == NULL. + * @param list_size [in] Size of att_key_id_list in entries. + * @param p_att_key_id [out] The selected attestation key ID when the function + * returns. May be NULL indicating the platform’s + * default key ID + * @param pp_quote [out] Pointer to a pointer that the function will set equal + * to the address of the buffer containing the Quote. The + * function also allocates this buffer. Use + * tdx_att_free_quote to free this buffe + * @param p_quote_size [out] This function will place the size of the Quote, in + * bytes, in the uint32_t pointed to by the + * p_quote_size parameter. May be NULL. + * @param flags [in] Reserved, must be zero. + * @return TDX_ATTEST_SUCCESS: Successfully generated the Quote. + * @return TDX_ATTEST_ERROR_UNEXPECTED: An unexpected internal error occurred. + * @return TDX_ATTEST_ERROR_INVALID_PARAMETER: The parameter is incorrect + * @return TDX_ATTEST_ERROR_REPORT_FAILURE: Failed to get TD report. + * @return TDX_ATTEST_ERROR_VSOCK_FAILURE: Failed read/write in vsock mode + * @return TDX_ATTEST_ERROR_QUOTE_FAILURE: Failed to get quote from QGS + * @return TDX_ATTEST_UNSUPPORTED_ATT_KEY_ID: The platform Quoting + * infrastructure does not support any of the keys described in + * att_key_id_list. + * @return TDX_ATTEST_OUT_OF_MEMORY: Heap memory allocation error in library or + * enclave. + */ +tdx_attest_error_t tdx_att_get_quote( + const tdx_report_data_t *p_tdx_report_data, + const tdx_uuid_t att_key_id_list[], + uint32_t list_size, + tdx_uuid_t *p_att_key_id, + uint8_t **pp_quote, + uint32_t *p_quote_size, + uint32_t flags); + + +/** + * @brief Free the Quote buffer allocated by tdx_att_get_quote. + * + * @param p_quote [in] The value of *p_quote returned by tdx_att_get_quote. + * @return TDX_ATTEST_SUCCESS: Successfully freed the p_quote. + */ +tdx_attest_error_t tdx_att_free_quote( + uint8_t *p_quote); + +/** + * @brief Request a TDX Report of the calling TD. + * + * The caller provides data intended to be cryptographically bound to the + * resulting Report. + * + * @param p_tdx_report_data [in] Pointer to data that the caller/TD wants to + * cryptographically bind to the Quote, typically + * a hash. May be NULL, in which case, all zeros + * will be used for the Report data. + * @param p_tdx_report [out] Pointer to the buffer that will contain the + * generated TDX Report. Must not be NULL. + * @return TDX_ATTEST_SUCCESS: Successfully generated the Report. + * @return TDX_ATTEST_ERROR_INVALID_PARAMETER: p_tdx_report == NULL + * @return TDX_ATTEST_ERROR_REPORT_FAILURE: Failed to get TD report. + */ +tdx_attest_error_t tdx_att_get_report( + const tdx_report_data_t *p_tdx_report_data, + tdx_report_t* p_tdx_report); + + +/** + * @brief Extend one of the TDX runtime measurement registers (RTMRs). + * + * RTMR[rtmr_index] = SHA384(RTMR[rtmr_index] || extend_data) + * rtmr_index and extend_data are fields in the structure that is an input of + * this API. + * This API does not return either the new or old value of the specified RTMR. + * The tdx_att_get_report API may be used for this. + * The input to this API includes a description of the “extend data”. This is + * intended to facilitate reconstruction of the RTMR value. This, in turn, + * suggests maintenance of an event log by the callee. Currently, event_data is + * not supported. + * + * @param p_rtmr_event [in] Pointer to structure that contains the index of the + * RTMR to extend, the data with which to extend it and + * a description of the data. + * @return TDX_ATTEST_SUCCESS: Successfully extended the RTMR. + * @return TDX_ATTEST_ERROR_INVALID_PARAMETER: p_rtmr_event == NULL + * @return TDX_ATTEST_ERROR_UNEXPECTED: An unexpected internal error occurred. + * @return TDX_ATTEST_ERROR_EXTEND_FAILURE: Failed to extend data. + * @return TDX_ATTEST_ERROR_NOT_SUPPORTED: p_rtmr_event->event_data_size != 0 + */ +tdx_attest_error_t tdx_att_extend( + const tdx_rtmr_event_t *p_rtmr_event); + + +/** + * @brief Retrieve the list of attestation key IDs supported by the platform. + * + * Specify p_att_key_id_list = NULL to learn the number of entries in the list. + * + * @param p_att_key_id_list [out] List of the attestation key IDs that the + * platform supports. May be NULL. If NULL, the + * API will return the number of entries in the + * list in the uint32_t pointed to by p_list_size + * @param p_list_size [in/out] As input, pointer to a uint32_t specifying the + * size of p_att_key_id_list in entries. As output, + * this function will place the required size, in + * entries, in the uint32_t pointed to by the + * p_list_size parameter. If this value changes, the + * new value will be the required size + * @return TDX_ATTEST_SUCCESS: att_key_id_list populated and p_list_size points + * to a uint32_t that indicates the number of + * entries. + * @return TDX_ATTEST_ERROR_INVALID_PARAMETER: The parameter is incorrect + */ +tdx_attest_error_t tdx_att_get_supported_att_key_ids( + tdx_uuid_t *p_att_key_id_list, + uint32_t *p_list_size); +#if defined(__cplusplus) +} +#endif + + +#endif + diff --git a/QuoteGeneration/quote_wrapper/tdx_attest/test_tdx_attest.c b/QuoteGeneration/quote_wrapper/tdx_attest/test_tdx_attest.c new file mode 100644 index 00000000..56d29fa7 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_attest/test_tdx_attest.c @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include +#include "tdx_attest.h" + +#define devname "/dev/tdx-attest" + +#define HEX_DUMP_SIZE 16 +#define MAX_ROW_SIZE 70 + +static void print_hex_dump(const char *title, const char *prefix_str, + const uint8_t *buf, int len) +{ + const uint8_t *ptr = buf; + int i, rowsize = HEX_DUMP_SIZE; + + if (!len || !buf) + return; + + fprintf(stdout, "\t\t%s", title); + + for (i = 0; i < len; i++) { + if (!(i % rowsize)) + fprintf(stdout, "\n%s%.8x:", prefix_str, i); + if (ptr[i] <= 0x0f) + fprintf(stdout, " 0%x", ptr[i]); + else + fprintf(stdout, " %x", ptr[i]); + } + + fprintf(stdout, "\n"); +} + +void gen_report_data(uint8_t *reportdata) +{ + int i; + + srand(time(NULL)); + + for (i = 0; i < TDX_REPORT_DATA_SIZE; i++) + reportdata[i] = rand(); +} + +int main(int argc, char *argv[]) +{ + uint32_t quote_size = 0; + tdx_report_data_t report_data = {{0}}; + tdx_report_t tdx_report = {{0}}; + tdx_uuid_t selected_att_key_id = {0}; + uint8_t *p_quote_buf = NULL; + FILE *fptr = NULL; + + gen_report_data(report_data.d); + print_hex_dump("\n\t\tTDX report data\n", " ", report_data.d, sizeof(report_data.d)); + + if (TDX_ATTEST_SUCCESS != tdx_att_get_report(&report_data, &tdx_report)) { + fprintf(stderr, "\nFailed to get the report\n"); + return 1; + } + print_hex_dump("\n\t\tTDX report\n", " ", tdx_report.d, sizeof(tdx_report.d)); + + if (TDX_ATTEST_SUCCESS != tdx_att_get_quote(&report_data, NULL, 0, &selected_att_key_id, + &p_quote_buf, "e_size, 0)) { + fprintf(stderr, "\nFailed to get the quote\n"); + return 1; + } + print_hex_dump("\n\t\tTDX quote data\n", " ", p_quote_buf, quote_size); + + fprintf(stdout, "\nSuccessfully get the TD Quote\n"); + fptr = fopen("quote.dat","wb"); + if( fptr ) + { + fwrite(p_quote_buf, quote_size, 1, fptr); + fclose(fptr); + } + fprintf(stdout, "\nWrote TD Quote to quote.dat\n"); + + tdx_att_free_quote(p_quote_buf); + return 0; +} diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/enclave/linux/Makefile b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/linux/Makefile new file mode 100644 index 00000000..d9a60053 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/linux/Makefile @@ -0,0 +1,89 @@ +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + + +TOP_DIR := ../../../.. +MITIGATION-CVE-2020-0551 := LOAD +include $(TOP_DIR)/ae/buildenv.mk + +AENAME := tdqe +SONAME := $(AENAME).so + +TDQE_VER := $(shell awk '$$2 ~ /TDQE_VERSION/ { print substr($$3, 2, length($$3) - 2); }' $(COMMON_DIR)/inc/internal/se_version.h) + +TCRYPTO_LIB_NAME := sgx_tcrypto + +INCLUDE := -I$(SGX_SDK)/include \ + -I$(SGX_SDK)/include/tlibc \ + -I$(SGX_SDK)/include/libcxx \ + -I$(COMMON_DIR)/inc/internal \ + -I$(COMMON_DIR)/inc/internal/linux \ + -I$(TOP_DIR)/ae/inc/internal \ + -I../../inc \ + -I../../../common/inc \ + -I../../../../pce_wrapper/inc \ + -I.. \ + -I. + +EXTERNAL_LIB = $(EXTERNAL_LIB_NO_CRYPTO) -lsgx_tcxx -l$(TCRYPTO_LIB_NAME) + +vpath %.cpp .. . +SRC := quoting_enclave_tdqe.cpp + +OBJ := $(SRC:.cpp=.o) +OBJS := $(sort $(OBJ) version.o) + +.PHONY: all +all: $(SONAME) + +$(SONAME): $(OBJS) + $(CXX) $(CXXFLAGS) -o $@ $(OBJS) -nostdlib -nodefaultlibs -nostartfiles -Wl,-soname=libsgx_${AENAME}.signed.so.$(call SPLIT_VERSION,$(TDQE_VER),1) $(LDTFLAGS) -fno-exceptions -fno-rtti + $(STRIP) --strip-unneeded --remove-section=.comment --remove-section=.note $@ + +quoting_enclave_tdqe.o: $(AENAME)_t.c + +%.o:%.cpp + $(CXX) $(CXXFLAGS) $(INCLUDE) $(DEFINES) -fno-exceptions -c $< -o $@ + +$(AENAME)_t.c: ../$(AENAME).edl + @$(SGX_EDGER8R) --trusted $< + +.PHONY: clean +clean: + @$(RM) *.o + @$(RM) *.so + @$(RM) *.map + @$(RM) *_t.* + +.PHONY: rebuild +rebuild: + $(MAKE) clean + $(MAKE) all diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/enclave/linux/config.xml b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/linux/config.xml new file mode 100644 index 00000000..ba4c703c --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/linux/config.xml @@ -0,0 +1,13 @@ + + 1 + 1 + 0x2 + 4 + 1 + 1 + 0 + 0x44000 + 0x44000 + 0x24000 + 1 + diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/enclave/linux/enclave.lds b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/linux/enclave.lds new file mode 100644 index 00000000..a345878c --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/linux/enclave.lds @@ -0,0 +1,10 @@ +{ + global: + g_global_data_sim; + g_global_data; + enclave_entry; + g_peak_heap_used; + local: + *; +}; + diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/enclave/quoting_enclave_tdqe.cpp b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/quoting_enclave_tdqe.cpp new file mode 100644 index 00000000..2e6e74f7 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/quoting_enclave_tdqe.cpp @@ -0,0 +1,1649 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + /** + * File: quoting_enclave_tdqe.cpp + * + * Description: The implementation of the + * reference ECDSA Quoting enclave + * interfaces. + * + */ + +#include +#include +#include + +#include "sgx_quote.h" +#include "sgx_quote_4.h" +#include "sgx_tseal.h" +#include "sgx_utils.h" +#include "tdqe_t.c" +#include "sgx_tcrypto.h" +#include "sgx_trts.h" + +#include "quoting_enclave_tdqe.h" +#include "user_types.h" +#include "sgx_pce.h" +#include "sgx_lfence.h" + +#define REF_N_SIZE_IN_BYTES 384 +#define REF_E_SIZE_IN_BYTES 4 +#define REF_D_SIZE_IN_BYTES 384 +#define REF_P_SIZE_IN_BYTES 192 +#define REF_Q_SIZE_IN_BYTES 192 +#define REF_DMP1_SIZE_IN_BYTES 192 +#define REF_DMQ1_SIZE_IN_BYTES 192 +#define REF_IQMP_SIZE_IN_BYTES 192 + +#define REF_N_SIZE_IN_UINT REF_N_SIZE_IN_BYTES/sizeof(unsigned int) +#define REF_E_SIZE_IN_UINT REF_E_SIZE_IN_BYTES/sizeof(unsigned int) +#define REF_D_SIZE_IN_UINT REF_D_SIZE_IN_BYTES/sizeof(unsigned int) +#define REF_P_SIZE_IN_UINT REF_P_SIZE_IN_BYTES/sizeof(unsigned int) +#define REF_Q_SIZE_IN_UINT REF_Q_SIZE_IN_BYTES/sizeof(unsigned int) +#define REF_DMP1_SIZE_IN_UINT REF_DMP1_SIZE_IN_BYTES/sizeof(unsigned int) +#define REF_DMQ1_SIZE_IN_UINT REF_DMQ1_SIZE_IN_BYTES/sizeof(unsigned int) +#define REF_IQMP_SIZE_IN_UINT REF_IQMP_SIZE_IN_BYTES/sizeof(unsigned int) + +static const uint8_t g_vendor_id[16] = +{ 0x93,0x9A,0x72,0x33,0xF7,0x9C,0x4C,0xA9,0x94,0x0A,0x0D,0xB3,0x95,0x7F,0x06,0x07 }; + +static const uint8_t g_ref_pubkey_e_be[REF_E_SIZE_IN_BYTES] = { 0x00,0x01,0x00,0x01 }; +static const uint8_t g_ref_pubkey_n_be[REF_N_SIZE_IN_BYTES] = { + 0xd3, 0x96, 0xf9, 0x43, 0x43, 0x11, 0x00, 0x1c, 0x69, 0x44, 0x9c, + 0x3b, 0xfd, 0xee, 0x8f, 0x38, 0xcd, 0x95, 0xcd, 0xad, 0x74, 0x09, + 0x7c, 0x87, 0xf1, 0xa7, 0x65, 0x02, 0x4c, 0x87, 0xc1, 0x57, 0x30, + 0xa5, 0xc9, 0xa6, 0xa4, 0xcc, 0xf9, 0x1d, 0x62, 0x18, 0x1e, 0x00, + 0xa6, 0x74, 0x27, 0x58, 0x59, 0xca, 0x1b, 0x1d, 0xf5, 0x31, 0x0e, + 0xf2, 0xd5, 0xe1, 0x79, 0x37, 0x39, 0x94, 0x3d, 0x3d, 0xe2, 0x50, + 0x93, 0x12, 0xd6, 0x03, 0xe5, 0x19, 0x3a, 0x48, 0xf0, 0xae, 0x0c, + 0x37, 0xee, 0xe0, 0x57, 0x27, 0xbd, 0xec, 0x17, 0x1b, 0x0f, 0x39, + 0x86, 0x06, 0x54, 0x20, 0x74, 0x84, 0x34, 0xbe, 0x34, 0xfa, 0x71, + 0x6f, 0xa1, 0xf5, 0x4c, 0x9a, 0x52, 0x0f, 0xc4, 0xbc, 0x2d, 0x7a, + 0x2e, 0x17, 0xe3, 0x5d, 0xa2, 0x0e, 0xca, 0x39, 0x07, 0x98, 0xa9, + 0x05, 0x1a, 0x34, 0xfb, 0x8f, 0x60, 0x9c, 0x3a, 0x1e, 0x26, 0x30, + 0x0b, 0xf3, 0xf3, 0x49, 0x40, 0xd9, 0xf7, 0x5d, 0xcb, 0xd1, 0xbf, + 0x57, 0x8d, 0xe5, 0x2d, 0xce, 0x98, 0x57, 0x35, 0xf1, 0x93, 0xc3, + 0x19, 0x2e, 0x80, 0x55, 0x37, 0xab, 0x8d, 0x64, 0x08, 0xda, 0xe6, + 0xdd, 0x64, 0xb4, 0x62, 0x83, 0x8d, 0x43, 0xaa, 0xd2, 0x7b, 0xc2, + 0x63, 0xaa, 0x97, 0xde, 0xed, 0x09, 0x92, 0xd6, 0x88, 0x56, 0x86, + 0xcd, 0x08, 0x23, 0x03, 0x27, 0x9a, 0x78, 0x7c, 0xf4, 0x36, 0x12, + 0xf5, 0xb1, 0xe6, 0x1d, 0x54, 0xab, 0x88, 0x69, 0xff, 0x18, 0x4f, + 0xdc, 0x87, 0xee, 0x34, 0xa6, 0x68, 0xb1, 0x81, 0x67, 0xb6, 0xce, + 0x0a, 0x70, 0x14, 0xbc, 0xb3, 0xe1, 0x8d, 0x76, 0x1c, 0x73, 0xde, + 0x00, 0xab, 0x41, 0xca, 0x40, 0x51, 0x53, 0x63, 0x04, 0xc3, 0x63, + 0x0b, 0xca, 0x62, 0xda, 0xaa, 0x9c, 0xe5, 0x01, 0xb7, 0xc0, 0x0f, + 0x7e, 0x0b, 0xb0, 0xbe, 0xe9, 0xf8, 0x0d, 0xb3, 0xb6, 0x64, 0xfd, + 0xcd, 0x95, 0x17, 0x9c, 0x57, 0x8e, 0xec, 0xc4, 0xac, 0x8b, 0x36, + 0x01, 0x5e, 0x4c, 0x6d, 0x1e, 0x21, 0x49, 0xa0, 0x1d, 0xde, 0x04, + 0x39, 0x6b, 0x34, 0x68, 0x44, 0xea, 0x06, 0x76, 0xe0, 0x8d, 0x1f, + 0xa2, 0xc0, 0x26, 0x05, 0xcc, 0x91, 0xbe, 0xa3, 0x17, 0xc8, 0x75, + 0x46, 0x85, 0x10, 0x39, 0x16, 0x50, 0x8e, 0x02, 0x43, 0x98, 0x31, + 0x70, 0x69, 0xd8, 0x34, 0x71, 0x82, 0xe7, 0x48, 0x26, 0xcd, 0xc1, + 0x82, 0xd3, 0xeb, 0x6f, 0xe9, 0x58, 0xe7, 0x06, 0x77, 0x10, 0x1f, + 0xdf, 0x49, 0x76, 0x30, 0xa7, 0x68, 0x42, 0xb0, 0x16, 0xd7, 0xda, + 0x92, 0x75, 0xd5, 0x7f, 0x2e, 0x75, 0x43, 0xac, 0x83, 0xb0, 0x1f, + 0xc3, 0x90, 0x19, 0xce, 0xaa, 0x94, 0xd0, 0x2e, 0x5a, 0x6c, 0x13, + 0x72, 0xe7, 0xa6, 0xb5, 0xc0, 0x45, 0x81, 0xe3, 0x53, 0x27 +}; + +const uint32_t g_sgx_nistp256_r_m1[] = {//hard-coded value for n-1 where n is order of the ECC group used + 0xFC632550, 0xF3B9CAC2, 0xA7179E84, 0xBCE6FAAD, 0xFFFFFFFF, 0xFFFFFFFF, + 0x00000000, 0xFFFFFFFF }; + +#define HASH_DRBG_OUT_LEN 40 //320 bits +static const char QE_ATT_STRING[] = "TDX_QE_DER"; + +#define MAX_CERT_DATA_SIZE (4098*3) +#define MIN_CERT_DATA_SIZE (500) + +static bool is_verify_report2_available() { + sgx_report2_mac_struct_t dummy_report_mac_struct; + memset(&dummy_report_mac_struct, 0, sizeof(dummy_report_mac_struct)); + dummy_report_mac_struct.report_type.type = TEE_REPORT2_TYPE; + dummy_report_mac_struct.report_type.subtype = TEE_REPORT2_SUBTYPE; + dummy_report_mac_struct.report_type.version = TEE_REPORT2_VERSION; + if (SGX_ERROR_FEATURE_NOT_SUPPORTED == + sgx_verify_report2(&dummy_report_mac_struct)) { + return false; + } + return true; +} + +/** + * Generates the attestation key based on the TDQE's seal key at the current raw TCB. The attestation key will change + * when the platform TCB (CPUSVN and TDQE ISVSVN) changes. The attestation key can be 'refreshed' for key hygeine by + * inputting a differnt key_id. + * (///todo: The current wrappers don't allow modification of key_id). + * + * Derivation: + * 1) Sealing Key = EGETKEY(KEYNAME = SEAL_KEY, + * KEY_POLICY =MRSIGNER, + * KEY_ID = 0, Current CPUSVN, + * Current ISVSVN) + * 2) Block 1 = AES-CMAC(Sealing Key, QE ATT string with Counter = 0x01) + * 3) Block 2 = AES-CMAC(Sealing Key, QE ATT string with Counter = 0x02) + * 4) Block 3 = AES-CMAC(Sealing Key, QE ATT string with Counter = 0x03) + * 5) TDQE ATT Seed = most significant 320 bits of (Block 1 || Block 2 || Block 3). + * 6) TDQE ATT key pair ir is generated d using NIST SP 186-4 4 section B 4.1 "Key Pair Generation Using Extra Random + * Bits." AE ATT Seed are used for the random bits. + * + * QE ATT String: + * Byte Position | Value + * 0 | Counter (See Description) + * 1-10 | "TDX_QE_DER" (ascii encoded) + * 11-13 | 0x000000 + * 14-15 | 0x0140 (Big Endian) + * + * @param p_att_priv_key[Out] Pointer to the returned value of tha attestion key private key. Must not be NULL. + * @param p_att_pub_key[Out] Pointer to the returned value of tha attestion key public key. Must not be NULL. + * @param p_req_key_id[In] Pointer to the key_id to use when generating the attestation key. + * + * @return TDQE_SUCCESS Successfully created the key and the private and public keys are returned. + * @return TDQE_ERROR_INVALID_PARAMETER One of the inputted parameter is NULL + * @return TDQE_ERROR_OUT_OF_MEMORY Heap memory was exhausted. + * @return TDQE_ERROR_CRYPTO Error in the crypto library functions ues to generate the key. + * @return TDQE_ERROR_UNEXPECTED Unexpected internal error. + */ +static tdqe_error_t get_att_key_based_from_seal_key(sgx_ec256_private_t *p_att_priv_key, + sgx_ec256_public_t *p_att_pub_key, + const sgx_key_id_t *p_req_key_id) +{ + + sgx_status_t sgx_status = SGX_SUCCESS; + + sgx_key_request_t att_priv_key_seed_req; + //sgx_key_128bit_t key_tmp; + // + // securely align seed + // + sgx::custom_alignment_aligned okey_tmp; + sgx_key_128bit_t* pkey_tmp = &okey_tmp.v; + + uint8_t content[16]; + sgx_cmac_128bit_tag_t block; + sgx_report_t tdqe_report; + uint8_t hash_drg_output[HASH_DRBG_OUT_LEN]; + uint32_t i; + tdqe_error_t ret = TDQE_ERROR_CRYPTO; + + // Defense-in-depth. This function is only called internally so should never be NULL + if ((NULL == p_att_priv_key) || + (NULL == p_att_pub_key) || + (NULL == p_req_key_id)) { + return TDQE_ERROR_INVALID_PARAMETER; + } + + memset(&content, 0, sizeof(content)); + memset(&block, 0, sizeof(block)); + memset(pkey_tmp, 0, sizeof(*pkey_tmp)); + //1-10bytes: "TDX_QE_DER"(ascii encoded) + memcpy(content + 1, QE_ATT_STRING, 10); + //14-15bytes: 0x0140 (Big Endian) + content[14] = 0x01; + content[15] = 0x40; + + // Get PSVN from self report + sgx_status = sgx_create_report(NULL, NULL, &tdqe_report); + if (SGX_SUCCESS != sgx_status) { + if (SGX_ERROR_OUT_OF_MEMORY == sgx_status) { + ret = TDQE_ERROR_OUT_OF_MEMORY; + } + else { + ret = TDQE_ERROR_UNEXPECTED; + } + goto ret_point; + } + + // Set up the key request structure. + memset(&att_priv_key_seed_req, 0, sizeof(sgx_key_request_t)); + memcpy(&att_priv_key_seed_req.cpu_svn, &tdqe_report.body.cpu_svn, sizeof(att_priv_key_seed_req.cpu_svn)); + memcpy(&att_priv_key_seed_req.isv_svn, &tdqe_report.body.isv_svn, sizeof(att_priv_key_seed_req.isv_svn)); + memcpy(&att_priv_key_seed_req.key_id, p_req_key_id, sizeof(att_priv_key_seed_req.key_id)); + att_priv_key_seed_req.key_name = SGX_KEYSELECT_SEAL; // Seal key + att_priv_key_seed_req.key_policy = SGX_KEYPOLICY_MRSIGNER; + att_priv_key_seed_req.attribute_mask.xfrm = 0; + att_priv_key_seed_req.misc_mask = 0xFFFFFFFF; + att_priv_key_seed_req.attribute_mask.flags = ~SGX_FLAGS_MODE64BIT; //set all bits except the SGX_FLAGS_MODE64BIT + sgx_status = sgx_get_key(&att_priv_key_seed_req, pkey_tmp); + if (SGX_SUCCESS != sgx_status) + { + ret = TDQE_ERROR_CRYPTO; + goto ret_point; + } + + ref_static_assert(sizeof(sgx_cmac_128bit_key_t) == sizeof(sgx_key_128bit_t)); + ref_static_assert(2 * sizeof(sgx_cmac_128bit_tag_t) <= HASH_DRBG_OUT_LEN && 3 * sizeof(sgx_cmac_128bit_tag_t) >= HASH_DRBG_OUT_LEN); + + //Block 1 = AES-CMAC(Seal Key, QE ATT string with Counter = 0x01) + content[0] = 0x01; + if ((sgx_status = sgx_rijndael128_cmac_msg(reinterpret_cast(*pkey_tmp), + content, + sizeof(content), + &block)) != SGX_SUCCESS) { + if (sgx_status == SGX_ERROR_OUT_OF_MEMORY) { + ret = TDQE_ERROR_OUT_OF_MEMORY; + } + else { + ret = TDQE_ERROR_CRYPTO; + } + goto ret_point; + } + memcpy(hash_drg_output, block, sizeof(sgx_cmac_128bit_tag_t)); + + //Block 2 = AES-CMAC(Seal Key, QE ATT string with Counter = 0x02) + content[0] = 0x02; + if ((sgx_status = sgx_rijndael128_cmac_msg(reinterpret_cast(*pkey_tmp), + content, + sizeof(content), + &block)) != SGX_SUCCESS) { + if (sgx_status == SGX_ERROR_OUT_OF_MEMORY) { + ret = TDQE_ERROR_OUT_OF_MEMORY; + } + else { + ret = TDQE_ERROR_CRYPTO; + } + goto ret_point; + } + memcpy(hash_drg_output + sizeof(sgx_cmac_128bit_tag_t), block, sizeof(sgx_cmac_128bit_tag_t)); + + //Block 3 = AES-CMAC(Seal Key, QE ATT string with Counter = 0x03) + content[0] = 0x03; + if ((sgx_status = sgx_rijndael128_cmac_msg(reinterpret_cast(*pkey_tmp), + content, + sizeof(content), + &block)) != SGX_SUCCESS) { + if (sgx_status == SGX_ERROR_OUT_OF_MEMORY) { + ret = TDQE_ERROR_OUT_OF_MEMORY; + } + else { + ret = TDQE_ERROR_CRYPTO; + } + goto ret_point; + } + //ECDSA Att Seed = most significant 320 bits of (Block 1 || Block 2 || Block 3). + memcpy(hash_drg_output + 2 * sizeof(sgx_cmac_128bit_tag_t), block, sizeof(hash_drg_output) - 2 * sizeof(sgx_cmac_128bit_tag_t)); + + for (i = 0; i < sizeof(hash_drg_output) / 2; i++) {//big endian to little endian + hash_drg_output[i] ^= hash_drg_output[sizeof(hash_drg_output) - 1 - i]; + hash_drg_output[sizeof(hash_drg_output) - 1 - i] ^= hash_drg_output[i]; + hash_drg_output[i] ^= hash_drg_output[sizeof(hash_drg_output) - 1 - i]; + } + ref_static_assert(sizeof(g_sgx_nistp256_r_m1) == sizeof(sgx_ec256_private_t)); /*Unmatched size*/ + + // Calculate attest key + if (sgx_calculate_ecdsa_priv_key((const unsigned char*)hash_drg_output, + sizeof(hash_drg_output), + (const unsigned char*)g_sgx_nistp256_r_m1, + sizeof(g_sgx_nistp256_r_m1), + (unsigned char*)p_att_priv_key, + sizeof(sgx_ec256_private_t)) != SGX_SUCCESS) { + ret = TDQE_ERROR_CRYPTO; + goto ret_point; + } + + if (sgx_ecc256_calculate_pub_from_priv(p_att_priv_key, p_att_pub_key) != SGX_SUCCESS) { + ret = TDQE_ERROR_CRYPTO; + goto ret_point; + } + + //little endian to big endian + SWAP_ENDIAN_32B(p_att_pub_key->gx); + SWAP_ENDIAN_32B(p_att_pub_key->gy); + + ret = TDQE_SUCCESS; + +ret_point: + //clear and free objects + // + (void)memset_s(pkey_tmp, sizeof(*pkey_tmp), 0, sizeof(*pkey_tmp)); + (void)memset_s(&hash_drg_output, sizeof(hash_drg_output), 0, sizeof(hash_drg_output)); + (void)memset_s(&block, sizeof(block), 0, sizeof(block)); + if (ret != TDQE_SUCCESS) { + (void)memset_s(p_att_priv_key, sizeof(sgx_ec256_private_t), 0, sizeof(sgx_ec256_private_t)); //clear private key in stack + (void)memset_s(p_att_pub_key, sizeof(ref_ec256_public_t), 0, sizeof(ref_ec256_public_t)); //clear public key in stack + } + + return ret; +} + +/** + * An internal function used to verify the ECDSA Blob. It will verify the format of the blob and check the + * authenticity using the seal key. If the TCB of the platform has increased since the last time the blob was sealed, + * it will be resealed to the new TCB and the p_is_resealed will be set to TRUE. It will also optionally return the pub + * key id and the encrypted data from the seal data if requested by the caller. + * + * @param p_blob Pointer to the inputted ECDSA sealed blob to + * be checked and unsealed. + * @param blob_size Size in bytes of the ECDSA blob. + * @param p_is_resealed + * Pointer to return whether the blob was resealed to a new TCB. + * @param p_plaintext_ecdsa_data + * Pointer to the buffer that will contain the plaintext portion of the sealed blob. This must not be + * null. + * @param p_pub_key_id + * Optional pointer to the buffer to contain the ECDSA key ID stored in the blob. If not NULL, it will + * contain the ECDSA ID of the key in th blob upon returning. + * @param p_report_body If non-NULL, it will contain the a non-targetted QE REPORT without any REPORT.ReportData. + * @param pub_key_id_size + * Size in bytes of the buffer pointed to by p_pub_key_id. Ignored if p_pub_key_id is NULL but if not + * NULL, it must be large enough to hold a SHA256 hash. + * @param p_secret_ecdsa_data Optional pointer to a buffer that will contains the decrypted secret data + * in the sealed blob. + * + * @return TDQE_SUCCESS ECDSA The blob verification passed and the p_secret_data will contain the decypted sealed + * secret data. + * @return TDQE_ECDSABLOB_ERROR There is a problem with the inputted blob format or unsealing failed. + * @return TDQE_ERROR_UNEXPECTED There is a problem retrieving the current platform TCB or resealing of the BLOB. + * @return TDQE_ERROR_OUT_OF_MEMORY Heap memory was exhausted. + */ +static tdqe_error_t verify_blob_internal(uint8_t *p_blob, + uint32_t blob_size, + uint8_t *p_is_resealed, + ref_plaintext_ecdsa_data_sdk_t *p_plaintext_ecdsa_data, + sgx_report_body_t *p_report_body, + uint8_t *p_pub_key_id, + uint32_t pub_key_id_size, + ref_ciphertext_ecdsa_data_sdk_t *p_secret_ecdsa_data) +{ + sgx_status_t sgx_status = SGX_SUCCESS; + tdqe_error_t ret = TDQE_SUCCESS; + uint8_t resealed = FALSE; + //ref_ciphertext_ecdsa_data_sdk_t local_secret_ecdsa_data; + // + // securely align attestation key + // + sgx::custom_alignment_alignedecdsa_private_key)> osecret_ecdsa_data; + ref_ciphertext_ecdsa_data_sdk_t* plocal_secret_ecdsa_data = &osecret_ecdsa_data.v; + + uint32_t plaintext_length; + uint32_t decryptedtext_length = sizeof(*plocal_secret_ecdsa_data); + sgx_sealed_data_t *p_ecdsa_blob = (sgx_sealed_data_t *)p_blob; + uint8_t local_ecdsa_blob[SGX_QL_TRUSTED_ECDSA_BLOB_SIZE_SDK] = { 0 }; + sgx_report_t report; + + if ((NULL == p_plaintext_ecdsa_data) || + (NULL == p_is_resealed) || + (NULL == p_blob)) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + + if (SGX_QL_TRUSTED_ECDSA_BLOB_SIZE_SDK != blob_size) { + return(TDQE_ECDSABLOB_ERROR); + } + if (NULL != p_pub_key_id) { + if (pub_key_id_size < sizeof(sgx_sha256_hash_t)) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + } + if (sgx_get_encrypt_txt_len(p_ecdsa_blob) != sizeof(ref_ciphertext_ecdsa_data_sdk_t)) { + return(TDQE_ECDSABLOB_ERROR); + } + plaintext_length = sgx_get_add_mac_txt_len(p_ecdsa_blob); + if (plaintext_length != sizeof(ref_plaintext_ecdsa_data_sdk_t)) { + return(TDQE_ECDSABLOB_ERROR); + } + + memset(plocal_secret_ecdsa_data, 0, sizeof(*plocal_secret_ecdsa_data)); + memset(p_plaintext_ecdsa_data, 0, sizeof(*p_plaintext_ecdsa_data)); + + sgx_status = sgx_unseal_data(p_ecdsa_blob, + (uint8_t *)p_plaintext_ecdsa_data, + &plaintext_length, + (uint8_t *)plocal_secret_ecdsa_data, + &decryptedtext_length); + if (SGX_SUCCESS != sgx_status) { + // The blob has been corrupted or the platform TCB has been downgraded. + ret = TDQE_ECDSABLOB_ERROR; + goto ret_point; + } + + if ((p_plaintext_ecdsa_data->seal_blob_type != SGX_QL_SEAL_ECDSA_KEY_BLOB) + || (p_plaintext_ecdsa_data->ecdsa_key_version != SGX_QL_ECDSA_KEY_BLOB_VERSION_0)) { + ret = TDQE_ECDSABLOB_ERROR; + goto ret_point; + } + + if (decryptedtext_length != sizeof(ref_ciphertext_ecdsa_data_sdk_t) + || plaintext_length != sizeof(ref_plaintext_ecdsa_data_sdk_t)) { + ret = TDQE_ECDSABLOB_ERROR; + goto ret_point; + } + + /* Create report to get current cpu_svn and isv_svn. */ + memset(&report, 0, sizeof(report)); + sgx_status = sgx_create_report(NULL, NULL, &report); + if (SGX_SUCCESS != sgx_status) { + if (SGX_ERROR_OUT_OF_MEMORY == sgx_status) { + ret = TDQE_ERROR_OUT_OF_MEMORY; + } + else { + ret = TDQE_ERROR_UNEXPECTED; + } + goto ret_point; + } + + if (NULL != p_report_body) { + memcpy(p_report_body, &report.body, sizeof(*p_report_body)); + } + + // Update the Key Blob using the SEAL Key for the current TCB if the TCB is + // upgraded after the Key Blob is generated. Here memcmp cpu_svn might be + // different even though they're actually the same, but for defense in depth we + // will keep this comparison here. + if ((memcmp(&report.body.cpu_svn, &p_ecdsa_blob->key_request.cpu_svn, sizeof(report.body.cpu_svn))) || + (report.body.isv_svn != p_ecdsa_blob->key_request.isv_svn)) { + sgx_status = sgx_seal_data(sizeof(*p_plaintext_ecdsa_data), + (uint8_t*)p_plaintext_ecdsa_data, + sizeof(*plocal_secret_ecdsa_data), + (uint8_t*)plocal_secret_ecdsa_data, + SGX_QL_TRUSTED_ECDSA_BLOB_SIZE_SDK, + (sgx_sealed_data_t *)local_ecdsa_blob); + if (SGX_SUCCESS != sgx_status) { + if (SGX_ERROR_OUT_OF_MEMORY == sgx_status) { + ret = TDQE_ERROR_OUT_OF_MEMORY; + } + else { + ret = TDQE_ERROR_UNEXPECTED; + } + goto ret_point; + } + memcpy(p_ecdsa_blob, local_ecdsa_blob, blob_size); + resealed = TRUE; + } + + if (NULL != p_pub_key_id) { + memcpy(p_pub_key_id, &p_plaintext_ecdsa_data->ecdsa_id, sizeof(p_plaintext_ecdsa_data->ecdsa_id)); + } + if (NULL != p_secret_ecdsa_data) { + memcpy(p_secret_ecdsa_data, plocal_secret_ecdsa_data, sizeof(*p_secret_ecdsa_data)); + } + +ret_point: + + // Clear the output buffer to make sure nothing leaks. + memset_s(plocal_secret_ecdsa_data, sizeof(*plocal_secret_ecdsa_data), 0, sizeof(*plocal_secret_ecdsa_data)); + if (TDQE_SUCCESS == ret) { + *p_is_resealed = resealed; + } + return ret; +} + +/** + * An external function exposed through the EDL to verify the ECDSA Blob. It will verify the format of the blob and + * check the authenticity using the seal key. If the TCB of the platform has increased since the last time the blob was + * sealed, it will be resealed to the new TCB and the p_is_resealed will be set to TRUE. It will also optionally return + * the pub key id. + * + * @param p_blob [In, Out] Pointer to the ECDSA Blob. Must not be NULL and the full buffer must be inside the + * enclave's memory space. If the blob was resealed, upon return, the p_blob will point to the resealed + * blob and the caller should save it. + * @param blob_size [In] Size in bytes of the ECDSA blob buffer pointed to by p_blob. + * @param p_is_resealed [In, Out] Pointer to flag that will be updated to true if the inputted blob is resealed. This + * will happen when the platform TCB has been increased since it was last sealed. Must not be + * NULL. + * @param p_report_body + * @param pub_key_id_size [In] Size in bytes of the optional p_pub_key_id. If p_pub_key_id is NULL, pub_key_id_size + * must be zero. The size must be large enough to contain a SHA256 hash. + * @param p_pub_key_id [In, Out] Optional pointer to contain the ECDSA attestation public keys ID. If not null, the + * full buffer must inside the enclave's memory space. + * + * @return TDQE_SUCCESS ECDSA The blob verification passed. + * @return TDQE_ERROR_INVALID_PLATFORM + * @return TDQE_ERROR_OUT_OF_MEMORY Heap memory was exhausted. + * @return TDQE_ERROR_INVALID_PARAMETER One of the inputted parameters in invalid. + * @return TDQE_ECDSABLOB_ERROR There is a problem with the inputted blob format of unsealing. + * @return TDQE_ERROR_UNEXPECTED There is a problem retrieving the current platform TCB or resealing of the BLOB. + */ +uint32_t verify_blob(uint8_t *p_blob, + uint32_t blob_size, + uint8_t *p_is_resealed, + sgx_report_body_t *p_report_body, + uint32_t pub_key_id_size, + uint8_t *p_pub_key_id) +{ + ref_plaintext_ecdsa_data_sdk_t plain_text; + + if (!is_verify_report2_available()) { + return (TDQE_ERROR_INVALID_PLATFORM); + } + // Actually, some cases here will be checked with code generated by + // edger8r. Here we just want to defend in depth. + if (NULL == p_blob || NULL == p_is_resealed) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + + if (SGX_QL_TRUSTED_ECDSA_BLOB_SIZE_SDK != blob_size) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + + if (!sgx_is_within_enclave(p_blob, blob_size)) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + + if ((pub_key_id_size != 0 && NULL == p_pub_key_id) || + (pub_key_id_size == 0 && NULL != p_pub_key_id)) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + + if (NULL != p_pub_key_id) { + if (pub_key_id_size < sizeof(sgx_sha256_hash_t)) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + if (!sgx_is_within_enclave(p_pub_key_id, pub_key_id_size)) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + } + if (NULL != p_report_body) { + if (!sgx_is_within_enclave(p_report_body, sizeof(*p_report_body))) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + } + + return((uint32_t)random_stack_advance(verify_blob_internal,p_blob, + blob_size, + p_is_resealed, + &plain_text, + p_report_body, + p_pub_key_id, + pub_key_id_size, + (ref_ciphertext_ecdsa_data_sdk_t*) NULL)); +} + +/** + * External function exposed through the EDL used to return the TDQE report and the PPID encryption key required to get + * the PCE identity information. The PCE requires that the PPID be encrypted with a public key. The reference supports + * 1 type of certification data: + * 1. PPID_RSA3072_ENCRYPTED. + * If PPID_CLEARTEXT was supported, the QE will generate an RSA3072 key pair and store both the public and private parts + * in the enclave's global memory. Reference Note: This requires that this function be called before the + * store_cert_data() function in order to properly decrypt the PPID returned by the PCE and store it in the blob. This + * function does not take the blob as input so the QE stores it in global memory. If the QE is unloaded between this + * function and the store_cert_data(), the ephemeral private key will be lost and the decryption of PPID in + * store_cert_data() will fail. For a production version of the QE, the private key should be stored in the blob to keep + * the QE stateless. The platform software may consider storing the encryption public key if it intends to recertify + * (request PCE to re-sign at a higher TCB) without calling the QE to re-generate an encryption key and a new QE REPORT. + * + * For PPID_RSA3072_ENCRYPTED, the QE will use the hardcoded public key owned by the quote verifier and store the PPID + * encrypted by this RSA key in the ECDSA blob. + * + * + * NOTE: This is an optional function. If the other cert_key_types are used, the TDQE does not need to generate an + * ephemeral PPID encryption key. + * + * @param p_pce_target_info + * [In] Pointer to the target_info buffer of the PCE. It must not be NULL and the full target info + * buffer must reside in the enclave's memory space. + * @param p_tdqe_report + * [In, Out] Pointer to the QE report buffer targeting the PCE. It must not be NULL and full report + * buffer must reside in the enclave's memory space. + * @param crypto_suite + * [In] Indicates the crypto algorithm to use to encrypt the PPID. Currently, only RSA3072 keys are + * supported. This is the type of key this function will generate. + * @param cert_key_type + * [In] Indicates whether to use the hard-coded public key or generate a new one. This option allows + * the reference to demonstrate creating an encryption key on-demand or to use the hard-coded value. + * Using the hard-coded value typically means the PPID is to remain private on the platform. Must be + * PPID_RSA3072_ENCRYPTED. + * + * @param key_size [In] The size in bytes of the supplied p_public_key buffer. Currently, it must be equal to the size + * of an RSA3072 public key. 4 byte 'e' and 256 byte 'n'. + * @param p_public_key + * [In, Out] Pointer to the buffer that will contain the public key used to encrypt the PPID. It must + * not be NULL and the buffer must reside within the enclave's memory space. + * + * @return TDQE_SUCCESS Function successfully generated or retrieved the encryption key and generated a REPORT + * targeting the PCE. + * @return TDQE_ERROR_INVALID_PLATFORM + * @return TDQE_ERROR_INVALID_PARAMETER Invalid parameter. + * @return TDQE_ERROR_UNEXPECTED An internal error occurred. + */ +uint32_t get_pce_encrypt_key(const sgx_target_info_t* p_pce_target_info, + sgx_report_t* p_tdqe_report, + uint8_t crypto_suite, + uint16_t cert_key_type, + uint32_t key_size, + uint8_t* p_public_key) +{ + tdqe_error_t ret = TDQE_SUCCESS; + sgx_status_t sgx_status = SGX_SUCCESS; + sgx_report_data_t report_data = { 0 }; + sgx_sha_state_handle_t sha_handle = NULL; + pce_rsaoaep_3072_encrypt_pub_key_t* p_rsa_pub_key; + + if (!is_verify_report2_available()) { + return (TDQE_ERROR_INVALID_PLATFORM); + } + if (p_pce_target_info == NULL || !sgx_is_within_enclave(p_pce_target_info, sizeof(*p_pce_target_info))) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + + if (p_public_key == NULL || !sgx_is_within_enclave(p_public_key, key_size)) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + + if (p_tdqe_report == NULL || !sgx_is_within_enclave(p_tdqe_report, sizeof(*p_tdqe_report))) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + + if (crypto_suite != PCE_ALG_RSA_OAEP_3072) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + + if (key_size != sizeof(*p_rsa_pub_key)) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + // Only PPID_RSA3072_ENCRYPTED is supported when using production mode PCE. + if (PPID_RSA3072_ENCRYPTED != cert_key_type) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + + if ((p_pce_target_info->attributes.flags & SGX_FLAGS_PROVISION_KEY) != SGX_FLAGS_PROVISION_KEY || + (p_pce_target_info->attributes.flags & SGX_FLAGS_DEBUG) != 0) + { + //PCE must have access to provisioning key + //Can't be debug PCE + return(TDQE_ERROR_INVALID_PARAMETER); + } + + p_rsa_pub_key = (pce_rsaoaep_3072_encrypt_pub_key_t*)p_public_key; + memcpy(p_rsa_pub_key->e, g_ref_pubkey_e_be, sizeof(p_rsa_pub_key->e)); + memcpy(p_rsa_pub_key->n, g_ref_pubkey_n_be, sizeof(p_rsa_pub_key->n)); + + // report_data = SHA256(crypto_suite||rsa_pub_key)||0-padding + do { + sgx_status = sgx_sha256_init(&sha_handle); + if (SGX_SUCCESS != sgx_status) + break; + + sgx_status = sgx_sha256_update(&crypto_suite, + sizeof(uint8_t), + sha_handle); + if (SGX_SUCCESS != sgx_status) + break; + //(MOD followed by e) + sgx_status = sgx_sha256_update(p_rsa_pub_key->n, + sizeof(p_rsa_pub_key->n), + sha_handle); + if (SGX_SUCCESS != sgx_status) + break; + sgx_status = sgx_sha256_update(p_rsa_pub_key->e, + sizeof(p_rsa_pub_key->e), + sha_handle); + if (SGX_SUCCESS != sgx_status) + break; + sgx_status = sgx_sha256_get_hash(sha_handle, + reinterpret_cast(&report_data)); + } while (0); + if (SGX_SUCCESS != sgx_status) { + ret = TDQE_ERROR_UNEXPECTED; + goto ret_point; + } + + sgx_status = sgx_create_report(p_pce_target_info, &report_data, p_tdqe_report); + if (SGX_SUCCESS != sgx_status) { + if (SGX_ERROR_OUT_OF_MEMORY == sgx_status) { + ret = TDQE_ERROR_OUT_OF_MEMORY; + } + else { + ret = TDQE_ERROR_UNEXPECTED; + } + goto ret_point; + } + +ret_point: + // Clear critical output data on error + if (TDQE_SUCCESS != ret) { + memset_s(p_tdqe_report, sizeof(*p_tdqe_report), 0, sizeof(*p_tdqe_report)); + } + if (sha_handle != NULL) { + sgx_sha256_close(sha_handle); + } + + return(ret); +} + +/** + * External function exposed through the EDL to generate the ECDSA attestation key. The generated key will be stored in + * the ECDSA blob passed in to the function. The public part of the key is MAC'd and the private key is encrypted and + * MAC'd with the QE sealing key. First the attestation key is generated and its + * SHA256(public_key||authendication_data) is added to the returned QE REPORT.report_data. The caller can then send the + * report to the PCE to be certified. Once certified, the certification data is given back to this enclave + * (store_cert_data()) to be sealed along with the attestation key in this fucntion. This function must be called + * before the store_cert_data() function unless the store_cert_data() function is only called to re-certify an existing + * key already in an existing ECDSA blob. If the store_cert_data() function is called without first generating the key, + * the ECDSA blob verification will fail or the quote signatures will not match PCE certified attestation keys. + * + * Any data in the p_blob will be overwritten when this fuction is called. + * + * @param p_blob [In, Out] Pointer to the ECDSA Blob. Must not be NULL and the full buffer must be inside the + * enclave's memory space. If the blob was resealed, upon return, the p_blob will point to the + * resealed blob and the caller should save it.[in, out] Pointer to the ECDSA Blob. + * @param blob_size [In] Size in bytes of the ECDSA blob buffer pointed to by p_blob. + * @param p_pce_target_info + * [In] Pointer to the target_info of the PCE. It must not be NULL and must reside in the enclave's memory + * space. + * @param p_tdqe_report + * [In, Out] Pointer to the outputted QE report targeting the PCE. The Report's ReportData will contain + * the SHA256 hash of the ECDSA public key. The hash is generated using the big endian formatted ECDSA + * public key. SHA256(X||Y) where both X and Y are in Big Endian format. + * @param p_authentication_data + * [In] Optional pointer to the extra authentication data provided by the caller. This data will be + * included in the quote and signed by the ECDSA attestation. If provided the + * authentication_data_size must not be zero and the full buffer must reside inside the enclave's + * memory space. + * @param authentication_data_size + * [In] The size in bytes of the data pointed to by p_authentication_data. If this value must be zero + * if the p_authentication_data pointer is NULL and it must be non-zero of it is not NULL. + * + * @return TDQE_SUCCESS The attestation keys was successfully generated. The blob will have the ECDSA key and be + * sealed. The QE Report targeting the PCE is returned with the ReportData containing the hash + * of the ECDSA attestation** public key and authentication data. + * @return TDQE_ERROR_INVALID_PLATFORM + * @return TDQE_ERROR_INVALID_PARAMETER + * @return TDQE_ERROR_OUT_OF_MEMORY + * @return TDQE_ERROR_ATT_KEY_GEN + * @return TDQE_ERROR_UNEXPECTED + */ +uint32_t gen_att_key(uint8_t *p_blob, + uint32_t blob_size, + const sgx_target_info_t *p_pce_target_info, + sgx_report_t *p_tdqe_report, + uint8_t *p_authentication_data, + uint32_t authentication_data_size) +{ + tdqe_error_t ret = TDQE_SUCCESS; + sgx_status_t sgx_status = SGX_SUCCESS; + sgx_sha_state_handle_t sha_handle = NULL; + sgx_report_data_t report_data = { 0 }; + ref_plaintext_ecdsa_data_sdk_t plaintext_data; + + if (!is_verify_report2_available()) { + return (TDQE_ERROR_INVALID_PLATFORM); + } + // + // provide extra protection for attestation key by + // randomizing its address and securely aligning it + // + using cciphertext_data = randomly_placed_object< + sgx::custom_alignment_aligned< + ref_ciphertext_ecdsa_data_sdk_t, + alignof(ref_ciphertext_ecdsa_data_sdk_t), + __builtin_offsetof(ref_ciphertext_ecdsa_data_sdk_t, ecdsa_private_key), + sizeof(((ref_ciphertext_ecdsa_data_sdk_t*)0)->ecdsa_private_key)>>; + // + // instance of randomly_placed_object + // + cciphertext_data ociphertext_data_buf; + // + // pointer to instance of custom_alignment_aligned + // + auto* ociphertext_data = ociphertext_data_buf.instantiate_object(); + + ref_ciphertext_ecdsa_data_sdk_t* pciphertext_data = &ociphertext_data->v; + + sgx_key_id_t req_key_id = { 0 }; + + if ((NULL == p_blob) || + (NULL == p_pce_target_info) || + (NULL == p_tdqe_report)) + return(TDQE_ERROR_INVALID_PARAMETER); + + if (SGX_QL_TRUSTED_ECDSA_BLOB_SIZE_SDK != blob_size) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + + // Check whether p_blob is copied into EPC. If we want to reduce the + // memory usage, maybe we can leave the p_blob outside EPC. + if (!sgx_is_within_enclave(p_blob, blob_size)) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + + if (!sgx_is_within_enclave(p_pce_target_info, sizeof(*p_pce_target_info))) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + + if (!sgx_is_within_enclave(p_tdqe_report, sizeof(*p_tdqe_report))) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + + if ((p_pce_target_info->attributes.flags & SGX_FLAGS_PROVISION_KEY) != + SGX_FLAGS_PROVISION_KEY || (p_pce_target_info->attributes.flags & SGX_FLAGS_DEBUG) != 0) + { + //PCE must have access to provisioning key + //Can't be debug PCE + return(TDQE_ERROR_INVALID_PARAMETER); + } + + // ECDSA quotes supports 'authentication_data' that will be signed by the PCE's PCK along with the ECDSA Attestation key + if ((0 != authentication_data_size) && (NULL == p_authentication_data)) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + if ((0 == authentication_data_size) && (NULL != p_authentication_data)) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + if (p_authentication_data) { + if (!sgx_is_within_enclave(p_authentication_data, authentication_data_size)) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + ///todo: The intention is to allow this data to be truly variable. This check forces it to be a fixed size. + //Make ake the necessary changes to fully support a variable size in the future. + if (REF_ECDSDA_AUTHENTICATION_DATA_SIZE != authentication_data_size) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + } + + memset(&plaintext_data, 0, sizeof(plaintext_data)); + + if (UINT16_MAX < authentication_data_size) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + plaintext_data.authentication_data_size = (uint16_t)authentication_data_size; + if (p_authentication_data) { + sgx_lfence(); + memcpy(plaintext_data.authentication_data, p_authentication_data, sizeof(plaintext_data.authentication_data)); + } + + ret = random_stack_advance(get_att_key_based_from_seal_key,&pciphertext_data->ecdsa_private_key, + &plaintext_data.ecdsa_att_public_key, + &req_key_id); + if (TDQE_SUCCESS != ret) { + if (TDQE_ERROR_CRYPTO == ret) { + ret = TDQE_ERROR_ATT_KEY_GEN; + } + goto ret_point; + } + // Public key is returned in big endian format. Store public key and generate the hash using big + // endian format. + // The Private key is returned in little endian format. Store the private key is little endian + // as the signing algorithm is uses little endian format. + + do { + sgx_status = sgx_sha256_init(&sha_handle); + if (SGX_SUCCESS != sgx_status) { + break; + } + + sgx_status = sgx_sha256_update((uint8_t*)&plaintext_data.ecdsa_att_public_key, + sizeof(plaintext_data.ecdsa_att_public_key), + sha_handle); + if (SGX_SUCCESS != sgx_status) { + break; + } + + sgx_status = sgx_sha256_update((uint8_t*)plaintext_data.authentication_data, + sizeof(plaintext_data.authentication_data), + sha_handle); + if (SGX_SUCCESS != sgx_status) { + break; + } + + sgx_status = sgx_sha256_get_hash(sha_handle, + reinterpret_cast(&plaintext_data.ecdsa_id)); + if (SGX_SUCCESS != sgx_status) { + break; + } + + } while (0); + if (SGX_SUCCESS != sgx_status) { + ret = TDQE_ERROR_UNEXPECTED; + goto ret_point; + } + ref_static_assert(sizeof(plaintext_data.ecdsa_id) <= sizeof(report_data)); + memcpy(&report_data, &plaintext_data.ecdsa_id, sizeof(plaintext_data.ecdsa_id)); + + sgx_status = sgx_create_report(p_pce_target_info, &report_data, p_tdqe_report); + if (SGX_SUCCESS != sgx_status) { + if (SGX_ERROR_OUT_OF_MEMORY == sgx_status) { + ret = TDQE_ERROR_OUT_OF_MEMORY; + } + else { + ret = TDQE_ERROR_UNEXPECTED; + } + goto ret_point; + } + + plaintext_data.seal_blob_type = SGX_QL_SEAL_ECDSA_KEY_BLOB; + plaintext_data.ecdsa_key_version = SGX_QL_ECDSA_KEY_BLOB_VERSION_0; + // Call sgx_seal_data to generate the ECDSA Blob with the updated information + sgx_status = sgx_seal_data(sizeof(plaintext_data), + reinterpret_cast(&plaintext_data), //plaintext as AAD + sizeof(*pciphertext_data), + reinterpret_cast(pciphertext_data), //ciphertext data to SEAL + blob_size, + (sgx_sealed_data_t*)p_blob); + if (SGX_SUCCESS != sgx_status) { + ret = TDQE_ERROR_UNEXPECTED; + goto ret_point; + } + +ret_point: + // Clear output data on error + if (TDQE_SUCCESS != ret) { + (void)memset_s(p_tdqe_report, sizeof(*p_tdqe_report), 0, sizeof(*p_tdqe_report)); + } + + if (NULL != sha_handle) { + sgx_sha256_close(sha_handle); + } + + // Clear out any sensitive data from the stack before returning. + memset_s(pciphertext_data, sizeof(*pciphertext_data), 0, sizeof(*pciphertext_data)); + return(ret); +} + +/** + * External function exposed through the EDL used to store the ECDSA blob with all of the certification data from the + * PCE along with the ECDSA attestation key. It must be called after retrieving the PCE identity information, generating + * the ECDSA attestation key pair, and getting the PCE to certify the ECDSA attestation key. Once the ECDSA blob has been + * stored with all of the requisite information, quote generation can take place. + * + * @param p_plaintext_data + * [In] Pointer to the plaintext data to store in the blob. Most of the plaintext values are populated + * by the calling code. It must not be NULL and the full plaintext buffer must reside in the enclave's + * memory space. + * @param cert_key_type + * [In] Indicates the type of certification data used in the quote. Only PPID_RSA3072 is supported. If + * PPID_CLEARTEXT was supported, the PPID will be decrypted by the RSA private before sealing + * (encrypted) it in the ECDSA blob with the seal key. Otherwise, the encrypted PPID is left + * encrypted by the RSA key and the sealed (encrypted) by the seal key. + * @param p_encrypted_ppid + * [In] Pointer to the encrypted PPID as generated by the PCE. + * @param encrypted_ppid_size + * [In] Size of the enrypted PPID. + * @param p_blob [In, Out] Pointer the buffer that will contain the sealed ECDSA blob. For recertification, it will + * contain a valid ECDSA blob that will be unsealed to extract the secret data and then be resealed + * with the new certification data. Otherwise, the contents of the p_blob buffer will be overwritten + * with the new certification data and new secret data. It must not be NULL and the buffer must reside + * in the enclave's memory space. + * @param blob_size [In] Size in bytes of the p_blob buffer. Must be equal to SGX_QL_TRUSTED_ECDSA_BLOB_SIZE_SDK. + * + * @return TDQE_SUCCESS + * @return TDQE_ERROR_INVALID_PLATFORM + * @return TDQE_ERROR_INVALID_PARAMETER + * @return TDQE_ERROR_UNEXPECTED + * @return TDQE_ERROR_OUT_OF_MEMORY + * @return TDQE_ERROR_CRYPTO + * @return TDQE_ECDSABLOB_ERROR + */ +uint32_t store_cert_data(ref_plaintext_ecdsa_data_sdk_t *p_plaintext_data, + sgx_ql_cert_key_type_t cert_key_type, + uint8_t *p_encrypted_ppid, + uint32_t encrypted_ppid_size, + uint8_t *p_blob, + uint32_t blob_size) +{ + tdqe_error_t ret = TDQE_SUCCESS; + sgx_status_t sgx_status = SGX_SUCCESS; + + if (!is_verify_report2_available()) { + return (TDQE_ERROR_INVALID_PLATFORM); + } + // + // provide extra protection for attestation key by + // randomizing its address and securely aligning it + // + using cciphertext_data = randomly_placed_object< + sgx::custom_alignment_aligned< + ref_ciphertext_ecdsa_data_sdk_t, + alignof(ref_ciphertext_ecdsa_data_sdk_t), + __builtin_offsetof(ref_ciphertext_ecdsa_data_sdk_t, ecdsa_private_key), + sizeof(((ref_ciphertext_ecdsa_data_sdk_t*)0)->ecdsa_private_key)>>; + // + // instance of randomly_placed_object + // + cciphertext_data ociphertext_data_buf; + // + // pointer to instance of custom_alignment_aligned + // + auto* ociphertext_data = ociphertext_data_buf.instantiate_object(); + ref_ciphertext_ecdsa_data_sdk_t* pciphertext_data = &ociphertext_data->v; + + ref_plaintext_ecdsa_data_sdk_t local_plaintext_data; + uint8_t is_resealed; + + if ((NULL == p_blob) || + (NULL == p_plaintext_data)) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + if (blob_size != SGX_QL_TRUSTED_ECDSA_BLOB_SIZE_SDK) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + /* Check whether p_blob is copied into EPC. If we want to reduce the + memory usage, maybe we can leave the p_blob outside EPC. */ + if (!sgx_is_within_enclave(p_blob, blob_size)) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + + if (NULL != p_encrypted_ppid) { + if ((!sgx_is_within_enclave(p_encrypted_ppid, REF_RSA_OAEP_3072_MOD_SIZE)) || + (REF_RSA_OAEP_3072_MOD_SIZE != encrypted_ppid_size)) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + } + + if (!sgx_is_within_enclave(p_plaintext_data, sizeof(*p_plaintext_data))) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + + // Only 3072 encrypted PPID is supported post alpha. + if (PPID_RSA3072_ENCRYPTED != cert_key_type) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + + // Verify ECDSA p_blob + ret = random_stack_advance(verify_blob_internal,p_blob, + blob_size, + &is_resealed, + &local_plaintext_data, + (sgx_report_body_t*) NULL, + (uint8_t*) NULL, + 0, + pciphertext_data); + if (TDQE_SUCCESS != ret) { + goto ret_point; + } + + // Compare the ECDSA_ID passed in matches the value in the existing ECDSA Blob. This should catch keys that haven't been generated before storing + if (0 != memcmp(&local_plaintext_data.ecdsa_id, &p_plaintext_data->qe_report.body.report_data, sizeof(local_plaintext_data.ecdsa_id))) { //ECDSA_ID is the first 32bytes of REPORT.ReportData + ret = TDQE_ERROR_INVALID_PARAMETER; + goto ret_point; + } + + /* Create report to get current cpu_svn and isv_svn. */ + sgx_report_t report; + memset(&report, 0, sizeof(report)); + sgx_status = sgx_create_report(NULL, NULL, &report); + if (SGX_SUCCESS != sgx_status) { + if (SGX_ERROR_OUT_OF_MEMORY == sgx_status) { + ret = TDQE_ERROR_OUT_OF_MEMORY; + } + else { + ret = TDQE_ERROR_UNEXPECTED; + } + goto ret_point; + } + + /* Store the current QE PSVN with the blob to indicate what the TCB was when sealed. */ + memcpy(&local_plaintext_data.seal_cpu_svn, &report.body.cpu_svn, sizeof(local_plaintext_data.seal_cpu_svn)); + local_plaintext_data.seal_qe_isv_svn = report.body.isv_svn; + + // For recertification, the PPID does not change. No need to process the PPID information again since it is + // unchanged from the previous certification. + // PPID_CLEARTEXT is not supported. Parameter check above will not allow this cert_key_type. + if (NULL != p_encrypted_ppid) { + pciphertext_data->is_clear_ppid = 0; // Specifies that ciphertext part of the blob contains the ciphertext PPID instead of the cleartext PPID + pciphertext_data->encrypted_ppid_data.crypto_suite = PCE_ALG_RSA_OAEP_3072; + pciphertext_data->encrypted_ppid_data.encrypted_ppid_buf_size = encrypted_ppid_size; + memcpy(pciphertext_data->encrypted_ppid_data.encrypted_ppid, p_encrypted_ppid, encrypted_ppid_size); //encrypted_ppid_size checked above. + } + + local_plaintext_data.cert_qe_isv_svn = report.body.isv_svn; + + // Copy in the PCE identity used to certify the ECDSA Attestation key + memcpy(&local_plaintext_data.cert_cpu_svn, &p_plaintext_data->cert_cpu_svn, sizeof(local_plaintext_data.cert_cpu_svn)); + local_plaintext_data.cert_pce_info.pce_isv_svn = p_plaintext_data->cert_pce_info.pce_isv_svn; + local_plaintext_data.cert_pce_info.pce_id = p_plaintext_data->cert_pce_info.pce_id; + + // Re-copy in the old certification data + local_plaintext_data.signature_scheme = p_plaintext_data->signature_scheme; + memcpy(&local_plaintext_data.qe_report, &p_plaintext_data->qe_report, sizeof(local_plaintext_data.qe_report)); + memcpy(&local_plaintext_data.qe_report_cert_key_sig, &p_plaintext_data->qe_report_cert_key_sig, sizeof(local_plaintext_data.qe_report_cert_key_sig)); + local_plaintext_data.certification_key_type = p_plaintext_data->certification_key_type; + memcpy_s(&local_plaintext_data.pce_target_info, sizeof(local_plaintext_data.pce_target_info), &p_plaintext_data->pce_target_info, sizeof(p_plaintext_data->pce_target_info)); + memcpy_s(&local_plaintext_data.raw_cpu_svn, sizeof(local_plaintext_data.raw_cpu_svn), &p_plaintext_data->raw_cpu_svn, sizeof(p_plaintext_data->raw_cpu_svn)); + local_plaintext_data.raw_pce_info.pce_isv_svn = p_plaintext_data->raw_pce_info.pce_isv_svn; + local_plaintext_data.raw_pce_info.pce_id = p_plaintext_data->raw_pce_info.pce_id; + memcpy_s(&local_plaintext_data.qe_id, sizeof(local_plaintext_data.qe_id), &p_plaintext_data->qe_id, sizeof(p_plaintext_data->qe_id)); + + // Call sgx_seal_data to generate the ECDSA Blob with the updated information + sgx_status = sgx_seal_data(sizeof(local_plaintext_data), + reinterpret_cast(&local_plaintext_data), //plaintext as AAD + sizeof(*pciphertext_data), + reinterpret_cast(pciphertext_data), //ciphertext data to SEAL + blob_size, + (sgx_sealed_data_t*)p_blob); + if (SGX_SUCCESS != sgx_status) { + ret = TDQE_ERROR_UNEXPECTED; + goto ret_point; + } + +ret_point: + memset_s(pciphertext_data, sizeof(*pciphertext_data), 0, sizeof(*pciphertext_data)); + return(ret); +} + +/** + * External function exposed through the EDL used to generate a quote. It will take the TD report requesting a + * quote. It also takes the ECDSA blob that contains the private attestation key and the PCE certification data. + * The other inputs are the data required to fill out the quote structure. The application enclave's report will + * verified and signed with the ECDSA attestation private key and will return the resulting quote in the provided + * buffer. The caller can also optionally request that this enclave generate a report targeting the requesting + * enclave along with a nonce. If requested, the resulting QE report will be returned with the QE_Report.ReportData + * equal to the nonce. This allows the requesting enclave to verify the Quote was generated by a valid QE. + * + * @param p_blob [In, Out] Pointer to the ECDSA Blob. Must not be NULL and the full buffer must be inside the + * enclave's memory space. If the blob was resealed, upon return, the p_blob will point to the + * resealed blob and the caller should save it.[in, out] Pointer to the ECDSA Blob. + * @param blob_size [In] Size in bytes of the ECDSA blob buffer pointed to by p_blob. + * @param p_td_report + * [In] The TD report. It must be generated in a Trust Domain on this physical platform. + * @param p_nonce [In] Optional pointer to a nonce. This nonce will be used when the caller requests this enclave to + * generate a report. The resulting report's report_data field will contain the SHA256(nonce||quote). + * If the p_nonce is NULL, then the p_qe_report must be NULL. IF the p_nonce is not NULL, then the + * p_qe_report must not be NULL. If provided, the buffer must reside in the enclave's memory space. + * @param p_app_enclave_target_info [in] The application enclave's target info. + * @param p_qe_report_out + * [In, Out] Optional pointer to this enclave's report targeting the requesting enclave. The resulting + * report's report_data field will contain the SHA256(nonce||quote). If the p_nonce is NULL, then the + * p_qe_report must be NULL. IF the p_nonce is not NULL, then the p_qe_report must not be NULL. If + * provided, the buffer must reside in the enclave's memory space. + * @param p_quote_buf [out] Pointer to the output buffer for quote. + * @param quote_size [in] The size of buffer pointed to by p_quote, in bytes. It must be at least the value returned by + the ref_get_quote_size() API. + * @param p_certification_data [In] The optional cert_data, it can be NULL. + * @param cert_data_size [in] The size of buffer pointed to by p_certification_data, in bytes. If p_certification_data is NULL, it should + be 0. + + * @return TDQE_SUCCESS + * @return TDQE_ERROR_INVALID_PLATFORM + * @return TDQE_ERROR_INVALID_PARAMETER + * @return TDQE_ECDSABLOB_ERROR + * @return TDQE_ERROR_UNEXPECTED + * @return TDQE_ERROR_INVALID_REPORT + * @return TDQE_ERROR_OUT_OF_MEMORY + */ +uint32_t gen_quote(uint8_t *p_blob, + uint32_t blob_size, + const sgx_report2_t *p_td_report, + const sgx_quote_nonce_t *p_nonce, + const sgx_target_info_t *p_app_enclave_target_info, + sgx_report_t *p_qe_report_out, + uint8_t *p_quote_buf, + uint32_t quote_size, + const uint8_t * p_certification_data, + uint32_t cert_data_size) +{ + tdqe_error_t ret = TDQE_SUCCESS; + sgx_quote4_t *p_quote; + sgx_ecdsa_sig_data_v4_t *p_quote_sig; + sgx_ql_certification_data_t *p_qe_report_cert_header; + sgx_qe_report_certification_data_t *p_qe_report_cert_data; + uint8_t is_resealed = 0; + uint32_t sign_size = 0; + sgx_status_t sgx_status = SGX_SUCCESS; + sgx_report_t qe_report; + size_t required_buffer_size = 0; + ref_plaintext_ecdsa_data_sdk_t plaintext; + + if (!is_verify_report2_available()) { + return (TDQE_ERROR_INVALID_PLATFORM); + } + // + // provide extra protection for attestation key by + // randomizing its address and securely aligning it + // + using cciphertext = randomly_placed_object< + sgx::custom_alignment_aligned< + ref_ciphertext_ecdsa_data_sdk_t, + alignof(ref_ciphertext_ecdsa_data_sdk_t), + __builtin_offsetof(ref_ciphertext_ecdsa_data_sdk_t, ecdsa_private_key), + sizeof(((ref_ciphertext_ecdsa_data_sdk_t*)0)->ecdsa_private_key)>>; + // + // instance of randomly_placed_object + // + cciphertext ociphertext_buf; + // + // pointer to instance of custom_alignment_aligned + // + auto* ociphertext = ociphertext_buf.instantiate_object(); + ref_ciphertext_ecdsa_data_sdk_t* pciphertext = &ociphertext->v; + + sgx_sha384_hash_t hash384_buf = {0}; + sgx_ecc_state_handle_t handle = NULL; + sgx_ql_auth_data_t *p_auth_data; + sgx_ql_certification_data_t *p_certification_data_output; + sgx_ql_ppid_rsa3072_encrypted_cert_info_t *p_cert_encrypted_ppid_info_data; + sgx_sha_state_handle_t sha_quote_context = NULL; + sgx_report_data_t qe_report_data; + tee_tcb_info_t* p_tee_tcb_info; + tee_info_t* p_tee_info; + sgx_ec256_public_t le_att_pub_key; + uint8_t verify_result = SGX_EC_INVALID_SIGNATURE; + + memset(&plaintext, 0, sizeof(plaintext)); + + // Actually, some cases here will be checked with code generated by + // edger8r. Here we just want to defend in depth. + if ((NULL == p_blob) || + (NULL == p_td_report) || + (NULL == p_quote_buf) || + (!quote_size)) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + if (SGX_QL_TRUSTED_ECDSA_BLOB_SIZE_SDK != blob_size) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + // All these 3 parameters should be all NULL or all not NULL. + if (!((NULL == p_nonce) && (NULL == p_app_enclave_target_info) && (NULL == p_qe_report_out)) + && !((NULL != p_nonce) && (NULL != p_app_enclave_target_info) && (NULL != p_qe_report_out))) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + if (NULL != p_certification_data) + { + sgx_ql_certification_data_t * p_input_certification_data_header = (sgx_ql_certification_data_t *)p_certification_data; + if (PPID_CLEARTEXT > p_input_certification_data_header->cert_key_type + || QL_CERT_KEY_TYPE_MAX < p_input_certification_data_header->cert_key_type) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + if (MAX_CERT_DATA_SIZE < p_input_certification_data_header->size) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + if (sizeof(sgx_ql_certification_data_t) + p_input_certification_data_header->size != cert_data_size) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + } + if (NULL == p_certification_data && cert_data_size !=0) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + + + // The ECDSA Quote is not so large that it needs to be outside the enclave. Verify the full buffer is within + // the EPC. To reduce the ECDSA QE, it can be moved outside the epc. + if (!sgx_is_within_enclave(p_quote_buf, quote_size)) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + + /* Check whether p_blob is copied into EPC. If we want to reduce the + memory usage, maybe we can leave the p_blob outside EPC. */ + if (!sgx_is_within_enclave(p_blob, blob_size)) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + if (!sgx_is_within_enclave(p_td_report, sizeof(*p_td_report))) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + + if (NULL != p_certification_data) { + if (!sgx_is_within_enclave(p_certification_data, cert_data_size)) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + } + + // If the code reaches here, if p_nonce is NULL, then p_qe_report will be + // NULL also. So we only check p_nonce here. + if (p_nonce) { + // Actually Edger8r will alloc the buffer within EPC, this is just kind + // of defense in depth. + if (!sgx_is_within_enclave(p_nonce, sizeof(*p_nonce))) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + if (!sgx_is_within_enclave(p_qe_report_out, sizeof(*p_qe_report_out))) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + if (!sgx_is_within_enclave(p_app_enclave_target_info, sizeof(*p_app_enclave_target_info))) { + return(TDQE_ERROR_INVALID_PARAMETER); + } + } + + ref_static_assert(sizeof(tee_tcb_info_t) == sizeof(p_td_report->tee_tcb_info)); + p_tee_tcb_info = (tee_tcb_info_t*)p_td_report->tee_tcb_info; + if (p_tee_tcb_info->valid[0] != 0xFF || p_tee_tcb_info->valid[1] != 1) { + return(TDQE_REPORT_FORMAT_NOT_SUPPORTED); + } + for (size_t i = 2; i < sizeof(p_tee_tcb_info->valid); i++) { + if (p_tee_tcb_info->valid[i]) { + return(TDQE_REPORT_FORMAT_NOT_SUPPORTED); + } + } + + ref_static_assert(sizeof(tee_info_t) == sizeof(p_td_report->tee_info)); + p_tee_info = (tee_info_t*)p_td_report->tee_info; + for (int i = 0; i < TD_INFO_RESERVED_BYTES; i++) { + if (p_tee_info->reserved[i]) { + return(TDQE_REPORT_FORMAT_NOT_SUPPORTED); + } + } + + // Verify the input report. + sgx_status = sgx_verify_report2(&p_td_report->report_mac_struct); + if (SGX_SUCCESS != sgx_status) { + if (SGX_ERROR_INVALID_PARAMETER == sgx_status) { + return(TDQE_REPORT_FORMAT_NOT_SUPPORTED); + } + else { + return(TDQE_ERROR_INVALID_REPORT); + } + } + + // tee tcb info hash + sgx_status = sgx_sha384_msg((uint8_t *)(&(p_td_report->tee_tcb_info)), sizeof(p_td_report->tee_tcb_info), &hash384_buf); + if (SGX_SUCCESS != sgx_status) { + ret = TDQE_ERROR_UNEXPECTED; + goto ret_point; + } + + //verify the tee tcb hash data data is SHA384(tee tcb info) + if(memcmp(&hash384_buf, &p_td_report->report_mac_struct.tee_tcb_info_hash, sizeof(p_td_report->report_mac_struct.tee_tcb_info_hash))!=0){ + ret = TDQE_ERROR_INVALID_HASH; + goto ret_point; + } + + memset(&hash384_buf, 0x00, sizeof(hash384_buf)); + + // td info hash + sgx_status = sgx_sha384_msg((uint8_t *)(&(p_td_report->tee_info)), sizeof(p_td_report->tee_info), &hash384_buf); + if (SGX_SUCCESS != sgx_status) { + ret = TDQE_ERROR_UNEXPECTED; + goto ret_point; + } + + //verify the td info hash data data is SHA384(td info) + if(memcmp(&hash384_buf, &p_td_report->report_mac_struct.tee_info_hash, sizeof(p_td_report->report_mac_struct.tee_info_hash))!=0){ + ret = TDQE_ERROR_INVALID_HASH; + goto ret_point; + } + + // Verify ECDSA p_blob and create the context + ret = random_stack_advance(verify_blob_internal,p_blob, + blob_size, + &is_resealed, + &plaintext, + (sgx_report_body_t*) NULL, + (uint8_t*) NULL, + 0, + pciphertext); + if (TDQE_SUCCESS != ret) { + goto ret_point; + } + + sign_size = sizeof(sgx_ecdsa_sig_data_v4_t) + // ECDSA sig data structure + sizeof(sgx_ql_auth_data_t) + + sizeof(sgx_ql_certification_data_t) + // We added sgx_qe_report_certification_data_t in version 4 + sizeof(sgx_qe_report_certification_data_t) + + sizeof(sgx_ql_certification_data_t); + if (1 == pciphertext->is_clear_ppid) { + ret = TDQE_ERROR_INVALID_PARAMETER; + goto ret_point; + } + else { + if (!p_certification_data) { + sign_size += (uint32_t)sizeof(sgx_ql_ppid_rsa3072_encrypted_cert_info_t); // RSA3072_Enc_PPID, PCE PSVN and PCE_ID + } + else { + sign_size += ((sgx_ql_certification_data_t *)p_certification_data)->size; + } + } + /* Check for overflow before adding in the variable size of authentication data. */ + if ((UINT32_MAX - sign_size - sizeof(sgx_quote4_t)) < plaintext.authentication_data_size) { + ret = TDQE_ERROR_INVALID_PARAMETER; + goto ret_point; + } + sign_size += plaintext.authentication_data_size; // Authentication data + + required_buffer_size = sizeof(sgx_quote4_t) + sign_size; + + // Make sure the buffer size is big enough. + if (quote_size < required_buffer_size) { + ret = TDQE_ERROR_INVALID_PARAMETER; + goto ret_point; + } + + // Verify sizeof header.userdata is large enough + ref_static_assert(sizeof(plaintext.qe_id) <= sizeof(p_quote->header.user_data)); + + // Clear out the quote buffer + sgx_lfence(); + memset(p_quote_buf, 0, required_buffer_size); + // Set up the component quote structure pointers to point to the correct place within the inputted quote buffer. + p_quote = (sgx_quote4_t *)p_quote_buf; + p_quote->signature_data_len = sign_size; + p_quote_sig = (sgx_ecdsa_sig_data_v4_t*)(p_quote->signature_data); + + p_qe_report_cert_header = ((sgx_ql_certification_data_t *)(p_quote_sig->certification_data)); + p_qe_report_cert_data = (sgx_qe_report_certification_data_t *)(p_qe_report_cert_header->certification_data); + p_qe_report_cert_header->cert_key_type = ECDSA_SIG_AUX_DATA; + + //p_auth_data = (sgx_ql_auth_data_t*)(p_quote_sig->auth_certification_data); + p_auth_data = (sgx_ql_auth_data_t *)(p_quote_sig->certification_data + sizeof(sgx_ql_certification_data_t) + sizeof(sgx_qe_report_certification_data_t)); + p_auth_data->size = (uint16_t)plaintext.authentication_data_size; + + // write initial size for p_qe_report_cert_header->size, will add remain part later. + p_qe_report_cert_header->size = (uint32_t)(sizeof(sgx_qe_report_certification_data_t) + sizeof(sgx_ql_auth_data_t) + + p_auth_data->size + sizeof(sgx_ql_certification_data_t)); + + //Note: This is potentially dangerous pointer math using an untrusted input size. The 'required_buffer_size' check + //above verifies that the size will not put the calculated address and certification data outside of the inputted + //p_quote + quote_size memory. + p_certification_data_output = (sgx_ql_certification_data_t*)((uint8_t*)p_auth_data + sizeof(*p_auth_data) + p_auth_data->size); + + // Populate the quote buffer. + // Set up the header. + p_quote->header.version = QE_QUOTE_VERSION; + p_quote->header.att_key_type = SGX_QL_ALG_ECDSA_P256; + p_quote->header.tee_type = 0x81; // TEE for this attestation, little endian 0x81 means TDX + // Sizes of user_data and qe_id were checked above. If here, then sizes are OK without overflow. + + // Copy in QE_ID from blob + memcpy(&p_quote->header.user_data, &plaintext.qe_id, sizeof(plaintext.qe_id)); + // Copy in Intel's Vender ID + memcpy(p_quote->header.vendor_id, g_vendor_id, sizeof(g_vendor_id)); + // Fill the td report body. + memset(&(p_quote->report_body), 0, sizeof(p_quote->report_body)); + + memcpy(&(p_quote->report_body.tee_tcb_svn), &(p_tee_tcb_info->tee_tcb_svn), sizeof(p_quote->report_body.tee_tcb_svn)); + memcpy(&(p_quote->report_body.mr_seam), &(p_tee_tcb_info->mr_seam), sizeof(p_quote->report_body.mr_seam)); + + memcpy(&(p_quote->report_body.td_attributes), &(p_tee_info->attributes), sizeof(p_quote->report_body.td_attributes)); + memcpy(&(p_quote->report_body.xfam), &(p_tee_info->xfam), sizeof(p_quote->report_body.xfam)); + memcpy(&(p_quote->report_body.mr_td), &(p_tee_info->mr_td), sizeof(p_quote->report_body.mr_td)); + memcpy(&(p_quote->report_body.mr_config_id), &(p_tee_info->mr_config_id), sizeof(p_quote->report_body.mr_config_id)); + memcpy(&(p_quote->report_body.mr_owner), &(p_tee_info->mr_owner), sizeof(p_quote->report_body.mr_owner)); + memcpy(&(p_quote->report_body.mr_owner_config), &(p_tee_info->mr_owner_config), sizeof(p_quote->report_body.mr_owner_config)); + memcpy(p_quote->report_body.rt_mr, p_tee_info->rt_mr, sizeof(p_quote->report_body.rt_mr)); + memcpy(&(p_quote->report_body.report_data), &(p_td_report->report_mac_struct.report_data), sizeof(p_quote->report_body.report_data)); + + memset(&qe_report_data, 0, sizeof(qe_report_data)); + sgx_status = sgx_create_report(NULL, &qe_report_data, &qe_report); + if (SGX_SUCCESS != sgx_status) { + if (SGX_ERROR_OUT_OF_MEMORY == sgx_status) { + ret = TDQE_ERROR_OUT_OF_MEMORY; + } + else { + ret = TDQE_ERROR_UNEXPECTED; + } + goto ret_point; + } + // Generate the quote signature. + sgx_status = sgx_ecc256_open_context(&handle); + if (SGX_ERROR_OUT_OF_MEMORY == sgx_status) { + ret = TDQE_ERROR_OUT_OF_MEMORY; + goto ret_point; + } + else if (SGX_SUCCESS != sgx_status) { + ret = TDQE_ERROR_UNEXPECTED; + goto ret_point; + } + // Sign everything in the quote except the signature_data_len. This allows the quote certification information to change + // to contain the actual PCK cert after initially only carring the PPID+PCEID+TCB without making the quote invalid. + sgx_status = sgx_ecdsa_sign(reinterpret_cast(p_quote), + sizeof(*p_quote) - sizeof(p_quote->signature_data_len), + &pciphertext->ecdsa_private_key, + reinterpret_cast(p_quote_sig->sig), + handle); + if (SGX_ERROR_OUT_OF_MEMORY == sgx_status) { + ret = TDQE_ERROR_OUT_OF_MEMORY; + goto ret_point; + } + else if (SGX_SUCCESS != sgx_status) { + ret = TDQE_ERROR_UNEXPECTED; + goto ret_point; + } + + memcpy(&le_att_pub_key, &plaintext.ecdsa_att_public_key, sizeof(le_att_pub_key)); + //big endian to little endian + SWAP_ENDIAN_32B(le_att_pub_key.gx); + SWAP_ENDIAN_32B(le_att_pub_key.gy); + + // the signature verify code here is for FI (fault injection) mitigation. + sgx_status = sgx_ecdsa_verify(reinterpret_cast(p_quote), + sizeof(*p_quote) - sizeof(p_quote->signature_data_len), + &le_att_pub_key, + reinterpret_cast(p_quote_sig->sig), + &verify_result, + handle); + if (SGX_SUCCESS != sgx_status || SGX_EC_VALID != verify_result) { + if (SGX_SUCCESS != sgx_read_rand((unsigned char*)p_quote_sig->sig, + sizeof(sgx_ec256_signature_t))) + memset(p_quote_sig->sig, 0, sizeof(sgx_ec256_signature_t)); + ret = TDQE_ERROR_UNEXPECTED; + goto ret_point; + } + + // Swap signature x and y from little endian used in sgx_crypto to big endian used in quote byte order + { + size_t i; + uint8_t swap; + for (i = 0; i < 32 / 2; i++) { + swap = p_quote_sig->sig[i]; + p_quote_sig->sig[i] = p_quote_sig->sig[32 - 1 - i]; + p_quote_sig->sig[32 - 1 - i] = swap; + } + for (i = 0; i < 32 / 2; i++) { + swap = p_quote_sig->sig[32 + i]; + p_quote_sig->sig[32 + i] = p_quote_sig->sig[64 - 1 - i]; + p_quote_sig->sig[64 - 1 - i] = swap; + } + } + // Add the public part of the ECDSA key to the quote sig data. Store it in Big Endian + memcpy(p_quote_sig->attest_pub_key, &plaintext.ecdsa_att_public_key, sizeof(p_quote_sig->attest_pub_key)); + + // Add the QE Report to the Quote QE report certification data (the qe report when it was signed by the PCE!). + memcpy(&(p_qe_report_cert_data->qe_report), &plaintext.qe_report.body, sizeof(p_qe_report_cert_data->qe_report)); + + // Add the PCE signature + memcpy(p_qe_report_cert_data->qe_report_sig, &plaintext.qe_report_cert_key_sig, sizeof(p_qe_report_cert_data->qe_report_sig)); + + // Copy in the Authentication Data + if (0 != p_auth_data->size) { + memcpy(p_auth_data->auth_data, plaintext.authentication_data, p_auth_data->size); + } + + if (NULL == p_certification_data) { + p_cert_encrypted_ppid_info_data = (sgx_ql_ppid_rsa3072_encrypted_cert_info_t *)p_certification_data_output->certification_data; + // Prepare the the certification data. PPID_RSA3072_ENCRYPTED = Encrypted_PPID + PCE_TCB + PCEID is supported by the referecne. + p_certification_data_output->cert_key_type = PPID_RSA3072_ENCRYPTED; + p_certification_data_output->size = sizeof(sgx_ql_ppid_rsa3072_encrypted_cert_info_t); + // Get the cert_info_data from the ECDSA blob. + memcpy(p_cert_encrypted_ppid_info_data->enc_ppid, pciphertext->encrypted_ppid_data.encrypted_ppid, sizeof(p_cert_encrypted_ppid_info_data->enc_ppid)); + p_cert_encrypted_ppid_info_data->pce_info = plaintext.cert_pce_info; + memcpy(&p_cert_encrypted_ppid_info_data->cpu_svn, &plaintext.cert_cpu_svn, sizeof(p_cert_encrypted_ppid_info_data->cpu_svn)); + + // update p_qe_report_cert_header->size + p_qe_report_cert_header->size = p_qe_report_cert_header->size + p_certification_data_output->size; + } + else { + sgx_ql_certification_data_t * p_input_certification_data_header = (sgx_ql_certification_data_t *)p_certification_data; + p_certification_data_output->cert_key_type = p_input_certification_data_header->cert_key_type; + p_certification_data_output->size = p_input_certification_data_header->size; + // Get the cert_info_data from the ECDSA blob. + if (0 != memcpy_s(p_certification_data_output->certification_data, p_certification_data_output->size, + &p_input_certification_data_header->certification_data, p_input_certification_data_header->size)) { + ret = TDQE_ERROR_UNEXPECTED; + goto ret_point; + } + + // update p_qe_report_cert_header->size + p_qe_report_cert_header->size = p_qe_report_cert_header->size + p_certification_data_output->size; + } + + // Get the QE's report if requested. + ///todo: It is possible that the untrusted code can change the certification data of the quote (including the + //the signature_length. We may need to modify the quote hash generation to skip the modifiable values!! + if (NULL != p_nonce) { + ref_static_assert(sizeof(qe_report_data) >= sizeof(sgx_sha256_hash_t)); + + sgx_status = sgx_sha256_init(&sha_quote_context); + if (SGX_SUCCESS != sgx_status) { + ret = TDQE_ERROR_UNEXPECTED; + goto ret_point; + } + + memset(&qe_report_data, 0, sizeof(qe_report_data)); + // Update hash for nonce. + sgx_status = sgx_sha256_update((uint8_t *)const_cast(p_nonce), + (uint32_t)sizeof(*p_nonce), + sha_quote_context); + if (SGX_SUCCESS != sgx_status) { + ret = TDQE_ERROR_UNEXPECTED; + goto ret_point; + } + // Update hash with the quote. + sgx_status = sgx_sha256_update(p_quote_buf, + (uint32_t)required_buffer_size, + sha_quote_context); + if (SGX_SUCCESS != sgx_status) { + ret = TDQE_ERROR_UNEXPECTED; + goto ret_point; + } + sgx_status = sgx_sha256_get_hash(sha_quote_context, + (sgx_sha256_hash_t *)&qe_report_data); + if (SGX_SUCCESS != sgx_status) { + ret = TDQE_ERROR_UNEXPECTED; + goto ret_point; + } + ///todo: Evaluate the requirements on the format of target_info structure. + sgx_status = sgx_create_report(p_app_enclave_target_info, &qe_report_data, &qe_report); + if (SGX_SUCCESS != sgx_status) { + if (SGX_ERROR_OUT_OF_MEMORY == sgx_status) { + ret = TDQE_ERROR_OUT_OF_MEMORY; + } + else { + ret = TDQE_UNABLE_TO_GENERATE_QE_REPORT; + } + goto ret_point; + } + if (NULL != p_qe_report_out) { + memcpy(p_qe_report_out, &qe_report, sizeof(*p_qe_report_out)); + } + } + +ret_point: + // Clear out any senstive data. + memset_s(pciphertext, sizeof(*pciphertext), 0, sizeof(*pciphertext)); + if (handle != NULL) { + sgx_ecc256_close_context(handle); + } + if (sha_quote_context != NULL) { + sgx_sha256_close(sha_quote_context); + } + + return(ret); +} + diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/enclave/quoting_enclave_tdqe.h b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/quoting_enclave_tdqe.h new file mode 100644 index 00000000..c1765343 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/quoting_enclave_tdqe.h @@ -0,0 +1,114 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ +/** + * File: quoting_enclave_tdqe.h + * + * Description: Definitions and prototypes + * for the sample application's quoteing + * enclave. + * + */ + +#ifndef _QUOTING_ENCLAVE_TDQE_H_ +#define _QUOTING_ENCLAVE_TDQE_H_ + +#include +#include + +#include "user_types.h" +#include "ecdsa_quote.h" +#include "sgx_tcrypto.h" + +#define QE_QUOTE_VERSION 4 ///< Version of the quote structure that supports ECDSA (and EPID). It is a generic form of the Quote. + +#define TDQE_MK_ERROR(x) (0x00010000|(x)) + +/** Possible errors generated by the TDQE */ +typedef enum _tdqe_error_t { + TDQE_SUCCESS = 0x0000, + TDQE_ERROR_UNEXPECTED = TDQE_MK_ERROR(0x0001), ///< Unexpected error. + TDQE_ERROR_INVALID_PARAMETER = TDQE_MK_ERROR(0x0002), ///< The parameter is incorrect. + TDQE_ERROR_OUT_OF_MEMORY = TDQE_MK_ERROR(0x0003), ///< Not enough memory is available to complete this operation. + TDQE_ECDSABLOB_ERROR = TDQE_MK_ERROR(0x0004), ///< There was a problem with verifying the ECDSA Blob. + TDQE_ERROR_CRYPTO = TDQE_MK_ERROR(0x0005), ///< An error occurred in the encryption library. + TDQE_ERROR_ATT_KEY_GEN = TDQE_MK_ERROR(0x0006), ///< Error generating the ECDSA Attestation key pair. + TDQE_ERROR_WRONG_STATE = TDQE_MK_ERROR(0x0007), ///< Key generation and certification flow is stateful. ECALL order is incorrect. + TDQE_ERROR_INVALID_REPORT = TDQE_MK_ERROR(0x0008), ///< The TD report is invalid + TDQE_UNABLE_TO_GENERATE_QE_REPORT = TDQE_MK_ERROR(0x0009), ///< The QE was unable to generate its own report targeting the application enclave. + TDQE_ERROR_INVALID_HASH = TDQE_MK_ERROR(0x000A), ///< The tee_tcb_info_hash or tee_tcb_info_hash is invalid. + TDQE_ERROR_INVALID_PLATFORM = TDQE_MK_ERROR(0x000B), ///< This QE cannot be used on this platform + TDQE_REPORT_FORMAT_NOT_SUPPORTED = TDQE_MK_ERROR(0x000C), ///< This TD report is not compatible with this QE +} tdqe_error_t; + +#pragma pack(push, 1) + +/** Structure definition of the RSA key used to decrypt the PCE's PPID */ +typedef struct _pce_rsaoaep_2048_encrypt_pub_key_t { + uint8_t n[REF_RSA_OAEP_2048_MOD_SIZE]; ///< RSA 2048 public modulus + uint8_t e[REF_RSA_OAEP_2048_EXP_SIZE]; ///< RSA 2048 public exponent +} pce_rsaoaep_2048_encrypt_pub_key_t; + +/** Structure definition of the RSA key used to decrypt the PCE's PPID */ +typedef struct _pce_rsaoaep_3072_encrypt_pub_key_t { + uint8_t n[REF_RSA_OAEP_3072_MOD_SIZE]; ///< RSA 3072 public modulus + uint8_t e[REF_RSA_OAEP_3072_EXP_SIZE]; ///< RSA 3072 public exponent +} pce_rsaoaep_3072_encrypt_pub_key_t; + +/** Structure used when storing the encrypted PPID from the PCE in the ECDSA Blob. */ +typedef struct _ref_encrypted_ppid_t { + uint8_t crypto_suite; ///< Encryption crypto algorithm used to encrypt the PPID + uint32_t encrypted_ppid_buf_size; ///< The size of the buffer holding the encrypted PPID + uint8_t encrypted_ppid[REF_RSA_OAEP_3072_MOD_SIZE]; ///< The buffer containing the encrypted PPID. Worst case size is 3072 +}ref_encrypted_ppid_t; + +/** Used to store the ciphertext data of the ECDSA key and the certification data in a sealed blob. This portion of the blob is +* authenticated and encrypted. +* The contents vary depending on the certification key type (sgx_cert_key_type_t) */ +typedef struct _ref_ciphertext_ecdsa_data_sdk_t { + sgx_ec256_private_t ecdsa_private_key; ///< ECDSA private key stored in little endian + uint8_t is_clear_ppid; ///< Indicates whether the PPID is stored in the clear or encrypted + union { + uint8_t ppid[16]; ///< PPID if stored in the clear. + ref_encrypted_ppid_t encrypted_ppid_data; ///< Encrypted PPID data + }; +}ref_ciphertext_ecdsa_data_sdk_t; + +#pragma pack(pop) + +#if defined(__cplusplus) +extern "C" { +#endif + +#if defined(__cplusplus) +} +#endif + +#endif /* !_QUOTING_ENCLAVE_TDQE_H_ */ diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/enclave/tdqe.edl b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/tdqe.edl new file mode 100644 index 00000000..502c444b --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/tdqe.edl @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +enclave { +include "sgx_report.h" +include "sgx_quote.h" +include "sgx_quote_4.h" +include "user_types.h" +include "ecdsa_quote.h" + +trusted { + public uint32_t get_pce_encrypt_key([in]const sgx_target_info_t *pce_target_info, + [out] sgx_report_t *p_qe_report, + uint8_t crypto_suite, + uint16_t cert_key_type, + uint32_t key_size, + [out, size=key_size] uint8_t *p_public_key); + + public uint32_t gen_att_key([size = blob_size, in, out] uint8_t *p_blob, + uint32_t blob_size, + [in]const sgx_target_info_t *p_pce_target_info, + [out] sgx_report_t *qe_report, + [in, size = authentication_data_size] uint8_t* p_authentication_data, + uint32_t authentication_data_size); + + public uint32_t verify_blob([size = blob_size, in, out] uint8_t *p_blob, + uint32_t blob_size, + [out] uint8_t *p_is_resealed, + [out] sgx_report_body_t *p_report, + uint32_t pub_key_id_size, + [out, size=pub_key_id_size] uint8_t *p_pub_key_id); + + public uint32_t store_cert_data([in]ref_plaintext_ecdsa_data_sdk_t *p_plaintext_data, + sgx_ql_cert_key_type_t certification_key_type, + [in, size = encrypted_ppid_size] uint8_t* p_encrypted_ppid, + uint32_t encrypted_ppid_size, + [in, out, size = blob_size] uint8_t *p_blob, + uint32_t blob_size); + + public uint32_t gen_quote([size = blob_size, in, out] uint8_t *p_blob, + uint32_t blob_size, + [in] const sgx_report2_t *p_app_report, + [in] const sgx_quote_nonce_t *p_nonce, + [in] const sgx_target_info_t *p_app_enclave_target_info, + [out] sgx_report_t *p_qe_report, + [size = quote_size, in, out] uint8_t *p_quote, + uint32_t quote_size, + [in, size = cert_data_size] const uint8_t * p_cert_data, + uint32_t cert_data_size); + }; +}; diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/config.xml b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/config.xml new file mode 100644 index 00000000..feb17f38 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/config.xml @@ -0,0 +1,14 @@ + + 1 + 1 + 0x2 + + 0 + 1 + 1 + 0 + + 0x44000 + 0x24000 + 1 + diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/config_debug.xml b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/config_debug.xml new file mode 100644 index 00000000..75aed689 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/config_debug.xml @@ -0,0 +1,14 @@ + + 1 + 1 + 0x2 + + 0 + 1 + 1 + 0 + + 0x84000 + 0x84000 + 0 + diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/resource.h b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/resource.h new file mode 100644 index 00000000..a0689159 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/resource.h @@ -0,0 +1,15 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by tdqe.rc +// + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/targetver.h b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/targetver.h new file mode 100644 index 00000000..87c0086d --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/targetver.h @@ -0,0 +1,8 @@ +#pragma once + +// Including SDKDDKVer.h defines the highest available Windows platform. + +// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and +// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. + +#include diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/tdqe.filters b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/tdqe.filters new file mode 100644 index 00000000..0df16778 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/tdqe.filters @@ -0,0 +1,35 @@ + + + + + {56109D74-043A-4F3B-9376-D16FB3A9CCA0} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {B6F108D3-1D67-4538-8802-355C7ECBB0FC} + h;hh;hpp;hxx;hm;inl;inc;ipp;xsd + + + {B2FF4453-4E0F-4568-A59D-3221ADB8AC12} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + + + Source Files + + + + + + + + Resource Files + + + diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/tdqe.rc b/QuoteGeneration/quote_wrapper/tdx_quote/enclave/win/tdqe.rc new file mode 100644 index 0000000000000000000000000000000000000000..e23a476b81c579d83b80ae86805dc3adb220a61e GIT binary patch literal 4598 zcmdUy+iuf95QgU(iFYvW4G7dDH(d6RhKjTa%|TSE6qTkel|oXI6cveQ;t_%G-_2sL z;}lZ32(s+;j%Vla&tca;zOUJuC3a}nc5WjZ+L-&&CeS+2#&&CG)@QbB&$$x2vI`q< zkDyN&d(cLVT6fFaIqwNGNxQZicvkJPJwnTx8&{wX_}YiN=XleZ^{e*5Qpc^8D~|8d zt&{9+Ygp4-*0w!6u)1~a*eX!>ct5h5oj_^wJhUAsHQs}M*|2<9ur7>=Rl%i*@g*n? z?IZqAKu0*V@cJFk1H9hFPvKF4zR6vT$nRrtM%3@7>tg(u53yj8&yHKLQYKyE_rr1{ zARpu|*BGozi0**;>$|%AfVWSH`G8rd!zOROD#!M$Bn!s5n!0v)J&9_ohs15$C#!r- zHL0IA)wPS}F4fQjea?Zqk-@*5)>lETn zrdN6AJ+<{|_f`BnVp^rX@(>+m9X};ci~T0GQ~J*-8SQ(2X5~DKwjOBFqIyM{OOk0|Rmv)LA6v|L>!Z;dR}JdE1=wZo6`ct|_~U1M1^$8dM;bF?PgLps!I7l{?R zLeuToN6dxOK2<4Q`7ePkT?rfqbb(5Nr%3m_4dmC!*EapCHM64ZYpi46^_wa-9@2N3 z^oxW_xU(&yUUL}8_pH;XBUb2AZ7OS?Brjp(*ZK>(x6rzue?7;qy-ix<6?N?MvR`7O zu9wp_88$7>Kn*PPe48`heUFW~g68smp^jV!T_KZV!Gs*qY3_cGC=Nb2cY)x4|3tz+7A&xp134;{7b$+^`^9<|@*>}e50=o8_UHm!( zE$ufa+}q45Q_O?3c#LHS|M!rXKl}Rn@j6n6j`r%leM4u9{CUUtmXq)hEIpD5RPD3n zeg_-MwZ~QKwd$mNT&N?TOF>pV#*!6JSv+FYe?W{{>U@v~m4)oBA@Rz|Q%r7%hVtl& zbL}J-j|P!A2D2(>g4P1Ds86K{PuUz|qgfX56kR?0ge9wteXd0iZ=hqyx?BEaCIwXD zPP2F}#j@weG}hz0Xjx>lT|7j3mJ-)s2c$;7aC=Bi$63@unyPLL$~vFst3n;tSG?+Q zgHwjOS>BJ#+U!l==kLn@=A4}0A(!i2-sf+>FWvVSG + + + + CVE-2020-0551-Load-Release + x64 + + + CVE-2020-0551-CF-Release + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + 15.0 + {FA74E16C-93BA-4722-8B06-434F57C0E6D0} + Win32Proj + tdqe + 10.0.18362.0 + tdqe + + + + DynamicLibrary + true + v142 + Unicode + + + DynamicLibrary + false + v142 + true + Unicode + + + DynamicLibrary + true + v142 + Unicode + + + DynamicLibrary + false + v142 + true + Unicode + + + DynamicLibrary + false + v142 + true + Unicode + + + DynamicLibrary + false + v142 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + false + false + + + false + false + + + false + false + + + false + false + + + false + false + + + false + false + + + + NotUsing + Level4 + MaxSpeed + true + false + true + NDEBUG;TDQE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + $(SGXSDKInstallPath)\include;$(SGXSDKInstallPath)\include\tlibc;$(SGXSDKInstallPath)\include\libc++;.;..\..\inc;..\..\..\..\common\inc\internal;..\..\..\..\common\inc\internal\win;..\..\..\common\inc;..\..\..\..\pce_wrapper\inc;.. + true + true + true + false + false + + + Windows + true + true + true + $(SGXSDKInstallPath)\bin\$(Platform)\Release;$(SolutionDir)$(Platform)\Release\;..\..\..\..\$(Platform)\Release\ + true + sgx_tstdc.lib;sgx_tservice.lib;sgx_trts.lib;sgx_tcxx.lib;sgx_tcrypto.lib + true + true + true + /PDBALTPATH:tdqe.pdb %(AdditionalOptions) + + + ..\..\..\common\inc\internal + + + "$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\tdqe.edl --trusted + + + + + + + + + NotUsing + Level4 + MaxSpeed + true + false + true + NDEBUG;TDQE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + $(SGXSDKInstallPath)\include;$(SGXSDKInstallPath)\include\tlibc;$(SGXSDKInstallPath)\include\libc++;.;..\..\inc;..\..\..\..\common\inc\internal;..\..\..\..\common\inc\internal\win;..\..\..\common\inc;..\..\..\..\pce_wrapper\inc;.. + true + true + true + false + false + /Qspectre-load-cf + + + Windows + true + true + true + $(SGXSDKInstallPath)\bin\$(Platform)\CVE-2020-0551-CF-Release;$(SolutionDir)$(Platform)\CVE-2020-0551-CF-Release\;..\..\..\..\$(Platform)\CVE-2020-0551-CF-Release\ + true + sgx_tstdc.lib;sgx_tservice.lib;sgx_trts.lib;sgx_tcxx.lib;sgx_tcrypto.lib + true + true + true + /PDBALTPATH:tdqe.pdb %(AdditionalOptions) + + + ..\..\..\common\inc\internal + + + "$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\tdqe.edl --trusted + + + + + + + + + NotUsing + Level4 + MaxSpeed + true + false + true + NDEBUG;TDQE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + $(SGXSDKInstallPath)\include;$(SGXSDKInstallPath)\include\tlibc;$(SGXSDKInstallPath)\include\libc++;.;..\..\inc;..\..\..\..\common\inc\internal;..\..\..\..\common\inc\internal\win;..\..\..\common\inc;..\..\..\..\pce_wrapper\inc;.. + true + true + true + false + false + /Qspectre-load + + + Windows + true + true + true + $(SGXSDKInstallPath)\bin\$(Platform)\CVE-2020-0551-Load-Release;$(SolutionDir)$(Platform)\CVE-2020-0551-Load-Release\;..\..\..\..\$(Platform)\CVE-2020-0551-Load-Release\ + true + sgx_tstdc.lib;sgx_tservice.lib;sgx_trts.lib;sgx_tcxx.lib;sgx_tcrypto.lib + true + true + true + /PDBALTPATH:tdqe.pdb %(AdditionalOptions) + + + ..\..\..\common\inc\internal + + + "$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\tdqe.edl --trusted + + + + + + + + + NotUsing + Level4 + Disabled + true + WIN32;_DEBUG;TDQE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + $(SGXSDKInstallPath)\include;$(SGXSDKInstallPath)\include\tlibc;$(SGXSDKInstallPath)\include\libc++;.;..\..\inc;..\..\..\..\common\inc\internal;..\..\..\..\common\inc\internal\win;..\..\..\common\inc;..\..\..\..\pce_wrapper\inc;.. + ProgramDatabase + false + true + true + true + false + Default + true + false + + + Windows + true + $(SGXSDKInstallPath)\bin\$(Platform)\Debug;$(SolutionDir)Debug\;..\..\..\..\Debug + true + sgx_tstdc.lib;sgx_tservice.lib;sgx_trts.lib;sgx_tcxx.lib;sgx_tcrypto.lib + true + true + true + + + "$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\tdqe.edl --trusted + + + ..\..\..\common\inc\internal + + + + + + + + + NotUsing + Level4 + Disabled + true + _DEBUG;TDQE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + $(SGXSDKInstallPath)\include;$(SGXSDKInstallPath)\include\tlibc;$(SGXSDKInstallPath)\include\libc++;.;..\..\inc;..\..\..\..\common\inc\internal;..\..\..\..\common\inc\internal\win;..\..\..\common\inc;..\..\..\..\pce_wrapper\inc;.. + ProgramDatabase + false + true + true + true + false + Default + true + false + + + Windows + true + $(SGXSDKInstallPath)\bin\$(Platform)\Debug;$(SolutionDir)$(Platform)\Debug\;..\..\..\..\$(Platform)\Debug\ + true + sgx_tstdc.lib;sgx_tservice.lib;sgx_trts.lib;sgx_tcxx.lib;sgx_tcrypto.lib + true + true + true + /PDBALTPATH:tdqe.pdb %(AdditionalOptions) + + + "$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\tdqe.edl --trusted + + + + + + + ..\..\..\common\inc\internal + + + + + NotUsing + Level4 + MaxSpeed + true + false + true + WIN32;NDEBUG;TDQE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + $(SGXSDKInstallPath)\include;$(SGXSDKInstallPath)\include\tlibc;$(SGXSDKInstallPath)\include\libc++;.;..\..\inc;..\..\..\..\common\inc\internal;..\..\..\..\common\inc\internal\win;..\..\..\common\inc;..\..\..\..\pce_wrapper\inc;.. + true + true + true + false + false + + + Windows + true + true + true + $(SGXSDKInstallPath)\bin\$(Platform)\Release;$(SolutionDir)Release\;..\..\..\..\Release\ + true + sgx_tstdc.lib;sgx_tservice.lib;sgx_trts.lib;sgx_tcxx.lib;sgx_tcrypto.lib + true + true + + + ..\..\..\common\inc\internal + + + "$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\tdqe.edl --trusted + + + + + + + + + + + + + + + + + + ..\..\..\..\common\inc\internal + ..\..\..\..\common\inc\internal + ..\..\..\..\common\inc\internal + ..\..\..\..\common\inc\internal + ..\..\..\..\common\inc\internal + ..\..\..\..\common\inc\internal + + + + + + \ No newline at end of file diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/linux/Makefile b/QuoteGeneration/quote_wrapper/tdx_quote/linux/Makefile new file mode 100644 index 00000000..722c7b8b --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_quote/linux/Makefile @@ -0,0 +1,130 @@ +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + +######## SGX SDK Settings ######## +TOP_DIR = ../../.. +include $(TOP_DIR)/buildenv.mk + +TDQE_WRAPPER_VER:= $(shell awk '$$2 ~ /TDQE_WRAPPER_VERSION/ { print substr($$3, 2, length($$3) - 2); }' \ + $(COMMON_DIR)/inc/internal/se_version.h) + +PCE_Library_Dir := $(TOP_DIR)/pce_wrapper/linux +PCE_Library := $(PCE_Library_Dir)/libsgx_pce_logic.so + +TDQE_Dir := ../enclave/linux +TDQE_Signed_Name := $(TDQE_Dir)/libsgx_tdqe.signed.so + +ID_ENCLAVE_Dir := ../../quote/id_enclave/linux +ID_ENCLAVE_Signed_Name := $(ID_ENCLAVE_Dir)/libsgx_id_enclave.signed.so + +######## Quote Settings ######## + + +vpath %.c $(COMMON_DIR)/src +Quote_C_Files := tdqe_u.c id_enclave_u.c se_thread.c se_trace.c +Quote_Cpp_Files := $(wildcard ../*.cpp) + +Quote_Include_Paths := -I$(SGX_SDK)/include -I../../common/inc -I./ \ + -I../enclave -I$(TOP_DIR)/pce_wrapper/inc \ + -I$(COMMON_DIR)/inc/internal \ + -I$(COMMON_DIR)/inc/internal/linux + +Quote_C_Flags := $(CFLAGS) -g -MMD -fPIC -Wno-attributes $(Quote_Include_Paths) + +Quote_Cpp_Flags := $(CXXFLAGS) -g -MMD -fPIC -Wno-attributes $(Quote_Include_Paths) +Quote_Link_Flags := $(COMMON_LDFLAGS) -g -L$(ROOT_DIR)/build/linux \ + -L$(PCE_Library_Dir) -lsgx_pce_logic -L$(SGX_SDK)/lib64 \ + -lsgx_urts -lpthread -ldl + +Quote_Link_Flags += -Wl,--version-script=td_ql_logic.lds -Wl,--gc-sections + +Quote_C_Objects := $(Quote_C_Files:.c=.o) +Quote_C_Depends := $(Quote_C_Files:.c=.d) +Quote_Cpp_Objects := $(Quote_Cpp_Files:.cpp=.o) +Quote_Cpp_Depends := $(Quote_Cpp_Files:.cpp=.d) + +Quote_Name := libsgx_tdx_logic.so +Quote_Soname := $(Quote_Name).$(call SPLIT_VERSION,$(TDQE_WRAPPER_VER),1) + +-include $(Quote_C_Depends) +-include $(Quote_Cpp_Depends) + +.PHONY: all +all: install_lib + +install_lib: $(Quote_Name) | $(BUILD_DIR) + @$(CP) $(Quote_Name) $| + @ln -fs $(Quote_Name) $(BUILD_DIR)/$(Quote_Soname) + +######## Quote Objects ######## + +tdqe_u.c: $(SGX_EDGER8R) ../enclave/tdqe.edl + $(SGX_EDGER8R) --untrusted ../enclave/tdqe.edl --search-path ../enclave + @echo "GEN => $@" + +id_enclave_u.c: $(SGX_EDGER8R) ../../quote/id_enclave/id_enclave.edl + $(SGX_EDGER8R) --untrusted ../../quote/id_enclave/id_enclave.edl + @echo "GEN => $@" + +%.o: %.c + @$(CC) $(Quote_C_Flags) -c $< -o $@ + @echo "CC <= $<" + +$(Quote_Cpp_Objects): %.o: %.cpp + $(CXX) $(Quote_Cpp_Flags) -c $< -o $@ + @echo "CXX <= $<" + +$(Quote_Name): $(Quote_C_Objects) $(Quote_Cpp_Objects) $(PCE_Library) + $(CXX) $(Quote_C_Objects) $(Quote_Cpp_Objects) -shared $(Quote_Link_Flags) \ + -Wl,-soname=$(Quote_Soname) -o $@ + @echo "LINK => $@" + +$(PCE_Library): force_look + @make -C $(PCE_Library_Dir) + +$(TDQE_Signed_Name): force_look + @make -C $(TDQE_Dir) + +$(ID_ENCLAVE_Signed_Name): force_look + @make -C $(ID_ENCLAVE_Dir) + +force_look: + true + +.PHONY: clean + +clean: + @rm -f .config_* $(Quote_Name) $(Quote_C_Objects) $(Quote_Cpp_Objects) \ + tdqe_u.* id_enclave_u.* + @make -C $(PCE_Library_Dir) clean + @make -C $(TDQE_Dir) clean + @make -C $(ID_ENCLAVE_Dir) clean + diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/linux/td_ql_logic.lds b/QuoteGeneration/quote_wrapper/tdx_quote/linux/td_ql_logic.lds new file mode 100644 index 00000000..294285cd --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_quote/linux/td_ql_logic.lds @@ -0,0 +1,12 @@ +{ +global: + td_set_enclave_load_policy; + td_set_qe_path; + td_set_qpl_path; + td_init_quote; + td_get_quote_size; + td_get_quote; + get_qpl_handle; +local: + *; +}; diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/td_ql_logic.cpp b/QuoteGeneration/quote_wrapper/tdx_quote/td_ql_logic.cpp new file mode 100644 index 00000000..f03f1246 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_quote/td_ql_logic.cpp @@ -0,0 +1,2497 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ +/** + * File: td_ql_logic.cpp + * + * Description: This is the implementation of the quoting class that will support + * the reference ECDSA-P256 quoting class used by an application requiring quote + * generation. These are the untrusted functions of the reference code. It will + * call the trusted functions in the ECDSA-P256 quoting enclave. + * + */ +#include +#include +#include +#ifndef _MSC_VER + #include + #include +#else +#include +#include +#endif + +#include "sgx_urts.h" +#include "td_ql_logic.h" +#include "user_types.h" +#include "tdqe_u.h" +#include "id_enclave_u.h" +#include "ecdsa_quote.h" +#include "se_thread.h" +#include "quoting_enclave_tdqe.h" + +#ifndef _MSC_VER + #define TDQE_ENCLAVE_NAME "libsgx_tdqe.signed.so.1" + #define ID_ENCLAVE_NAME "libsgx_id_enclave.signed.so.1" + #define SGX_QL_QUOTE_CONFIG_LIB_FILE_NAME "libdcap_quoteprov.so.1" + #define SGX_QL_QUOTE_CONFIG_LIB_FILE_NAME_LEGACY "libdcap_quoteprov.so" + #define TCHAR char + #define _T(x) (x) +#else + #define TDQE_ENCLAVE_NAME _T("tdqe.signed.dll") + #define ID_ENCLAVE_NAME _T("id_enclave.signed.dll") + #define SGX_QL_QUOTE_CONFIG_LIB_FILE_NAME "dcap_quoteprov.dll" +#endif +#define ECDSA_BLOB_LABEL "tdqe_data.blob" + + +#define MAX_PATH 260 +#define MAX_CERT_DATA_SIZE (4098*3) +#define MIN_CERT_DATA_SIZE (500) // Chosen to be large enough to contain the native cert data types. + + +typedef quote3_error_t (*sgx_get_quote_config_func_t)(const sgx_ql_pck_cert_id_t *p_pck_cert_id, + sgx_ql_config_t **pp_quote_config); + +typedef quote3_error_t (*sgx_free_quote_config_func_t)(sgx_ql_config_t *p_quote_config); + +typedef quote3_error_t (*sgx_write_persistent_data_func_t)(const uint8_t *p_buf, + uint32_t buf_size, + const char *p_label); + +typedef quote3_error_t (*sgx_read_persistent_data_func_t)(const uint8_t *p_buf, + uint32_t *p_buf_size, + const char *p_label); +#ifndef _MSC_VER +static inline errno_t memcpy_s(void *dest, size_t numberOfElements, const void *src, size_t count) +{ + if(0 == count) + return -1; + if(NULL == dest) + return -1; + if ((src == NULL) || (numberOfElements < count)) { + memset(dest, 0, numberOfElements); + return -1; + } + + memcpy(dest, src, count); + return 0; +} +#define strcpy_s(dst, dstsize, src) strncpy(dst, src, dstsize) +#endif + + +/** + * Since the error code space of the PCE library is not unique from SGX SDK error space, need to explicitly + * translate the errors here instead of in the final high level error scrubbing function. + * + * @param pce_error Error return by the pce library API. + * + * @return SGX_QL_SUCCESS + * @return SGX_QL_OUT_OF_EPC + * @return SGX_QL_INTERFACE_UNAVAILABLE + * @return SGX_QL_ERROR_UNEXPECTED + * @return SGX_QL_KEY_CERTIFCATION_ERROR + * + */ +static quote3_error_t translate_pce_errors(sgx_pce_error_t pce_error) +{ + quote3_error_t ret_val = SGX_QL_ERROR_UNEXPECTED; + + switch(pce_error) { + + case SGX_PCE_SUCCESS: + ret_val = SGX_QL_SUCCESS; + break; + + case SGX_PCE_OUT_OF_EPC: + ret_val = SGX_QL_OUT_OF_EPC; + break; + + case SGX_PCE_INTERFACE_UNAVAILABLE: + ret_val = SGX_QL_INTERFACE_UNAVAILABLE; + break; + + case SGX_PCE_INVALID_TCB: + ret_val = SGX_QL_KEY_CERTIFCATION_ERROR; + break; + + case SGX_PCE_INVALID_PRIVILEGE: // Indicates that the QE does not have the prov key bit set. Unexpected for a production release. + ret_val = SGX_QL_ERROR_INVALID_PRIVILEGE; + break; + + case SGX_PCE_UNEXPECTED: + case SGX_PCE_INVALID_PARAMETER: // Inputs to the PCE are generated by the QE library. Don't expect input errors. + case SGX_PCE_INVALID_REPORT: // Indicates that the QE.REPORT is invalid. This unexpected. + case SGX_PCE_CRYPTO_ERROR: // Indicates that the QE.REPORT.ReportData is invalid. This unexpected. + ret_val = SGX_QL_ERROR_UNEXPECTED; + break; + + default: + ret_val = SGX_QL_ERROR_UNEXPECTED; + break; + } + + return(ret_val); +} + +/** + * Used to keep track of the TDQE's load status. Allows for + * thread safe updating of the load policy and the storage of + * target information of the QE when the policy is + * persistent mode. Also contains the global ecdsa_blob and + * provides thread safe access to the blob. + */ +struct ql_global_data{ + se_mutex_t m_enclave_load_mutex; + se_mutex_t m_ecdsa_blob_mutex; + + sgx_ql_request_policy_t m_load_policy; + sgx_enclave_id_t m_eid; + sgx_misc_attribute_t m_attributes; + sgx_launch_token_t m_launch_token; + uint8_t m_ecdsa_blob[SGX_QL_TRUSTED_ECDSA_BLOB_SIZE_SDK]; + uint8_t *m_pencryptedppid; + sgx_pce_info_t m_pce_info; + sgx_key_128bit_t* m_qe_id; + void *m_qpl_handle; + char tdqe_path[MAX_PATH]; + char qpl_path[MAX_PATH]; + + ql_global_data(): + m_load_policy(SGX_QL_DEFAULT), + m_eid(0), + m_pencryptedppid(NULL), + m_qe_id(NULL), + m_qpl_handle(NULL) + { + se_mutex_init(&m_enclave_load_mutex); + se_mutex_init(&m_ecdsa_blob_mutex); + memset(&m_attributes, 0, sizeof(m_attributes)); + memset(&m_launch_token, 0, sizeof(m_launch_token)); + memset(m_ecdsa_blob, 0, sizeof(m_ecdsa_blob)); + memset(&m_pce_info, 0, sizeof(m_pce_info)); + memset(tdqe_path, 0, sizeof(tdqe_path)); + memset(qpl_path, 0, sizeof(qpl_path)); + } + ql_global_data(const ql_global_data&); + ql_global_data& operator=(const ql_global_data&); + ~ql_global_data(){ + if (m_eid!=0) sgx_destroy_enclave(m_eid); + se_mutex_destroy(&m_enclave_load_mutex); + se_mutex_destroy(&m_ecdsa_blob_mutex); + if (m_pencryptedppid) + { + free(m_pencryptedppid); + m_pencryptedppid = NULL; + } + if (m_qe_id) + { + free(m_qe_id); + m_qe_id = NULL; + } +#ifndef _MSC_VER + if (m_qpl_handle) + { + dlclose(m_qpl_handle); + m_qpl_handle = NULL; + } +#endif + } +}; + +static ql_global_data g_ql_global_data; + +#ifndef _MSC_VER +void * get_qpl_handle() +{ + if (!g_ql_global_data.m_qpl_handle) { + void * handle = NULL; + if (g_ql_global_data.qpl_path[0]) { + handle = dlopen(g_ql_global_data.qpl_path, RTLD_LAZY); + if (NULL == handle) { + SE_PROD_LOG("Cannot open Quote Provider Library %s\n", g_ql_global_data.qpl_path); + } + } + else { + handle = dlopen(SGX_QL_QUOTE_CONFIG_LIB_FILE_NAME, RTLD_LAZY); + if (NULL == handle) + { + ///TODO: + // This is a temporary solution to make sure the legacy library without a version suffix can be loaded. + // We shall remove this when we have a major version change later and drop the backward compatible + // support for old lib name. + handle = dlopen(SGX_QL_QUOTE_CONFIG_LIB_FILE_NAME_LEGACY, RTLD_LAZY); + if (NULL == handle) { + SE_PROD_LOG("Cannot open Quote Provider Library %s and %s\n", SGX_QL_QUOTE_CONFIG_LIB_FILE_NAME, + SGX_QL_QUOTE_CONFIG_LIB_FILE_NAME_LEGACY); + } + } + } + g_ql_global_data.m_qpl_handle = handle; + } + return g_ql_global_data.m_qpl_handle; +} +#endif + + +/** + * Wrapper function for retrieving the PCK Certificate data from the platform's Quote Provider Library. + * + * @param p_pck_cert_id Pointer to the platorm identification data. Must not be NULL. + * @param p_cert_cpu_svn Returned CPUSVN of the PCK cert. Must not be NULL. + * @param p_cert_isv_svn Returned CPUSVN of the PCK cert. Must not be NULL. + * @param p_cert_data_size Pointer to the size in bytes of the cert data. Must not be NULL. If p_cert_data is NULL, + * then this function will return the size of the bufffer to allocate. If p_cert_data is not + * NULL, then the p_cert_data_size points the number of bytes in the p_cert_data buffer and it + * must not be 0. + * @param p_cert_data Pointer ot the buffer to containt the cert data. Can be NULL. If NULL, the required buffer size + * will be returned in p_cert_data_size. + * + * @return SGX_QL_SUCCESS + * @return SGX_QL_ERROR_INVALID_PARAMETER + * @return SGX_QL_PLATFORM_LIB_UNAVAILABLE + * @return SGX_QL_NO_PLATFORM_CERT_DATA + */ +static quote3_error_t get_platform_quote_cert_data(sgx_ql_pck_cert_id_t *p_pck_cert_id, + sgx_cpu_svn_t *p_cert_cpu_svn, + sgx_isv_svn_t *p_cert_pce_isv_svn, + uint32_t *p_cert_data_size, + uint8_t *p_cert_data) +{ + quote3_error_t ret_val = SGX_QL_PLATFORM_LIB_UNAVAILABLE; + sgx_get_quote_config_func_t p_sgx_get_quote_config = NULL; + sgx_free_quote_config_func_t p_sgx_free_quote_config = NULL; + sgx_ql_config_t *p_pck_cert_config = NULL; + + #ifndef _MSC_VER + void *handle = NULL; + char *error1 = NULL; + char *error2 = NULL; + #else + HINSTANCE handle; + #endif + + if((NULL == p_pck_cert_id) || + (NULL == p_cert_cpu_svn) || + (NULL == p_cert_pce_isv_svn) || + (NULL == p_cert_data_size)) { + return SGX_QL_ERROR_INVALID_PARAMETER; + } + if((NULL != p_cert_data) && (0 == *p_cert_data_size)) { + return SGX_QL_ERROR_INVALID_PARAMETER; + } + + #ifndef _MSC_VER + handle = get_qpl_handle(); + if (handle) { + p_sgx_get_quote_config = (sgx_get_quote_config_func_t)dlsym(handle, "sgx_ql_get_quote_config"); + error1 = dlerror(); + p_sgx_free_quote_config = (sgx_free_quote_config_func_t)dlsym(handle, "sgx_ql_free_quote_config"); + error2 = dlerror(); + + if ((NULL == error1) && + (NULL != p_sgx_get_quote_config) && + (NULL == error2) && + (NULL != p_sgx_free_quote_config)){ + SE_TRACE(SE_TRACE_DEBUG, "Found the sgx_ql_get_quote_config and sgx_ql_free_quote_config API.\n"); + SE_TRACE(SE_TRACE_DEBUG, "Request the Quote Config data.\n"); + ret_val = p_sgx_get_quote_config(p_pck_cert_id, &p_pck_cert_config); + if (SGX_QL_SUCCESS != ret_val) { + SE_PROD_LOG("Error returned from the p_sgx_get_quote_config API. 0x%04x\n", ret_val); + goto CLEANUP; + } + if(NULL == p_pck_cert_config) { + ret_val = SGX_QL_NO_PLATFORM_CERT_DATA; + SE_PROD_LOG("p_sgx_get_quote_config returned NULL for p_pck_cert_config.\n"); + goto CLEANUP; + } + if(p_pck_cert_config->version != SGX_QL_CONFIG_VERSION_1) { + SE_PROD_LOG("p_sgx_get_quote_config returned incompatible pck_cert_config version.\n"); + ret_val = SGX_QL_NO_PLATFORM_CERT_DATA; + goto CLEANUP; + } + if(0 != memcpy_s(p_cert_cpu_svn, sizeof(*p_cert_cpu_svn), &p_pck_cert_config->cert_cpu_svn, sizeof(p_pck_cert_config->cert_cpu_svn))) { + ret_val = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + *p_cert_pce_isv_svn = p_pck_cert_config->cert_pce_isv_svn; + if(NULL == p_cert_data) { + // The caller only needs the TCBm and/or the required buffer size. + // Return the required buffer size. + *p_cert_data_size = p_pck_cert_config->cert_data_size; + } + else { + // The caller wants the TCBm and the required buffer size. + if(*p_cert_data_size < p_pck_cert_config->cert_data_size) { + // The buffer passed in to this API is not large enouge to contain the provider library's returned cert data. + // This shouldn't happen since the passed in value should be the result of calling this function + // with the inputted p_cert_data equal to NULL just befor this caller. + SE_PROD_LOG("sgx_ql_get_quote_config returned a cert_data_size too large to fit in inputted buffer.\n"); + ret_val = SGX_QL_ERROR_INVALID_PARAMETER; + goto CLEANUP; + } + if(NULL == p_pck_cert_config->p_cert_data) { + SE_PROD_LOG("sgx_ql_get_quote_config returned NULL for p_cert_data.\n"); + ret_val = SGX_QL_NO_PLATFORM_CERT_DATA; + goto CLEANUP; + } + // Copy the returned cert data + if(0 != memcpy_s(p_cert_data, *p_cert_data_size, p_pck_cert_config->p_cert_data, p_pck_cert_config->cert_data_size)) { + ret_val = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + // Return the number of bytes copied. + *p_cert_data_size = p_pck_cert_config->cert_data_size; + } + } else { + SE_PROD_LOG("Couldn't find 'sgx_ql_get_quote_config()' and 'sgx_ql_free_quote_config()' in the platform library. %s\n", dlerror()); + } + } else { + SE_PROD_LOG("Couldn't find the platform library. %s\n", dlerror()); + } + + CLEANUP: + if(NULL != p_sgx_free_quote_config){ + if(NULL != p_pck_cert_config) { + p_sgx_free_quote_config(p_pck_cert_config); + } + } + #else + handle = LoadLibrary(TEXT(SGX_QL_QUOTE_CONFIG_LIB_FILE_NAME)); + if (handle != NULL) { + SE_TRACE(SE_TRACE_DEBUG, "Found the Quote's dependent library. %s.\n", SGX_QL_QUOTE_CONFIG_LIB_FILE_NAME); + p_sgx_get_quote_config = (sgx_get_quote_config_func_t)GetProcAddress(handle, "sgx_ql_get_quote_config"); + p_sgx_free_quote_config = (sgx_free_quote_config_func_t)GetProcAddress(handle, "sgx_ql_free_quote_config"); + if ((NULL != p_sgx_get_quote_config) && + (NULL != p_sgx_free_quote_config)){ + SE_TRACE(SE_TRACE_DEBUG, "Found the sgx_ql_get_quote_config and sgx_ql_free_quote_config API.\n"); + SE_TRACE(SE_TRACE_DEBUG, "Request the Quote Config data.\n"); + ret_val = p_sgx_get_quote_config(p_pck_cert_id, &p_pck_cert_config); + if (SGX_QL_SUCCESS != ret_val) { + SE_TRACE(SE_TRACE_ERROR, "Error returned from the p_sgx_get_quote_config API. 0x%04x\n", ret_val); + goto CLEANUP; + } + if (NULL == p_pck_cert_config) { + ret_val = SGX_QL_NO_PLATFORM_CERT_DATA; + SE_TRACE(SE_TRACE_ERROR, "p_sgx_get_quote_config returned NULL for p_pck_cert_config.\n"); + goto CLEANUP; + } + if (p_pck_cert_config->version != SGX_QL_CONFIG_VERSION_1) { + SE_TRACE(SE_TRACE_ERROR, "p_sgx_get_quote_config returned incompatible pck_cert_config version.\n"); + ret_val = SGX_QL_NO_PLATFORM_CERT_DATA; + goto CLEANUP; + } + if (0 != memcpy_s(p_cert_cpu_svn, sizeof(*p_cert_cpu_svn), &p_pck_cert_config->cert_cpu_svn, sizeof(p_pck_cert_config->cert_cpu_svn))) { + ret_val = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + *p_cert_pce_isv_svn = p_pck_cert_config->cert_pce_isv_svn; + if (NULL == p_cert_data) { + // The caller only needs the TCBm and/or the required buffer size. + // Return the required buffer size. + *p_cert_data_size = p_pck_cert_config->cert_data_size; + } + else { + // The caller wants the TCBm and the required buffer size. + if (*p_cert_data_size < p_pck_cert_config->cert_data_size) { + // The buffer passed in to this API is not large enouge to contain the provider library's returned cert data. + // This shouldn't happen since the passed in value should be the result of calling this function + // with the inputted p_cert_data equal to NULL just befor this caller. + SE_TRACE(SE_TRACE_ERROR, "sgx_ql_get_quote_config returned a cert_data_size too large to fit in inputted buffer.\n"); + ret_val = SGX_QL_ERROR_INVALID_PARAMETER; + goto CLEANUP; + } + if (NULL == p_pck_cert_config->p_cert_data) { + SE_TRACE(SE_TRACE_ERROR, "sgx_ql_get_quote_config returned NULL for p_cert_data.\n"); + ret_val = SGX_QL_NO_PLATFORM_CERT_DATA; + goto CLEANUP; + } + // Copy the returned cert data + if (0 != memcpy_s(p_cert_data, *p_cert_data_size, p_pck_cert_config->p_cert_data, p_pck_cert_config->cert_data_size)) { + ret_val = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + // Return the number of bytes copied. + *p_cert_data_size = p_pck_cert_config->cert_data_size; + } + } + else { + SE_TRACE(SE_TRACE_WARNING, "Couldn't find 'sgx_ql_get_quote_config()' and 'sgx_ql_free_quote_config()' in the platform library.\n"); + } + } + else { + SE_TRACE(SE_TRACE_DEBUG, "Couldn't find the platform library. %s\n"); + } + CLEANUP: + if (NULL != p_sgx_free_quote_config) { + if (NULL != p_pck_cert_config) { + p_sgx_free_quote_config(p_pck_cert_config); + } + } + if (NULL != handle) { + FreeLibrary(handle); + } + #endif + + return(ret_val); +} + +/** + * + * @param q_file_name + * @param p_file_path + * @param buf_size + * + * @return + */ +static bool get_qe_path(const TCHAR *p_file_name, + TCHAR *p_file_path, + size_t buf_size) +{ + if(!p_file_name || !p_file_path) { + return false; + } + +#ifndef _MSC_VER + Dl_info dl_info; + if(g_ql_global_data.tdqe_path[0]) + { + strncpy(p_file_path, g_ql_global_data.tdqe_path, buf_size -1); + p_file_path[buf_size - 1] = '\0'; //null terminate the string + return true; + } + else if(0 != dladdr(__builtin_return_address(0), &dl_info) && + NULL != dl_info.dli_fname) + { + if(strnlen(dl_info.dli_fname,buf_size)>=buf_size) { + return false; + } + (void)strncpy(p_file_path,dl_info.dli_fname,buf_size); + p_file_path[buf_size - 1] = '\0'; //null terminate the string + } + else //not a dynamic executable + { + ssize_t i = readlink( "/proc/self/exe", p_file_path, buf_size ); + if (i == -1) + return false; + p_file_path[i] = '\0'; + } + + char* p_last_slash = strrchr(p_file_path, '/' ); + if ( p_last_slash != NULL ) { + p_last_slash++; //increment beyond the last slash + *p_last_slash = '\0'; //null terminate the string + } + else { + p_file_path[0] = '\0'; + } + + if(strnlen(p_file_path,buf_size)+strnlen(p_file_name,buf_size)+sizeof(char)>buf_size) { + return false; + } + (void)strncat(p_file_path,p_file_name, strnlen(p_file_name,buf_size)); +#else + HMODULE hModule = NULL; +#ifndef AESM_ECDSA_BUNDLE + if (!GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, _T(__FUNCTION__), &hModule)) + return false; +#endif + DWORD path_length = GetModuleFileName(hModule, p_file_path, static_cast(buf_size)); + if (path_length == 0) + return false; + if (path_length == buf_size) + return false; + + TCHAR *p_last_slash = _tcsrchr(p_file_path, _T('\\')); + if (p_last_slash != NULL) + { + p_last_slash++; + *p_last_slash = _T('\0'); + } + else + return false; + if (_tcsnlen(p_file_name, MAX_PATH) + _tcsnlen(p_file_path, MAX_PATH) + sizeof(TCHAR) > buf_size) + return false; + if (_tcscat_s(p_file_path, buf_size, p_file_name)) + return false; +#endif + return true; +} + + +/** + * + * @param p_qe_eid + * @param p_qe_attributes + * @param p_launch_token + * + * @return SGX_QL_SUCCESS + * @return SGX_QL_ENCLAVE_LOAD_ERROR + * @return SGX_QL_ERROR_UNEXPECTED + * @return SGX_QL_OUT_OF_EPC + * @return SGX_ERROR_ENCLAVE_FILE_ACCESS The QE file cannot be found or accessed. + * @return SGX_ERROR_OUT_OF_MEMORY + * @return SGX_ERROR_INVALID_ENCLAVE Enclave file parser failed. + * @return SGX_ERROR_UNDEFINED_SYMBOL Enclave not statically built. + * @return SGX_ERROR_MODE_INCOMPATIBLE Enclave linked with the incorrect tRTS library (simulation) + * @return SGX_ERROR_PCL_NOT_ENCRYPTED Invalid protected code loader state. + * @return SGX_ERROR_PCL_ENCRYPTED Invalid protected code loader state. + * @return SGX_ERROR_INVALID_METADATA Enclave meta data is invalid. + * @return SGX_ERROR_ENCLAVE_LOST Power transition caused the enclave to be unloaded. + * @return SGX_ERROR_MEMORY_MAP_CONFLICT Error loading the enclave. + * @return SGX_ERROR_INVALID_VERSION Metadata version is unsupported. + * @return SGX_ERROR_NO_DEVICE SGX not enabled on platform. + * @return SGX_ERROR_INVALID_ATTRIBUTE Invalid encave attribute. + * @return SGX_ERROR_NDEBUG_ENCLAVE Enlcave properties disallows launching in debug mode. + * @return SGX_ERROR_INVALID_MISC Invalid Misc. attribute setting. + * @return SGX_ERROR_UNEXPECTED + * @return SE_ERROR_INVALID_LAUNCH_TOKEN A debug LE is trying to launch a production QE. + * @return SGX_ERROR_INVALID_SIGNATURE + * @return SE_ERROR_INVALID_MEASUREMENT + * @return SGX_ERROR_DEVICE_BUSY + * @return SE_ERROR_INVALID_ISVSVNLE + * @return SGX_ERROR_INVALID_ENCLAVE_ID + */ + +static quote3_error_t load_qe(sgx_enclave_id_t *p_qe_eid, + sgx_misc_attribute_t *p_qe_attributes, + sgx_launch_token_t *p_launch_token) +{ + quote3_error_t ret_val = SGX_QL_SUCCESS; + sgx_status_t sgx_status = SGX_SUCCESS; + int launch_token_updated = 0; + TCHAR qe_enclave_path[MAX_PATH] = _T(""); + + memset(p_launch_token, 0, sizeof(*p_launch_token)); + + int rc = se_mutex_lock(&g_ql_global_data.m_enclave_load_mutex); + if (0 == rc) { + SE_TRACE(SE_TRACE_ERROR, "Failed to lock mutex\n"); + return SGX_QL_ENCLAVE_LOAD_ERROR; + } + + // Load the TDQE + if (g_ql_global_data.m_eid == 0) { + if (!get_qe_path(TDQE_ENCLAVE_NAME, qe_enclave_path, MAX_PATH)) { + SE_TRACE(SE_TRACE_ERROR, "Couldn't find QE file.\n"); + ret_val = SGX_QL_ENCLAVE_LOAD_ERROR; + goto CLEANUP; + } + SE_TRACE(SE_TRACE_DEBUG, "Call sgx_create_enclave for QE. %s\n", qe_enclave_path); + sgx_status = sgx_create_enclave(qe_enclave_path, + 0, + p_launch_token, + &launch_token_updated, + p_qe_eid, + p_qe_attributes); + if (SGX_SUCCESS != sgx_status) { + SE_PROD_LOG("Error, call sgx_create_enclave QE fail [%s], SGXError:%04x.\n", __FUNCTION__, sgx_status); + if (sgx_status == SGX_ERROR_OUT_OF_EPC) { + ret_val = SGX_QL_OUT_OF_EPC; + } + else { + ret_val = (quote3_error_t)sgx_status; + } + goto CLEANUP; + } + g_ql_global_data.m_eid = *p_qe_eid; + if(0 != memcpy_s(&g_ql_global_data.m_launch_token, sizeof(g_ql_global_data.m_launch_token), + p_launch_token, sizeof(*p_launch_token))) { + ret_val = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + g_ql_global_data.m_attributes = *p_qe_attributes; + } else { + SE_TRACE(SE_TRACE_DEBUG, "QE already loaded. %d\n", g_ql_global_data.m_eid); + *p_qe_eid = g_ql_global_data.m_eid; + if(0 != memcpy_s(p_launch_token, sizeof(*p_launch_token), + &g_ql_global_data.m_launch_token, sizeof(g_ql_global_data.m_launch_token))) { + ret_val = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + *p_qe_attributes = g_ql_global_data.m_attributes; + } + + CLEANUP: + rc = se_mutex_unlock(&g_ql_global_data.m_enclave_load_mutex); + if (0 == rc) { + SE_TRACE(SE_TRACE_ERROR, "Failed to unlock mutex.\n"); + ret_val = SGX_QL_ERROR_UNEXPECTED; + } + + return ret_val; +} + +/** + * + * @return + */ +static void unload_qe() +{ + + int rc = se_mutex_lock(&g_ql_global_data.m_enclave_load_mutex); + if (0 == rc) { + SE_TRACE(SE_TRACE_ERROR, "Failed to lock mutex\n"); + return; + } + + // Unload the QE enclave + if ((0 != g_ql_global_data.m_eid) && + (g_ql_global_data.m_load_policy != SGX_QL_PERSISTENT)) { + SE_TRACE(SE_TRACE_DEBUG, "Unload QE enclave 0X%lX\n", g_ql_global_data.m_eid); + sgx_destroy_enclave(g_ql_global_data.m_eid); + g_ql_global_data.m_eid = 0; + } + + rc = se_mutex_unlock(&g_ql_global_data.m_enclave_load_mutex); + if (0 == rc) { + SE_TRACE(SE_TRACE_ERROR, "Failed to unlock mutex\n"); + } +} + + +static quote3_error_t load_id_enclave(sgx_enclave_id_t* p_qe_eid) +{ + quote3_error_t ret_val = SGX_QL_SUCCESS; + sgx_status_t sgx_status = SGX_SUCCESS; + int launch_token_updated = 0; + TCHAR id_enclave_path[MAX_PATH] = _T(""); + + sgx_launch_token_t launch_token = { 0 }; + + int rc = se_mutex_lock(&g_ql_global_data.m_enclave_load_mutex); + if (0 == rc) { + SE_TRACE(SE_TRACE_ERROR, "Failed to lock mutex\n"); + return SGX_QL_ENCLAVE_LOAD_ERROR; + } + + // Load the ID ENCLAVE + if (!get_qe_path(ID_ENCLAVE_NAME, id_enclave_path, MAX_PATH)) { + SE_TRACE(SE_TRACE_ERROR, "Couldn't find ID_ENCLAVE file.\n"); + ret_val = SGX_QL_ENCLAVE_LOAD_ERROR; + goto CLEANUP; + } + SE_TRACE(SE_TRACE_DEBUG, "Call sgx_create_enclave for ID_ENCLAVE. %s\n", id_enclave_path); + sgx_status = sgx_create_enclave(id_enclave_path, + 0, + &launch_token, + &launch_token_updated, + p_qe_eid, + NULL); + if (SGX_SUCCESS != sgx_status) { + SE_PROD_LOG("Error, call sgx_create_enclave ID_ENCLAVE fail [%s], SGXError:%04x.\n", __FUNCTION__, sgx_status); + if (sgx_status == SGX_ERROR_OUT_OF_EPC) { + ret_val = SGX_QL_OUT_OF_EPC; + } + else { + ret_val = (quote3_error_t)sgx_status; + } + goto CLEANUP; + } +CLEANUP: + rc = se_mutex_unlock(&g_ql_global_data.m_enclave_load_mutex); + if (0 == rc) { + SE_TRACE(SE_TRACE_ERROR, "Failed to unlock mutex.\n"); + ret_val = SGX_QL_ERROR_UNEXPECTED; + } + + return ret_val; +} + +static quote3_error_t load_id_enclave_get_id(sgx_key_128bit_t* p_id) +{ + quote3_error_t ret_val = SGX_QL_SUCCESS; + sgx_status_t sgx_status = SGX_SUCCESS; + sgx_status_t ecall_ret = SGX_SUCCESS; + sgx_enclave_id_t id_enclave_eid = 0; + ret_val = load_id_enclave(&id_enclave_eid); + if (ret_val != SGX_QL_SUCCESS) + { + return ret_val; + } + sgx_status = ide_get_id(id_enclave_eid, &ecall_ret, p_id); + if (SGX_SUCCESS != sgx_status) { + SE_PROD_LOG("Failed call into the ID_ENCLAVE. 0x%04x.\n", sgx_status); + ret_val = (quote3_error_t)sgx_status; + goto CLEANUP; + } + + if (SGX_SUCCESS != ecall_ret) { + SE_TRACE(SE_TRACE_ERROR, "Failed to get QE_ID. 0x%04x.\n", ecall_ret); + ret_val = (quote3_error_t)ecall_ret; + goto CLEANUP; + } + +CLEANUP: + if (0 != id_enclave_eid) { + sgx_destroy_enclave(id_enclave_eid); + } + + return ret_val; +} + +/* This function output encrypted PPID which is encrypted with backend server's pub key + * + * note: this function is called in lock area of global ecdsa blob mutex + */ +static quote3_error_t getencryptedppid(sgx_target_info_t& pce_target_info, uint8_t *p_buf, uint32_t buf_size) +{ + tdqe_error_t tdqe_error = TDQE_ERROR_UNEXPECTED; + sgx_status_t sgx_status = SGX_SUCCESS; + sgx_pce_error_t pce_error; + sgx_report_t tdqe_report; + uint32_t enc_key_size = REF_RSA_OAEP_3072_MOD_SIZE + REF_RSA_OAEP_3072_EXP_SIZE; + uint8_t enc_public_key[REF_RSA_OAEP_3072_MOD_SIZE + REF_RSA_OAEP_3072_EXP_SIZE]; + uint8_t encrypted_ppid[REF_RSA_OAEP_3072_MOD_SIZE]; + uint32_t encrypted_ppid_ret_size; + sgx_pce_info_t pce_info; + uint8_t signature_scheme; + + if (!p_buf || buf_size < REF_RSA_OAEP_3072_MOD_SIZE) + return SGX_QL_ERROR_INVALID_PARAMETER; + + if (g_ql_global_data.m_pencryptedppid) + { + memcpy_s(p_buf, buf_size, g_ql_global_data.m_pencryptedppid, REF_RSA_OAEP_3072_MOD_SIZE); + return SGX_QL_SUCCESS; + } + + sgx_status = get_pce_encrypt_key(g_ql_global_data.m_eid, + (uint32_t*)&tdqe_error, + &pce_target_info, + &tdqe_report, + PCE_ALG_RSA_OAEP_3072, + PPID_RSA3072_ENCRYPTED, + enc_key_size, + enc_public_key); + if (SGX_SUCCESS != sgx_status) { + SE_TRACE(SE_TRACE_ERROR, "Failed call into the TDQE. 0x%04x.\n", sgx_status); + return (quote3_error_t)sgx_status; + } + + if (TDQE_SUCCESS != tdqe_error) { + SE_TRACE(SE_TRACE_ERROR, "Failed to generated PCE encryption key.\n"); + return (quote3_error_t)tdqe_error; + } + + pce_error = sgx_get_pce_info(&tdqe_report, + enc_public_key, + enc_key_size, + PCE_ALG_RSA_OAEP_3072, + encrypted_ppid, + REF_RSA_OAEP_3072_MOD_SIZE, + &encrypted_ppid_ret_size, + &pce_info.pce_isv_svn, + &pce_info.pce_id, + &signature_scheme); + if (SGX_PCE_SUCCESS != pce_error) { + SE_TRACE(SE_TRACE_ERROR, "Failed to get PCE info, 0x%04x.\n", pce_error); + return translate_pce_errors(pce_error); + } + + if (signature_scheme != PCE_NIST_P256_ECDSA_SHA256) { + SE_TRACE(SE_TRACE_ERROR, "PCE returned incorrect signature scheme.\n"); + return SGX_QL_ERROR_INVALID_PCE_SIG_SCHEME; + } + + if (encrypted_ppid_ret_size != REF_RSA_OAEP_3072_MOD_SIZE) { + SE_TRACE(SE_TRACE_ERROR, "PCE returned unexpected returned encrypted PPID size.\n"); + return SGX_QL_ERROR_UNEXPECTED; + } + + g_ql_global_data.m_pencryptedppid = (uint8_t *)malloc(sizeof(uint8_t) * REF_RSA_OAEP_3072_MOD_SIZE); + if (!g_ql_global_data.m_pencryptedppid) { + SE_TRACE(SE_TRACE_ERROR, "Fail to allocate memory.\n"); + return SGX_QL_ERROR_OUT_OF_MEMORY; + } + + if (0 != memcpy_s(g_ql_global_data.m_pencryptedppid, REF_RSA_OAEP_3072_MOD_SIZE, encrypted_ppid, REF_RSA_OAEP_3072_MOD_SIZE) || + 0 != memcpy_s(p_buf, buf_size, g_ql_global_data.m_pencryptedppid, REF_RSA_OAEP_3072_MOD_SIZE) || + 0 != memcpy_s(&g_ql_global_data.m_pce_info, sizeof(g_ql_global_data.m_pce_info), &pce_info, sizeof (pce_info))) { + SE_TRACE(SE_TRACE_ERROR, "Fail to copy memory.\n"); + return SGX_QL_ERROR_UNEXPECTED; + } + + return SGX_QL_SUCCESS; +} + +/** + * This function is used to write the ECDSA data blob. + * + * @param p_buf Points to the buffer to be written to disk. Must not be NULL. + * @param buf_size Size in bytes pointed to by p_buf. Must be no larger than MAX_PATH. + * @param p_label String of the label for the data to be stored. Must not be NULL. + * + * @return SGX_QE_PLATFORM_LIB_UNAVAILABLE + * @return SGX_QL_ERROR_UNEXPECTED + * @return SGX_QL_ERROR_INVALID_PARAMETER + * @return SGX_QL_FILE_ACCESS_ERROR + * @return SGX_QL_SUCCESS + */ +static quote3_error_t write_persistent_data(const uint8_t *p_buf, + uint32_t buf_size, + const char *p_label) +{ + quote3_error_t ret_val = SGX_QL_PLATFORM_LIB_UNAVAILABLE; + sgx_write_persistent_data_func_t p_sgx_qe_write_persistent_data; + #ifndef _MSC_VER + void *handle; + char *error; + #else + HINSTANCE handle; + #endif + + if((NULL == p_buf) || + (0 == buf_size)|| + (NULL == p_label)) { + return(SGX_QL_ERROR_INVALID_PARAMETER); + } + + #ifndef _MSC_VER + handle = get_qpl_handle(); + if (handle) { + p_sgx_qe_write_persistent_data = (sgx_write_persistent_data_func_t)dlsym(handle, "sgx_ql_write_persistent_data"); + if ((error = dlerror()) == NULL && + NULL != p_sgx_qe_write_persistent_data) { + SE_TRACE(SE_TRACE_DEBUG, "Found the sgx_ql_write_persistent_data API.\n"); + ret_val = p_sgx_qe_write_persistent_data(p_buf, + buf_size, + p_label); + if (SGX_QL_SUCCESS != ret_val) { + SE_PROD_LOG("Error returned from the sgx_ql_write_persistent_data API. 0x%04x\n", ret_val); + } + } else { + SE_TRACE(SE_TRACE_WARNING, "Couldn't find 'sgx_ql_write_persistent_data()' in the platform library. %s\n", dlerror()); + } + } else { + SE_PROD_LOG("Couldn't find the platform library. %s\n", dlerror()); + } + #else + handle = LoadLibrary(TEXT(SGX_QL_QUOTE_CONFIG_LIB_FILE_NAME)); + if (handle != NULL) { + SE_TRACE(SE_TRACE_DEBUG, "Found the Quote's dependent library. %s.\n", SGX_QL_QUOTE_CONFIG_LIB_FILE_NAME); + p_sgx_qe_write_persistent_data = (sgx_write_persistent_data_func_t)GetProcAddress(handle, "sgx_ql_write_persistent_data"); + if (NULL != p_sgx_qe_write_persistent_data) { + SE_TRACE(SE_TRACE_DEBUG, "Found the sgx_ql_write_persistent_data API.\n"); + ret_val = p_sgx_qe_write_persistent_data(p_buf, + buf_size, + p_label); + if (SGX_QL_SUCCESS != ret_val) { + SE_TRACE(SE_TRACE_ERROR, "Error returned from the sgx_ql_write_persistent_data API. 0x%04x\n", ret_val); + } + } + else { + SE_TRACE(SE_TRACE_WARNING, "Couldn't find 'sgx_ql_write_persistent_data()' in the platform library. %s\n"); + } + FreeLibrary(handle); + } + else { + SE_TRACE(SE_TRACE_DEBUG, "Couldn't find the platform library. %s\n"); + } + #endif + + //CLEANUP: + return(ret_val); +} + +/** + * This function is used to read the ECDSA data blob. + * + * @param p_buf Points to the buffer to be written to disk. Must not be NULL. + * @param p_buf_size Size in bytes pointed to by p_buf. Must not be NULL. + * @param p_label String of the label for the data to be stored. Must not be NULL. + * + * @return SGX_QL_SUCCESS + * @return SGX_QE_PLATFORM_LIB_UNAVAILABLE + * @return SGX_QL_ERROR_UNEXPECTED + * @return SGX_QL_ERROR_INVALID_PARAMETER + * @return SGX_QL_FILE_ACCESS_ERROR + */ +static quote3_error_t read_persistent_data(uint8_t *p_buf, + uint32_t *p_buf_size, + const char *p_label) +{ + quote3_error_t ret_val = SGX_QL_PLATFORM_LIB_UNAVAILABLE; + sgx_read_persistent_data_func_t p_sgx_qe_read_persistent_data; + + #ifndef _MSC_VER + void *handle; + char *error; + #else + HINSTANCE handle; + #endif + + if((NULL == p_buf) || + (NULL == p_buf_size)|| + (NULL == p_label)) { + return(SGX_QL_ERROR_INVALID_PARAMETER); + } + + #ifndef _MSC_VER + handle = get_qpl_handle(); + if (handle) { + p_sgx_qe_read_persistent_data = (sgx_read_persistent_data_func_t)dlsym(handle, "sgx_ql_read_persistent_data"); + if ((error = dlerror()) == NULL && + NULL != p_sgx_qe_read_persistent_data) { + SE_TRACE(SE_TRACE_DEBUG, "Found the sgx_qe_read_persistent_data API.\n"); + ret_val = p_sgx_qe_read_persistent_data(p_buf, + p_buf_size, + p_label); + if (SGX_QL_SUCCESS != ret_val) { + SE_PROD_LOG("Error returned from the sgx_ql_read_persistent_data API. 0x%04x\n", ret_val); + } + } else { + SE_TRACE(SE_TRACE_WARNING, "Couldn't find 'sgx_ql_read_persistent_data()' in the platform library. %s\n", dlerror()); + } + } else { + SE_PROD_LOG("Couldn't find the platform library. %s\n", dlerror()); + } + #else + handle = LoadLibrary(TEXT(SGX_QL_QUOTE_CONFIG_LIB_FILE_NAME)); + if (handle != NULL) { + SE_TRACE(SE_TRACE_DEBUG, "Found the Quote's dependent library. %s.\n", SGX_QL_QUOTE_CONFIG_LIB_FILE_NAME); + p_sgx_qe_read_persistent_data = (sgx_read_persistent_data_func_t)GetProcAddress(handle, "sgx_ql_read_persistent_data"); + if (NULL != p_sgx_qe_read_persistent_data) { + SE_TRACE(SE_TRACE_DEBUG, "Found the sgx_ql_read_persistent_data API.\n"); + ret_val = p_sgx_qe_read_persistent_data(p_buf, + p_buf_size, + p_label); + if (SGX_QL_SUCCESS != ret_val) { + SE_TRACE(SE_TRACE_ERROR, "Error returned from the sgx_ql_read_persistent_data API. 0x%04x\n", ret_val); + } + } + else { + SE_TRACE(SE_TRACE_WARNING, "Couldn't find 'sgx_ql_write_persistent_data()' in the platform library. %s\n"); + } + FreeLibrary(handle); + } + else { + SE_TRACE(SE_TRACE_DEBUG, "Couldn't find the platform library. %s\n"); + } + + #endif + + //CLEANUP: + return(ret_val); +} + +/** + * + * @param p_ecdsa_blob + * @param p_plaintext_data + * @param p_encrypted_ppid + * @param encrypted_ppid_size + * @param certification_key_type + * @param p_tdqe_eid + * + * @return SGX_QL_SUCCESS + * @return SGX_QL_ERROR_INVALID_PARAMETER + * @return errors from PCE translator from sgx_pce_sign_report() + * @return ecall errors + * @return errors from TDQE's store_cert_data() + * + */ +static quote3_error_t certify_key(uint8_t *p_ecdsa_blob, + ref_plaintext_ecdsa_data_sdk_t* p_plaintext_data, + uint8_t *p_encrypted_ppid, + uint32_t encrypted_ppid_size, + sgx_ql_cert_key_type_t certification_key_type, + sgx_enclave_id_t *p_tdqe_eid) +{ + quote3_error_t refqt_ret = SGX_QL_ERROR_UNEXPECTED; + sgx_status_t sgx_status = SGX_SUCCESS; + tdqe_error_t tdqe_error = TDQE_ERROR_UNEXPECTED; + sgx_pce_error_t pce_error; + sgx_ec256_signature_t pce_sig; + uint32_t sig_out_size; + + // Verify inputs + if((NULL == p_ecdsa_blob) || + (NULL == p_plaintext_data) || + (NULL == p_tdqe_eid)) { + return(SGX_QL_ERROR_INVALID_PARAMETER); + } + + if(NULL != p_encrypted_ppid) { + if(encrypted_ppid_size != REF_RSA_OAEP_3072_MOD_SIZE) { + return(SGX_QL_ERROR_INVALID_PARAMETER); + } + } + + if (PPID_RSA3072_ENCRYPTED != certification_key_type) { + return(SGX_QL_ERROR_INVALID_PARAMETER); + } + + SE_TRACE(SE_TRACE_DEBUG, "Certify Key.\n"); + // Set the TCB to the value you want to use when certifying the key. + // For the reference, use the CPUSNV and PCEISVSVN that matches the test PCK. CPUSVN = 00000000010100000000000000000000, PCE ISVSVN = 0000 + // For E3's, there will not be a PCK Cert for every CPUSVN+PCE ISVNSVN combination. The platform will need to know which values to use. + // For E5's, the PCK Cert can be requested on demand and use the CPUSVN+PCE ISVSVN of the current platform. + // + SE_TRACE(SE_TRACE_DEBUG, "pce_cert_psvn.cpusvn:\n"); + PRINT_BYTE_ARRAY(SE_TRACE_DEBUG, &p_plaintext_data->cert_cpu_svn, sizeof(p_plaintext_data->cert_cpu_svn)); + SE_TRACE(SE_TRACE_DEBUG, "\npce_cert_psvn.isv_svn = 0x%04x.\n", p_plaintext_data->cert_pce_info.pce_isv_svn); + pce_error = sgx_pce_sign_report(&p_plaintext_data->cert_pce_info.pce_isv_svn, + &p_plaintext_data->cert_cpu_svn, + &p_plaintext_data->qe_report, + (uint8_t*)&pce_sig, + sizeof(pce_sig), + &sig_out_size); + if (SGX_PCE_SUCCESS != pce_error) { + SE_TRACE(SE_TRACE_ERROR, "Failed to certify the attestation key. PCE Error = 0x%04x.\n", pce_error); + refqt_ret = translate_pce_errors(pce_error); + goto CLEANUP; + } + + // Update the signature data and the report that was signed. + if(0 != memcpy_s(&p_plaintext_data->qe_report_cert_key_sig, sizeof(p_plaintext_data->qe_report_cert_key_sig), &pce_sig, sizeof(pce_sig))) { + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + // Update the ECDSA key blob with certification data + SE_TRACE(SE_TRACE_DEBUG, "Update ECDSA blob with cert data.\n"); + sgx_status = store_cert_data(*p_tdqe_eid, + (uint32_t*)&tdqe_error, + p_plaintext_data, + certification_key_type, + p_encrypted_ppid, + encrypted_ppid_size, + p_ecdsa_blob, + SGX_QL_TRUSTED_ECDSA_BLOB_SIZE_SDK); + if (SGX_SUCCESS != sgx_status) { + SE_TRACE(SE_TRACE_ERROR, "Failed call into the TDQE. 0x%04x\n", sgx_status); + // /todo: May want to retry on SGX_ERROR_ENCLAVE_LOST caused by power transition + refqt_ret = (quote3_error_t)sgx_status; + goto CLEANUP; + } + if (TDQE_SUCCESS != tdqe_error) { + SE_TRACE(SE_TRACE_ERROR, "Failed to generate ECDSA blob. 0x%04x.\n", tdqe_error); + refqt_ret = (quote3_error_t)tdqe_error; + goto CLEANUP; + } else { + SE_TRACE(SE_TRACE_DEBUG, "Certification done. Store updated ECDSA blob to disk.\n"); + refqt_ret = write_persistent_data(p_ecdsa_blob, + SGX_QL_TRUSTED_ECDSA_BLOB_SIZE_SDK, + ECDSA_BLOB_LABEL); + if (refqt_ret != SGX_QL_SUCCESS) { + // This should not be a critical failure but a warning. The ECDSA key is still in memory. + SE_TRACE(SE_TRACE_WARNING, "Warning, unable to store resealed ECDSA blob to persistent storage.\n"); + SE_TRACE(SE_TRACE_DEBUG, "File storage is not required for the QE_Library. Library will use ECDSA Blob cached in memory.\n"); + refqt_ret = SGX_QL_SUCCESS; + } + } + + CLEANUP: + return(refqt_ret); +} + + +/** + * This is the ECDSA-P256 specific init quote code. The generic quote interfaces have been converted/reduced to the ECDSA specific inputs. + * The method will generate a new key and certify it when needed. + * /todo: Add support to re-certify when the key exists but its certification is out of date. + * /todo: Add the ability to specify additional certification data such as the CPU_SVN and PCE_SVN information when requesting a PCE signature + * to support E3 platforms. + * + * @param certification_key_type + * @param qe_target_info + * @param refresh_att_key + * @param pub_key_id + * + * @return SGX_QL_SUCCESS + * @return SGX_QL_ERROR_INVALID_PARAMETER + * @return SGX_PCE_INVALID_PARAMETER->SGX_QL_ERROR_UNEXPECTED + * @return SGX_PCE_INTERFACE_UNAVAILABLE->SGX_QL_INTERFACE_UNAVAILABLE + * @return SGX_PCE_OUT_OF_EPC->SGX_QL_OUT_OF_EPC + * @return Errors from load_qe() + * @return Errors from failed ecall (need to handle at least ENCLAVE_LOST) + * @return TDQE_ERROR_INVALID_PLATFORM + * @return TDQE_ERROR_INVALID_PARAMETER + * @return TDQE_ERROR_CRYPTO Error generating the PPID Encryption key. + * @return TDQE_ERROR_UNEXPECTED + * @return SGX_PCE_INVALID_REPORT QE.REPORT verification failed.->SGX_QL_ERROR_UNEXPECTED + * @return SGX_PCE_CRYPTO_ERROR QE.REPORT.ReportData hash compare failed.-> SGX_QL_ERROR_UNEXPECTED + * @return SGX_PCE_INVALID_PRIVILEGE QE doesn't have the prov bit set.-> SGX_QL_ERROR_UNEXPECTED (for produciton + * release. + * @return SGX_PCE_UNEXPECTED->SGX_QL_ERROR_UNEXPECTED + * @return SGX_QL_ERROR_INVALID_PCE_SIG_SCHEME PCE used and unexpected/unsupported signature scheme. + * @return SGX_QL_ERROR_UNEXPECTED + * @return TDQE_ERROR_ATT_KEY_GEN Error generated the attestaion key. + * @return TDQE_ERROR_CRYPTO Error generating QE_ID. + * @return TDQE_ERROR_OUT_OF_MEMORY + * @return SGX_ERROR_UNEXPECTED (from Seal) + * @return SGX_ERROR_INVALID_PARAMETER (from Seal) + * @return SGX_ERROR_OUT_OF_MEMORY (create report) + * @return TDQE_ERROR_CRYPTO Error decrypting PPID (only for cert_key_type = PPID_CLEARTEXT) + * @return TDQE_ECDSABLOB_ERROR (probably should be unexpected since the blob was either generated during this call + * or was already verified once. + * + */ +static quote3_error_t ecdsa_init_quote(sgx_ql_cert_key_type_t certification_key_type, + sgx_target_info_t *p_qe_target_info, + bool refresh_att_key, + ref_sha256_hash_t *p_pub_key_id) +{ + quote3_error_t refqt_ret = SGX_QL_SUCCESS; + sgx_status_t sgx_status = SGX_SUCCESS; + sgx_enclave_id_t tdqe_eid = 0; + sgx_launch_token_t launch_token = {0}; + tdqe_error_t tdqe_error = TDQE_ERROR_UNEXPECTED; + uint8_t resealed = 0; + ref_sha256_hash_t blob_ecdsa_id; + sgx_target_info_t pce_target_info; + sgx_isv_svn_t pce_isv_svn; + sgx_misc_attribute_t tdqe_attributes; + //int enclave_lost_retry_time = 1; + bool gen_new_key = false; + sgx_psvn_t pce_cert_psvn; + sgx_ql_pck_cert_id_t pck_cert_id; + sgx_pce_error_t pce_error; + sgx_report_body_t tdqe_report_body; + uint32_t cert_data_size; + sgx_sealed_data_t *p_sealed_ecdsa; + ref_plaintext_ecdsa_data_sdk_t plaintext_data; + ref_plaintext_ecdsa_data_sdk_t *p_seal_data_plain_text; + uint8_t encrypted_ppid[REF_RSA_OAEP_3072_MOD_SIZE]; + int blob_mutex_rc = 0; + + // Verify inputs + if (PPID_RSA3072_ENCRYPTED != certification_key_type) { + SE_TRACE(SE_TRACE_ERROR, "Invalid certification key type.\n"); + return(SGX_QL_ERROR_INVALID_PARAMETER); + } + + if (NULL == p_qe_target_info) { + SE_TRACE(SE_TRACE_ERROR, "Invalid qe target info.\n"); + return(SGX_QL_ERROR_INVALID_PARAMETER); + } + + // Get PCE Target Info + SE_TRACE(SE_TRACE_DEBUG, "Call sgx_pce_get_target().\n"); + pce_error = sgx_pce_get_target(&pce_target_info, &pce_isv_svn); + if (SGX_PCE_SUCCESS != pce_error) { + SE_TRACE(SE_TRACE_ERROR, "Error, call sgx_pce_get_target [%s], pce_error:%04x.\n", __FUNCTION__, pce_error); + refqt_ret = translate_pce_errors(pce_error); + goto CLEANUP; + } + + // Load the QE enclave + SE_TRACE(SE_TRACE_DEBUG, "Call Load the QE.\n"); + refqt_ret = load_qe(&tdqe_eid, + &tdqe_attributes, + &launch_token); + if (SGX_QL_SUCCESS != refqt_ret) + { + goto CLEANUP; + + } + + // Compose the target_info from the attributes returned by sgx_create_enclave and mr_enclave from qe report. + memset(p_qe_target_info, 0, sizeof(sgx_target_info_t)); + if(0 != memcpy_s(&p_qe_target_info->attributes, sizeof(p_qe_target_info->attributes), + &tdqe_attributes.secs_attr, sizeof(tdqe_attributes.secs_attr))) { + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + if(0 != memcpy_s(&p_qe_target_info->misc_select, sizeof(p_qe_target_info->misc_select), + &tdqe_attributes.misc_select, sizeof(tdqe_attributes.misc_select))) { + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + + blob_mutex_rc = se_mutex_lock(&g_ql_global_data.m_ecdsa_blob_mutex); + if (0 == blob_mutex_rc) { + SE_TRACE(SE_TRACE_ERROR, "Failed to lock mutex\n"); + goto CLEANUP; + } + + // If the caller has requested a new key, then force the generation of the new key regardless if the ECDSA blob exists. Otherwise, + // check to see if the ECDSA blob exists and is valid. + do { + if (true == refresh_att_key) { + SE_TRACE(SE_TRACE_DEBUG, "Caller requests a new ECDSA Key.\n"); + gen_new_key = true; + break; + } + uint32_t blob_size_read = sizeof(g_ql_global_data.m_ecdsa_blob); + // Get ECDSA Blob if exists + SE_TRACE(SE_TRACE_DEBUG, "Read ECDSA blob.\n"); + refqt_ret = read_persistent_data((uint8_t*)g_ql_global_data.m_ecdsa_blob, + &blob_size_read, + ECDSA_BLOB_LABEL); + if (SGX_QL_SUCCESS != refqt_ret) { + // Ignore errors since persistent storage is not required. Blob in memory may still be OK so continue to try to verify the cached blob. + SE_TRACE(SE_TRACE_WARNING, "ECDSA Blob doesn't exist is persistent storage. Try to use the cached version.\n"); + refqt_ret = SGX_QL_SUCCESS; + } + else if (blob_size_read != sizeof(g_ql_global_data.m_ecdsa_blob)) { + // If the blob was successfully read from persistent storage, verify its size. + SE_TRACE(SE_TRACE_ERROR, "Invalid ECDSA Blob file size. blob_size_read = %uld, sizeof(g_ecdsa_blob) = %uld. Since caller requested use any key, generate a new key.\n", blob_size_read, (uint32_t)sizeof(g_ql_global_data.m_ecdsa_blob)); + gen_new_key = true; + break; + } + memset(&tdqe_report_body, 0, sizeof(tdqe_report_body)); + // Verify the cached blob. + sgx_status = verify_blob(tdqe_eid, + (uint32_t*)&tdqe_error, + (uint8_t*)g_ql_global_data.m_ecdsa_blob, + sizeof(g_ql_global_data.m_ecdsa_blob), + &resealed, + &tdqe_report_body, + sizeof(blob_ecdsa_id), + (uint8_t*)&blob_ecdsa_id); + if (SGX_SUCCESS != sgx_status) { + SE_TRACE(SE_TRACE_ERROR, "Failed call into the TDQE. 0x%04x\n", sgx_status); + ///todo: May want to retry on SGX_ERROR_ENCLAVE_LOST caused by power transition or return a differnet error + refqt_ret = (quote3_error_t)sgx_status; + goto CLEANUP; + } + if (TDQE_SUCCESS != tdqe_error) { + SE_TRACE(SE_TRACE_DEBUG, "Invalid ECDSA Blob verificaton. 0x%04x, generate a new key.\n", tdqe_error); + gen_new_key = true; + break; + } + SE_TRACE(SE_TRACE_DEBUG, "Successfully verified ECDSA Blob.\n"); + p_qe_target_info->mr_enclave = tdqe_report_body.mr_enclave; + if (resealed) { + SE_TRACE(SE_TRACE_DEBUG, "ECDSA Blob was resealed. Store it disk.\n"); + refqt_ret = write_persistent_data((uint8_t*)g_ql_global_data.m_ecdsa_blob, + sizeof(g_ql_global_data.m_ecdsa_blob), + ECDSA_BLOB_LABEL); + if (refqt_ret != SGX_QL_SUCCESS) { + // Don't need to error since the blob is still good in memory. + ///todo: What is the best way to notify the requester that the blob was not stored to disk? + SE_TRACE(SE_TRACE_WARNING, "Warning, unable to store resealed ECDSA blob to persistent storage.\n"); + SE_TRACE(SE_TRACE_DEBUG, "File storage is not required for the QE_Library. Library will use ECDSA Blob cached in memory.\n"); + refqt_ret = SGX_QL_SUCCESS; + } + } + + p_sealed_ecdsa = reinterpret_cast(g_ql_global_data.m_ecdsa_blob); + p_seal_data_plain_text = reinterpret_cast(g_ql_global_data.m_ecdsa_blob + sizeof(sgx_sealed_data_t) + p_sealed_ecdsa->plain_text_offset); + // Check to see if the requested certification type matches the type in the blob. + if(p_seal_data_plain_text->certification_key_type != certification_key_type) { + SE_TRACE(SE_TRACE_ERROR, "Requested certificaiton_key_type doesn't match existing blob's type, Gen and certify new key.\n"); + gen_new_key = true; + break; + } + //QE's TCB has increased, (a decrease would cause a blob verification failure) then catch it here and generate a + //new key + if((tdqe_report_body.isv_svn > p_seal_data_plain_text->cert_qe_isv_svn) || + (0 != memcmp(&p_seal_data_plain_text->raw_cpu_svn, &tdqe_report_body.cpu_svn, sizeof(p_seal_data_plain_text->raw_cpu_svn)))) { + SE_TRACE(SE_TRACE_ERROR, "Platform TCB has increased, Requested certificaiton_key_type doesn't match existing blob's type, Gen and certify new key.\n"); + gen_new_key = true; + break; + } + ///todo: Probably don't need this check. PCE target info changes shouldn't require re-certification unless there is OwnerID changes. + //but is safe since it will just uneccessarily cause key regeneration and recertificaiton. + if(0 != memcmp(&p_seal_data_plain_text->pce_target_info, &pce_target_info, sizeof(p_seal_data_plain_text->pce_target_info))) { + SE_TRACE(SE_TRACE_DEBUG, "Recertification is not available since PCE TargetInfo changed. Gen and certify new key.\n"); + gen_new_key = true; + break; + } + if(0 != memcpy_s(p_pub_key_id, sizeof(*p_pub_key_id), &blob_ecdsa_id, sizeof(blob_ecdsa_id))) { + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + SE_TRACE(SE_TRACE_DEBUG, "Using ECDSA_ID from ECDSA Blob. ECDSA_ID:\n"); + PRINT_BYTE_ARRAY(SE_TRACE_DEBUG, (uint8_t *)&blob_ecdsa_id, sizeof(blob_ecdsa_id)); + SE_TRACE(SE_TRACE_DEBUG, "\n"); + + if (SGX_QL_SUCCESS != (refqt_ret = getencryptedppid(pce_target_info, encrypted_ppid, REF_RSA_OAEP_3072_MOD_SIZE))){ + SE_TRACE(SE_TRACE_DEBUG, "Fail to retrieve encrypted PPID.\n"); + goto CLEANUP; + } + + + if (NULL == g_ql_global_data.m_qe_id) + { + + g_ql_global_data.m_qe_id = (sgx_key_128bit_t*)malloc(sizeof(sgx_key_128bit_t)); + if (!g_ql_global_data.m_qe_id) { + SE_TRACE(SE_TRACE_ERROR, "Fail to allocate memory.\n"); + refqt_ret = SGX_QL_ERROR_OUT_OF_MEMORY; + goto CLEANUP; + } + + refqt_ret = load_id_enclave_get_id(g_ql_global_data.m_qe_id); + if (SGX_QL_SUCCESS != refqt_ret) { + goto CLEANUP; + } + } + + // Determine if the raw-TCB has changed since the blob was last generated or the platform library + // has a new TCBm. If the raw-TCB was downgraded, the ECDSA blob will not be accessible and fail + // above. + // For key recertification, the attestation owner doesn't need to generate a new attestation key but + // it does need the attestation key to get recertified by the PCE. This can happen due to a TCB + // Recovery that requires the att key to be certified due to a higher PCE ISVSVN. If the CPUSVN changes + // both a new attestation key will be generated and it will get recertified. Recertification without a new + // attestation key can also happen when the resulting TCBm from the call to sgx_get_quote_config() differs from + // the value used to certify existing attestation key. + + // Get the TCB the PCE should use to ceritfy the attestaion key. Find and call the platform software's + // sgx_ql_get_quote_config(). If it is not available or the API returns SGX_QL_NO_PLATFORM_CERT_DATA, then use + // the platform's raw TCB to certify the key. + cert_data_size = 0; + pck_cert_id.p_qe3_id = (uint8_t*)g_ql_global_data.m_qe_id; + pck_cert_id.qe3_id_size = sizeof(*g_ql_global_data.m_qe_id); + pck_cert_id.p_platform_cpu_svn = &tdqe_report_body.cpu_svn; + pck_cert_id.p_platform_pce_isv_svn = &pce_isv_svn; + pck_cert_id.p_encrypted_ppid = encrypted_ppid; + pck_cert_id.encrypted_ppid_size = REF_RSA_OAEP_3072_MOD_SIZE; + pck_cert_id.crypto_suite = PCE_ALG_RSA_OAEP_3072; + pck_cert_id.pce_id = p_seal_data_plain_text->cert_pce_info.pce_id; + refqt_ret = get_platform_quote_cert_data(&pck_cert_id, + &pce_cert_psvn.cpu_svn, + &pce_cert_psvn.isv_svn, + &cert_data_size, + NULL); + if (refqt_ret != SGX_QL_SUCCESS) { + if (refqt_ret != SGX_QL_PLATFORM_LIB_UNAVAILABLE) { + // The dependent library was found but it returned an error + goto CLEANUP; + } + refqt_ret = SGX_QL_SUCCESS; + if(pce_isv_svn > p_seal_data_plain_text->cert_pce_info.pce_isv_svn) { + SE_TRACE(SE_TRACE_DEBUG, "Using raw-PCE_ISVSVN to certify the key and it has increased. Recertify.\n"); + + // Use the raw TCB of the platform and the EncPPID certification type + pce_cert_psvn.cpu_svn = tdqe_report_body.cpu_svn; + pce_cert_psvn.isv_svn = pce_isv_svn; + // Set up the certification data to update the blob with. + memset(&plaintext_data, 0, sizeof(plaintext_data)); + if(0 != memcpy_s(&plaintext_data.cert_cpu_svn, sizeof(plaintext_data.cert_cpu_svn), + &pce_cert_psvn.cpu_svn, sizeof(pce_cert_psvn.cpu_svn))) { + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + plaintext_data.cert_pce_info.pce_isv_svn = pce_cert_psvn.isv_svn; + plaintext_data.cert_pce_info.pce_id = p_seal_data_plain_text->cert_pce_info.pce_id; + if(0 != memcpy_s(&plaintext_data.raw_cpu_svn, sizeof(plaintext_data.raw_cpu_svn), + &tdqe_report_body.cpu_svn, sizeof(tdqe_report_body.cpu_svn))) { + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + plaintext_data.raw_pce_info.pce_isv_svn = pce_isv_svn; + plaintext_data.raw_pce_info.pce_id = p_seal_data_plain_text->cert_pce_info.pce_id; + // For recertification, pull out out the certification data from the blob that doesn't need to change. + if(0 != memcpy_s(&plaintext_data.qe_report, sizeof(plaintext_data.qe_report), + &p_seal_data_plain_text->qe_report, sizeof(p_seal_data_plain_text->qe_report))) { + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + if (0 != memcpy_s(&plaintext_data.qe_id, sizeof(plaintext_data.qe_id), + g_ql_global_data.m_qe_id, sizeof(*g_ql_global_data.m_qe_id))) { + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + plaintext_data.signature_scheme = p_seal_data_plain_text->signature_scheme; ///todo: Not likely that the signature scheme changed but may want to re-get from PCE. It is just more involved. + if(0 != memcpy_s(&plaintext_data.pce_target_info, sizeof(plaintext_data.pce_target_info), + &pce_target_info, sizeof(pce_target_info))) { + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + plaintext_data.certification_key_type = certification_key_type; //Cert key request it checked if it changed above. If changed, recertification is not allowed. + refqt_ret = certify_key(g_ql_global_data.m_ecdsa_blob, + &plaintext_data, + NULL, + 0, + certification_key_type, + &tdqe_eid); + } + } + else { + // Check if the returned certification TCB is different than the TCB used to certify the key in the + // ECDSA blob. If it hasn't changed then continue to use the cert data in the blob. Otherwise, need to + // do recertify using the new data. + if((pce_cert_psvn.isv_svn != p_seal_data_plain_text->cert_pce_info.pce_isv_svn) || + (0 != memcmp(&pce_cert_psvn.cpu_svn, &p_seal_data_plain_text->cert_cpu_svn, sizeof(pce_cert_psvn.cpu_svn)))) + { + SE_TRACE(SE_TRACE_DEBUG, "The Cert TCB value returned by the platform library is different than the value used to certify the key. Recertify.\n"); + + // Set up the certification data to update the blob with. + memset(&plaintext_data, 0, sizeof(plaintext_data)); + if(0 != memcpy_s(&plaintext_data.cert_cpu_svn, sizeof(plaintext_data.cert_cpu_svn), + &pce_cert_psvn.cpu_svn, sizeof(pce_cert_psvn.cpu_svn))) { + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + plaintext_data.cert_pce_info.pce_isv_svn = pce_cert_psvn.isv_svn; + plaintext_data.cert_pce_info.pce_id = p_seal_data_plain_text->cert_pce_info.pce_id; + if(0 != memcpy_s(&plaintext_data.raw_cpu_svn, sizeof(plaintext_data.raw_cpu_svn), + &tdqe_report_body.cpu_svn, sizeof(tdqe_report_body.cpu_svn))) { + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + plaintext_data.raw_pce_info.pce_isv_svn = pce_isv_svn; + plaintext_data.raw_pce_info.pce_id = p_seal_data_plain_text->cert_pce_info.pce_id; + // For recertification, pull out out the certification data from the blob that doesn't need to change. + if(0 != memcpy_s(&plaintext_data.qe_report, sizeof(plaintext_data.qe_report), + &p_seal_data_plain_text->qe_report, sizeof(p_seal_data_plain_text->qe_report))){ + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + if (0 != memcpy_s(&plaintext_data.qe_id, sizeof(plaintext_data.qe_id), + g_ql_global_data.m_qe_id, sizeof(*g_ql_global_data.m_qe_id))) { + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + plaintext_data.signature_scheme = p_seal_data_plain_text->signature_scheme; ///todo: Not likely that the signature scheme changed but may want to re-get from PCE. It is just more involved. + if(0 != memcpy_s(&plaintext_data.pce_target_info, sizeof(plaintext_data.pce_target_info), + &pce_target_info, sizeof(pce_target_info))) { + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + plaintext_data.certification_key_type = certification_key_type; //Cert key request it checked if it changed above. If changed, recertification is not allowed. + refqt_ret = certify_key(g_ql_global_data.m_ecdsa_blob, + &plaintext_data, + NULL, + 0, + certification_key_type, + &tdqe_eid); + } + } + } while (0); + + if (true == gen_new_key) { + sgx_report_t tdqe_report; + + // Authentication data is added to by the QE owner and will be 'signed' by the certification key. It's use is dependent of the owner. + // Just use a fixed value for the reference. + uint8_t authentication_data[REF_ECDSDA_AUTHENTICATION_DATA_SIZE] = + {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, + 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f}; + + SE_TRACE(SE_TRACE_DEBUG, "Generate and certify a new ECDSA attestation key\n"); + if (PPID_RSA3072_ENCRYPTED == certification_key_type) { + if (SGX_QL_SUCCESS != (refqt_ret = getencryptedppid(pce_target_info, encrypted_ppid, REF_RSA_OAEP_3072_MOD_SIZE))) { + SE_TRACE(SE_TRACE_DEBUG, "Fail to retrieve encrypted PPID.\n"); + goto CLEANUP; + } + } else { + SE_TRACE(SE_TRACE_ERROR, "certification_key_type not supported.\n"); + refqt_ret = SGX_QL_ERROR_INVALID_PARAMETER; + goto CLEANUP; + } + // Generate the ECDSA key + SE_TRACE(SE_TRACE_DEBUG, "Get ATT Key.\n"); + sgx_status = gen_att_key(tdqe_eid, + (uint32_t*)&tdqe_error, + g_ql_global_data.m_ecdsa_blob, + SGX_QL_TRUSTED_ECDSA_BLOB_SIZE_SDK, + &pce_target_info, + &tdqe_report, + &authentication_data[0], + sizeof(authentication_data)); + if (SGX_SUCCESS != sgx_status) { + SE_TRACE(SE_TRACE_ERROR, "Failed call into the TDQE. 0x%04x.\n", sgx_status); + // /todo: May want to retry on SGX_ERROR_ENCLAVE_LOST caused by power transition + refqt_ret = (quote3_error_t)sgx_status; + goto CLEANUP; + } + if (TDQE_SUCCESS != tdqe_error) { + SE_TRACE(SE_TRACE_ERROR, "Failed to generate attestation key. 0x%04x\n", tdqe_error); + refqt_ret = (quote3_error_t)tdqe_error; + goto CLEANUP; + } + + if(0 != memcpy_s(&p_qe_target_info->mr_enclave, sizeof(p_qe_target_info->mr_enclave), + &tdqe_report.body.mr_enclave, sizeof(tdqe_report.body.mr_enclave))) { + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + + if (NULL == g_ql_global_data.m_qe_id) + { + + g_ql_global_data.m_qe_id = (sgx_key_128bit_t*)malloc(sizeof(sgx_key_128bit_t)); + if (!g_ql_global_data.m_qe_id) { + SE_TRACE(SE_TRACE_ERROR, "Fail to allocate memory.\n"); + refqt_ret = SGX_QL_ERROR_OUT_OF_MEMORY; + goto CLEANUP; + } + + refqt_ret = load_id_enclave_get_id(g_ql_global_data.m_qe_id); + if (SGX_QL_SUCCESS != refqt_ret) { + goto CLEANUP; + } + } + + // Certify the key + // Get the certification data from the platform, if available + p_sealed_ecdsa = reinterpret_cast(g_ql_global_data.m_ecdsa_blob); + p_seal_data_plain_text = reinterpret_cast(g_ql_global_data.m_ecdsa_blob + sizeof(sgx_sealed_data_t) + p_sealed_ecdsa->plain_text_offset); + cert_data_size = 0; + memset(&plaintext_data, 0, sizeof(plaintext_data)); + pck_cert_id.p_qe3_id = (uint8_t*)g_ql_global_data.m_qe_id; + pck_cert_id.qe3_id_size = sizeof(*g_ql_global_data.m_qe_id); + pck_cert_id.p_platform_cpu_svn = &tdqe_report.body.cpu_svn; + pck_cert_id.p_platform_pce_isv_svn = &g_ql_global_data.m_pce_info.pce_isv_svn; + pck_cert_id.p_encrypted_ppid = encrypted_ppid; + pck_cert_id.encrypted_ppid_size = REF_RSA_OAEP_3072_MOD_SIZE; + pck_cert_id.crypto_suite = PCE_ALG_RSA_OAEP_3072; + pck_cert_id.pce_id = g_ql_global_data.m_pce_info.pce_id; + refqt_ret = get_platform_quote_cert_data(&pck_cert_id, + &pce_cert_psvn.cpu_svn, + &pce_cert_psvn.isv_svn, + &cert_data_size, + NULL); + if (refqt_ret != SGX_QL_SUCCESS) { + if (refqt_ret != SGX_QL_PLATFORM_LIB_UNAVAILABLE) { + // The dependent library was found but it returned an error + goto CLEANUP; + } + SE_TRACE(SE_TRACE_DEBUG, "Platform Quote Config callback is not available, use the platform's raw TCB.\n"); + refqt_ret = SGX_QL_SUCCESS; + // Use the raw TCB of the platform and the EncPPID certification type + pce_cert_psvn.cpu_svn = tdqe_report.body.cpu_svn; + pce_cert_psvn.isv_svn = pce_isv_svn; + } + + // Set up the certification data and update the ECDSA Blob. + // The TDQE will verify these plaintext parameters, add some more plaintext values, add the secret values and + // generate a sealed blob. + if(0 != memcpy_s(&plaintext_data.cert_cpu_svn, sizeof(plaintext_data.cert_cpu_svn), + &pce_cert_psvn.cpu_svn, sizeof(pce_cert_psvn.cpu_svn))) { + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + plaintext_data.cert_pce_info.pce_isv_svn = pce_cert_psvn.isv_svn; + plaintext_data.cert_pce_info.pce_id = 0; + if(0 != memcpy_s(&plaintext_data.raw_cpu_svn, sizeof(plaintext_data.raw_cpu_svn), + &tdqe_report.body.cpu_svn, sizeof(tdqe_report.body.cpu_svn))) { + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + plaintext_data.raw_pce_info.pce_isv_svn = g_ql_global_data.m_pce_info.pce_isv_svn; + plaintext_data.raw_pce_info.pce_id = g_ql_global_data.m_pce_info.pce_id; + if(0 != memcpy_s(&plaintext_data.qe_report, sizeof(plaintext_data.qe_report), + &tdqe_report, sizeof(tdqe_report))) { + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + if (0 != memcpy_s(&plaintext_data.qe_id, sizeof(plaintext_data.qe_id), + g_ql_global_data.m_qe_id, sizeof(*g_ql_global_data.m_qe_id))) { + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + plaintext_data.signature_scheme = PCE_NIST_P256_ECDSA_SHA256; + if(0 != memcpy_s(&plaintext_data.pce_target_info, sizeof(plaintext_data.pce_target_info), + &pce_target_info, sizeof(pce_target_info))) { + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + plaintext_data.certification_key_type = certification_key_type; + refqt_ret = certify_key(g_ql_global_data.m_ecdsa_blob, + &plaintext_data, + encrypted_ppid, + REF_RSA_OAEP_3072_MOD_SIZE, + certification_key_type, + &tdqe_eid); + if (SGX_QL_SUCCESS != refqt_ret) { + SE_TRACE(SE_TRACE_DEBUG, "Failed to cerify key.\n"); + goto CLEANUP; + } + SE_TRACE(SE_TRACE_DEBUG, "TDQE_ID:\n"); + PRINT_BYTE_ARRAY(SE_TRACE_DEBUG, &p_seal_data_plain_text->qe_id, sizeof(p_seal_data_plain_text->qe_id)); + + SE_TRACE(SE_TRACE_DEBUG, "Generated and certified a new key. ECDSA_ID:\n"); + PRINT_BYTE_ARRAY(SE_TRACE_DEBUG, &tdqe_report.body.report_data, sizeof(sgx_sha256_hash_t)); + // Write the ECDSA_ID to the output buffer + if(0 != memcpy_s(p_pub_key_id, sizeof(*p_pub_key_id), &tdqe_report.body.report_data, sizeof(*p_pub_key_id))) { + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + } + + CLEANUP: + if(0 != blob_mutex_rc ) { + blob_mutex_rc = se_mutex_unlock(&g_ql_global_data.m_ecdsa_blob_mutex); + if (0 == blob_mutex_rc) + { + SE_TRACE(SE_TRACE_ERROR, "Failed to unlock mutex"); + return SGX_QL_ERROR_UNEXPECTED; + } + } + + unload_qe(); + + return(refqt_ret); +} + +/** +* This is the ECDSA-P256 specific init quote code. The generic quote interfaces have been converted/reduced to the ECDSA specific inputs. +* The method will return the required quote buffer size dependent on the certification key type. +* +* @param certification_key_type +* @param p_quote_size +* +* @return SGX_QL_SUCCESS +* @return SGX_QL_ERROR_INVALID_PARAMETER +* @return Errors from load_qe() +* @return Errors from an ecall +* @return SGX_QL_ATT_KEY_NOT_INITIALIZED The Attestaion key has not been generated, certified or requires +* recertification yet. Need to call InitQuote first/again to get attestaion key regenerated/receritifed. +* @return SGX_QL_ATT_KEY_CERT_DATA_INVALID Quote certification data from the platform library is invalid. +* +*/ +static quote3_error_t ecdsa_get_quote_size(sgx_ql_cert_key_type_t certification_key_type, + uint32_t* p_quote_size) +{ + + quote3_error_t refqt_ret = SGX_QL_SUCCESS; + sgx_status_t sgx_status = SGX_SUCCESS; + tdqe_error_t tdqe_error = TDQE_ERROR_UNEXPECTED; + uint32_t cert_data_size; + sgx_sealed_data_t *p_sealed_ecdsa; + ref_plaintext_ecdsa_data_sdk_t *p_seal_data_plain_text; + sgx_report_body_t tdqe_report_body; + sgx_pce_error_t pce_error; + sgx_target_info_t pce_target_info; + sgx_isv_svn_t pce_isv_svn; + sgx_psvn_t pce_cert_psvn; + sgx_enclave_id_t tdqe_eid = 0; + sgx_launch_token_t launch_token = {0}; + sgx_misc_attribute_t tdqe_attributes; + uint8_t resealed = 0; + sgx_ql_pck_cert_id_t pck_cert_id; + uint32_t blob_size_read; + int blob_mutex_rc = 0; + + // Verify inputs + // Only RSA-3072-OAEP Encrypted PPID certification type in the reference. + if (PPID_RSA3072_ENCRYPTED != certification_key_type) { + SE_TRACE(SE_TRACE_ERROR, "Invalid certification key type."); + return(SGX_QL_ERROR_INVALID_PARAMETER); + } + + if (NULL == p_quote_size) { + SE_TRACE(SE_TRACE_ERROR, "p_quote_size is NULL."); + return(SGX_QL_ERROR_INVALID_PARAMETER); + } + + SE_TRACE(SE_TRACE_DEBUG, "sizeof(sgx_quote4_t) = %d.\n", (unsigned int)sizeof(sgx_quote4_t)); + SE_TRACE(SE_TRACE_DEBUG, "(2 * sizeof(sgx_ec256_signature_t)) = %d.\n", (unsigned int)(2 * sizeof(sgx_ec256_signature_t))); + SE_TRACE(SE_TRACE_DEBUG, "sizeof(sgx_ec256_public_t) = %d.\n", (unsigned int)sizeof(sgx_ec256_public_t)); + SE_TRACE(SE_TRACE_DEBUG, "sizeof(uint16_t) = %d.\n", (unsigned int)sizeof(uint16_t)); + SE_TRACE(SE_TRACE_DEBUG, "sizeof(uint32_t) = %d.\n", (unsigned int)sizeof(uint32_t)); + SE_TRACE(SE_TRACE_DEBUG, "sizeof(uint32_t) = %d.\n", (unsigned int)sizeof(uint32_t)); + SE_TRACE(SE_TRACE_DEBUG, "authentication_data_size = %d.\n", (unsigned int)REF_ECDSDA_AUTHENTICATION_DATA_SIZE); + SE_TRACE(SE_TRACE_DEBUG, "sizeof(ref_ppid_rsa3072_encrypted_cert_info_t) = %d.\n", (unsigned int)sizeof(sgx_ql_ppid_rsa3072_encrypted_cert_info_t)); + + // Get PCE Target Info + pce_error = sgx_pce_get_target(&pce_target_info, &pce_isv_svn); + if (SGX_PCE_SUCCESS != pce_error) { + SE_TRACE(SE_TRACE_ERROR, "Error, call sgx_pce_get_target [%s], pce_error:%04x.\n", __FUNCTION__, pce_error); + refqt_ret = translate_pce_errors(pce_error); + goto CLEANUP; + } + + // Load the TDQE + SE_TRACE(SE_TRACE_DEBUG, "Call Load the QE.\n"); + refqt_ret = load_qe(&tdqe_eid, + &tdqe_attributes, + &launch_token); + if (SGX_QL_SUCCESS != refqt_ret) + { + goto CLEANUP; + + } + + blob_mutex_rc = se_mutex_lock(&g_ql_global_data.m_ecdsa_blob_mutex); + if (0 == blob_mutex_rc) { + SE_TRACE(SE_TRACE_ERROR, "Failed to lock mutex\n"); + goto CLEANUP; + } + + blob_size_read = sizeof(g_ql_global_data.m_ecdsa_blob); + // Get ECDSA Blob if exists + SE_TRACE(SE_TRACE_DEBUG, "Read ECDSA blob from persistent storage.\n"); + refqt_ret = read_persistent_data((uint8_t*)g_ql_global_data.m_ecdsa_blob, + &blob_size_read, + ECDSA_BLOB_LABEL); + if (SGX_QL_SUCCESS != refqt_ret) { + // Ignore errors since persistent storage is not required. Blob in memory may still be OK and continue to try to verify the cached blob. + SE_TRACE(SE_TRACE_WARNING, "ECDSA Blob doesn't exist is persistent storage. Try to use the cached version.\n"); + refqt_ret = SGX_QL_SUCCESS; + } + else if (blob_size_read != sizeof(g_ql_global_data.m_ecdsa_blob)) { + // If the blob was successfully read from persistent storage, verify its size. + SE_TRACE(SE_TRACE_ERROR, "Invalid ECDSA Blob file size. blob_size_read = %uld, sizeof(g_ecdsa_blob) = %uld. Since caller requested use any key, generate a new key.\n", blob_size_read, (uint32_t)sizeof(g_ql_global_data.m_ecdsa_blob)); + refqt_ret = SGX_QL_ATT_KEY_NOT_INITIALIZED; + goto CLEANUP; + } + memset(&tdqe_report_body, 0, sizeof(tdqe_report_body)); + // If exists, verify blob. + sgx_status = verify_blob(tdqe_eid, + (uint32_t*)&tdqe_error, + (uint8_t*)g_ql_global_data.m_ecdsa_blob, + sizeof(g_ql_global_data.m_ecdsa_blob), + &resealed, + &tdqe_report_body, + 0, + NULL); + if (SGX_SUCCESS != sgx_status) { + SE_TRACE(SE_TRACE_ERROR, "Failed call into the TDQE. 0x%04x\n", sgx_status); + ///todo: May want to retry on SGX_ERROR_ENCLAVE_LOST caused by power transition or return a different error + refqt_ret = (quote3_error_t)sgx_status; + goto CLEANUP; + } + if (TDQE_SUCCESS != tdqe_error) { + SE_TRACE(SE_TRACE_ERROR, "Invalid ECDSA Blob verificaton. 0x%04x, generate a new key.\n", tdqe_error); + ///todo: Do we want to force the caller to generate the attestation key again when the ECDSA blob fails? + // May want to add logic to the DCAP wrappers to automatically call init_quote on this failure. + refqt_ret = SGX_QL_ATT_KEY_NOT_INITIALIZED; + goto CLEANUP; + } + if (resealed) { + SE_TRACE(SE_TRACE_DEBUG, "ECDSA Blob was resealed. Store it disk.\n"); + refqt_ret = write_persistent_data((uint8_t*)g_ql_global_data.m_ecdsa_blob, + sizeof(g_ql_global_data.m_ecdsa_blob), + ECDSA_BLOB_LABEL); + + if (refqt_ret != SGX_QL_SUCCESS) { + // Don't need to error since the blob is still good in memory. + // /todo: What is the best way to notify the requester that the blob was not stored? + SE_TRACE(SE_TRACE_WARNING, "Warning, unable to store resealed ECDSA blob to persistent storage.\n"); + SE_TRACE(SE_TRACE_DEBUG, "File storage is not required for the QE_Library. Library will use ECDSA Blob cached in memory.\n"); + refqt_ret = SGX_QL_SUCCESS; + } + } + SE_TRACE(SE_TRACE_DEBUG, "Successfully verified ECDSA Blob.\n"); + + p_sealed_ecdsa = reinterpret_cast(g_ql_global_data.m_ecdsa_blob); + p_seal_data_plain_text = reinterpret_cast(g_ql_global_data.m_ecdsa_blob + sizeof(sgx_sealed_data_t) + p_sealed_ecdsa->plain_text_offset); + cert_data_size = 0; + pck_cert_id.p_qe3_id = (uint8_t*)&p_seal_data_plain_text->qe_id; + pck_cert_id.qe3_id_size = sizeof(p_seal_data_plain_text->qe_id); + pck_cert_id.p_platform_cpu_svn = &tdqe_report_body.cpu_svn; + pck_cert_id.p_platform_pce_isv_svn = &pce_isv_svn; + pck_cert_id.p_encrypted_ppid = NULL; + pck_cert_id.encrypted_ppid_size = 0; + pck_cert_id.crypto_suite = PCE_ALG_RSA_OAEP_3072; + pck_cert_id.pce_id = p_seal_data_plain_text->cert_pce_info.pce_id; + refqt_ret = get_platform_quote_cert_data(&pck_cert_id, + &pce_cert_psvn.cpu_svn, + &pce_cert_psvn.isv_svn, + &cert_data_size, + NULL); + // Use the default certification data when there is no data from platform library. + if (refqt_ret != SGX_QL_SUCCESS) { + if (refqt_ret != SGX_QL_PLATFORM_LIB_UNAVAILABLE) { + // The dependent library was found but it returned an error + goto CLEANUP; + } + + *p_quote_size = sizeof(sgx_quote4_t) + // quote body + sizeof(sgx_ecdsa_sig_data_v4_t) + + sizeof(sgx_ql_auth_data_t) + + REF_ECDSDA_AUTHENTICATION_DATA_SIZE + // Authentication data + sizeof(sgx_ql_certification_data_t) + + sizeof(sgx_ql_certification_data_t) + + sizeof(sgx_qe_report_certification_data_t) + + sizeof(sgx_ql_ppid_rsa3072_encrypted_cert_info_t); // RSA3072_ENC_PPID + PCE CPUSVN + PCE ISVSNV + PCEID + refqt_ret = SGX_QL_SUCCESS; + } + else { + // Verify that the cert_data_size is reasonable. + if((cert_data_size > MAX_CERT_DATA_SIZE) || + (cert_data_size < MIN_CERT_DATA_SIZE)) { + refqt_ret = SGX_QL_ATT_KEY_CERT_DATA_INVALID; + goto CLEANUP; + } + //Check to make sure that the TCBm of from the platform library matches the Cert TCB in the ECDSA blob. + if((0 != memcmp(&p_seal_data_plain_text->cert_cpu_svn, &pce_cert_psvn.cpu_svn, sizeof(p_seal_data_plain_text->cert_cpu_svn))) || + (p_seal_data_plain_text->cert_pce_info.pce_isv_svn != pce_cert_psvn.isv_svn)) { + SE_TRACE(SE_TRACE_ERROR, "TCBm in ECDSA blob doesn't match the value returned by the platform lib. %d and %d\n", p_seal_data_plain_text->cert_pce_info.pce_isv_svn, pce_cert_psvn.isv_svn); + + refqt_ret = SGX_QL_ATT_KEY_NOT_INITIALIZED; + goto CLEANUP; + } + // Overflow will not occur since the cer_data_size is limited above + *p_quote_size = (uint32_t)(sizeof(sgx_quote4_t) + // quote body + sizeof(sgx_ecdsa_sig_data_v4_t) + + sizeof(sgx_ql_auth_data_t) + + REF_ECDSDA_AUTHENTICATION_DATA_SIZE + // Authentication data + sizeof(sgx_ql_certification_data_t) + + sizeof(sgx_ql_certification_data_t) + + sizeof(sgx_qe_report_certification_data_t) + + cert_data_size); // certification data size returned by get_platform_quote_cert_data() + } + + CLEANUP: + if(0 != blob_mutex_rc ) { + blob_mutex_rc = se_mutex_unlock(&g_ql_global_data.m_ecdsa_blob_mutex); + if (0 == blob_mutex_rc) { + SE_TRACE(SE_TRACE_ERROR, "Failed to unlock mutex"); + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + } + } + + unload_qe(); + + return(refqt_ret); +} + +/** +* This is the ECDSA-P256 specific get quote code. The generic quote interfaces have been converted/reduced to the ECDSA +* specific inputs. The method will return the quote dependent on the certification key type. +* +* @param certification_key_type +* @param p_app_report +* @param p_quote +* @param quote_size +* +* @return SGX_QL_SUCCESS +* @return Return codes from load_qe. +* @return SGX_QL_ATT_KEY_NOT_INITIALIZED The Attestaion key has not been generated, certified or requires +* recertification yet. Need to call InitQuote first/again to get attestaion key regenerated/receritifed. +* @return ///todo: List out ecall errors. + * @return SGX_QL_ATT_KEY_CERT_DATA_INVALID Quote certification data from the platform library is invalid. +* @return SGX_QL_ERROR_OUT_OF_MEMORY +* @return TDQE_ERROR_INVALID_PLATFORM +* @return TDQE_ERROR_INVALID_PARAMETER +* @return TDQE_ERROR_INVALID_REPORT +* @return TDQE_ECDSABLOB_ERROR Attestation key is invalid. Needs to be regenerated/recertified. +* @return TDQE_ERROR_UNEXPECTED +* @return TDQE_ERROR_CRYPTO +* @return TDQE_ERROR_OUT_OF_MEMORY +* @return SGX_ERROR_INVALID_PARAMETER +*/ +static quote3_error_t ecdsa_get_quote(const sgx_report2_t *p_app_report, + sgx_quote4_t *p_quote, + uint32_t quote_size) +{ + quote3_error_t refqt_ret = SGX_QL_SUCCESS; + sgx_status_t sgx_status = SGX_SUCCESS; + sgx_launch_token_t launch_token = {0}; + sgx_misc_attribute_t tdqe_attributes; + sgx_enclave_id_t tdqe_eid = 0; + tdqe_error_t tdqe_error = TDQE_ERROR_UNEXPECTED; + uint8_t resealed = 0; + uint32_t blob_size_read = sizeof(g_ql_global_data.m_ecdsa_blob); + sgx_sha256_hash_t blob_ecdsa_id; + sgx_isv_svn_t cur_pce_isv_svn = {0}; + sgx_target_info_t pce_target_info; + sgx_pce_error_t pce_error; + uint32_t cert_data_size; + sgx_ql_pck_cert_id_t pck_cert_id; + sgx_sealed_data_t *p_sealed_ecdsa; + ref_plaintext_ecdsa_data_sdk_t *p_seal_data_plain_text; + sgx_report_body_t tdqe_report_body; + sgx_ql_certification_data_t *p_certification_data = NULL; + sgx_psvn_t pce_cert_psvn; + int blob_mutex_rc = 0; + + //Verify inputs + if (NULL == p_app_report || + NULL == p_quote) { + SE_TRACE(SE_TRACE_ERROR, "Invalid input pointer.\n"); + return(SGX_QL_ERROR_INVALID_PARAMETER); + } + + // Load the TDQE + memset(&launch_token, 0, sizeof(sgx_launch_token_t)); + SE_TRACE(SE_TRACE_DEBUG, "Load the TDQE. %s\n", TDQE_ENCLAVE_NAME); + // Load the QE enclave + refqt_ret = load_qe(&tdqe_eid, + &tdqe_attributes, + &launch_token); + if (SGX_QL_SUCCESS != refqt_ret) + { + goto CLEANUP; + } + + blob_mutex_rc = se_mutex_lock(&g_ql_global_data.m_ecdsa_blob_mutex); + if (0 == blob_mutex_rc) { + SE_TRACE(SE_TRACE_ERROR, "Failed to lock mutex\n"); + goto CLEANUP; + } + + SE_TRACE(SE_TRACE_DEBUG, "Read and verify ecdsa blob\n"); + blob_size_read = sizeof(g_ql_global_data.m_ecdsa_blob); + // Get ECDSA Blob if exists + SE_TRACE(SE_TRACE_DEBUG, "Read ECDSA blob.\n"); + refqt_ret = read_persistent_data((uint8_t*)g_ql_global_data.m_ecdsa_blob, + &blob_size_read, + ECDSA_BLOB_LABEL); + if (SGX_QL_SUCCESS != refqt_ret) { + // Ignore errors since persistent storage is not required. Blob in memory may still be OK and continue to try to verify the cached blob. + ///todo: May want to have a library configuration option that requires persistent storage. Then treat the + //failures accordingly + SE_TRACE(SE_TRACE_WARNING, "ECDSA Blob doesn't exist is persistent storage. Try to use the cached version.\n"); + refqt_ret = SGX_QL_SUCCESS; + } + else if (blob_size_read != sizeof(g_ql_global_data.m_ecdsa_blob)) { + // If the blob was successfully read from persistent storage, verify its size. + SE_TRACE(SE_TRACE_ERROR, "Invalid ECDSA Blob file size. blob_size_read = %uld, sizeof(g_ecdsa_blob) = %uld. Since caller requested use any key, generate a new key.\n", blob_size_read, (uint32_t)sizeof(g_ql_global_data.m_ecdsa_blob)); + refqt_ret = SGX_QL_ATT_KEY_NOT_INITIALIZED; + goto CLEANUP; + } + memset(&tdqe_report_body, 0, sizeof(tdqe_report_body)); + // If exists, verify blob. + SE_TRACE(SE_TRACE_DEBUG, "Verify blob\n"); + sgx_status = verify_blob(tdqe_eid, + (uint32_t*)&tdqe_error, + (uint8_t*)g_ql_global_data.m_ecdsa_blob, + sizeof(g_ql_global_data.m_ecdsa_blob), + &resealed, + &tdqe_report_body, + sizeof(blob_ecdsa_id), + (uint8_t*)&blob_ecdsa_id); + if (SGX_SUCCESS != sgx_status) { + SE_TRACE(SE_TRACE_ERROR, "Failed call into the TDQE. 0x%04x\n", sgx_status); + // /todo: May want to retry on SGX_ERROR_ENCLAVE_LOST caused by power transition or return a differnent error. + refqt_ret = (quote3_error_t)sgx_status; + goto CLEANUP; + } + if (TDQE_SUCCESS != tdqe_error) { + SE_TRACE(SE_TRACE_ERROR, "Invalid ECDSA Blob verification. 0x%04x\n", tdqe_error); + refqt_ret = SGX_QL_ATT_KEY_NOT_INITIALIZED; + goto CLEANUP; + } + if (resealed) { + SE_TRACE(SE_TRACE_DEBUG, "ECDSA Blob was resealed. Store it.\n"); + refqt_ret = write_persistent_data((uint8_t*)g_ql_global_data.m_ecdsa_blob, + sizeof(g_ql_global_data.m_ecdsa_blob), + ECDSA_BLOB_LABEL); + + if (refqt_ret != SGX_QL_SUCCESS) { + // Don't need to error since the blob is still good in memory. + ///todo: What is the best way to notify the requester that the blob was not stored? + SE_TRACE(SE_TRACE_WARNING, "Warning, unable to store resealed ECDSA blob to persistent storage.\n"); + SE_TRACE(SE_TRACE_DEBUG, "File storage is not required for the QE_Library. Library will use ECDSA Blob cached in memory.\n"); + refqt_ret = SGX_QL_SUCCESS; + } + } + SE_TRACE(SE_TRACE_DEBUG, "Using ECDSA_ID:\n"); + PRINT_BYTE_ARRAY(SE_TRACE_DEBUG, (uint8_t *)&blob_ecdsa_id, sizeof(blob_ecdsa_id)); + + // Call into the PCE to get the current platform's PCE ISVSVN + pce_error = sgx_pce_get_target(&pce_target_info, + &cur_pce_isv_svn); + if (SGX_PCE_SUCCESS != pce_error) { + SE_TRACE(SE_TRACE_ERROR, "Error in call to sgx_pce_get_target(). 0x%04x\n", pce_error); + refqt_ret = translate_pce_errors(pce_error); + goto CLEANUP; + } + + // See if we can get the certification data from the platform library. + p_sealed_ecdsa = reinterpret_cast(g_ql_global_data.m_ecdsa_blob); + p_seal_data_plain_text = reinterpret_cast(g_ql_global_data.m_ecdsa_blob + sizeof(sgx_sealed_data_t) + p_sealed_ecdsa->plain_text_offset); + cert_data_size = 0; + pck_cert_id.p_qe3_id = (uint8_t*)&p_seal_data_plain_text->qe_id; + pck_cert_id.qe3_id_size = sizeof(p_seal_data_plain_text->qe_id); + pck_cert_id.p_platform_cpu_svn = &tdqe_report_body.cpu_svn; + pck_cert_id.p_platform_pce_isv_svn = &cur_pce_isv_svn; + pck_cert_id.p_encrypted_ppid = NULL; + pck_cert_id.encrypted_ppid_size = 0; + pck_cert_id.crypto_suite = PCE_ALG_RSA_OAEP_3072; + pck_cert_id.pce_id = p_seal_data_plain_text->cert_pce_info.pce_id; + refqt_ret = get_platform_quote_cert_data(&pck_cert_id, + &pce_cert_psvn.cpu_svn, + &pce_cert_psvn.isv_svn, + &cert_data_size, + NULL); + if (refqt_ret == SGX_QL_SUCCESS) { + // Verify that the cert_data_size is reasonable. + if((cert_data_size > MAX_CERT_DATA_SIZE) || + (cert_data_size < MIN_CERT_DATA_SIZE)) { + refqt_ret = SGX_QL_ATT_KEY_CERT_DATA_INVALID; + goto CLEANUP; + } + // malloc the buffer to get the cert data and call again + p_certification_data = (sgx_ql_certification_data_t *)malloc(sizeof(*p_certification_data) + cert_data_size); + if(NULL == p_certification_data) { + refqt_ret = SGX_QL_ERROR_OUT_OF_MEMORY; + goto CLEANUP; + + } + memset(p_certification_data, 0, sizeof(*p_certification_data)); + refqt_ret = get_platform_quote_cert_data(&pck_cert_id, + &pce_cert_psvn.cpu_svn, + &pce_cert_psvn.isv_svn, + &cert_data_size, + p_certification_data->certification_data); + if (refqt_ret != SGX_QL_SUCCESS) { + // Really shouldn't fail here if we passed the first call. + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + //Check to make sure that the TCBm of from the platform library matches the Cert TCB in the ECDSA blob. + if((0 != memcmp(&p_seal_data_plain_text->cert_cpu_svn, &pce_cert_psvn.cpu_svn, sizeof(p_seal_data_plain_text->cert_cpu_svn))) || + (p_seal_data_plain_text->cert_pce_info.pce_isv_svn != pce_cert_psvn.isv_svn)) { + SE_TRACE(SE_TRACE_ERROR, "TCBm in ECDSA blob doesn't match the value returned by the platform lib. %d and %d\n", p_seal_data_plain_text->cert_pce_info.pce_isv_svn, pce_cert_psvn.isv_svn); + refqt_ret = SGX_QL_ATT_KEY_NOT_INITIALIZED; + goto CLEANUP; + } + //Verify that the size of the quote is large enough to accomodate the cert data returned from the platform library + if(quote_size < (sizeof(sgx_quote4_t) + + sizeof(sgx_ecdsa_sig_data_v4_t) + + sizeof(sgx_ql_auth_data_t) + + REF_ECDSDA_AUTHENTICATION_DATA_SIZE + + sizeof(sgx_ql_certification_data_t) + + sizeof(sgx_ql_certification_data_t) + + sizeof(sgx_qe_report_certification_data_t) + + cert_data_size)) { + refqt_ret = SGX_QL_ERROR_INVALID_PARAMETER; + goto CLEANUP; + } + p_certification_data->cert_key_type = PCK_CERT_CHAIN; + p_certification_data->size = cert_data_size; + } + else + { + if (refqt_ret != SGX_QL_PLATFORM_LIB_UNAVAILABLE) { + // The dependent library was found but it returned an error + goto CLEANUP; + } + // Generate the quote with ECDSA blob's cert data. It is possible that the ECDSA blob's data contains the mapped + // TCB of a previously successful call to the platform lib API. In that case, this flow will not generate + // the signature based on the raw-TCB. This would be an 'unexpected' error flow since it is expected that if + // the library was available before it should be available now. + // + // This is the normal flow when there is no provider library. + refqt_ret = SGX_QL_SUCCESS; + } + + SE_TRACE(SE_TRACE_DEBUG, "Call TDQE gen_quote\n"); + sgx_status = gen_quote(tdqe_eid, + (uint32_t*)&tdqe_error, + (uint8_t*)g_ql_global_data.m_ecdsa_blob, + (uint32_t)sizeof(g_ql_global_data.m_ecdsa_blob), + p_app_report, + NULL, + NULL, + NULL, + (uint8_t*)p_quote, + quote_size, + (uint8_t*)p_certification_data, + p_certification_data ? (uint32_t)(sizeof(*p_certification_data) + cert_data_size) : 0); + if (SGX_SUCCESS != sgx_status) { + SE_TRACE(SE_TRACE_ERROR, "Failed call into the TDQE. 0x%04x\n", sgx_status); + ///todo: May want to retry on SGX_ERROR_ENCLAVE_LOST caused by power transition + refqt_ret = (quote3_error_t)sgx_status; + goto CLEANUP; + } + if (TDQE_SUCCESS != tdqe_error) { + SE_TRACE(SE_TRACE_ERROR, "Gen Quote failed. 0x%04x\n", tdqe_error); + refqt_ret = (quote3_error_t)tdqe_error; + goto CLEANUP; + } + SE_TRACE(SE_TRACE_DEBUG, "Get quote success\n"); + + CLEANUP: + if(NULL != p_certification_data) { + free(p_certification_data); + } + + if(0 != blob_mutex_rc ) { + blob_mutex_rc = se_mutex_unlock(&g_ql_global_data.m_ecdsa_blob_mutex); + if (0 == blob_mutex_rc) { + SE_TRACE(SE_TRACE_ERROR, "Failed to unlock mutex"); + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + } + } + + unload_qe(); + + return(refqt_ret); +} + +/** + * Set the load policy of TD QE and pce + * @param policy + * + * @return SGX_QL_SUCCESS + * @return SGX_QL_ERROR_UNEXPECTED + * + */ +quote3_error_t td_set_enclave_load_policy(sgx_ql_request_policy_t policy) +{ + quote3_error_t refqt_ret = SGX_QL_ERROR_UNEXPECTED; + sgx_pce_error_t pce_error; + int rc = 0; + + rc = se_mutex_lock(&g_ql_global_data.m_enclave_load_mutex); + if (0 == rc) { + SE_TRACE(SE_TRACE_ERROR, "Failed to lock mutex\n"); + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + goto CLEANUP; + } + + g_ql_global_data.m_load_policy = policy; + refqt_ret = SGX_QL_SUCCESS; + + rc = se_mutex_unlock(&g_ql_global_data.m_enclave_load_mutex); + if (0 == rc) { + SE_TRACE(SE_TRACE_ERROR, "Failed to unlock mutex.\n"); + refqt_ret = SGX_QL_ERROR_UNEXPECTED; + } + pce_error = sgx_set_pce_enclave_load_policy(policy); + if (SGX_PCE_SUCCESS != pce_error) { + refqt_ret = translate_pce_errors(pce_error); + goto CLEANUP; + } + + CLEANUP: + + // Unload the qe if the policy was changed to ephemeral and the enclave is loaded. + unload_qe(); + + return(refqt_ret); +} + +/** + * Set the full path of TD QE + * + * @param p_path The full path of the TD QE + * + * @return SGX_QL_SUCCESS + * @return SGX_QL_ERROR_INVALID_PARAMETER + * + */ +quote3_error_t td_set_qe_path(const char* p_path) +{ + size_t len = 0; + if (NULL == p_path) { + return SGX_QL_ERROR_INVALID_PARAMETER; + } + len = strnlen(p_path, sizeof(g_ql_global_data.tdqe_path)); + // Make sure there is enough space for the '\0', + // after this line len <= sizeof(g_ql_global_data.tdqe_path) - 1 + if(len > sizeof(g_ql_global_data.tdqe_path) - 1) + return SGX_QL_ERROR_INVALID_PARAMETER; +#ifndef _MSC_VER + strncpy(g_ql_global_data.tdqe_path, p_path, sizeof(g_ql_global_data.tdqe_path) - 1); +#else + strncpy_s(g_ql_global_data.tdqe_path, sizeof(g_ql_global_data.tdqe_path), p_path, sizeof(g_ql_global_data.tdqe_path)); +#endif + g_ql_global_data.tdqe_path[len] = '\0'; + return SGX_QL_SUCCESS; +} + +/** + * Set the full path of QPL + * + * @param p_path The full path of the QPL + * + * @return SGX_QL_SUCCESS + * @return SGX_QL_ERROR_INVALID_PARAMETER + * + */ +quote3_error_t td_set_qpl_path(const char* p_path) +{ + size_t len = 0; + if (NULL == p_path) { + return SGX_QL_ERROR_INVALID_PARAMETER; + } + len = strnlen(p_path, sizeof(g_ql_global_data.qpl_path)); + // Make sure there is enough space for the '\0', + // after this line len <= sizeof(g_ql_global_data.qpl_path) - 1 + if(len > sizeof(g_ql_global_data.qpl_path) - 1) + return SGX_QL_ERROR_INVALID_PARAMETER; +#ifndef _MSC_VER + strncpy(g_ql_global_data.qpl_path, p_path, sizeof(g_ql_global_data.qpl_path) - 1); +#else + strncpy_s(g_ql_global_data.qpl_path, sizeof(g_ql_global_data.qpl_path), p_path, sizeof(g_ql_global_data.qpl_path)); +#endif + g_ql_global_data.qpl_path[len] = '\0'; + return SGX_QL_SUCCESS; +} + +quote3_error_t td_init_quote(sgx_ql_cert_key_type_t certification_key_type, + bool refresh_att_key) +{ + sgx_status_t sgx_status = SGX_SUCCESS; + tdqe_error_t tdqe_error = TDQE_SUCCESS; + quote3_error_t ret_val = SGX_QL_SUCCESS; + sgx_target_info_t tdqe_target_info; + ref_sha256_hash_t hash = {0}; + + memset(&tdqe_target_info, 0, sizeof(tdqe_target_info)); + ret_val = ecdsa_init_quote(certification_key_type, &tdqe_target_info, refresh_att_key, &hash); + if(SGX_QL_SUCCESS != ret_val) { + if((ret_val < SGX_QL_ERROR_MIN) || + (ret_val > SGX_QL_ERROR_MAX)) + { + sgx_status = (sgx_status_t)ret_val; + tdqe_error = (tdqe_error_t)ret_val; + + // Translate TDQE errors + switch(tdqe_error) + { + case TDQE_ERROR_INVALID_PARAMETER: + ret_val = SGX_QL_ERROR_INVALID_PARAMETER; + break; + + case TDQE_ERROR_OUT_OF_MEMORY: + ret_val = SGX_QL_ERROR_OUT_OF_MEMORY; + break; + + case TDQE_ERROR_UNEXPECTED: + case TDQE_ERROR_CRYPTO: // Error generating the QE_ID (or decypting PPID not supported in release). Unexpected error. + case TDQE_ERROR_ATT_KEY_GEN: // Error generating the ECDSA Attestation key. + case TDQE_ECDSABLOB_ERROR: // Should be unexpected since the blob was either generated or regenerated during this call + ret_val = SGX_QL_ERROR_UNEXPECTED; + break; + + default: + // Translate SDK errors + switch (sgx_status) + { + case SGX_ERROR_INVALID_PARAMETER: + ret_val = SGX_QL_ERROR_INVALID_PARAMETER; + break; + + case SGX_ERROR_OUT_OF_MEMORY: + ret_val = SGX_QL_ERROR_OUT_OF_MEMORY; + break; + + case SGX_ERROR_ENCLAVE_FILE_ACCESS: + ret_val = SGX_QL_ENCLAVE_LOAD_ERROR; + break; + + case SGX_ERROR_ENCLAVE_LOST: + ret_val = SGX_QL_ENCLAVE_LOST; + break; + + // Unexpected enclave loading errorsReturn codes from load_qe + case SGX_ERROR_INVALID_ENCLAVE: + case SGX_ERROR_UNDEFINED_SYMBOL: + case SGX_ERROR_MODE_INCOMPATIBLE: + case SGX_ERROR_INVALID_METADATA: + case SGX_ERROR_MEMORY_MAP_CONFLICT: + case SGX_ERROR_INVALID_VERSION: + case SGX_ERROR_INVALID_ATTRIBUTE: + case SGX_ERROR_NDEBUG_ENCLAVE: + case SGX_ERROR_INVALID_MISC: + //case SE_ERROR_INVALID_LAUNCH_TOKEN: ///todo: Internal error should be scrubbed before here. + case SGX_ERROR_DEVICE_BUSY: + case SGX_ERROR_NO_DEVICE: + case SGX_ERROR_INVALID_SIGNATURE: + //case SE_ERROR_INVALID_MEASUREMENT: ///todo: Internal error should be scrubbed before here. + //case SE_ERROR_INVALID_ISVSVNLE: ///todo: Internal error should be scrubbed before here. + case SGX_ERROR_INVALID_ENCLAVE_ID: + ret_val = SGX_QL_ENCLAVE_LOAD_ERROR; + break; + case SGX_ERROR_SERVICE_INVALID_PRIVILEGE: + ret_val = SGX_QL_ERROR_INVALID_PRIVILEGE; + break; + + case SGX_ERROR_UNEXPECTED: + ret_val = SGX_QL_ERROR_UNEXPECTED; + break; + + default: + ret_val = SGX_QL_ERROR_UNEXPECTED; + break; + } + break; + } + } + } + + return(ret_val); +} + + +quote3_error_t td_get_quote_size(sgx_ql_cert_key_type_t certification_key_type, + uint32_t *p_quote_size) +{ + sgx_status_t sgx_status = SGX_SUCCESS; + quote3_error_t ret_val = SGX_QL_SUCCESS; + + ret_val = ecdsa_get_quote_size(certification_key_type, p_quote_size); + if(SGX_QL_SUCCESS != ret_val) { + if((ret_val < SGX_QL_ERROR_MIN) || + (ret_val > SGX_QL_ERROR_MAX)) + { + sgx_status = (sgx_status_t)ret_val; + + // Translate SDK errors + switch(sgx_status) + { + case SGX_ERROR_OUT_OF_MEMORY: + ret_val = SGX_QL_ERROR_OUT_OF_MEMORY; + break; + + case SGX_ERROR_ENCLAVE_FILE_ACCESS: + ret_val = SGX_QL_ENCLAVE_LOAD_ERROR; + break; + + // Unexpected enclave loading errorsReturn codes from load_qe + case SGX_ERROR_INVALID_ENCLAVE: + case SGX_ERROR_UNDEFINED_SYMBOL: + case SGX_ERROR_MODE_INCOMPATIBLE: + case SGX_ERROR_INVALID_METADATA: + case SGX_ERROR_MEMORY_MAP_CONFLICT: + case SGX_ERROR_INVALID_VERSION: + case SGX_ERROR_INVALID_ATTRIBUTE: + case SGX_ERROR_NDEBUG_ENCLAVE: + case SGX_ERROR_INVALID_MISC: + //case SE_ERROR_INVALID_LAUNCH_TOKEN: ///todo: Internal error should be scrubbed before here. + case SGX_ERROR_DEVICE_BUSY: + case SGX_ERROR_NO_DEVICE: + case SGX_ERROR_INVALID_SIGNATURE: + //case SE_ERROR_INVALID_MEASUREMENT: ///todo: Internal error should be scrubbed before here. + //case SE_ERROR_INVALID_ISVSVNLE: ///todo: Internal error should be scrubbed before here. + case SGX_ERROR_INVALID_ENCLAVE_ID: + ret_val = SGX_QL_ENCLAVE_LOAD_ERROR; + break; + case SGX_ERROR_SERVICE_INVALID_PRIVILEGE: + ret_val = SGX_QL_ERROR_INVALID_PRIVILEGE; + break; + + case SGX_ERROR_ENCLAVE_LOST: + ret_val = SGX_QL_ENCLAVE_LOST; + break; + + case SGX_ERROR_UNEXPECTED: + ret_val = SGX_QL_ERROR_UNEXPECTED; + break; + + default: + ret_val = SGX_QL_ERROR_UNEXPECTED; + break; + } + } + } + + return(ret_val); +} + + +quote3_error_t td_get_quote( + const sgx_report2_t *p_app_report, + sgx_quote4_t *p_quote, + uint32_t quote_size) +{ + sgx_status_t sgx_status = SGX_SUCCESS; + tdqe_error_t tdqe_error = TDQE_SUCCESS; + quote3_error_t ret_val = SGX_QL_SUCCESS; + + ret_val = ecdsa_get_quote(p_app_report, p_quote, quote_size); + if(SGX_QL_SUCCESS != ret_val) { + if((ret_val < SGX_QL_ERROR_MIN) || + (ret_val > SGX_QL_ERROR_MAX)) + { + sgx_status = (sgx_status_t)ret_val; + tdqe_error = (tdqe_error_t)ret_val; + + // Translate TDQE errors + switch(tdqe_error) + { + case TDQE_ERROR_INVALID_PARAMETER: + ret_val = SGX_QL_ERROR_INVALID_PARAMETER; + break; + + case TDQE_ERROR_INVALID_REPORT: + ret_val = SGX_QL_INVALID_REPORT; + break; + + case TDQE_ERROR_CRYPTO: + // Error generating QE_ID. Shouldn't happen + ret_val = SGX_QL_ERROR_UNEXPECTED; + break; + + case TDQE_ERROR_OUT_OF_MEMORY: + ret_val = SGX_QL_ERROR_OUT_OF_MEMORY; + break; + + case TDQE_UNABLE_TO_GENERATE_QE_REPORT: + ret_val = SGX_QL_UNABLE_TO_GENERATE_QE_REPORT; + break; + + case TDQE_REPORT_FORMAT_NOT_SUPPORTED: + ret_val = SGX_QL_QE_REPORT_UNSUPPORTED_FORMAT; + break; + + default: + // Translate SDK errors + switch (sgx_status) + { + case SGX_ERROR_INVALID_PARAMETER: + ret_val = SGX_QL_ERROR_INVALID_PARAMETER; + break; + + case SGX_ERROR_ENCLAVE_FILE_ACCESS: + ret_val = SGX_QL_ENCLAVE_LOAD_ERROR; + break; + + case SGX_ERROR_OUT_OF_MEMORY: + ret_val = SGX_QL_ERROR_OUT_OF_MEMORY; + break; + + case SGX_ERROR_ENCLAVE_LOST: + ret_val = SGX_QL_ENCLAVE_LOST; + break; + + // Unexpected enclave loading errorsReturn codes from load_qe + case SGX_ERROR_INVALID_ENCLAVE: + case SGX_ERROR_UNDEFINED_SYMBOL: + case SGX_ERROR_MODE_INCOMPATIBLE: + case SGX_ERROR_INVALID_METADATA: + case SGX_ERROR_MEMORY_MAP_CONFLICT: + case SGX_ERROR_INVALID_VERSION: + case SGX_ERROR_INVALID_ATTRIBUTE: + case SGX_ERROR_NDEBUG_ENCLAVE: + case SGX_ERROR_INVALID_MISC: + //case SE_ERROR_INVALID_LAUNCH_TOKEN: ///todo: Internal error should be scrubbed before here. + case SGX_ERROR_DEVICE_BUSY: + case SGX_ERROR_NO_DEVICE: + case SGX_ERROR_INVALID_SIGNATURE: + //case SE_ERROR_INVALID_MEASUREMENT: ///todo: Internal error should be scrubbed before here. + //case SE_ERROR_INVALID_ISVSVNLE: ///todo: Internal error should be scrubbed before here. + case SGX_ERROR_INVALID_ENCLAVE_ID: + ret_val = SGX_QL_ENCLAVE_LOAD_ERROR; + break; + case SGX_ERROR_SERVICE_INVALID_PRIVILEGE: + ret_val = SGX_QL_ERROR_INVALID_PRIVILEGE; + break; + + case SGX_ERROR_UNEXPECTED: + ret_val = SGX_QL_ERROR_UNEXPECTED; + break; + + default: + ret_val = SGX_QL_ERROR_UNEXPECTED; + break; + } + break; + } + } + } + + return(ret_val); +} + diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/td_ql_logic.h b/QuoteGeneration/quote_wrapper/tdx_quote/td_ql_logic.h new file mode 100644 index 00000000..84216239 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_quote/td_ql_logic.h @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ +/** + * File: td_ql_logic.h + * + * Description: API definitions for TD quote library + * + */ +#ifndef _TD_QL_LOGIC_H_ +#define _TD_QL_LOGIC_H_ +#include "sgx_ql_lib_common.h" +#include "sgx_quote_4.h" + +#if defined(__cplusplus) +extern "C" { +#endif +quote3_error_t td_set_enclave_load_policy(sgx_ql_request_policy_t policy); + +quote3_error_t td_init_quote(sgx_ql_cert_key_type_t certification_key_type, + bool refresh_att_key); +quote3_error_t td_get_quote_size(sgx_ql_cert_key_type_t certification_key_type, + uint32_t *p_quote_size); +quote3_error_t td_get_quote(const sgx_report2_t *p_app_report, + sgx_quote4_t *p_quote, + uint32_t quote_size); + +quote3_error_t td_set_qe_path(const char *p_path); +quote3_error_t td_set_qpl_path(const char *p_path); +void *get_qpl_handle(); +#if defined(__cplusplus) +} +#endif + + +#endif + diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/win/dllmain.cpp b/QuoteGeneration/quote_wrapper/tdx_quote/win/dllmain.cpp new file mode 100644 index 00000000..160e1588 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_quote/win/dllmain.cpp @@ -0,0 +1,22 @@ +// dllmain.cpp : Defines the entry point for the DLL application. +#include +#include "util.h" + +BOOL APIENTRY DllMain( HMODULE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved + ) +{ + UNUSED(hModule); + UNUSED(lpReserved); + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} + diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/win/framework.h b/QuoteGeneration/quote_wrapper/tdx_quote/win/framework.h new file mode 100644 index 00000000..54b83e94 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_quote/win/framework.h @@ -0,0 +1,5 @@ +#pragma once + +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +// Windows Header Files +#include diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/win/resource.h b/QuoteGeneration/quote_wrapper/tdx_quote/win/resource.h new file mode 100644 index 00000000..0c237bae --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_quote/win/resource.h @@ -0,0 +1,15 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by tdx_logic.rc +// + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/win/tdx_logic.def b/QuoteGeneration/quote_wrapper/tdx_quote/win/tdx_logic.def new file mode 100644 index 00000000..8b49bc64 --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_quote/win/tdx_logic.def @@ -0,0 +1,9 @@ +LIBRARY "sgx_tdx_logic" + +EXPORTS + td_set_enclave_load_policy @1 + td_set_qe_path @2 + td_set_qpl_path @3 + td_init_quote @4 + td_get_quote_size @5 + td_get_quote @6 diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/win/tdx_logic.rc b/QuoteGeneration/quote_wrapper/tdx_quote/win/tdx_logic.rc new file mode 100644 index 0000000000000000000000000000000000000000..6bede01f62769d1d22023b672ccc9437a589be19 GIT binary patch literal 4680 zcmdUyNpI6Y6oB6uiT_~S3l*sQg=3qfAtD=z6SY#Ms5A?aLQ-WxMdCN{6M^r|WEziS zmnLusvh49ZzkQqMUq27!Py(sQQ0`w(^HMrp#{egUzFcW(QRY$(^oFZq4 z+%Ym7h05A9ocl(SYI81iX-Xt5$xBIUP&cFiG|zig%5n{)$+IFCK+3#3jaBR2yPS4z z4Wx)Sl2Pg7pNV|I{yE-JKSWr4#j}LfIqXz_6o8*_Cu8{MsNIq$4@)}V|GVcgr;*K$ z1-{bU>tpwJx#2wT`0m!~v$Rcr z*DJ5Kx^O&~OR~z=RFnE?QC&GCcgU_Xm-7A26=YII@Mw_39jL0%?;ELQpjDtP)}qN% z2eEiXc$cWv_wp9rP4F&&Sehh8hp)D(SGHtlfYwJFOFkeq|KIh3^eT5bp{w4<_$(bW zFyAk*y=XdxVh77By;tAJ(XwA_{H({6O8d$-GSbe7kUUNHn^11(KR0BwJuOyRW@&V~ zrAC{|*)#pPOQmU#v6uFUw0^UmZ7xQ-?p9}sYm?N{X{(b%{A_k`hu@|WJKz+k`KCFK ztL)Vam(-k6$Gb@dUw^-K2<)6}n23ZV-^? z4{}OO%ce#&Py3H2iT1k!J*Y+9WO1?_jvwiJ^k$uBp2k0l;p@qzQhkaV`dQv*=&0A( zl4j+bhzX~Th8FK+?Yr%uK9-Z5-VL_5WRIex~H#<|%dQ7pPm>&WRq&Rc zCfD5O>OU0N-4E^Z|1%I22i<*zt5ZH3;#YAS?@b?lxlLE_ zb0C77*6j>G>--w8EA7#?XJ{oKGlghBjOX-9|J9p*&px&P%^V#+J$LI}t&iXKWP9o_ sX?<$hEsNsXsAal$>)-w_>lFF)|FZLCT#Ma$R}HiCeQZvk=TED@0aaQtApigX literal 0 HcmV?d00001 diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/win/tdx_logic.vcxproj b/QuoteGeneration/quote_wrapper/tdx_quote/win/tdx_logic.vcxproj new file mode 100644 index 00000000..4507350d --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_quote/win/tdx_logic.vcxproj @@ -0,0 +1,256 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + {DF76228C-AA18-41D2-ABF6-E340AE2B6591} + Win32Proj + tdxlogic + 10.0.18362.0 + + + + DynamicLibrary + true + v142 + Unicode + + + DynamicLibrary + false + v142 + true + Unicode + + + DynamicLibrary + true + v142 + Unicode + + + DynamicLibrary + false + v142 + true + Unicode + + + + + + + + + + + + + + + + + + + + + false + sgx_tdx_logic + + + true + sgx_tdx_logic + + + true + sgx_tdx_logic + + + false + sgx_tdx_logic + + + + NotUsing + Level4 + true + true + true + NDEBUG;TDXLOGIC_EXPORTS;_WINDOWS;_USRDLL;DISABLE_TRACE;%(PreprocessorDefinitions) + false + $(SGXSDKInstallPath)\include;.;..\inc;..\..\common\inc;..\enclave;..\..\..\pce_wrapper\inc;..\..\..\common\inc\internal;..\..\..\common\inc\internal\win;%(AdditionalIncludeDirectories) + true + true + MultiThreaded + + + Windows + true + true + true + true + tdx_logic.def + true + sgx_urts.lib;sgx_pce_wrapper_static.lib;%(AdditionalDependencies) + $(OutDir);$(SGXSDKInstallPath)bin\$(Platform)\$(Configuration) + + + "$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\enclave\tdqe.edl --search-path ..\..\..\common\inc --untrusted +"$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\..\quote\id_enclave\id_enclave.edl --search-path ..\..\..\common\inc --untrusted + + + "C:\Program Files (x86)\Windows Kits\10\bin\$(PlatformTarget)\apivalidator.exe" -driverpackagepath:"$(TargetPath)" -SupportedApiXmlFiles:"C:\Program Files (x86)\Windows Kits\10\build\universalDDIs\$(PlatformTarget)\UniversalDDIs.xml" -ModuleWhiteListXmlFiles:"C:\Program Files (x86)\Windows Kits\10\build\universalDDIs\$(PlatformTarget)\ModuleWhiteList.xml" >"$(OutDir)api_validator_log.txt" 2>&1 + + + + + NotUsing + Level4 + true + SE_DEBUG;_DEBUG;_WINDOWS;_USRDLL;TDXLOGIC_EXPORTS;WIN32;%(PreprocessorDefinitions) + false + $(SGXSDKInstallPath)\include;.;..\inc;..\..\common\inc;..\enclave;..\..\..\pce_wrapper\inc;..\..\..\common\inc\internal;..\..\..\common\inc\internal\win;%(AdditionalIncludeDirectories) + true + true + MultiThreadedDebug + + + Windows + true + true + tdx_logic.def + true + sgx_urts.lib;sgx_pce_wrapper_static.lib;%(AdditionalDependencies) + $(OutDir);$(SGXSDKInstallPath)bin\$(Platform)\$(Configuration) + + + "$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\enclave\tdqe.edl --search-path ..\..\..\common\inc --untrusted +"$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\..\quote\id_enclave\id_enclave.edl --search-path ..\..\..\common\inc --untrusted + + + + + NotUsing + Level4 + true + SE_DEBUG;_DEBUG;_WINDOWS;_USRDLL;TDXLOGIC_EXPORTS;%(PreprocessorDefinitions) + false + $(SGXSDKInstallPath)\include;.;..\inc;..\..\common\inc;..\enclave;..\..\..\pce_wrapper\inc;..\..\..\common\inc\internal;..\..\..\common\inc\internal\win;%(AdditionalIncludeDirectories) + true + true + MultiThreadedDebug + + + Windows + true + true + tdx_logic.def + true + sgx_urts.lib;sgx_pce_wrapper_static.lib;%(AdditionalDependencies) + $(OutDir);$(SGXSDKInstallPath)bin\$(Platform)\$(Configuration) + + + "$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\enclave\tdqe.edl --search-path ..\..\..\common\inc --untrusted +"$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\..\quote\id_enclave\id_enclave.edl --search-path ..\..\..\common\inc --untrusted + + + + + NotUsing + Level4 + true + true + true + NDEBUG;TDXLOGIC_EXPORTS;_WINDOWS;_USRDLL;DISABLE_TRACE;WIN32;%(PreprocessorDefinitions) + false + $(SGXSDKInstallPath)\include;.;..\inc;..\..\common\inc;..\enclave;..\..\..\pce_wrapper\inc;..\..\..\common\inc\internal;..\..\..\common\inc\internal\win;%(AdditionalIncludeDirectories) + true + true + MultiThreaded + + + Windows + true + true + true + true + tdx_logic.def + true + sgx_urts.lib;sgx_pce_wrapper_static.lib;%(AdditionalDependencies) + $(OutDir);$(SGXSDKInstallPath)bin\$(Platform)\$(Configuration) + + + "$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\enclave\tdqe.edl --search-path ..\..\..\common\inc --untrusted +"$(SGXSDKInstallPath)\bin\win32\Release\sgx_edger8r.exe" ..\..\quote\id_enclave\id_enclave.edl --search-path ..\..\..\common\inc --untrusted + + + "C:\Program Files (x86)\Windows Kits\10\bin\$(PlatformTarget)\apivalidator.exe" -driverpackagepath:"$(TargetPath)" -SupportedApiXmlFiles:"C:\Program Files (x86)\Windows Kits\10\build\universalDDIs\$(PlatformTarget)\UniversalDDIs.xml" -ModuleWhiteListXmlFiles:"C:\Program Files (x86)\Windows Kits\10\build\universalDDIs\$(PlatformTarget)\ModuleWhiteList.xml" >"$(OutDir)api_validator_log.txt" 2>&1 + + + + + + + + + + + + + + + + + + + + + + + + + + + ..\..\..\common\inc\internal + ..\..\..\common\inc\internal + ..\..\..\common\inc\internal + ..\..\..\common\inc\internal + + + + + Document + Creating untrusted proxy/bridge routines + Creating untrusted proxy/bridge routines + Creating untrusted proxy/bridge routines + Creating untrusted proxy/bridge routines + $(ProjectDir)%(Filename)_u.h;$(ProjectDir)%(Filename)_u.c;%(Outputs) + $(ProjectDir)%(Filename)_u.h;$(ProjectDir)%(Filename)_u.c;%(Outputs) + $(ProjectDir)%(Filename)_u.h;$(ProjectDir)%(Filename)_u.c;%(Outputs) + $(ProjectDir)%(Filename)_u.h;$(ProjectDir)%(Filename)_u.c;%(Outputs) + + + + + + + + + \ No newline at end of file diff --git a/QuoteGeneration/quote_wrapper/tdx_quote/win/tdx_logic.vcxproj.filters b/QuoteGeneration/quote_wrapper/tdx_quote/win/tdx_logic.vcxproj.filters new file mode 100644 index 00000000..a92883de --- /dev/null +++ b/QuoteGeneration/quote_wrapper/tdx_quote/win/tdx_logic.vcxproj.filters @@ -0,0 +1,64 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {004685B6-BAF2-4621-B736-E736B36FBA18} + + + + + Header Files + + + Generated Files + + + Header Files + + + Header Files + + + Generated Files + + + + + Source Files + + + Source Files + + + Generated Files + + + Generated Files + + + + + Resource Files + + + + + + + + Source Files + + + diff --git a/QuoteVerification/QVL/Src/AttestationLibrary/src/Verifiers/QuoteVerifier.cpp b/QuoteVerification/QVL/Src/AttestationLibrary/src/Verifiers/QuoteVerifier.cpp index 067d31b2..06d96f82 100644 --- a/QuoteVerification/QVL/Src/AttestationLibrary/src/Verifiers/QuoteVerifier.cpp +++ b/QuoteVerification/QVL/Src/AttestationLibrary/src/Verifiers/QuoteVerifier.cpp @@ -83,7 +83,7 @@ bool isTdxTcbHigherOrEqual(const dcap::quote::TDReport& tdReport, // but for TCB level to be considered higher it requires *EVERY* SVN to be higher or equal return true; } -const std::string& getMatchingTcbLevel(const dcap::parser::json::TcbInfo &tcbInfo, +const parser::json::TcbLevel& getMatchingTcbLevel(const dcap::parser::json::TcbInfo &tcbInfo, const dcap::parser::x509::PckCertificate &pckCert, const Quote "e) { @@ -100,12 +100,12 @@ const std::string& getMatchingTcbLevel(const dcap::parser::json::TcbInfo &tcbInf { if (isTdxTcbHigherOrEqual(quote.getTdReport(), tcb)) { - return tcb.getStatus(); + return tcb; } } else { - return tcb.getStatus(); + return tcb; } } } @@ -118,7 +118,15 @@ Status checkTcbLevel(const dcap::parser::json::TcbInfo& tcbInfoJson, const dcap: const Quote& quote) { /// 4.1.2.4.17.1 & 4.1.2.4.17.2 - const auto& tcbLevelStatus = getMatchingTcbLevel(tcbInfoJson, pckCert, quote); + const auto& tcbLevel = getMatchingTcbLevel(tcbInfoJson, pckCert, quote); + + if (tcbInfoJson.getVersion() >= 3 && tcbInfoJson.getId() == parser::json::TcbInfo::TDX_ID + && tcbLevel.getTdxTcbComponent(1).getSvn() != quote.getTdReport().teeTcbSvn[1]) + { + return STATUS_TCB_INFO_MISMATCH; + } + + const auto& tcbLevelStatus = tcbLevel.getStatus(); if (tcbLevelStatus == "OutOfDate") { @@ -386,6 +394,11 @@ Status QuoteVerifier::verify(const Quote& quote, /// 4.1.2.4.17 const auto tcbLevelStatus = checkTcbLevel(tcbInfoJson, pckCert, quote); + if (tcbLevelStatus == STATUS_TCB_INFO_MISMATCH) + { + return STATUS_TCB_INFO_MISMATCH; + } + if (enclaveIdentity) { return convergeTcbStatus(tcbLevelStatus, qeIdentityStatus); diff --git a/QuoteVerification/QVL/Src/AttestationLibrary/test/IntegrationTests/VerifyQuoteIT.cpp b/QuoteVerification/QVL/Src/AttestationLibrary/test/IntegrationTests/VerifyQuoteIT.cpp index 7b4b82a6..69a12eaa 100644 --- a/QuoteVerification/QVL/Src/AttestationLibrary/test/IntegrationTests/VerifyQuoteIT.cpp +++ b/QuoteVerification/QVL/Src/AttestationLibrary/test/IntegrationTests/VerifyQuoteIT.cpp @@ -105,6 +105,7 @@ struct VerifyQuoteIT : public Test string positiveTdxTcbInfoV3JsonBody; string positiveSgxTcbInfoV3JsonBody; string positiveQEIdentityV2JsonBody; + std::vector tdxTcbLevels; test::QuoteV3Generator::EnclaveReport enclaveReport; @@ -140,7 +141,7 @@ struct VerifyQuoteIT : public Test positiveSgxTcbInfoV3JsonBody = tcbInfoJsonV3Body("SGX", 3, issueDate, nextUpdate, fmspcStr, pceIdStr, 1, 1, sgxTcbLevels, false, tdxModule); - std::vector tdxTcbLevels; + tdxTcbLevels.push_back(TcbLevelV3{ getRandomTcbComponent(), getRandomTcbComponent(), @@ -605,7 +606,7 @@ TEST_F(VerifyQuoteIT, shouldReturnedStatusOKWhenVerifyTdxQuoteV4Successffuly) quoteV4Generator.getHeader().teeType = constants::TEE_TYPE_TDX; std::copy_n(tdxModule.mrsigner.begin(), tdxModule.mrsigner.size(), quoteV4Generator.getTdReport().mrSignerSeam.begin()); quoteV4Generator.getTdReport().seamAttributes.fill(0x00); - quoteV4Generator.getTdReport().teeTcbSvn = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,}; + quoteV4Generator.getTdReport().teeTcbSvn = {0xFF, tdxTcbLevels[0].tdxTcbComponents[1].svn, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,}; test::QuoteV4Generator::EnclaveReport qeReport{}; @@ -675,7 +676,7 @@ TEST_F(VerifyQuoteIT, shouldReturnedStatusTdxModuleMismatchWhenVerifyTdxQuoteV4W quoteV4Generator.getHeader().teeType = constants::TEE_TYPE_TDX; quoteV4Generator.getTdReport().mrSignerSeam.fill(0x01); quoteV4Generator.getTdReport().seamAttributes.fill(0x00); - quoteV4Generator.getTdReport().teeTcbSvn = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,}; + quoteV4Generator.getTdReport().teeTcbSvn = {0xFF, tdxTcbLevels[0].tdxTcbComponents[1].svn, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,}; test::QuoteV4Generator::EnclaveReport qeReport{}; @@ -739,7 +740,7 @@ TEST_F(VerifyQuoteIT, shouldReturnedStatusTdxModuleMismatchWhenVerifyTdxQuoteV4W quoteV4Generator.getHeader().teeType = constants::TEE_TYPE_TDX; quoteV4Generator.getTdReport().mrSignerSeam.fill(0x00); quoteV4Generator.getTdReport().seamAttributes.fill(0x01); - quoteV4Generator.getTdReport().teeTcbSvn = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,}; + quoteV4Generator.getTdReport().teeTcbSvn = {0xFF, tdxTcbLevels[0].tdxTcbComponents[1].svn, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,}; test::QuoteV4Generator::EnclaveReport qeReport{}; @@ -803,7 +804,7 @@ TEST_F(VerifyQuoteIT, shouldReturnedStatusOKWhenVerifyTdxQuoteV4WithoutQeIdentit quoteV4Generator.getHeader().teeType = constants::TEE_TYPE_TDX; std::copy_n(tdxModule.mrsigner.begin(), tdxModule.mrsigner.size(), quoteV4Generator.getTdReport().mrSignerSeam.begin()); quoteV4Generator.getTdReport().seamAttributes.fill(0x00); - quoteV4Generator.getTdReport().teeTcbSvn = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,}; + quoteV4Generator.getTdReport().teeTcbSvn = {0xFF, tdxTcbLevels[0].tdxTcbComponents[1].svn, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,}; test::QuoteV4Generator::EnclaveReport qeReport{}; diff --git a/QuoteVerification/QVL/Src/AttestationLibrary/test/UnitTests/QuoteV4VerifierUT.cpp b/QuoteVerification/QVL/Src/AttestationLibrary/test/UnitTests/QuoteV4VerifierUT.cpp index a9e66cb6..68b09344 100644 --- a/QuoteVerification/QVL/Src/AttestationLibrary/test/UnitTests/QuoteV4VerifierUT.cpp +++ b/QuoteVerification/QVL/Src/AttestationLibrary/test/UnitTests/QuoteV4VerifierUT.cpp @@ -276,7 +276,7 @@ TEST_F(QuoteV4VerifierUT, shouldVerifyTdxCorrectly) header.version = 4; header.teeType = dcap::constants::TEE_TYPE_TDX; auto tdReport = dcap::test::QuoteV4Generator::TDReport{}; - tdReport.teeTcbSvn = {0x50, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + tdReport.teeTcbSvn = {0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; gen.withTDReport(tdReport); gen.withHeader(header); @@ -294,6 +294,30 @@ TEST_F(QuoteV4VerifierUT, shouldVerifyTdxCorrectly) EXPECT_EQ(STATUS_OK, dcap::QuoteVerifier{}.verify(quote, pck, crl, tcbInfoJson, &enclaveIdentityV2, enclaveReportVerifier)); } +TEST_F(QuoteV4VerifierUT, shouldFailWithTcbInfoMismatchWhenTdxQuoteSvnDoesntMatchTcbInfo) +{ + auto header = dcap::test::QuoteV4Generator::QuoteHeader{}; + header.version = 4; + header.teeType = dcap::constants::TEE_TYPE_TDX; + auto tdReport = dcap::test::QuoteV4Generator::TDReport{}; + tdReport.teeTcbSvn = {0x50, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + gen.withTDReport(tdReport); + gen.withHeader(header); + gen.getAuthData().ecdsaSignature.signature = signAndGetRaw(concat(gen.getHeader().bytes(), gen.getTdReport().bytes()), *privKey); + const auto quoteBin = gen.buildTdxQuote(); + + tcbs.insert(tcbs.begin(), dcap::parser::json::TcbLevel{"TDX", sgxTcbComponents, tdxTcbComponents, toUint16(pcesvn[1], pcesvn[0]), "UpToDate"}); + EXPECT_CALL(tcbInfoJson, getId()).WillRepeatedly(testing::Return("TDX")); + EXPECT_CALL(tcbInfoJson, getVersion()).WillRepeatedly(testing::Return(3)); + EXPECT_CALL(tcbInfoJson, getTcbLevels()).WillOnce(testing::ReturnRef(tcbs)); + EXPECT_CALL(enclaveIdentityV2, getID()).WillOnce(testing::Return(EnclaveID::TD_QE)); + + dcap::Quote quote; + ASSERT_TRUE(quote.parse(quoteBin)); + EXPECT_EQ(STATUS_TCB_INFO_MISMATCH, dcap::QuoteVerifier{}.verify(quote, pck, crl, tcbInfoJson, &enclaveIdentityV2, enclaveReportVerifier)); +} + TEST_F(QuoteV4VerifierUT, shouldVerifyTdxCorrectlyWhenTdReportSeamAttributesMaskedMatch) { auto header = dcap::test::QuoteV4Generator::QuoteHeader{}; @@ -301,7 +325,7 @@ TEST_F(QuoteV4VerifierUT, shouldVerifyTdxCorrectlyWhenTdReportSeamAttributesMask header.teeType = dcap::constants::TEE_TYPE_TDX; auto tdReport = dcap::test::QuoteV4Generator::TDReport{}; tdReport.seamAttributes = {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - tdReport.teeTcbSvn = {0x50, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + tdReport.teeTcbSvn = {0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; gen.withTDReport(tdReport); gen.withHeader(header); @@ -642,7 +666,7 @@ TEST_F(QuoteV4VerifierUT, shouldBackoffToLowerLevelBecauseTdReportTeeSvnIsOutOfD header.version = 4; header.teeType = dcap::constants::TEE_TYPE_TDX; auto tdReport = dcap::test::QuoteV4Generator::TDReport{}; - tdReport.teeTcbSvn = {0x50, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + tdReport.teeTcbSvn = {0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; gen.withTDReport(tdReport); gen.withHeader(header); @@ -668,13 +692,13 @@ TEST_F(QuoteV4VerifierUT, shouldBackoffToLowerLevelBecauseNoAllSvnsAreHigher) header.version = 4; header.teeType = dcap::constants::TEE_TYPE_TDX; auto tdReport = dcap::test::QuoteV4Generator::TDReport{}; - tdReport.teeTcbSvn = {0x50, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + tdReport.teeTcbSvn = {0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; gen.withTDReport(tdReport); gen.withHeader(header); gen.getAuthData().ecdsaSignature.signature = signAndGetRaw(concat(gen.getHeader().bytes(), gen.getTdReport().bytes()), *privKey); const auto quoteBin = gen.buildTdxQuote(); - std::vector tdxComponents = {0x50, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + std::vector tdxComponents = {0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }; tcbs.insert(dcap::parser::json::TcbLevel{"TDX", sgxTcbComponents, tdxComponents, toUint16(pcesvn[1], pcesvn[0]), "UpToDate"}); tcbs.insert(dcap::parser::json::TcbLevel{"TDX", sgxTcbComponents, tdxTcbComponents, toUint16(pcesvn[1], pcesvn[0]), "OutOfDate"}); diff --git a/QuoteVerification/QVL/Src/CMakeLists.txt b/QuoteVerification/QVL/Src/CMakeLists.txt index ffb20a06..8656ee0b 100644 --- a/QuoteVerification/QVL/Src/CMakeLists.txt +++ b/QuoteVerification/QVL/Src/CMakeLists.txt @@ -151,7 +151,7 @@ set(HUNTER_STATUS_DEBUG OFF) #set to 'ON' to see debug hunter logs option(HUNTER_NO_TOOLCHAIN_ID_RECALCULATION "No Toolchain-ID recalculation" ON) option(HUNTER_KEEP_PACKAGE_SOURCES "Keep third party sources" ON) -include("ThirdParty/hunter/HunterGate.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/ThirdParty/hunter/HunterGate.cmake") HunterGate( URL "https://github.com/cpp-pm/hunter/archive/v0.23.316.tar.gz" SHA1 "167a33c4cc398504826a1a3014ef66f9ccc35db3" @@ -348,6 +348,8 @@ if (BUILD_TESTS) if (CMAKE_BUILD_TYPE STREQUAL "Coverage") if(UNIX) + include(ProcessorCount) + ProcessorCount(N) set(COVFILE "${CMAKE_SOURCE_DIR}/sgx.cov") add_custom_target(cov_on @@ -366,7 +368,7 @@ if (BUILD_TESTS) COMMAND ${BULLSEYE_COV_XML} -f${COVFILE} -o${PROJECT_SOURCE_DIR}/code-coverage-report/coverage.xml --no-banner) add_custom_target(code-coverage - COMMAND COVFILE=${COVFILE} ${CMAKE_MAKE_PROGRAM} -C ${QVL_BUILD_DIR} -j1 cov_on runTests cov_off cov_html cov_xml) + COMMAND COVFILE=${COVFILE} $(MAKE) -j${N} -C ${QVL_BUILD_DIR} cov_on runTests cov_off cov_html cov_xml) else() message(FATAL_ERROR "Coverage build is only supported on Linux") endif() diff --git a/QuoteVerification/QvE/AttestationLibrary/AttestationLibrary.vcxproj b/QuoteVerification/QvE/AttestationLibrary/AttestationLibrary.vcxproj index 90fa17c1..fa6f021e 100644 --- a/QuoteVerification/QvE/AttestationLibrary/AttestationLibrary.vcxproj +++ b/QuoteVerification/QvE/AttestationLibrary/AttestationLibrary.vcxproj @@ -254,11 +254,13 @@ Level4 $(ProjectDir)..\..\QVL/Src/;$(ProjectDir)..\..\package\include;$(ProjectDir)..\..\QVL/Src/ThirdParty/rapidjson/include;$(ProjectDir)..\..\QVL/Src/AttestationCommons/include;$(ProjectDir)..\..\QVL/Src/AttestationCommons/include/Utils;$(ProjectDir)..\..\QVL/Src/AttestationLibrary/include;$(ProjectDir)..\..\QVL/Src/AttestationLibrary/src;$(ProjectDir)..\..\QVL/Src/AttestationParsers/include/;..\Include;$(ProjectDir)..\..\../QuoteGeneration/common/inc/internal;$(ProjectDir)..\..\../QuoteGeneration/quote_wrapper/common/inc;$(SGXSDKInstallPath)include;$(SGXSDKInstallPath)include\tlibc;$(SGXSDKInstallPath)include\libc++;$(SGXSDKInstallPath)include\epid;$(VCToolsInstallDir)\include;$(ProjectDir)..\..\QvE\Enclave;%(AdditionalIncludeDirectories) true - SGX_TRUSTED;_WINDOWS;_ATTESTATIONLIBRARY_EXPORTS + NDEBUG;SGX_TRUSTED;_WINDOWS;_ATTESTATIONLIBRARY_EXPORTS;OPENSSL_NO_FILENAMES true Guard 4101 /d2FH4- %(AdditionalOptions) + false + ProgramDatabase sgx_trts.lib;sgx_tstdc.lib;sgx_tservice.lib;sgx_tcxx.lib;sgx_tcrypto.lib @@ -268,6 +270,9 @@ + + /PDBALTPATH:AttestationLibrary.pdb %(AdditionalOptions) + diff --git a/QuoteVerification/QvE/AttestationParsers/AttestationParsers.vcxproj b/QuoteVerification/QvE/AttestationParsers/AttestationParsers.vcxproj index 45331d84..46247743 100644 --- a/QuoteVerification/QvE/AttestationParsers/AttestationParsers.vcxproj +++ b/QuoteVerification/QvE/AttestationParsers/AttestationParsers.vcxproj @@ -254,11 +254,13 @@ Level4 $(ProjectDir)..\..\QVL/Src/;$(ProjectDir)..\..\package\include;$(ProjectDir)..\..\QVL/Src/ThirdParty/rapidjson/include;$(ProjectDir)..\..\QVL/Src/AttestationCommons/include;$(ProjectDir)..\..\QVL/Src/AttestationCommons/include/Utils;$(ProjectDir)..\..\QVL/Src/AttestationParsers/include/;$(ProjectDir)..\..\QVL/Src/AttestationParsers/src;$(ProjectDir)..\..\QVL/Src/AttestationLibrary/include/;..\Include;$(ProjectDir)..\..\../QuoteGeneration/quote_wrapper/common/inc;$(ProjectDir)..\..\../QuoteGeneration/common/inc/internal;$(SGXSDKInstallPath)include;$(SGXSDKInstallPath)include\tlibc;$(SGXSDKInstallPath)include\libc++;$(SGXSDKInstallPath)include\epid;$(VCToolsInstallDir)\include;$(ProjectDir)..\..\QvE\Enclave;%(AdditionalIncludeDirectories) true - SGX_TRUSTED;_WINDOWS + NDEBUG;SGX_TRUSTED;_WINDOWS;OPENSSL_NO_FILENAMES Guard true 4101 /d2FH4- %(AdditionalOptions) + false + ProgramDatabase sgx_trts.lib;sgx_tstdc.lib;sgx_tservice.lib;sgx_tcxx.lib;sgx_tcrypto.lib @@ -268,6 +270,9 @@ + + /PDBALTPATH:AttestationParsers.pdb %(AdditionalOptions) + diff --git a/QuoteVerification/QvE/Enclave/linux/config.xml b/QuoteVerification/QvE/Enclave/linux/config.xml index 435d3b3b..db73d2cb 100644 --- a/QuoteVerification/QvE/Enclave/linux/config.xml +++ b/QuoteVerification/QvE/Enclave/linux/config.xml @@ -1,7 +1,7 @@ 1 0x2 - 5 + 6 1 1 diff --git a/QuoteVerification/QvE/Enclave/qve.vcxproj b/QuoteVerification/QvE/Enclave/qve.vcxproj index 6003c05f..774a91f9 100644 --- a/QuoteVerification/QvE/Enclave/qve.vcxproj +++ b/QuoteVerification/QvE/Enclave/qve.vcxproj @@ -412,8 +412,10 @@ true true Guard - ATTESTATIONLIBRARY_STATIC;SGX_TRUSTED;_WINDOWS;_WINDLL;%(PreprocessorDefinitions) + NDEBUG;ATTESTATIONLIBRARY_STATIC;SGX_TRUSTED;_WINDOWS;_WINDLL;%(PreprocessorDefinitions) /d2FH4- %(AdditionalOptions) + false + ProgramDatabase sgx_trts.lib;sgx_tstdc.lib;sgx_tservice.lib;sgx_tcxx.lib;sgx_tcrypto.lib;AttestationParsers.lib;AttestationLibrary.lib;libsgx_tsgxssl.lib;libsgx_tsgxssl_crypto.lib @@ -427,6 +429,7 @@ true true true + /PDBALTPATH:qve.pdb %(AdditionalOptions) "$(SGXSDKInstallPath)bin\x64\release\sgx_sign.exe" sign -key "qve_test_key.pem" -enclave "$(OutDir)qve.dll" -out "$(OutDir)qve.signed.dll" -config "win\config.xml" @@ -530,4 +533,4 @@ - + \ No newline at end of file diff --git a/QuoteVerification/QvE/Enclave/win/config.xml b/QuoteVerification/QvE/Enclave/win/config.xml index 823e0ecf..2c67a958 100644 --- a/QuoteVerification/QvE/Enclave/win/config.xml +++ b/QuoteVerification/QvE/Enclave/win/config.xml @@ -1,11 +1,11 @@ 1 0x2 - 5 + 6 1 1 0x44000 0x80000 1 - \ No newline at end of file + diff --git a/QuoteVerification/dcap_quoteverify/AttestationLibrary_untrusted/AttestationLibrary_untrusted.vcxproj b/QuoteVerification/dcap_quoteverify/AttestationLibrary_untrusted/AttestationLibrary_untrusted.vcxproj index d88a5a30..d4fbfd5c 100644 --- a/QuoteVerification/dcap_quoteverify/AttestationLibrary_untrusted/AttestationLibrary_untrusted.vcxproj +++ b/QuoteVerification/dcap_quoteverify/AttestationLibrary_untrusted/AttestationLibrary_untrusted.vcxproj @@ -131,10 +131,12 @@ Level4 $(ProjectDir)..\..\QVL/Src/;$(ProjectDir)..\..\QVL/Src/ThirdParty/rapidjson/include;$(ProjectDir)..\..\QVL/Src/AttestationCommons/include;$(ProjectDir)..\..\QVL/Src/AttestationCommons/include/Utils;$(ProjectDir)..\..\QVL/Src/AttestationLibrary/include/;$(ProjectDir)..\..\QVL/Src/AttestationLibrary/src;$(ProjectDir)..\..\QVL/Src/AttestationParsers/include/;..\Include;$(ProjectDir)..\..\../QuoteGeneration/common/inc/internal;$(ProjectDir)..\..\../QuoteGeneration/quote_wrapper/common/inc;$(VCToolsInstallDir)\include;$(ProjectDir)..\..\QvE\Include;$(SolutionDir)prebuilt\openssl\inc;%(AdditionalIncludeDirectories) true - _WINDOWS;_ATTESTATIONLIBRARY_EXPORTS + NDEBUG;_WINDOWS;_ATTESTATIONLIBRARY_EXPORTS;OPENSSL_NO_FILENAMES true Guard 4101 + false + ProgramDatabase sgx_trts.lib;sgx_tstdc.lib;sgx_tservice.lib;sgx_tcxx.lib;sgx_tcrypto.lib @@ -153,6 +155,7 @@ + /PDBALTPATH:AttestationLibrary.pdb %(AdditionalOptions) diff --git a/QuoteVerification/dcap_quoteverify/AttestationParsers_untrusted/AttestationParsers_untrusted.vcxproj b/QuoteVerification/dcap_quoteverify/AttestationParsers_untrusted/AttestationParsers_untrusted.vcxproj index 8de8bd16..3645ffba 100644 --- a/QuoteVerification/dcap_quoteverify/AttestationParsers_untrusted/AttestationParsers_untrusted.vcxproj +++ b/QuoteVerification/dcap_quoteverify/AttestationParsers_untrusted/AttestationParsers_untrusted.vcxproj @@ -128,10 +128,12 @@ Level4 $(ProjectDir)..\..\QVL/Src/;$(ProjectDir)..\..\QVL/Src/ThirdParty/rapidjson/include;$(ProjectDir)..\..\QVL/Src/AttestationCommons/include;$(ProjectDir)..\..\QVL/Src/AttestationCommons/include/Utils;$(ProjectDir)..\..\QVL/Src/AttestationParsers/include/;$(ProjectDir)..\..\QVL/Src/AttestationParsers/src;$(ProjectDir)..\..\QVL/Src/AttestationLibrary/include/;..\Include;$(ProjectDir)..\..\../QuoteGeneration/quote_wrapper/common/inc;$(ProjectDir)..\..\../QuoteGeneration/common/inc/internal;$(VCToolsInstallDir)\include;$(SolutionDir)prebuilt\openssl\inc;%(AdditionalIncludeDirectories) true - _WINDOWS; + NDEBUG;_WINDOWS;OPENSSL_NO_FILENAMES Guard true 4101 + false + ProgramDatabase sgx_trts.lib;sgx_tstdc.lib;sgx_tservice.lib;sgx_tcxx.lib;sgx_tcrypto.lib @@ -148,6 +150,7 @@ + /PDBALTPATH:AttestationParsers.pdb %(AdditionalOptions) diff --git a/QuoteVerification/dcap_quoteverify/inc/sgx_dcap_qv_internal.h b/QuoteVerification/dcap_quoteverify/inc/sgx_dcap_qv_internal.h index af0c740b..c647458d 100644 --- a/QuoteVerification/dcap_quoteverify/inc/sgx_dcap_qv_internal.h +++ b/QuoteVerification/dcap_quoteverify/inc/sgx_dcap_qv_internal.h @@ -71,7 +71,7 @@ quote3_error_t sgx_qvl_get_quote_supplemental_data_version( uint32_t *p_version); - quote3_error_t qvl_get_fmspc_ca_from_quote(const uint8_t* p_quote, uint32_t quote_size, +quote3_error_t qvl_get_fmspc_ca_from_quote(const uint8_t* p_quote, uint32_t quote_size, unsigned char* p_fmsp_from_quote, uint32_t fmsp_from_quote_size, unsigned char* p_ca_from_quote, uint32_t ca_from_quote_size); diff --git a/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-rs/.gitignore b/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-rs/.gitignore new file mode 100644 index 00000000..96ef6c0b --- /dev/null +++ b/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-rs/.gitignore @@ -0,0 +1,2 @@ +/target +Cargo.lock diff --git a/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-rs/Cargo.toml b/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-rs/Cargo.toml new file mode 100644 index 00000000..b7e3d6a0 --- /dev/null +++ b/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-rs/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "sgx-dcap-quoteverify-rs" +version = "0.1.0" +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +sgx-dcap-quoteverify-sys = { version = "0.1.0", path = "../sgx-dcap-quoteverify-sys" } diff --git a/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-rs/src/lib.rs b/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-rs/src/lib.rs new file mode 100644 index 00000000..286140a2 --- /dev/null +++ b/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-rs/src/lib.rs @@ -0,0 +1,302 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ +//! Intel(R) Software Guard Extensions Data Center Attestation Primitives (Intel(R) SGX DCAP) +//! Rust wrapper for Quote Verification Library +//! ================================================ +//! +//! This is a safe wrapper for **sgx-dcap-quoteverify-sys**. + +use std::ffi::CString; +use sgx_dcap_quoteverify_sys as qvl_sys; + +pub use qvl_sys::quote3_error_t; +pub use qvl_sys::sgx_ql_request_policy_t; +pub use qvl_sys::sgx_ql_qv_supplemental_t; +pub use qvl_sys::sgx_ql_qve_collateral_t; +pub use qvl_sys::tdx_ql_qve_collateral_t; +pub use qvl_sys::sgx_ql_qv_result_t; +pub use qvl_sys::sgx_ql_qe_report_info_t; +pub use qvl_sys::sgx_qv_path_type_t; + + +/// When the Quoting Verification Library is linked to a process, it needs to know the proper enclave loading policy. +/// The library may be linked with a long lived process, such as a service, where it can load the enclaves and leave +/// them loaded (persistent). This better ensures that the enclaves will be available upon quote requests and not subject +/// to EPC limitations if loaded on demand. However, if the Quoting library is linked with an application process, there +/// may be many applications with the Quoting library and a better utilization of EPC is to load and unloaded the quoting +/// enclaves on demand (ephemeral). The library will be shipped with a default policy of loading enclaves and leaving +/// them loaded until the library is unloaded (PERSISTENT). If the policy is set to EPHEMERAL, then the QE and PCE will +/// be loaded and unloaded on-demand. If either enclave is already loaded when the policy is change to EPHEMERAL, the +/// enclaves will be unloaded before returning. +/// +/// # Param +/// - **policy**\ +/// Sets the requested enclave loading policy to either *SGX_QL_PERSISTENT*, *SGX_QL_EPHEMERAL* +/// or *SGX_QL_DEFAULT*. +/// +/// # Return +/// - ***SGX_QL_SUCCESS***\ +/// Successfully set the enclave loading policy for the quoting library's enclaves.\ +/// - ***SGX_QL_UNSUPPORTED_LOADING_POLICY***\ +/// The selected policy is not support by the quoting library.\ +/// - ***SGX_QL_ERROR_UNEXPECTED***\ +/// Unexpected internal error. +/// +/// # Examples +/// ``` +/// use sgx_dcap_quoteverify_rs::*; +/// +/// let policy = sgx_ql_request_policy_t::SGX_QL_DEFAULT; +/// let ret = sgx_qv_set_enclave_load_policy(policy); +/// +/// assert_eq!(ret, quote3_error_t::SGX_QL_SUCCESS); +/// ``` +pub fn sgx_qv_set_enclave_load_policy(policy: sgx_ql_request_policy_t) -> quote3_error_t { + unsafe {qvl_sys::sgx_qv_set_enclave_load_policy(policy)} +} + +/// Get SGX supplemental data required size. +/// +/// # Param +/// - **p_data_size\[OUT\]**\ +/// Pointer to hold the size of the buffer in bytes required to contain all of the supplemental data. +/// +/// # Return +/// Status code of the operation, one of: +/// - *SGX_QL_SUCCESS* +/// - *SGX_QL_ERROR_INVALID_PARAMETER* +/// - *SGX_QL_ERROR_QVL_QVE_MISMATCH* +/// - *SGX_QL_ENCLAVE_LOAD_ERROR* +/// +/// # Examples +/// ``` +/// use sgx_dcap_quoteverify_rs::*; +/// +/// let mut data_size: u32 = 0; +/// let ret = sgx_qv_get_quote_supplemental_data_size(&mut data_size); +/// +/// assert_eq!(ret, quote3_error_t::SGX_QL_SUCCESS); +/// assert_eq!(data_size, std::mem::size_of::() as u32); +/// ``` +pub fn sgx_qv_get_quote_supplemental_data_size(p_data_size: &mut u32) -> quote3_error_t { + unsafe {qvl_sys::sgx_qv_get_quote_supplemental_data_size(p_data_size as *mut u32)} +} + +/// Perform SGX ECDSA quote verification. +/// +/// # Param +/// - **quote\[IN\]**\ +/// SGX Quote, presented as u8 vector. +/// - **p_quote_collateral\[IN\]**\ +/// This is a pointer to the Quote Certification Collateral provided by the caller. +/// - **expiration_check_date\[IN\]**\ +/// This is the date that the QvE will use to determine if any of the inputted collateral have expired. +/// - **p_collateral_expiration_status\[OUT\]**\ +/// Address of the outputted expiration status. This input must not be NULL. +/// - **p_quote_verification_result\[OUT\]**\ +/// Address of the outputted quote verification result. +/// - **p_qve_report_info\[IN/OUT\]**\ +/// This parameter can be used in 2 ways.\ +/// - If p_qve_report_info is NOT None, the API will use Intel QvE to perform quote verification, and QvE will generate a report using the target_info in sgx_ql_qe_report_info_t structure.\ +/// - if p_qve_report_info is None, the API will use QVL library to perform quote verification, not that the results can not be cryptographically authenticated in this mode. +/// - **supplemental_data_size\[IN\]**\ +/// Size of the buffer pointed to by p_quote (in bytes). +/// - **p_supplemental_data\[OUT\]**\ +/// The parameter is optional. If it is None, supplemental_data_size must be 0. +/// +/// # Return +/// Status code of the operation, one of: +/// - *SGX_QL_SUCCESS* +/// - *SGX_QL_ERROR_INVALID_PARAMETER* +/// - *SGX_QL_QUOTE_FORMAT_UNSUPPORTED* +/// - *SGX_QL_QUOTE_CERTIFICATION_DATA_UNSUPPORTED* +/// - *SGX_QL_UNABLE_TO_GENERATE_REPORT* +/// - *SGX_QL_CRL_UNSUPPORTED_FORMAT* +/// - *SGX_QL_ERROR_UNEXPECTED* +/// +pub fn sgx_qv_verify_quote( + quote: &[u8], + p_quote_collateral: Option<&sgx_ql_qve_collateral_t>, + expiration_check_date: i64, + p_collateral_expiration_status: &mut u32, + p_quote_verification_result: &mut sgx_ql_qv_result_t, + p_qve_report_info: Option<&mut sgx_ql_qe_report_info_t>, + supplemental_data_size: u32, + p_supplemental_data: Option<&mut sgx_ql_qv_supplemental_t> +) -> quote3_error_t { + + // Match Option types to raw pointers + // + let p_quote_collateral = match p_quote_collateral { + Some(p) => p as *const sgx_ql_qve_collateral_t, + None => std::ptr::null(), + }; + let p_qve_report_info = match p_qve_report_info { + Some(p) => p as *mut sgx_ql_qe_report_info_t, + None => std::ptr::null_mut(), + }; + let p_supplemental_data = match p_supplemental_data { + Some(p) => p as *mut sgx_ql_qv_supplemental_t as *mut u8, + None => std::ptr::null_mut(), + }; + + unsafe { + qvl_sys::sgx_qv_verify_quote( + quote.as_ptr(), + quote.len() as u32, + p_quote_collateral, + expiration_check_date, + p_collateral_expiration_status as *mut u32, + p_quote_verification_result as *mut sgx_ql_qv_result_t, + p_qve_report_info, + supplemental_data_size, + p_supplemental_data) + } +} + +/// Get TDX supplemental data required size. +/// +/// # Param +/// - **p_data_size\[OUT\]**\ +/// Pointer to hold the size of the buffer in bytes required to contain all of the supplemental data. +/// +/// # Return +/// Status code of the operation, one of: +/// - *SGX_QL_SUCCESS* +/// - *SGX_QL_ERROR_INVALID_PARAMETER* +/// - *SGX_QL_ERROR_QVL_QVE_MISMATCH* +/// - *SGX_QL_ENCLAVE_LOAD_ERROR* +/// +/// # Examples +/// ``` +/// use sgx_dcap_quoteverify_rs::*; +/// +/// let mut data_size: u32 = 0; +/// let ret = tdx_qv_get_quote_supplemental_data_size(&mut data_size); +/// +/// assert_eq!(ret, quote3_error_t::SGX_QL_SUCCESS); +/// assert_eq!(data_size, std::mem::size_of::() as u32); +/// ``` +pub fn tdx_qv_get_quote_supplemental_data_size(p_data_size: &mut u32) -> quote3_error_t { + unsafe {qvl_sys::tdx_qv_get_quote_supplemental_data_size(p_data_size as *mut u32)} +} + +/// Perform TDX ECDSA quote verification. +/// +/// # Param +/// - **quote\[IN\]**\ +/// TDX Quote, presented as u8 vector. +/// - **p_quote_collateral\[IN\]**\ +/// This is a pointer to the Quote Certification Collateral provided by the caller. +/// - **expiration_check_date\[IN\]**\ +/// This is the date that the QvE will use to determine if any of the inputted collateral have expired. +/// - **p_collateral_expiration_status\[OUT\]**\ +/// Address of the outputted expiration status. This input must not be NULL. +/// - **p_quote_verification_result\[OUT\]**\ +/// Address of the outputted quote verification result. +/// - **p_qve_report_info\[IN/OUT\]**\ +/// This parameter can be used in 2 ways.\ +/// - If p_qve_report_info is NOT None, the API will use Intel QvE to perform quote verification, and QvE will generate a report using the target_info in sgx_ql_qe_report_info_t structure.\ +/// - if p_qve_report_info is None, the API will use QVL library to perform quote verification, not that the results can not be cryptographically authenticated in this mode. +/// - **supplemental_data_size\[IN\]**\ +/// Size of the buffer pointed to by p_quote (in bytes). +/// - **p_supplemental_data\[OUT\]**\ +/// The parameter is optional. If it is None, supplemental_data_size must be 0. +/// +/// # Return +/// Status code of the operation, one of: +/// - *SGX_QL_SUCCESS* +/// - *SGX_QL_ERROR_INVALID_PARAMETER* +/// - *SGX_QL_QUOTE_FORMAT_UNSUPPORTED* +/// - *SGX_QL_QUOTE_CERTIFICATION_DATA_UNSUPPORTED* +/// - *SGX_QL_UNABLE_TO_GENERATE_REPORT* +/// - *SGX_QL_CRL_UNSUPPORTED_FORMAT* +/// - *SGX_QL_ERROR_UNEXPECTED* +/// +pub fn tdx_qv_verify_quote( + quote: &[u8], + p_quote_collateral: Option<&tdx_ql_qve_collateral_t>, + expiration_check_date: i64, + p_collateral_expiration_status: &mut u32, + p_quote_verification_result: &mut sgx_ql_qv_result_t, + p_qve_report_info: Option<&mut sgx_ql_qe_report_info_t>, + supplemental_data_size: u32, + p_supplemental_data: Option<&mut sgx_ql_qv_supplemental_t> +) -> quote3_error_t { + + // Match Option types to raw pointers + // + let p_quote_collateral = match p_quote_collateral { + Some(p) => p as *const tdx_ql_qve_collateral_t, + None => std::ptr::null(), + }; + let p_qve_report_info = match p_qve_report_info { + Some(p) => p as *mut sgx_ql_qe_report_info_t, + None => std::ptr::null_mut(), + }; + let p_supplemental_data = match p_supplemental_data { + Some(p) => p as *mut sgx_ql_qv_supplemental_t as *mut u8, + None => std::ptr::null_mut(), + }; + + unsafe { + qvl_sys::tdx_qv_verify_quote( + quote.as_ptr(), + quote.len() as u32, + p_quote_collateral, + expiration_check_date, + p_collateral_expiration_status as *mut u32, + p_quote_verification_result as *mut sgx_ql_qv_result_t, + p_qve_report_info, + supplemental_data_size, + p_supplemental_data) + } +} + +/// Set the full path of QVE and QPL library. +/// The function takes the enum and the corresponding full path. +/// +/// # Param +/// - **path_type**\ +/// The type of binary being passed in. +/// - **p_path**\ +/// It should be a valid full path. +/// +/// # Return +/// - ***SGX_QL_SUCCESS***\ +/// Successfully set the full path. +/// - ***SGX_QL_ERROR_INVALID_PARAMETER***\ +/// p_path is not a valid full path or the path is too long. +/// +#[cfg(target_os = "linux")] +pub fn sgx_qv_set_path(path_type: sgx_qv_path_type_t, p_path: CString) -> quote3_error_t { + unsafe {qvl_sys::sgx_qv_set_path(path_type, p_path.as_ptr())} +} diff --git a/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-sys/.gitignore b/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-sys/.gitignore new file mode 100644 index 00000000..96ef6c0b --- /dev/null +++ b/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-sys/.gitignore @@ -0,0 +1,2 @@ +/target +Cargo.lock diff --git a/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-sys/Cargo.toml b/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-sys/Cargo.toml new file mode 100644 index 00000000..0621853e --- /dev/null +++ b/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-sys/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "sgx-dcap-quoteverify-sys" +version = "0.1.0" +edition = "2018" +links = "sgx_dcap_quoteverify" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] + +[build-dependencies] +bindgen = "0.59.1" diff --git a/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-sys/bindings.h b/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-sys/bindings.h new file mode 100644 index 00000000..a655b8ae --- /dev/null +++ b/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-sys/bindings.h @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "sgx_dcap_quoteverify.h" \ No newline at end of file diff --git a/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-sys/build.rs b/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-sys/build.rs new file mode 100644 index 00000000..9380ff0e --- /dev/null +++ b/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-sys/build.rs @@ -0,0 +1,89 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +use bindgen; + +use std::env; +use std::path::PathBuf; + +fn main() { + // Tell cargo to tell rustc to link the system + // sgx-dcap-quoteverify shared library. + println!("cargo:rustc-link-lib=sgx_dcap_quoteverify"); + + // Tell cargo to invalidate the built crate whenever the wrapper changes + println!("cargo:rerun-if-changed=bindings.h"); + + // Set sdk to search path if SGX_SDK is in environment variable + let mut sdk_inc = String::from("-I"); + match env::var("SGX_SDK") { + Ok(val) => { + sdk_inc.push_str(&val); + sdk_inc.push_str("/include/"); + }, + _ => (), + } + + // The bindgen::Builder is the main entry point + // to bindgen, and lets you build up options for + // the resulting bindings. + let bindings = bindgen::Builder::default() + // The input header we would like to generate + // bindings for. + .header("bindings.h") + // Include search path + .clang_arg(sdk_inc) + // Convert C enum to Rust enum + .rustified_enum("_quote3_error_t") + .rustified_enum("_sgx_ql_request_policy") + .rustified_enum("_sgx_ql_qv_result_t") + .rustified_enum("sgx_qv_path_type_t") + // Disable debug trait for packed C structures + .no_debug("_quote_t") + .no_debug("_sgx_ql_auth_data_t") + .no_debug("_sgx_ql_certification_data_t") + .no_debug("_sgx_ql_ecdsa_sig_data_t") + .no_debug("_sgx_quote3_t") + .no_debug("_sgx_ql_att_key_id_param_t") + // Tell cargo to invalidate the built crate whenever any of the + // included header files changed. + .parse_callbacks(Box::new(bindgen::CargoCallbacks)) + // Finish the builder and generate the bindings. + .generate() + // Unwrap the Result and panic on failure. + .expect("Unable to generate bindings"); + + // Write the bindings to the $OUT_DIR/bindings.rs file. + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + bindings + .write_to_file(out_path.join("bindings.rs")) + .expect("Couldn't write bindings!"); +} diff --git a/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-sys/src/lib.rs b/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-sys/src/lib.rs new file mode 100644 index 00000000..9d81d5bd --- /dev/null +++ b/QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-sys/src/lib.rs @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ +//! Intel(R) Software Guard Extensions Data Center Attestation Primitives (Intel(R) SGX DCAP) +//! Rust raw FFI bindings for Quote Verification Library +//! ================================================ +//! +//! Please install the following prerequisite: +//! * Intel(R) SGX DCAP Driver +//! * Intel(R) SGX SDK +//! * Intel(R) SGX DCAP Packages +//! * Intel(R) SGX DCAP PCCS (Provisioning Certificate Caching Service) +//! +//! *Please refer to [SGX DCAP Linux installation guide]( +//! https://download.01.org/intel-sgx/sgx-dcap/#version#/linux/docs/Intel_SGX_SW_Installation_Guide_for_Linux.pdf) +//! to install above dependencies.* +//! +//! *Note that you need to change **\#version\#** to actual version number in URL, such as 1.4.*\ +//! *Note that you need to install **libsgx-dcap-quote-verify-dev** and **clang** for this package.* + +#![allow(non_upper_case_globals)] +#![allow(non_camel_case_types)] +#![allow(non_snake_case)] + +include!(concat!(env!("OUT_DIR"), "/bindings.rs")); diff --git a/QuoteVerification/dcap_tvl/sgx_dcap_tvl.cpp b/QuoteVerification/dcap_tvl/sgx_dcap_tvl.cpp index db3a4a1e..4d4282a0 100644 --- a/QuoteVerification/dcap_tvl/sgx_dcap_tvl.cpp +++ b/QuoteVerification/dcap_tvl/sgx_dcap_tvl.cpp @@ -45,7 +45,7 @@ #define SGX_ERR_BREAK(x) {if (x != SGX_SUCCESS) break;} //Hardcode Intel signed QvE Identity below -//You can get such info from latest QvE Identity JSON file +//You can get such info from QvE Identity JSON file //e.g. Get the QvE Identity JSON file from //https://api.trustedservices.intel.com/sgx/certification/v3/qve/identity // @@ -60,9 +60,8 @@ const std::string QVE_MRSIGNER = "8C4F5775D796503E96137F77C68A829A0056AC8DED7014 const sgx_prod_id_t QVE_PRODID = 2; -//Defense in depth, threshold must be greater or equal to least QvE ISV SVN -const sgx_isv_svn_t LEAST_QVE_ISVSVN = 5; - +//Defense in depth, QvE ISV SVN in report must be greater or equal to hardcode QvE ISV SVN +const sgx_isv_svn_t LEAST_QVE_ISVSVN = 6; quote3_error_t sgx_tvl_verify_qve_report_and_identity( const uint8_t *p_quote, @@ -96,13 +95,6 @@ quote3_error_t sgx_tvl_verify_qve_report_and_identity( } } - //Defense in depth, threshold must be greater or equal to 5 - // - if (qve_isvsvn_threshold < LEAST_QVE_ISVSVN) - return SGX_QL_QVE_OUT_OF_DATE; - - - const sgx_report_t *p_qve_report = &(p_qve_report_info->qe_report); do { @@ -227,8 +219,15 @@ quote3_error_t sgx_tvl_verify_qve_report_and_identity( break; } + //Check QvE ISV SVN in QvE report meets the minimum requires SVN when the TVL was built. + // + if (p_qve_report->body.isv_svn < LEAST_QVE_ISVSVN) { + ret = SGX_QL_QVE_OUT_OF_DATE; + break; + } - //Check QvE ISV SVN in QvE report + //Check if there has been a TCB Recovery on the QVE used to verify the report. + //Warning: The function may return erroneous result if QvE ISV SVN has been modified maliciously. // if (p_qve_report->body.isv_svn < qve_isvsvn_threshold) { ret = SGX_QL_QVE_OUT_OF_DATE; diff --git a/QuoteVerification/dcap_tvl/sgx_dcap_tvl.edl b/QuoteVerification/dcap_tvl/sgx_dcap_tvl.edl index 507d5bd6..2d94cf63 100644 --- a/QuoteVerification/dcap_tvl/sgx_dcap_tvl.edl +++ b/QuoteVerification/dcap_tvl/sgx_dcap_tvl.edl @@ -48,7 +48,9 @@ enclave { * @param quote_verification_result[IN] - The output of API "sgx_qv_verify_quote" about quote verification result * @param p_supplemental_data[IN] - The output of API "sgx_qv_verify_quote", the pointer to supplemental data * @param supplemental_data_size[IN] - Size of the buffer pointed to by p_quote (in bytes) - * @param qve_isvsvn_threshold [IN] - The threshold of QvE ISVSVN, the ISVSVN of QvE used to verify quote must be greater or equal to this threshold. You can get latest QvE ISVSVN in QvE Identity (JSON) from Intel PCS. + * @param qve_isvsvn_threshold [IN] - The threshold of QvE ISVSVN, the ISVSVN of QvE used to verify quote must be greater or equal to this threshold. + * @You can get latest QvE ISVSVN from QvE configuration file (Github) or QvE Identity (JSON) from Intel PCS. + * @Warning: The function may return erroneous result if QvE ISV SVN has been modified maliciously. * * @return Status code of the operation, one of: * - SGX_QL_SUCCESS diff --git a/QuoteVerification/dcap_tvl/sgx_dcap_tvl.h b/QuoteVerification/dcap_tvl/sgx_dcap_tvl.h index f6101220..9e72690f 100644 --- a/QuoteVerification/dcap_tvl/sgx_dcap_tvl.h +++ b/QuoteVerification/dcap_tvl/sgx_dcap_tvl.h @@ -64,7 +64,9 @@ extern "C" { * @param quote_verification_result[IN] - The output of API "sgx_qv_verify_quote" about quote verification result * @param p_supplemental_data[IN] - The output of API "sgx_qv_verify_quote", the pointer to supplemental data * @param supplemental_data_size[IN] - Size of the buffer pointed to by p_quote (in bytes) - * @param qve_isvsvn_threshold [IN] - The threshold of QvE ISVSVN, the ISVSVN of QvE used to verify quote must be greater or equal to this threshold. You can get latest QvE ISVSVN in QvE Identity (JSON) from Intel PCS. + * @param qve_isvsvn_threshold [IN] - The threshold of QvE ISVSVN, the ISVSVN of QvE used to verify quote must be greater or equal to this threshold. + * @You can get latest QvE ISVSVN from QvE configuration file (Github) or QvE Identity (JSON) from Intel PCS. + * @Warning: The function may return erroneous result if QvE ISV SVN has been modified maliciously. * * @return Status code of the operation, one of: * - SGX_QL_SUCCESS diff --git a/QuoteVerification/prepare_sgxssl.cmd b/QuoteVerification/prepare_sgxssl.cmd index 1849410e..68863205 100644 --- a/QuoteVerification/prepare_sgxssl.cmd +++ b/QuoteVerification/prepare_sgxssl.cmd @@ -1,6 +1,6 @@ Rem -Rem Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +Rem Copyright (C) 2011-2022 Intel Corporation. All rights reserved. Rem Rem Redistribution and use in source and binary forms, with or without Rem modification, are permitted provided that the following conditions @@ -39,17 +39,17 @@ set top_dir=%~dp0 set sgxssl_dir=%top_dir%\sgxssl set openssl_out_dir=%sgxssl_dir%\openssl_source -set openssl_ver_name=openssl-1.1.1m +set openssl_ver_name=openssl-1.1.1o set sgxssl_github_archive=https://github.com/intel/intel-sgx-ssl/archive -set sgxssl_ver_name=win_2.15_1.1.1m_update +set sgxssl_ver_name=win_2.16_1.1.1o set sgxssl_ver=%sgxssl_ver_name% set build_script=%sgxssl_dir%\Windows\build_package.cmd set server_url_path=https://www.openssl.org/source/ set full_openssl_url=%server_url_path%/%openssl_ver_name%.tar.gz -set sgxssl_chksum=C9177D23AB221429EC1BDE38D2118C69FBE612018B6EA9900D22C1DD9596A2E6 -set openssl_chksum=F89199BE8B23CA45FC7CB9F1D8D3EE67312318286AD030F5316ACA6462DB6C96 +set sgxssl_chksum=E25CF02BF48FA279CFCB6B134ACB0A1FB04B84F680B40F32EF03AFF7368BE1E6 +set openssl_chksum=9384A2B0570DD80358841464677115DF785EDB941C71211F75076D72FE6B438F if not exist %sgxssl_dir% ( diff --git a/QuoteVerification/prepare_sgxssl.sh b/QuoteVerification/prepare_sgxssl.sh index 83676abf..a0685adc 100755 --- a/QuoteVerification/prepare_sgxssl.sh +++ b/QuoteVerification/prepare_sgxssl.sh @@ -34,16 +34,16 @@ ARG1=${1:-build} top_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" sgxssl_dir=$top_dir/sgxssl openssl_out_dir=$sgxssl_dir/openssl_source -openssl_ver_name=openssl-1.1.1m +openssl_ver_name=openssl-1.1.1o sgxssl_github_archive=https://github.com/01org/intel-sgx-ssl/archive -sgxssl_file_name=lin_2.16_1.1.1m_update +sgxssl_file_name=lin_2.17_1.1.1o build_script=$sgxssl_dir/Linux/build_openssl.sh server_url_path=https://www.openssl.org/source/ full_openssl_url=$server_url_path/$openssl_ver_name.tar.gz full_openssl_url_old=$server_url_path/old/1.1.1/$openssl_ver_name.tar.gz -sgxssl_chksum=46d3e6113da446f0fb250d9ca3b73f06b4fbc4e8f552c98f5de0865ee38caffc -openssl_chksum=f89199be8b23ca45fc7cb9f1d8d3ee67312318286ad030f5316aca6462db6c96 +sgxssl_chksum=f0ed7bd37b45fd2350ec835a9c56b5590554e13b94471a38d3379054448a6d4b +openssl_chksum=9384a2b0570dd80358841464677115df785edb941c71211f75076d72fe6b438f rm -f check_sum_sgxssl.txt check_sum_openssl.txt if [ ! -f $build_script ]; then wget $sgxssl_github_archive/$sgxssl_file_name.zip -P $sgxssl_dir/ || exit 1 diff --git a/SGX_DCAP.sln b/SGX_DCAP.sln index 68108a32..5bfc67b9 100644 --- a/SGX_DCAP.sln +++ b/SGX_DCAP.sln @@ -66,6 +66,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AttestationLibrary_untruste {D3FBC2A5-18F3-4073-ABD9-74612E17A0C3} = {D3FBC2A5-18F3-4073-ABD9-74612E17A0C3} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "id_enclave", "QuoteGeneration\quote_wrapper\quote\id_enclave\win\id_enclave.vcxproj", "{BE9799F0-84D2-4107-A5DB-A54E22F81F31}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tdqe", "QuoteGeneration\quote_wrapper\tdx_quote\enclave\win\tdqe.vcxproj", "{FA74E16C-93BA-4722-8B06-434F57C0E6D0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tdx_logic", "QuoteGeneration\quote_wrapper\tdx_quote\win\tdx_logic.vcxproj", "{DF76228C-AA18-41D2-ABF6-E340AE2B6591}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution CVE-2020-0551-CF-Release|x64 = CVE-2020-0551-CF-Release|x64 @@ -354,6 +360,62 @@ Global {D860F500-9B86-43AC-AAF3-51173AC75B25}.Simulation|x64.Build.0 = Release|x64 {D860F500-9B86-43AC-AAF3-51173AC75B25}.Simulation|x86.ActiveCfg = Release|Win32 {D860F500-9B86-43AC-AAF3-51173AC75B25}.Simulation|x86.Build.0 = Release|Win32 + {BE9799F0-84D2-4107-A5DB-A54E22F81F31}.CVE-2020-0551-CF-Release|x64.ActiveCfg = CVE-2020-0551-CF-Release|x64 + {BE9799F0-84D2-4107-A5DB-A54E22F81F31}.CVE-2020-0551-CF-Release|x64.Build.0 = CVE-2020-0551-CF-Release|x64 + {BE9799F0-84D2-4107-A5DB-A54E22F81F31}.CVE-2020-0551-CF-Release|x86.ActiveCfg = CVE-2020-0551-CF-Release|x64 + {BE9799F0-84D2-4107-A5DB-A54E22F81F31}.CVE-2020-0551-Load-Release|x64.ActiveCfg = CVE-2020-0551-Load-Release|x64 + {BE9799F0-84D2-4107-A5DB-A54E22F81F31}.CVE-2020-0551-Load-Release|x64.Build.0 = CVE-2020-0551-Load-Release|x64 + {BE9799F0-84D2-4107-A5DB-A54E22F81F31}.CVE-2020-0551-Load-Release|x86.ActiveCfg = CVE-2020-0551-Load-Release|x64 + {BE9799F0-84D2-4107-A5DB-A54E22F81F31}.Debug|x64.ActiveCfg = Debug|x64 + {BE9799F0-84D2-4107-A5DB-A54E22F81F31}.Debug|x64.Build.0 = Debug|x64 + {BE9799F0-84D2-4107-A5DB-A54E22F81F31}.Debug|x86.ActiveCfg = Debug|Win32 + {BE9799F0-84D2-4107-A5DB-A54E22F81F31}.Debug|x86.Build.0 = Debug|Win32 + {BE9799F0-84D2-4107-A5DB-A54E22F81F31}.Release|x64.ActiveCfg = Release|x64 + {BE9799F0-84D2-4107-A5DB-A54E22F81F31}.Release|x64.Build.0 = Release|x64 + {BE9799F0-84D2-4107-A5DB-A54E22F81F31}.Release|x86.ActiveCfg = Release|Win32 + {BE9799F0-84D2-4107-A5DB-A54E22F81F31}.Release|x86.Build.0 = Release|Win32 + {BE9799F0-84D2-4107-A5DB-A54E22F81F31}.Simulation|x64.ActiveCfg = Release|x64 + {BE9799F0-84D2-4107-A5DB-A54E22F81F31}.Simulation|x64.Build.0 = Release|x64 + {BE9799F0-84D2-4107-A5DB-A54E22F81F31}.Simulation|x86.ActiveCfg = Release|Win32 + {BE9799F0-84D2-4107-A5DB-A54E22F81F31}.Simulation|x86.Build.0 = Release|Win32 + {FA74E16C-93BA-4722-8B06-434F57C0E6D0}.CVE-2020-0551-CF-Release|x64.ActiveCfg = CVE-2020-0551-CF-Release|x64 + {FA74E16C-93BA-4722-8B06-434F57C0E6D0}.CVE-2020-0551-CF-Release|x64.Build.0 = CVE-2020-0551-CF-Release|x64 + {FA74E16C-93BA-4722-8B06-434F57C0E6D0}.CVE-2020-0551-CF-Release|x86.ActiveCfg = CVE-2020-0551-CF-Release|x64 + {FA74E16C-93BA-4722-8B06-434F57C0E6D0}.CVE-2020-0551-Load-Release|x64.ActiveCfg = CVE-2020-0551-Load-Release|x64 + {FA74E16C-93BA-4722-8B06-434F57C0E6D0}.CVE-2020-0551-Load-Release|x64.Build.0 = CVE-2020-0551-Load-Release|x64 + {FA74E16C-93BA-4722-8B06-434F57C0E6D0}.CVE-2020-0551-Load-Release|x86.ActiveCfg = CVE-2020-0551-Load-Release|x64 + {FA74E16C-93BA-4722-8B06-434F57C0E6D0}.Debug|x64.ActiveCfg = Debug|x64 + {FA74E16C-93BA-4722-8B06-434F57C0E6D0}.Debug|x64.Build.0 = Debug|x64 + {FA74E16C-93BA-4722-8B06-434F57C0E6D0}.Debug|x86.ActiveCfg = Debug|Win32 + {FA74E16C-93BA-4722-8B06-434F57C0E6D0}.Debug|x86.Build.0 = Debug|Win32 + {FA74E16C-93BA-4722-8B06-434F57C0E6D0}.Release|x64.ActiveCfg = Release|x64 + {FA74E16C-93BA-4722-8B06-434F57C0E6D0}.Release|x64.Build.0 = Release|x64 + {FA74E16C-93BA-4722-8B06-434F57C0E6D0}.Release|x86.ActiveCfg = Release|Win32 + {FA74E16C-93BA-4722-8B06-434F57C0E6D0}.Release|x86.Build.0 = Release|Win32 + {FA74E16C-93BA-4722-8B06-434F57C0E6D0}.Simulation|x64.ActiveCfg = Release|x64 + {FA74E16C-93BA-4722-8B06-434F57C0E6D0}.Simulation|x64.Build.0 = Release|x64 + {FA74E16C-93BA-4722-8B06-434F57C0E6D0}.Simulation|x86.ActiveCfg = Release|Win32 + {FA74E16C-93BA-4722-8B06-434F57C0E6D0}.Simulation|x86.Build.0 = Release|Win32 + {DF76228C-AA18-41D2-ABF6-E340AE2B6591}.CVE-2020-0551-CF-Release|x64.ActiveCfg = Release|x64 + {DF76228C-AA18-41D2-ABF6-E340AE2B6591}.CVE-2020-0551-CF-Release|x64.Build.0 = Release|x64 + {DF76228C-AA18-41D2-ABF6-E340AE2B6591}.CVE-2020-0551-CF-Release|x86.ActiveCfg = Release|Win32 + {DF76228C-AA18-41D2-ABF6-E340AE2B6591}.CVE-2020-0551-CF-Release|x86.Build.0 = Release|Win32 + {DF76228C-AA18-41D2-ABF6-E340AE2B6591}.CVE-2020-0551-Load-Release|x64.ActiveCfg = Release|x64 + {DF76228C-AA18-41D2-ABF6-E340AE2B6591}.CVE-2020-0551-Load-Release|x64.Build.0 = Release|x64 + {DF76228C-AA18-41D2-ABF6-E340AE2B6591}.CVE-2020-0551-Load-Release|x86.ActiveCfg = Release|Win32 + {DF76228C-AA18-41D2-ABF6-E340AE2B6591}.CVE-2020-0551-Load-Release|x86.Build.0 = Release|Win32 + {DF76228C-AA18-41D2-ABF6-E340AE2B6591}.Debug|x64.ActiveCfg = Debug|x64 + {DF76228C-AA18-41D2-ABF6-E340AE2B6591}.Debug|x64.Build.0 = Debug|x64 + {DF76228C-AA18-41D2-ABF6-E340AE2B6591}.Debug|x86.ActiveCfg = Debug|Win32 + {DF76228C-AA18-41D2-ABF6-E340AE2B6591}.Debug|x86.Build.0 = Debug|Win32 + {DF76228C-AA18-41D2-ABF6-E340AE2B6591}.Release|x64.ActiveCfg = Release|x64 + {DF76228C-AA18-41D2-ABF6-E340AE2B6591}.Release|x64.Build.0 = Release|x64 + {DF76228C-AA18-41D2-ABF6-E340AE2B6591}.Release|x86.ActiveCfg = Release|Win32 + {DF76228C-AA18-41D2-ABF6-E340AE2B6591}.Release|x86.Build.0 = Release|Win32 + {DF76228C-AA18-41D2-ABF6-E340AE2B6591}.Simulation|x64.ActiveCfg = Release|x64 + {DF76228C-AA18-41D2-ABF6-E340AE2B6591}.Simulation|x64.Build.0 = Release|x64 + {DF76228C-AA18-41D2-ABF6-E340AE2B6591}.Simulation|x86.ActiveCfg = Release|Win32 + {DF76228C-AA18-41D2-ABF6-E340AE2B6591}.Simulation|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/SampleCode/QuoteGenerationSample/Makefile b/SampleCode/QuoteGenerationSample/Makefile index 2709662c..1758d9a3 100644 --- a/SampleCode/QuoteGenerationSample/Makefile +++ b/SampleCode/QuoteGenerationSample/Makefile @@ -35,6 +35,8 @@ SGX_DEBUG ?= 0 SGX_SDK ?= /opt/intel/sgxsdk SGX_MODE ?= HW SGX_ARCH ?= x64 +OUT_OF_PROC ?= 0 + SGX_COMMON_CFLAGS := -m64 SGX_LIBRARY_PATH := $(SGX_SDK)/lib64 @@ -51,7 +53,7 @@ endif DCAP_Library_Name := sgx_dcap_ql Urts_Library_Name := sgx_urts -Uae_Library_Name := sgx_quote_ex +Quote_ex_Library_Name := sgx_quote_ex App_Cpp_Files := App/App.cpp App_Include_Paths := -I$(SGX_SDK)/include -I../../QuoteGeneration/quote_wrapper/common/inc @@ -69,7 +71,10 @@ endif App_Cpp_Flags := $(App_C_Flags) -std=c++11 -App_Link_Flags := $(SGX_COMMON_CFLAGS) -l$(DCAP_Library_Name) -l$(Urts_Library_Name) -l$(Uae_Library_Name) -ldl -lpthread +App_Link_Flags := $(SGX_COMMON_CFLAGS) -l$(DCAP_Library_Name) -l$(Urts_Library_Name) -ldl -lpthread +ifeq ($(OUT_OF_PROC),1) + App_Link_Flags += -l$(Quote_ex_Library_Name) +endif App_Cpp_Objects := $(App_Cpp_Files:.cpp=.o) diff --git a/SampleCode/QuoteGenerationSample/README.md b/SampleCode/QuoteGenerationSample/README.md index 6bd5386b..f29e9b9a 100644 --- a/SampleCode/QuoteGenerationSample/README.md +++ b/SampleCode/QuoteGenerationSample/README.md @@ -20,6 +20,7 @@ Prerequisite: * Intel(R) SGX SDK * Intel(R) SGX DCAP Packages * Intel(R) SGX DCAP PCCS (Provisioning Certificate Caching Service) +* If you want to use "out-of-process" quote generation, you need to install quote-ex package in Intel(R) SGX PSW Packages *Please refer to SGX DCAP Linux installation guide "https://download.01.org/intel-sgx/sgx-dcap/#version#/linux/docs/Intel_SGX_DCAP_Linux_SW_Installation_Guide.pdf" to install above dependencies*
*Note that you need to change **\#version\#** to actual version number in URL, such as 1.4.* @@ -45,16 +46,21 @@ Details please refer to driver [README](https://github.com/intel/SGXDataCenterAt *Note that you need to install libsgx-quote-ex-dev package and all its dependencies and recommends in order to build and run this sample. Or you can remove the `-l$(Uae_Library_Name)` in Makefile. ``` - Release build: + "in-porc" Release build: $ make Or Debug build: $ make SGX_DEBUG=1 Run application in "in-proc" mode: $ ./app + + "out-of-proc" Release build: + $ make OUT_OF_PROC=1 + Or Debug build: + $ make SGX_DEBUG=1 OUT_OF_PROC=1 Run application in "out-of-proc" mode: $ SGX_AESM_ADDR=1 ./app ``` - +**Note**: Our libdcap_quoteprov.so is not built with Intel(R) Control Flow Enforcement Technology(CET) feature. If the sample is built with CET feature(it can be enabled by the compiler's default setting) and it is running on a CET enabled platform, you may encounter such an error message(or something similar): "Couldn't find the platform library. rebuild shared object with SHSTK support enabled". It means the system glibc enforces that a CET-enabled application can't load a non-CET shared library. You need to rebuild the sample by adding -fcf-protection=none option explicitly to disable CET. ## Windows Supported operating systems: diff --git a/SampleCode/QuoteVerificationSample/App/App.cpp b/SampleCode/QuoteVerificationSample/App/App.cpp index 19353dae..ce3d06b2 100644 --- a/SampleCode/QuoteVerificationSample/App/App.cpp +++ b/SampleCode/QuoteVerificationSample/App/App.cpp @@ -144,6 +144,14 @@ int ecdsa_quote_verification(vector quote, bool use_qve) if (dcap_ret == SGX_QL_SUCCESS && supplemental_data_size == sizeof(sgx_ql_qv_supplemental_t)) { printf("\tInfo: sgx_qv_get_quote_supplemental_data_size successfully returned.\n"); p_supplemental_data = (uint8_t*)malloc(supplemental_data_size); + if (p_supplemental_data != NULL) { + memset(p_supplemental_data, 0, sizeof(supplemental_data_size)); + } + //Just print error in sample + // + else { + printf("\tError: Cannot allocate memory for supplemental data.\n"); + } } else { if (dcap_ret != SGX_QL_SUCCESS) @@ -182,11 +190,14 @@ int ecdsa_quote_verification(vector quote, bool use_qve) // Threshold of QvE ISV SVN. The ISV SVN of QvE used to verify quote must be greater or equal to this threshold - // e.g. You can get latest QvE ISVSVN in QvE Identity JSON file from + // e.g. You can check latest QvE ISVSVN from QvE configuration file on Github + // https://github.com/intel/SGXDataCenterAttestationPrimitives/blob/master/QuoteVerification/QvE/Enclave/linux/config.xml#L4 + // or you can get latest QvE ISVSVN in QvE Identity JSON file from // https://api.trustedservices.intel.com/sgx/certification/v3/qve/identity // Make sure you are using trusted & latest QvE ISV SVN as threshold + // Warning: The function may return erroneous result if QvE ISV SVN has been modified maliciously. // - sgx_isv_svn_t qve_isvsvn_threshold = 5; + sgx_isv_svn_t qve_isvsvn_threshold = 6; //call sgx_dcap_tvl API in SampleISVEnclave to verify QvE's report and identity // @@ -267,6 +278,14 @@ int ecdsa_quote_verification(vector quote, bool use_qve) if (dcap_ret == SGX_QL_SUCCESS && supplemental_data_size == sizeof(sgx_ql_qv_supplemental_t)) { printf("\tInfo: sgx_qv_get_quote_supplemental_data_size successfully returned.\n"); p_supplemental_data = (uint8_t*)malloc(supplemental_data_size); + if (p_supplemental_data != NULL) { + memset(p_supplemental_data, 0, sizeof(supplemental_data_size)); + } + //Just print error in sample + // + else { + printf("\tError: Cannot allocate memory for supplemental data.\n"); + } } else { if (dcap_ret != SGX_QL_SUCCESS) @@ -351,6 +370,10 @@ int ecdsa_quote_verification(vector quote, bool use_qve) } + if (p_supplemental_data) { + free(p_supplemental_data); + } + if (eid) { sgx_destroy_enclave(eid); } diff --git a/SampleCode/QuoteVerificationSample/README.md b/SampleCode/QuoteVerificationSample/README.md index 15968a1f..072314f0 100644 --- a/SampleCode/QuoteVerificationSample/README.md +++ b/SampleCode/QuoteVerificationSample/README.md @@ -40,7 +40,7 @@ Prerequisite: $ make SGX_DEBUG=1 $ ./app -quote ``` - +**Note**: Our libdcap_quoteprov.so is not built with Intel(R) Control Flow Enforcement Technology(CET) feature. If the sample is built with CET feature(it can be enabled by the compiler's default setting) and it is running on a CET enabled platform, you may encounter such an error message(or something similar): "Couldn't find the platform library. rebuild shared object with SHSTK support enabled". It means the system glibc enforces that a CET-enabled application can't load a non-CET shared library. You need to rebuild the sample by adding -fcf-protection=none option explicitly to disable CET. ## Windows Supported operating systems: diff --git a/SampleCode/RustQuoteVerificationSample/.gitignore b/SampleCode/RustQuoteVerificationSample/.gitignore new file mode 100644 index 00000000..96ef6c0b --- /dev/null +++ b/SampleCode/RustQuoteVerificationSample/.gitignore @@ -0,0 +1,2 @@ +/target +Cargo.lock diff --git a/SampleCode/RustQuoteVerificationSample/Cargo.toml b/SampleCode/RustQuoteVerificationSample/Cargo.toml new file mode 100644 index 00000000..5131d88b --- /dev/null +++ b/SampleCode/RustQuoteVerificationSample/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "app" +version = "0.1.0" +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +sgx-dcap-quoteverify-rs = { path = "../../QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-rs"} +sgx-dcap-quoteverify-sys = { path = "../../QuoteVerification/dcap_quoteverify/sgx-dcap-quoteverify-sys"} +clap = "2.34" diff --git a/SampleCode/RustQuoteVerificationSample/README.md b/SampleCode/RustQuoteVerificationSample/README.md new file mode 100644 index 00000000..c8751f94 --- /dev/null +++ b/SampleCode/RustQuoteVerificationSample/README.md @@ -0,0 +1,72 @@ +Intel(R) Software Guard Extensions Data Center Attestation Primitives (Intel(R) SGX DCAP) Rust Quote Verification SampleCode +================================================ + +## Linux +Supported operating systems: +* Ubuntu* 18.04 LTS Desktop 64bits +* Ubuntu* 18.04 LTS Server 64bits +* Ubuntu* 20.04 LTS Server 64bits +* Red Hat Enterprise Linux Server release 8.2 64bits +* CentOS 8.2 64bits + +Requirements: +* make +* gcc +* g++ +* bash shell +* clang +* Rust and Cargo + +Prerequisite: +* Intel(R) SGX DCAP Driver +* Intel(R) SGX SDK +* Intel(R) SGX DCAP Packages +* Intel(R) SGX DCAP PCCS (Provisioning Certificate Caching Service) + +*Please refer to SGX DCAP Linux installation guide "https://download.01.org/intel-sgx/sgx-dcap/#version#/linux/docs/Intel_SGX_DCAP_Linux_SW_Installation_Guide.pdf" to install above dependencies*
+*Note that you need to change **\#version\#** to actual version number in URL, such as 1.4.*
+*Note that you need to install **libsgx-dcap-quote-verify-dev** for this package.* + +1. Generate an ECDSA quote with certification data of type 5 using *QuoteGenerationSample* +``` + $ cd ../QuoteGenerationSample/ + $ make + $ ./app +``` + +2. Build and run *RustQuoteVerificationSample* to verify a given quote + + Trusted quote verification is processed inside the Intel(R) QvE. In this sample, we borrowed enclave from [QuoteVerificationSample](../QuoteVerificationSample) to perform quote verification. + + Go to *QuoteVerificationSample* and build *enclave.signed.so*. + ``` + $ cd ../QuoteVerificationSample/ + $ make SGX_DEBUG=1 + ``` + + Go back to *RustQuoteVerificationSample* and build static library for *Enclave_u.o*. + ``` + $ cd ../RustQuoteVerificationSample/ + $ ar rs libenclave_untrusted.a ../QuoteVerificationSample/App/Enclave_u.o + ``` + + + Build the and run with default quote path: + ``` + $ cargo build + $ ./target/debug/app + ``` + + Or run with specified quote path: + + ``` + $ ./target/debug/app --quote + ``` + You can also combine building and running with a single Cargo command: + ``` + $ cargo run + ``` + and to specify quote path: + ``` + $ cargo run -- --quote + ``` diff --git a/SampleCode/RustQuoteVerificationSample/build.rs b/SampleCode/RustQuoteVerificationSample/build.rs new file mode 100644 index 00000000..c721f649 --- /dev/null +++ b/SampleCode/RustQuoteVerificationSample/build.rs @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +fn main() { + println!(r"cargo:rustc-link-search=."); +} \ No newline at end of file diff --git a/SampleCode/RustQuoteVerificationSample/src/main.rs b/SampleCode/RustQuoteVerificationSample/src/main.rs new file mode 100644 index 00000000..eb1b61ab --- /dev/null +++ b/SampleCode/RustQuoteVerificationSample/src/main.rs @@ -0,0 +1,342 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +use clap::{Arg, App}; +use std::mem::size_of; +use std::convert::TryInto; +use std::time::SystemTime; + +use sgx_dcap_quoteverify_rs as qvl; +use sgx_dcap_quoteverify_sys as qvl_sys; + + +#[cfg(debug_assertions)] +const SGX_DEBUG_FLAG: i32 = 1; +#[cfg(not(debug_assertions))] +const SGX_DEBUG_FLAG: i32 = 0; + +const SAMPLE_ISV_ENCLAVE: &str = "../QuoteVerificationSample/enclave.signed.so\0"; +const DEFAULT_QUOTE: &str = "../QuoteGenerationSample/quote.dat"; + + +// C library bindings + +#[link(name = "sgx_urts")] +extern { + fn sgx_create_enclave(file_name: *const u8, + debug: i32, + launch_token: *mut [u8; 1024usize], + launch_token_updated: *mut i32, + enclave_id: *mut u64, + misc_attr: *mut qvl_sys::sgx_misc_attribute_t) -> u32; + fn sgx_destroy_enclave(enclave_id: u64) -> u32; +} + +#[link(name = "enclave_untrusted")] +extern { + fn ecall_get_target_info(eid: u64, retval: *mut u32, target_info: *mut qvl_sys::sgx_target_info_t) -> u32; + fn sgx_tvl_verify_qve_report_and_identity(eid: u64, retval: *mut qvl::quote3_error_t, + p_quote: *const u8, quote_size: u32, + p_qve_report_info: *const qvl::sgx_ql_qe_report_info_t, + expiration_check_date: i64, + collateral_expiration_status: u32, + quote_verification_result: qvl::sgx_ql_qv_result_t, + p_supplemental_data: *const u8, + supplemental_data_size: u32, + qve_isvsvn_threshold: qvl_sys::sgx_isv_svn_t) -> u32; +} + + +/// Quote verification with QvE/QVL +/// +/// # Param +/// - **quote**\ +/// ECDSA quote buffer. +/// - **use_qve**\ +/// Set quote verification mode.\ +/// - If true, quote verification will be performed by Intel QvE. +/// - If false, quote verification will be performed by untrusted QVL. +/// +fn ecdsa_quote_verification(quote: &[u8], use_qve: bool) { + + let mut supplemental_data_size = 0u32; // mem::zeroed() is safe as long as the struct doesn't have zero-invalid types, like pointers + let mut supplemental_data: qvl::sgx_ql_qv_supplemental_t = unsafe { std::mem::zeroed() }; + let mut quote_verification_result = qvl::sgx_ql_qv_result_t::SGX_QL_QV_RESULT_UNSPECIFIED; + let mut qve_report_info: qvl::sgx_ql_qe_report_info_t = unsafe { std::mem::zeroed() }; + let rand_nonce = "59jslk201fgjmm;\0"; + let mut collateral_expiration_status = 1u32; + + let mut updated = 0i32; + let mut verify_qveid_ret = qvl::quote3_error_t::SGX_QL_ERROR_UNEXPECTED; + let mut eid: u64 = 0; + let mut token = [0u8; 1024usize]; + + if use_qve { + + // Trusted quote verification + + // set nonce + // + qve_report_info.nonce.rand.copy_from_slice(rand_nonce.as_bytes()); + + // get target info of SampleISVEnclave. QvE will target the generated report to this enclave. + // + let sgx_ret = unsafe { sgx_create_enclave(SAMPLE_ISV_ENCLAVE.as_ptr(), SGX_DEBUG_FLAG, + &mut token as *mut [u8; 1024usize], + &mut updated as *mut i32, + &mut eid as *mut u64, + std::ptr::null_mut()) }; + if sgx_ret != 0 { + println!("\tError: Can't load SampleISVEnclave: {:#04x}", sgx_ret); + return; + } + let mut get_target_info_ret = 1u32; + let sgx_ret = unsafe { ecall_get_target_info(eid, &mut get_target_info_ret as *mut u32, + &mut qve_report_info.app_enclave_target_info as *mut qvl_sys::sgx_target_info_t) }; + if sgx_ret != 0 || get_target_info_ret != 0 { + println!("\tError in sgx_get_target_info. {:#04x}", get_target_info_ret); + } else { + println!("\tInfo: get target info successfully returned."); + } + + // call DCAP quote verify library to set QvE loading policy + // + let dcap_ret = qvl::sgx_qv_set_enclave_load_policy(qvl::sgx_ql_request_policy_t::SGX_QL_DEFAULT); + if qvl::quote3_error_t::SGX_QL_SUCCESS == dcap_ret { + println!("\tInfo: sgx_qv_set_enclave_load_policy successfully returned."); + } else { + println!("\tError: sgx_qv_set_enclave_load_policy failed: {:#04x}", dcap_ret as u32); + } + + // call DCAP quote verify library to get supplemental data size + // + let dcap_ret = qvl::sgx_qv_get_quote_supplemental_data_size(&mut supplemental_data_size); + if qvl::quote3_error_t::SGX_QL_SUCCESS == dcap_ret && std::mem::size_of::() as u32 == supplemental_data_size { + println!("\tInfo: sgx_qv_get_quote_supplemental_data_size successfully returned."); + } else { + if dcap_ret != qvl::quote3_error_t::SGX_QL_SUCCESS { + println!("\tError: sgx_qv_get_quote_supplemental_data_size failed: {:#04x}", dcap_ret as u32); + } + if supplemental_data_size != size_of::().try_into().unwrap() { + println!("\tWarning: Quote supplemental data size is different between DCAP QVL and QvE, please make sure you installed DCAP QVL and QvE from same release."); + } + supplemental_data_size = 0u32; + } + + // set current time. This is only for sample purposes, in production mode a trusted time should be used. + // + let current_time: i64 = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap().as_secs().try_into().unwrap(); + + let p_supplemental_data = match supplemental_data_size { + 0 => None, + _ => Some(&mut supplemental_data), + }; + + + // call DCAP quote verify library for quote verification + // here you can choose 'trusted' or 'untrusted' quote verification by specifying parameter '&qve_report_info' + // if '&qve_report_info' is NOT NULL, this API will call Intel QvE to verify quote + // if '&qve_report_info' is NULL, this API will call 'untrusted quote verify lib' to verify quote, this mode doesn't rely on SGX capable system, but the results can not be cryptographically authenticated + let dcap_ret = qvl::sgx_qv_verify_quote( + quote, + None, + current_time, + &mut collateral_expiration_status, + &mut quote_verification_result, + Some(&mut qve_report_info), + supplemental_data_size, + p_supplemental_data); + if qvl::quote3_error_t::SGX_QL_SUCCESS == dcap_ret { + println!("\tInfo: App: sgx_qv_verify_quote successfully returned."); + } else { + println!("\tError: App: sgx_qv_verify_quote failed: {:#04x}", dcap_ret as u32); + } + + + // Threshold of QvE ISV SVN. The ISV SVN of QvE used to verify quote must be greater or equal to this threshold + // e.g. You can get latest QvE ISVSVN in QvE Identity JSON file from + // https://api.trustedservices.intel.com/sgx/certification/v2/qve/identity + // Make sure you are using trusted & latest QvE ISV SVN as threshold + // + let qve_isvsvn_threshold: qvl_sys::sgx_isv_svn_t = 5; + + let p_supplemental_data = match supplemental_data_size { + 0 => std::ptr::null(), + _ => &supplemental_data as *const qvl::sgx_ql_qv_supplemental_t as *const u8, + }; + + // call sgx_dcap_tvl API in SampleISVEnclave to verify QvE's report and identity + // + let sgx_ret = unsafe { sgx_tvl_verify_qve_report_and_identity(eid, &mut verify_qveid_ret as *mut qvl::quote3_error_t, + quote.as_ptr(), quote.len() as u32, + &qve_report_info as *const qvl::sgx_ql_qe_report_info_t, + current_time, + collateral_expiration_status, + quote_verification_result, + p_supplemental_data, + supplemental_data_size, + qve_isvsvn_threshold) }; + if sgx_ret != 0 || verify_qveid_ret != qvl::quote3_error_t::SGX_QL_SUCCESS { + println!("\tError: Ecall: Verify QvE report and identity failed. {:#04x}", verify_qveid_ret as u32); + } else { + println!("\tInfo: Ecall: Verify QvE report and identity successfully returned.") + } + + unsafe { sgx_destroy_enclave(eid) }; + + } else { + + // Untrusted quote verification + + // call DCAP quote verify library to get supplemental data size + // + let dcap_ret = qvl::sgx_qv_get_quote_supplemental_data_size(&mut supplemental_data_size); + if qvl::quote3_error_t::SGX_QL_SUCCESS == dcap_ret && std::mem::size_of::() as u32 == supplemental_data_size { + println!("\tInfo: sgx_qv_get_quote_supplemental_data_size successfully returned."); + } else { + if dcap_ret != qvl::quote3_error_t::SGX_QL_SUCCESS { + println!("\tError: sgx_qv_get_quote_supplemental_data_size failed: {:#04x}", dcap_ret as u32); + } + if supplemental_data_size != size_of::().try_into().unwrap() { + println!("\tWarning: Quote supplemental data size is different between DCAP QVL and QvE, please make sure you installed DCAP QVL and QvE from same release."); + } + supplemental_data_size = 0u32; + } + + // set current time. This is only for sample purposes, in production mode a trusted time should be used. + // + let current_time: i64 = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap().as_secs().try_into().unwrap(); + + let p_supplemental_data = match supplemental_data_size { + 0 => None, + _ => Some(&mut supplemental_data), + }; + + + // call DCAP quote verify library for quote verification + // here you can choose 'trusted' or 'untrusted' quote verification by specifying parameter '&qve_report_info' + // if '&qve_report_info' is NOT NULL, this API will call Intel QvE to verify quote + // if '&qve_report_info' is NULL, this API will call 'untrusted quote verify lib' to verify quote, this mode doesn't rely on SGX capable system, but the results can not be cryptographically authenticated + let dcap_ret = qvl::sgx_qv_verify_quote( + quote, + None, + current_time, + &mut collateral_expiration_status, + &mut quote_verification_result, + None, + supplemental_data_size, + p_supplemental_data); + if qvl::quote3_error_t::SGX_QL_SUCCESS == dcap_ret { + println!("\tInfo: App: sgx_qv_verify_quote successfully returned."); + } else { + println!("\tError: App: sgx_qv_verify_quote failed: {:#04x}", dcap_ret as u32); + } + + } + + // check verification result + // + match quote_verification_result { + qvl::sgx_ql_qv_result_t::SGX_QL_QV_RESULT_OK => { + // check verification collateral expiration status + // this value should be considered in your own attestation/verification policy + // + if 0u32 == collateral_expiration_status { + println!("\tInfo: App: Verification completed successfully."); + } else { + println!("\tWarning: App: Verification completed, but collateral is out of date based on 'expiration_check_date' you provided."); + } + }, + qvl::sgx_ql_qv_result_t::SGX_QL_QV_RESULT_CONFIG_NEEDED | + qvl::sgx_ql_qv_result_t::SGX_QL_QV_RESULT_OUT_OF_DATE | + qvl::sgx_ql_qv_result_t::SGX_QL_QV_RESULT_OUT_OF_DATE_CONFIG_NEEDED | + qvl::sgx_ql_qv_result_t::SGX_QL_QV_RESULT_SW_HARDENING_NEEDED | + qvl::sgx_ql_qv_result_t::SGX_QL_QV_RESULT_CONFIG_AND_SW_HARDENING_NEEDED => { + println!("\tWarning: App: Verification completed with Non-terminal result: {:x}", quote_verification_result as u32); + }, + qvl::sgx_ql_qv_result_t::SGX_QL_QV_RESULT_INVALID_SIGNATURE | + qvl::sgx_ql_qv_result_t::SGX_QL_QV_RESULT_REVOKED | + qvl::sgx_ql_qv_result_t::SGX_QL_QV_RESULT_UNSPECIFIED | _ => { + println!("\tError: App: Verification completed with Terminal result: {:x}", quote_verification_result as u32); + }, + } + + // check supplemental data if necessary + // + if supplemental_data_size > 0 { + + // you can check supplemental data based on your own attestation/verification policy + // here we only print supplemental data version for demo usage + // + println!("\tInfo: Supplemental data version: {}", supplemental_data.version); + } +} + + +fn main() { + // Specify quote path from command line arguments + // + let matches = App::new("Rust Quote Verification Sample App:") + .version("1.0") + .arg(Arg::with_name("quote_path") + .long("quote") + .value_name("FILE") + .help(format!("Specify quote path, default is {}", DEFAULT_QUOTE).as_str())) + .get_matches(); + let quote_path = matches.value_of("quote_path").unwrap_or(DEFAULT_QUOTE); + + //read quote from file + // + let quote = std::fs::read(quote_path).expect("Unable to read quote file"); + + println!("Info: ECDSA quote path: {}", quote_path); + + + // We demonstrate two different types of quote verification + // a. Trusted quote verification - quote will be verified by Intel QvE + // b. Untrusted quote verification - quote will be verified by untrusted QVL (Quote Verification Library) + // this mode doesn't rely on SGX capable system, but the results can not be cryptographically authenticated + // + + // Trusted quote verification, ignore error checking + // + println!("\nTrusted quote verification:"); + ecdsa_quote_verification("e, true); + + println!("\n==========================================="); + + // Unrusted quote verification, ignore error checking + // + println!("\nUntrusted quote verification:"); + ecdsa_quote_verification("e, false); + + println!(); +} diff --git a/SampleCode/TDQuoteVerificationSample/App/App.cpp b/SampleCode/TDQuoteVerificationSample/App/App.cpp new file mode 100644 index 00000000..27126514 --- /dev/null +++ b/SampleCode/TDQuoteVerificationSample/App/App.cpp @@ -0,0 +1,409 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include +#include +#include "sgx_urts.h" +#include +#ifdef TRUSTED_VERIFY +#include +#include "Enclave_u.h" +#endif +#include "sgx_ql_quote.h" +#include "sgx_dcap_quoteverify.h" + +#ifndef _MSC_VER + +#define SAMPLE_ISV_ENCLAVE "enclave.signed.so" +#define DEFAULT_QUOTE "../tdx-quote-generation-sample/quote.dat" + +#else + +#define SAMPLE_ISV_ENCLAVE "enclave.signed.dll" +#define DEFAULT_QUOTE "..\\..\\..\\TDQuoteGenerationSample\\x64\\Debug\\quote.dat" + +#define strncpy strncpy_s +#endif + + + +using namespace std; + + +vector readBinaryContent(const string& filePath) +{ + ifstream file(filePath, ios::binary); + if (!file.is_open()) + { + printf("Error: Unable to open quote file %s\n", filePath.c_str()); + return {}; + } + + file.seekg(0, ios_base::end); + streampos fileSize = file.tellg(); + + file.seekg(0, ios_base::beg); + vector retVal(fileSize); + file.read(reinterpret_cast(retVal.data()), fileSize); + file.close(); + return retVal; +} +#define PATHSIZE 0x418U + + +/** + * @param quote - ECDSA quote buffer + * @param use_qve - Set quote verification mode + * If true, quote verification will be performed by Intel QvE + * If false, quote verification will be performed by untrusted QVL + */ + +int ecdsa_quote_verification(vector quote, bool use_qve) +{ + int ret = 0; + time_t current_time = 0; + uint32_t supplemental_data_size = 0; + uint8_t *p_supplemental_data = NULL; + quote3_error_t dcap_ret = SGX_QL_ERROR_UNEXPECTED; + sgx_ql_qv_result_t quote_verification_result = SGX_QL_QV_RESULT_UNSPECIFIED; + uint32_t collateral_expiration_status = 1; + + +#ifdef TRUSTED_VERIFY + sgx_status_t sgx_ret = SGX_SUCCESS; + unsigned char rand_nonce[16] = "59jslk201fgjmm;"; + sgx_ql_qe_report_info_t qve_report_info; + sgx_launch_token_t token = { 0 }; + + int updated = 0; + quote3_error_t verify_qveid_ret = SGX_QL_ERROR_UNEXPECTED; + sgx_enclave_id_t eid = 0; + // Trusted quote verification + if (use_qve) { + + //set nonce + // + memcpy(qve_report_info.nonce.rand, rand_nonce, sizeof(rand_nonce)); + + //get target info of SampleISVEnclave. QvE will target the generated report to this enclave. + // + sgx_ret = sgx_create_enclave(SAMPLE_ISV_ENCLAVE, SGX_DEBUG_FLAG, &token, &updated, &eid, NULL); + if (sgx_ret != SGX_SUCCESS) { + printf("\tError: Failed to load Enclave, please make sure the environment is SGX capable(N.B SGX is not supported inside TD).\n"); + return -1; + } + sgx_status_t get_target_info_ret; + sgx_ret = ecall_get_target_info(eid, &get_target_info_ret, &qve_report_info.app_enclave_target_info); + if (sgx_ret != SGX_SUCCESS || get_target_info_ret != SGX_SUCCESS) { + printf("\tError in sgx_get_target_info. 0x%04x\n", get_target_info_ret); + } + else { + printf("\tInfo: get target info successfully returned.\n"); + } + + //call DCAP quote verify library to set QvE loading policy + // + dcap_ret = sgx_qv_set_enclave_load_policy(SGX_QL_DEFAULT); + if (dcap_ret == SGX_QL_SUCCESS) { + printf("\tInfo: sgx_qv_set_enclave_load_policy successfully returned.\n"); + } + else { + printf("\tError: sgx_qv_set_enclave_load_policy failed: 0x%04x\n", dcap_ret); + } + + + //call DCAP quote verify library to get supplemental data size + // + dcap_ret = tdx_qv_get_quote_supplemental_data_size(&supplemental_data_size); + if (dcap_ret == SGX_QL_SUCCESS) { + printf("\tInfo: tdx_qv_get_quote_supplemental_data_size successfully returned.\n"); + p_supplemental_data = (uint8_t*)malloc(supplemental_data_size); + if (p_supplemental_data != NULL) { + memset(p_supplemental_data, 0, sizeof(supplemental_data_size)); + } + //Just print error in sample + // + else { + printf("\tError: Cannot allocate memory for supplemental data.\n"); + } + } + else { + printf("\tError: tdx_qv_get_quote_supplemental_data_size failed: 0x%04x\n", dcap_ret); + supplemental_data_size = 0; + } + + //set current time. This is only for sample purposes, in production mode a trusted time should be used. + // + current_time = time(NULL); + + + //call DCAP quote verify library for quote verification + //here you can choose 'trusted' or 'untrusted' quote verification by specifying parameter '&qve_report_info' + //if '&qve_report_info' is NOT NULL, this API will call Intel QvE to verify quote + //if '&qve_report_info' is NULL, this API will call 'untrusted quote verify lib' to verify quote, this mode doesn't rely on SGX capable system, but the results can not be cryptographically authenticated + dcap_ret = tdx_qv_verify_quote( + quote.data(), (uint32_t)quote.size(), + NULL, + current_time, + &collateral_expiration_status, + "e_verification_result, + &qve_report_info, + supplemental_data_size, + p_supplemental_data); + if (dcap_ret == SGX_QL_SUCCESS) { + printf("\tInfo: App: tdx_qv_verify_quote successfully returned.\n"); + } else { + printf("\tError: App: tdx_qv_verify_quote failed: 0x%04x\n", dcap_ret); + } + + + // Threshold of QvE ISV SVN. The ISV SVN of QvE used to verify quote must be greater or equal to this threshold + // e.g. You can get latest QvE ISVSVN in QvE Identity JSON file from + // https://api.trustedservices.intel.com/sgx/certification/v4/qve/identity + // Make sure you are using trusted & latest QvE ISV SVN as threshold + // + sgx_isv_svn_t qve_isvsvn_threshold = 5; + + //call sgx_dcap_tvl API in SampleISVEnclave to verify QvE's report and identity + // + sgx_ret = sgx_tvl_verify_qve_report_and_identity(eid, + &verify_qveid_ret, + quote.data(), + (uint32_t) quote.size(), + &qve_report_info, + current_time, + collateral_expiration_status, + quote_verification_result, + p_supplemental_data, + supplemental_data_size, + qve_isvsvn_threshold); + + if (sgx_ret != SGX_SUCCESS || verify_qveid_ret != SGX_QL_SUCCESS) { + printf("\tError: Ecall: Verify QvE report and identity failed. 0x%04x\n", verify_qveid_ret); + } + else { + printf("\tInfo: Ecall: Verify QvE report and identity successfully returned.\n"); + } + + //check verification result + // + switch (quote_verification_result) + { + case SGX_QL_QV_RESULT_OK: + //check verification collateral expiration status + //this value should be considered in your own attestation/verification policy + // + if (collateral_expiration_status == 0) { + printf("\tInfo: App: Verification completed successfully.\n"); + ret = 0; + } + else { + printf("\tWarning: App: Verification completed, but collateral is out of date based on 'expiration_check_date' you provided.\n"); + ret = 1; + } + break; + case SGX_QL_QV_RESULT_CONFIG_NEEDED: + case SGX_QL_QV_RESULT_OUT_OF_DATE: + case SGX_QL_QV_RESULT_OUT_OF_DATE_CONFIG_NEEDED: + case SGX_QL_QV_RESULT_SW_HARDENING_NEEDED: + case SGX_QL_QV_RESULT_CONFIG_AND_SW_HARDENING_NEEDED: + printf("\tWarning: App: Verification completed with Non-terminal result: %x\n", quote_verification_result); + ret = 1; + break; + case SGX_QL_QV_RESULT_INVALID_SIGNATURE: + case SGX_QL_QV_RESULT_REVOKED: + case SGX_QL_QV_RESULT_UNSPECIFIED: + default: + printf("\tError: App: Verification completed with Terminal result: %x\n", quote_verification_result); + ret = -1; + break; + } + } + + + + // Untrusted quote verification + else { +#endif + //call DCAP quote verify library to get supplemental data size + // + (void)(use_qve); + dcap_ret = tdx_qv_get_quote_supplemental_data_size(&supplemental_data_size); + if (dcap_ret == SGX_QL_SUCCESS && supplemental_data_size == sizeof(sgx_ql_qv_supplemental_t)) { + printf("\tInfo: tdx_qv_get_quote_supplemental_data_size successfully returned.\n"); + p_supplemental_data = (uint8_t*)malloc(supplemental_data_size); + if (p_supplemental_data != NULL) { + memset(p_supplemental_data, 0, sizeof(supplemental_data_size)); + } + //Just print error in sample + // + else { + printf("\tError: Cannot allocate memory for supplemental data.\n"); + } + } + else { + printf("\tError: tdx_qv_get_quote_supplemental_data_size failed: 0x%04x\n", dcap_ret); + supplemental_data_size = 0; + } + + //set current time. This is only for sample purposes, in production mode a trusted time should be used. + // + current_time = time(NULL); + + + //call DCAP quote verify library for quote verification + dcap_ret = tdx_qv_verify_quote( + quote.data(), (uint32_t)quote.size(), + NULL, + current_time, + &collateral_expiration_status, + "e_verification_result, + NULL, + supplemental_data_size, + p_supplemental_data); + if (dcap_ret == SGX_QL_SUCCESS) { + printf("\tInfo: App: tdx_qv_verify_quote successfully returned.\n"); + } + else { + printf("\tError: App: tdx_qv_verify_quote failed: 0x%04x\n", dcap_ret); + } + + //check verification result + switch (quote_verification_result) + { + case SGX_QL_QV_RESULT_OK: + //check verification collateral expiration status + //this value should be considered in your own attestation/verification policy + // + if (collateral_expiration_status == 0) { + printf("\tInfo: App: Verification completed successfully.\n"); + ret = 0; + } + else { + printf("\tWarning: App: Verification completed, but collateral is out of date based on 'expiration_check_date' you provided.\n"); + ret = 1; + } + break; + case SGX_QL_QV_RESULT_CONFIG_NEEDED: + case SGX_QL_QV_RESULT_OUT_OF_DATE: + case SGX_QL_QV_RESULT_OUT_OF_DATE_CONFIG_NEEDED: + case SGX_QL_QV_RESULT_SW_HARDENING_NEEDED: + case SGX_QL_QV_RESULT_CONFIG_AND_SW_HARDENING_NEEDED: + printf("\tWarning: App: Verification completed with Non-terminal result: %x\n", quote_verification_result); + ret = 1; + break; + case SGX_QL_QV_RESULT_INVALID_SIGNATURE: + case SGX_QL_QV_RESULT_REVOKED: + case SGX_QL_QV_RESULT_UNSPECIFIED: + default: + printf("\tError: App: Verification completed with Terminal result: %x\n", quote_verification_result); + ret = -1; + break; + } + +#ifdef TRUSTED_VERIFY + } + + + if (eid) { + sgx_destroy_enclave(eid); + } +#endif + + if (p_supplemental_data) { + free(p_supplemental_data); + } + + return ret; +} + + +void usage() +{ + printf("\nUsage:\n"); + printf("\tPlease specify quote path, e.g. \"./app -quote \"\n"); + printf("\tDefault quote path is %s when no command line args\n\n", DEFAULT_QUOTE); +} + + +/* Application entry */ +int main(int argc, char *argv[]) +{ + vector quote; + + char quote_path[PATHSIZE] = { '\0' }; + + //Just for sample use, better to change solid command line args solution in production env + if (argc != 1 && argc != 3) { + usage(); + return 0; + } + + if (argv[1] && argv[2]) { + if (!strcmp(argv[1], "-quote")) { + strncpy(quote_path, argv[2], PATHSIZE-1); + quote_path[PATHSIZE-1]= '\0'; + } + } + + if (*quote_path == '\0') { + strncpy(quote_path, DEFAULT_QUOTE, PATHSIZE-1); + quote_path[PATHSIZE-1]= '\0'; + } + + //read quote from file + quote = readBinaryContent(quote_path); + if (quote.empty()) { + usage(); + return -1; + } + + printf("Info: ECDSA quote path: %s\n", quote_path); +#ifdef TRUSTED_VERIFY + // Trusted quote verification, ignore error checking + printf("\nTrusted quote verification:\n"); + ecdsa_quote_verification(quote, true); + + printf("\n===========================================\n"); +#endif + + + // quote verification, ignore error checking + printf("\nUntrusted quote verification:\n"); + ecdsa_quote_verification(quote, false); + + printf("\n"); + + return 0; +} diff --git a/SampleCode/TDQuoteVerificationSample/Enclave/Enclave.config.xml b/SampleCode/TDQuoteVerificationSample/Enclave/Enclave.config.xml new file mode 100644 index 00000000..e94c9bc5 --- /dev/null +++ b/SampleCode/TDQuoteVerificationSample/Enclave/Enclave.config.xml @@ -0,0 +1,12 @@ + + 0 + 0 + 0x40000 + 0x100000 + 10 + 1 + + 0 + 0 + 0xFFFFFFFF + diff --git a/SampleCode/TDQuoteVerificationSample/Enclave/Enclave.cpp b/SampleCode/TDQuoteVerificationSample/Enclave/Enclave.cpp new file mode 100644 index 00000000..29fad8d4 --- /dev/null +++ b/SampleCode/TDQuoteVerificationSample/Enclave/Enclave.cpp @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "Enclave_t.h" /* print_string */ +#include +#include /* vsnprintf */ +#include +#include "sgx_utils.h" + + +sgx_status_t ecall_get_target_info(sgx_target_info_t* target_info) { + return sgx_self_target(target_info); +} diff --git a/SampleCode/TDQuoteVerificationSample/Enclave/Enclave.edl b/SampleCode/TDQuoteVerificationSample/Enclave/Enclave.edl new file mode 100644 index 00000000..059f143d --- /dev/null +++ b/SampleCode/TDQuoteVerificationSample/Enclave/Enclave.edl @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +/* Enclave.edl - Top EDL file. */ + +enclave { + + from "sgx_tstdc.edl" import *; + from "sgx_dcap_tvl.edl" import *; + + /* Import ECALL/OCALL from sub-directory EDLs. + * [from]: specifies the location of EDL file. + * [import]: specifies the functions to import, + * [*]: implies to import all functions. + */ + + + trusted { + + public sgx_status_t ecall_get_target_info([out] sgx_target_info_t* target_info); + + }; + +}; diff --git a/SampleCode/TDQuoteVerificationSample/Enclave/Enclave.lds b/SampleCode/TDQuoteVerificationSample/Enclave/Enclave.lds new file mode 100644 index 00000000..f5f35d5b --- /dev/null +++ b/SampleCode/TDQuoteVerificationSample/Enclave/Enclave.lds @@ -0,0 +1,10 @@ +enclave.so +{ + global: + g_global_data_sim; + g_global_data; + enclave_entry; + g_peak_heap_used; + local: + *; +}; diff --git a/SampleCode/TDQuoteVerificationSample/Enclave/Enclave_private_sample.pem b/SampleCode/TDQuoteVerificationSample/Enclave/Enclave_private_sample.pem new file mode 100644 index 00000000..529d07be --- /dev/null +++ b/SampleCode/TDQuoteVerificationSample/Enclave/Enclave_private_sample.pem @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/SampleCode/TDQuoteVerificationSample/Makefile b/SampleCode/TDQuoteVerificationSample/Makefile new file mode 100644 index 00000000..3b7ba806 --- /dev/null +++ b/SampleCode/TDQuoteVerificationSample/Makefile @@ -0,0 +1,267 @@ +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + +######## SGX SDK Settings ######## + +SGX_SDK ?= /opt/intel/sgxsdk +SGX_MODE ?= HW +SGX_ARCH ?= x64 +DEBUG ?= 0 +UNTRUSTED_VERIFY ?= 0 + +# Don't support 32bit in this sample +SGX_COMMON_FLAGS := -m64 +SGX_LIBRARY_PATH := $(SGX_SDK)/lib64 +SGX_ENCLAVE_SIGNER := $(SGX_SDK)/bin/x64/sgx_sign +SGX_EDGER8R := $(SGX_SDK)/bin/x64/sgx_edger8r + +ifeq ($(DEBUG), 1) +ifeq ($(SGX_PRERELEASE), 1) +$(error Cannot set DEBUG and SGX_PRERELEASE at the same time!!) +endif +endif + +ifeq ($(DEBUG), 1) + SGX_COMMON_FLAGS += -O0 -g3 -ggdb +else + SGX_COMMON_FLAGS += -O2 +endif + +SGX_COMMON_FLAGS += -DSGX_TRUSTED -Wall -Wextra -Winit-self -Wpointer-arith -Wreturn-type \ + -Waddress -Wsequence-point -Wformat-security \ + -Wmissing-include-dirs -Wfloat-equal -Wundef -Wshadow \ + -Wcast-align -Wcast-qual -Wconversion -Wredundant-decls +SGX_COMMON_CFLAGS := $(SGX_COMMON_FLAGS) -Wjump-misses-init -Wstrict-prototypes -Wunsuffixed-float-constants +SGX_COMMON_CXXFLAGS := $(SGX_COMMON_FLAGS) -Wnon-virtual-dtor -std=c++11 + +######## App Settings ######## +ifneq ($(SGX_MODE), HW) + Urts_Library_Name := sgx_urts_sim +else + Urts_Library_Name := sgx_urts +endif + +App_Cpp_Files := App/App.cpp +App_Include_Paths := -IApp + +ifeq ($(UNTRUSTED_VERIFY), 0) +App_Include_Paths += -I$(SGX_SDK)/include +endif + + +App_C_Flags := -fPIC -Wno-attributes $(App_Include_Paths) + +# Three configuration modes - Debug, prerelease, release +# Debug - Macro DEBUG enabled. +# Prerelease - Macro NDEBUG and EDEBUG enabled. +# Release - Macro NDEBUG enabled. +ifeq ($(DEBUG), 1) + App_C_Flags += -DDEBUG -UNDEBUG -UEDEBUG +else ifeq ($(SGX_PRERELEASE), 1) + App_C_Flags += -DNDEBUG -DEDEBUG -UDEBUG +else + App_C_Flags += -DNDEBUG -UEDEBUG -UDEBUG +endif + +App_Cpp_Flags := $(App_C_Flags) +App_Link_Flags := -L$(SGX_LIBRARY_PATH) -lsgx_dcap_quoteverify -l$(Urts_Library_Name) -lpthread -ldl + + +App_Cpp_Objects := $(App_Cpp_Files:.cpp=.o) + +App_Name := app + +######## Enclave Settings ######## + +ifneq ($(SGX_MODE), HW) + Trts_Library_Name := sgx_trts_sim + Service_Library_Name := sgx_tservice_sim +else + Trts_Library_Name := sgx_trts + Service_Library_Name := sgx_tservice +endif +Crypto_Library_Name := sgx_tcrypto +DCAP_DIR ?= ../../ +DCAP_QG_DIR ?= $(DCAP_DIR)/QuoteGeneration/ + +Enclave_Cpp_Files := Enclave/Enclave.cpp +Enclave_Include_Paths := -IEnclave -I$(SGX_SDK)/include -I$(SGX_SDK)/include/tlibc -I$(SGX_SDK)/include/libcxx + +Enclave_C_Flags := $(Enclave_Include_Paths) -nostdinc -fvisibility=hidden -fpie -ffunction-sections -fdata-sections +CC_BELOW_4_9 := $(shell expr "`$(CC) -dumpversion`" \< "4.9") +ifeq ($(CC_BELOW_4_9), 1) + Enclave_C_Flags += -fstack-protector +else + Enclave_C_Flags += -fstack-protector-strong +endif + +Enclave_Cpp_Flags := $(Enclave_C_Flags) -nostdinc++ + +# Enable the security flags +Enclave_Security_Link_Flags := -Wl,-z,relro,-z,now,-z,noexecstack + +# To generate a proper enclave, it is recommended to follow below guideline to link the trusted libraries: +# 1. Link sgx_trts with the `--whole-archive' and `--no-whole-archive' options, +# so that the whole content of trts is included in the enclave. +# 2. For other libraries, you just need to pull the required symbols. +# Use `--start-group' and `--end-group' to link these libraries. +# Do NOT move the libraries linked with `--start-group' and `--end-group' within `--whole-archive' and `--no-whole-archive' options. +# Otherwise, you may get some undesirable errors. +Enclave_Link_Flags := $(Enclave_Security_Link_Flags) -fPIC \ + -Wl,--no-undefined -nostdlib -nodefaultlibs -nostartfiles -L$(SGX_LIBRARY_PATH) \ + -Wl,--whole-archive -lsgx_dcap_tvl -l$(Trts_Library_Name) -Wl,--no-whole-archive \ + -Wl,--start-group -lsgx_tstdc -lsgx_tcxx -l$(Crypto_Library_Name) -l$(Service_Library_Name) -Wl,--end-group \ + -Wl,-Bstatic -Wl,-Bsymbolic -Wl,--no-undefined \ + -Wl,-pie,-eenclave_entry -Wl,--export-dynamic \ + -Wl,--defsym,__ImageBase=0 -Wl,--gc-sections \ + -Wl,--version-script=Enclave/Enclave.lds + +Enclave_Cpp_Objects := $(sort $(Enclave_Cpp_Files:.cpp=.o)) + +Enclave_Name := enclave.so +Signed_Enclave_Name := enclave.signed.so +Enclave_Config_File := Enclave/Enclave.config.xml + +ifeq ($(SGX_MODE), HW) +ifeq ($(DEBUG), 1) + Build_Mode = HW_DEBUG +else ifeq ($(SGX_PRERELEASE), 1) + Build_Mode = HW_PRERELEASE +else + Build_Mode = HW_RELEASE +endif +else +ifeq ($(DEBUG), 1) + Build_Mode = SIM_DEBUG +else ifeq ($(SGX_PRERELEASE), 1) + Build_Mode = SIM_PRERELEASE +else + Build_Mode = SIM_RELEASE +endif +endif + + +.PHONY: all target +ifeq ($(UNTRUSTED_VERIFY), 0) +all: .config_$(Build_Mode)_$(SGX_ARCH) + @$(MAKE) target + +ifeq ($(Build_Mode), HW_RELEASE) +target: $(App_Name) $(Enclave_Name) + @echo "The project has been built in release hardware mode." + @echo "Please sign the $(Enclave_Name) first with your signing key before you run the $(App_Name) to launch and access the enclave." + @echo "To sign the enclave use the command:" + @echo " $(SGX_ENCLAVE_SIGNER) sign -key -enclave $(Enclave_Name) -out <$(Signed_Enclave_Name)> -config $(Enclave_Config_File)" + @echo "You can also sign the enclave using an external signing tool." + @echo "To build the project in simulation mode set SGX_MODE=SIM. To build the project in prerelease mode set SGX_PRERELEASE=1 and SGX_MODE=HW." + + +else +target: $(App_Name) $(Signed_Enclave_Name) +ifeq ($(Build_Mode), HW_DEBUG) + @echo "The project has been built in debug hardware mode." +else ifeq ($(Build_Mode), SIM_DEBUG) + @echo "The project has been built in debug simulation mode." +else ifeq ($(Build_Mode), HW_PRERELEASE) + @echo "The project has been built in pre-release hardware mode." +else ifeq ($(Build_Mode), SIM_PRERELEASE) + @echo "The project has been built in pre-release simulation mode." +else + @echo "The project has been built in release simulation mode." +endif + +endif + + +.config_$(Build_Mode)_$(SGX_ARCH): + @rm -f .config_* $(App_Name) $(Enclave_Name) $(Signed_Enclave_Name) $(App_Cpp_Objects) App/Enclave_u.* $(Enclave_Cpp_Objects) Enclave/Enclave_t.* + @touch .config_$(Build_Mode)_$(SGX_ARCH) + +######## App Objects ######## + +App/Enclave_u.h: $(SGX_EDGER8R) Enclave/Enclave.edl + @cd App && $(SGX_EDGER8R) --untrusted ../Enclave/Enclave.edl --search-path ../Enclave --search-path $(SGX_SDK)/include + @echo "GEN => $@" + +App/Enclave_u.c: App/Enclave_u.h + +App/Enclave_u.o: App/Enclave_u.c + @$(CC) $(SGX_COMMON_CFLAGS) $(App_C_Flags) -c $< -o $@ + @echo "CC <= $<" + +App/%.o: App/%.cpp App/Enclave_u.h + @$(CXX) $(SGX_COMMON_CXXFLAGS) $(App_Cpp_Flags) -c $< -o $@ -DTRUSTED_VERIFY + @echo "CXX <= $<" + +$(App_Name): App/Enclave_u.o $(App_Cpp_Objects) + @$(CXX) $^ -o $@ $(App_Link_Flags) + @echo "LINK => $@" + +######## Enclave Objects ######## + +Enclave/Enclave_t.h: $(SGX_EDGER8R) Enclave/Enclave.edl + @cd Enclave && $(SGX_EDGER8R) --trusted ../Enclave/Enclave.edl --search-path ../Enclave --search-path $(SGX_SDK)/include + @echo "GEN => $@" + +Enclave/Enclave_t.c: Enclave/Enclave_t.h + +Enclave/Enclave_t.o: Enclave/Enclave_t.c + @$(CC) $(SGX_COMMON_CFLAGS) $(Enclave_C_Flags) -c $< -o $@ + @echo "CC <= $<" + +Enclave/%.o: Enclave/%.cpp Enclave/Enclave_t.h + @$(CXX) $(SGX_COMMON_CXXFLAGS) $(Enclave_Cpp_Flags) -c $< -o $@ + @echo "CXX <= $<" + +$(Enclave_Name): Enclave/Enclave_t.o $(Enclave_Cpp_Objects) + $(CXX) $^ -o $@ $(Enclave_Link_Flags) + echo "LINK => $@" + +$(Signed_Enclave_Name): $(Enclave_Name) + @$(SGX_ENCLAVE_SIGNER) sign -key Enclave/Enclave_private_sample.pem -enclave $(Enclave_Name) -out $@ -config $(Enclave_Config_File) + @echo "SIGN => $@" +else +all: + @$(MAKE) target +target: $(App_Name) +App/%.o: App/%.cpp + $(CXX) $(SGX_COMMON_CXXFLAGS) $(App_Cpp_Flags) -c $< -o $@ -UTRUSTED_VERIFY + @echo "CXX <= $<" + +$(App_Name): $(App_Cpp_Objects) + @$(CXX) $^ -o $@ $(App_Link_Flags) + @echo "LINK => $@" +endif + +.PHONY: clean + +clean: + @rm -f .config_* $(App_Name) $(Enclave_Name) $(Signed_Enclave_Name) $(App_Cpp_Objects) App/*_u.* $(Enclave_Cpp_Objects) Enclave/Enclave_t.* diff --git a/SampleCode/TDQuoteVerificationSample/README.md b/SampleCode/TDQuoteVerificationSample/README.md new file mode 100644 index 00000000..baf0b873 --- /dev/null +++ b/SampleCode/TDQuoteVerificationSample/README.md @@ -0,0 +1,44 @@ +Intel(R) Software Guard Extensions Data Center Attestation Primitives (Intel(R) SGX DCAP) Quote Verification SampleCode +================================================ + +## Linux +Supported operating systems: +* CentOS 8.3 64bits + +Requirements: +* make +* gcc +* g++ +* bash shell + +Prerequisite: +* Installed Intel(R) TDX DCAP Verfication Packages +* Installed Intel(R) Quote Generation Service Packages +* Installed Intel(R) SGX DCAP PCCS (Provisioning Certificate Caching Service) +* Intel(R) SGX DCAP Packages(only needed in trusted mode of quote verification) +If want verified quote in trusted mode +* Intel(R) SGX SDK + +*Please refer to SGX DCAP Linux installation guide "https://download.01.org/intel-sgx/sgx-dcap/#version#/linux/docs/Intel_SGX_DCAP_Linux_SW_Installation_Guide.pdf" to install above dependencies*
+*Note that you need to change **\#version\#** to actual version number in URL, such as 1.11.* + + +1. Generate an ECDSA quote with certification data of type 5 using this Quote Generation Sample Code +``` + $ cd /opt/intel/tdx-quote-generation-sample + $ make + $ ./test_tdx_attest +``` + +2. Build and run TD-based Quote Verification Sample to verify a given quote +``` + Untrusted mode build: + $ make UNTRUSTED_VERIFY=1 + Trused & Untrusted mode debug build: + $ make DEBUG=1 + $ ./app -quote
[default=../tdx-quote-generation-sample/quote.dat]> + Trused & Untrusted mode Release build: + $ make `#You need to sign ISV enclave with your own key in this mode` + $ ./app -quote [default=../tdx-quote-generation-sample/quote.dat]> +``` +**Note**: Our libdcap_quoteprov.so is not built with Intel(R) Control Flow Enforcement Technology(CET) feature. If the sample is built with CET feature(it can be enabled by the compiler's default setting) and it is running on a CET enabled platform, you may encounter such an error message(or something similar): "Couldn't find the platform library. rebuild shared object with SHSTK support enabled". It means the system glibc enforces that a CET-enabled application can't load a non-CET shared library. You need to rebuild the sample by adding -fcf-protection=none option explicitly to disable CET. diff --git a/driver/win/FLCMSR/FLCMSR.vcxproj b/driver/win/FLCMSR/FLCMSR.vcxproj index ad360281..5f209e18 100644 --- a/driver/win/FLCMSR/FLCMSR.vcxproj +++ b/driver/win/FLCMSR/FLCMSR.vcxproj @@ -73,11 +73,13 @@ true sgx_lc_msr true + true DbgengKernelDebugger sgx_lc_msr true + true diff --git a/driver/win/WinLe/WinLe.vcxproj b/driver/win/WinLe/WinLe.vcxproj index 59941fae..53a045a0 100644 --- a/driver/win/WinLe/WinLe.vcxproj +++ b/driver/win/WinLe/WinLe.vcxproj @@ -74,6 +74,7 @@ True 133563 + true DbgengKernelDebugger @@ -85,6 +86,7 @@ True 133563 + true diff --git a/driver/win/WinLeProxyUMDF/WinLeProxyUMDF.vcxproj b/driver/win/WinLeProxyUMDF/WinLeProxyUMDF.vcxproj index b2caa9ef..5574131c 100644 --- a/driver/win/WinLeProxyUMDF/WinLeProxyUMDF.vcxproj +++ b/driver/win/WinLeProxyUMDF/WinLeProxyUMDF.vcxproj @@ -82,12 +82,14 @@ $(IncludePath) $(LibraryPath) sgx_lc + true DbgengRemoteDebugger $(IncludePath) $(LibraryPath) sgx_lc + true diff --git a/prebuilt/openssl/inc/openssl/engine.h b/prebuilt/openssl/inc/openssl/engine.h index 0780f0fb..d707eaeb 100644 --- a/prebuilt/openssl/inc/openssl/engine.h +++ b/prebuilt/openssl/inc/openssl/engine.h @@ -1,5 +1,5 @@ /* - * Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the OpenSSL license (the "License"). You may not use @@ -722,6 +722,7 @@ typedef int (*dynamic_bind_engine) (ENGINE *e, const char *id, CRYPTO_set_mem_functions(fns->mem_fns.malloc_fn, \ fns->mem_fns.realloc_fn, \ fns->mem_fns.free_fn); \ + OPENSSL_init_crypto(OPENSSL_INIT_NO_ATEXIT, NULL); \ skip_cbs: \ if (!fn(e, id)) return 0; \ return 1; } diff --git a/prebuilt/openssl/inc/openssl/obj_mac.h b/prebuilt/openssl/inc/openssl/obj_mac.h index eb812ed1..53516a06 100644 --- a/prebuilt/openssl/inc/openssl/obj_mac.h +++ b/prebuilt/openssl/inc/openssl/obj_mac.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by crypto/objects/objects.pl * - * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy * in the file LICENSE in the source distribution or at diff --git a/prebuilt/openssl/inc/openssl/opensslconf.h b/prebuilt/openssl/inc/openssl/opensslconf.h index afea9cee..1398dd7b 100644 --- a/prebuilt/openssl/inc/openssl/opensslconf.h +++ b/prebuilt/openssl/inc/openssl/opensslconf.h @@ -1,6 +1,6 @@ /* * WARNING: do not edit! - * Generated by makefile from include\openssl\opensslconf.h.in + * Generated by Makefile from include/openssl/opensslconf.h.in * * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. * @@ -24,9 +24,6 @@ extern "C" { * OpenSSL was configured with the following options: */ -#ifndef OPENSSL_SYS_WIN64A -# define OPENSSL_SYS_WIN64A 1 -#endif #ifndef OPENSSL_NO_ARIA # define OPENSSL_NO_ARIA #endif @@ -102,6 +99,9 @@ extern "C" { #ifndef OPENSSL_NO_ASAN # define OPENSSL_NO_ASAN #endif +#ifndef OPENSSL_NO_ASM +# define OPENSSL_NO_ASM +#endif #ifndef OPENSSL_NO_AUTOERRINIT # define OPENSSL_NO_AUTOERRINIT #endif @@ -261,7 +261,7 @@ extern "C" { #undef OPENSSL_UNISTD #define OPENSSL_UNISTD -#define OPENSSL_EXPORT_VAR_AS_FUNCTION +#undef OPENSSL_EXPORT_VAR_AS_FUNCTION /* * The following are cipher-specific, but are part of the public API. @@ -269,8 +269,8 @@ extern "C" { #if !defined(OPENSSL_SYS_UEFI) # undef BN_LLONG /* Only one for the following should be defined */ -# undef SIXTY_FOUR_BIT_LONG -# define SIXTY_FOUR_BIT +# define SIXTY_FOUR_BIT_LONG +# undef SIXTY_FOUR_BIT # undef THIRTY_TWO_BIT #endif diff --git a/prebuilt/openssl/inc/openssl/opensslv.h b/prebuilt/openssl/inc/openssl/opensslv.h index 261d7cb3..bd9dc920 100644 --- a/prebuilt/openssl/inc/openssl/opensslv.h +++ b/prebuilt/openssl/inc/openssl/opensslv.h @@ -1,5 +1,5 @@ /* - * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -39,8 +39,8 @@ extern "C" { * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for * major minor fix final patch/beta) */ -# define OPENSSL_VERSION_NUMBER 0x101010dfL -# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1m 14 Dec 2021" +# define OPENSSL_VERSION_NUMBER 0x101010ffL +# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1o 3 May 2022" /*- * The macros below are to be used for shared library (.so, .dll, ...) diff --git a/prebuilt/openssl/lib/linux64/libcrypto.a b/prebuilt/openssl/lib/linux64/libcrypto.a index db5ca94bda6d9a8adf490f35737993f60c1aabd4..d8b79489a95ab1a28d96fb74b1edbb33dc9d0531 100644 GIT binary patch delta 549388 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 }6jFSrF)JNM<(DdWFwA3#12jn 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

&s->$B#F zbotCI=zx$Lf)NIY*;tX6InXMWJOTNgk%XR%C?kos99#NyJ_ffCAyNT_ZXu&Q5}|n;Y(aY&zPdzg*;X@;G~d?X)CbIXlgp9E zuPu`5NN~sCrQ(3aGEeMB9T4OVwU(*`T;<<95~Q#=x9ZOP+xdsaDll>V9!5vF+wRa)4mE1w8owXAaQx3f@?F z3dv-A5yK70saI$#XAzlMkyM=#RaS~yul7=@RDPR-&#_<-;D;G@WkP#Paxo)w zUMxeSADqyP_UhR+C?&a;=js0oq}TfPmTL&<^~y^_dOg~~QVsV}!@FG-o5FyNVq`~) z-uYq!uIMeSe=$~w^RLucM7K259eA^&rN+RO?!}lqESad9B{4(AztwOZP2fM=n5URM zPqzjt@-1%}gx2WR63@9+8) z?AKAjOjTs88wT?dDv*Hbceb>yyQg)rR9W^a-(VCGxQm57>I6>>l}!~TBLk}l{0-RD zOJ2mZqWT2!4)yah03`E9S4@if2OulAxY0|yS@g>#X6wb?^#4awqokYVYML5DFKudU zyWCPO_FvhpH3%?fN0R7Zwu4KTWw)$K78QAx!oY$` zi(8XS1_;22@Sc#LYv?Uby_1n6>+WRF1)NK4N(5Z}EWM4=hVQGPmH#eqVMcX_ddar) z5Ye1hpy2GC5|JiC1eWJy`3e%(xbP#>SlO#56j#QAwcQH<*ZyYUAMgzE)eQ72FigZ!5q|ZH_g7DPjFT(ICwRM53Wr6j?Rkv@^v?+BjXJCBwsyU|+H31(bGR zd$H?BD50AMLf-K_F&G#Z49eE{3}ru&V!IeV97=0JHNafa_-Su890+>~j>>VEZhIDp1<9NZBxlmN`@Fa*z4N9um) zx6t$>Ypao^MX%pI2iiHC&pqS>l{X?p4j!C8M$<<@^$OFW|Id*3N~ltSexz|}N z-9+Js2|tWYKrZ)KtEovUGl(d*|IJMm*KdSHFhqycRC`?+4qQ_VfGRZ@(WST+=o$g}MQ1lRAvrwR^L;}c;D!RIGxj?ru-xRO7e?JBgh zztSVsfJk}@a(5Der^)YBY`rH&37Q%{NB;Jvt8h1dTj9a@7~FRljo6%2XXcNr4^#Ko zZa2#(cMyf_B&eiasNS}lXmq{yg1pQ}1e){O$C41@t8Pb9mRU^9hV%H`Fx=b)2rYw! zZ)6{?x)8ph1LeeY5sAka8iMih5^_%NUm!M6)t4ZhrSGq8LR|mf5L$73IJ%@!82%(` ze#Sj)PBgL8+*w2Mx;$C9G8;`6?H}^S9%@7r3_-dW84M>xa7XZIm;F5*E0>}?!$iXh zr$)6`AgfBJ_+6gpLvtVe$6S7E%-`gv+9gOsLlO z{n9jL>g2T+WfeU+Z;&*vNY@54a1Pw}jmXOtQ?IjpC7HMbfU}$~ zGoIxfO7WD{!rX*J%N3u}ix4?4l|(xPKF>|Yl!cVi)HZg7{6SJb(W92NsLd=&rxNP) zZ<_qW{swBVf(+Zti=&TG$4lerxPAhYR>z&VQyp)Nqc2g%JL2d<9q)~!Kifu(o|8CH zSdUxFNQ_mJWB*tSl8e>Xod+XCdky9C&cL=`cZ20D*TWELx4=EEZ^YJVsrjNQ%ZM7(RqMns31(&bt+6(rL;sKWUm=#P8Jt$G2vPJ?59E;&lRsEM)3E(+#+g3*ef!DqTXw zVV0N%LTvm^pDJxnD^M?ehUMa}4-~Ddy*H~uGZzUCtGIuL5mkuNE1s=^o1*ld$hccvUiix^X(Eo1)t| z#gijfdA)AA4L*rur!m947VJH2%Hia0b{$5_z%Dt@>hH+x=`gsnG|#)nbX7ieik9Nd zjVzU@Vx)Cbl?0n9$chD@H+B>h$UC?QCz~1i6S6g-;^t}x)umscdeF9ZC^OVBqGOIB zNmfO&AIHYdBXwSno7yg?>`Y4ZW}27Ka@ptUoQQlDMyv8oKy(1_BTG~tE|La#lRyqF z*IM#kTb!%CqYixKkbU^{Q6NbdCnFcF2O=6Agqyo%MG*~ zc}^mTX|LihfOxe(ndJ*TinN*^@IK_BuzyAo1zI^ac@-Xi20a9y0FnzzhJTC;-?hlw zy2n!16Eaq`44EUR72>ZSkGJ*Vu3h;3X+I%PooY{o?!-PwZ&bSxkwc3i>;$Laz0(}f z9z%8vwejDA_sZ*UAClMy>y*n*fsEP@IHZhhjDzrbG>DF6-maXhj+&B&XE-B9`z}Rx z6Mh-Pk{`4m-aCmsl+MnR2i0+@45bDUpN~hW<8kWv4tXrR>jufmrHNE2LOG9glcI}= z%)w`4Fm?{bruQzqR62=W=)T_~D$@xNWijeI0Xa}(W``GQGIQi6v!O178 zFH$KQu^r zNO(ivooO|Sv-w?f#p<;dZws3czE=z#1J#dP3c#+(jL!Iryo%Vx$&#XvFd5mh=PrQS z!^yf_8JTDrYU44WL4;a)Nzw7&Lq>U$X6@@ilYpOxaL6u8|1Q3~@TSm)I%-^2(gqWyzfh(Y`(2t~#4xIelvPaDz z_NUpLQ0iPAU|@GYk1Bhfp||^ht^tbnC#1;HmhhET9)E8Yv%fAN$P3Cg(n>PKwwD2S${FDzn+-g|4BMCO(_FczNpvH3ygF=?-d^rnLjJ8dqL4wN?LL;5 zwW(KoL6n|LIt%`-%$N6nHeWv1fG!LLsGaV@sdrjxp;-AuMNWC4Y#zP*J{1mK5l5d! z4e+mjVZ(`nY+GGdc^JD)oxZ=I}6!F+?3yLmmRjWF`7SMC_QriOtj{e?ILY<1> zeQ=iA%nY~2V0F$_wIGmIPD$;7si!UWyjDyxJ6*5RN7u@GATf*r2bZVo2EEuRY1Yd) zlKI)~R^1?MUx9P%&w$XKov9ZH7Y?M zRt$a*DW^jb;&~i%!BCqmFiwr2Lyo;`T3dlsu1^!JBD{@uLyrFQG-Y2j?%Q5Q3EAW2=z_qPve7fu5yTIoFMzQ>OVph_f>$xfEIz*Nvq0Er8Kxz zicx05x`@KUbZ4l~WNKU19bbjVuK9HGxe?^qlYT*zz%``WGu6tf5J6MsN!REB#eVglvM zazpumz6i7>ygq&%i=}CZ)e_Pq*CnFrNjC@U;)`m?d?uX zBiI81<#F&c&PE85>B3=!%XBBvc=TSyLtKOs)O@Ba%Cxi~I-C$i|9y$$<4HfjZwVQD6H`W~R5^AE|t$2zX)qUja^eKvMQmJ~Kn^oK0 zs{6Oq@n@=~T?3!zkLuoo$FUcKGmV4vOeP@-w=VT>YNq>vk0<$z_7Gs#_^r;xRr(*n z%J==l7Tw}{;#z*w`(QvJba z9&~dp*P;OXN9gPhuIW>W@a6-^k1qO^PWE|XGumhfmUFafaUSX9mSIY8Qii>g6l#9# zSJa^up~)@&;GuQ;#cg{KPsr!4?d>G?+z4K`XO5m9__9u4VU=N!X^-jV!2St3Y^5xm zL}Q$@gng2JI$nii)r{In6|OBb5nZM$2-fZ>6(QicSuaeGDFPgsMe9f#0$VkyF5#(Q z+iWaz{RD2pi3IF>C7KpctsGSKkJDJ1i79a_H&+6@7XF*$DH<|y%3%`qKY;9~8ArOP zT`0tt!C51k%dk1}6qf}AuR&1Wp__};w6{;A?#VjfEGbFhdEz1xn+n4O^2R5<+>E+& z&@LT%wmsI#G_3pcRLd;#hqm(4=4fwP9u~rn$b{}N9gRGDv1Ou|5g4_N_rSDtoq()iWDLX*#3r_U9+k&# zH?DARz{8IF5eZ}Aaaam#+!zc4bXZtdM9QTuFG8V09$kd4;`je+MX}ESMc-1C3iBE_ zaS_3l56GJoDIIy4Kx3N-Y$_UCkSX6{eJMh7tjT?fV!IW+kRYYCg%OPmBTk~wYu6Tm zLV?^KqPR&+3vYy$#h=7aG?%@9Dl+Fz6HeEmTk%YM+4(einSL8JxeFl35)D!~h`{~q zqQV_)$Z>O{bLiXmyMn@1A$-pf3sTa>8@K6*RP=Yr4V=79N4j1sQ_O6vJ4y-APD5yF zG*ya|-=ccQjwfx(-@!R0aWqb~WZIn_ELoy4v#P6D^BZUu6Z6I0>-7>;1<`j1&nu=} z?X*>N{4HuT1?gZ~fv|1^tX8h_SWzX@*(sHx{#Vdr5HqcA$#uADJBibWOhvsWO`UM- zq&ud@qG~T@&Z(@b5WjgI|I2^O!my4R;>|j}AaG=kJ_^Atn;=CoOYq*K7yc4U$Q4Zs zqkJJ|&|%-5VYf_CVuO#z*BSPj1Bgd(-87_3*mJTFE-=hgCYm=PNYcI;CnArS%K|5V zr=vo%H1l^OmdmoWqfqe(J0*x@;J?pW=J(R=L!Bq$bz$GmkJF6>0 z!x5fO3_zQSaz1=z2m-*aM<8#6uIs9%hG!u<;uRJ|a7lFzmFQ!HP(Ou7unDgZtUPZQ z!mF<1CayBf!317l+bz;rVo5Ax({n1&Lx0->gXoo%9>MZ8TfTUW*dB!qtNX*SJ2|aT zfRYb^;qpqXn}{o_*XoG&*orslTmaMcv87l&O$!F&#=k4b2;@AVf5%Jc8ga##j-ABv zWmrNp51HWRg3v;~$ohZ47n$~;epa8Y(g(~EuyX$&kXp5c;?V0J(kBY%xuW)B_dtX! zX75Aspjc9n@SZEmW%svu4;rrn??anqAwli48W4YAjmcibAwP`_v$yk3=@vrvI}59R0U<7rN#QgcNps?1=Sxx*MJSK1mriBS?mlmAs=xm}vT zyKH^|Q_9PcW4B=@^A~1SiN7$bN?g~K`?D>ep3ehwxOzcKM^U{A-`CZI&keR<4b0r6 z-`)EA&fJVweg05yNVMGwtDc4WZ4e8#*H{c~81o6NpuOm}Rlh}kN)CT6sx%hx+Sh6= zV)kcw)neC#&Mi6WsbcGq1mvjKKwf?^u?!K{U!jhkVgP9`=ogK09{HHHF5rCuu@mIg zLOShsY|~Mx_+MfW80dI(Wrk9-`Lihto-Hs5#jK)+zj-N$M%Y0tgAH+YS7CQUk#0aY zqM(`J1an??A;NB9&-82q#~%5DYDH?h5J0*Eg5|y-9->e%b|fLj49zEnyMa zcj6+~2?~Ij3kKk#L%ss_Zzs;jI`>f>ZOEcnDP6D)^SO1>$swA#bw09h&lDzQ0L+{W zc;9p9ymdKgTjasM{S5*DIf#%u=z=|v{06*lasxL72NK$wIG+nSj%hxsh)aG4q5mP; zk)2`%d1vFAc{ArEjut0#we}(*HFK8O@_a9ZJG|A+B67|q^$i4f>C+5`+mIJ#%*EEY zaztT~VVbBJ3BSMAm!y?Q$-~ z=}wHq|^niFw8`d`)Y**N<52#cy4lwF>p94JvoO7!`Q6unse zr9Wo;hfI;HhvY1bVm1$Jb(&s(KXp7djy_x+Pm80EQOEP*=u_13(m48jdAzXA>bMh+ zs^g7u^k>!ajyU>mb-Xu@{((9^7)SrBI{upf;xp4O1G%VYgT`w^bYDc zH;!Jej-we8(e^_W9U1lfkLfhcCMv?P)+a!ptB#{StY}Az6@6Y@`-jx=(m47Wb-X%` zz7fYf&FKgIi{9WRb-W{v{<=Ee8%KX%9UqLNf2NMVj-ww_$7eNp|JaQ|;D2Vt@}dJu zRL8k-^elB;97n%Q9aqKCi_~${E@hzm)3>iwC&tEI5N$Xuj((jwo)<@-sE(J$(PyaR z)p7K@EQ$b`-@4eIy>LfdgU8hI-Z=VNb$l?6zEvH69Y=pn9iNS(zpIYT(u24#_9+gi z6S>N@82uEVD|&Gp{e+@d#nGcT92Q4UR>xy6pyP97DZ;c1PPA!rnL3^qN55PhFO8%3 zQ^%|0=tI=;#yI-5bWF=(N8E`?>UeJ)eYQG27)ST0!cV(A;F^hB}7>oPgwVe zU56mpF33R++YUsObky?1$*c}2c-7PRcwz|!n_XOMEQz?_N``^cA7 z2?Gf?_7QF74`dOc7-FWiL=JQC8v7t3)UJ+-QQM~@LXc@La$vDi<+>dP8hP_%QlNKe zxW~iM0eOiglb6Uk#O;Da3l*d*ZyNm6Fp2#g80Sd}yf*~|ZW($I;y7RJjM4nhS1Ot( zM$_}C-3ip{*^~m0Q1}!A24>td7y(EFpq+$c?Kn*%Qb?E`spL5#cegXSAqDAJ{fWTM z{h!e_1TEuEjSk-P3e4+F^AXLToB<>3yb9QtC}dzCUF&N=Ko9V9$T<^;h`p8s_T2`zH;^L{Y0b3)#hZ$R$-!q$VcycE$U0q zt<;K4-?wBp)OW*MvZ8aU_@cdy;3MkXO-+IseNzoN;xr}ltf401A9GW*Is_t-aXds# zSXuJdVy;9s!%Z0hEo}riM--0r^Bh_9%ASG7{*FCTw0|gyizqw@yBeyOC^S^<4&36k z%U}~EN(30++8=T#P#D(gKf%b?L@viF9xydnjVZ%JJtbKAfxV}zJ?U-v(B@y=~l7qdkHJ^BSn>JM>U*KP| zAQ!t<+)a$MC0A=zRk75R64KRfn=)rwR9XAaoJMSG8eAzBoI~_8=NgoDNM4vAW8Ag; zHmT9M0(ph~8c{g%YI52f?v9zARX5j^9sl6l8z#b}Pf%rvyD0 zMZ((-SfPqjZD#l0LAlxsvR@7M)q>(=O#BI89h`gLJeD%Xs0Snx6^pc$$n2nyVli_A z5IM<38CY&lMh0bzYhyvrtszOfHF_dyC(Srb9d>AB=h?>wPr+R@W-oG&L~CrIERyq zUK5RtySf=h6gKHH(yOZ{T%hB;%H7Qo0&J<5F3Z<&1HB%XvX$RSMa>z>$w4&s#9f6n zM)FFyiNXW&rN9kgr&w7Z(RgUfR1iVq^H@Mj$ZZk47xUA5R-D#hI z>ts+9g%Qzxgon~3WgP5vSPR69fnlxs7r_JsR`A_}F`EA~T*1k4&7iTD)_+?ckSLnT zHW8O14how`BFgaai+2)@mYX&T)k7#)*FzNcsD#P+!9(&BjoY*PgO_KRX!=Ox)|%wo z(7BWmt>t$V#Sx{5=96g5^-)A`F_vlMc0w@l(e(d^v~K~6 zvfBD*UhXe*LsW27Kt;qsxhle-2;Rbx)NWQ-YUMGbKBQ9fV2P=i42gD;-N913S&gN3 zbBs#K$_!81yme(XH7heP`Ty41d$@EupMB4t=h2y2d%yeL?|%1Qd#$zC`mKIQ zN_!(sGGxEN_@NWF*RW$BCz>?!uEKuKjKOvjHBVPAg!ME5D3`ZhMwu%|j{;MAlM*J; zY%Hf*d=~svxEu;MQ4m>6u^l{9yhLzr=|+SyJ0c<@X5wyqwT}Wrcx)XrQOWlMyho6{ zka8H55P@$WiUcf^kOE{aF5{5CK}vzWL9ZPQ2cNyv9PiAZ>hg}wbS>RL^C`+9cICzz z!vXc;CU~w*{hR88W>=|ITogRQy>e2}2tViRT#IH14)8gZQu%YRpVDfgY)tZ)Y?hjA zoGgXck`p8u2fM*2;l|2|!YirxAq+6ja5vE$NE9z}M*s|zCl-5J^V)!L!zNVyX4ImI zsNDjeYs#nKAPT3mfiw028Y&|AKE)()Qf`!TFZ^@X-i+t7Ux!RpxQfcECJN0??H*7FSI$KgPGtL-SqAge6NP4`@ZL#bEcDGs zG+w=S56$4aV5sbQ3%W$Eh+4X(wr~{WB_i;oSIiH_$JQOLj0l&`=&C97Ul z0#;44$MCMGxEmo+ja0FI8PX!*%B3K*l;Do+Ys%&JTT#vfX;bM`irXl&6vf39nl~n- zcBB+s^-Q68gG`4!Z+xJzFUIv<lnjh86Qz--rJ^76Z2_ji_R>!M_?76&=R^VD%~g4LbpWeL%EJ$;4j z95hqvh{BKDswj;_DLxZJj`W;jrJ1YH)G1b?qP-MV^ds;nslEp(OgN!YG0}XEQFIvv zj0qPJn5(_hRdTg@qEK%Q=hz2d_=wPmAPGY^*&Ev&5O~^*>L#a+lPElGuIeVIO*v6` zM%>v=dN#Y6LP>v~=*DSNys8Sdd)f{@5>bZt%$tR8MZTOp!cm5Hc-Ew;17bOArkAN% zqrKW)jSf+m}8O$8R@1mklPK>DL zDl~E6N68bX9#weaTpA;`rXWSkajHTSM_Y{W0+Rb}cc2xTHU_tt^Ad zNV_V^iNZ6c1g<9kR>6BL>++6z5Y!fc}OZ21Ji z2&1s9Z@tt1P^Zui&mXG8kBMBLJY5=@Les@*lboiRD9mZD2ZcC|eJ&`>Y3{Mf*-}gt zo-MD~8EFMxpNqRQmx)BS8M?cV>hOHY=qcxmZ5}8*U&i*7^TkP& z@}IHjQDvMSEf&s0Gn{tk!Jf58kQ{3h6Ntw&BKHlApqH*;9&@gzwUVN3OZhl091seFyO3bPHqu5{AP2x;t1e}aEQS=&} zhxT0_@wh=+XPhgbGKDFXDWE5ZHtbpvVGx_2D}Va6R9tuo^qILMwkeD!4u|e$ow?0hY(??#H2AA(y@mc!0 z0rIysP&qJXhQ)+$S26APN$-i0`~QOQo}M{WJn&_7y7qY*Cvfq6cYnkwI32HxIMh*Y z=kTzQ$0PRqnegt~3WsAB?^$@)=K=#je?BSeb zrgvMCqA?0ByCrxJK?Ie@;S|*69y=Ht^hA<;T5yG(yj;1|Nh$Rxzpz-C51R{5F!Y?K z+?lUJV%B)!Kg!pXe1mW7hQauzd^LOh&^7Suf|$nje5u&b9I@E5gLr>zSqdr3_4wef zV%*Z~NSt3v4ncmoETPqD-DAZ3=YbGJ0i6RIS3*I0CnZloKsHc+R!Z9(-9p6UAI_&4q}55XXnsVci~dR#G@C@)2MK*yukc+SYUD2*dbIBO zh%ZgT{Uqi?@i91)Y_7-3b(7-?uiQiR5#u#=JpCqCZkY!z6h-C59KG9f_ipDAZOFBfpXrJ_;54Yb`3X(NnfWSI-LYQc-of{VoxKL z(*7#*qp)PPZ^;;RGz|GGTPQ7W{Rs&9$>d1SrH)igU%n!59Bj!%(+ZJelRD@+j@Ec@ zzFolx)f0ua;)%myju>|jbZmwn;%Cb{qhpjOd#Dj2PZ)oadPPg}mwe^3ueS%BH%$m%$6txuyZ za`7mkI;8$;hp>gv!_*Ol#}-qYm7GSRP=KmnC?l#Zn*D8y@;4#+x+xE9@<|L9KbGq^ zJRm=6@kwfpM2S~b4p0|SxK@1y_#53x)Dw;S^(_>1>Q|duuKlL8f7>Z)iDm)(z__Q* zHcAojiuQs>Ej)!Da8Fqw=bkb+QgQ!a&M!*hmzOSM?Y{hK$lfed>Zd`YP7z1~50y+& zOdc=3<-I5`&h*m|0C-+r8!i+1)zL*#a-IV?2e#xk`Wq6NFSjmrQ|&l-h`X!=Q5n{;N4_4J$cSFJ^t85n&;VQViu=F`aL zY&!!APlCDvSS#3)D6D_&bQApN1d2QBIT+BDe;^)v%`+g^i9TN*!OuvLv+ad$2|9{Rz)6U%TJQT(l64 zUmR}}e5L(o{|z@`m*8Acoi#H zHu;HJj<0@}YSC0019g|W?P#O86s3eHGzA2!$xd1Wbwpz(^-qgpQbeIyrNNjvBNMtr z%USf3C&2`(eC76E>8dpJY1704#S4mw#vJ1@t4gNL6nY6Cprtp^r~0-!KC672KB71f z6@jR4UiLQ5WlB>Z7V+IQ1)M}FSp^g>1b(wcjtGrUwO`|IyXHQ$aw-KDfph3GYan&% zBAuedaeo&Nt7HvTMN!<$cM;}UvBqPW{A{kusI zbuUq98fYVwMyylDROSRF_hCvhb8&#idxPjEH@W8fqGGfwkZqOT4(C|q)nB}rEDvPI zZlqTDQC{dSJKoF`LOg&b%rB8OVISPnMe;<%ar(Z7QDExtcnW?a#S=;3rj_jao%%=< zdtkKG3hRkdatjivsS_<95$qdbd4+w|3pU}IO|ZN)al zQtyojyH--KFVqO>Rq2iKJy_~RmP3P({8tb}|RMnBY zwHQM$v9(Ji3Ay_>>oMVDWW_LKtn%<;G9$~KS50X36Ia1H53XH zo;0?Th`{hkG6l%2IHLr+lP6VCz>AKLVMp%b3(#*HDMp~K z0*>5uYw=(G5evRS=M~P+HE6%*p%FU?_+;81%r;;DAowCo%7sSU$7l@VDT4?S90Rgq zcby6z*cTKIFoLKwxbPy=yOt~kebr5WK<@}uDJl>37f|o380JjCQfWne~N-f;AS9cj6TY2iIGN| zDJuQ=-GHg$D>!{3u`%H#{((hu7TKTZJrsRTY-7n_+ zY>E*TK~Quyp6wrRxKA)NU)+(vPz`!~{?g20;gPcSYl6k>&%&}qX=ZSkmhFcJ0K?Kg zPZpD>Yl$NDMq_ZwOuzra#S>x-9h#w%ngG>HbRTB1dfX$7TZ6^!sYYn!qm6?)YUP~K zWXH=e8a9tLelD$Q|24Lx@h7B*@{Kb-r75q5)djf2TZsAbQbt1#CE$>{ybGBAjRXq9 z+D9{m*-2wp4U}+~zHGtsktW44;WJqwxir!8_=b$3^Gly!bA~!8eDH5~cnY zxYxYy0WcavEAm++0eq2MY@1+|t9zTe!U=+KpGB%MZoHg+@)bdna|kzApnY>b6nQ%J zJU9WIshp64`2;^NFOQo<1}pF%>W)mdOCDKT4*36e+_$8NZbN3UiF4uEcH!kwR;1|# z&9N4dF1w1bQXULn5fdZV=B$`FQj zyY04V#*U%moS+U-;n2U1!KRLPkIqWWlvbNiZ zz0SL96k=4c6M7PFFd|yc=Yfso)>N=EepQ?+nI&D{%8~Lt`Y5j4-h%M9mdm?>9H(dC)K0xjp^;djz3p6K*ixA@7bQ1P;M6R9zXE zmz_>4FoTaIIcVpXN4kV$&Bh!~;mO;DtuI3HSQA5BFB@0OL*dCmJ8?-Zs$7CK)ZXrIRL;x(Cv=@fC)WMZS>2>Heo13x`sSa2!(egV$68P~Mv4(B0 zb0j*AR*8+7j{%pfs|2G+)c=Ho7+iiW@WOD17jdj}`~|!lHbpcAOI5L$z%1EuqH)zI zFck(*BPSEKmw311X?gSLTf#~}WJ$-wKS9?XKc-G!-+{tlr z37*aKjbr@5ZvGT`f_EN$fq&=uL)250IJUs3{IqCO^4R}w?5YWu0UmM_D1MQbt^2tl zcv+oe8hLq}8J~(G8A)e?&WI)7_!A6@2kBa7)Rf8r#+ufJQ2ltjVOUAM3hs8fccT)C zx1yX<$M9Cg&UmDlih~!(8IKM+YW6~|<{NC>3)#EzZrTJ$<9^LAC%;MOQ-r#2zsG1a ztJqYY9o@k)Da5)M1u}wCCxk4%tMe<|wfP%J$vX!l6q`-G^;B<1FfGkX@h~L=V52&I z5BkabTFJ&7wFx5=5{$!t&&0-DhK;mwh2Bf-Xy^lVWG%cj^F9g-^OP?#7IoZ&oQtsu zt@|DsWdIJDzopkOv86jA;qqo-$2s)^gjZIj7|39AcLc%yp@7j0xWIX@al4+ap7L2h zb&%({eTi|ga4ta9=enQ!gSBP=rhsSa596czh`bp<6(99HIzTwlrWh6PV8$4A6Vp?* zWWh=^G`)c?7pF!|Llg|Lve(jr45n|n%Oe5)I zd{J>v2zc_MUts*;g{NNy6FJLZsema>gs2bSL6Yv+JKZ&tlFq&f6+|wD75$_@N9r2c zRrjuf8Ms`>Dy1avo-kfC zczQ-e2x38gOi+r6{-iMt3E~J(q~AHZOp9i@#1d+RSH-LFylq1FT=)h1<{WG*1wF3#9J%}s{(R0vtcUSfJ_#wkY!w*9qrMLWs=CvNEs4m6+1T|ITw^WMaTLYONpFQ_Dc82r_Uc2h9qPxy=_crq z)tPa5DFU64i9}B~Xnf_#*)Y!3uK+X)AmYfAryYsFwh_`Crb?vnyaua5>1(iy@Pb@) zwr7~<X#U3AVB(wD>~>JzjnCWW3wA%!*vg=A zeiqjK4^kSTh`(`tR-QO?u4`DhfBREN1(Zuu8`x2SOQMYte@Z&rxAQMZXPHCN#E&nf zWQd(zVU^hZV@7w+D_>{_(SrZHo`jeCv z#YH$hoalh_BQXqJ30VdCJl{tUB^(A+|9&FgEX_CD9?&?}sq~w{h{QMt!;T{yQdV&^ zO`&HYk}vwKPAt!cINT;lBdmcCw8iuxA)&~^SAhr=7XG0)q&v_9$75Ff1Kx~;e zmQKIn&bB=97q{c2=cI{`(jwBe8JCELz^Lw?eIFQ);#WyF?GOQQlJxnno!@6 zdLc&a$g>(fS&^pm$m{+sQWlyYgXnjm1_1J<-sY791VHxf;nyTid- zxwQN{985HmkxXvPoZX6|IDCXWDNhlJMn($3{wn+&^;@ADFw(5+i452(2BQbGp0%lX zht_;p0*JyEW}gXsf=%b_HNtv(rUGenQc5hoap~8i6z6bq;?LoD4L*WMl3apQXA$P) zj^mILc;oUCjU+=Qjjwg2(mj6ZErDcZ{M5Ip&}Y_FBCxfl z2611D76H0y-I@MYr0xq0^E9TKI^|_rl5RqtY-NSp4x;``R2g?J&V90miW#f)OkkaJvX{7_rb%WgsO=hUYR4rSB-V{FDYNlDK-fr;jYSDw zot${FxIWt|CMMtzv1Y94DXoGep*NIpso=mlf{N(F6@8pyLnK5I{cdH+ob^Y#N`SEZ z5A^eNhK|3D@}sT&^C1B;cyRY03zX9NEj(rE*ux6pkBqwYFLhCykt-H54sT1G*17o< zUKIaq`~nM(Ex{kEi<*yOrg2%`FM&t|dL6#R--EV(^JlZaBuETyJ&Ylg- z_H3I#6X9wxGRqnxQoTS*=De-GvcWN$6|V134?t3m(P?4fE0lnVz&b)SGJlGjJeU}g z1JCyO7Y3@c&uJ6?0@ppU*wpGK4TAL78jnFE&6YTh_A17bVte&V;qT-N z8iO*55q41whR> zd)}FDsyB#n|1c+bKEA;OQ?b9W}bMi*hKMkTJ7^(?{LJQv(%!5TVTkL0$ zkF5A1Odb~W8fOiLqOt_%Gdl7Y%z?DVAlc%Ag zANrf=)(&fQ-z*453xXx52vf11;bLT-mWp^RtxS~OiPyCIX47mIle7S!Yh{HbLP&}u zradWcM5v)qtO|=7Cdf3V?NQ>9S)}&xyXC&so_k%}6Cy>W&9|5?Zf_li#J;!Bw`Pd_ zp1x6m#()UVz!Fnrl-N@OzO?9Mmn`wbOBAPbs|nVCtzGP%x_eBE)lj!HXkywPTZQQj z4Qylj8sxOe@x(8KkP~7=Q zr{apXV&dTVi&sM^uioM>KBDxQ8J&s``-=mVL3~4}V#`v*z85dELsRQDV6dh)n^s+*TtOA!hrIJ!&tFx zKa2rw{v)FF3Y?K1a9b5^{R5`ZLF&}(;=AdPtQ^s2pq5Ty8Vx@pDCD;LOanE5fTX?) zxo69Lrmo$d!G2y;b+WMPz3*wL3M(5d%N`P+-)DN!Mz}DA)ngK@W2)~7tIiKA$a$}7 zOhUY6<+I|+6{Zry^}<|bav1uG@l~c4O$!v`Tqd{SnE26U8XU0<&t9;!)ofW_E(TVc zdKylOvDKz`uU~q1LX2#+x+vkc!s_c1%EnYJ2&*cz&h1uxWkPmgH7XQV?dIN8Hq6Z| ztUAo!86@g>iX|>TpkU=C2C8SR+Kmn+`8z(ZLQKEklxb{fZf&*1Eu+T?5ViN4`d37> z5@j(F=z+ottF2AHULaaP;Y~#e@rBiM@sw4~h1DVHX9qSe-DN1e>Eptc!}k=vbu5sZ z$5lyO>pgs-*II}#lf&?(YFrqNN@3OMru$l2TgO+26}-k3`n*+Gr8iaLHeJTo)2)eG zWH``t0$2zltsuX<=f;)9g?3F0Nzl&1_xe*)zu*Q#AQCea>_ZSx;40JWe`Hbrm)%b^ z_eF{vH2meUp%ZZefqh-tSrBzD>f-ySbuby%e+r|pUI_Tx`o-PS^dsnM7wT|`r|<#O z9ZI<_xd7hBdq??9@UPf7?3wGPg3mF{PKnG*j)Du6^u!^-wD3gOJzl^(a}p|U4gECd zLOMP)JP&3uI?MF70z;(bF4#tSzq7A^mqz0nXj{1yv`x~nOngOpi}x0&Mdi=I5f%np zGNah%(ymM?6ZLDbE3@8Ee1R+|bbN200y{77=Qo82Yuq3R7nHHi*&99MjkI_*xHp@C z>Tkm_9Mg0xefHXW+D{fcawI4#nWzEU4(poo-uswGL4$syGhl-;w zKxl0{tmsT3^9)fQn1C#Cs1qipIaA}c6qtucVkg|a2_w>W*a6S1Q~!vGL9qAf?ue7R zRx({`^p0YU^AF)1e6Y2e!_w=C-X<%=*V)VCh4l@*kZ#CIc>{ zgbV8V>K~>_;hix82Z>`(nl6?VRX-4QgLv{OQ?=X{+q0t5%*P+F0y!DM|C$w50S5LU zjE!D=82~rbC$$qQP61Dli*ptEnoh-W8%>A{0cnOJFA#I)+rhLqnv8te{fhpG`jo9! z;4&_LL6Nt2D&FEReqWJ4?^Jx)U;M2ipX*d?c}6wz@F z)Mhk&-if{ibTdt#or-)8nb<1qI3aqD#PJHdvF)HxKBL90x)H2)^KA7gi%0s4{YZ7! zbSj?XFaA^fIkDbfe3!cFkxp0d_ZP2MzP$Dt}x4w*ng4XOoaD|)N1qZx$ z;e;7tXv4wiEUgfUuuldha*AN>Lj=TcfoYss_vT+rA*ud@kc-P#>BF*y$XGN(ffTSB z=39e3<6ktnwAdjDEICv*%$vM}My#;vlpUmcBWvx7GseBi| z3#+_^RVQ(QxfRBcSKEF&QmrGKPXlGs~t z@A>su1(sEB<3|O4ox*ciR;{C=rROJERyD|P(UzJ}O;*TvOVMt1P(m&wOUtT4T!beU>2H~$ zD&~ELhf4p!|5*Ol)AYgbt*x{CGAa)eULH4yhn~An3aM4z_au4*#NnnG7FQSlNf(Yk zu0&fr9;qxe{G>ZJ&Am`TB5pptmv~hWLIu~MEzrUgjow*PA<=LpdLPiVnH~yqxWTgQ zC;YCyEy0R1s!y%=qB=`|Ff15f@CJQ7Zc!ZoZRzi=b2Dfj@?5V7z|-^?Q*|`CC?O0Y zbgwa0GZVr-IkI$*0WYCf!P0jOV{&IE#LU}`;iDJ19XFY}(eTNS+Ena$$YZ)rGfefIe$8|`#GreQHkbkph7iv;Z<$`}BKo!lCx|ouG8Jis zK_tB=iX~SML-fjs-XWePpF+3oAicB0>%`AZF;sW!!BJVVj5K0HzRXR*MoZUt_!<@? z4plf7;=lSAfpi$F^_MRB$UB<0rWgs78p+qA{2sU}+OGmASmU!0v%N3IBNb^ku)SEX zDa^1{4Dgy(*~<7)0s_|1$l&iDyfKpOt>K;zy{0Tfj{v2Men(RSe+2AI6;6w|FHLvZ z%3>w?UHK8PO%>$DS+jP-G)2=gnga8sk!tVMZ%e-XSG? zSU~o9H+zSWl2P&kd^zaoL^~NIJ*0FaPET{;7C4-2vb~@^$m3vg#^YPvj8IglBNURl zH5p1<#1f-n z&}PDU;yyl)46W3+w-IoPFgoq1s!>upjPI?@MRWj}qnm%rl;<^+D*HoAel%k6X-u>s z_(>JK<+we+3)e`fdpw9sb=mr32;e^p|5JGhvMgcn*fI4RxZ6`8!%s$8u^G5WYYK4c za&2$KSP*I>vhh)pLTwyA$@kOEp8VvI|92RTDe7XhSq5U2pC>@TZT|Qp`5^PssB z(ys4S`xVB!7sNTpqAk1N2kX`K)Od7h^rM<<6l7mo(I4DMYD_+c~$r>s4SHi=qdnOK; z_C1P|g884}%;3;tuwQP|dPIsX-}&Y$_Y7f*|S#V(<5hppei&<5Ebzkj7%d-?A)w zj@u%GtFV{B*XYB6y+cKACj0^3J8QC6kV<@MWor@okYrib2SPsNwh>B2z@;OkesCJq zmY#!pa0zNGJr`|R-(cBx+On--<=pv(m16=7Rdb<`j7cbLT8E1u2ah57UOvIh!c6%{ zmdc@!NTh6h?>qG9JH$)xnW7An zc-#S>h2q;^O*s{lan~!4cV(d%_FGkWC5b)-q%c*!KhMHy)OTv!7Q`1-9V>#Y8K2$? zp|r57si^8(Rc2X6mf)f)e_cx@$^Izk`lPBPLFejFzN~_*LJ+JA4VKD(qb|w$*6PVn zHt4qR`E`KGh6Mv~r$Wfxu!ln#QTLV_0!hGI(N19%L|8V1`}Psu5TIY^MS=+=5N@)5` zZ28U9I}(#R{VYGnc3dBD{7v!i-%Rm+CM$*JN>*r+S$?P2S)}NNBDUESI|?1|(3^iW zy#@>WEF2XqLsR_v*;0?|7!kf{FC>2GWzUiMhikRL?ze&ac-rcj#`) zcxbL;a(<}z=OAkMnj*A0gI?flYB;`W5qitt(i@tlqeqf@l^ES(>Qj*kLUq>!%%hl` zU6xCCVSX1a{oYWu+p;1X?>GJ9^ako#d|_2DEIIUZZ2H&GNAc(}YG|x9-UU^kR{c~^ z_1^K>AN@{qBEN{1*G=#83&%2hhbBQ`)dl}dTlNlqFFkIkSlZGG{Tx5gXxnu(OA2wC z(xLtuRKZQ@wLw$I-3?sQ9^?K8 zWvEz`jJbh-F*NS5yu5onsDR!I%`3mvX6_FwuV^jE`P8!NJdN1OvC<4sbzQ<_Vffu- zw@z+q!P^*vVJI4tj72VTe>e4wp*e^Ht5!K*sP>quuL`P8hmamo}Nm;z(iu;^}q<02~PxCsK~E7jBgdfem(vhV2S zMroYs4l@>X%@U2Tz;m$}9=)PuH+e<(B(Ig{pt^FJIoGzRLQ&p==y7ig;^=G?OkRF< zDpJoqLSc0;qQE^9@e3Sa_rfoxaM90TP8Z2jth!kK2GZ?SO|f>ZjWdS}# z1#Ohwc1gi$WZzLzKsm#_`AQrx)qD=GU{ZRtS~&Mot@0(%$4VYS7{R93pyJZGmUbEj zWYQ?gDXf7`wG5+WhIreR@S>wzQkKRIV+SKp;0n5klu}z8P+NHrLTOmBbCtl)zy^b> z*c60B)$Bgj_`GUEq!f|^Gn$wA7+GOV4;E!FBqFTzJLsI{A3^i(IS*32tTiwVVsspk z$#O5vfksL}MdfEni8_lwj>rA3>qjg8`51vci9E zVLlY{QufI<^y%OwLbIan*i1j7e67NQSc-$qHgYJk(Y2kObt13~2fTnk$Z*Ix%139@ zitsIFXo5T*hZM&yCwVs@u;;)Bk>qkh_+;WRot{mZnUo_=JsBJt{ykVD{mG*l% z$n^&qWMy@N2QSvm7x#-uPfJ^KS#JOg_LG+2$y+l+JzweOJI#E+>v8um2mOb~$$wp6 zf8yrM$GM&ZHuL?#(o@vC2rpcofWASYo@6vAj{}XrmFoTA5%~dy*j(#(N~v2o921D9 zS8-bc39k+Fo@sWA*E_DRs8(V371X53S4J{7q={(kq?_R7Ye#RZAvEa;K z5x~O<*m+o8epIcxW@-2)Qm9YLo_}?=1WUNzvIt!D#4?(*$WY9S7?^3tWm@ zQjuWUeawtx&0>Z=7AQfh&`W(WVw={Vhqa=7GhPJ`Ur8{gg}oJOH4Is&p?`+R@G2J_ zvD?=Jwyoy_2#b<0e-grxi%$^5#*%!rf1aiRUC*T@>qeNoX3SoLyb@30YwI6KQ0&&C@g2V!ju0LjS^GzH;PWK3EhZCRq2 z>|Rtu)cuOOY;bx>)p;Lqm2}OQVXQ2R#+NYkcHl;X_po)On6Sd#$fE)R+qcT|@dEgj zY=B9OwBLFlj-w6XERVuQ^*TI}*|>8S_!+kow!a*yZm5cErpTovA7_Z{bf$bC_K72Zx;4H{BQOg5h8Chlu0fRxtu~LAF zlb2t4FzWME@Md8Ed1rYPb!f&q@5iFy8QTC*j5lz}uLvc;?ZlJPNQ2 z!v1jGMV%mzX?r%><8MBqF>>yYMxI>dpQOvlcC|?~G{s}OzlxoMMqAh(Ce}ijb6zsr z?L*3J?Q0Wa;qz>bj?9f*|m8L466TZ1}sdvWM2Twceeo3pjD ze(gH?#&ol_&&5KY;PiG#&(vm57mM#nv3U|R%*K&Yx{AG!X!I<<-TY51%Kw%N=+AO; zvK)2IU3gY`8M(zZ-etZrL{9&8g`<%qcFf>NacdE*iO2iXqVU1PShcXo;s>i40*(mERkaxL146;u7eP9Mg~4y!-OS+ZyV*l6p3H0FZDOGB}D=SJ3!%Q`T+2Fh#S~lB!Z;zB*fMH30f8x61zj?i^9JomLc4 zcp#c`2mn+h4L0^s|$CW%hnVBnhNn16luokfz6d1#WlPC-t^0K0o6NPbS zf6A5Ja}$Mc9x=SO2AMPtR-<8_BYDFm)S!O9zslvqW&a#)6xVRszY?PGOL=p+ux_kKFZudA7lD8-v+}kCa8v z26r%S-z;~_>qXi_xq13I*kS1}DOfyj9y2W5DSs~S01p*@dYUB8m;U2BA2sU?x@`^RWNz31qU z;zI*al{5vNbPE>882Q=p3pzkQwQic2d<%h?#v`nlD=1K$QH3#Az|VE z46n+4lvU>1r${O?wo654pE6%GwtmCVxGcee8yw!d;Au0^ESC2$Cy4pan(uEDhcZOi zb7o~$`mZ5d_E;T(lFyk>7=%MWix~O!s8DIaaeoc5h2L!RgLp9SEEsuM&#l`;>jb+a zuxtIQTO-lHa$!ZHS7^Qi(xLeU#MU~tL4V*i#L6!D6N}_D;5F$j2)mp5JXRPt)kqo9 zSZ8rPkEZAfg0DDDL7Vo?*tk+w!RNT1l-Xi%c5$4pWPF&G@zRSSLFBEnIz)Uk#3T;) z=jf}_imusuw(_(<)GA4`;@gU@Wx{+7a>tnGC4~uni+O|LYIz(rXGWh;isg+L9EX(# z^<`#~$}FGM$%w&;#SJgEM|Frpc*`R3g@Gz^!2aUJU*$g!=~$z~C|!7W&&C(ck8~FV zlHhr8kNFs2fygYle80I?+;)ACU8H9eTEo*E}e%F+3qAp|^Twndg_Z}^OO&sOR1(2pXnE;i2UBMuuK?pteFcS%uuzMi z#jt!dMETASSOoC1M-BMb+wR1kQ`F5XbA2~ z8;?8&1bDI$i7|hR>8|aU$)dDxWjU1Skp}{!wP=|PN{cm9QXI{paznZD&=1O6Vt85B z`zO@Fqvq~ft68QoY3z7Et9oKoki`sV`CW^zoEdM8j$zkbf;>Gv0bP=*k?;2{;{Nz_!gs z0TTS*&8rVKn}fMrIVUg4zfti?)|FPLQO4Ku{yJ zYpf|(B;Lv|q(!gU$(Gk{#Vgp*P)aLhck8O1~zaV;yCmxYj{jA)_jNM03abF%dYc z1DBSRfVXkrB;!hK^a6^JCcCKp1&$@9cUZ$bB|(->VefrIEQnC;BB$bHdFJ4$3$e6W zkB~UJXPAZMq;>Hz;cA*^bI>Ftn@xFP;gdU=kPO?!!7$56Ev7xtohEab0(QQ*-*|R* zI>+US(z}9SD;^Jc)7{~gM5TP4H#;{L!o z)_^j=27x+)-SS@1i=(%&Q3!i7-XmY;BNRoB*=k%xPLO0WcK5@Y+TJki-M z03&q%WLRh>1Y&uR#DLDw3MKDS3Dh+igP_(&T_GNdT^7r)rqN!B)DvM6Z_-T!Xn#g6 zS4kS=k_o_OyuRFx@QkA}Q9Kl{lyNFyj3z{6?IZaq?1#y83s6WHS}g;EqqR6#n+g2V z#+G67G_79^>n!c!hElQq6X>ON^KlI)6l;Vma|nWkU1c6Jw2HXDWB-oetw;mJX4$bk zGDlM_Z4AuPS0ax~@)US&(gdKuHn=gSc;+Ws${6uQ>8PbiSc;FR1%`}7&{2hLdAve0 z;%|&(G;5&cd&6z=EU$EUEI|6c8W3-|S*+h`h}N#@4Xn->0L~^wLF+--2ylX3k|prF{1V?lwFSEcV}2SL@x?grX^ckm=3^(-FIl&9!GgBGr?22 z5FYk#>Vg2nC)tF4DjTZPmYX9jV#kjOX<`~e3&W4VrGoyHzE}f~e(~+Yf$<^_r=^5t z#EObiHr!d3zmUl(EeC=66;mS93!$r+g1oQ#2;GvuF+#lg z7bpO}+iCq!)PLO-N$M>yoHHMx=t1HLj%?t8A0MMVq&Q}mc_{#lcmi*f6Q>`<$sO^L zSzv+PP}fd4f!=OtvDr@YIqZKTHy5Xs&M9EB6E}@sIv~!|@mO zO@9Wx=Du-`Hg5R|2#75J*Ux<;9zCPGUkU$hI42{oGK2tT^tMUhfc&)2tHUik1+}OR zQ=hlXPr(OL{Cxk65L>Uc@L3jBgeFloXE-6Q)2W#@UVYvIMFh&Ww%RD4n0>~%U&moW z8b2f&e2qGzftydh6iDwl6{7mDKoP-sXplL{s;f;$t{XDwb81=kn0JxP%=YyYIDFcT z^I1+6%WYo@ZQ_768rfgDvBxZIjn#HRuUH;VWL9!oEaC`|8-WhSst9}!=oZ@LRz8mf znLD<_Dvm6Izb$^!gXzfnLW)Y=qypR?BA7M>>09a4j`a|hq~48`?!a(Rk3VPVt_4Cb zq0d|3l1>lxpiJhfJ)=H7pwo14T$^QNF%O>SOem*Rt@LtCFi&HscHm?AtOcVC&NQMDN`+5J6aZJO#|0%=qabn_Aut!ho)H?#O6%}6lW5* z!x1Nn4WxEVx6C$NC;9fY8A!yJco+;~${WcsT2i90K4s3+^HmuMu(GO8A-#23&(v@*f;&43`6wMRZPE6bdtEbf)Vc16^}lgMiPJbh1T}Y0Y8Oy!}KpDIbcJm zIzVu#3;YEKRg{eb1=6~YwDKE%fP{m18hMT+yd?YaYpkPMuB70uV)w_<@HC^==v_Xl z-U7HLdlWRIz|^r|wWxqhh13}8DNU~_Oewn1CMH$;ANF%()}V)VQB8i>Mx@511uyD} zq|bC1iQ!V(4B-QXAM*|Mn3Mg-{BQv1R8Xz1V9$W!mlDY+#ioaHauuM-syU7FoX|}a zmW~sUn48|Fms+EzxlV}%|A5Jc!b!>C@r*?;h&(s=;KxtjH`z-t}TUM%f`KWrx4dB@DY2e)4{E+^FgW%OPEX6fwf)=IL z6YQGaWpxc^Ek7j^(Qu}bdaA?o*u6B0=G);Kbgfwo!$$3d?aMn5u-83Tkzju;&ty~@ zrCd!TS6QNa(5ySJdK9R_>SXa8f3g3q^y^f-9>v^k4y{BB2sz?zdsm@Lb+14Ubl%pJ z7HKPL0_P4e7%)Bc9*ymJ^&h77LUn1$YFuhJ<`_*6b-LH8)o6hjm9`PNzifkGSwhWD zgZ8>=qM4d-PK0jd90CEseu(~iz+&t{FCHO+{Fg63_$OxV1K8SaV%22C!q`LwesSdu zs!~Iz%3IosX_V+swMicseiVoBtq?J}c6f@|w*m%mjxX7cZnCpYw**iAMk_*D%`nKBvY;5S$XipPY-)c0aOB8wL| zSB#S1v_yjx`s^{lfx8qok^DT^ku-BeFd6qQh>@=hiV0T>dIJEy*?WS3%h)62CqR9Z ztu?k5=PoRMIo4n@^S6x4aE`-hXD4wgqm|(}jjD3KCTRsA3mYH8G#~D#I#!+!8h5dd zy!!ZC>2}EP^i4Z~{he&3b?c#FITIoIAJ4(UWs`+|Id04c&{qVCGPt-Q9R^j_R;X+( z3`yyo4&S)Fk3(G`84ZD{XqpTW!nr+OvRpkPRaqSvrLy@XZ12oi#;NocIt7-J>Y!C9 z72rvfkl`>*W-n;)q+ia+`$VWP#oE!^sdT%TE7yLh{`B3mF@6s1mxH}7y&uSVl&xcc+ZNMi@69=8Dumqy7LOXol=I_CB*rM^Ybg$DI!^P^8Jt-g6>F1CVmDLee%$n(P zR_eTeA1yD}s#J=pl51dZqB89>Y@Ws7NxBs2ap1x(Zu69@+ZyN@w6lu7 z)1~I*{eGdfXYm^`x0LQ^$U59yA?Xlc! zFw7Ehi+~wNIpf4xZz#_5+=w<~zBJ{!yd1G*K~Sg$`+38qrYvo8g0SwjUa%s`ai>i3gvp0j%`nZXq=fS+2ng%no(vJA09>+x&&V1ERN zW!W?Moqo`=ikw9n&1tDDvVqrBw zh7o*2m}S{YB2>Mn0(nNQ40?f>+w{I=kiC?P}eF05!S)|T$&v)&qP5bGF$>pj7@JXT>4J-n5uIf5H~<4{0JHp^irZB z_yNO~zHKPHw*}OAOJxQ^D~`X(0Y2Xo0A2gTSC&xGle0wH==^S;>p!tP4f6=HJBTS? zT9#@3A-Asy>K9ZN_?AIjc7q=6vHjb!2)+hwR*ikOkOYxZ8i?bJLl%{LvvwD8jTI~i8BMR*nxsdP>>PmY9k zPaAjlC!dFtaI4m}AKQqv9B^7Pver>)`Ll4uUV9LjmyP_BxW_V8p_wSmqiX}D_nDny z`WsI{%b!4*v6xFWzMBnngbWBH>=4ai|LlU*q?)OxiyS>hU_gk87n4n<_#}d)BgmBP zO$Aas5!~Cp2fP<6P?xrey;NpG~jkze#6US5#=NAr2 z{J?x&C-&v5gkF|h53>m?2ogA$+`8S5fdBIWOC4qGBi5(whqCb!&cAU$0`Zxgm)WIv z8@MOD@5n(po^&DC-@*6!Qa8CkmlL0NkkzLC%Y3-KtU^{8Rz7_@`=fwf(=nOVSqp-@ zF&;tdk34c{PRO#}Tsn2@k#X}&y zh!_FPHeW8h#&FI{Ed5IPDH=!g#a2nCY4-i)Z_GHkxj`ya-PZW%H(9Y{aLNB4#A(9}^XnkC${+=wHVQwp6A_b)w8D$w6m5}5&^KDd z46*<%!U=IwM0cnP^m4TtNtQta&Mrv`ko@FXKrMz4sA-CTec5*ca@Gz9fYZ;u90BHT zM*PV9SMhC8zafYuxolLVSnq{}bK`cjs=VCUR~+O;|bvxdf;r z6-jI_(LS^MAyQeS9K?MO+~r5(WxF@i&gRCl6%|6+`<8f7a{(Z8XYYV`W_}2VIgv<| zJQC^o^1igjz}xP{Cu}luhIW`DQw+>ar+>`zOSOn!=8Z;6LNGY2FCs5{P#9Ky#1h9a zambQ|ha4_%W|d$_-y?XuZO3u{_!oAZ>>)!%pX1#!5H1hHc~4LB84EUJMn=hM9n#P9 z%>~Pg?N%6dR+abAm;|xW0JoNH)9h(tx53)csSAf#X%eZhIRVjNzE;Z321JzhtfZ9S z#uJu?TEbY24bc@mcW{`LccL>YvaL!_{5O#^? z0F*<&=Yx|4;v9?xEgx($Qk>d%EkpnofNYQWLp5+wmoJEkFO0NwRGj_oY5wRr(lbk5)Rc;%G^p&C(@iZxjrKDhK)6tf_2Iglr z{&o*iUSY2S_QiK9PLUS^>!c8hVC%kAK79edegG~oEQ5U};eR!-F*YQQ2X-PE60b)- z8)D&(PaqT1xq?=WJZJ0$JI{Y(=OEl&uSUXlg9mG;-P-7>Gsr zc5pTBHAAGcY*zjz7!tn&1~7Mh0taOPq3{M03yF&Fjx)B?zXTH#&lG<=rT|P}$!5zZh(((bD@@}NfGb_saF9pzD6JtekC#iRC?Q$`v zi$94O^*C(Su0iskrI>NfDelF&4Rc-}50p|C^z&LrDCF+?_9}BQ#8NINn)H;YfV(7r zi{01{%b1!f(cu-rT9Gr(zlh8F}mknwr6BPbP`=Amx;oc0NAMY4ANlfj7 zTk_Vg{|rvV0*{O8G0jUMr>tVt6OFset|k1HNL`-@Q0csMx`q&*036~)WQZ_m6Zv(7;yU_S>)ZEB z3;|~Nx;-$1>|Q%G+w-5G;UNPPXnI@L52Jl;>$$+Z$Q8NVTs_^BtntB~S%a-d{`xHculYYpQ>{O% z6JT%UP&G`=mxCk7Q%HgncNF7PaKZ+dAK+&Ui!#C0*V9pC{c!9sEu+FAn2`s^01=P# z`jg;>>~I6mCpvQyoJ)g;zveX9F2B&ceZ$rERZbAPh)wqU8xu?vPdV}@7p^791Qx6H z2otfHonF(lAwYOP5-!=xBhqKpb6|+%MI(o1A>;6SxuF_LI)bJ!(mNO>A-&h^gTHZS zcU3JuT)fdgJWmVj;BCBU*k5@`L(@dTi+YB5{rQ3@#vlJ}m^Ct3hGDJyD#PfRHp2R! z9_8)W?v$m*gDf?Z1Es@}Z4_oN1H9We;2RHL<6#Vy;~_w3RXmUfvF|s$hjOZS0dcO{ zlLp>Sg_|h+@*1~c{qU7uqDgi{OPXo=Xg{s=!90~7gimmI^YhB^@HK8yF(@jaIKgYnrpTJb)I&AdQ*7zvwdW!+Pj7ZF~%C85z<3{XbK;u%!otQstYjVxTnsm&7g{%6| z0LA#~mcW-_T0F3W>mm{{+2}IKF9*WDCRLs$IG;CP10CmND+yF%QAOIWc4cD%($3Fr z2X%)bn3RvTF6`j&Ts{tKJmuX1Vc~^p#VQ>8Gvln^OZ585I3WKmn9=KBgH2@m1f8-S z5qiDuU+r**TKp2ghhozrdWijcc&L`yajnNb1Y1ns?}o+;%pf=njkoIkE@plsvxWn_=1nU)na5qk#WKA(VBZ?OS=!m=zBW$hpmmdX(PE?D}W;rQzWB`NDQ1)di( zCR=+|R1oAtN34nk2}>7R11yz4;$DT-Y>o!fXHgX{{k8Q&vceSMl6Gth%d#JVe%_Qs zL|8rI3C|*}sh1x@ME-mi@F;{Q0aMQ0gfQwjssc{*3z2r2HN4_HT40Lb4798awhacp zWJ=S0zflEXpcGXBHU_w(ZBJYI8)|mA@r!5*o%PosaLc1(2mW3Fq{y)V?ik>2pd-x2 zB@I-39G&9FZPH=O={UIU4?DM(yV;?z9iU`Et9be{Yg|Y;I@ENz*gB+tikN(BV2G&f zVeYTNGk*2Efqlfh%dNNk|Hv@!?=j_nx z`w)`E!PF=vj5z8@YF zF;8<)vOX4wenG~I9xxf~+?)s((Uat*NZJ=0d3pjHg9Vj3LI99r5CUnK(9TZ~q(esB;!U)*Lr(xQ-O`m;dJGfnOo>_*9kqec>{q^e2=CVpHuxnMHQ zMH#D`&%kTxpaUL5_W3X{tsT~vA5%LegZy2bp_)9Cy+t|nv~Y161o4(%x9bWB7yPDd zBVdCnnNLkoY5A`(t!>ibG|9)iTj6|!<6UhpK=X%_LcN6E2iv%Qg>)%9co)Q7e#1Ip zRhF#8ohCd@E{UYot_J=K=~<8C^Ha1`AIfH!fANR#jliUW+?pVEM22+mOrr(a1`r}P zPl;^Pdc?6bUHJ#{H^u`Q_aAs5mq~qdO`?B_0?|N6|MC0X@Ok{8{GSN6lCliKDZPe(`NlslByNE@UymRcL8^>rsx^t$(2L$f-F$94=z zmkLYm%yZ~n{VN6t)4$Rxv=QJ2OtBzhYEWtWAgIReX+qNqy9LYcHeUKG-zDcqWHa(L z8HXv2H}VHeC;VMFcuwl5_dv$KV%NlVStrR1(~Gbd1c+bky9Jv&{&c*0@D$*uB0Mel zX{XKGl+3+o>O!)g1t_;2uUZXn;aaZ6UWi#u)-nC5B2 zg`(~vxj?@<-|DEoA3KjduVU>wLI6*HA-;3RKcW|ep2cjw<<>swqVapDQMmqyhvWq; zK=e#JxrQbIhsCnkV$6uV5^&yWQn$6sV6AHgckW)QEr1;toW%^^V|tj{#|gtVtBZO! z57EQOH`2qhz;D!a1O0;SKpPL>K7|eXiCBi-j8+TYt%XVA&WHVe&3ppnlcga>GS`xH zT7np{=j#b6e=E-gm^-;?+_W6<5b$3_d2{J-CoL9XMwZf+AVf0%&Ys;wbnY1ndGtQ& z+LxB-GveR|)wL(gQ(apeeHC_aPS}NnQd)0Bj?PStCzLYGQ!zaWDtWQiKT#Xs2VA!7 z-1{Fg>PzCuihf-o7jw#NRpKbw#7lzdCXst(MtZRR0V6VfzA!d*POFYqDY70iPM3$R z*gbrl-~9Fbe3>bI?k>Xwao{22A`$rs)5XB2V8C#8915$f8M|lhs*&E+-Q+LI#S7!& z)N8>GtQT95SOotRebu!qMQ?f&Y!y34XVmCci_=Gp>t(2B)x*ZENQJJ~Ya?v2U_xK4D-~4g6;COOz@=5pM|Bbcp$w@H74(X4E`sPP(iQX2q--(Y;9Td+~vx~II19g<|^W3DK!)IL34X~2LR0gI2x@ z+0S&Mc9=u2jhA_?Th^e5&lE_RT!5}(oKZ>%KkAlak9GN5rgWk8=w5>isClgkKg7BP z$dKHYM2!rD+9v4ut$9CM)}G6Vi)%`?H`$QxKE6M$-d`} z-BRQ##jCd~tqTTNQQTA=-Gr{p3kVy$*%limQx0!gqGVcRE#5^$Y;9D1JaD`uZmei_Ahi(mD-0p346sb$x)WPeCmph}iuH!TZX@hW zwBclnHJiVAGsZy{E_TdcV+BF-!b_wQV?jZAW+B!(z>u$dGy7*Ws#^2e-Q#JCQBL!up z*#8fxdTC1$kaN_bHw34=VuY%bwmh?2@Zj4a_Xm0+V?2AK1Y1#1^iD&cePqPI|iTA^0);mttaL zO_-T6cy?p5z?}y$#fAG|7G#-34HD#_X)PvqY5NP&E|7M7Kem%zJ5ICi*@+;$y)A$v z@Xps=jykws)~=%~NyYKb$E`hCCaldH0V5!p)`E>p1%L&2P6aZJbD_$PdvCmJvI&(t zl9%TBXanl?t-+eZ<=A_|H}sE%^6CZ^kp#xOdJtKr0iIEM5yF`eW=^;QuxPR>7jboh zW>ATBMsD+o*N=Ot`y(^~%M1-NW@7Yjj_)W^TTg27sOwLCKPg` z>m*K0ZoJ6Fs4|vf#kQnJd^;W?2O&TC{FeY9Y^g$ubXqBbIsY;m634;v2D8W1P}8)N1qrVHmXFWs z0~9N=^AHV7!DBhA&B*?@W1v;|_8F&%7qU9mh!69!bHy%Cnkj)ocH@4dLNfhQz=eqI zH{K<`rvDG{Kje&01p&s*`f|~@-PTDo>4#iJ>%wmsU?D=E7;CW0T645(o$xh4BVb@$ z<9l791GgSBkYeLO;~c|6g(@zPlSKU#CoYIGFZUMR}O4C^53_9Iko?y5Mm2G16IG_m2)GBtm=KR2G8 z@VyfJP|FJXigEXYmt~(rpOuo^E+_cG=f-D}blzT~>ag)_x%bvx*XvsGpTow*a&@KL zdm^xsf)rkbRgU*0znXS$Bp0tu7r^@ zYB6aAmtw{&s!Ee-zzlIG6cl921SY<@xpWXSr-(!Au}*M*ntbf+W5MXr>VpT58IMCl z+F98xSn`drSK_+QbM!Cj+&|+Y40^sbrYfD=Hv#@j|I%Sf2MxEtJj^Tv-b}MmvfPjc zrM->(Xk>M483oJ+Ayb3S6Gkm@`q=g#C{jm9b9ppFT`9k0 zA4I*2x@x3KBX%HDjk1av)$oxnR&4~LeM&90+KTj6EmIVwn=;N<8@#ivh*jWXJ0E1! z)4wm2ZBIMf?>DQ;Y*e*!+J zJUBVkM3fE9*fY12d*%pjL2{s4ik(kGQyadx8vKb<5Fx{X;l7iw0m!XD6^)N2pgnxx zKCD>M#!RHO(n9bCwhXKd`H2mPuk}*R4R_&0;gdDkt<8d(Qok1K8QZyi8Qs*H5p^g8 zyr|D}s;Qp0B~s5yhjBn^MVFBUJ+(GltUuaaJwc2tf>?XSnGJ*E`PDV5jyLzRD|ung=uRd0Y_$0jo}@&91cP-8bN8wOeTiX zNb=B=)(jCen~E?NcKwK0#=QJ&Y#{z))n`wM^FCm@fnS!*AZ(xo9keNe4SO5J z0E3~u*lRImo;?Jls(D*xrSP~atSNBr1%G2T{pLK$v~;4v^x)482Yt}r&xAbQ-1l4e zS<>)f2~Ma2)wMjwD{ZK`yddbWHhq?km27sMDL;qU{^OxZPVg?x!zT^Z;d2@27{a^%X(m2M-_M@ z_*_RX#7^Bi21;49l(x-Og!+T_C>GQOcnAa0suSo_@aQ4vzi^VwMYrbd2Q$ceSVr|a zZU7NN_)GXL-XyLqA~`^YYq8LQsgOz9Ieg#}P1YZy>m14GUH_JA3KsuxpbtUcnxyS!mN$l%kgJj9YV7j5FkJ42h;DwEJFFgSZ1JvUtG?65t^1O zbCQhdkyc_~O6}m`v|tW|&_#ft+l~7DT!z{&Oso?;Uc)5wW)C2+96v;i1iqfQY&Lk1 zK`|v96zfgYOxk+HGl1Gj1YEeBSt7=R-|9b*a6EW8fTo+RD2zjNm6NXe9;o9@=OM`R zA|S8n1vDU@m}oNkHPmX~37F^}SPk`?U(Pig*YV3an8Rux9GqT~@s*A0$^c2IcHw>* zt~;W(5)qOGUV=&<_6|iCqqByK)s+(C%&+Vu8S^ZDmf8FzUeH4VJ1CU27y!{nA@P$W zMh}mUO*B*@9Ir^jn#>O$Yn6;r632-6%?!8TdH81TRv9xXv&=^_`;RDMXu>SVuN`99 z4L$JiC(tO47MzWeEP!&_ZASTV>?0we#?c<3H4uT4E|PH5T#ra`V)yX2N}jYxNq{8G zG-W}yG5Ua!)-uD8U5u_W5N{QYH*GX{t3V?noHh)8el|l7tTX)N9xg?n@OgC|^Idrl zqNR>lcS&c93@p-P=AZhvMJI;{WuQVwW>tAD$rdZ-g&=E zt?guytl%W=2JlDAX(_LV+VLLZc!fg+DKYeJ^Y0N*_`++5w%p%f$|yZY{ji@XI$!I{ ztS+rCfcC++MwxtRXSx7-iL?gOte;&8l?#CPLb&(h1Q&q!U2B$x1mx`2=ADpzJCF)& z8?ig^i%gNT>Gf1x?=NnGYN!G57vCHWm51$;H%FtC{EW>JWH%}K6!mYs9&C>sESi;c zLa5`!{gYli_DEfR2|e#)>h$WQ%L3|nQ#(<9yCd(K9ZBc6s^dLL@_(x1!%6b5)bYtA zdAitDKO}#4cV*b*04fxTzgD%9m#Tl`^2^k5O_JQBjz=WPo7C~>B)MN6r?i8$`oK;0 zyxB{W3UDeMJkaVS`5WqZQomlSm_bE zb(bTrk`i&z9~GkyTBMHSo7K3ykCNADNaEwjn>`}wx{>O5bdvmc>Uc_$+@p?XCCTIY z(&r_~A5zCl<-cN5quo3^smv;MyeUckygJ^IB;TTr_aw=8spG>*^8M<#80|!VqG3kr z!y+ZyJXMg3PBi|22)eW{VRf&XY}zDR{?Z?|8`$kSX`qEVjNG_o*PEv3{v@V;2Xr|Y zj+CKbjwn*tL%sO7C9m3`R}-Cb(^1Uo@mZ<0+VN~r{&lS~^RUL>@di`oS{VI zrTr)_lYzyHZZKV8kcP9euP)RFubg4p4%iSy13K<7jS!IxXwj{PUiph{!PDr1e8=AE>iJn^BsfE^lmdl~j|6dyOXy$3g?^2q$j#LI?zQM;#WE_R8OBbc8ewmL=D?x(FY*Y2TW zyybNK6AHGxV?ExCWp)o~>-5TDD#sB6FHXTd9e?X;6*D($Ms1Qx6YTgS3PivXqf2G3 zJ>CgN?lbVdfMQ*IRDgmGVSC1Zq6AQQ@sD^kez(i9%_SnAD3#(3c<2a}o$wd}H2evr zTs!eu?!2Q5sA&F#BJ@xi*2NVB13&d7)Mu82WMqyAP#L);t0==acoj$rR^b@1#oKX? z>So#GJx18Vd(+;VzT}brAYk5EjvFK43LX#KVq)(V2nY<6fqZWn$@ojU%cxxt!HC>i zxEt@=42ycn7LJjKTaJ^kaBF&3!embuXxn5QI2iX$TwME9&yD88v1|`}hT={q3GX!~ zB8-O^>7pbFZGt|h1on9lL?IA&y5QgU(U!qQGS|$0=v%i|0QEywj>eC0g3mfKibez@ z^GspZom8}q<3VibYb*NbH83!KS1kY|J(jvTkW2`q|_ zl~#*BL(9{%=PAwz$|+?Ob-gNk>8#B+*%B3`mZy6Bm*L>@1?Mo0R8;qs!FI6fr&#h* zN8J0RUR>Lu#47eJ!1E7Z7}tw-wnpQ$p|jW=d16t2V{qp})73hO#_`-t8(^9`!aeCf zgio=`XgYEyE$n6~6YJLNE+H%YRf0LJXD&9?nBwzwTvy2u>l+ZY*JCYU7;RR0uum%^ zJ*@I@&fN;bRpTS3DGdA;C!W!j0zk#2egNao(_3l{TWM0q-xOxwEEI&F(n?_wSz@Zy zrlg2Y|L$KxX2d>?S;3uuHGKo(yu=`E z-OUvds33n5$icxGiQU&H4^ z0GKGvG-^?J=qR0&?-|+kg?$xu0)unQP3GYT+#Hx=Sc7(;keQKe;C2x^TRRhH!rd zymM|J09)CH<#*tOljd?4!T*?_`yk9ZcjIlFR-yT6F4Pc;My5>>pfdc{PD-!G3>p!V zk^fuFpN5DUIiC`FhwIOP93Dv@21hrIBPSDj&`j^690HMN;DBI{B8T7btn8;E^wG8b zu#-}Qhe;B;1FK=rdy!3mZyh7q{L8UcMF+#u!_&4S2pOL>P#Q3PFgMBEcVY3X5tn~= zURQoJgac2#Jq0mB7r|OX#dHr!L6k~!V>V6!vGL0LVf3?aiq{%`8K1V{cv^-SNUI8U zLft>bu^Szz6?vSrG)2u7pewkRXeT@%|B8@|t#LJA_L_n%q2cc&A&Z{>S}f??&7CCU z&dn$omT8^(8x@paTycH+4Z^er4ARlBxN zN!%pir;4VDK^K-_?2&};2JMgQ_C1BAiQCt+6*d|9UR;Xm9+ocaw!et$0&`Nbvy^T~ zs%WaHdl7lb=ryzl!5F&$ZGPv)Scv$=yjQ?r=vX)yKIj**aPm#x2VF9AyK!|$<_HTQ zKfB>2)Xx>c#Y!Y4!r3b63mSml2p7HaB~-H+213m(2?K;bUPc6FRj6kVlZ>sP{jo}t zsW(OvHkm~i4^chH@iJsEl+jYkz1~d%et;t}k zW0W1a4-dtoEOG*_3o@nwVGipp8_{yWe?~?$7lqFj!sw@s1Q!d)<}tz0{m7ckL}&pz zWXqUyH0*f3i(y6DyBSrJ6--3#1rnV(-3?n%jxA%$GchltA}2}6ic2}ocswzMna|u6 zv)%QG5MYy{pGslo=@txcF-6XB5p09uWGOREwQKhd3@79wcw$?Ei{R)W4J-Dkj+|c% zF2xMRqK@qW0+Xt28x#XleA_^aKm5c`8hgd*r2my7xoMd#wdlYZY^l7SUHZcvM{5YsC>f|kZW7WTm{yG zH-Le1?=4cu64C~OX**0-O`%Jl!KB8^|9BNlZ~t(p+CjJvz{6g)5)*#j1z5p3V2C0Nl?Af>qbG^3NJX-5^AYkYb?QBo^#6)oI7uC+G#o_W+l5dZ#J< ztedj_efx`7zCzyh+0WI1mFJq$^MbQ?nNku%33tD5@+Pvh6ke6tO-$bn4Tgvdbib!O z7y06w-Dhmd9M9_uf{6C9rohusf}R{f$MaDzzlQ)fJPn3OW+%ne&VCm96>XJ8Z|j1O zaXHekcHB$z#!U`|rsQi~d*k)VAX~cj=-+_+7=B@iQF}+Ve*mS zXl{;?gqBF{CsoFA7;VD3OUzIE586{kR$yA;2b2C%(yqeH=sx?F?%LHUg$n_?(hx0Q4uI$M1an- zqQKrB_NPYT*9cdryZV5J{qdSR!1Y7#=OjsZ6-ZYhAbgyM1gvPeE&`w{?|rb1wA|en zL#aCu(xZ0M;i*n~U|>wX1oWff6R7e{&Dna*sJxZ;e4@4@K(!I+=0~W!4X|>J*mBj7 zcz`t7H}o0fTLW7t@q%c1uw1YGArbsD$kgV&tE)aU z<))r#nXMEzePMD-UHKOgKmJP!uN6I_re*(2ph^c?eG7QzfDKyx%O*0hzVxDeHsPvN zSM5e8p2qJ>)$x=h`8ahP-_67=ZnrA=yrl9EsN=9`jEZ^KOWGr*z3Cn^SH zD1Lx5a6@IsOec}Z1a$G!wC1#wLh*}u(H?*d6@A#DK%5rsC1gm{zlC75I9_P^SHP#8 z7*bv%>c=9IyA3o{|BdPF`~sB#5Ldiy!Gd!MLQ_iC>WsngH{{jd_CAo~g=^t9Ir^RH zBRPQDw($QG9Fg!8Vufz_x=FfBFQk7cIzaHU=}*;2}b@5b76Bm_>Z|0`!3Qp`1E zReooUxmLH9h@BFQ9%l&H>_Mr$0Kj^t3OK{%Ln@8Ju|B7R7?*0kUZ>K0F=DOct5lih ziz7i00zZ4Bt{UJdIh5iMtQ5U#j0&6)-X zO1n*`#cOHi#o1Gfi~AN|cI_R-mE{Ntn3QfVnLXjQ8*Z9WJhjnTeA(1SK37pyT+z?j zztY)v0GBKN?bUFCU4F$y^;cbW>9CPkI*YsXnQ`;9KIQ!@s`^ZwHmUK}TW{)JQHK9b z?K6(5o7e}EF7n0NT~vSZ$oh+}`laivXI^;I4HG8bFkRU6=8MDxy?LSNl3|{oV8Uq| zENuDOmSHXsC#KX%Yr4YAh%F~Oriu4I>Rm332D4opdTkI=!x_xQXmor`iwq?47|f5d z5mQ$LM`miiXgUUCN~||bqc6TSFjrieX$An6)H(*|&Ac5uX(p&KY_MS;zY5qC)+6fu zSm<*W!Y?ryzk&xd%{jdJxKe^z5%H4%bvGPW+VNJPs@EE-#i_q#-6szBLPP+}Y9NLg zR9-B~Je~Er$AxihQJ#2vW~xaN75BYv!gb@WyYbeW z<7oJ^;r=T74G^y!E&&q$`|jAX7;^H0@0-jXl_GGF)x79uzg`mZo$YVy=wmiD0TVvl zW`0^kDJaqR4bW%dRp8^Bx)@m#SfyMyaTq?-R5bReJbY9dxherkOFl;K3Xu9`SJjG{ z1?H_{=Y2JVBo)P*orRLber5-AoWx$+pg~V6VFr7#b0;=X!zUnir$DJ!HLweU!(JS{ zvqZ0}Z;kInBcHVDVSzbtZRaA<(9wJj>J@_{`--V!`=gCU8jFHobTmJnD$^+LEB+s} z5zlc>J^JFJ&S)bx?Yg=Eug$F$CieM#)MQ?g@mWW2_y`QlPZ*c!28b|0j$TM-2MR94cF^%EH}9gl+bR)tl2m zrSntN`GFvHr=U{q`-uyzHUOS_UE_d@}d@KNjPSF^IT>x(@d#7lrj87Yzt*Nck2Fyj^nX3~=s|L1C z!E?u+gHBX2phDd8SoaF;ii?|4d=nA4A|Tm~-iuHpbTMfXN`zD(Fxut~iYKD|5M7=DgFYN@WWM#=(Y6hB*!5Avia)JjRJ98!)@+6kqg2Cd) zI|^$>=t;~&qoFABU*bFzdWt_X2PGhDwxzRNakbII#rVq%bs4qt5@`0kFw_pfvU6xe zg^JgpokPaq;j)aJi26>tZbIL2lNwt?_RglHRDd@d;d&JmDQYGD3vu3R^WVkv`tIG} z?Ke+6%Y3x_Z|3)8S^lm3`7j|s(>MKBYF@ohwcYq+uOGhii8B^J&O}f2f8ANV+{0G*R$s7 zG^;Cr{gCIN7sUB3_sHOu&~s2P5JEjw569xvDqB4BHD>4yUw5ko&@tYRmlPHWr z52s1{s)*cxcoFV(ND>b}+I!H@3STjED4lZRpLhlRuZa||xxepH6Kvc@P4_#&NyCr5 zYVN`Lrp3BN13`;SDd50|q z(z&an6$5HS=UcKW#eyGTVxpI4Iv0Vw=~=;P|1uwfIjA07@PWN&RfC3q1T~1Q6w zWF$%TN!y2Sv-yBopP}aWcmo_fjhAWDdfE3O?{m!)Y`Y{A3JH>N#w z>l;f-A7T_ZQ?aAesSHmE9X@;a-|%Hh6*CNpa7R4u&SsNI?7!J&3SRw%8MLb01G*gj zU+HzbkH+=7gYB9R13ka&v@JKISPg+Z-r32G!=YnlBZHvS?zrh2tPDHgf~Vba^o0wi zEQweO#LREagGAYv@WdsidOPuL+b(%e!e)-=6xt<=2I4`AZ;@N_U^u1CoLGKaQLAFM z@B4FDefsuAmbdf4pvAKcG+=vh;t4b0lCo=@`X4k>n*pKnM|2m~m*6jBejdY5s@n+r z6gY!;L+p&pbnnQ`n}-Cfg3-=P<{S3^WQL2YZIc{3jaI~XDBotTT{7LWRWuDHch61} zvJdGjbK?2&3P)Bj2u$s@z&|i(g0a>xi?nY1sfN?Q$Tnvv7W0OFX|2uXhTpgF*Hs#^ z;otqM@{LMsrwRwrfAHVTc81^wDV7eHW{@{q3~6tf!4oaChQ~L89&O=`*^ER@Bqn2? zkK)I%khAq=dwa`Vdf_YaLaD{UooSY09qopQx+M2{YY*K;k~b*#w$gObv{9$W9&2_5 zGCnNd2quixY8j3@I{+OUQ&f&jg~jH)1pWoF?}Qbr(+`M`=V^ES+DfpNXIfGn=NM2> zQPoepvbd@eFGgTF5zVm7ktsPg8`L|CHY0n|4zpoCh;Ut*7NyoXvVaR=waz;c`Zp6R zC24eXhguSBBdxZzHuY}Hp7e6@Vz%Yq68*NF!q(focrLO31FSXo!PRXrsun^YVBM|$ zi3>W2sb6=4lX?SID4w|4UT&0HT-mLYW{kUW(jBdO%31oxoCD`oX)6$VLmbD;jTU1L z2OkQp$nssnqI;sqqQWeGPCsdRrDwNbQ?cb~-E1;ayrk#;)o!xI7!RUZj)vZ@s}E)rr!i3m#PRiX{0XO72XOKdR(IljKh-`K59B`FLJx>ZjF--^NcU z`EyEs8@O^T1M)j0oxXry7x{g#B_jnhe402PiNTXo-$uR$RC&#Kz@7u2V_xKJE3BZm z+=2}b!$7>0Jv`2+S1NXPv%HsJfGH_~&ajUtdbg!qP!n8UVqsO2DO%Q#0tRdN3{5&d zw1rk?`4*e8T4c1vpO4$nwOnW7@N=>61ERQC8#hi5Ki_h8>uTiy>AYSC9zN2ztikQ) zTRNpkb(59ys@|5@5_&#wXxe53;x!cWM{6}A(1cX&?lKF4{SBLQFA$A=5mHe2Fm%Df zBLzm`4+5yi(}bZM69zXTSmeQtLx*%itA%;+fg*5QT?9IvFd43nZ9!THKNaAGg&_`1 zD&?gFX-sXxRmS3V2-izMJow%xC6V;|bz?LqsA>?JhB;a3_l`v_)MWIN(+$*tpAvlq*fo(BE=) zt6$&hO7Zo^vPxu4*gDc!99-Dnl9ML&oNoqN{x?2=l^0l^lWlqpz$i;E06LD4t=v}j zH#-t(*6DYUw0s(tv+p_)=PFyI{C5v64Hni~4kWJGa|fZhct69&sFp#Ntr;iPuvwar z;I?J3g?t0N(#;+MlCCy$6p>s@_rO-=gH}s8N0JLH4D^t4n#pw4s<2qUYrWCrqX?aw9)$h!r`?U=D7ahfGP)Jmgw&OtD;z^^iic z4G&?PDPwe>#<1srY9^f`kfktes>Zy5z+*(0qnwj|alVDXesuMYw}4_e%x53&ixUXC z6s}v)^C{+7rp9HNmt=-7v8i=XzHXKUNai{U8D~gmS%hR1HY(V$!7>A7WAMC;fPgXg zVu-PfGc<72?@^fWD9G1Cr6?Q#K^#c&SNNy0C~#OCIF;G4x+dWZtr zWw<-ZxNXBkbxd*B!af5sj==sB31c4b4J2i&1W4w; zWC+2L79IcqGeQCmkq!~J5yLbMw?RfQO%YoUX9PcllVlvXdR}|kG#-|Gf>MqdbR|bG zZy+-S1zh{bA-bPqmcvx;=)k_HTC@Fa#Y7*L46`^LvG;6u0MZfa~2(vG;dS zyU=wju*sk{w|nDdUds^19cY&ry`S$vWcva1mzuy!Mfhd~$bUm0AwUuit{#LOI&@Kl zB;FT0Wa+LGb>~CBH{7Y}74{KW31vHz%>7wyHc~M1C-9JfUq1q9Fg1vuB#iQPX+u=E zcYO>6#Qh1-$(izjVpNDn1jqmLFUMVw`JO?)ig|~sUv83xpGChojr0@GP%FhtY2A_S z@mWYhB;o!P{+2^8P(zet(dN!s+H+ZA16^moJ6^l*26S=0k2ea4VF-8B;N$1Iysf3& zH5IB7ASlF1gi9`|(6aFP@N=otycOn6A* z!33jOawNBdpCmkS81AT4Rfb8%oq5!FL=MKd2!*uYgY3&a@x>jK^`2)ZhZh&|-0F_Y zw5>?YMzf-?Rq}a`m=>$b7cb66-=XU?0}`oG>|EMOGM-uOn=oSdDLf=|j~tSvH5$d7l|y0q_yeAvn=@pT%^60SoHA&3Qg&c@z1*7ELS!^m7oUI(vev@ z8!G9WREC;Uc%R0nlzb^viU-MLB$J{+;`kHYjRpj0>Uco7;}YSyizXEs27da*gYr9z z99$tP#W5w_p!8GUKk_Hsk82uhm37yH>KqMwQEK;SR)TG)xG+VKhI3b%&&gV$8gpWrp)RS&GNSsiFIyF%?srbYk7x;Plfc z#)U6$$c2LYh-Ey2!^zv6(NW&Om>Bdqhl4&dE>Wit()P8fTI@nn-|TnPZh@FF%EkWA z^}TeZ;=u4kVhnBRWeLIKj^=YP;_Vw+MWpWwFHFq~u57kUX)g}#uuc&zx?b33KWbUg zs`;0TrX|onoBm=sAX?tErim;6dVU_1{I3V;EjkZ{DRdM}8|AWM$Lbl8+7!D!y=EXv2&rE{sScPxLzgo#bwU-gdNb!h)eHh(LrpCEJ z3_kdqv26tWT^oq~#Fypy>QH$4!HdTc1(J20LLoSIGDIAq93dASk1Yeooil?QB* zuXc1upJ}UDfKsC2Hjr}f-i=geiiUXC^T=%;r7ZW(&S_bk;2h4G+tP}Jf3Z5Yh}owL zibNR4*@SH7B*6H0so1{{5WyJamyw)UUg&Qt|5tK5(5(ll<7DJ^Zzbnv#BX}kt|Sxd zXFBo?mGl#Tr2s_l1A%Ge%}!Z4bRPxlX*XV-aHiJC6DBU-j#)8qg*|R{rHbjoxE~%) zb>n`bME$fqe1;%U6O9q;ATf8PcJu*%^xb1n%cPSFc(L+UD#V8D${o%}c7dZlgtjrLmQ?|Kb zTmW4dz5p3(#~>5!=D)$w%RyKiO5`WB0go73# zOg~8?!?A$9_)nx^;8Nk%QtMTz7)j<|*(*!?my$R(tC~b~1yGfIottE?ab2@vZQ{zA z%Fy|CH|!Swjz{1rEkuR59qmNa!0i|%8Dnmq!ls)-VC`EViCzk#!}}KD^;~qwuWlHM zt(CO9lFYp&mr}I8L;Mi|5^$>kg0aF(69q}aXeSZ6304MvNW)ghxCxHnI%)!Es|4m) zmT({}ml>EYrj3T)kUP$Zl--jMT~NOS$o=qEOJXiZ!#0{AE-~n}<7qN}@}6yE=WSq? zUFiZVxy(TElUvpxb1~Gn8Csoq?6#ux)^V$#?VH!s>a`maqm@S6+M<Br)yB}iuK4Mv)K&A&xcYSb^y^Bz`i#?k_NpiT zREc+-ae7?*bh;W{htD{@Abz@=I;~g#%17H0KV7TDrDvQz7C${!iQ`!<<<&(Wp|yNd z(Yr>?NOcS25rloVVb++Ss(wRPBppEPRR<0DCvtJuUz0IMT)7Xv)~4Nq0V-Jx_%#Qp z&7V*T2l!WjQn>bGE}bc-((PZ^N)e^TK~_!qKvk?915^dE)wV{dt)po5lA{PGVm`jY z_n~gJg{nRFxh1`a@}Zv%(I%#~bgL5kD6;}*n3?*CC11g`BcJ~F)cK1V(CG)uVUm4L zuM&kw^5!ln#^C(VEFY<)xc(~M3mOY21Aw;d8)oSe#~p%KvX6Gtqd{7(pk8};QmOyU0z6VOfg%JP4kfX;RN93Hv4 zyr0C}wrqo&>4}?d<-rrjEdb6muR%2Ae1AV|Mec_0Y5Ga(B5k_1>(LBEIL0hHq%3JM zDmi6Q%xMhEb`LoZBs0IQ>a=8YnpK28!mfexa0XvEWwExG`c#ZEW3bk|c?R@d#NH!9 zy9Dby??mVK06DsS3(Pd(oghgYwA&r+&B$?neqXXW$v@xSQX^fLVDOx>9ry zsSLzBWB7fqI5V=7?%_EHand{H&A}@3_a_( zS~J%AV}Of~d9_ATh%Jfas!g;%19~{ulv9ZqL2v&q$YVhKWuyh_t`b`wDJv2yUxeQa zS))nQ)aHR4{M|nJuom#`{BM>(e;x*X_|!wCiaje#iOrmov#es&Jt;=bj0krkC~?ey z*MZn&v})-W-OO`)U#LSb;1{=xJA-^K#L;8;iIiC4+yM=^%&c}2 zgPw?>wYT7@C4zB{yf|oA?{t_p`Aju*OPsM^r#!4Qv(x^v6aG(sx55)dz&7pib#UzYW7dzp%8yV?3# zB9r*9Z&817f_~R#eKJk%R-D_hv6A~1$}&5jcAM@Z{Nm{`HW!8^=DgyGH`WPeKK|tp z=#bG>eXU}5S8)3`HTTB}%2Ub-invIm4|K%MAED#>&Qq7cQ7(5PA(HT{9-|4^-x2oL zHAUEq_}0Q-7I^al^>sj=d%%# z@!8s?cqx_{iXd|caPltOk9}`6A0dWoKE)yw>JH!LuC8!*F?)F9r#-W@^MNr#)>Gl9 zi^3y^0=GeXt}wAqNpd7g8pg6%t1NaE);d1xAnJbp<)kEk+$K?W(q4dCe8knkEyg6} zZafLx&&-n)q6_WCm0-VHfJfsSa2^0Jcy3zFIiPG=0A42~xzq<;ovnzyY*R{{-4c5I zQiNm?_szy`R^Geq8dMGLyZn@NZEGSo@HG-2J3G=XT^kMVyHc%M6uHgmttkan%7~NM z;+>gkiOhF}*TTx$3a=OL9_P@_`_&AP_|Gzm7za&@DfnRzYmXE$q<6oYg8rV??-Eys zU+?A!4FX5vi?&2Pgi<(*fzNcP1B^j>=uI0Q8)d{5_eQ>TdEo*ygcR;-w#Rt$xGbUtt}gipd--Gq1C1*M|pD0*v7Un~`&v2_K(vi{aHxRK^pqkkBQ&j^3hz`;rV zBdtdE4@#dvtbE76u04~HggF!zATc5Ah0Kt|Nmi0}`r1i-v%Y)0dl1OzSZ-}X^o3aG zw4NQ@HK4yJUx)a(KDVdh+PAw}g1rY?AIcV!dmFn2b4FT!{IA}@BtG^_tQ*9rU53Ks z6m0hEAUk}C^$Dq7kQNd2U208DW70U`zY-&k)1Xn_N1}NNlZ4Ztxo4uuLzECLMlzzw z(q2PsT{bdd^t=j5xLI8&!UKH{SoSFc!6S&l#!mUM>;Hjem+Ad@sq~T>z-JA`q=8a7 zuO2h0fjH2jSE2ssJY-->dx!|!$fpvy9k%yW%C;$j6Mo_v{Q5k|3hFHU9e?v-#T#^AW8IiIu`e2HML5R$UG&->SouhgG5p@DGaN3ILwSy_ zjR~cJ!f<$_8T)s8+Gr9xGP2|ySe!zc75l6iS|kpQ&#f`7R_=yP3Z$MbPQToJodala@ zGd)j>BOSv5U1DVu|AsIhHU^>+P4So zH(H<5L};3ZNyP!K(!6%!_{iP}No_<2WEvT#zZ_ke?4Qm?8U{pL%F80lIG40s_?iHD z^-~c;MlG&blLLK-4g;xZWX?6X?le}(7|BAr(B19Cn##3A)(=ENyeL#V_BqrY1?oL- z_Au;WbZ`$eT>+KNHx-vf3qZ!PxjQ_Q>nNX7h-C0v;w-Tn7%VWpE^{OGFT-T*)2w$& zZx%Dy+HXNS*FTwK1lS3FraofPE!KEIn4=h`4luF6=*pDf3!cnr&3#<1EJ^X?-Z_Y= z%urz29tj3((T0u1=gXAFmb2Na`__nQm!1&x^K}=C**Dka3r^Th14EmH zkAG=Fp6+&eg0n91i6!ltGivj6tE4>K10QcQx`pm_@mOj`zV1VoFNxq=QE}Z5V*M^) za5JF=+*}9X)m3%Kyo{AZ8>qYycXw8O|7xeK$f)NY6&u4yfNeI?-96%z($6zB@Yu}cf!J?RNJ ztKmI#8R=W1;GLs)TTfG`h;RL7)8Ip>j#iMO_IJ=go2uec-DJrZ)u(5%Ogw9d8};V_S4u8Tw#}bxFUl*hJ#G!%$k;&cYW&?MA=O)U zS=*N-Bi|tUp!;%QlS+LkS6;F?zOJ6N=)$FrPfEGleJ=kbMlLft12G_)8o(R zJHg83;3`Sbb)1h`@5+$u;p|ytUR2OKVqqfqZFwqF|4SXbHv@rWBSr#H0gKZ3;f|unuhpi_BuoM%ba5*AB zkl?E@rD9{5Yci=`fJX_(eO+;1%I3sbqj|ME5cU+RjLKS{Y#)-!+Kms@LFQ^<-0k4z{b?ODgM|@crOu^ zwb(uJtN7_6mW9{BnCBIkk^ozanz;2LIJRpdpq27MA?*oacxqUi>) z;Wad%|2O!o)B@UIgG{d!qc`N1aAfnlq8qRtN-}Mc;_MAmO)Lp1NsQ~hXb4uR{rHxQdv%kH+dMiMB(7FU86d@`XCHUY^pzhs>&mSd8WFsW# z97al5Wq%G5KgPFqNtSFcXKs8nx+dd`^0@R;DFdO;#w?~}j?@wXlJR?g3*;{ijR;Bj zJCuZ(VoFnTEk;Gn$7C&VG?T_RgC#xn8 zv1pK{y-&fy+%bq%(!HVN`x9Sp1O**8xSu+$*Cq3);;}O|XnEt!dj-2rQK6 zoN~0LFUNgpqdQ3iUGr9JF^Fh(SfRkREsq>B1K^xKSo@~+3Y|E56Ijj@;d9#);B)pp z8e9aFo8A9(VL|ZdTh_7d8A~Bts42t8}8s3om>8sN(?YO*f$$SK!4JS7PucC6-j+6m>^B>hs7psRL z-IZ=0m;V*2lW#yCC57gHUzPa;3e&N6aO#fQ#nqs9@C`6(=`j0{LB12REE1JWh%CBn zE%0{eU7$S;VI?3;4phPRA11t$(k4+b7!w_UhGoGCmL7p>Ww?hHo z#h&4RyuW4mpWL0_gU8`a1TF#@c`D!|^qznTICm2G_2g#wc1$K*IJN^5rQuRi83`e{ zZqs07rh}eI`*hdk9gu7OaBVO6{MRq8>(icW@GC^!7qvYhd2_e5Pa#Q)Rcponr9*19 zK~Rx)>GMR{ht^(cTo7SA??6!hSCC=4{ytcu?$o}xT`|mu2LQhz93kWMsEgAdj7EH- zFwjW?40FY?%dovBKp_{5$+JmZ~;1D&usEUA;vk}ZM^*I4;CD-)@fTiiiIC^DG^6L zMcUZY2drl&8m|~284M_c3{##>4fejHKwHs z#jsj6yxI=?4yo<1W<cj*o6K}nC+@$H#TkSw++uHQ2s1ig@s*OPU&0so^XIEyV2WNg^Ed`BEA|$C&Tz$+s zT{c`&N?er)aQiXqcWpTUvD@GO&jA<+8Z4JS9nfjXIu{Bv-isk<6~07=NQ3iu>!mvp6;TB2_Z}sp3!cq>^t+s_A8Q zydy!b7j^*ACf0_=2h!2EKnagelMLmE=`i>tK&p0e!4jJ z-T=wQU7=2oPP(jC9ZyM;U!sm@CCMAq@w_DY&FXk*k{lTW#RsdhO*|nzpiXYWdf-L! zyd6n}*Qnz?N%D|7KAa@~hdMr)B!5>O>yswDPn5hs%CBli$JFBS^ns;G7wFV+^30j5 z%dikLd^xc*Vj~H4+%b`jz%6?%3uJ}Lj z>ikI*HQC|xYXT8z)hyV-kQz_xU4SUO1D3p6Mqq18kx3xaS|u9B6v5W=1E%7JD)^78 zz6Mn?b9K!9;T-&W6@B}OYmfJa38O-6HRRZXX))_(`5Y1+tTo#Jx@^!M zL!L;Y-E&_EE3Uj^7H|s9-)i8av)H~&lMcFw9lD6b@ep8$=KybK%$n?2^^=;xj<}|k zfQYciH8v6n#BS_}y#&KZ!j4V^*rY<;@Vo((?-*jC41W*Q zZsuU19>~;%EoDFGFl4uPZ9(PUb>z1uPaL~*@e7xAhW|xkvnihr|8o8dfD!g(hgkL_ zUC|SpRaP=N?+*KudSY`;FbNO2K-hN_?G0;}>pWD%xue#?pEMo7j_5G89XKf&_suJ91FuP}*$?epS(=A+np*~Q>&u)9p#Ob<|q z;;a^iuf-|PeMo1ttPt%-4kPUb_*7m&sW6p_7D0vEdkh97b|J+`#_l3F$GFm?If@`- zPfLD=Sn(sSbd!W#N#ioucqn`pSC1{qeurO1cm?N_GuP4;5c zMah`7UI=ET=i>Y{tfO9sUGsZ@T;Ewt`$$UejZHJ@koJ%9Tx<_B#9(A*w^W2GVsOez zgIIAtN*OvsLUu9TjZ3zqAf}U!*-7lM_Qx5rpL<9~--@=hh6Loxqse>z3FLi z&OSh;_T62Pr9F_{+yh|l7fHZHzE+h-=_2l~fm_iN__Nr%LMA^RHmqO4X9@N!go9F0 z+&)C3lC{Q5WugtR#r~)y0g`YiS?^pKZ5AO3^&{;zgniPh7`j11%`coDJT`Sx;Ut;; zd{~Q&vIRUOkbC>#u5EJfdBnk&G(5D6&0_pE=nhA^W&fm@yGfm@MHQhU-SrX9zp?O6&5zx`W?cbtQcJBB0yOL;axOgsQNTG88cAPL43 z+$F@}ixk^F7iqg;&KFUVIRDcNUfMbBaW#En`}vU3u+d&YMKnZQt&)98;w1^sR+IB( z-2sv~mSp!6EiPaq=8h~eiE$so8)R_UCL~xazH!)U4C6b?<*i+A^C{pHJUwkwbTG{m zeg$glppW{Mh-d(|*Q4KJ$9&?i?co`%FVSoBV7$C6yGpl59O-SV6FVQIDc*=oMr5b& zON#5cvnmxASN1Iz&%6PmGR~5)&jD?`K5R=1zEftaXEz+EVu%59db#bcKuOCV1(-UzI4a)Dvw5UINy z5ahVqn!TiBu9`5y1c>EIT0vKG;cMuKmT%b%{8ZAO;e~!Sa6R5xlA%}1jNC7vp-nb> zVhV&r0aFSt?{8C_r3)o9r;8&g5hcUi$#LasM|?LS`g9O|s%>@J3YFTax!QJiKwM3^ zWO3E5=p?zV%r&+hK*s4z-GXIdW!&WuDLLS80w)Myg9oPgNU_`_&n3>EaodOsM-3`2by3G2py5&uZ| zCAd$xTd{7;X~Jid@NX;&Q8`3~F~W?DI!z^6>Zx3V@GLU3Z)Y;ayo9IcfUIzq32!un z4AC@?bEq$?0p5C4Cd-i_(s3o;d`&$~GvrBP@F<%zBV6v!K=SdSpWGL0-E_=DgSjFU zNb@qR&9OcBb>n{MRlIaW*i}M~22Pd83$ve`5B!UhCi=btjCJ5`xRzzkCRj^(PGTno z%M90oVJ_4g9xOievi5TYo^;F=cv4w}T+c@d?&u?ph!@!aMVZMInIyBr%ONuV1TBu$ z7}lKl&0GFl2I!ZHt1K0@OA7I&9hhh4TCz=Ii$6U*=>3h&nTXtQUX5W!WcAehB_8i; zVE*H=RP()HV+ZqF+{T&#cmYKN7#4PrlOP~@?@Y#vWypNo_Xl=s^d96rwW-TxIrNE&ifW&4? zdbn%@1b=3kfzX${=UVqZz^M%R=gfDkB6{cHT0UF&{Mp8(s@6w;V1M@0~9_S#g5=cDz_6vaN0QF_Di#{gCL3X zF`zklgBYfZ42yuKvxBcnoT9T{+Kw9BnCrNO96l7`U-nFNVBQD1NyfV5E$|%^$lup0 zxnD^_B;hw?_UZ7qh_Rr@)7rO}I=TG;6ktiUl1O**Jt#90xz1@}@lqL{Ed4K+s@L=A zFyBk5;T<$1BSIu|-iaDIx`D~%*NBpg&=R`SqEC}a^3jj*@b-HLjmLsO@zwv-t2AVRyK@*whZxCtM|TGZq)35}k%Sjv zFKx5=mt!Gh)R%Q(G5g})U1h&+50E1zZs!d*>jwdHXY<+^qAUD|%dkXW0_}nC8YWjY zKhR&0CiYvRK8Upg~_^|8|6Y+%!#StFq-@)&2;|pj)AHn4nxb$Ohsf89CszFS2F# z@{)u-&ek01OAnBQyA6EMj7EsGmVpm?T5~lfr6stVkCZ#_t%%aWFMKk{;2-Z}1L}+7 zqHOt0n4uF>Cpy8M{fsR==wD)6kQiMP5LjE9zAJ`eBc01)K6YWkvD9|bP*W${kw4tgT&XK)ezmYe@E^-;mm!|=_4IB*&y%(Xe_pvE%#}!6W!oX< z&l#L1#_qz>bS6ws=a2w`LYuQh*K*8^YYPBG?7c^5l$gfL9wC^FoB&DUP^s3=vD8YPjh%}((M4TNW z9tf62iMx@1Ic}jHDJ`NgN>b0iBD7!OU(9&wr);;psPUsp|M07TruVr99xPr&BNRj9 zOtE4*?wJC6D{Vj+8Wni0177oCSYG7>vjo;69ve@kN-hNkMDf^SAe5JvK`jq6!m;i| z)xd-cQOch{r?d-@O|VxMF@|zG%#i;Ie;-&6!%qxFqYb4!2#hi!dU1b@r*1^S(0r^M zc9n_>+1Q#BW?8hJHYH8ga%Y+-o{iQtJc(M^ZWMZm@QBNR*tp~dd<33h#wd{dy6-z0 zgTtS(nG==1eb2(wQLenN2qt5E#;E6PIzwrm96ftvfLhb@wmG_)qOQsagZyrNx(1JG ze7le>roUHbL&n15M^b71cjEmcdPPZ<@m^-EL*e|=N%Gn;WiK|8_uj{ZhnaNA2ZWE7#@ zxOToGQE_a>oQ8OrZYrlTZM3CTgmP80?ikI3QuOA*ZZLxmgxex=6?S~5`VerYD|#7+ zrtxa+b7IZqt^Vc%@EoVjuQG{KcWcVjQg)C&CTW&|V0YA9a3Lza6r2x+ja^{5VhnyUE-!3Qxo~<@_g0;)_ z3Z_s>#zDNLyf@tTirgC_>q(K=wu@7g_o+2w3Lb1pM?%8|U)0rzE#tbRXN*=JBc<-Q zjO(J;ebvV3s~I!eXf`~rox_)|=vzq-;4MB^zWEcc+cr}hD8BisH*At`ejpZ_PkO=f)V35{#7lwLyQn7j4AS|y z8?-g)xL7c;Yq?nO0Bm>WKhUNP);#RVTiND!|KnWVzf$sM@Wl+4NPPR>glz+;&vyf1 zkL~JnduQVhHYCf@W1$`LrcH9}2OV$O1`)kJ1zTahDKCxF>%Z}4_cLE|HMf1cc6-#n zidi3!2ruHZTCvAs9f922-gV!*wlr~kr_IpyY_9qLhf(Gqzx#h!`x5x5itOFw29i!E zWPy zRbX^9{%5Z`TgMb{c62+tLmOQb?Q4klhiMJ@a@|b zNSxf*wm1XkC=DOZSnv$AgzNBPW!o7MP^tG)4tc_P4>^??4{4AJhe$4|y{zC~_3Uy9V-@nsy zCe?YyZ>;l4$v7P{eW0bzBNkt|?0;kt0T*x??tGaZ_QXk#d&DnUy-+NZr2wGqb z@o~@pvo*xWJuTJ{X~eRZCyLx698{S=i>Al0HuSuXH6*JuJzo40aAyN(=5#cioeSS(1oY5>K0!QClE^t1XdecYLYbueag1$i3M~s1gqR zGYfCB#W&3-S}i!mm(Hfvoi;7AcC7>+utjQ-`wk0Em3v(7i=-9Jme?hDi4A{S@Nyge zp~frXDs2H#Nlr*zslh-2`$4qJjN<=$>AVH!@t;^v0(RIxoofY~hC7H{nbO!sA=jq{}?6+I_ZY zMRI?@hL4x~4jW!B_s3D#;JM}rZu+S;pQ}o6;j|gw`CL~^K#7&?1{tjo{5X~y;5XZC zP1KstVGNx3Wk!oiJJ7R9?WA)wt;hH^>tI*H(&%017j@c|Op1W2qxZK{;UTj}c8Rl< zUJ3rhy2Pl0iTh7krRvCH?1dh)EjbwNdE!ICC1cg5=%kT2{!@^akkfeC7d^jss>grn zTiE#G4?X=vlm$n1EOoL`NzqR@5e|a<;`lsm>&pZ+fvRa4jpzT=6TIuJ`St$-sWN&9 zs|3$5=ucSl8|uUwh>?b|z$c0B_`B7j`(f8PpaZ+vp+uPG=g*sjgrqX&sntIZx|w4e zZ#(;d`eoZma5Oe_3YNq{ipNDo$6zrNeHA*%LDy$u#yqn>gjLRk7BN9$r*RH|p_W;4pp~MXA$wKO2 zCO_sP2|t4jYQLN+8L(?mZiR+H_(V|E)_JjjqTG$o;M3xI=q|UmLMz4P1*Twe$B{ya z6nMgcHB;X_6i4Zr&2)c&=eFM^A_HN{6OZ!J*CkM`QoXr%A zTEVz0Su@~#k%(Gx?y;p%O>rzwQg$k-*NsET`o&cM&>DeECu=!_1o(16sDN`VnJX`(Jo-u(IY;v@+dC*iCTx>#Yu3zw^SW{4tw7p|B#iW3D4NM zX+gX`W0_x^lA~N5pjkM!$RX#d>c#u9mBc2AuV-cdhIPV7m>$zQVa-KZj^h?||Kqj7 z+dZ@A(lVj!w=EOu{+wx9p&9++>)$k)F`C`KrRM*CRyZ%YF`9Pu%Km>`;izqSzopLq z|62R0JgnZ$djH?ACP!az^%W~F95H(I@NwE){X`>a?3fYb#;DpuJ&NH-NxkY!%el30 zpX|oIeOwE>tN9Cy3me}a>8b#a6v-Rm{rxf;OUJp~qB7>Q+jGZc$~kQwX7k6pgk+OB zgd=_WxYg{r=@@4J$aOa!8Si?{&^pS6z1a54$Scs-HAB=|9FR5U4Q2XzBN^1E*u67G zj#Hbyf{K1JNAoP4tfw3j?C6Zf&ob3?IaOyf?^H$SY>mLF%w}&aJ56VE-)TDh->2~o zh!KA}Ycq}1(|P~R7=F6OX9<3mTo<3N=Hi?pqSMBSkup#1y(_^58Zy#_8bjqeZl2C1 z6wsyJFV}5y{V<^FUe9si;Pv+G5p=05O35}hUZUpWTJhv1$DWCHwB=-VT*I%UzY3ZL4L^E zl$FQl|FhiR`MY1oJ68QVenH)@r4+ z-&22leyDJr_(Nm*i8d-BFC_GEHC{Q(H4rXzb3p5K@O0PnmhUisZjYGp^dtBCzr8r4avAbS`c5n`?L*LROM z`7$&qX^GhMEv+reL7{7FAiW>^N)sI_9~073@2F8F<~gAgO}!&WjwvZoPk-(!#u0^r zH%7S{)6a6%`Ze#^g#`fb z?B;?Qf_Szg|A3tWn}K+1S^<-G;qWD(E?!D*lrTR>OX< zO|zhyoUV5i*pix&dU&^?jc4CwSO)MqqHUs?Pd!Y5DWAvW`W#%Ld=Ec)*}Q>ne4EX| zDv$@EoeReDleXUtYzUK)v2m|UwZD>%-C^?f!7-lFF+evk5gUQ`f-f`o6bS!Zl}}u% z?Bh}wHlAqL!}!?+nYh4}<32X_X=It2pESG+Sa%yaZv9AsxoAUP-HmW_Ej;7?OG+&A zxRzJDxt5+rTfCojfpL4>OrdAAx!K;>bGn@RquI_{laq7xZoc<+oXqDMWPvk`>NX&s zTj>0uLaAh?oS^5JxG^@|bl6#H!xu{Y88-YgN z?w%x9e1YZqi^DP}(K4-|_jF z?bWxR?qb8`I=P?TwXT%w1^v`^SFS6*pMIL_<$8xi4@+lDfkT3RORc<)YR zA;9y wc}&ykWQssBvm*AQ3Amu{tMZ>h@_ukVJIs^v~pN#C8KFZYz{7j$TnJcnG9 z%XII_lk31T9X`5DwM4tQ;>&a|I$hu@iMF&1&UWGbrc75mB-izFeXNY@wL?<1mZ|Mu z52e^VIevz`Z+4Q<&NK8>xmHcq0#G%Cc?>k;`pKNh8hzQo7kJSu(>-qcWPK#ccd2Pn z6+cyHpE^|!T$kMUpQ_6V%JpW!*G<*sJusDXGX6MKH__?Sn90vLXPTNjWV|bWnksud zC)>DU8lSc?em6}Ez&9iK1`LcR5S_jk!>8+}nmJv!=)&ps+XlFDrvLhjTrpj3KewL? zo1JWO(llM|y%kL&dAy737gISDMi!p$|4SxuGjx&tX6Rf>XXqzw5WICp{V7AB>skh` zDN^-$K9&=^<}fpd=XX<>`&(!&E6MPr0RG+`h{Plv z=!!2_1*Z<7%i2W+bgA+T&Ngl;*M-~-{R@3(HkWf@=RYl*TV~zNA-&s%n?xeh)E#xklvr{sLX$?-uBq46W21aCW6$I6Pjes(NCf0GMn?gU^8mmCP<0x4q~3OT1n# z9NCBE!lotqH7=jz+-@WVR6 zH^!*DK>gfx!ld|G)zYcsIroF#uxP;fqIIYB8g8`D*ADH^c;uvl#@Gk0;xqo+4z^c? zhP%tvid>xK;dKOywr>x2?@$c^=#E1z`KgJ#?E+!woBWY#d1_yr^vi)!L~0>;E%u(4 z>DGJQfst-^d}jH4{V2uy5|^xM%V3nyFv{Jc_wLu8p+idKE94XnCf?>nS*6J}lKy;c zbrKlkKJij%-0@{B1gR^csp)abitC|`M!yYcbq?k~G)yPqg+@w5#dU8tJx z8I0pMoqhxY#5SfC&aak0Hl*{IvmOL9HCy{|K*c6#?e(t$*cdQP9UuE)Rx;WMi0`Rh z`E+PMEzS+a{$cGj7`T#WWo?d~fL|nhD0ol;=?wV*XG_1}5fVo!pqU&G^KL;jGzISz zw0kP81sfQAqM+d=>{M_KhMqhX7V30>nVk{qbI%*e{+xD~E;-m6J1mqoOp6=d3YeFm zHvNPFe^G+UI1A79^bgp=;W9s(0qwqjb4sCcD1pZy*d~U<%xO$tk&(N>RJ?E)428)G zosHNl$SQC5BA5h5i=6z0QXyJAvB_SH221AHV?v9iau414J??EFaHtCBSgY}g|SVpe+0SeJgn4Go`#h&x2c!x zySaoI?e>Ji6L8w#F<6%I&WDF6$aoonlQY~zo-@b{@F-4!Uve|rm(3bOM0?9E;~mt8 z8_ReC(XmrO9*OzE8-9;u{NRU^bd_A@R!TK&G5M9Zb;sI`o6r`OoI&m>{A5O{~JOoniHG?oG zpL?bo$Lx>kG6pQb_};w@UR1UqSK4cNaDf|pEeo`P)JK(WoL9^4R-mHGhq#@4Wle>h zg5$PWszsZlw^&r#yD+u;=UMI&<4|uL9Xv@?6f^w4VS*Y92I|cB6NejXbL-c4&2HS~ zch{wBW5)+S8c+^W?(gC?A5&y0UW49( z{T@S!UvR7wb9&KPy~_|KZOMRCBhyh&>;9z&ilr~Mk%MSX&35|SDLSw{b}m?onkgA~ z0T_;NqE6v_1>@1VXBgSQ^Y)x)Iim2y(~w5?y);0>GZBd}!)EMNC9HZ|2-%CT3uWabDglP#)*tBv;HF%TE}W2&OfT6*6NP7r}Ub%SfD>zruW! z$W54i!vUytz95Y9B13#m=i&47^jzL*v^nQqK^T|V7C`M83lbK~!Jank?&%Tr!Fy^? zk05PkGGm+|VIrxE=1uLEN+eYHBVjN}4Z8{?r~JXFxEN*9CZ%%zB^BNl-UsJ@_$qg@ zh&A37=;Ld%)Q;iZN*fg;y zCs;r4?D%E=-6#CK&)61U+_>{@_cVh);5j#lVF@=CDlYo^xO8>YQR*_Xz*4Xr)7_=% z{PFc%p23f&Th6U(<0EImWBoyRfv>XzFE|)P`>O4XibeAAA()MF$1NExgPz92WX{M`*+Kob*vfx-yANPaMLwqi5HSXtQ4wQlBczGG|qREhWIJAM{h4Nv|l5!DPG_?Fh4wb{N;ymKA zMg8QMgY#*MN0OL_Pfe2nOMsk)a6@=&`pU21Y(yc^%J{{U!6>D#C>7@y&%xZvl0*a; z*+RhP?Bf+MFON|it`DDg;K%h`Yzne`Opgy+l$K7BbKkM?_}Xy1&~~J)SOHp`H!cAM zKj#vnlhYg;ITMVVkvCzBwDJ`wg!T7{j$?B@JkRKQDBr2$M6{^@q%)~lZx#_F;}*_1 zwjYld+ujqx6MF*yS&H(E!^3maI7w=u1~J~%auF=n1$0Gx8DlQcZ_a%EH8w8N*CCtY&e8A zX1(BJ$-Ev_{^t;fvN7HQWevICWL6zMDB_=MoTTQAOojP^HziZ;NreSR^f|ZHwmYZYYdft*$eEat zfvIM54-sTaKg`R)@ul-K@WCgMP@<5UwHw>29HiZ zlU#Hij`7kk3YKpNU_{3OvD4AfqI>C>?l9_TG^p8sNG?-mg^Yr5@o(ZBhZ4}9nA zmX?6Jpa`ai3`JhXEEp@risW!TW=6)C3ZY?A2_0dI!SL&LWrj554MF)}`%&!AgAWOY zahjHRe?o0A)uS_^U}neQjg(9B>WnA-O3-L-7Dy_M?c?jlKX-^kg5TU$1|N;u{*~J_Wcst7356Xp2hl? z7hrE=e~>7V!z+=5DSnx9nG^R((P0%c(8Vas2*d7-DiNEEYVm54PrGvAe?%AxH$K6& z0d3u2OhM21#Z3}Fum14W;p5+)D4K|0Lh}@46BvLqdHYGG=kwQVz^jZRj6bJpQlkI~ z#?c~>I3a-Y{~jdHP_h|lx#gs@hE*wLulyw#h5Sq)sVW!-=L0NBbEkd-w9AxcKggD; zfnp@3H-7?#jof~CtK7h6rE!7Ad1<xVm8D+9;d<1U(IQF1b(<6#7K($l3d@B>kk>K;1lEqzJlVrCPUfsDz(t!9eW1v|mi z;y1XN``ow_JHDq3bm8O4+Y@;ZaaY17DMvTfwj5%iH{J#MI-d2PIrwVe{wRW}tZb~< zX;Wi}M~6eiCXRaJ0^HMz``F3Ba3^;UEBn$`V#17)dw_6YAlWhV$?k@?A*(P^7#PNg zBj4EAUAJYR0&{Dd598(VWNh~mSH5wxu9Whu!bdIeA!f1gDfktkUqiPd>xQ?`_0p1H z`B>lHB}2uoFTfxJ)v$5~Fb}mok55x`JAU~;LW*szQ<1@E_!Srm)7fUie51Rhq8;~K z>VU{Y*#-cp$V(_C3?^d8n-Forgatpwf2Ff=#?t=@er-c3>zt@E5f+2=A5h!9`0NCp zqz~E4_;!XU|Li$*D3fYL{Kd+%6~8Lp$V-jSRJEt&12;)yIJfW`TPb?wq zU?WUwYv!@?j-!-b%xYftRlyc*Wg@b)1MgFuBjTv`9i~cjd=@kgM6J^Ejz&oB7_;auA&7S+SJSA4@cOQl4k8DuV$yN?hSX+MUPN;D_|Ldcbg zV$W^-D@+)BskjH$VC1hOLI~I3r({+43~CS~MAv{kzHtqhv6NfFOUiR@3I8O-)AhS{ zsyuawFs{W02$b}$n+f5%e>`aXnmE#lv;%=Y51&gK#KfS3wN(bi(Zs3bWCV*ocGcpaf|A&O4O|X# zlY|K2M{6K~mq%KN2v_;RS>MZ{QHsZnd5@&@Oa;Er!nPd|gDM+E^qvcn{}vY(S6 zVU(5O#0D!#lMRHBuN2blvQLCILMXOzQ=0BA&S`{DoXwC<>CO2F3Eu`8JmpU8)WoJ;;zl%Fs? z3;uv7;oce|EJEH`-cQ#YHqC@^EwN|AwTu!%r5Qs6@yq~1b%gYTFFDscSc4bO?u7i~ zh6?66S*A4O{)~DUKd1&u2(K()h2?6t(Y^1XK3M4A0^1ShAik5_ONO$pRn8t4}_Ncd9t3E{^7OHbX@4TNyBMtf?nI&GW{H7itPoR9NV#NiGy1*;62 zt9^uU1ux3h4<8_eAO2QB!i4a{-zP|f5PtaQ1c{lcls6j>&oYdc{oG;rDgQ6%Sp3v} z!uVBZV+BJUGDHY3ntI}ZJ`r!Re>|S)Su?HWp;k!eJb_mDM&gL$93*0AQnAG}Xqow{ zATc$E_BBlLRQ3z_1aL;xInU-iGY99{vWh?rlcQN?Za6b1-WexCaizrz z(60G8)$uD7Z%pKoKv{Xsxh# z_vszZaST~DtbqScXaPQA^q69`r@VV{d{8_18E{t4fx#;A!4%kr+>-OGoV#HyC7tta z9DGNP(@<-!?th$vA2nu8j_kRT8;Qo*YjPH&qmv4+?H3GBR^c(xE@Lrr1kD(q>t%0u zJ||k5)p}a!rL+N3SaQ7Zb$CG(&j>*WN!pL*qJ-2looI~-vSIT_F_@uSEB=lR-y!#( z{TKW{YLREK%fP-FOv!K-b&(?_XE^fw`KbQuC*^s84Oe&FHOX~c@YLgi(|??R55?7( z4==zz+|^k1UMbfb<@zrJUvqTSHgb>0GF@ag6p?AK^ut&pk(i#}NWuODK6%Et1XV_A zf`+poA~%%| ztfJft>}TT zVFM<#=`dd*b;m-SJ|>0IRr(%olOX)F!?sW{8kbiUo>%aE?8NS`6012As|&6WyVv7} zZ;QtZip_+U6nia12^pY+$E@*WszZL-wXi}7kjZWpZ9TnHNRdfGGyVkqF4gCQB&}FH zDECPYEz`x$AFn4&<@^9D5|+wth8mU{*h{t~)WF6DLD*FQBMlI{e?vZh67B105&$GEJ2;(7|HV6a0Swrk|LsC3Gt+M(x^u z1PMAc!TioiTgw&rqehIjWL5kxSOUv!A{+|L!5+kh}pD2?L4&wC-d1kdT-%@graBHgw3Le!C+?Ro!z;m}6i zFh+V|79np=;gM-P2#XH-aD*rhf8Jh8(eGnFG{5=Kd*b#0j86rHSkDy>U5A`lKfeVC zNf7=ccugi6xTx02K?TZNSpP_Ra1FbI26jS8>46WT&EZ_R8;H}_I3HbuX1N=!?Fhu3XJ>pz49%5xhLzwGAq(A1KF{7tyzW@%A+DIUDo{u*dW=WE!ZzFSHVMlvW?TAW~MCJivi1d*J#AJQ72U1N#;P@Dp~DsqT zo8`1g$R~)2Ndy_t^54J#U|u4wdA%37P`2k}7!dR*OB}mf_Nw7BPRC9#sjV*%_&N>0 z>Sj^a_z~&RZK18ZYX_DP{zXtgg#Lh!MMaL<{s*M1gq-&{+T`M#`pvjp0T}&61y04( z)QpI*Xu!O~NuEN~ok+4PM{mHTc%+p*x|Kbuy%5tbP}1sq3=HttW-MwKO1vvQ(g3n;xTCPyjJ-MoV30|Ua7xu__ zsKyXNjhv9D>(x7t@6ne;%rHiSi*6U5V6wz0&(nhyZUbbq&y2ZFr!{uuQK>G_!?b_v zrVGE$ZzZ22a^JO=EbVWl^zWfRoYYIdzgfL>it~G^y`SO`93o=oH*OU8K{?F*5%9$r zG6syH=rt7N>-(wsI=MezKUyGPRlR}-xKZ%1;9KSXHMwt-`)~5qrd!a&z4e;|FAdj! zAx@1^XRaXiA-CNf8ZrKigJKtq8P2a_SPT4e{5yr8PUf=XlFi=iE3j4gyXUNf=9GZrE?RNg%e z?8h^(?mI~0FUMn#ETYJQ(jg0M}N!XRPp;+F4Kb}ts*Em z4xU*b#Y%XnZ-k?EF9G;71M6h1aY)0Acg63J+-FF5XM9;i6kBkL|B}R?Yr(m2FtK_RO9#Zo z6;LYt%{?vwT32vz@fX}bJX;M|)Fs17ZbRv>0Dd|D4O<}c1*)3=4mQxpzwv%N2_>m% zluk%s;_49Z4a~U}2vDIwDvUeg)bh80(Dqq3idszh;cu_n^E~MDLZ{`V<`6!f(YUw{ zxl(=aQ?-wjxj0x3Wpp|>rQopI2w#Als~mEPD_2K9hKV@spK-ElBsY04{8~1sVGm7l z9ary7uu(+4jTSgVTafI^pxp6C7h1`dsi)s@x_lc6!=LpXP%y{CCBxFB^hl3U82&(( z!EG@AeC%g_RF&!Qm^O}7!2KLY|5pVDecy=e%xX(c9Iie-zl+QHCyBaAXXt6MM56-# zEa9zE;EaFt#DVv3vmD(ISz_MDvDBsux@7x4kQ4>d?YLP5qf40urxMKWT%Mq|*Nn^_ zQD+PPr=(qN!L1Lt9sV^p4A1V~WC^DxM8mf%hL6>sBz?Oj`~k*P!G&G2ogR5J1z^mg z7gmOy!OzEMSCmU{x7Xjaktdw$Zw?o$FKK>-(mtEO_x4#&SFI(x4N@h#?6u&Ooyj`5 z&w^VYm&-&vv-r_ceFr5LoI98lUn02rXh|1GXJeFEVoPHbUxd-PYCO1(>#);>mhfz{ zM53Q(NKspKxSFwVWQKErfO`dOJ1?MWj zH*S01`u)x^n^*h|sPmXKr*jKGl zG(>%HP0|1r`@Emq*}6hUTbrO-K6H-B+%Egsd&M|BUA?k(@-S!JWF75Rr$z5p37y%y zeFv)E`*PAxNc=jo80Nt5jToVx?nq#VFP_Fn_vH*QG-E~n{+v6GZ8Ga$|J5M)*Ic{= z^5LxU?fp48&Bav9O9vFt*({g}@ENAke~}ho0(5F&^4+KnHOaby53;-*r@g2&d;~F7 zTLP0`N45lRBaF}DggWSxOon%!%dtY@JlIN*Q}{lnc*Ojyx%G(0dBb&Jv(se}nKQ@p zlk*q07z{_Ds$z@#;Io7eFVF&y0Ir2RSeUJHTsh#gh z9xPha6Dm>1jR70jo?ZFH@%5}k-Mr@WoC~xU&QE80`eNt4lPhtzC$U#!?~^^Cx*(k@ z7@SXgp|ia<_AOA$T4BIM zg?RSMG{yCz#t@C{_fXZ+qPO{_{%D6CcsQRUKQ(QECCaJ>z1xQ{Hc zowS4lqbDu>RKvw+?Z7K|HUGjlgjOnFBNZ*f$h;g?8FqCKU6pS6())FtU&$CP%`xAC zQ{Tvv*LDuh)AfVquObyXq40&CRL>Qb;~QsLTIKh!kiO89?b&V#Kid+%2fY;GIR`D_ z=UBqwT4ssIl`~jObEtxgEWxwX90Yp;mf-U&!M9;U9}nDrizWO5OZcBH_+s_S2R_$; z3oXH2iG3M=R4U0|W^Wh*T0=a(akf(xH}pYEzX0`P#YK3N&CAe+YPUh7EsFf zB8u|;30-Brh_3doQU&)Xh2x+VcokhWfSAVp&>^Bc<0bfE!Qx6eufvFrW@4fC0}hU1 znbqIL622~%n#7y~ZWEk(<-KaoJ>bl5=szwM0~i4Q2(QOKvtiE087wTzx?OJxS8CEI z2&`D-U`F_~tCo@FZO0X;qkEk$qZnU@eX!QQ=FuMMYUg&3BYv)$vaD}oo=4HGkBlpJWNyMe{h47CRXW0wr)o5=MQscZcjfGr zTQk-ixo=m?q8TpKMc>nfWc0Ez`W{s0E!P%j*B05rTSn_}^K>-@Q$I471?9H*1roo~ zf>ZoTolRV|1*h`sM(KbWjceXxYl79b1nnbr0-SU&2o{6)*cM(O;Y~XHIH%iGV3o)# z`z-0Gye&H0xC0iP;X%0$KsEIDSn*9mj#|)SyBRyfs6TV?MyI< z0^{OJEE!S!A}O%kf>Qwn()5)UoZ_1;UTwk8pf&2Ii3r7CjiKt$VzsM}ix3yrE=#%f z7MwENE*02f!Kni6QsE{GPVw6%eyauN3QPX`G=8i_+!FDCEkTtJx#6$Ff>Qxzd@J`f z6;L;hVk6wL2%-38l3uu{GJI<;ShI1aN{Ox`6c-oD!^;C)i@aDSny6Z?fRl_^lS4;%^$P^WO)Y%IBt_1T9j) z0b7DNNzh@zDZaTbHQo4`ow!OSFt>d138(mONndmfujOIV;zcO_N{$6^g1M5wxCAiPETMq{T2&O@mmJ!_)Qj^ z;_sCTwOVkB-#$Rc-)CK`S`!?wC5V#*9TuG8JLKNFCZz)6`s)JRBITH`pjhG;30`Zy zv$#T?z+A-I6O>yr;uh+w<5ya6s!){_P;J2}epw$Kzs7ZRj1S#WFoRtrw?+w&+s-v2&J03~RV0uESkN>IQFFcDdBYkWr{Wq54v zugcZ;ZVPUWUqm?dKl2r|2mxG)ErHn=$}KomC{E&6T5u{LLn>Hp!6|-O4kf}Uu;8`U z1gk9pl%USd@#EH8aBKW67M$X@xODs`3r_J%q(ZG0oZ`1<>-i^cpCy12R7rvZ7Mv2q zWz&Cn1s2>I-yyP>*`ftKb$qu4x5h6@lJVb}AWJ7Gu_Z7&XSoHZ3KjIw@hdGj6|miW z1s0s2SoGdCCQjv30<#mYHUofBf=wCt4}a?|IK_{X7T99JDSjD~M#sf9S#XM9B=K7< zIK{7R5lziLO8_O9D+vx*a7tj#?Hv}J;+u23LzW$8i?+ze$!)~3Oc<7x5jtS4gPeCqeGPq)qvX) zKtIjlS7gDdfCA|PB^I219+C$rx8M}NPF6sb7My-oQaBKW67M$X5lI3C(a30Xq6ci^znyl59AWjnOv*6bF2P`;ONY<_$7My;T zN&XHAN4Z*{sgsEAV*y+tGeMCB=O>ViV4}!><^wDjyxf9Q{1$1sN()X!E_d+r;}uu} zIDx#&8VgPdHc0`iEjY)Q32eOux5nRM!6|;7d^DSCEdi8ZuN2T~!6`wRNJjfCxHbL( z3r_JjQIp`W!-7+MZdP0z@=8_xXI(P7yXDSoM-YWob#o3?A6@HtU(>6VuJn{R-PchL z_)BKR_=_t&@lN;68d{&Bs-DWoS4;g+use6dj{Jw~JO@;FWNwsQpo)h>N7U)|O`Q(d zxqY2ZT7xCOf7;lr#rn3)REFcWS{+TCI5_zV9r8f3MIT;NuLfs!AE3^y_56l&S0l!% zR~!0{P`%%UNA1@WdSo{4uk|FwtGl1avBLZ#15(wP>peT{O7UNzac(qj@a%|Z9%mIf z2^+&c^6|0cTe!B1-3a|ma6mz!3cLs<&8i3bB9z>EY9;q9oJnDAd4x_}?F>Ut+4eNZ zgGvwd0CVw89xDO#!#8_Cn)FDTBl(bibi9#CrBGOVZb752c&D#BzFd7=K71hTN!WOI zF8nsP_AGU_%X{C>{7Lz$v?plHw%rBJ=owdmNz5d2E?^Gl5f@%?oL{qo6DgmEgA8=n z*bzqYBvsIu1eYJDCwFb^a+@bss9s#yrOwiP+qQXX^eyR>t?FkS+MAN4obUBGPu=>o z=XRLv!Wwe?W8G5N!Px{E7$A@@x-e5c&E+VK7Qeq^U2 z#jNoc67hg7!4bLdh*JeMUf6rho{~{Jic;avEmt#>ljYu2qL{c}@DjP2xak$F+=kyS z_oi~ijDMfT2OOu*qW7~!64c0*6R5kq(_I57_$`6gTZ4h`m-{W?Z(Qlku5Ge~|19^d zHryfW_kA`z-(1(*@L_^?*zl7Dm;AIyLlr(p0!-Ztr6b&Q-&G{xCVrdTm)P)nxi7cj z4RT+396li~?hgV~9~Tf8_gA^EvEd)e{c4zrFZE=fx!xAuMZP{;Y`918CL2D;T*q5+ z)w`^pi^uIO2|i#AruGuN!-g*v+#y%9y>5|vQespu2S#=HhhWT9X9+b!A*6ES>0O%cgxkpALt?tTW$+@Lhj89m@i~w+(NWdvj54#{awECARoq!w3WA)F#uL!(XK>yr1CJHhiey z=F-(Hr&RFOw)m$CzTSqPr}4Anwpapa8mOY$;IGMoQ`~DLqgD$}@mEu1{Oz;h+hJ!` z2e*}LC0&OloS>~Z$${|G|0LmVxtb63k=z&A@E_&A#DY^j_EIJAR}OX{nBUY^+QN$| zWBl=o7FV;JOiGNu8cTfo=@opn4WBCbdK-S0;9E3)>;t<@0-9_I?hw4yhCeL$J_}Az zl{~-!3r;_GO8gEB?ub)gzM12!a7Y*>rJv@GkK2M%viIe_$b!?)y;5e0qkcEqwA>O* z$-a~ON()Xu3*_5aZNVviIFxHf<%h*b*#|1Wgv4elC{^ zwOVkh&@zd?&xYSA_<`eah|-%SpyRlJxVTpYcgWRja8pQe+wc~tP>~Hcw_i$ZcmaL< z$k3qN5Gl@aB5507OIUqU^Y6A{%~tTK%1<{ziezZNV?deWeZm zW16Z$I^W*~ud#(6lKa&*JV`d&*5i2RW8UoUTWsNl>F^Bg%?^x~c&)bZX@c*w;in0H zz=kgtyu*fHDYye?KsS4{4L5iJaaHrL>T;jfcJFL+j*A~y|7FJOD*rE@Ca0qay$XMI z;GW3CVXuP+;M+Dk;;Dw4^xmg*bE`%7fa6Ln6T;wX zc}mt8BV(W{IM_wVw>Ool;%`dxwZGdVZ~O)|_V7_9>aV-Tg1UYT2%_V&8-s6ppm^W) zH=|JP-Za$Fxb#EMG-!fh?5o%*F#r0mrrk&HfW7+i=N;nElzeS8Mn3g?mnOWt-$QrJ z2HlZcpt~l6?sW%o9Ok1ZKwTfJCj;I-K4KJO1JE|oZ~I+PhBq*=v&#qW&2Pa@q^Y&Z z-dD5ze%>8~&BVqU*$A`mbLp5>pcN-!+tv`F6LGroVXZZlg(%aH|C;NG{)5gDScc6wjgOLFLeVC=pz(197@vQ)v<z|_fbSHLcfau!Q7Dtyy^k=;%9xg0>KEH(sLGZr&3qdiFzTzWf@k{ZUy1z7;m&-w|Wyo{-!4Nx$g zzP$qtMLR3T?GC1+iIk%|G0EvsB)Suce8ghKXYYNR(Rf}Wit~^o3uYv}9HzTO>{LMr zojCv@)|}qH-t2S5_!=Yubm*KNUr-Ypi($qK!bj!*hFow_*!6o(EJ8sCEzmTacOgm5F`QJDEELP+FGxM6ss$7u9-Vn>e= z#*cnJsJ`gYU&$^@QuA-e;loI9s?HPa=adqB65vw8$qAv+ z*uw!gKcCqro`ConYR|JcZS3K5_I$YFI%Ln0Doo6HT@$(L)A&qK1in?~@oDIcb0$vN zuRw8agfzc7xf`fg3l4+B=#n4Mftc^$k2s)DZQ%O_Q9{IO^cfP>!-P6O2tO|lbkQMx z(50HSjufKba)lyyF`C_*Pkhv; z=jJ6T@9w@dnU}qWE-);0a+3Pzp+uahI~$%>-s{&D2VLiY422qdT{ba*=Vhg;BY&s< z@iirr{891r4m^h)ycZ`?j?TX)n9&OeD zOw@sc@H4W1Jwii^!HWMy8K{?IHHhb-Be+Y$(-3(wMmb|XqL7Swv4a|QOvm)~7o5I* zuzCm%aibxK+SNlmOZ<88)AxW98Epo6#8H7M$c2*~9@s~|D^Vh%tw(C)MUom2(Up-9f$)q-1WW^}VIIGgZkU4wfNsjKOh(=fX zD?>wn2HxXKhGNq7wIePuxoXDOwoCD?3=qa-uA0J?SX#q`F_~-Z36$-;%u%UI7xr~D zmgeUETO5XL>y=xgR*jqFFsc%0mtKAJV^)!3H^KZ1&Vlg-|1ryi zVFL_zvZQZ~uU}FyR=u*mTauB{Rc-$=ZH%)@3XcSY`~ z?t0FQ<)iI9B;Byg(6AUCMoSO0%YU#D=Z#n_VmT*vItB<&wc61I9FVBpQF3;K!L+Uc z=XCglT=OKn*a&_34-ZVh*91bA+S#X2#$0sFNQvh>7a|CM5BzlciN{uiPF!ifI9uSK zB*0OA#)s^$YEM5LmhwG>{?f1u-}c)R;Vq0S<4>e>cysWDIeZTYv%PdoK0r>tIMhQV zr(6f`B9zCo@J@IWn*i1UzlkWOQ{`BpPRzR+Vv~L%6N}%e(kH;(T(lE7j87K;PnDVX zB=HJX(TOYuWfS=>d*f>GBXRk60HN~prw!4qVm#SZE&rvMsEcytsXRAfJg}LC^E~9u z$M(JRFb4%Dg6Dqxd5Fg^MGHqA@t}?+jGwug1S=ME!<3fG+$0iHgb>a*N`(EKZ;UWz z=1EOr!NYq#0Hz8ogfD6OsQC$DG9C;MMw~-1rEqb5hd_F6rU-l+JxJ07z4a(zB&`_R za8?Nv8t7_ftO$Fvpe|HF826V;?gF3MlTiWI_I*V$TeKRL$RUO2mcu ze0@a_ik^%q5P}e<*$;iv6u!k04?IZqN2XzVT8vg=ndNdEa3Vo0Oi`%!8Jj_em)S@^hf-9MFBo=eTAae_gg>RHi=1Oy3oB6kbYkWRhq zIrOc5S$g<|GG$O3^8|5ThMdFXmQaA^-_fEGd@yS;? znd4y5VHChK{3&pg_yxxy1S2+s$Y(sukT)&0ji5^}h$;x-;SnTWB>l_8jLk?#%d7@M zLO+0%PJlK7Xym|^So+Uc95|PoIiI3^yenTPQUjj=v=j&sLR_KBc>^^d{R$Hnf{Qws z^0CL52m!n_`2akT#7Y|@gmeqWw_sNKaw?b>FUP}^7QyJ5qqFv3E?FCsbM*KN5yE3T zfH*Wpn+c&Vvn~qRlG`9@g>L~)`ykRrJ61#&gg zK&g1N<>xUsnL6?agaqauJ10-RB3Duz>NFrYB3?7)Bcz%5$-qU#%hLeIAqu|3@FI2u zl@1fakC6#}B6^GnAz_?dHs)!@A{ArgMJxg{)y9Cgx5_>VB7YmX|70D9pWS>u1|~!K zVz+&XF3w)no)Ql;>@$WxdJko(?ZlxQyanq4UVnmPg;{MqSEFF2aC;T3Pej#SL5K%O zpN-)lRiablK|<)%xN&ALebl;v5T4K*Ug-zdzc)MJFX5>nnQBp1LQPxRO*KH>@o*XlVxc`S6O>l{xmXOnUd0lR=UaEd8ly@r@P0MQh z;ep(`|0hRn%6GI|M&pAUbDvMra;cwP;gSU4goL^-0_7bGIj+g#)AoN*-HR_OZ^uPKqSn~D!dNDFRe|CCJ4)L=mn5m}wIDqciMhEJ+B(jPJ;gDJhmYJp zl`a6`D`o&{1p~?n&dNv1Kkmod{x}X33UO~`i7@P2N^}y?WE%bDwEkGQdz&?t7(lrx zn{S1*tkt$pfz*+khV_J;=xy+XF6u|lok%1lH6SS$Nr}hTO1N>NnkJ& zEGNFut3hy2?k1trDEk-A@1H#dVmdz&3yu7CW@4*q-B1@6By(3m-d_0=)@e?9%iY$s zWD(4H-whgk@+JI`+;7$QD#&!2J5ko(B;+HB8I}8QPX?8r1cYwD1QHoPp_>54^&p3*4A$xh z#%8&XNCJN|WH5RZgQ(s?(Q5n+B%IU}K(@(m3DoUerAy@gcaRSuF~xtXmc0zhM{ky9 zc5NeZQG2mFOoAh+xu<{}oxBt+>8T}{@U5sFkC~VbQQ=Y&t>C7`fR}D|e6;}I)Gt6e z3E7Pn8J^pagzI+z5%466`N=DY(D_VAbGIY=3thUVm*f5;@cRjQ<@1oph#e4QmQ`LK zlURaJ-S`3W9rfR2IGg_&*E8KZHDs~&deF1NAJdm0R}?f3Us@{Fc@~CHkotdaj+(o6 zoNL`6@bb_p31ec8D!wO)JU4NBfy0v9>%1IZ?i%;NbrVULOkK(A>Bo?O+^~Yel6z~T zT;Gu#zS3nH36QgB4EBO_^<)lFQ&PhlcguAvC@NpZeIlqSL5FPQOVz5s&->?H1XNNpqG% z)@LeoA?YgUpv{^qdYh`TTcNaK%tI<+o@63nd~_IVdkNoQ#+oB2fG}ePNPo!Te3TH+ zA*kHGSVR7epv+Je_=}u^9b)IeKID)da+Usiv8&2;-EcnW&D^&wU0~N+(Age*1Um{VPAVvA^zGI! z|LgHSxB9qi_awDz4{tQkNgwrK2Xwc$TxFDGt`|EB(*jSwe**`cwg(4@<4~rX+I9$4 z?WCI;jU9*O|C1eu;loMG`t_6X!{V!n^UU42=&!ly;xc{dcxP(kuJ+t7t-BAbbcJ`( zLbda=-1cAdUxmH4Pm&<$y!d(UTCJlcH&!b00hs+`wHd`K(g$tleInD{xbq*mmnJIz zb&!Vq)Y75Vm;|TCsqL#V>qS`0ifK^=S7Jrxca>2`YNw!RmuVPrv?UY@`mit24Pr=m zIi$7#eGV4J^G1NrK`WelCPPKKp%@zwAw+L0gE+vSp|&n~cZ^l!(@RA{Rj~)7+2g^+ zH}>>Nu<|!S$m2+{QxNXGrZ`J2A!g8q)##x#6Dsdk%!#a^%S+G`{TbLNB4&0L9-Vhj zhF|0N;c{`%GvlGTA?Km&Etr2rKrf{+-d*4w&c1LwRg2`lCs8eq6(af2a|k|^&;FpR zwj{kd*Mv=OPNuoSY!Y^m~gQXBtNK8^N3ujeMB?eyXX>6L$a>8XM%R}BB{pHzw zL}jlV;AS)rKQDV3B@F&0v@o;{_5|cL@{eGrCl>RD%jm05&*L;mUM3+79z|Q|vw1BD z=;_1NMv|g#zioIKoZoBUo~O3;kvzs)!wQGqMP<%;{lwox?j}8~a$XDhopbQ9LrQtyX&_x?aC@xc=%voRi?KB@Sb$-1g%4?RWSh$ZZ4( z>5CARdvf(epUM7Cz5Ps@Rodq_u5ogX#ww>);|7T2ovLTFX%C{t3Xr!G*>bE0nkTjn z`=cp32{fSv@Xx?rKB4b3zSllN4YWOT=R%xB z) zVh<($-q>B-^JGtagI~qzO+Rt%=}*ZM8222n^f9o{h9ByI{hZ&y;ogxp46{gA?1oT0 z%yQbVwf7ge#PGa|sJ#B?ZP%y^1|IzJ^ZXlfXy7|vmfq-PAAXvIk*2ojA@qY|PSe>V za_leIRQe(@&wK#-#znrvH#;|pFj!?kbBYXUyB4au)AH`O?=2oXEu8jq_rk`~^t{jIpm1y}HY50;u#eOqEJOr;DwJQbb7em(k}$ zjXO#`{bysOaR`p((h^*aTeI^vCy?7$%+xz2UsHdTfT$JG7+n@?C@`50SyypeLdB zp>@0p)9!BMDR{OY_6CHj`WS|yuYj_Gwo0qQco+o;(=z9VVub#Tw9W1zkORq5A$-z! zavhH05g3x6rRx6*2_e>*BK$GT)_7>KMk+vFd4_I4#r>B<*-V-s?;kOGIrmT>l;gu! zL#?dEkk=&=#*f?f8Tt!jZ8zXU&A+_QlSD)Ev!}1r(SQWfg0+>ZFcDSS1D1>x&vn1T zGDNTFhkmp4rv!&ljQF%PiS|1-MAeZmG9Zq>l}SqzmQIJ3p*y|!O<@UK&3YZl#bW3$ zOOvG(ns@+2e&#`R*dm5Z3<%X{m$&*vNe?ttjBFwbHVsT$5t&S+dRKJUpS-Gv0`29q$>`B#MYq4?MAHzy-4^)%k@ z58mV~gr8u1yt#h`NgCx}VdhLt>jzoYjZFpTFQoXSP8K7nmS1%6!M?a98%ifl$+{a% zLGOzV#76J!i>FC<@g6`Fju#7KJ9_s$Sj@5}k{RxK)@~z-SAYJuQ)g^OE}^ZX5U&uX zZ`!_KAO?%)Nlg3WGazAbX-C{xTyf4((yubM`ybHs5@z&+XDQO=RIuZyR(wQ$Ts_{U z+Q_48!)p*rQ=W#Wa%V9_;gq%J+AK_tp;#n|-HGoJ*Rx_4&3mL{js6K@D;MJ-$52#E z{CGAzFlKbo3qI!@G!jpeA@b)OB!$`aphhL-#%*2d`#|LZi_D|Adr6}zMjoibpI|(& z^12^P5Wa;!+}p1r(VA45)uM%s4oYwv_jFb5cZ_kVm!E_}cMa)TWA&&CcZ}#$XvXH7 zuRT6Pk#xi^K#6&1ChaW#$$ zqGm=d1oF4wM|%9QZdxyGJOoQlQcFP`=hcdDJIsTesgOdnx$Ez-6bd(DA$|5xvRxr# z(dOr|%%bVgxL8!Qbuhxg9-MKH+`|tP-#_C}1uobRY$zuyFX|opbqv+^co#e#_1N*( zLYYc0*YLm(6y-8VRJhaS{sOuGo!moc=N{&(M7!%I9X(uk5CfXrO<5z*kjEQ5aM>x^ zCKJ-UE(eaFIG={3Z1foPROo+M$Fx*OPz^g}Tp9|RVeD6^Fv!K~!J|dT5ZsJYTtCSb7nL6Puj{)6m%bbqSIM122v`MB|Km zZjzHyRr?iQ7iJ-TjniSj@K?0d9DT1sE2m1Ie-j~C`lyEI(Kf7I{SIpe8jsBshgWCN zfUxWln24E#b(0su8sW4&(nYsmfnYSjLDXm6u%|f{+H5iniT}6S*hFSNeQC-fbt7D+ zlC20if8sS*coiCkcLoP*gj}d{NZTsB8?nP>Dn9HGquELNsRng@5lwZ-KX|&KX zo=j7lNSpUO+(OZFz6S#a()Ph@fuALM-xNIEU*XV9l+h#7^*XHLVrhHrF_rwJ8UY<< zz+V(=FWV>%kNJ1fb+-6Svk$e3*_fr-NzBRc1clX`aTaV6sNgzK-;m~W_H_vkHNSjX zCUin`H(`4rgWr#eb=oz24P+qnuA*Y@ov9;4<{)eCQLk)|AKU1xvIt&lE`k=Y{#=6uuVD{@eSgnFBMIikyf|{m z3E1@_>dPMXCiU^tnBI?xUQ5UJw25AcgI8Q(u98mlGKQDbx1^55rYDK;=JdNwY_ngtepKRq`=!fsL;})2QSRC^7rpv0%>)33e28w zd1PQoQax0EUQfl%R2?`> z92uQw7JSEnIqjI_uvGQdoaFqA^-pClVdQ4Lb8y@HqeiOc8&hM%(yi??yc4JAyr{~t%)vM_2SQT+JV<+X-vcg$4-{fl z`R>3%2R=^%jdV|-)5cF1q{evgkcmC89XPExZnrjD5W#3Lj6?g*ri%*lX>Ufbpp@;s z4J4Ld;e)-Olq;|^4EFt>;pAj} zNMHnplvxSudhnS1%SMbV|8mbkTlts09A}+mFNkI%p{|42OZKZV(mjX8Qw;gM>p-iOcUD8KfB=wGsx6CUDK`SU#$ zI8_qj1d(vEU2Xl^RF*n&=BnuBPr z8Q`FXLY6xVC%j_;_A5@ay$P1t#y0dMx8(!urD!qdZsZD5InKq7MC>WUmbBz4qZQ*K zbPsab$+nin@2~}6NvDelJnTjS{U>?6Gy(9@FDD6l`FjGC&$bHtAb+x9J{99mUx=1- z78}umD5hNv^#2${gP$-T9T*_7_ovK?HmmhW{rF7vHlTr1|HyVl}r<;I-o8Y&2~{WK+OvB}g>> zVz&?S8=kwy`*Yf=@f;6e>p66FKfSgZCJA&=-uFQ3?jz1U-VPV#U!z+t$}5NU)9a)# zOPu^ouWy&7B%CDY$`PYVw62C-3jXvft<_Fm+nC$B4>doT6KDN{fkXQA=`HR(kytKf zmkdaYOo~YK{Yjcym z70Yw(ZpX)=)&=20`hg#EHDhK=mYwVI2bn<7lFS`FyLMzZ_IR0 z=G#e#*mq_JGl1$vzC<=MDspuyfuQpnTsEwi!j|ULpE@eOdi}hC>J5BL=9^(vH}FG- z{AD$w47b@0({V;RPeNlM#X=N3ggeAn zkCh!D!>Y40^3e^@$cWJWSRd34+G>~_9e}DjQaZFbUdDb26H&C8b^yB$cN4D99_pvI z6Hh)~ZY#x?a~7xGoVAR?1-g!6;%9Hdy@Ct4=VA!`)6m_VEz}pC%L%CsaHz3g3WkPn zn%n+N-%O(9G<8KDhrguSaUMp;^1kXI(|A8=&Ww%dSjV|6m{Y$Gmew^Iec+}?zabwV zcrQ*D|9_xkIo6$@yjgrlP`}lKuH$fPA@+JHh6=*LH1dhDevbc;Ps}nWHdA(qaS*AA zTw(&vS@=cS+(e@wZ6ZiT{Y3K-O`DQiAcFMEc5VNJWd^!VP*LMikOGfEdSG}F1t@5n zu!E-UMa;byb8u7N4YG@JSsz1wC*`se%|kS!12fb>?R622e0ac(iH(O~xdx7Oax>Yy zS_j}2ucGjt1IW#uJRZv3M0Ew8t;K)16-4tBt!Wvx=L^(IVcmqI9u?T4@KH9R*+A1> z#Ub5( zJ)S3yS(B>8sYm+8YQI3KcQCU;G`$m(9JZw8Y62LA$y1JnQou=e5LNw#| z~hX%Gsf&kSQYHw(=SCFTpfj7b1y`0BjUgyHg$$-Y49!- z;~lN3GsJ)_FqZqlqu38lvOm!-v@n=60H@{(h%gO$oS3hq#y!t~AkTen5+I5t3od0VPvp>-Q{rXLn-VQ^xhdJ6u9ce-uXL#UvD{w}la8W(_e4Xf zsLH-1MJ(9|t;FVOSo1@AB5Y5q% zX1UaTALNXet9;@b%$S(59n~tgAk6RBj#Y**_}KvnBeBrIy7c{fPIcVl3RJ&!b+;=7 zLvpdZQJ!b+SmLSFZI496C86AG?`&;+pq}b!Z zp2d5&lVbSsFT;2^zy;p}28W>(93dZu`#Rx3us+`hkEG4tQwQ1grga+eDF#zdT-N*JsNxngtOqmx%t#oIFi{P&77s55*~={SRX;54RtgVseE#SesJ zha4o>9o4!9ZmScng{MV}ZN27G865p^gi4jbICPF|Ke6E4R_kyy%{~fB!dY*2LKhQX z;vx&HJ&*T*X_BABqj2GqC(_EJh+)1>EiY1^fxz19I{PxxYC ze;F_0>Er$kAIZP0Z{kZ?h zFDGT;U+mG&zZkdv0*`j54?y+I&l=ywcG4V#&z|#*a%>aB!WEbd7`)*1xS%qp%yzr{ z>(C?MsQH&Q2DUK#i#6LLH-kS6mf^z7lXk>bFq!L*cEy&^4JCMAFqkpZc+?Y5fGgyE z!8!mpbxsZT!mh!o{sCaWeL3K3XD=|sinYIi31*ZYE>UQNHEn=Edt9VyZyJhwH~%t_ z!j^wIwqfyl7C?sD_u5>wJR705EkI1t2}GftMfhIC=F~`@HtbU4xB)Nhy9UeI{uxB5 zyEz{zrtQ;k?PhM;MZR(@6J_souEjbWZ)E|4oBY&y(KtY38I=F^6bQ{I2g?H(kB3V+ zomj7O0g!Nwe@VYP5{ViX(9)q_J`Eij`UF@TecjlGm}ZCH4FA&V_3{euB8u!zvXW$h zsE25LCGhve1mS)OFpV~=t6(%qCi;x0!)bnUu3<3%hqojFi1wsXkvhryo9lOs!y&|d z;ioU)zHrdumo&=9H2-ugYr|W(M)Z9I;vxDz?Kh<;wcdbS++*z4&8>A1ja%y?ohG-) zO|;;Al7#1xh>1qq$NA_BpfhK6UXUm>fwVG(jbn6xVk0@@OsF_thq`~T17jYzuMfO& zr17bZ6qzg|W_2Y?hCNh_O;opsm6}8e-45KPB&p>zjG&rXcuejn)-AdCz7eRKJ?jTU zTL{Bc;iOzl*_5pGrbMwH?@m4{oW)OsA)ZSTw3||-fozB<^oiPZP-tkZH-;(jWMPV< zh2l{ZcMHXtD!ao+6qb40Z==adveY2a80er9o-Ncw~AUA^#TFYS_w3XBKGA zs4=kr)i%IU1=btFPZSopJ6^g3nd8eLbQ+0%wvK|(f7Zeps5C+l(svyN8qW*El~^&n zvK*sSS#1d1Qs}^P6NR@Jc1U5NvX5vi9X|zK4v8g$M4`E>bv243a3B%c4XSpn3VtUv zB=!d6p|@y%f};vKL%WE=EwyXd|45iEJVfL5Gb>xx9UuzV{aUv4l`@Q`nrKygswlP= zN^dxx{D!wViDEqoChP25JrxJg#JS#pLhT-io9QP4)PU1%17E$A^B9Y10bx?AqhM5Ap$TVRqN$;O*N zp{1|+P4e`%6U7J_rOqs^!d*n5m95=m7WGjC*l<(0#rK$HzXmuDP5xSoge)+OMJaAy zr#v}|Hlp|+2S1Z1D|QlrTjNF+!Z~PaDP+x;dHh6i9zkpJ)iNUjFS92>;bnGnn6g<> z94(Z+isEjeTv{L}v5zQnC%6$D8_&ET(Rg;OD3EP7j-$Gd!aU)P0+IYJ8C#6QxASh5 z*GZZYxhN0MggZf@ard-P)+$PXD7>tKo#f&)+!8MJVWDi1jVQc*WptJlCsBBjZ|*Ez z%A2^<1}yt;kcTWt{6q=8hxs(DNHi=*D44UipoQF?hl*q;TF2A7Xx5)B5~oiAQDDS) z8bKP<@-Cw0lNuOQF@;9(iZ0T`YHJH+L6>Exp%6Mw1Rg-E{08H#sF%O$h*c!-0wSB8 zD6Yq2+v&QB)s~)cqr4Sm_@fqgm4!T%g+I#JO*SvUg{U!=-Nfn*Sh(>{Y92LabT_f_ z9aL;{q7*Ml7fN+AfeoNMJbN~F6LXs3vblmNJeQAjlXKZmrT9?t-3wlaH<}RBsP2*7 z<-)N}KrVKUpW9syyMrh^$ghJ!?vrk!@cTdME=@&zL@`o52+vf%Cm;PY0q+kkN3`#} zVr5}=8}e|+|6DBgp1_w4zKy;Nx)WWAoGUKQLi&AuRi8=1fE_j3lt7hd5#b>d983$YZ6a9P}WS zV#1R=VZK&kvzh>k~*oSU^%H2 z2s-hS5UEL6P8uZriTg`Dl898-QIzz8^sl@*t4=KL6$J}^l8Ukflx3zY0d*XLG6E7% zR%5UPlqIGt0cF(#OF&s-$`VjkF0cgDxh9PzpbcLr38++dun4q?G!7&J)m!fl=$FTjEIj~O)^j2Xt87&nCKu8Sh3+dT7!Wg#fI@K&{*Qhf>oAy zvP7128>|}A5ZK4^CE8>EA{rNq$>~{M$JAWdFSqJ7%4gE9?y3l`DmvkYcWL<#uL$hM{z-ES?3ts~oMuklbHB&xGF(Njx6_(ot@8T-^*w zmJ&}m)6E?9UvZ`@?^)WXf}QEK28UE?481$Ib0?|P@IRdkSD031Y@i`J*?Z`P+{(y* z=0qnlUd(+#=4M4~;uBEn84JmZyHgn^%}}`4H(eKxqqzqh%&d37pvd-SPL{XvrQDC= zgyA2=d5{Gxb`R^MT&c(yQv0XtBcs(XfAOC%m69G(9Y`A%3ZEEWLxw6ZrFP;z!{kBVMXaTOfQM3&&5 znhs%0B6dbN2jYeNAs#Z0LIu}Eb+?3U-X*1}D&th`OyF+c zlOSsBsQ*xctp9{0{|M7oBI91huN?#vRWwYywjGzc5x#6RXutuNU{`eOGX7qHdmN|x zaGi_p4fngpYcZ{e&jK96ksWXxPZX!$Lp>sq@ItjUuq*{ejiyiHVrFG4+C53s{{`J} zt_cdI5KUJ`!Q##gUJ06U7bebMWTD+KBNae3^$fz``rbjp70F@_&~dcs$z1Dw$(%vk z1^|OsK>jjWg6BBND3m+dAniM~>=Z6gt{(fy#{nr4m~G;Z1NGwT<$1~4=oE3}V`9=S z!%Pkm+^NS_tm-~Ygdnt%Ewi}Isl8M1yjY50oc;x+r#FGTV+g> z9f;iMgDaDdYB4e)^SB4P{@4Mw?It|&Dma3n%ZOE z;coR402X)a8|}HeF9DQ*Zq>kqOx}dT3@pUmJ0wGP??j|fjt6B9ZAAtZ6z(~AFY^tr zNrLZ9RL$4OPcj&QR{J@FM?j0rQkA zQFsZ@%157i{EK|t4a@{GzW%0z{2D0mmVSrDaHmo3DR#n{;*Q@5cm!%z5?~SN{T;Kp zdK(^TCm$gnr>MuqY&okK`iJ^UI0$K)VVRmf#m3!)mEaxu*W4R*9opfDoG6dUh%Du) zM;4atydU~=f0pSFs`N^QULe!I_**!Ay-L5nO>m=j-XHelZjj~uDt#s){^Or4zjbf! zrO|C9zzg>0R%(y;6}R2qx9a(G`*U@MjaSP22x8jmjCvrKoKYFsciVwn=s!QrC1=!< zs?;pqaFKI=c~$$mZnE4`h3HG)*n{n~bO*%tPjjoaBR8~hMlB5d0a0*S&mQ70lT77e z(z9@QMOf10=(020Bc_XuQ>uDMYub?mORs6e5HM@d>S#DIFSS6Jc9Grr9yd?CWzf@8TB5s2%YCDtCx z%@UhOT1&m#j^)m2V+bo8oxl?ZC*|Wm3kyqy$F4yY^&*)P@$jW2(UF_H1lerUqhqs8 z?QgIfV)5z}Fj!JJOe!~{=nq?sF63g<0AcfpDdCNh4?kHyNFA%6g4)6o`FeEsFC66l5b!!$EwFo5Z;hk!(Pz z#YQeC$N5C)(b!X*@RC=OnOmrH9$G-k82C_gH9-RGVDuyp^l;?m&#qfs-KVgpXBVWXq>5g=ZHb);s~b07lr{ z00xn2m#R5803BdN+d$YcpTL-w(0aa!V!fdV(#z-zwP@(>NYKX$02Z_dKf_i_0x#j; zOm?10HL#gukXbTYb$ju8{)FMt68YyQnA_4j?!Ys2lF&9l2+hK9>w26j>^}1{-a@j| zF<11-62(KIgMo`B40B?!636|NJEqNMHRMcgrC2{aMXxP|l?8cfSg+P<#K?uPyGr~y z_Xt#0v_)wfW0sG~C&y^E{2z5)meg0Zzg}&HyVRB|O-Vo4oZ2l;F|xr~0;!@&5j6?#HoSO*1Wr9n!{BtK6tsU3Rfi;nbN~ ztMt=sJjx#PrI%}p#upc-NlW(bi!_aeFV#|Xyl)fC(phQch`}S%oGsU{p`7D-3x_!@LqTX zWb5Gj$O&vL?l=w0-F4e(i=##AqDT~;FCq7dk@a|p(6qcC1SCsqv5#iMg6tsUico(Y zQ@L25#g)2dV9Voguu-rGqG^L-mtO%<^@MoUS=u~kackiEx`HU74%z8q;(mNcv505dnJTp-3F6833#*z$IyL zCi?mTXn@Cw4}P;{>C(hfe^Ql5{3TkiP1Z!s)3GX$_QZZLA+Go{F4HZ(?{Slrx6?GX zZ|p^<;MlvAKa=I+r(juGW$$uvs$FEMsPWpabnMy$P90GnyE&Y z6$?J7Zqcmzx`po@qoaNPj)m_g&8vv@-kEOdpwrFuKGfb+r)k$};*(5MrLG#_%%-d! zufPF&(FDu<6G`*$N1?h!cUIOd>dO_>&EHYCaDaYl()Ngm$cW~>b(b_ZYY{VQ#f)rI zRi~>$&CN2~qP}$x^`bZOTgM75*L0(IM6PMKPPa>Z{*o@!JKSu785tvXE?$$6E{acFq8EoOrXuZF zoY?s1*gVlC&-A9+1!tKHgr~xYW8f#K!ZPwPh{wcr`KD@Z4(``^zyNqL-&D()Vc-3I zjh@WB`wz3GiIr#4W5n07k*Ol4qiKkUnpK%98Z$~_#F;e-8OU_ivt81JXHOZ}o0&PK zqUj`<8tcymc=SR;A6$p|-82@=+i-n1Fh2`mOSgV0Xx6)-Rd$Ys!oF}Pn54DOBOxOn zypQ94{IWHHX8RJ-B0ptuM)iUT`720mx&_=*umA!jyB)Ror$LWyv*MNOD+Xq1E3iI( z#7;7Oj5SN!t{#Hpqb+euRY<$7;#6w3Sxo8Hp;Qd7h74-orNq453w)>0_x-c9*^#n_ z&@&KM4exAPAx<5ISIl&h{1tm1k&(aU$-?q zrz$Z?fd`8u|0jwIFu2UWahG+$SWwn;7O*dzwTaF#W_nh^(~mHxtXol7*8Un8B4(VN zcVc?j$X$uOw2b7Kz-$~JT%6h9z@chzqZ7NjNwrV_fX&u z?goCGU;bX12`inDpArFog;}BHfPEuVvrt)?YKLb#jyG<|`jl zA`XzQ-u?jQmaQlO3ZDDmRLFzqdaYx9Qp0B(G4>fFhFdoBpwI z0)H*^fPY2u57Q~XO+A;kp_72&di7k_hEDkhs^|JPbjtsDM1;8G?}qjrE>j6g`_a;X z9b$6Uj&0XBcl#^oN^+ zFkZa;GaStiKG72qh(7Fy>-iM`bkd&&COO-0vwJ$xz_P(bH&YZR8!TcZyrspNzNX5! zErqgeFNh^uV$5Q}e?-EUx_1l!7WaKXqVtDjRGThtF<8;7LZqC7()GT1J<`RYC)ydjk5`)jCI_p*IW5AW za#1wcG(|r0O^akjl3U0W?7`PG*z}tSkjq`)=i0?%eQvk{Ds5)JozG!+Hok`giyw_v z{37=)s51_at0Yk7>MKo|9q59okkupF&dFFYDV#ixz90X_%RfBxV#TU(@)L^uz8C*FVjC2B{CUadp(^=fMSkGC{U*KYuD7E0XF>v{j$FC!dE4 zPn>y?%6z^0D>F|DC$ClHu*rIH^%uk;7u!kpa>-Sy zX;zi|%X!J8!pTEba+dllo3ZmDI^QqTy*-(^XTTQRhzz0 zAVXCoVLC^K)B~L;!7VMH*fRu|N6FC|qtV@qd76(T0sqz|jJ zU;s!_Q5nKk!)d`GQBMQKrna<7GzP$Kx5oc6-0%lB#$LV4ScI%4!$6VZp)R<=v^3f~ zXcS%3TD9o>tLo8#aA|J91)k)_!f{EA#k;(rB_pFKtRHQ9HJYUm+U3|uNJ#7N1m)UIQ?Ct=5EQvmSf5t0`yB7}9l#_YBwoJ-ag_Xb$ zScdx?^zFoK8eX^HZNv~ey5c`9D7Ejb#CwVPeK$(7q>NR-?!dMraF=AYBYd~@!Y{&y zXx2!`aZOHo3_9^PoY5zfAqL$cG3NvUm3U9yW@4-TNk78CVbW|w z)*3XG@lOcQLzs8=3FDuL;#*SmaYxiVju+c2`j&{5yZT_}rdiuS&uK5Dwpi|q#gqQP zeCyEzru#R>mE-8->1LP=k&B2~8DHRCJH-_BpXOYvBy`VAhzocgvcU5KAt)mlk`Pp) z&jju?P1S_!5s2(YOvkNM`b7jV%F^FrIxd0k+adpSm6&lMKa3k1%P1X_Fk;eKm9lsU zcCE>a`N#e_#u=amvmgvyd5abNF@*)O6OAji9fp8i(g?SMX~t{t4t|mG$*`1k;y_&T z80^|bLRFIR;VwMq_G&B$x(ic7NRM&kN?dKSza`Ipi1HBl2Lep4-Z>MmY$`}A5a%iq z6fjQJx*o~m+&(DY{4>GAfJIb+INd#xD#f{v`s=kCg%E0UnHV9I!LdJB2XO4o<&3I8 zv0U^@H>W^C$E)48Mx8Ipg=4V?Zq1u(G|1ZF;L#Q)6tcV9ZXFZ$PQIuHt9S28hLHt? zeDYkI(L3fI(__)Bx$@fQnl#9STV&$ceR9OO1*RIg``C&hLzLSR1zp~@z!Vk7!fh>8 zf+uJlB9_NhWr)Q0U>&kH3c3PcHLfA7NeaG;rAjh!ol_*uh6$pP^iVA8omfzq*Z#+SFF_L?#S zd<8;Xgfu*s!iJ6(FIR!1bY zP@4gj6d4S59ffNs5@>fNwU71&5{lxnpGR^}8wogp{gYT`A-kst(|*Y6eALaxM|2EK zj1s3yP5HuI6b}Igu!%_S?;+p_-o$OBK;s?RPYR0=K^bOKpqJ387NA|#Yj;j)`aHf; zIMIGs`u&_P2Hk-B!v5A+Q|ywnj=wO=}a_?MCUTi*Nl_PiAe~1802HUqVKJ0 z$V3U}gNO1i>|&S>@S;Zs|Dw1S_j?x+xU8o)cmb}DLk@5)tWcr~U{r#9O&emMFoja} zFr=3b(hnI1LWG4GZ!yET?iFO=3OtXXDz4PYv_6=y5b4cH#^s#FcY7vb9{XR$9?fDn zKjq@eF`iuc#JRXuk9@8&S=*>;w^Ec_uAQS9aP2bkEiH#H)avDc2E?`igc7rxYxlL3 z9N7`)1D9lAl0$@3;h}{Fs z&9BvikL>#7N04^d`3b~RyQva>)%3Ygy4py3=Xw$Ny<5Zhox69e>j!*OqY0I4Tmq)%q#f0w;P8Mp^Vz&4bsHoQ&^ zpkA6AD;ly;r0?sfm>DupJWYC}2`A;^IRo!Uo-<8E;cfEd7l4p>&tgUhajuINP5_aZ zc?>+4gT+hPJm^E((j63kXVG<8B)HkxZW)Cp#daG)UHJ2bdsNQRHgMjiW9U^ zaSCsWO0iPB5q@NlEQ;){D8+W&%j2XZ+`bigND{6+F9G|(ynw>cQUNk_WPZ{^G*;sO z9q%WTh5%8xrmy2f@?gjv3o3W6lW0y7p!QR7+8x#4ggBRN zFm`p$6{5gXObd_{QqneI?3u=q-6f6TxM}YhS%^3pjyFv=sJP6w?WRhDULh~+g{ZM7 zEYM%sZrUlP?ZqfCq+;$(9rLtT5F6m8j#aw<5W3T_k{~IO?sjRK#OlZ4qK`#4UYK78 zLU*1xotjdW(vXM~6aSLc?w%k)@+YT>9h$g}a z(m08oG+-npXH*)!#~(_lhyWnaYUx1pEicUyRRzE`noa?UJYO0i(Ypg; zJ?rIAN(FL|#qNQAD^LhER^wv$@!CjlWs5Gz@(y|5G&Ncnp&EgbXvf!3+gKCQu%yWQ z57s_=zk+Yd;7=gz=My{-M+yQci3EGdleR@SL!7EC%+&6V5Dg!~@O|Aiosz`JqIkXb z94I8|XC|EY&6TIHpU^L@78gEZFs_g%i#80;sU4xuz8UZ-yq+J$je$6#RVoKGM|1{h zui--ZLoP91WL^S?!6JxJ>2-fs8F0c(Mtlr7ORahsoaAxBD(A&l13Mn7VKDyEyJp=~ zh^>&kT;`w%J1(ujZb*5B;VVpPZpU+)x(-qxJhBS{JPb^F9IN2RHG!a=dG}|FAXfJ@ z5tCy&i<<@CUTNx+U;g9=J0U3Z8{`i`SIQuT$m5c>yJ0fHCH;ip%$yI*9l-Nf7V5RP zpmZV&oqaG2qNU6zSB4*f;y2+(BTf&pyILVWsF&3X)1#!Nqr4Im6y6$K zZArlZ71Ul*39$da+}aThT*AgZeF-e?e?e`2Vl!N^V97a$k91qo!HkF|V zP|$T@ek?9lj4Mj3OxdC&(Gluzf|&G)zC>(Gf$00pe}JnTB5)yY-4%u(`UCgho;@qX z=n=)`V#&siaGFnyO!0nr$kZIERN_tWtuOw<^yGj49_;6J5WtdM4SMK~!+uRO?{v|a65sLv=XuZv}q=v9k@+B zy$LeKe+Cc4mS>iyVL}la1F_1;?@f#8!><+&U6jQ;@gF2gvI}z~PLbmux9_aGRG2l` zhwj|nDG4(4*=0C+huoLmf%G`^?|}Rh5hu3SmX?ayRhL$a^;QdTW`9Kx6*dM+{OJ#T zU`3Bg@$yapnr(#VGey5x^polSXm9OV6PylMT9B9tZou`ssb0MI6Evm%-*FQnfh8_^ z2$+>E_;~eQu4Q?x=S*MXR3mg2YX#=e$;Ss`^Pxy1zH=Isl@GyGfoBZIwBY&dya$S z(Gk~g#$A6F@$+i|TJ5_B(omLH`pGzz`9=!HM#mAGt1=gL@-(@|(X6#ncvk<{-4i%i zt92DjCPu^nvXidW+G%<8VMQVn7Yz2n{lrCU!$&kejcl0BbkLtWS}G5E;m*U#<8#SK zdoxupf?hC`{H=Zp{5q1BmW|+H_=Ms;oLGPDdsUl9xSoq+G9ADYQe7Ch!R=@XTgJr>ne{0583_kk$nbNpYh|BdY;)BGLOj_eLQiR}+GaK0$PKnU0@#acHgwjtI zDJep6N=l758gC}qL9?flj*%lT8O}%cuJ)&8#ih%M4+*#BZ)v^7k}*ZG?ZOHKx+=k% z97v_&T<2uH_Hi5IQmw9i>)N*`nlCO>s3;efT&)Kr7dTqZ#a@ySgSbo)bq|T9G1b{( zRl_A|-ZP2jnbBgwgqUt#f4aH6b;Z<)%?E3huz=;O!!scmZIQ1D<5fjq57QBnFJuI# z>7*!gzPo^M=)Qtn!a5QTcLRYf<(lZ$IgV&n>B@Eml ziYXH!+!WrqYZL}8g&EWja{?1O+&I=FWawK@zG|Br=j?xQ$zSYT&sK{;`I!eyOH zs*#Ul%h0axpKl-m!s;P7<+3T@3j;JySlb7VI3$qrX$;WpAWnu?p^?mDXsrk*8Juzp z0e-ZxA7V%h)@9&}NJcvxQ*MNMbOI#)GSn%n=pk)`W$s9Cow(-;%@^0s z_rT1(8>Z&A;eq$^uR3HuDa#&uSjmve9RWFjhc@^P`b5!t!&CGL`17-`%Xs@_M?Odq&F18Z5@%!c#7Ej$~Y9CC2h#o~(AT zr_z$yPBLOX4*W+k$9YmSUL`Xl?bS^~;(yVR;v~3Twt)^%Nm*}i95cX{Z6^-v(xuZo z;x4tr6s6E#$BSSP<$N7_js=r(3X%y(-S44~Fs0o^x^33s@G z1nazJtj(4JIeZ~Xt=d_O&ZS^+a_C8*&%XjG;Fu}2M{EC+DpSTiC3sSv7VE#uhG}DJ z5%6O9+_=QNmAE4nE3C1~T**!c%^%`;130i+h?N-MR0QWENy(OsClk) zRZ5r@Yz;-q1A!f7@*^#v`G^!IiqldMHT9(~VLP7w|J?<4b?yHf3(P*~|6gGLXAA7k z(XA`&VgjZfrON%yd|N@=1@?0N1q;mnBo zzxV>1{BIYSZlgFn!d$JDB9zigU6e`Lpd0_ln)*+Bn-_;x^?BPGfe#2%CbnMZD05qJ z-9OvgsO!Dx`p5ov_d5AfUA))-{kDc)j~{QYzHl$wFv)D_BEk4CHt~BxvdZx#Irv@p zWHEceGHlV9TkwKg7^#jITnS+>fBV1V6!JfWyg3y<^&0pr){sujh%A!I(e)W{jD4>f%*X`-G)@qM zftU>OI<#o^5~x$pb^upe4Xc1d({b7GwZ*uA zjy$nVAkahMOmii0y;>Q`1vCH9n(Qh59urv(0R+niBJVnHK`JL$UXY$y7hRA6D`W(Q zyUlC&p2JV&?7+j)n1 zRd0Ybei}6edb6+4}`U}xWH~YO}G!556C1oLU69?ndNnTX4Y#d zYS~8&hLKS!teiKBM-Q1tmDMYG`^!pVNDg?EoJ`ip`1h;)6R|r?7ab3qOFHaTmP-XH z`8SmuAtoF~t))uC7k=q@Tx6-%nhWT6DSEv)d)R#0?0V&!m_W9k_~%o}4N9zYvudng z(f2Ae_waq{sG={;mF3r}dd?_%jrn|fG!&53tkV{z&yF~)3Yb*Fk$hPoOfOgTy#lJ;NqL+4&^y?M<4n<$uwJm*iM1)%%FRf2FXw_NCe1pJBZ1ZM_Z>$u*0&u! z4sS=+x4D`i8Z&)|7I2o@@4{IeBn4hi37l^qC2*F|TQDK5I)M|7t9s-FsxsIIwp-Q} zvZ_PB!RjJFB+hF%iBfh7lEcAtNSntnQmo8tI*EqaMgt({U?J9&~ml#oiSr^4kO zr^3zg5sg!Wr*NZYjiP~UO%hLs+wLTnwJLh#hK)I`N|32*{pU~`uRD#-;&ufnjdK~k z57%p>UmRO(!uRIB!hQgPlNIFv3f}fTs$`t2CbB6xNsrVL<2KA1`bV=GODv+Bn&zJ% zQj4`Zv+RQ8h&;+15kZrU{)LMbsAA_J?Im0*UqjzyLyjW0ixH*JWg62leg0V?_^uIt zj0ju-?P~C;DztfYc0615g_|=2&SyY?D7*K9D#GnqcL6=zo>#?oPlrt7)(euuEqhzF z%zr_8xcENVGVON&p%Xe*@V4Fw?b>#eO_-0?n62S%2sh_Cwe^PS;rbBwmb=G(S)8<7 z3^xRB=G;Y#{zbt@W5v>vzS6zopLF{NvR>o<3yO!UKcuSv>VoueyH3E$=Rv4V4o)wY zE^4Cb7&P@wr%K6_k9^dGV+?E*7)$IEz_VMS#q?9KGKLECQ5vlWtsN|Jkfy;#hk#DC z0e}aiyiMD|YjfTZ0fo7{0=Z*}%JV|pazYF8smFKXxUaPj<0R6>aU7I1d!m$cZ@5px z8*&^XLI7UO*x_HKcT~_~Pr%CMB)v!e70x`!*BSZis7m>kvBos$R5@cx0zr>yFpA^H zKJw9_9!JZ^`_$t?`RGxPFU!Y$>hV+g7*dY_1*4kt+sT@{$Va<+yh=V!QIB`Y$0ndi z>w80-ez-FP*pKBALNvGQuQENT9>1552!uS!m%#L_Bc;Jv<025h0fb;fsHfehM&WgzpxT&C+6$Bo*OIG<8$)yZT0AvkH_Sru!dAK zwRUOpjUhV@PHs}Uq8PX01DN7W1L`cgr954}sw$md1sH823tKZPqc7EN$l?T7maNlt zJpuR8hd-kzq5AM!{8^&@*NRM?Eb$MO9%w0H>>%Hj*MY07Rgag;N2hwcLp}m#jQijT z`3RUXegw=IEtjL}@mu+5K$sw!3n@lUEmx0y(q)+Ly5JVehhLE8=Z=vzBOO_ne7pY15~ zYXw~Eq5`pzK1e=o1++6|{-tRTf$YWM!JI$GgdF z|L7)@yUWKF>hCk%nfzgQS?ZVW47*EM#SKN(nH`Gdz7^gf!uwnak}s*uEW02%yv+@~ zfF9oFE(hK*ZFBYiBE6xQH=gnb|3&(`3+Q3?W@EA3cHg)lJVC| zHtD#=wfy_44V||6aJiFh=xy`=P%M%BQUKaaeLtc^cJ?hL+{vre<8vh<`86a*mvVUY zj8d7abE%kf0xNQ0sn|=&R|DvoYH5O=Jk%{yr?TxV<;sqfiUuE+_53nnp;FJ3$#efT zAU#v5Z`9w1%Vq74mvgb70Q*eI2YSfAPs>C5VcGNAI;uR=yCT7IU7V=e6c3N^Um?jK zbEI>YSiA%xoik_g*!UG(#m99{!mlg(>BXL}pd~wV&A=4#L0)<6vgw9otp*2W!li%= zdrJe<)!SOKR-YysqF}JlnB5x!pJ)U0Z@-|v&DRc0)|LXSzDGCUUAzm~-hy}XlEun) zmqNDpNkOu9Bww6f3%{DhODgn6eH*@+=H!t=IaXuAH@};gQM>Dc^ziMnTN?(I%7rhN zVW>i)(f{XQ0DA)-X*K3|Q>V-_bw}KFLGd|?-mMKk$kmoEe+6I?8_UG$A^kFp;d|j@ z7iKFL^+WpsdAEny_^Dy6NbX>^&35Io-$?B=-Vhtn1%mcOxWI|LYgrP6XB>4$f7sVWSNPe@n%b_ z_k1_(6%YWO53T4OWU;_6r>=f13PZm>MBbF})$TwRKv%ee%yk(U)gO#z4 z-9RC2S?L;VfYAp_y%~n4@zp9Y;bgcaweoincnQViwqFm>9X9`Plh+DIdSd^TL*%+L z(F_L-GFe(?#9f|Dsg~L42iZ+IZvnSV_R7mVM1oj-SpYxC7+Dx}_~ly%8>9_)l)|QO zI&f{=1c$@cM7B>l;l(6}4_4r)^lU~z?5_91juK{71!DaMSTnZjhby{RV9fwUZro~` zruY}B4YY6l!pD zSJXDK7hLl4zv*QW8Qm;@z~tgTYp)*dW|^dk@)C;@*X`MuS}GDtE$J7U1|fKHj;Nx9 zR(;9Z4O*%9zEaDN2q8!abI#8(R6KkR9w4%p`72-{2_Vh(PF^k<*@9R3H+)U9-f< z10}GIwqnPez8G8NNgo0`8hcvW+DwFcqT|kGMCrvN9jhw6Q+ioi%wWhR$dXY)Y6}_x zz1lI9TV#zoWNOstNvjFLfgfwP12?J#+)S#tS}Z7pvC@*<>0;}xtgKIYrTE})9ZPjq zVe!UdBYwbAz-U77XLlE$a{1Mcw0FJJXRB@VMwMYW%LyJS6SYW2^WfE z0W1$A$V_qOD$5JP(%u*)aV@Nb`RSgCV&a!uSz_vN2}%Oh>*HB%&;TzTHW`muin zJdNYM@-xZo7O%JmfT8d#r1iKf2lPcvWnWFus05lV)mEfei3(Gb@zK9Hf3m}c^c@dLN4ymR`b`*02UE_-BN&{1Ey0LHqxr#Vd#o&h@Hwmg=U++oB`4q zE6O$#D~9YXMerfq)B?}JUqd1ai6BL_BXfFf7{btzso5<^Aycyu6>@e3I?tj71q$^l zWFlidavKOdcZq7+o6?a90o`Oj1o~j?sUHY5om@DyrAX-ytdMLwAgI_{m66f;mnW8> z>dCQyV_K1*PiqEJ5uy&^u2J$4=45DA8X!|v;PLy4K% z$pq#SwZ2JQTzKdn+*DNE4zPpNA=+55HiWNgxErIvLpnvJ+y#tnnmluWc0k=bKW+Ju zM0k@fg|O2(iyBA4cIf~RP7MuaPmZciCHhnnB@@>X7IP=77`Og=Ed?Co7U3rVJJ?{^ z%DPo$2y||YrP7dPK{@=ZK|H`khTh&8H-SAcTwf%qr{Pje9Kc&|;n3PviYa<-tffIX zAH`zab~%)BWQ!*}c+~2;h@}Fq4vV+yadIfuDp9&B?Z_3D_4>9bIeM!&65C%<4vqT* zhe9Rrg#Y5nFUN)PZBqx){{hP--lkhDFrlSQ$9ryy1r{N^=ZE*3kK`k3c3Raxs)FypHL#o3IfU?^V@`j9>EybH=0*q$dE3|BCDbuCE6_}D=dAxP0^rekNJT8Ni%8=ywuUT_f2(*=-l>;407 z)7DfRqkg>v3qc_831+6OM;l6vhb$$C_EVn`-43ZeUDKr?4RLT;ywX@ z)OZSSPrag94GIpJLRm892}R)r%KV-oz5w5M0(O%hJlrQ9O&)p_J_j7)nii#?fGu9E z$~9_1a`^Vb>#|^;aCJYumW8OH9kdFu^17_a;!qV#9PkUwLUvrbSeaT0Q1BaJAzAnn zOdM9$mcz?a#AF$EspWq_0-^4q81I4k78UrJA-0}bfXf4icV7*>_XeP#jvQ>zYmdVu zI4QqEH(89h-%=gdkRw;Wi!o1ojJb8vsN2W3FyxktaR|NoluO6L@oBVFy;!POMz>)N z42vxQMhq|2Zi3Cf&eg-1)3h|q-(9e1Th^H}L_54_oF%$~nY7eU7g19`xrC zf_8jg0P>i?aq(nuJPMw=X>B}K(&ezK=9$e=*m>;wBIFl5QM5qu1R5o%K- z)kZJ`^V?}ftjhSMaNLl)%B$2CT6e{tVpVdRn`-*26=;aZw#2>Cgk41hPhr;XHUcM) z!g7hTR15D5>p!njJtUp!e$Gi3Yqw%wp|R1SAhRL2?P(V9&UM949~|rY0()fQ^F?`qy6$E zZ`|1z5Oh!BV6vYrgd1rQU<>wVv{N&^C{@n%#bb)}x*g(hQhsldxF%7rJ=VsVDehQm z+c__aSN(w_sZX!oBCm^9M*g~91W98?IJnAE-%g%Mi(j%7w4O;9Omr}M8!Yu=`cC+_ zS~sHYtw$97!mu(9tb3zHc|OpR@cK4d;G-M(0keGfUx9eRQ^TpjBY?M68--it;pOP7 zJg5%BK#-2GveWo;2$ygix{jHx}WfD4N(<5E$!o!^P`pgXqZt79KjCD z6Ujj|_dfuHzjYI~ZEgp9vH8Jrg1Lb=00Sg3z$j0j(2RVv627W}{c@;9+H>HSnUyAh z54#JF_A4p@*vN;4eGA^e?RF6mDVKB+jq0UykD=&2VT#!2#McG55II*^Zv(kpwmEjrO43@I!qaTRX4K)$n*Ae_vltdtQ;+DL}vP%LEffS@?|j6a4?_ zzzuOl8?aVpO`{H=)n)Zjlk;)A9{f1mLfCz3gpbaRE9nIJ8Sbvk3cEQUm2l1n-VW~^ zKB74;gHy$#8D;1KV#0$&?}EMWFzvJ;ItYv&`h)e+dJi)b_| z+9|+%BC)4g$*!4sb4Fyr07HNEr9F>%n$NPuw%moAbEZ-k`dOzh{=2Cx^=g zHikY%D^pOOO_VF}45GS0Nk}jB6M?=%!w$lf5K;JRtvAD2#&HJzOJ9rTEVNMU`CBOfzG(-Y+G+4vRqv(}A? z_hnBpXe}F4G_lUH@^tnzqe|YHp4o=WY7>rV#Axf7B9gYo$9e#TQi~We6Z_+HEhqu+PmjtILkNg1 ze7qNl#@^L>?LaFpK8HDQZEriVH=|u4^WSl$7P*1FAgZ5^trWAPqGGjQqQnDdvn#Y+ z>0)DQN?ZQ>fTa!pz5ReCwp&=E81J6HTRy^QQ%v2!@0c@;YMUBC z5^xFF%6{JdE*MINY3&Sw3&q$9ndqq9kNI!^1oP8fh2_+B8!rDG-nHp{tPU>80z4~x zzeS)C3y`ZH23KRUJK)IKOlg3}2Kj>r-b1Zi&Owf0?CovLBTo$2r-;B$*g9ocv9Xw< zObh)L)0<=GIF58w^)FZcA1jkF-fO$Wr-%tYu-pVvD{MYo56J6Rdrbk;EspAhr9x=| zs?~#FWrBUvWc^`?CoLdh>x6$c-7_h_uNtj&?8AB(x(1LVg$_%KSoAXPD4fbZ>||OX z!+LXVu9x$12vb@2KS+>45W=~@?*kf(R-nM|7)mUd1QVjO&5&~OqT04CNnH<`$drcb zPqY9DlW~slK0Xnsvm_^2Z^CXvHE6Suht33d z5r)x0(NA29A>85GeM2xKDDoL3mzApa5Z6Ug5*PWWGL%S&JoUJ?H&7d)4g_m3UW_#$ z894e{D+MB_h>p_DiQ5_=Hjrg5Z0Teij2U!%C;SBY{mkfvUP2@6-{OYBCHO!kjjdqj zk7C1~0vR9ystk9`*wO)$MTZfXP{!D#@tsv%(z zv$fpy2k|m$_z+JIIR9CrleO>Ury&XjU4*Te?je91kVE?H|U2BB_?ZikhL8FM%cO= z;DXD!Jon-QDCm~*8>W(mH_?|IY1OIfZzAV@j<9AY_h0UtyMcp25y^b)Z%pOvB-^8q zW5Up1&3J7&+6+4z9Hh7`d;V5{IrJ)4p#M7vMc1j?gCr|+yoz!m24SbV`~+{tI_LKg zB!twt@a&|o*FMJf2+f^D&){$H6OZNe;p>egF$|Ec1vB;B`H(A;#!q+%gUSCU>AU=rt`SR~vLgHYXO zRO1*Qo`MX!;b_1P;vonq&eZ^MEeTWSS znJaacmK?o&457MC!_L7UlnX903IPb4sL9-T10lsXJ&gfp#Cpz!@RUbxGG=JivKryu zhR5qRz3@5mUo6+d#Wg-qlEjV*9zH}P;ONvqLTC6&Vku3@I2}OJI!78BP<@bVR&qP(U{=0mdj=O!(On-|=EHj~*4J z62p7s)O5uZ9sk)f16s%%qYA|4U;hu7A~9|hF3Gi_@YRqRqh~^vZjn;q$cz!|qNePJ zdyt!gDuwPD2q|?CT=DT0!091TlvWPS)?aXinQ#t_Hs2CCh6a~xBBx^3aoJ}<^uVZy z&WAD6j4u`9UUU>9_Yj=W1v?+Rp*j#Fm-oYbAU|(Ed8+z~a1%XSjiqHv1`x|EGhos@ zcChuwH_)Ys{lN=qV{&2-T+x}toJ4C?c-m%TC-&c+j`+glbZp-PbxRg@R(;(LKztKUvUG2zAP6)OQ+`n< z;B`u47cVxv3=p4@Kfzgk!ABjH6YWWItZm%izpbzHO%#*34VdXgrze6CF~mFxKE#+xqr{J+p`gdn6t3Qy77j7$zGEouV0jetwB76EbU6% zRWfk}bTs0iXEYlY$GJa>DZmoXP7zC90^GsGt?@trNXmPQ?^O!WV!;&h(b^AP{^mzh zpaGqtO%_$Dd0XJJHR`8YVAkA;Th{QjJc0li`hAL-;;}Gz#fBv*v2EP7s?%Ut!}`;V z^gMW<&w!(2tEzK)dfvtL(7k(=OFZBXV)gFo4jq!_J&)aDSly!7x`k&EUuo)uy16qe zBc^7G#P)evv**srikLd6Zc*f-nt}6oH1^v@RzP(N4Tx*`c7p0es5YEP81 zzt-I}c_1g&?HrIrq*h;;ZDb(cT6Ss)3hHIvg@?D1PXRw{p&2yd?Qu)-12w$eS^@G~ zILq<(#GCE&Cd@8GR%!r+ZVIAQ9fC&9vw*lLqR*ufN%Pv{Cl|PK{+CJfR^zEPqEmm0 zMRhIZoz_C-_);LB;LmcH?c(}Q~vW|NU z5vx>>6}R-5SlK==w|BT(&J0M=)h+CrH2*WI>ZW@J&TmedpN#j?N7l`6o;LK`MMxR9 zl)h{K*`Z_7jeZSy8+nVu@zkdFX z*~UxDPR#w~+|<;%x$o!)E<85kPyKJ~|EIU9K5EId%f$7Wd6iYi*Q@H1=FdXu{%@i| z5yzi^7t^A9WKW`tE?@Xg()>}>fSm*MNRRmTc044R=ZJHec^!2*A}_r*P4vpjOVv6x zi?VYu>EcgWd1l>d?>$+0?W4uo-}4Jnc2hxnV)9%~gG=Iox9i2h-}8I7y8_h7l!SjP zMYSm}yM3ffXGkm>m}u#rm{psYT$`xBH2x|v$&{A~$>;s1yw2_UBT+y>6-H3l)8E9_ zHToQJ*p!#1b;G?cBPlmtB6GZ)abrL+#nxAJW->5dx0%{}vjX-nB59f%Yhd=l>MURLQ zcjxB~vQ4H{ihp_XPsB!*zFN_rR`j~gltVFS9j0EpN2UAi|$$h`6*ku1UC@Jn1WN8 z&t0~6;nSAQl^`jGK@y1(*svu~0(Ozio`i>-h#U_SIQg(#1Zz4A8Vi#rG9Y-1ZiL}( zScBrl2K);Gp#%sZJOKD4v8WNiFI?}QGSIj=KDul(trbn#P4~c&6l9(QllqFFqlrI= zvfJLljh}TNBrVi>L)AgXIc|t$h2vLPWMmIfZ_p-3iqcoRL9hQBK$hG^Xgte|17-L$ z{$@X+aQX zn&+GY`S2`?pUAa1hSQyv*sTzyQm<*-5Kl?~;^+7%fba51xyIoQ+@rpfUKnbE^2r4h zY|a2&b!R}d#B~`7_SLfu`qjagU}`Yy<|Ky`s$bg@%i1r^A1j5#!INOCSioyTaC&Br zTqNmotqZHqNQkQ2D^6_$+|r`qVA#u>i2;{YNSaPOAaXe%hkPkUf z(8?rWgM@aZLGd#fcA&%0!0_qZ*&NUgr@%IJQ+rs6{sP*zmq6S9T0BxWz(8t&hFZ3f zHEGOq{Zqtjw*fLOA5tfN5{rBd9dDI*i{tk9Yr~8gRx3Tx(wOD@V|t7GUytc5y~Y>3 z9#cd(iyfepeRwb?75j*@B-V5r;axw1_qF1+?t^fb@LGQpDZL6Z+u*fki4AKI)%m_s za3bRc1u4*Fi5veP-o6Ab%5wXkdD(_xmu(o7Wo8(0L^c%>6+zJeO)Zy<+)Xp;y5t&} znp=Xol*?n()piR@scw#;sadIEscmMXsnyLC4Q+7=P5<9>o@Zp>-uu(v@Amog`RF_E zv%k-Jo^#Ik96dy;YhkEci-%3g+XFL2T`;V(c1s5Za_nPwi;V5Z3?DgWa)VIyrfk=C zX=xzh;M zx)m;V(1AB~oEU#+g3*ttm?!9*6X(8Z14qPnCiK*;7K`poNY#xNTkcHgs|$1J`zNGn zx&o0kFd;tv4s54|qjPWqFZ}}Lyc>f5TK!Sr+1Xmq@pSOxW-((R@>Ymf2PT+GY5H&MuQk|Adb5LHgsz9(#;Pi#Ip@Q$DxN44tjI6l-ZF) z7VaLy#4EEC6rs$DZY5vCU~NS_6!419w>3I^<|GUVW2A>DB@Qoh5KHD_yX0SNeN1u? z>1M`!!}_7vE;+28Ed9waz6TL6kOkNr#u7i`1&ZoDxLt91%r9kbVC7113re@rRcS41 zW8PmaSu8W{1taAMjJ>6?6~y1+td+z^;;fZdvB@*D&3*>4 zTu3&V2IuZ%rVMqR2G`H5AU_HW3b6S!7>zseCioIXi!3T_Q8KpW(!I>GV2+$=KKhv3 zT;7_#n|h#r8GRA)f2%2sN2R?G&=I6G-I3cn8 zOg-GgF(2UImH+zsNd{o?j>LcelU+49MUpJFd{_Esm8#R&cLZ|7zHL>@uN8DOT57P z`aFbqg4($dvHbZ2SkeoXyuP?l<_u~@p)wp0IAT+3%hmhycy6QVX2gL`d_V0o8KQj` zDnjl>iGKk6HWJU)5}Y=)+3IKV;LN@NGl^EKwipPv-LNg)OfJ=@oAGjnFC5YDeeg%$ zR?kBS--~xoI76n{P+5pkt{sgEyNAh?1H)vBA$Zb;ki9&(@c=Fj6IHY{N=T8B7Mb>| z%JPTIqIrQUhp&O2@FtA3HU&~h>eUVM^@>Eq^@D|1v_LD1;3c4~RPUQ$LiIg#&6g3Y z3$vo4`N}LuijJI>JZ>Hy-6ACn=5OjbOFf^Clnct#3Un5;wrf;OeiYB~nNhO3m!rfS zs^&NOF3Km-=0RUG3|A7u%CwdcxEG>jhHs)}d(TFTDr6M3!__XLrJBUSR}wIIBM`zJ zGS4LQtT4$uAIhihYq9A)bjTHxtieBK^?FQ_uozCQgLd_H#14t!mWk4-v|-WERK#!v z+Ey8()ysV0&1EsEz|LW62v#w;^l=MSij~dfG~6Up>b?=fcc7+Unv3() z060&Ulc6VgzQiZi3W2qun2`Y9fjz5DL<+(WuatPa_gl!h@tiiRIpZK2~1bD1j|J3^ay}X-ORkO+C#VVEsP{8*ydXfw?brp7dQ7~WKuuSEMm$ey zt$)1yl6&#I55-K17bC6!4Kn;1&=rv{w+Yc!#*4H{bj|a~aTU7MNI+-fKY=Yo22t@= z7o#a$T`H*-nzhNeL(<>i1eTp>_a%saKLJ^hz@1_;%ciH9%V7SY)oJEV7ihEaKpY7_z&p@_o8hz6U0XgOoibk;6slSn9%Y7@Nlv zMU|Egh@yC?CpM8b4pp62PhCs- z{z6Os-lHw$VAi!16aNIPRlNo$$+-}jBzv?4oN&^lN=XtE%^f4P0ZAh5BYfBsNJn#H zmwcaXQLt)iO%MD#N*+`3*S1OcOcma}NqBP=-oHusHg)cdZW2C3g-@2@v-uREimxis z!n`IKo>k#1nuK>&;V(7`KdM0XZ#M~_slq>K6b@@B%~iw~jUqfew)t^Kc>K^Le25DF ztx5P*y-e?EmrqxZKC8mRnuK?zaMbT%X%cZ%u|L{237@ILyEh4MuEP5_3E!q5b)%bv z4^iQh5l;0t41r?O%xjY2SrxvbNqA=!{$i8xqlyXic9Za#D*S_n@Yy`+nyZK}8X`D+ zo8m(K&?J0_3jeK1_*Lq2{CT#P&l^La!o!+`ch>m(F$7H_j;bxEZIkesD!hA>@a8JK zf0OWSvK=0yn}iQh;ggL`B3yLd$6~^V(ZEkk@C7ihDq(#zLCx-97r`R4CLzmkaHK4v zs`=_8hRpRFYZ7#ZIkQxlL5z4KBvwGpQ!kF~OXz1vE0Zx>^kUBQzOkZs8^A&1KS>xT zYVLr(bKNK4sAYbNyP4t60Hfj5lQQ)|@6}`DJA~gR-%ik8j6X7jP$Uk-wM^Cx7Uw@r z$kDb4@GUJiF=+oShzHVvNC^GLCtd8{0A=i)h?W7KuwySi+nbXwVGL2LAWeOuGUut*HRpQx;X3vHNG)CLErC8CGrnJVOBeocofgDC?-?%UIurVe zT_rww4(Gigxd0>{O)!Q|FE~-r!LLHocYaN`nC&FC;HMOCuR|T7WMDEWChMQ_xWOd9Gc^6_c zbaAWKct<)m|C~_ZFa5LL`A0%{Qy!gT+SP=?O0L~ts=EPM!eXY90l-7C$AIEF5yn-; z0Jb@A!$D#=0C|7St44q}96YljU%JP>x zp>=o9pE-*0UQe3TtYuwZN_-R&WW?!Kp9JG4E{Sx)fhB?$HQZ0_X`R6R2aJsQ?S?<0 z$WeSRpcflfCPVL#@P2EP!9{=NI4iE`9aMm=G z$_Vr7p`E}{Va4#t;H_{|ODn;g;+kq$VUHC4Yc>;yi9V#yPcCp8d-mgWB~!tuffNC( z6CGGwEcYlSnF;4$%osPRd=~g=+@$-#E+g+EC}cbt zV02Mf^AvSVXA_0HD6ADt!d(>Bi%r5^6xQ2K!d(>B2e8IKda*Tkm_tO60Se-odNUjW zk=A;40{FKEQdqBD*A2!p^yYjSQRE3VS&lHxM7Cj37&_BFVhS5DA#8rCfK`>d8f2(5Xt<{J867;dbkG>At@_~k<3&gdb9l^Wzfokq71|^HFQb^=y842$-Gya)PE8kG zTbTOZlTvc(#SPjWz(H**J4n=)5bz!Sj2e!X@3$pWcNAIU-`weY!`) z9nZE5bG#O320mu<8<1dCzhMq=#3q{00#|xN;$g6x&x_UdVbP8&cJqB|OKpnY7o(D0 z$XbRfl_r~EX^&w$C1fRoS9lFcoO%72NHLlvpoTt>P;yvFJ4{MWXCH=Lgu^N*jM8Zp zP)#7XdIfEG<%B1#e4&f_RXhZ1oWruoCIi=66OVb$VJyPnU($sTVQWfA48e8Plg6=~ z%5xIppYyVUF#oE56%qIamA3X~sML{hN+-GSV(3jt2EM2Ki&RLY$@L1CS47&cRGttv3JT*AoTNg^Uspq6)n1Tc-_w><_-SWm1WJ8VlUKv*dys0jrMOEVdj_PX%pg0lY;eFh!!4adDB9a9X9=gG?)w-5hzmHe543`J#hj@b z0U8{MhCD$#ETv(X|Lt%sN}dNx?j^VqY3GkLu=OZWN{&J)ji{UlK3U4DZkST!P?S@B zZjfJRzmsqPs9*QHha_s@($3aM^}HW81}J`>d>7@@F@;#e*EtsLWaE%u1&BGXf=l+jdj6uGf2h1ZfgCRk z?|@2S#7s#SG>uBp#;CXo3gM|!5lB4fukf`st}yNGKyH<&zY($vW)T?zkb`_Rq~33W zWvB0;SZxo%VrQgIW{|A6oYJsoM(3<_RZI1au#yKrSa57Dg|Xkp=U`S5rXhr>t2rRL z1@#*+LDEhi9`dL-@=tj}0xiBMAn}osQGklh@gWge+Ykt9-uE9$E@u{BXEW;X$Y}<$c zw&Nt~G68UHK#{?HWVAS!*~uMkCXr>7uEFsAwJ-JYB4`6_?`)2Qi_r$8_~letz6YSh z#eO!iHXW`YhK&H4XLncU>?uzW&U5_%l^X4_N-p!|Ms#ywvYMd&doB? zM86k&;oR)SAYb9L2A%nRAM+{UvpytQ*!r2LxE-Yx{mcsL`ya0)_5IAROD8|&uVBTo z`Ya~Q5t=2+bcek^Xrx?>-b2u5-+d8!2INRsD!4Sf8U~mL8zw3aV;XFN5ZzQh00;kl z;y`YPI590VB3?I&eIr6?;rxrFpLJ<^?t9a1>@&f zHq@+4VQB|FRu4DZz@j6kRemnTz*ogGeOLz#7RVml(%A;SpbuF`+c6vq;LL=(MF2mk}&iPH6-6~HGjy|9>YYLXD6lKH$b5YZ)x zL%O)~`Oa83PUo}{nHCK!;?}Jw#c6|b+XK^a(sSNYGNMpUOb%7V z;TI8Jq&UbFNIlm;*H0&5`nU|%K4C(Nuei=}xQ*X412yoMIrDMOGx1hI#2dG%nqW|z zx0*CpYA&#D3LjXt6u`-)#tBt*gRT?KCrQ9ZJ4!vt3LNF4Y4snsJvFQ-hyNm}9!o9Xqi>wQHBBPyJs7%+0axz|$yzUY^fQX^?_ zitk4KY)z?x!+2o3LW)$zr6hQF9fm8Ee1=Z92yxC8?K%wKZWJB&2u?djWAbUY z8Ls0TV;?a;>LvB{O6K68+oHt!z}=I0s516iQu1_Ac7Hg z*JZGCKs0=Ar~Q&6nd72p{;jOjzmNyGz}$yeYTa&)rIx$blA|RwFw$Uv;#S)G*YH=1 z%FK6BTW^7pjca9J3)o(KMln;^?$+q+CvK(De_bc{T=L&_a?0{sXm9(>4&wcv+h;%z zXQv^^By6M1tsGx3H^=zMYxde7G6Ebuh54WExEuS^xMuTS{-0tE8M?$gj{fL{? z)^*s2OTI=az1E_XS?_@ZXBrI^V^$evzT?LJl&uz94VO~67Mn;lSy}2tcDR^9=Aez9U=d@=Psyi&|Kbhm_RB!!zfh$M*9M1*_%eNtIF{+7Cw%hq&e@rQOf+dP zx>=3u$bd=qCox4X>u_8Wf}U{# zYz4ve6i&_~i@N!X*gtWtH|=nxs~HVsWj1k?I9vG-kO!~_ZGNqRg@aY~;H<1`w&Gjxl8S!7jjR4G^AaLM zCyVMHM0vl{6$K2@vc$z-a&T6?0lr8Bz279P_8;cKFb@VFMkCaO1gF#}=DuSdN9hG_} z%+Q&{`Dd)rj?)fvV6gPeRJ6xD#hrX*17Q0_CG@y(Cn6g<)jdHUa!HjsY-Vf+sXEJS%y7YkT;;eL zzut{-ax$1vb0lVz?OV%BPP=J@U$eyu>?ki^vHDAMyl$fCx;D}1XO!K8+h0g?E%OG7 zVuq*a9MLIL%yI%DG3YB?KF>#sooAt$!Nz1ae`UU@;BjJZYNp^h1o&x;qst-lpE_Z_ z?hSjfht1D6z2oJq$hT_GK>j_Kf~7Y z-QvL2Y$Miv)i2f@+?k{Gehtoe88y82cfi9Q`VORXuDCujL{eMr$4r|ze9ZXKH-s8D zm1(rkf~)2o6+UUYj^d!h94+qn-h6C!*};NVmkKT&F6ekU_^F)*9ls8K>V3bx1q(h8 zUbPDV%-~h;C)6Yy4BosG7><0PPVUMZR9JRBZ(!bl!m_U>cBS_!hih>$zZOL2&*T3y#cqv~aO+{^DG(DZMV{HVX-!PYOJFmU)+T!ShqG zYzoT0>0S0c3puV|?-vib%AylUQP#slJpWNhT;`s9NKFC?%EGNIcS-bxl25_naBKcz z3Z8e_H+cTzNT0s5$AXJ{df*qdfL87lLGxM~A1oX_JG^(<$^0@eYj0hH+@=e5kiyY- zh37B!vM%_1>c}1o9P=sLg6}ATu)s~5G(Q6|`DIf*7@m8&GZf(oJc_iZ|77&%e8`N~ z+9JfJf0_el*Q2ofvfZr?<#)UoysRH*-ILeq;=9N;`_l3JR_~)h`3aXg9td7WPQwb9 z%#6w^7<~*)EhuwRYxz@qj}EY+hQcLxWy$WzFY9d$=w0@4@3H`^?5g>bQDpDM0kSs= zbw_X4eVX4BeV4an@b&zJ-||`=L$}O|rD8_!Z_>~6J0NquZmP$EBf$$!qRn|_!^7nV z_P|Gp^g9zG#Ofc-p`kJSjUK9dPX}BR&u_<7aClUJuMv%QgDO2wT~ht$_3O*U#UIV) z;cww*1B97BRDLCYVGrGOS)r@sc}Si&?{a+bvcI8iuFxM*{q3VK7A~2MUizZfl6LJl z_i63ASSMnlW)JL76L9hHkb<&yR(#C-t@xPRN1vCIwCu|sWqS(B{wyr}l(Q8s8Kfp? zVQ~JT9t*A)lzlN{Ou^zF9z094j#-DYWDBuhVn`ttU8S&;+N^aB8u2#G9u%@4w z#BaOvT74}i-!V+S{Df;A_XjU)i>QJnGriHLTn){<*(i>y={Df?hb#~x*!t+Lda zV&^Gye8v&}pwk279Cmg7>3qBwEC$GpJ6ZMZ)Gbu22sv#|>c@T4yX;pC0hh-~@^z1f z-zeg^nys^KH-fgJ)Z0fxuKTE*s#Cg1xZLTlc+Hr#vCADBPn(D8W+yG45JKQ~2Mxnw z-`huD#>VQJu{7Qg7hfqX+mD?SFX3D}wgPOW6vZ1X=I_@%Xv6HoWq1b9H{l1*-vx{4 zSNBP}-~|NdpEuJQ9v}Sp8jytfix*RO&h7!w9`D7scf7#W1<(IGQZDXo#g=&yOB(X- z!mQfjd-9|h~D z`7iDsPILTY6tia@HJ<*^e#Yld=}Xn+mwlS2^Rk}l=7J6KLNpeX4X{ch3+mj!E4AM! z4~``$C;ex1p&CDbkKEvuA2EvYl$bchFIs$j)*RWpMi$CV3ZCzUX7n!mL(U8~dw@f0 zMl;$9q``n^U<`m-=$aH~%2lHldqQu1ZP4Z->V-O`a04Ps? zd;uHrXFnLiMcL2hNMOI7``O%TwkN)L-igc9xpOlxra$Rsq(6B|I3iZ}D|lxZzmZU(NeNKRNH>`xv?B z5xC&vvi-sH{g5v&FL?7nk9jAxMLfpA^Dkf_EFOTuf*rjhu8l409dhmTceL~K=M^p< z=uz<42g^}LL0SLHlu#_MGl%=@4!S<#6;V}Zj_FZO<#1c_aE2|;H(bpt%MZMII++$4 zN-5*|xTeLuBd(&JtEUGcF4&Q8xHgv3UONr5GTY599jWKcw*`^0g&C1bjoD)c8X&h8 zC{=rks@HrIyzdO^2jcDd4^yLbGwET}O%ao7f}$AM=0SadKO{alEi_T*5W0=9nDz5D z^CT?;#-mnwC2DUms5Hv4_PTkE`wi&dG4L}rONd4_53^gv)p1>=aRkU|*e5+_jy@T3#;@pSn*6fCaCD0Dm+7Fe@un*y$e|sPuJrq6&^2+ds(8Q;}s&? z75%P?&K1Gli0;=U+Nq*(F`?+?D!M|p$-@u31ARl9nBZ+$rkf+KBbDgsV+momC2aXY zr21H*Oy||r&|l^JK;`s^5+i&pk z6N1dkV(mQQU}?QP`KH3Q=!j{h&6WYBNhpv_F&Q@Dnn&UnZ5>R!EieE^O5RYp+SvYJ zxiPORdoHdz%oD5EqrM_*S2XWEmra16i!Oz~BC=t?d08UCRSp1}nG9_nON721w`#Eu zx5`AgQ%6+DUfmty`gABhWd9CpQ5E4G z36V-_i`rJ~PP@CqxNGYK#h)vM)Imx;#^-gDti(3p`m`&Rv0+(>tfw?ElTtBr#B6zcS)5`>(8&kFdy6<{uIDWIe$qo zE^gEl+D`$}^krRuRIn_4r=5zK87NN7_Kea6bCD1qa*<&n^eT$_0AkEVW`>9pV zc3ueA7~1}3VmawUI3I-6ieyz#p? z7+!}86?Yq46CSj{6r+=T7_!#R%fN3^4cT`=i-jk`RvDtzU{5B-$I)=sn9+P9xa`0P zX_~x)eC-n<8~%WNovU77ijY1&-UiZ>3i%{LRIT)l(#ce{5n{yG=;KH#5k~b$!UZ$a z@?9GgDMmbkJVPTzzc!taO3X2P(}MuZ+Czw?x%GS`TMN@NqPSVNN6B`q2iB8xV*ZF? z=OP*`$-}4^`BS9KP9xTE1~hmF`@(b;(4Ao!QMzc3>KQHOgt*=S5k;Fw8Ah80Oz5Y2 zSE{#QCW>@WD<0|WVtkW9vYK8nlS}Hdnm$lU9Bc1x5kT@dEeTv;QfDfD7W19Orzueu ztnR9qKwT)T+@Mt>F%{ml@fVU`l&>SD`jI^nvo#jhP_;|=){Dj{T@-7_Xb(k+5SktP zp6S3pp z#;-%Wus}9OTM*{N$LEHMs_TB(RVd_8k0|g!ziOdh^$PsI5&Bt2-rj~n1I5P+c7Hau z&qnd&_ielh$zS;_8ou2kMXnE0jsFZ*My8o85c*R!nZ8IB6qW?t75vhcM~R(gjN*n! z{{nHnLjaJkZ}~Fj=uXBQY43rhQQtaN1oiK3G*l(YO@D8obeQ&Mw3}ZusM#2`Mj@nR zLm^GG&*XSuohL3&1}_$A-2>0mDeDR4=Y%TNcBjGYt52dO6S^+I;Ie;nZgKd&$c% zGhx~d_B6km?D$nW(kCFAc%v?wK@As^TD~H+GYA8U?jXO_qd+}DI>4y+a72spsrG=t zagD;4xw0)%!LFyww!;naEw^68y_g#l5wC*wx<&blxGt(a`&96$M$vr{?L*D| z9hRW`bc+;oyI8`x{bs5ee@W^o8?p)MgDCy&D!2d&un*e-IqzbT-7-Z*jBAuHI7c<( zITcK|JNlysphd3egDUvdM$r>o(SNGoy^W&RxuTOmCeh!iM$rdc(S<5nub!03S6p{R z-=~6IrO4>iuBzovsOW-5xre)=Usu878bvR2MSr7$7d49B;fmHNQOB!|qR+XaTdC;1 zjiTdnF_~)SU^1O*6y6u%JceUbHobb%7Xg>%ik_*0liZ?x#U@wu1{GY;DEc@>>roJ0 zM(A%`qv+r~H9^j);6;!JOa%D6C{In07)7GL+9=-yn8bu#) zML({h_3A0V__{0l?m7n~utVYqP1*(Jksc3Th zx&j?iQlNH`X)0nyqkPMdk9U#3tLQb2qIbBW_o(PCjiS%FqR*-5!;PZj3RU4r2HEDz zjiURyqHkBxMpcUZ;@Pg~hg5V{qv%bp=v69uaHHtsuIT+LdPbw@;3CzuODcLzqv)=# zXtQECY-tod0nxlJ`}&K13((6i6sc)9QKi4!DE$FfajR6cQPrx())if&qO%%Br}k29 zJ*A=tH;NwaioT+vXEcgl=8Co|Qx|I*MelG$4^q)v8bzOTMNd=FhZ{x5^;S(=p`tH0 zitgLn@{$x`?;q@!CHA+5@jRciAv;BBAIla)zvgmQj0-v+w<^K{?8z0|3EuB3@d=uY`*;l1G(3kOl8_G4=k3r$)9=}w7 zQ9TpCI!#ZJaMq$+AHM90nzuv2gv6V)Jo%f(CN`_%p;Bi0$&cKcF`SjXuGZH<`M8$> zg;l%;!;>3)<7B1Ut5Dg3MufJ>i`fGu$4Rq{_+;C$dH|WDf%7qs3B4-FLuuDf+-jtJU_ecx8ja}92wHcnPujn$haPKBJL9u<5MekTR z$`Y^B{Y?a$VJQFFaFpS5FG9w#(y561wL7c>)kB@eb%Kq6>xn;Mc(Crnmbjqai%PC# z;9ea$1}IBb;jxXmrMpjnSVkB`w=1z(j*^L%!(hhUfa*2jB>y{$ zyKzIBK~ZHZ;Ml{aTa;sL!a_UBr(3oKNwo+AxopXfPsWJxSd(WJ)?o-rCiW%ucqZV+ zWR$gLAy^jDhWrm0T;gmA1Kaq6*-}wU&hMDDVSgOySUH3Bvh8F!{+`DzN_8)rJ!M=) z-f~J;+R7g@g2$L`0y4i0;5k;PX7C&-MQdZdBo~XlUrKf65uKpVQ3W?}RH>%%H` z!0`Mi6+X092qBP{=}qua+2<=fPy+P52(_{?)ma752rDu4z`QO)>!c~%yRkN;Umu)k}}E&V~5&1e$q8a4ShUKN>Q1NqH4(1Ozp$aOsshu{F?PJcn7m-tL&W* zi_Em-5n}9^>`<|8f!^0qwAk{nx15hfPg=4J{SxFpwUei$W7m_GaWwb(J|7S#PUVkKg2IlW*FhK8j~(`oZ^|EQfFs?7+z&bHS|+R+CO|6SOX%q4h)5cX<51Q z7N%u~bm{+2D=>_{McJg}$D3hoS8N!=@G4ydkfXR_(%5nK1KLn+cC6*ce0jq# zaQZ6l1gLSx-`n_#vGDaFF{jK~FDdJWiGuxE)coX$Ie!w9LgOi0lZRUB&w|Zyk7tl{ zNj4vjZiqDr-#Y9HjiLEHf#}x`z?vo@AxlCqb4y8|xB3}0mm6N1jeVDWun{(a)cR?g z1OrrBI%b3f`=#d8MZKVk#HmYD03cuuv>NhL>wGQ)`n@D3kVpyw=CfnANWf9a%TpS> z>0N9dC5|ry+n&oZ5M-arDlS*P@TPmo!+?G4jUU!2Kr07Gc%1#lZd`FEpaePOY8Dnq zv83X$^ckKG2aoC(D>`zR^FiXb6O_E7J^mxtsM;ck<9^7E61_aLuvfnb-?3L#K%_!( zFgd)*6a(iZ1YV~AhOCntRZ;#Tc==prrMP91gP6!`KJW@um{#bZ(!M-SLf^;<#%%b8y1~mqGCbK(KYy;4BBK-&Q(*wVB46S z60mbsG3<8mNo^}Vp?WtR`n^@qDu#Pi#-WSVRhBHjy-MaJJ*&+qX4rQ!`_(avSzL#-uq-P>!wkg?6p~Da1PGWP#6p z9xiE_y5QwjOlTmcJ+jFom-Ga29Ya$*4B1$*PQu&B3kaVL6@(DtFcW$B;xI-H)spK| zs3n@=u{S0U4o5gq=>S+jDxZVgtZ80;Z@$WHKZR+?x$UIa*=H-3RQYM5btd7p{C2d9 z3vk8~{Xt!b2F+}0U6Q$x^n2H2Q(pj}1SB}B|z*gV}{4!Id0jkS-`qNCmZ z2BpJiUdby+dmspDvoD6ghhSSD_z>Jdq@Wwv^Lz|bpBg}>-~C=aefHbS2_vKctyOkCuA+dNvN9*G4g zaa4#3+wqabr;UrQy}7-ozfhrk`$v}l3f=O`-di}6{=)XY_3?k#-il9dp}iSxvseLM zY~S7qj)Sho_=;7REaSy9wH9bge`=W{dhWLzbR+QC`n2r;cAkb+&A%Enrg_b;9+*-f z%3~pvz!_>3J_jw&%0_am2D*y@C{$zZ!a!=@a`=i<{?oQ9UTt=qNsF z`9!Dok4GULuODi`cDNaOAM7-;NC1J-D;2jF-eQX5a3WS~=$4?hW^7rngEHg@=P~Rq zQZtzxEb!i0aug@9BwvzonsaRZ8`zI%Kh+L`xPn6@Q9{Okq#gnh9h|E4i6lr-W@9+H zAk!K;XMz4ZKmZjUWlmc^8S<{lYaTaJB2js4a=5r= zhW_`p11)gviRzH#s5xQrQ;O!r-{V*dQH171aUfdjAa>iV?(!^>r!@`B{s98Ul-BWj z-3Sr^>V}lav z{Qg9E33yYFEgv{^ZHrEvnArm2znKs%R@7pSGbp`}A4c@4GnN@{E5LBp^~#jOzuQyh zp0x~+mn0xr(!|Mw`cUAy4Zgzuv*iP~-Qnc75Ec)wZwlY;2j29JAsOP_ z-&1@=(S0DU>-Gif9X&5vnge~L3$;2n|7r1ZvxoLhwRNIP-|RnbZ=Ti$zLe21%+qT0 zmQ+x^0XGw-hvbPtAY}G`%VDLxKueXr3}9TR%`j`mVfA{eE5{$MU)AJGjbr&*#lMRE z5S#rB2z|D7#-%Lw!v&6GYu}(NI@MOx3jgsh6QR5LS2Yn{^lOzJcY7IWKyhp<=x5lt zYz<|WavyA`d`+sM>s2`w<|Oy2>^hnqf^uvn@e$2acvhuLf}~TON)&*`7H!NYM%)R zQY)*k=oSIWV4^se6=3vJ%-O+UFFn+zT5Din;8l|;f`<{SgM|E@S6Yit}!_~IG z4Wep%to5?oLI2~HS^X98d_{2}!%Cev_iJ7S6SQ2ZNob^i`pRcQi;Y%W$K|yBr z{Cw~^$!R;FPyMdoc&{OJ5d(FL4kTkduHfiz4wEb3XNhVWA(IiDQu4w(o^GwKN%)02 z6zM_XGu7n$p-H%FR{qu`d>iu6pQqborgB`Tw>>+K%#|2LPLh>~NM^b& zJr?dKd|O%L$Z*Nm(MA|k1W9nQS!kB%bIPjMPHE!x4?|rX*H+dnzeUOjk2)1>cI(Zx zUozWfh{t{n&45Z&e2^!MZ`iHNU`FQ+oz=0hEe%`)<;cHc`}dh+27j>q;+qaN4u6fv|NFRueP48xy$d2x&n60piPU2Xm2`kmWa$m6G%Ens^x9 zdZrr8873E{4k^@21v|QyoUJ{WDSXwgevAl5X4`HHL+4EjF=~euv$m4p&YSB}TBl3rZ_) z9ZSw(iFYQ7DF94qY;kKr$Z|#H6voBFmLoo!jG7tXx{8a?jzP)vDstA|NLBGvH`O`i zRrt;tQly;@e=NM%$Sx!^ZmT<`rit;B!0vk?$GXey#$Mainq>%~rGUSF@bN@&y-~SV z3D^5Q5EdzB+I+?4Qky$>_HGe;Da8nt%c{$sIZW>QEmtc`UEF7pVT*-3ff2r8Bti7? z(m-e5xVRg--@?4jXqP5NcFE2VJ08*`2`HYrWSJzdlRo*@f4NR(uYktd>K@kr;X2u8 zOqNj;PfSV{mFtaZ!uc9(q)zK;{l{N@os4}G%!`KWo=#1*D@{hzLrVo-1F zM=7(~-?&F^?tKg0*{*#@@!f?$oC*8dg^}SRNBZs7&paiJdC(o!Ms8D0{XswtI$%&# z6xri(6!o`$=qVRmP-i+aCt`lqF2RD6xN*AA)$9X?P-o{LpgZ%DXVZ zdBs*gi3!eOC3HzN)pidQKX`*{Yw7@gE^iD)#LeQRUp$YP-?RzT9L13{>j-w@X`e-f zieB;HsPdw&7>trRTOTuiRTmgQF%-hped&4&wg%#f6^BB%*g2f;w9k7X8!hs3vfRM2 zcCvZHTL25~I9A%%p}g64B<7Xb;FYiXZd4>ci{vQ$t1bb1P%JU-Ozpg|ZfRRH6;p!} z;@U}mZJ#f#Mn`F})!*G5gJB4?9|tR;ahh6Aeo$}IQpMaM)>C5I7iOat0?u|=0vTx{ ze6t8H_3_p8WE3VWljV1QuG@$~u*cZ#d0`DU7*eKpjTh#h+Q*B&W39I?4Q`hvjem$0 zk>B{@Doi=cHi{s9p+pFP8D!C=2Q0M#D9 zJEFO`Hb%>F+uu(a&EU(PZkoZvic;f6?B77R z3?pM}VBY52aXD)MbBhBn!CKtrUoeYZzD8ZDh5kGjb&JHh@gRq`Z-)7YhI0T@(N_dc zu=?H9Ty_T>25f>MTI?(giFZ6P!MfH@EQ}7aI%Yj=o&PUHOvB{+cVc4}9gL{$Y!X@T zcZTt6x<|6;pxYx>=sNJWRZTuenUpENj=L1|5R06+(%We=@uo4$08z;+TX3|psW4vd z%;0A#h8@;16;t{cI^FpJ=${8Q2(_Irg zA~D(Psce&}JBqbqHZuJYdlI}kNqHe^OANdwd z=JciHhK@gc^-^qfYzUjL66c@*NFW3I60C8$Qfke7#m>*8a5;Y23n2uq@D=^$B1!fF z)Wm|pJK#tz2Ajs>E}+Y}{BjLaZE5t3Qk6vEP+)7?mF!>?0uZfELVMuh8$CgW%rqEb zU>yPbLS)H?lT)2uj98Kgki|k(t~O02DW@bgOA;~Ov9RaEb=Fx>C!1}nA>**wf*jjZ zPL}Pr^JCwoxZ~sg&tG1*9NX$npR9Y5_epZ_4qF|gLP+98%m8uVVIN-+`$-s1dUb`Jqn>JyJS+~}7v7bPQ@ZVu zhgMi`Dp0NJ;R6yN4ca)azFjZ7wa==*qFc4qRxh0-+=}j?BNnHosM|$MD53#NDNNFU zqlhm2(&t~gm1Qi$$ZtJ$E6G^Kk>gq%>?@FW{L|KFakMax{FJNDx=sxNx3mh}-#*1D z=-Ydf(n4L_(#9Pp_WJ|0vbuFg#S>@#$zf0Qz4Fpf{>&}V$LX00Br>Oq)O#~LYqds5 zwn_P$)+hd#nn|uX8YwciScj;o&F4&2PKaae7V9Ui>OWNY~Jn#c<3pK5;4n zR2hO#A(k4gz;*jceBZv*6!m?@@K4I;5_w!;P+Fl6E9Mo!*f+mFES)WAA91+$8FmqB zbkTIx3_^dB-wEwcbxnuA1$^w{DFI7qgzqzTU@T$O7J73RK-{B;4 zmmF!J4WGZG=p4@Wa$<2lat^Mq*;RI@e2{aTuB2T$4DrBYgZ3O8n-W^Fg1na2e?hLg z<8Y8{T-Y3HU^prW?O68ds zws=E;WGh0Xu8K?rH4>{*7E!Ic7EDGPT*z5BLuBA!~j|uBd;A7%>N4979A}QUJ)4j#wYm7Oh-n6*bRbcucTiNM%N6Gr0FE1}7tw zThJX4#^Jbo+*1J4^Yw2)&+i=>v0FZl0Q^g9Boh8tL1}3T&1B26a2!+1ZUdN?TGp4{ zx{B%tTr0cUoT&O@MKfNzuqeqn-h^dI>Y6&_BoD4dk6FVIFZ+tugYq+>2iEndwX3G@(m+{>SB~DoS(TC1R_X+# z%z-^VocZAn+qc$#C?jMk$E~m5GA(uei8O4A|Ijz0rOcio4()_BS(AspU4WkDqu%)u zDD&;48&~o@!k7@K^~AYje;(897E$pb*s*6` zL3i`*r-Iys^DT+FLtIPEQ7j}bhkXh$#a2w$b$L5q-x0q~cD0JS^MRq__yM!8DA^g| zPQ}&y6T{>}kwP_|S)1K{l&sBlUqfeu^*8Poo5q7Mn=md^U0&xX*+G(eO2UlIX6r6B z2;sGHz751h?N7HdU?47F8!`j8lbxPnQDTClrMKh3Q`XOQiu|qp*CA`L4ZiX7?hrBL zgus#B8Ea=v6h~?3AF|qzO)8u9U4i~Cbz;rbP6A1llNyIR6RE<~lQ{=Ya;+y6I@V6W z`Eu+~t{NG>vu^K=jhI#9`Bqv=4%K-y45Wg=dB+<>t}I2+O4gOGR)j{F+^J{x0FZxhhjZRKLo&CFkOcLz5_1dcVR7Q(-U!HCrY1r3 z2HSIQK{~k+7L7&fue4r#rRnk2zurpEcWf&j`#C5>tXr8BC5C;|%*SE;&HBCS_dXZ? z7xeLeUMd%@(1m5jX3aIyGD^aoOj^z)wIrUuDX$=mS47ZnVDgr)Lj+Iu`tLAiZ2E zJmkg-TK!s>yAng)AhTX`EsKgPa#;{#2Rgsq7(kBj|Hs+!G$3E<`)ps+Eg$xn=jZa%K>=Hg__b(YSqQ!4k zgX4>9)(>>6b|+Td@@B?-owP#DeKRYG#l>)~E)iPGJVHf1Kqhg|R}fP%h@{Rby>b5Y zFgb@}gJWI~77xs#5~PF@uQCzKfOx?b+dwfJzJi+^|9c^(=Ap{|t*u%%#m}T+fQ&Hh zSW81nn;1F!8Syo&7&h1V*3;*dEm|xamE^85xzR82<^sbG9nwVJn+7s>3SL{RBg2q5 zI9%>i$6^z&x{Zc24(yrC;24GVVI{L2%|d*{<+wzpmfIk4DYkeT9VPLJ19WnCVrM+O zPn8dXT+JDbnSLc95nN879Yp;o5dYPkJ45H}E*O2LwW0k@FE0>w;*#(o9|n6ObfqXK z(t?IUn*dtkWearY%_vEpE8!SnLm?y#XDF;FF_owYCM!%9WTS!1IM%pyZ%2es$(4z zXDUuTb5`tUz<1d4Xb&eyTy;OkJSpeznpVDL1Xz$#n~+rQ;J!=gcbR&3KS zjh=@Dm>X98M`u+c8x*1(S|{91$zn`7?B$B=)tGjRhsQ|8Y+b47+dnu??z6S8VQw<> zZr^576emtdd0%Y1T*?-25q}vLT$l;Uam)neHkA-#RHi5Ae;igpVq^|0HDIGL_(7Ar zuOY-&)>TX{0S$XVEsxR6V8D;1Wo6 z9KrRGKId2e)q7xe=*$>3G#ZrK<@W{11Vy;=?Qfkzdg?~U!fuHG{WYklkIzrc5^FCc z>WPA2lJI1{+g`gfK%7s*6lg#q-OWr=KeZOKm=FPTG}24&cd*gME9ydW^xCt!1`v{V zFs6Y-HJthq1vh6VQ3W-#aKul#>0h(wDji>eMQ(zJTdf`#SQp zCMR>XJAoNJa+hkesCd#_^$L4kDQcEv6~lZ$zzmzD#fxKO0^tyAaAJ}B1k5hR1l&IZ zFq-8GAn{gl!vqx9FtNnR6*x5RCYUdjOabb>oZ3O`SQF^$XKbuxacry!b|B6@PsUXCndyja%$qeVWON)cLUw$txQ(gZ>L)N0$|u-KUkLWz`aGSF-H1fLEDXBjAIuUJ33YKbmF~&0i=t0A8El^blGb$zLLW{jczoD=QFHPxbPH%}^t?z*qRsRaD9y^r2 zNcj@`LFx}VM$wuiZQPa`I^ej<+Kug0l^cQDB6DC{@#J0}i1wQP4p`rrzAzp~!ZyL) zeIWB9aULhiK83TLCFPT#2SrxF9`lvNpc5=wZKE&qK(%*da_tje$*im%h2vk=U*|f? zSZ!)pRl5KUH!>=mPD!?#H*H``6s2Aa52wqlS}j6aVuR@PFiZkcVVX%YR<+iCvVd+b zM(f;MbTcWMR?fjBX2xoDdz8bB)j04=sk&A;A&F?M^aUBqQ+bR*A7)}B86i@*vkM3dES3`jPCj=P&rXS3xMaQg_ ziBJ1Tpzzvfusv?yj!iJLU8k(|kpN_+*W-WryhW%)z>+|KS1?hLt{b+>S3N(aR)QSFHm z)mV*Ofl{{$3NoK-w0kP}aI-4xp2K1w!n`^(z$Es+0)S<=s>C&{ZmF9szVr2r0rb>2 zT-2LD#Ted9{HK?6ypTh_-llB@SFQSfta~2lYC-{*C;10xgO$02>_;)+#T{YtU;}W( zqzqWT87CX3`4Fg7BJ8Ruq^JwhT<{RNU2I^VQwX1{MOD}wc-t~LT=|lrW<%Z?Dr>R* zF9mx;%h8E6&v4LUiH2Y?tRu`e0J_OG11l*PZ>&x)+H+@OIWTcx+736SjCVB6^9&T{ zRzbzSXbhl`nruS$7S#l;H*myr0D$hb5gt*w;gjGxt0S6O!D&eU!O#--0$Dg2V&M62 zz8@FwV)D9E2_e34l7Dd4JFvg&`jS7vXClWI6@CC?u=>2|ZJh9n-^IDkrPa>F%B_4A z``T6tD`gaOKhPyC#;@gq3cF#~%L7x!^fLg}t?8y9Tk<^iME=ZP)v7%0JaCWsQDEp( z2sf+zGu-7Xp>xlfw2@M-#!zIb^EnJ_+_0IWZtC&v8^G7j< z(BPF%10$;TU@CY3h228MJsH>r<#ux;(`zbI?Tt((lBvnApvwz)Pd44@$8W*WT=X8Q zt8eLz{hdWJrS#5+V8ta6T{JUAC54%O20aE{4Ej_j1@Nc72PF^sRKs?J@TX>UG^c5> zOECg+1W`i4obWaX(rC16NF7#U5MnWujIgMoR4nTGLNC=y>Tl$`tnwApwTIfS-2urN zm0i5URrUjZA{X{t#o`^Vp)T{|kEwo-mSjFqBxfEE^=C;_E$5=nEG65n%$G3jq>?yn z5i-z95WRMyEZGm_){6U~l+y9lYpFqYL?!2>HUEY|c7&7DY{fN~48;n=`^dt>4S&G# z%|UN;dLIRo9uJA)SV5+Q(y(UBi#S_oN>oq?r+E`0?4O-NsIeMM%W_CPh4A2K&rFw{ zEbO}w=KK^UK_57#VW`nCQA}YxGTGxW=+qWbPGLMOm;v#1klk+Gg;wzpOomTisHJx&tpEZ&pY5)?O~v;3?|S|hJ|p_i4qeU{SS^%uiW zgr|yQKjVxVdkLlHT#0exdy2j_iT?}lu<6igd-82vx^9NpK|+DIroyL6vuR20NH$iy z|2L8V_7W;$YZ7M)`^RAu+!*pp_a$b9x-1zQ<@b2_i3zr_G~xS6;!n(Oht1cBB=FiN zd;!e)Bm|L`d582@=1){x?f{IwA4n+c!ouh9-q{M@3uaTfCxf)`#1ad7#9k^MDhBu}Lz zu%kk9qa>@n#1j(teeYQmz?5~8vu(IwJTM*iSw41aC@25wv$s38vNbp~_8;{M@F5bz z8#j|oxH+{PPJGOLBHEppGUO&r__VZUt$)Fps1tpLfOD|ZgDo+PFNPrJ`y=2ZPLs+o z<2=Qj41EJj!sT(zAhx~IEJyVDBvc>R7&Ho^CRt240~pC};6=n*Qn@*~Nw0W|HQy%Q z+ygK~RcXgU+KP2Snc!hQV-0oOb}TW~N1AA;`Dfzq?gPdwi2WxM$BEq+piP$fQ{o8H z8;^xFw$ae7{wc9Q4y?KlhNKD8VQ5ptLx@uOPm|Gc z@>F7g7cfUSFpGbJc_wxRn6ekA0~>&ntSMX`MKO8L>-8>BU~o5|EeEnP>QOF>KXuEzEk>eoU;<4pf>6h`O!;?qc1N_0T&Ed0m! zxMI*OkMb1}6OVVWaVn&Ek~j9dLU?Kd$wFJ&+8^6MB)kZAgCk%;i8B#?kMB7(Mc{`5 z--cO8n!ZJk;@7ZEXpFo)-QPxqvD!Hy{h8Ff{d=Uj$~JO$S3aPQ(avg1Jh#hRq@ zB1jC9+Owc29{97F{1)wRFeXL1l%{QTh5Q^d{>T;(Wc)2KhQbZa?n~P?0rqN0;fD_< zJ8?U?q199>H?-(;3_!J* z0eZ*AUlMp(O52p!U)x=6T_rIH;|-|vk35JRAI1D;nP9mO zc02~x`CtMP`Crr;8eD8JWc!<#WG2E*@yaRR&3(_-B zVRw~8QFBYyPUsAc=c~AZl=gA8soFrq8o?<{F6A##kqq8EwOH!{vsQHDFp(M<*J=o9 zkGQyG+y(9jW20s$Hs^f{uyT1RR{RVsR}DD^;8)fjL8csPoO$CF5GqR^*`lS_mi-`pwBo-S`Tk$!l2!p@(PO@TlEG1&Q`V9W#HDgM~ zckr)TVxurUUQgO*Y`vhotrtk;Kzb!`RuSocRSbuc^_6$Aba;eHNnw~<;H0AXS8)bN zCH%tj`x$CqoUZ;|7S^AqZtL3AaZQ*3KYX08^m$acDK~7j-Aout804OZJye%<2f* zFc_Ikrflk%kj@yZl3-U_xOry>X}L&f!PVtpMo!8TZLZjgdigxX-=OWEgI z4n84Pt)p2p8;A(|W*{Cnz62g~v&0-YTcp?6kW9T6FP-v5gxpX(mV}Di&3uHSz3LQ? zGbb}M8e+8gIxic}3tNcwrd-W-aN8KW#h5Nee_~?nisPLK+gCb}TZ^M?XRv!rH`?-y z2Iwp-p6s>YV(@}E`q@hl|3C|%@A`Z|N`&~)XdB@>#rqUBPuv!58=3nK{J^kx7Y;i! z2d-Y`bL08_^jSnp?=SNG*Cy{@JN}HeP1C_Q^OP7{hHjf!A7e|>JnO}0F}9<+G2*cn zwlML2bDL3jS~#2AdLu>47Pe&FIx&DAyC^}jZlKsmj{=#zu7xdHcSY!9Z8^FJ#ci>+ zEZt}^C)Rd5%G)1{bTgocj>iKcDGrZoj)8Hu?{to_3AQSoZihHf5EJ1@w%FeC()AO^ zTiPZFr(a8>=#zwUavhH+*>2NGC}_@`0Y2g#xC*3Q%SX&=lNTXkb^x{2^Kw=i1g5qv zh8;=+yHLnx8Fbh{wZQXd)p<)|KsdS;G3$l z|H*4<({xKq=@OtVrKTZWXbY5*LR%J*DOwnG5Til?7c2}^L}Y?OM@Pk~1s8fXDxxS$ zP^cThfPkoo!C`ShEefb3GQlaRh!_?A-*fJLZCb~l%%9Ikn|JPg_uY5jUC#PF_mo)s z!g;_0#aRO-TlJU17~vo&JU@X-1?kdFm+6D8+3b`k8VDT)IvB*BeTD5|ofUF?!(bc> z~LQBQ)i2qG8Tj-|zzNt|ILU0}sB1G5`+>Mu{W9LSe}w4hOZC1)x-Q zy$CnIPtf#>sN{JGqvHl1g7zh>F5hHA8$dvE&XpEY@&{-OX$HaxU+ZP)%bBQnr z!fXXzs?2JPU7)DYFZFEVTS>T)f~};x7NC2+2U>yEGjaaYSb;Q(BeaRK%UcF=pywF1Fl+da?#zu zJE0PTLu?q1#sT}qmzRjcxP*TMQ)f!5Fg@BI-;wZIACBa))*e;$SBu#raQo|uyi<`s zkYvQ`)H(35?-kh~&QWbh=Sx2h#3;6m=a>nS!Uq!I(gu>jwQ2`V4du*}VR=NcFU`DAxUGm9m})JcRARGRhib zncnG+Y<0(9Rf`Kcm8-NHU6w_OOzNmx)-$XTPmaR-Y=-I!?` zHN}EZsVK2@Bc_F~6oQ1C%v}p_246{2+cHMQwDOchFZ5mGax#Hnh~QM-d@mG1doKYL zuL|PPg)o=4gc(KpOZg!lsv4Zg+f%o!$&w$a+05!GZ9d!{ zDsXtVc_IkLn_9jLz|jXTwnD6@Ut$dK2_eMDxFhZF(Ug9r+^|jSwGm-g!>zH=*i-cA<%b_vc(?Z5H!-!0U$! zz@H*N9GOACtu%J?W?fBRh3{Z(P)k-3K+7gsKMfOsNw6s$dXR7jZbihLb1HUHQaNhl zp@|_Gya5z8@&2j^!5lE>td(RmM^?iUP%!h#wF9y+e;dJv_m~FO*xnZz$I9lA>6NSs zc5>fg{@+6ZJIuMers0XC7!WP@VHGgf?;-2M*2hNT6gY_6B!~Yd@CO*ahvaPG*@d&6 zrR6%DXtyA|;4u<}+yuW0JW`4-+`SP}7@Kch4?r)#9j&EkP8Os&Y=&um64hPzmBotp zd*s7XMM3W6J8Lmdir_;1vNRCDd*8owt zz8x_ivcBay&{!|PA)QWAY*!JjVKIcTO%bAbF?!)5N(*eo8npUHh~goNi6ShA;=n*~ zidZ*C#@nv!7W1^VttGDDWXC-<=AG(VWcF{&{8D@*07|+0L=DJF{ToVnWQHd;Se1> zHw?@b*{HY9wHw8uW5c7ok4?9xYa|imN z70n&ucMga(8d+9-?cM_<5#vkjbdrkC1Dr{;9}x;ry$$9$+;w zsaiAQZk{)VZWE^QAU|RepT3bUywD=>;IfK&7xmKrKrJZyhymAli$iG?S+-!YFy5KmFDGB3# zct6BY8JJ0_ld6EBF5;~ashQT6KM7Oj@O7mri|7Q@&s-H>Ark_DuAkkb@tgjUJVN!W z=mP&H%0F#%9R_H6C;AQQdVVMRJYtmhh zZ>Z}tU6jnsZzh(!KRAU`k$kPn5p~M{^cO#^=(bMuXmzdo>~no_0?qOGmZ)MqR+Wp< z)J2LuUH#SRlhpP6PV}4A_2N$S26g>NCpuE`ia*Z{pDfJBp(1W~-YZ{f9xP70kr=7X zN6IOv7{qeI%B#L2s$R@hRD?@j0~jqF9Iu21 zz40wTWYk0Ve=wy)93p5%>rY9gS|OO6HWgv=ZRfE%N=oGF0LT&_d=K7cMI#Z*qqDuq zcSACgD}v!Uc^x360|B3lv6O%3xPvPL905|q7mKaiLk_*Fui!-OyT=L(dF=vhLZ3vl4K z5TXY6h7tEAS~yjqlT1VE3D#y4%$*4QE0Yvo^>p;u38uhD$I}qF{}PhElYt9B5zd>@ zaemhNB1kmcIJ@;S%}4c^#`bDoKF-}MDf=hWf&`x`HKI#VkGO$l76{ya(q2~SByF4w zGWEKaTF2XTCmm#J1CPRGaUIS*M4Q7gL1g}k)$QSsu#)=D->(#qf?!m>;q z5hCskbZ_&{gk@r)z%9M?Zv%{?T+1IU79AKC8C#=ddeXF|iHf}9JVUIAnVwOuWp~mmh_3hgje3Am?({cYELf13dX%Nf`}urJKr z1qkq#Kd7G|_$iz;>wTE1T!_JadV1rNiajqMFNBy8XZEf5B4jg z8Cgfb`2jK>@yk3J#=ZnW$|XTzpkfSJXXt@ixA3NVoR_)x4_7*31Q+sxY9R+g*8wvz zkK;V>*Sc~ExFk7Y_d^>)>q1+N7!fc`+S|&;V_6B_nYcAg17AqXqL!2vZ0qqeY{)-M ztQkg(v9=OkCzP|)2Wg37j{UEpd;Ea(M`OTi!Cz1`2#D~+bs6pz8_wiqh~&O-Q})e- zQ#aQ%Z3kCoUjtvDpZ|h!kv6Pza988fAo0p<5%Z8Xyw(dJKyB)Y zeIYNgCna<6>>SBvunG(anaG@1B$>U{FIj6tEmh^OSWC4{-9_QS^zzjkU$GiYH9h4D zogZS&o%JpD&a)e>H3ntUZH^H!7nECZ4iOAGA~e{Nd+2&N1uHw1X`))`S8MG)Y2wg* zBSS5@hc;Qy!;)Jl%x7VSpJYRXNz*&IN#04XS|5+#NDy!Jb}Ir#c{#QpOYK1*zYCiK z#C?l6npbM}7Vm)mShWCT1Me4aSP^8!4&A-F@a%2aNgFI#SP6)q7m1rJ^`5RtseBcn z3Y6kT_}@Vu1X@MGvp5wR=$=VULogL`$gul1<}q7f0xb!$n(J-c$y2~GTrExyk$CSn z-5-HRE+TfF?qqq!L5VHwK1{o4aua4r#e?84eyEdn3Km%$xRpt@WMwwxLi9WSP#$}r zz?lG(jm`_fjsyOf1Z*JG7zs4O9+eHXFrScgq+DX)A+Wzg&5*ocp+FYiG2A3y@-E<_ z!~iTyHWop;BUdjdFVUCU2HfGpy>ghy?##Cas5!osai{oJiyt(ex_m%3kpHO@o}hfI zs|d@x3Zj$nMaVbPp2cQEQk9Doqg>l}Kj~`s(|Gx5Y^XXL^Z1!TQkT**wO&w>wn9oR z+fAcN;x0M+@pCx#kY(J)dWgLI%e`CmKOIh|T+2?TJCtRM;BM>Z((QAeuQD_^u^fDy z$hvfJskh~yVBp~G$yk}?gYt~x>Ag?^OeY;is#uZ%d9kEYD;4Rm;dUiq2N<;kr@D12 z`)LD~GrTS;79=6+93>L)>kkXj#lowz;b4ntfOC9 z+rl1AsY*e)PYdzw<)DaEaSlN-6d7T*X@kUuljV_79ihfd`;=1a=Fs4X@*;o+wgsq) z#$)Hf*90fXXlrXD zRXEL$SjsIo!XnPFAP&-|x{1cWTG**PyBl_$AF%+*-$?`bMj<&z2HR>OUK^YqeF9Dk z0|#qZmtM$^5?7wFE|yEK_9ts;ls--$i*3z@LEbNZ!Uqs78kyoqy?9qKyoRI(a##1> zQEQYrcD`8jqG1r@+KTio4x>TE$giIOXsLEwdd8|hTMD$dqg@j-#iDc8^T!-4g8P`E z8K|{;R{~XTXIQr+5s^?bLDc+eohNmP>1VBt;zOPELRLcu*q3#l0mvL z`)aT<%oy zZ0TMyT3lbBruHumX|L9DWJo*EHD;G|&w-a+KP$e-x#NiIYczIK!0$SQ5wIF7VGSzp z9-+YHkA~%xYF)ymyWObpoIeDAx+=NnIPaU`IfpbkF;7S4{6kI5>Q4X#urMkol#}M2 zt6ep-FmF({S2N{2EKhErjhtJ8%(Jx@YcX-O3Y8M6OGOuP^5Rr*s4+Q1VyQrxz`8Vu zC⋘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 delta 575711 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%0DHMZ9g32c(OCtBQ)XQ- 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�qv+!B_*#q7_Sr@7R#-3i?@ra3mg#vS_7#kEM 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 BCv7i<{QOe`a@ZpFi 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 diff --git a/prebuilt/openssl/lib/win64/libcrypto.lib b/prebuilt/openssl/lib/win64/libcrypto.lib index 5a5182d1f72b56100fe471496dcccf71ec2361de..0d274c0f109fff4d834054bff4ba5f9bc6a7cade 100644 GIT binary patch delta 1342463 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øJ^#SX$;+C&o*ymyN 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"ibCnt$L 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�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

E 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≧MlcUd$<1NOoT>7Cnz4Zh3}u1xFsCK8?>8 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

ALWvkooHENGbImO|CPimUp` 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

px$q)lnlSZJlN6qff44~* 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 delta 1550371 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 z zUABb|?B7BoE^ndM-Ub>`-at3y>IU*|YoN2k4HTAapi`*^>b4*HCj%XOYM`z~wo$!vW zm)J>t8}6jC#dp!NmAlCMY%h6U-Am8P?V}St_EG1p`{;J@uj$C5 zugSX7ezH#8Pv>{+rv<*>kl(a#==%Bt6maAK**rQxd(I!ETmFY=Yuq7PR_`!%9(!1( z&YKTY)P=(|`tf19HR%Dk5PdAaT?k4 zIPJcDoHoRqpb^qZa+q+EcK&>lmRX&qu;|mYed1}_^wnwd)1ILwoz9T;{xfu4`j(;w zeM?~$XQ@`pv-rn%&yv&o@^>_$<#)8<(Rb*sb9A%PIkFA|$DX4H^Ul%2z31r2#d8#6 z_dQYk_cVIS_jKf&@9Bc=dD_tJJT1KV1Gzu@f%Y%DK=BVQ(Dm9E>G_$9v}VU8+I0C6 zX*HK=Ug^uUDef{YFkGe)wpS=2;tH+kdxbhDTp_JI`3h}XeuZisy+S=KuF~wltF$xn zDy1b|rHn0CiTu-PO2c$Yot930_NLQ3s8_>BNnnDb?o|^=*EO+)$B-&);ZvtGg7|^Dea;c$Y3D+@*wd zcWLDIyL2b`cM5I%JIymJs%j}X8J0A(Jg;LTqAY_oD+NPZlx3)eu#)}S$})VSe``yF ze`{UYkC?-_DglOd$8`-C8T>!Aim|Mam$_dcI}vKwJ<#fdb^&>s{$c895D#1RvSQ=5 z4G3Xtf_er|EP2`rur`!DU8H&VOEW`f!(<0>ay2V;w#dBfOSw1)1_p-k$s(UFcAKE1 z=R?1VJt48wo`dRWVv4Y^Zb9XRp6qnL9i^FF>!Mm+ACX9u*q*?u9+sHjQx$eE^d~2F zvRja&kjjKl2YED{2fIB9_8_WTqhp&P-3Jfp*e!NQuc5KM<2ptR7~a3{fY@$BIu5|3 zc*u~xl`8w=zkdGlv4dZ+48t0Wfr4fQu~-K?XU!dAr=7RC2m)L0h~Qj-#YQ;77TAm- zRh>1pHLL~qXK7gFg$~ZbZI5aH;esjX!KFKL#R%|H^(Wi8vwxw0kO z3*T*mC6S%bZ^_;0rDc47xiW0e!9Qi6ibUrTAJNE7Q$feBb+c_=a5@{>R5 z5ARa>$?w&`&OJZ**Uz6(JU{sdoh<2=pZs2>TgAwX(ae12_RIJ!Q z|KEq(_WQo!;;rxRT6wr>$|_wxPiYogt!N3)Q9a~|MT!*vddtx}ckZQ)j+bjx8hUu+ zjSg+DcU$dPZP8!sT57MM?6gg@(ky-SP;0hl`e=9N*+vW&`m&VYJxj8%4})CUls2Nj zc`%z{JE6E!Q1w9bP^MLevT+gYZX40fKE49cCX7dAaW?axBTQJ-&_!G!5b1-6(yFqI z1rZ)%iVfF9VG*orwCLS=WCYPT!1NPFVSBU)`~h_2X1>NZHfpHoX1EkBCU`WQr6-Cl zh(VJV>QSs3Iomfw`%dvj;zvU^vx3M(jHM8y@)NmXbdl$+w!P?bpSp-L!TXH|(b0?J+S zMypCB`E$sUin&@9rNlUR79EgbGu)l!v6t)S{CURza(G{_J2*Hz4+Fu4+GB2p}hMEW08GsXKtRU++zYOZ*D6@~2==`3WFVxCu( zNPk1MP&@%=5LY6(L$y>qPgRN30IHSZHCB~KouFDPUaYDx_&~K$ywR!>iIv6qAFY_5 z!sJS%wNPypZ-c5t+7H!E@eZj8h7t(e;&xf1C+s6LAKgQ`UO6Y4|7d!j0wiWnOEDxSTnMDl~`r+DR6g)1dg zf5rPiRU&B-wj*mh3qJn;^P?kyUuR8G|3qMZP*^cC+K}m|@G8ot9@*Fp@2m-!H>i8! zUrjI^_(as(TJo9e5q7Q2uu_^80!zO(vKUL$?J8<;n=k5Y&C_3gFJC;Qa^=d({8zb` zH%@?OVzv^@?zItJ?9XBfwh7ft;&Uzhv^LIxtp!XIF_}8=#FnfSy>;g?iAr~3hq%5C zJ+nB=SSdQ!;lo4z=DUWntHj-6!vi?}IuyuM*LIWWnwzO^`%PkyR;DS~0Bb-}CcRu? zHYk~&t;rR~nhSrjguC0}Enw^tAa4@*; z757`3$LD*K8o3q=2@LpWePWujK4D#x*&P(?h<$aKxZ;%F=+5k}#Cq5d#OQPpXIf(% zxcp~4Te`J`3rpNqLMx17OXqefZOPBWY5&O8ieyWiTWf^_?DV`&WrUkXE2dj9t?-Cl zW1Y%aXetm(a_!@5VPg`-xwzKb*TM&4y@0675V5o1)Q6~Cq>rzreFYY9CfLuSAB-6X z5i?p%qM28LrB7?_r&(iUiyeqqzpS?}TTwsVhuNWK&9}zPnx8AMQ|ClKHaP6pVyx7| z3XXy`yLZS1OFW;TeJ)0wHW9j1T0wz6>%o*P}IbUQX<)3DNP zU};ya;A7N^U(2YKmbEnM7$2nRWzlUNVnCi_J z=agDg_;#E#YNf;j`1@ME#Ig|D?Y9()QCckkezk^Xnc?Vb;l~QX`rW7fe z{LhS9Y2_xPR(katqgJ->yiqItaXXVwY|s|8QpxL(NtZTirQRT;R*vAhMy+gBGoy|w ziC*Ze=()UGhZ}9Bs_{mxG~v@s{+C9rWc^yz{NTEzrisBp_q$Q^rde18sHcT11V1e_ zl>*p6m!*E1@Bn5fR`Jus2C!2HMQ@gZteW9Uz)v$hKsjZEFWAX*Vj0cO02Xyp^wS&* zU}+PZ`&s;GD(qPROR=)?6YN;!jnzss-gLHK-r>MfuJv{nLjG}udPc2mPzR${`nsP{ zEB%$obs1s0(NYf0#hIeFW%3WHKDv;3?_Te~($9&`!VATni=$p+TSYlvHSSfEQ{19r z6?Iss2{9u8!$NbU;2Un|6`-}~1Xmd>KCWWymT6U#EwfmG2tKZ8wiuIJ@r&(IwG4}U zrfe_NYz~3OYRd*Hy=)N@sFvFf5xlljC})FshbrwPX7F?jAEI}cr7B&rz92Ch3$+7ff# zdBH58u~@Rv0@xi3V*cBar8|hO?9icgwJP01p<2x3JxFgqu^9r&PrIrC)uRKu42d7y zrN_|zaq&Yi0n^)0V45r93!%+iJRcKQv4DjRE&{O_9*Sf!2x;aE>{=Z>Tf1(2#)jk2 z_$r>aCc4|PuQE*TzQ7dyH# znKg6EcTcAW1`>0Y0_B2TH6}*^dRjGm{PK~L}SyWZ2v}JRm z+Wf?~RP}6Iq5w1&<i& zPkUQ#hF;IspD0s`dEPpx)%`Xbv*$TD`H*D}krh*l6E~wlGDGv{u_Zie9`3F`HSX}3 z=6IJuyAY4G7P1V)ae0MZJB1SMMhwylZcGR{UYadwgJi*ru!NGzmh5!&U}^o)!U?HF zw^CV3O_aG9*MKF)y_DW|s#dpPDQ?4;v2-4{49CZEmeSA8Lv+Nx_+SN=>^@@wp@{k% zcZ;i7n003laRQ>Yuf`(!8kWeT)({<9r}UV39~Pxx>UQ#D#$#@Bb**kDhJj^!STpZ%5AlE4 zeeL%V3E!}^>j@q#<`e9mZ@(e3IKe{K9`#_Jt%_#&Vf>=FyG`nq%xEfL-yqHoicgG`))wq3lA zgYL%M+GzHdH?SQ43-kPbnTPlpqCWZ+7qZ{xENS5(oR?G{ZpcQEVc~}&LtDj8@7Mp zu=(3~K-k^DDOT+{cFPN9_hL#Z5xo=n0@rVi!1n&=QL;!Qw5y$kK+D+GFsZcFeOzqM zSPAT&M}?9S4svoRBG9Kr1h%xQRFb89+eK@&4$e_YV1ot(m1F~dLj!i`1uBcTRQ!z% zunH|IP`oYPU+EWAvPfT45M?LOPIfXJ6+}7+G^LnQxtHZuXMs+zQgz^8huq>KuogQV zy{zuz!fow}0xYAwtlV7%@+^)PAjWcFae*eVuXv6HkUiYg9LwAU+KPbEO#ViX)iF4I zO9;%~yMmW)b_s!2mtcG9NZwYvp(nc=^I0Bn7w8gOR~O}FKt3*MtVb8=Ay8)z78QXE zgQ5GEQX8?Yk z7icDH-Vl*dkpdlSjDyd;0uJVZ#VoZ=&?**wvINFQjM`Q!JGB@&GO)Kb$N zsV|9sy5<7;L&pZU@>V@xt9CHE!K}Q+*2`jyF{Q87WVmxp?k0#CH@7MI51GuHrlfa~ z^eF=Oep}|PiBf9vwepM-s3HPNsf|o-OSqklu9EcL#_#-e@KQ`E*P2ppfxFM-rkmVb za37dlhZbsGZY>1zLqMr3!sIrA+s@<;Gr6PTPDbEb`$TVz$xMT})0FfA#QMW)a6cY4 zvGiQQQEQ=ZiT&8BxSy^i&S7Y!o>~y-Q(vq4a9f((fhIQr?l_aX%;c_yyT#<5HMy7I z-ZHtmR%*F6tpsvIAW7fC%Ob?&M#1fffYOE$CU*?nX(o4#$=w8ZkIB7aa&N-DkHEcc z*xz=o)!KY;MG8P*sU>P_W^&uZ?SX)jcAUwb2X}=j?LL!x0`3I_l=eP0xpr*?a&M!S zTLZ$_XK-605N?Os2AbSNxKj{Nwrw?c*S7W3!Q2h4H0+Wo=`FYq5a127bcn|OXVY8b z+=zgTiZ&K(*&l(?Mt>pXO8Cl#9Dq=oaRKg4ldEm3x~^>n@jk zu5K;@Yuho;XpE^_q4y&~>67cG(- z90uJ2y>-xap!wd^#UL=Uld**hpg%{1QqFz|rK^s?J#TU!n%w7b#m;J@%R(q=!#WGp z1OZ;OMIVS6z4!a+V9qp|X{Myd;GQ?R4^6H^7lAyws9PNhp%fbhw<7{d4~>90eeq*I z9n4hd8Qal8J0a{Z74@~)#beiD;dmcJi@OkqAeP3tc`>^Vwpxp0rqIAD7c4cVG-plX zJcN?{62y$D@B3O@he&#ga&AK?n_lBP$qEkVv$r$={l~!0_L3oLmPbmAUjB76zHZ;zay(iiGGrK=Z z*s*|VRf@5UExuYdy{xOdp;k|+tRRdu^z0=S(+DM4dg-#o*p)8DhqF`D4%-@BKa?B= zp%lCJX9+*%H_xF2>(>`sP?EK{RUH%2ur(?Qi)YGRCly=MvNm{dcCM4t1>V!i0vukgXQ`GQjp-y zJbo-1Z1{8luiu5)-6-nBGJ^ffu-zNH5S(7K7;BzT%AHjR8R*5*?Cqz`J$=oS{TLZ; z&m0D0lYH3v@;DO;L(epD@pEnYg!j->@9RASEuOCCZWR&t2+wcu^I zHUyb8^@&~MFL5s*hvZ$c=Kj2v zvu2egtIWgq5#Ee8=!~zQPX+TOuPZv^d*)TFjPIXMvSKs%OXZirycN}~S<(v>GaipO zJ}%|#b`_6u?1Z*o&3JP9=aa{~KGTF4rc}qRU{Dd(;vA|OQ$%^6o&7Le8du!Q9XEoQ zGHz5as;&nesp^lQ8yU4sUm(y_jR?jJGfLGhahujs)!U%|K!q1^g5_`J zsAKmo1BUqbG8ak2 zU+BydM@ss96k@EQRl?5Dw1!DqoOz~6zfP)g^(UBMT?1HqTTAFE-$;Bp<|Dc~Q$ zSpTD6!2B})8yG8g^gDP7_&)e7n3sPO{1}V{C5iro_#MU*EwkNc<7^l-Ug{(WlUdSC z$&LLoL5dJknEym+qozhMTkqpumPwPOKq19Ydyd1ww!9QpHRc`>Eig*YErnOB(x*$FDCff|QVESFG?-PMjJ3Vbr%BC? z1(jg(&JjB1GF@^-F#*%1`LE^_QY2X;{J>lA3Gzs@qz|3>B|u*!PG6>|UK51ZJ?t^; zQw=s{mh>eaoY$Bwok3wm=SY>20r`tDF~LS}h?ye|)o5xeZE$1FZ|imJ5tHf~8=`Fa zjMk22S=5lj=%h*5-YaAD`XWwbZy$!@)sik8OSNM?CP{Xzv1MhwVd{M8S5b2!hz(qf zj!cY^~hlZNjJ5W=56s-IxX#x}fXHLUj zd?^jFR_qco7PFww3<4>%+9A$u~{XzTC>Sbsz1T9%ntixi zs>_yi(_3P-B~Hf%e!pJNPHdB$8f~|rMASe#!2EgUK5!uTYjAt;esDba05}PJ5Ihci z2)q*f4fsp&VGAZ7FXn8hvt9Zln+A+)^gkr#m8}Hx%GQB-Wocku*?KUqY$KRgwh7ED z+YDX>-T+<;-eSS*espp+H2+FkF9=hZuvhw&Z**lBY;?f2_w3lYy;A3L$C11!lAi!$ zPtZwlG4N@y8~7BMPgYJFI_;C1Xsk9@!8_9!ON94&mtrUPOG%Z_B1KuGI1jD_z5uQP zz6h=bz6_29Ujp|4Uoj+oBl!z>T%LA7G8BJLV{8CsH;GP&t_*es2e8D0(%(WD8+}Nc zjvZ}tSSqK%4i>)jDXWFk2KXgYCd6 zU0xk~T0WJYP#orwCfcOrE7x-teH<%B%KH52Ui=7R2m!xSH z!e+Mks_*uYf_g!Wl#=3 z5Xyt=f-8U*fGdG{19^BqH~@T94dbbV627X2vAn6I$Fd^5hjh5>RpPsXD(Pbmq;K7JAJ&1#=1>B8EDPbtcl=sb$Bqc^0A z%y&g)dzn8P(h@%^CMl{R)L=z5gDR$|Zcwc-6W7u}C@hadjfE<%sF~(i-bGj=N9<-O zH${DIj^!O?jODv5UWvWHPgqw)YN74{&sYn)V~$1dLplOK0TJx@Pm;Hz1BKf+L|XnP zDA93BCfp{4mMO+c+?2}4cEbCw;r2}htPLpft?({w2!_vE_5*d?=-w~B-#|4D&L|~K zf4qxnmt{WtOcx1$SEH9kvH=hM+^zWSj$U7%c}3Z{Terd4rI!-dvZcOycXxi5qqj{w znfU?}%~QZ*p8d-@vB^J6b&Bv3c#-wkcRyn<_(hMhQ?^#QSwgdBGp}2cqg)Eo5hKZa z;9_7t5V?TsgI&RGz{SD*gmnk=Eh-7-kEp!BeBR;>=Dkr7%ugg=@Gh_)_$0Ut_zJiz zn0GW!$4}^?xG8q~-K{7~za=@bGQYbyvE>U#I0Z6e940n=7KBuI+4O&A?+dfXcQud2 z2YRgeFH%WcJB`V3;)wOC8FG#ZMC-JGl(6$D|uHt1moAzO_C#g62fclu^qn^;mG9HJ_D6Q zA6duqab#*cAu@TBPa=;T|Il{aOn$DoyC;AB>&KDF-$zbu;uEE&|Hx|V3;g^V$6|h$ zyll!uCht_Uy@+>X(|^b8WYEdBj_mU9Qg}_?gLTj{t#XQ(uXY^i(;u+dHp#Y+>}ktkRn`43%Buomgz{wgC+b_AXj!PL-MH{E_B3e)syhe z)L|N?ByuEyYAT6}qZ#}Q%v$z+aN-KoebCU@zHCp~XuQk+*GHlT&!+-5w|0`8Q6PT- z8O>y)?n!g-m6eTh-Wc!V@%l8IadJ97f4wi25d2uj`;u$Kw@UgXd<>$&=~By{U%c_* z3tsu@+r7Wi4nCnWrYeJ%K{R-CyuCf&*u%IE9>q2Buq&S$`LVR=t99(beW?rcO^Z7;?!u!B2zz4t)7F0ixZ%sWI--8>0`DxMw{0!U_ zjK`|f49s^?b1>fvynx!^YGA%kTe7HeHZF#=2U0H~&=mvdSeO#It4gG@X0M{zLu=G@ z5r!@grSU?bGjff87%zrDJRsPP(;*a@ywGPQ8WMrSlOOW+#=o!~_ZtL~c-oHtk(kS4 zshqHtg+G=`xeOW`Lh*fZJ>W-rn0llqjAS1_mb^VZn~wi2zC>g)Vwy~~L=jXk@Ni`E zIVD-cPwKJhn>rTr9e;7CUqtf3aGWj4$Caq$$K&@TIGY;sOB05<3^>0`|*EEC(syEE~b6sVc4 zVW;l)b;cs4qn3T}OmZ%z|eaN^8X%5hM_t~|^pKa(mc)wm#-jwbU%vIa%5YlkFP zcJrBJSJarv7MXDVF^j*Y@UVMAQS+%1*S~i+rN9BmovM`ZPz{?Zv_`m&J>QwQG~j0t z8~3;5S1d(ojk9`khub?VE&A$jDM&h~l+X-g<81c)Z>a-LsrJvMhqWtYx^(e%G>fGB zI(G}bR7q!Jq19%Qbt!e8x8J`(X>`KNb9 zcKn4@zA2C3dy2mtgu|1(@WC7(NbHf=*k}#Lfo2$9+S^+r#Y$Z1mDXS?9twS=3eho) z3@3mibHemhg{E_c>BkhoB})0}!vsNJT;}_qj|09igOrZLM}#=N_%YEH+!!1Ojs|xF zw+D9z$ANo*dx3j`hk$#7M}zx-$AbHUCxQopmx2d@`PFPNm|rc2T9B;FH;2Kv3?l*j zJNP581sXE~%pI0wwnl;y0sMn9cRoM7W5V}H;% zKvLe_{C0;UinKSJv!Bm_0t5HRk0bGglJf>7DBFjWT+p%-#&6;-AFKF`J*6 z6Rt9Qr_A12vvuOV*;ak70g~;v)2Gh=2`G*u-R;DP8etQdYZi< zW^cIJn{W0OnY~qJ?@P0H%

qdzWOhnQk_pnLWa}XKbL8s_96U_<7nY|RVhr>`!x5Dh<9$xjnHhTxn-nVA&d$aeW z+54F*S?PWOW4y72xF=K#uC03%pNm)pPIe@X)!S{ zR`P|}{KlN{u-U_kpqlOnvo{5oLu1|)OXi`|yEp#9>|9orNWYoAduHz(u4KlX{F=s< zNEv4D0awgx1*X7X>hvpxNJF%hzPljQXFIL++d;#N=$F+=z+Bvx4>n+ok;KDpYPbb> z1i~G`AA>uCM}fP6M}qlmXOxDWPEW;>qo^OC5gHn<>GhQaynJnIqjxL8AHwLY^_sqX zh~_XYfHlDSQ%fIjmgeQ6v*f8F*&rMJba?_w<#z@X!S8`5frG%)!BJq0LdqCC1Kd;f z`+{-qBn}481dj(Z@FdlrriN##;T7Oni2oeC0L<&-hmS-72H94>Q4ks!0`2uK8gx-( zNBw%x-;VmFatEYE*HcGuIJgtI3AhV51{?$K4vq!)2IIU>><8`+9t7?I{s@dwKv|aP z1s;oVZ}0>#M%={7;QrvL-~r%S;6Y%_BQ-SGP^y^TQY$nu_!igC6NE-=x0}A2Wdn3y z1H)4{{S-mhm}~Uyi%VtMGe^C(5X0mm`eN*iyM9b~aSYph*Ls3$fW5%=z~10S;L>2e zi!ll$4p76q!M+Id>q=R}oRa##G&cNJ=`?&k)k{9gQa$x2*(fjlrBEEw%Dr_ti1%KZ zVeui^3-O%mqLs#<#Gc*byL9gt+Z*=~u6}rJcE>3lJMOI)Er$q=1T8!Dm6Hcs@`=B0 zZfU*vUXsvW(BMzE)Usb=#~17ecaO)np2oZN`bvQvaO+}0xAE1VAJ(_tFRiaFbYY`P zV`ugk@Zw@|XSSxa-iO_-RMc9krR0bc?qiDeb7}qDqO~*4Xd>8TAHAEKwM7w3W$XY4 zomOwFfk>Q!X^pJ|+v}tEQKoBnpNtMFWnI9$a1?vyqxZEo-pnVSVpncT?$*lPyi?)~ z<#wLU_tpETckxLx|9uyqg!@K*7hhdh&WBDhDBlx&&co0CaqOv| zeu%J?jV_~?@n`plh9Fj=A5&r884v}W(I*?R`{ zzOj;_=o@1~jE!o=pP0R=W-km!yD?n^SL&ieIsIv&Asgi4=*UuhokUi%y#9Z9dU33h z-jCUAbFwnnRnYIyU`2vE8lk!2kN5Q6f~Fcy-V8ipih1FtWi>17lWPQH5zhf#9s+Iv zt_e;6zYiV(4hMe%t^=M9##xv+LkZ)?0ndV*tLX7IMhjLkNWWBQ$xa06AMq7QzB-Ix zMpb>BoPsRnkYyIQI(QEFeK0O{${p`QFdrb+fuq3-!0o}@=K}`!`N+2z+y}fA%miQ9Qr38zq?eJ;| zTU}FMO^!k;U!-aUeh=Ip%$v~#%qQZpU_KH52+S{0Q^CBt?%?_0Uf^Zm55X(IeZi~2 z1HtRSgTdRt3E;h88T<`637pQ?Nyb9(vtT@!FCR?+7JwSw}xjXM9-2@UY6!a3E6uLL)fMZL0S)+-$5bE(pc8 zG}Vt1*pgkvi?bc~w-+%iZl<>r@QKONUB%Lxm`Pc?*{IWP5RTwc-v-mim1A zGGk1o*82Juc;XN{!OhJut*!niji!1qOYc;sgdwH9zLTH{Q9|wpsiXcgOEhSGtUd)3 z5JR0f{Y2q|nz*o`y%Y+@T!r2T7XjA;V|=GbFz={_;PT)m;7Z`8;HuyjV16BI3Fe0@ zCf`a2wlR2j*S8gfYK9R#^hp{4-%R!^<7lw$tv@RWwG21<=&NXj#s-%GdPj|X0h!7m z^F=T}2QGv8jNl5m8u%(WO!fIS<_5xiulxj#0^bDlWBm@8AKMvV{*KBYV7^lMCz#*m zJp``@KLT$AKLH=Yu|>}za1zi9@ENdxt1Vv*(tt05Ex_quOYl!%EAVabUr3L)iU_m( zM7{?8H<%B;yup>gc1XvU1RcPkVBCKv)&e_%`35FIOT_w3u@Mbb2I~)Mghqy^@%m&< z5oJPwYepM3sHT?(TQgjLTwZ}vc{ky$nZ(*)+>Ru61E+y|g4cujsAB*x0&fNLb8H8A zC3q+JOYk1>De%|eE8rvG4DeAfzsKcazTS^pn?z6WNig1^*U)L^m26YN;QNu@Ml01o z>x@5%Ea`z*jI|nt2~i5WGfF>S@^QynxJBY&y|tt)nB!pnaF5pOSU$-Wz{?aFxpUZtp2v7`3&!M^)2ne%1qZs3iny~-L9n!)2HhbwL)vQ zz60Jpe{Z(lTk}5+%jg>H!3NFNe~{%DYs+z7z8|f z_=o#Xx1KQPTbGa6{5g7ixn0xC{pWSM^YcfaU462+Yl*s+pX{Bt+|Yl-xHI04ZI;f- zc+ordLfYDsQKde&DL-^W)h>&sxt$EXx_ac2vkCq+Z)W)HShKpx+Ogpul=>)q-Lj-H zLg{*2PxYT!yVH>$%YWEyec3PCyG_*|ZPc~VpNF)QyLBykSli#_i!NXMav=EAU(%c3 z(-m*?e!Hm+$2Xk(=v2G3sZ(uxl}vfkcj!vbr!QEYx%v=!QP~gA{x)v@-aD&L?hJbp z^;oxi=H>07okmnhvuQnO@5Ams-#)K9b8@opw6zcB)Zen#F|lgH2|CT%R^Jx4TM|94 znrHcG_2!H?(QWsWTH{8iq|KgsV#3af3(q&55$9DTWANkYhuU-qUi9(LN$0o5ojUL^ z{;zrK9-jFi-a6>3g@NgfBRbueSJ?W0TmE#@az!nFo4EeFS#jY#k9{?Jd}MX)h)4Td zu9~p(`U8gVZSe2k&nz-E>GVuimlFGat@3#(Y-6E*{wUz^qYW^r6?zT~W5W4D*57uS;^k=jT1kA#{`5qia*1)o*pc(f$9}dk?TEvTbd+tLbi_p{uJU2T6^9iVC8F8O#|N za~i>njtb@ssF(v7SY|P21;dnCaLf@#oiPiBam-@YF?{c?D%5lD`Tl$F!T&q=p65Cb z(`&!AYgcu3)vmQycvrnY`$xF`czE;E(sMc#wbjj>f-I-ps$0|^UoLKY^rC|+i`or; z9aYg~c8Oh58^Id3W~+-0-j}~Wyh#N4%(o2)3rn9`@^h~{uZniaP%oZZA^g|QMeP+` z?T$2y*gL+c{d?mRg>~JJUZipJ@q<>Wz2&uU+UiUGorf;89Q}ODE<5*+L0y|Y_Wh*0 zVQh7zcH+I&HG>DdbB?+>*H>`!JbI|)pEJ^uG7Bm%YS}g>B&C`#{ihbM>&@(ZH*DuM z)5`fC+2d5BH#?;koanf^!M&V4KK2&JcMX~Dx_MRM>_pS~cURnZjGI5iNz+9+8|#Sv zck)xV-7TvZ>nyN!wy+xYYu3yzHhbUF%p;?mt(IGS+V@+_yn5oe#aN~}?`Ybd|FynX zob^=8Q6IxHMi0uO_WnVjFL@YT(}A23R$EE2omWdo%JRA934K+iac9b4*h_ z{!U+dObOF}gSxreR;R_htSUiVs}i2HXSHo3TV_sU@7C9iC-)@NFV&p20+iK2ieBjD zX>Wy zA;fH1G6WtCkPGBBu<_P4M5ARTmgDJTxe~9j-CzWWu7?e0&^S?9+Msp83$y|iHX4ZZ zJ(d{CR^)X<<(=k0?O7kHqMSN5-rD_WOrhxMv1aX&Flb4{wKjTE6x-)1+7GKz(g8aU zeKzig>d?jhszv!bjXpHE+sOd!+HeHlP*&HIo-8ql%cF#eQ~kAu+N^NmfOA$74 z{#u&|_~0m_yVA9?jMfC&SVAf2nw!#f0KidSyDpHsE(f~#D|$*s&jY>r75ylq+B(pN zC~t0xnX5o)I6MXRIO$8-*Kr8e)b>M%5v&8g>3EQF5W>=jAzY@FjUAn4UA>YWG}<@l zWl76tG{H?(7r_>kFb_NA{((`v4H(pG_b}gdFJxn=DZ=(7Xv>oqX{pc#l0?I@oRSSEr95fX28uSu znRRg3s~qdg+zg9xQcbF6b4^IiD;jwmLu9PD6|WRa8FJd?ZjD-_dAh&FdB0X z+8T>zj|a;+i(lUZmU9-EZdBsh+h{4P&t@l1OUW$69^vh=Y;!dwu6>%0@^*T&aQCbX z4=2u&f;Ti}9}>xWz7pJCO$lzFY(-BE1_Z;Sy#zt=m8~TPb@fzh3f|homG*~-R@9z1 zI45#gbO^Y@KXcH|zmYAzkxS!2D(X|_8~Fu(jZ16-{>QbsMxd7ew_)V}P!zd{0Bl3C zVy6)`TP*7K;1O5bP?wf1i$xp$y#lzcighVi05xS_aH=Newu-1ztf8`en>tW#e}iRl z0-7;Mu>!jP*#YS+puAYLA(*TjYj-QgbB4!^zDu4&jrgAKDiND|ngA^jp@FbhbMUgcmR$Enz;V8~ZU6H6+XUgc>ax;PmY zX}NNg?_qGHQ|^YATv_rg2|F(s%>ap4OM(!J3uKLE>aw8HY~fsznw2y-)66SIfd+XR zYH;PnOix1;$I_I%4HY;Ppzt;X=q^Kbm|95+4z*;nAZ9-jb|YqXmA3&go2BVVDT6EW zy$n~?pgDV5%HTqqy&Y%J@I8kxZYje^u8fE-DV*9u+Kj$Fj{B%-fMKaxE$@)t#Gs>& zzK(loZKXK^MaFfsr}u8P?ZuC!4R_RB1@Ts(p|;wR&9Amr_S9u=HFpYEJL;%O1w#uq zEcdvZ4_AivS1|O`vl*H7EK`M|Uv_d7n*Hh8lJL9`7u&qXFuBodD&*#yEP(yg4 zTj$Ku{Wrd=@GdMY>_|w-GDrHlRjl>fe5lTaKF6nzx zoHiA;f7|x*nCBmnyNlW{-QMl=pLP0SQQIrFjKj;CjoK8o%eO9A1CKrm@F+Lv`kahlWFA$Ptm=a!G|xZNbq?2A!l)L zBSQ00aG;14rQFCq(%`FKXF^a?38-9V#JvbU zy1vl62l-M^meEHy2675`^eTFJGH1aoG;fxoJ&^_<9V5*C(VwCUCwQcTC{OnihNevc zq>nQAa39D!rG%NHfYbBSS3$QIi!468=b1V#(dzNCoZZ2wp-TOiI8fp$!49k^v2pdF zvQ_f3(|JKnuUVRes>n?UheFPEq^v+YdomUZMyV8xwilFl%dZ-{WnF0OG2s8pX=vlY zUfLiDRQUu_IQUN}pQ-dspvL=`m)S-#-VD{~-j#*isMUj;5MMzS*p3iYyTU|GRZAiOV_3aTSkgM!=FmNkCe z&uEXUK>}MlNQ@>2Y9Jbo3Raauhb99xy1uZ2Qf-Mdh2k0INz-tZYCmNy>;ZO}2{?y$ zXwR!7^N3`lgU-7y<|M@OSHn5P9}d&#Y@vD{uTN)JIO4Qfm7LxU;Av~f4(g+;hqYF0 zLy8FniA^G8&qnN$_-Gq8Vr)SLtqf+}IEY&sGo~0HZHXpqkrCY5;7OTmsOD&oXew{J z-W2iQl+3nCiwWmuV6%YpG-gw@8%E3fQ8Zg0#4<*t)Hc{J2kj{coMZbP`GGBLOl@)c zPa)oGDea;QZH3>b6=hG!^U=jZZr@s7>#(@G^{tVt(2mLnO#&HETa2fLKO~|vg{Niv zaQ%qW&+^v|fw3OB9YH@EeYj;Zv=-2I1s*)z_lSZ?J6Bb8wYuW3=_naU8N&wb08yi zi1mI0(W0B&+q)ZEjb&Z#V%9}M?AVPmv^cL3MkEO7V-!(E$d;{5yX{pPi+q5JQ;op@vrXES693A zpln7aQmzM{)gF|(#|WB)9&Ax3(=1xF>!FYe#-pd*93P2mFQo^?J0zGj7I3Ij#KDsu zO_))=%lBE%m9^8miSe<9#ul6h?dfha_ z@*CMpk$(ctmT^@ri(NXaxEZkC;MOb7BB8kJx3mQgKNsitSpRkU`Jz+tR$kv_xm4Wz z*YB`g8c>`o={?xBxOc)oKOuZdyrE=qE&}cZXZotINk#=j!4(D5tC*+NQ`*WRaCu4cR4~2DTfy|IMsjew zI5xpx(sC|h>QIA^nsXMn4>ydo02762oWY64{ARGyvM?rh3TExGL34F9V6@>9NHZFZ zF*LSfQxVd6K1s_|GwOf>w$hFSbP zEPyg{9IU>K6+PSFBx0ev-e+ltgHn?DJI71FGHif@d^`Zw;4GY1_kuuFtLC+?8Tbqiu z7ChwymUgCnLwop0Y1$_CN?==!EW;JQo118wZg5w_#K?x0E`>BQwU}vGqAmpu{dt%# zBSOc+!+K!*pFK4BW7U{I!)`n$0%!QsbKMm}>yx zUNRZ%bqIH2zjf|BLn=1JrW?FCM@Q@_|4Zs#F|LdB_HA5`PR=t-<GYjM^7d=G?{^rWPt+q{|N(&9kI4AMKLW8%4vlCx0 zg~66{5PdTY3CQ{s)0Z0>a(MIKSYe33SM*wGsKVhgwq0eYU@2e59#l}#!;Ugm85(G% z%SR7a;hfz>+tr40YOu6aTWi>Zd-c^?!xlgGdbHKmw$UTd(^0Rpv~{mv6zxC60m~+A z-c|xC&S-pv>+1|lEU*KGJA;98`YVH;RVdR|kh6`4IcZI&>`>fF0hSzJe#WkiY zJ>F)BNwheye)sN|4RQ@0_UX>ru4S7zCX_AmIrD3N$orJsNuNJw*Q*P= z4|`FEGADYNrYwzBuej&~-`ZTV@k%cwm8<^g@W?cegg z&qV*C6RAAv&L;EFu}3WjEol90nM?i4rR?XlG^cDSYMa&9qVtEht?5}fZPd+S30-IG z+*fn%o(7GJ+Oby#thr%V-*Z+AX=kukxt7${Z<#ZfKFr3<&LL0Piqd?6K2e#aX3XsXOD%WT(%vH*%ec z4nBp;Cw}K*TN;~O!cz1S4SCK*ZarhJp|$lFLqbCJrp^w*m8yh(u_V|@mV`e`k#IB| zi|aB;zWRJSJgv}tpE^=Tn-Hu+L1U`3aKZ%aL`%c$J@mct;Dn&P2&6!F6FsaCVfx*T z_9%+A4FRp+F_5uVb;VlMjjiN7^i$A3%MF?H?ud88N;mgh7maSHJJNkTq?NAz5{^~{ z(>rgb4_9Dy@WTporoXnlFXJ5uE{MmXaRU56?PRz+;CLC%fP2VtCfXZ(Rpi|UUbY=* zWc$i`{tehWt{MEen`}ROdb;=rqom#6!D?e*s9A&4LUzxew>%nuH)oA__L`vyhZ##E zZAvX)zC7LB?ik0Ynu6)3E|8~d(@ObMc8q;Rs`YbFIZBPS@0K24&Zu=MVpftko0d>6 zFO;W@nu4Z?vPt+5Sdx?2n%2lfO+jdZnF)_Cqk6(nZ`-($@W{gsvk7>ZM$5!Yg_w#! zx#Z1GO5st8?dkF}rTSOzOJhH{*`r(XAD9`xtTH55Pjh9Nu}WHIu+q3v#ay*gF;`h; z># zlGYv5brRW;`VSpl{nOx6!hi{k#fQQuC8_^NeJ^h1+<&(EUtFcPxavPw5ZYM`ug&X= z+*0eFVtkJma=67TG?dQ8sZ~m10 zJ{rQU%C=isaq+fSKTux%kRh04Lmmpg2 zgzGvC?ej_-_AJ#sw42qDwp0GrYZ_fl9fZ?-3+w{$K>^}lh#IX>7eyJVaO)gT%4S^f zebIhXm+}#iLm63fSjn6mpEdSWyKgrm2*#UgbQS7hk9yLZpQQ3BedTBfR?vnUD$5d{ z^bI~uiI`x;bLPo1<4>f_J)q31XM561j_cX^%`S&!S*l8MR+3rq5HA1g-rQrQJ1gh& z?kk?Y7lW?aJIsri7XtTFM7EC^)lsmwiI(pjhSD%~^R==h6*>u!WU0_gbxG90^sj1M zpPm^Kd?ZF@ZE}4m6%^5`$asDn?UxN?3idK;5O~A>KCUr+s(Z~tzgUY~AI9}oQS>bT zAe;kR!B<}irtI#pa7zvd9hmUb0Ss&@J25i)EY|22wuJSpB|S^|)kkLw19y1q^u+2u zh_a8^=xV0y_vN%2n7Lb1VQ&XdN;=`M;nFA#o6`FrOewt$GM3uP&ItCy>ejRc158_r zD%oCg@Yu9NbWnS_V!*HXa?@ZS@7z)Lc6jA>(P}#)g1s}v&l%#QZOJUEYqtUwcMXC}7 z|Kf*J%BiH$?MB8ympqyEUENl@H78eHyX0}*XEP`dv5 zXE=#~L0Fv+l@GycuxRTI!!Jl_jh32q=@1VMmq$wnq0JVDpd40U&X~n5jL(p6g6&IVOx-;)m;G&r*f3K(y<=~;3$m%}? z-$w`GrHB$+lPJk*wx9OKB>0gi?G&mQB%Srws2@zGc;5^^ZQ*3xWk|7UF3}=r_?=?utTq`-Kh+SCS>9ycIKwSp* zg<|&O2JO8bDI^=DD`U+TPyrhm>si5R+~LyqTZMMB&2s&LHu&i-ZAR6;t*pd{@{G(z zZp_qe()ZC{#{fOI!zZ#szV`8bf6(X>cQETpItx5JC&H^G$}xnxcW4~hCHdMcx!o$2 z({3eHu`C*)d)PheV>xLL9?3m&sG>Ft4OF)>;ErQ4k(M9#;#==ihV$PCMSPz;T!sBe z7um1u)gF!3Wa5kVT73Zd2M3fu#&c*aqMUdKv-bCc>>i4ZV#O0!Bqf*4A}dV^4ra^f z9OP%_DC3PnV;IE(*B(2>9)T=rmwl*@Qi%2m%3_jScv^7dLYK%e-tm!qssXA(6|i`2<~zAEwv%XS-4}`EEK4a&Z{%pohd=u-VFE8 z<`ZzIpOj~$vqAb<7{~j@c`5i}n8lDOLBRnM8WVHr#_d>`(c&W%Ge9 z@=u({eG+~g;-mikzU1E0-n@_Lo(f%@&1&lhGGuzdW~e+jK-CqfE}%#m>i2*$%XakF z07;gSWe+IoH%|%KE+cu$ZkN&Nt_)c`ln1wYi2Den{?1Ztsk*WP*96>Hf~AO2PJssi z9`&{Nf`^n_miN~H-TW0jC3mJjY<(pUsQRO_xAqZ>7tJcE9IL`3`4mC{*Zm5|DsUX& zAz$G+kJ5L0`D*~KCC&ra;)v4kBA|k={XQ$Ol9Yk;5vpoemjSCx*p0YCi;8=lBRIy_;1)&ftZckL(Xm#6w`0Ji)JCMbPJ z08aS|uTaEYxQ+D`kfS!`ks3&c-oZMOW3NTkFd4VlG3o&;UBI30bj6SW=h%J;HzLtrQ=M-(o zLSuiS4pUZd%mI~HZ!MXtJt6)5@~{p1LLEs%2x@>uEh3K;iNK7!{<`3U~-se~w4^h*ji&Gy#<>Y+g6m2T63(M!o8 zuimL(Il#`ml&{`H$e&*-7o+4WgmJx+uTn$EZC@!HhMjXsmUG?JAwgU%t4(??rDcheW+%Q)OIH za^X!T=~cOymE0ukf+Fcvw;;jBgML^)s77P%u>lc_jOkTSb|p-&f_9?x!`oQt_x?-2 z4`2H23Q*DXy(9JF)VlmNjrwtAihbtiAdYFoU)G==xK}$+9`R$Wyz*b zTWuqXsT}A;O-csZQf?&g0q5J(NWKirc&<^r8F6W~qWC2B981cM;@g_R;)R3+_+pa5S^N(aP{GW$P`J;NxppU=pWjy_>VRt2JMf zvt$F>T2`aX&jsbwH!IW4&jqfOYgJN9&1avqr8aH(6Wo0fU%;N@9f$-7HWf8?Dl*$c-OrPrff z{p{)O<|ejOz6)OxU%FWr-iPfJ--T~s&3du3x+@;*!Vl%JGmeTN{H4~G)Fqa;Ro|#g zTS^DI=+Ygayjs%qSiTO!k~7A*&`GyZh{BKMS90705hr()<9=o*=|qV=_@U}S6)C8E zU^s>LR`$Z7)jhNP#KdOcWl69qi{rRTc3)Ot3sI~IAk*t_|x22>Nk)N=8|dIK)#aWYrN*4AJCR>Q1RMd)iXaIPd|vkK*q#N+gU%UZeTC|IkPmNAvH=oWk49 zIdRaAUX3Zv35jF*>qywc3E9*7M84^N?Szyc@yE4$ZOQA9jfV2um)D5#NxT)OHk6_0 zhZP)XRx%&;byWR-;(|GeU^;i=)PgcX|M7f%6T76g+7kcq<(AH=1ZD5^wWrVt{3GPQ z_@?lk|7)kKWh<4l5F^ThM^Nl#TLJH>abGf%PbS@uZ0X36q zFX5|Fy9K38q?yNGLl#HGeB8C4=kfd0?<<3m-Y5-HfhKJY1jp3^T&Xa^56}I@I{yA` zpYme-0zQyKpn2M2JPw(WMoirc`9A8`Ur(kLty{$ZiQ}Wo47MToildhpzJ#yGai7__ zIg3k{@)n$)X~QAGn3GIY__4Y#V_C9d-=;j_AR4MRCBs&<&*04xiaXZu29A3u9$L$e_J}Ok^Sxkp8nB)Z!biq> z{v@Xo`)=SDaq3T%$!Zgy__vpF{{9{&@%bhmIalwg?iPM2+l)dR0hIk?DJ#)#D__zA z_J`nY{C2oO?r!7jtDA?A$!`OyBW&j@aR4z-*ojkj@N?AMQ_(}@D{@?OF?tu@Kn+fk zq&*(9$anyAX6?QFRBj|KZ|iwZ2E7BD9dgc_Q&v@RK9?( zP?fz^zP?T5Zmet3Uq$IIgUJHebnMm%C(N+xlwQEsbY*K#_8r(-lP&4kQjRU*p5evx z{G{hv+grRPcSkhb=kq!4p7`Ve-$D4h-e}UncvP*^KVD~@q>|=`dVRR}+G^>Kl<^n; zXX1rw^^SLQcoWjOL({qgI<~4?{wGHd&$V~XZ&<%JA?xCg+gdsXlql#tcwR>?{F3dk z?rF#FH%r@;p0>fZ@8os`RSQezqImJ#QO-?(?LS9*w zQcsPXQGW5G4Z?{@iya5|Eqy%cy!-1{b01aPVb|g^Z}DL1zRHgK-A~OeS$5B@l2L(k z9c>%-+L`diveVKxUEZ~9vtsw2V82mACaumo)M&T5d3=vVcaQ!fme0Q1>CU+F4X>?U zs9tvI54C0Y-S3}-R+#$iNITaC%^G$M7@it6^{m)FIQ_h9L*2SbTO#+Ad-u4ey1Rqx ztaFJCJMGxDU`LthF=uXbM?bo3${cj-?mp|+A>I*ZEKgV+X|k+gpysa4)|~^Ywyj{E zcG6lk)nf3={+aI&cgbs#lUR`YBs{M{F5mR(;rBywy{vlIC^$Z%c?si?hTct_hFKlI zW?R4g`B{fP4htAFx98}-+v_!q%MA;)U)cO~eC4z8>aI`L?oUfDNb_5qGy6c#!^uB3 z_>`D^)-Uh$KJ^;)NZ(#UdEY~Q0)H5M`I7l!+nv__Ps>!dd0K6(+sR4Rr*1>fOH6ov zsO0)GmNlA1EgDlg#IfD>k7bJ5E>@9K8pT;GIa)ToRoc1LbIn_O#Uw7>`*Z8O-m_Q5 zl^9jI?t`wqM}$^wdh^9Pmo9I+w{I7E`j4YiB65EyT=q6{YQK$xOSgzwtNx`Z260`> zaUQ3KR$W%q9(1W)p?%8fD-((U5EvaSU7_-`3Zf zqIRnK(_*TK4|z07IVzQJAYq;}tsaczV5vo~(b zf-X%=YEruKtM|1^9l3krLCc4~yg7B~;Oo1;r7xTAUz+l4uD;e6`o^y4v9s}=k)_3J z(^KDG${jbn&iJL9N3J=Tu_$nR{>!^feq%9|K@_e{u-X}8>}_FH)k)iaq|=9kw0ttC zHSs>VdcjBRtuY=7EsC3LRKxhIr4^GuVDD1x78FQ#R9%r~O^IIA3 z5PF9uOy*Dh07_a751-P4kqy+dd7;|r~Uy?uMO1Zj1WpKXaWZ* z>#+*6%IdoY9HIw>E0DJJ8-o z5$%e$+tx(zFy*oAN0!Z}t%7z%)O)(A>_4s+%Z`j_gZ)`jr*;$CsJas8Y1Zzl4Vx}` zcfhWaBkdO2aD~Ttdg^E5vQ&&fh-QTB(8_FsGuPDthhII!FRt++=Y7LUQ0_Ioqqa|d zm1-#Ej7>Cib7^_~BmVS=QsmsYqf%RY7Co-WJ>JTQssY|h#3dz~)nyt;MrdtCK(#1s zeu`P$NrB=4jg}zoLWo-^+J1{!dm7>;=sziD?Q4h#Lu9CLLu4vZP6u2T7HrD3z)~;5 zo+8V&x2J}eCL=YLajVRg(a(*+P!c#U5#gWcORdHw2GFM_xjkq=;R<_@@@8zj>qkE4 zRs^Uc8zB$U#m}N$Blu!b&Q#qITf4dXPz)<#8e4>RL$?_<{Vd`DWUWAv(gX+vDSb*= zjD+Al8%Pp_VCz1m)M<^r=C7@41gA1G+%h^DHEN-;Y*U9n{QFcUWj1w3S~IF?gjlz; zF<#3pOD`cfaWAAawf}42Xc~w`=xNPJ4?42AL{pMGdqlJHd$x{<`GM zO`s&m-0zf%yfoKfEz3J|d^Eh|bMF4OZK3)u5@v_Ki8KSjNnIJXW|ppo z@X_TiS6nHvyRn|f6ujP(Ua>bfgsgv~Ulufdk`SEQR5)yJsUsykL7(f*sAg2?U&lrC8)8hqk0vRS2S&3ylF*J8T~K8F!}aW{Oc14PIo-wQ|w-$@{I&_9GP0*%JX2KDEu_oyA6b zLs3NQ_0kue#qt}B9lr8XFty0JVn}eMFX<%pCADZ-ID0Wid_Lz+1FYwm_3MnVf9gRi z4?8S~Dd=^U7Z(4K2E?nmp?sPfMV(wB#f62U*~^`h7-PkKcSH?(P*mM>9{N-GMV-8$ zMR-vzwsAEmxn>Q7Ua|1fNLh~QxEC4AHEZ~D1K9_d&nKYNruhtLNB!82lUA&>^7ex%@UfonjD6Kl5gsR07+ z8gg`kHU^EKWPB>b4Mq5IG%ip98;8-#Sw2TwUsKK-B0ph{FNIe*rqw~u{Q)QoEYZfJ zF`5!);SdWUZcuRDaWpQ}l(USU*JNx0eikpVkrk3>Mzjf2?P&mGN>S56yE!sPoDCHW zxnkA@V0s!>OV-Gi;I{rQqylo3L+ulo)~@U|F4KN>`~T-C16Y2}BRQu>UB!Y5S$ndQ z)N@Tz)G8r+hoRsMKo*Y^4B^qtwI2djzzdbWFu`3@$OD+?pJ`*LbS~xo+|p6qUyRjS z{EqvLk;3cncj+7X@;7oG6t$v0zkVa1hs+Xz@W@CC-2d_bP;tHI#nl~{?k8qnaB5Vn zL?Wos{}Q}w|5WewcVSE`Ze@ANbB$TZ(c*Vl>a&|=IZ%n*bM{?0JhpiI!XwRMXqco| znIU;dm_H;a2iRIx!SpJ|pw2M8Dg=_Bw3Wry7$k`mv|yNCRg+<2{t4q=OZAly%KFvl z4EhvLt+*%8Xs=eEuPj41fMldwrIPQPjF#Nm)dyIWJHTF{9$1xDnCUlgm}GS*aEvYF3T<3U-E zT}si4JH`gwdAfhcXvRSdck%Hn1>ZF$8rWpXy0Xdfyrd=gi_Cq47u&me9*QVm)b4t5+`{*__8%x}pRw_8 z?Yz0x7jxl&*V|j$nk)B=UvI8;{lU-hI@pe2iP6rK^Te2Bb@p5w8(V&{>ZMKhad8T+`c->1tNwyfFC1!L0;4ppt8#5f5KN3kL?2MBWkF7Jqysv^$57x1r-Bo1OZ>AXQxr1eq#P+LO1KrSaK@I9 zWhu!CMMiI-BFw>Of}OS;?1fDzE#wLmI0U%sdZQigLfL!3k2Tr_*#eZ)b_VnxSlTG) z=y_kt?+FEUnJYM&+$0h(-5@s{9dfvhl=-m*%|B>XKf$bPQW8paNy^-7=c7x3JOd_0 zkOs@7XV>uz-bdopnZ`cc5=uVR+F!fcTZ;1y9W3((pOewwfg(Jk2nDgfeTjM}xfR4HZz+*tU#Q2vM!7v3&7`K>hvZo3$HbyDcD}!Qd zGp!ybFmAKF?I2U4G8vAPw7o{7_9tB2eU$UZXk0kk8g}XcP}Mfomu$QUc<1lI&m^l- z*>-wM7BCtihS&-o78d6a|C!L;+Kze|g>deixXvh`+?Etv3BP9$%wOsjO2+hRnV9LZ zOw3dZS{2iq=BOo&2mvSAtaEJ(%IkX2iQ*@XY)+K}1Inm_lyqp=wGtd>F^x(}hYkUW zE)*@->3EI>u5J6xM>a*2%kvsz82&@srI-Vm8Ou&^Rfqo1k0tyrdO&eiqT-sfzRP!xib_sMW`q-;z$FW@DTanMmxLbN9!ucw-aoS-})u~=(?d!#veSGnM+pMg6j5lvfHI_nw%)0H_$gL*i5 zIcfeJ^pZoZ{gHH#a8FS~bV1M>n!8cFS9`F>LT>0TsUW)X?w}GaDOt&MeW5~3E(y9= zs6T5U{{Xd!QKDuu{?d_9C*I>UBsV2XsvGFVtXQU=ofR|LVzhgE%Q1oLo|H8`&0pIeZqkvImU<72sxHoO0WmNG;3f%_ zm@`kx=&wL;d__OVs3rjKQS$D$1c{!#>oud8bnuUO_pax!8;&g#0+@z^%M^nQ^A(gJ zao7(QJw4uRu^6$(&SM1=rG;_?rhg{Y2D&EpVO zG|aRE6RPSE=9nV+1={}tW}fe&*cA6|R$RsCzm2V^Sl+gO0i6abPZyI_arhd)i zF~Lc^*+@94q1!tgOthytJp3Ohues1#{h={Mf4qoS$9Ox$top@S(d2P=1?@0l zqlJAI++k|pT3C-mS+o&GaEEA28(|ba-n9|T>a&$-c}{*HCHai9qWE|AR@VC+Fi&C5 zIwbojCB~YOZH1|SpRs1z_t9PE?OgKi&GKa`>eNvP4|w~uM#nlCY3CA3{$w-E_u7ae z-Nm{7U%J063aSR)D<|%rF|!+0c?A~4HENl3Hm1;N zuN(&@e50<^>nxP8Dsufb(1tjR(|ZUtG=HPBIERE*uJT1^sUYbr`vu(yuFg zv>%`;X(;RcU@zpFs(2V{4pHnZAG7uoL^s*~64k!8Mq3p+(__lQCY=M!FBM&+DpR^B z$i7J2s00S~7#LqP2)t#U!*JZhohkC5*{mA{(Tv&%jDfu=)TZ7PTnSd4XKz3lFcIye zB^d{VkG2dnrG}K#qqAAp1L8cGOBnnPu_}&~+=|6coq{2#k{7BBdrQRZy1Cvk%y`o? z6tdEugM6N17o3$7@Xa8MVKmoep)!TSBm&ZNb!!Fd3@lE;CYkA(>n?vSphXI_Tj`bq z40IOKt`8OL1+dRD#`Hu+%2x{3v0%o&XNKohLfQfW7Y0L;B}6v`$UNWl1i?eH*K8-_ zh6G>s{Cj?9x;@EQBd$)sgAXgw-(>2N-yq>oQQoeUnCn2<&o9)a@N}Or%KYJ~hRYO@ zLEDQ{w?R@kv(YSt*N+7xjjT|mYh;D$5&UONajL7OzQY99ItyT3EM^2T)Qk3rl@j#D zc_(}ayGOA~5+RJoy*TIpU34r2WOXafNd%|PI$50kznAgor{bJMaTPr%n#D?{m7GY6 zM+puV*>ECpx6V1VzJg~2GcQz!8;YctJV{;>#&WUSN|FH*!}Kb~ArK-D}x)!B-U zuRSk_eu=^ij@!X@@tu840~%(Zio_=i`?!5{Dp~MSZ&WNX6DDDGmL3fg(9=!` zN*p;3$_2Mqd_7)3Qqj$cf&*<_B-l&VlmoIk#_;XY4}7u8I7x%Zr{O+P_=P%*g|=gp zBIs?SBAYd?+a6!ImT61+Bq5dCBEptalB32`G5(b$%J}#u%v$p|YZd80iy9bPot*Hpf06x0 z80t}S|B6!UirOo}qJ`X;69^&|5|Agj;{+%!tv|?|Nod;hfId{k`g2 z+1AJ|B(D=I6Rgz1eE$yCmwuGJOfPMyaJaoaC9O6!qA{YuN?bHc7-(IjI328Y&RMLx zK-m8`ij$K|#h|KTL0>eda+2n>Bpg9Ql<;IM+)l9gctUBq=|o9Op(DM3cGA&VBHN{; zxGoyq2&gALT_~4rbcG%=3wD~mF^WrP35+u9VINtBjh(%~0aA*Rs-8k5)z!5KOovru zE%L3{#@`Vow6zMw{}AP)T^R-rUshextUCj7K~>pAbFnID3Md+|_A^9FN`7z*nhLY* zw5`r)l@LH~)+Iw6Q-hNF3qG*&nRfr~uf14<(d!`C#*7p&39+onn035o#Y!3rb#K>9 zpr{E`owZf5p}rJk14=D~&iHEw0ZC+C&G1P{$W9 zNTU!0)*$ZL5_*=ZQY|@Vni|+4w1>r2bL}aOMdmzp8E2>NSc?RGML&yprJH(UEhK;< z)_N8IDUOHa-Ykwsy;Rw_wrJy4WvDSRc1XvShLs8*?Um&URwg?x=NtSNr9U``C7tMm z91YYPGg0N*|G&7fc>5w3*2UF-M?VtVtQGvZFA9Y2w(k`4bA`70 zzpI_3d>`%PZfNg*^wIq%nsrrh_KFzXzG~0cb4*+2z3N@MWk&h>Q#UMo(I>G&zkznv zAGE?Y5%JanXXV~z@6NXu@^4Viu?a&c?8!MZecI|{OR32vbmElj!dtzfE{Mzi6tcA6 znpm7%ssvRG`l>0clQf0HyHqOFQf77kRy+}W^|nwC+CmHH7A)8Odx{|6H^Fkdm1P^lKGA^+Dw`H zK`l^9FOr>ru3n@{^(a#IX9Yw-{fLtMS=w%pjl?m+-JqB_4Hrs<U zzh9p|$X4z{*)K7wb6-Sz|5W63L-ye#M9DPlN5U&??AQ<2aDa43>pr-i4+k)oPVQ_N zG{l)0cv1p*qz9AN`?4OA%PMjxMJ>K%X1u+7hpJS+50@E7-LdQT5#XX5nf@B1mL3J( zyRj0Ru09ACfJ?%!IG&=|wq@f{jC?BPKDgweXDcnw87ftcnUuk{4Mzgtqg2Xv$Hie$ zftuO4Ky&CB+cstn^v-!-L+mYM(-A72E)$6ArlHZ64{n}YU~ z4B5jO2FuUo3_OWzDEl2Aiscl&*3niI2lR+G)93I$EWrkiD+$~ef$z$Ko_WoT?vHk^Q5P_*GQ8a7)fpELPbmfnIJ zb&GO<{8cpq)tk3a_@y7rT5R|oBI-U`zJjdXstjx13h(?@`FPDC_bA#h9*tSbhRu+V z6m7VT#?!4b<)a}JXP&8?Ipn69G9Cwc3~=ep7oo9M-k>`I`En-3+qN-lAzEa~r{tZ5 zDIiPfABjfCtfIn?X$M_V_z_SV6a!X|6RRf%iGY5|l7I992_pVrN#*DCC+{5esl5%S zv`zkf;$$cp(2Q*qt~2>?8!2`Za(;G__eO*cO8)r++tNFo_Tvu9TTZYo{&3ctSU>pb zb6gQ}$d+d}6gdVVhWWDm)V{qPcSjye3PVKw+b{h;eCtHd5CIjQ{um?EmIbL{%+1<1sl_=FT9jDy12Y8DjV}L#>Ij9^CqQs45CqZ z(@%d>K<59Oa5A}}*Kmp%V55=C$yA}Sf@z9OI9Zk^HoYd$=Y|n>WZBEUA!W>Vu%k?q zX)RY&YeobWWit-D77VgMai3l;&h*aClmVAc5UXjqO|iVc$0xIj!+$54*q7mxwcnwF z7p&=AlpHm=S}oUx`K+X>G*+SzmRQIZ``0kOGs}Hr#n`?Kg)UPA9n~+CY?X#ejO7x{ zqRcq|Tq{}jT^m6=6uAAm_i0`!>FITc_)Z@=zwQT2ZgOo)^-Ba&ePN)7Z>#pMZ=5r#a9w?6WAGLvcP;PIdp*VvScLf{kW^ygg@xMcq zN3ony#dW5A7iU%>0APNg>AmY}Ol>Ez(mf5+ zz*+niwO2#CJL>F3173}=BKPtpD=nL?SBj;}o76gPIALT|r735v5u+-Z+H%|~ab0E8 zbk6bLj`dt%<5NMd;6?FGwpgL#pimP6`pcy4G zSO#C@OF&9!O;Z-PQoLW&)W`z6SBx;Vw&a$JlN*@^bNDtN8=FcQ*vZ*iMB8e$wid~h zYcAnzsIF>m!iAFltq@x^feynF^=@h^t-Vzmq{!sGt%)6_rkZ%Hj!RkDup!u62yYE~ zmTGbo^P8G}QF9rzs)gyMZaKCruT0*~b^&5mq-h7oEfIT0<9xZL;*gf6QX163T-4Sy zLH8sGIm1CzXj3UbY~Ie4%5m%HMtjp`^-`JXjZ#04vl0tBm;x+dyV3t>YKNhyTNhIs zeC+9BYQ;Jhrsg|R=B*w)Wv{WZ;+Cwf8Dp~GHj1^nnfhTFEN<#$8qL0Y={QpbHQ}ck z+RK4bKXtbSHagB!4qtRboXJzS24}qn!_fgS?RY!sq#u#Q4{@eaI&Ka5#G8J>sDH$p zMsVB)iWz9CuU(2=mWmq&nn299j;;^F9kY}y2Aha|!NDd^t@H)y;9%1r^?H1z?p?j8 zOM_ij2KFLlFHrX4+$hEkF{Np_4dP!Tq0#81K`T>2Kn;Y#b~$82L3h1%;;7N42^QRn zpOZ|nR_gg66FUTM#?fa@)|52abXA@H6|oh^OflJW>IGjRD{<>oQzxVhe+!kK&Q5!o z*lC7oF~^OkcQZ|OkvLOxmT9yV(-=^gb}1`N>(0%m8?#JiE2du9+9a0(!=|mf6;nKH zwaLzu*CXB?4^)#>QyKNrN@RTA&6V9Lehy51VZGRXOdVl^E|#;(Zls##^MBWzHVz8Y zKcp>uQ5K|dY|XnyrEZptsz7I#nR+L7x?iR6_8Y-3?%BAE=Q}R{ROHSpce&|=-}2iH z$U3sHXq-rkwmnAw*4`yC?!|JI+s~^8Ew{S0BmL;s%dPD@_q@d=_Q@$5&^UWQoxOFp zIG>(6GbG*eug?veRdb#`yWXCzNv>_IK5Z&jIC|(rVdH^Jr~0~^z7acjH7pDpr#UfZ z@$ue^Mwc0Tu&qV&)2Vyjzw6uiYQv^N^3U3CkMI8>960URD`LX6e%^~Lws(Cv%%;ut zlpb9UcP*IHPRt#?Y39kPb!#m7tzjL{lt1r2jcorjzyI8u^F!}Gx-{@pd_o*1Z;~76{=U(s6{t*FX_HVB@yynfon8}qM^zIu- z!OcRG#IY+(@oLLQ*E#oN&q`8Z&5}dZwod=1)F`3UDC|?61&w%owdtf!ksUMhxalze z#g4iBa|tJxkg%$umA`mA<5cgFXxDWx3y)%U%=GFtd`+t`Stnw0HJ6g7xMsAxr4b%b zYgBV`3qTkYf~l*b8je&>sVjh`l+()-1&X$y+?Kiw0>jHtQlA)!Na7@#GXv#nI#)29 zE8ave%Mq(Mm5%r>U5oMv>I#y#&%*WtnB$s*Frga8kH1h+qgxV;HD-v^fuwp~E|pLP zq*D5uvOc;|5L;H3D|vb8adxBd%y?Ci_m1MqYjp82quvRV%v|!`AF3j89ahc$F+SQ> zuy78S9I1L(zf{Lz;OqbcCp&cJlqMP-2n$qIYRl!ag!TtD+6P!3^rPgqBR%!uSXf%r z!NUimCo46^O17!Zjpgz&lKr%FV_4=I%l6aNc(r~+dqq>q#W&Z-VDIwHaAn}vE8kKn zKJ#l!%H2Q0Y>iXNZ>dt{wqm9$c^l^?*CI<|WoOE_My!7ud1GcaLeo~XLBLoW`8Sb@ zBRvFgwXI~L(>b-n+rJ&9YTNi|BOuqOg0!28DQ;eS%%_yr88L1GtBiIK?L{5r{eJI& zz`G683%R)mgT%-RumO5Helpf;wF1a8lMkA_ldK zysdK=Q2A2cDVRDLg_&*=+T&y7@y^E}?-4R9&&JGpx{m#odfW9e>SZ|f!-CM&~)+qApFwb2EQE3uE|c z6fnAswl$f4f}vTeu+*;?POX=+BcVaPC3m{|9zI=BUZyuQG8WFeDLKzM7s@)9>aX>V z!$qb%x@qQ`%1BEfU1Vg8jHCcblaZ}5A_DnEMo<8UjdLH!D;cq)f;=E@ePD~G;KYaW z@$l<0v^miBU(sPQnh12-R}}TeSl=w5`@f=BW%M@Cr(aP6d7npLhrX;FPIA%FYRhOt zpe?_m2@*S z9>N^VjEAdbI0x{VZ{UYAY}t>+E|`)ZqAE~7nardrp!zb@O@?%R0S!Zux)X4f3|Nz7 zr=Hi3Qtz4kbm`dex6|$Kz6nWV$69@Q04;{`@~OZLsv#`wOW>N0+1Xe z%tMj%s!&Ld5>{Q2^r{~qAzT3awoxR#Dh`sfg!NM-y($rsi-e6=B)w`0Bv;U(V&~i9sBkf5X~ zGHh8Xl3wKk$zSSMQju`dkOCwuM3MBW`jARXSYt)ftGYsBFAN)1Pe`Shs8=OJ?2O;f zMwOySdewYL-6U)=<$g2`S5KFVtx%UwCM$Kn<`muj2S>^`$LT2Llc_J)Pb~aoI>>QT zKxWuhol==*931Jbo>-YO4~}%8%2p*z^xOYo?>(TRNZPjH>0xGoAq^7&k&KuH!GIC7 zYXox^6ca|wx+-8=vtZyh3$8hWsm-Emj-akt1hcM*UDvdR|EjJY<$1q-&w0P2|9PJ0 zdmqoix$COx>gt~9uBtm+_rcL->LcjAn0H*F9XJn{3Hq{XHVIA^a|C^Nr7#;uyUl%Z z+Ll_W^jq{FF`qJzn#TBJpHnMPPWkMzVjZ$h? zq7SxuKVdR?+v&T?XRTu|oe&3170=k|=Lxx(t4PJdVcBAsuwUVj9{vwaP?gef$O zeawJON$<<9 zGR09lkOsAP^VG2Qi=!R&H&yboW9t;?W+y_-0@h(6JVCfMrrls6gKJ7&zVH;Uoj`Ws4RMhUq0 zIvB;0e)st%-B2@1~X?^u-u}N8ddqJ2)FGKa%x5epI;>mJ)FM$qL)$7G~!TON`)vJO_gXkj8 zDX;I$a^IlwSon-kL61@gDN&oIf>P7PNaokUI%-`}KTG*Jgj~b*MRr!wyCVu(DtJ<4 zAH5ya0;OtyJw#ksS-(+Gjt5mKn$ycZ7*Ve(dZ;ZYh*?$j8Gr9WmhfG4UI{PKP8uHk z9^Sp_=dSJt$8ByuJ9b7$f79N9Gv9j7?)x_NMa{>${d|X?r@Wt@E7szkWzq=XUVZ_|JnEXZ=1o`r5QsODZXHtJ4Jm0Y7s;#M;`8I9SFPoQr@t*9(fzM5Yq`~*$>SUEo$|?At~PDR z{=Iq|vX*^|`E4Dwv++5pTm%ZQ$yxQ&SKjz}nzey#?le_7Mb>$-T|@l>!S1hl+w=Z# zY(|uxv2mDS6bCfYZ*-GYTeNRbX*V&lyFN|(kNT|&;o+P|$|qVIJK0{+Z>_~7?M+cF zU5Zd%REq%nB`}O6;5}ai4CSl6wGAP*#jL;Fl|H<3gn$0Pbt?6JO!=S4RS&(E9@ z$LQ~}R6_H|>G%JAnAn)_GK*HuecE&FxCizFT!viPH~4*rE6sKL!X7qj?>4l?^WoKh zUNPPpy7fMK!r@Y}r84v8c9?Q1`sWioYHNwJ7@4G>CRktU$@ho3k#2&1^*_GTL(7L$ zto+4h(L;KtXF(@jkNaNRP1FalRg~hk3tmCK=E}Xl8u%!S*w~wdv z)Xx4CiDV8~Wu;K(AQ&(uNTT!EKp_iI&3v9Uhp@}YElCoA&j-j?OK}cCV`&7zQ+iey zrWMxi1Iq4YIEhcCGKj`6BSoxh9AFnIj_@!>08}5cUpe?odr@#NXu-QcWWZYLuN#V%u)SuB?(uDS4JChEwD0U z4@EgKobvi)c-v!Zl?~g=m>T3fRqv;M3sZ_S#Y?G4Sa`i(1j|Pv>F908*TPt9fe*Si zh_W}LkXW0W1NPMh*(P#;z+RDtgVYaDeoeLFkm{sdVer+jum?FI@(JIaAAhjgv*Mf5}2u^}@p_^TQ+4#=cqFju@}=87&T zm;8Ybp(iwqW5~4}dX%!YB%{253jVCb?{b&ZznEa~qna?O5kjt&Ak<}130qbq=J{)(RA=p~?eU(rt-)wE*X_9=hK{RWfo z1e~oh(7IpIZXAsRI{Yg-kE2U~uKkK0aP{_Gn z2!aT1Z&bBm4CY^I+VC2d_C?(VRdHXdrtqqR-bvCyOL&cso62?%8s>s>z_$$u#vh^Z ziZYLc`78Bp*@XnD+Oh{A=2Jy)%1%U>WfPS9k?Yix{_1HEQwvpXNBNRerTHD=r?#A4 z)3Y7trz%P*7ka@bmhn>sQqo0S!wZBT+V;cyx^z1XU`w2z8k_0`XwN7#mjLgg5U>FK zM&rJS*~7)||CWOs{+{5^lGco&@|y7{Y0Y@shVw5}fHx=e+C-?4?-dUVMT3W283xjS z=JNTI%$J#uGUH#UEHjUTfjpCy?{Zg8y1i5%+`$*hsmgdWF?G}!Y`ZfcuZO$|GP5I8 zfNaFu(~6r4$%9a7#p4Uff8dz!p#J}7uR*_6XZ)>e(2!9#I(>6an(yL2_pPh(fA=Ne zzr;EmZxYKl+d=SiaHD4zsyiCS;DKd}S@w?Os()8X-x%tia326ycR!XTt%9*hV1b5) zuCl}(7`g73IWS^Bk6Pxy$S^oC${6&)kbI=tA0Y9yb5j}9g8q_YT1CT|YP3>Nq?fB& zT)t92$qt+n(OdLI#oC+nMU}!P5d~*~?04%O#8DagFePPe(>oAEGo9P2{~g&*4sFv1 zDkEhY&%WFBj&PTkXgu@$ixeZ>JSRIEX)FV#EX`izsNSw$t{hr{&NasyG-HQehn%U0 zcIcCpPs7Rgr@M6}>Q1UzYpxw_*{Ru>a$2WRMal~P!^)se6b@ZVJjU7i&^l@l$-xi;wqX9OE zNnCqG-%}aSj}Xfp)%Ou-eH(8Va&GFVr^LUY(mQaBsq{?f;W$5d%A!ymX-?{AVT|ef z-Mdpp&r;wZxNNi&b*J>hRl+For*ry-N?{OXXG2@OiTrY)*&IWIa`gT}Jk86|m%_?B z3!oF5HrRB*ri1uGG+-eY^q>EpiG9>}+4%T%!dQHk)j!IqXeZn3cG2u&1@%`CmGEOxRKRk(C-_ zVBI1EjW=_Dww5Oq>`qPUKVZSxcIo1#QAKarHS5+P=umEbnJOcp+khuxom!6~2U)o@ z1_UZ|tCm`o5gsvTnXSSr)T(344lTBEMC`~AYkBa)jn`%+<)mB7jwdtAwVfRkVJ-hS z>wcHRi_}VMIqJ&(-|YUFG0s}f`8c6^-VJ4KC2}|FgYB;U(X`jgv&EvA@7e;&xT(*x z8#O&=-~Eo2efXBoh)7VGs6$ULbsr1qo%^h>t@Xs#F9>^#ItEH>6AFKrL1T_Lg-axxDWLa>;$!~`?Dw8Wf%TsPIqTHNu*)(N$BW83a5o6vLX%E`Mb zob~z(+epsTuADA2vj0aRN#Dg6VP^1odlxJhUDCa`q>e5iT|ZU@smN z2uiEVzy0Vc_H)JiRp=|mTMS_E>L<>0H~6Uk)@6P8cbR^J%i3s~o~ohGxE9>7$f)P# z=ih2nwo*j3YE5b!?XbwTUP`l!qtzeYwG5j5V&k|81$KvWsf@Q_id_@scEif1#a8mU z$kT-e6`Afwvo~7wqzh@F68riXg4Nb(==QM2ZemWLVXX4&G_)cRF4UDOgob`mMHtCsu zD&fA=NE*wluc9DnMN`>noVijotG`LD#&R>fBq#7}3%OJ&iNI6cs}xq@g><3~pc9QP zO_8A2)QpE*Qr3yKfPQpf8R>ZSOvo`jDIe4Hs+U4Xx{9J$;=PwuE~(Whwk^k1q;sJz z%_zsaI|q3<5>P|UsZGY>e;Kr;Wy>QTW~7%k8_NepDAbgdDEjqkBy+CTSfyb(_ol;N zydw0gjKx&F4ZvJEeKRAsIA0Y+3KW9$%&BqE&1$PbsZ@=f7|a-3=Bfk_iYWu`h^+1K zjc)|njLS77eh4kJX^Lhwp#`f+gQ}zRWWR1IjV=PJ%UTr4vQ<6Hy-%y4_@Bz3r2eTa1Nzj3=sxP^&YoWbVw1;*xy#YUy?ogOY z;{tTV58SOjD=Q3K^^MqqBBV7_kEd?~fjr8e8dKI^@c&*0?d9GkT*)l?XkP;W0y{>( zs=nV8UL}Xyj0uE!Uu$e5!IBy!X{0ra zqp&56Lh@3a@G@jgOOWKZ_g6#7`BO{TxqV%rO0x>UwO0I?>aF3j-pMzj0`Q}&k_DW3sKdL$M7Skc(?(Y$Q5&p>TY=8x=HK->hX~0P*PVX ze@zC&eckxUu2at5Q$d9Xk0A$%+2!W zz)Aoaa+`A;x(w(Jhm?vQTup7)1N&d{oqHQUTb9hSyo}cX-iYGo-u74amZ33#rW9(r z8u;e6L2AGUdNAw1#Mg2Y;kux_(=ea4hCRQtCYK&nGprOEi!-Ym#ur*^|H~wmyjIuX zS8-Js&lq4N;uah5%x7UWo2o(8#xET=*K1AqU~)cz-V1SxJX7B1A;;ep#T1ugZh*oh*Ay%v!Z|I^FI*5yg7>X$o41Q>sK_h@8 z=EQJ=x6)VEY$vxgsA$j#gB`TDP;X;J$`U~^?Jcc(b4y3zhp{<$Gs3W(jt@7u(5jIJ zSL~>u+nxy54uhkzANDeSm$Ay7U~r?Mn$|knI?Aw3h!J~^He3*db`(Cw;3*s@U;iQ# zsnlc~alA2CiAyJ1eh$>n51%v(5POd`CRdzjdiAsaRz7H@q^~gUqzROP5ZsuM)*IQnVwp04N-fr}0h9NDX-q@0FPrLlM;L_o`9n;DO{%X|{ z|M+`w{RT@a_*=Ef^>-Y7Qpq;AZta8R9xbdLdg0QV)U}%{K6z?wA30fZU~ zvvyAC`sw9+RYIo)g2wt3&v?VpTVTjj0W^Ono%Tl+(PvFHj-8oB1A?HGBl26@kq zQv4NqDkk;;xy>^8BzP^*dFej}m5g{%ZC>Uo^SV^Kk+1*!bJ+X2zDZqUyDwB-yQGPo zJNW&pTm8?gj^rF#llLfOPREcTL#^GP_pThgZHc1T^okurrd;-IVIAg%_&j)^oT+A2 zcK0s%*K?KUZ`ZA5b=$>#UHnxE%dJ3(rqPOwpI@4-<@t5aUd(*Z=;bftem>t~dDWq9 zG>Y>B&IJv#D#K&XG~RmQmuLrT*>8+uYpHJS23pG(Lz<0WGbikwwLIQ$Z|ja*SNFGi zFLB~&@;>=<6>-pPLqoxK?deLh`sYrd^aitrDeob_*eH-sM_)VXLz_+8^mL$P2=YEH zJ#I%n?Ze%;iu-zsLF;MNEj$i8>Lz+@HaLG(amR1i@8(uMG&KB+YN4T|TKEgQ#Cufh zVtG$Ge_@Kh)(0=YwymV8;A$F3yO~2$W!_ZvWd319`e@K!nz_XPowxz34G_L+3E*cLccHWM$b?TM2INMroj?Xtfr`yOS#*O<_OAX zK!?rJpGvXTp2e_xE1tR!!|#Mw^x7x->DzUBg^t*Phj%OrTCX{ zTav<)e@FRwIbK%-3W8Qt!1M}IU2l|Q5uc8M+HMa40Z9m_MO5dau%6PLLjBbb$}1Ef zs8*8o7+okVaB#FefG?mE-n)sF>BDs=KM+NvFYyY(FQkJ?*hul?7E5j}w8AuA57rW` zS$!c~8kk&xq&QOhGZ8rfQhv3vn2I_CsVi1dC~A{$tsH;29!p4XAVWDaM?$Dm!eV~R z5#HhqT3nS{P+0986G@&kp8#s97O29N#jEmNQZTd|)i~5ahPnY7z@Zs3G!IZ3hYnPQ zQD<(D3djY9fZQ?(yQ`OSO9j*;j*N{Qw-eF6wk1)nU5#_qsiRToSEzCt$}6muSty(- zRQUvDrOZ68ajcG&N_FmaQ?a__bz@Trl@fh;O~zbqB#Az}e)X>uam}l9iZ~^d8#o4@ zH;tBJe)uk#;X2V4qqYdWK4PdN%n_>`H8fVz>FT;4$@7F^9Hl+-Q&Hy*U0fJPn+Lr+ z=u(#M=yb(sP?k#$*_|?k|KIxTFn64%G8tP%IW^oA*?H%t@aT~cFbswHmC;S!8D0c~EX9>G1OIpS6kW3QxT9&j5WN(rkd5S>NO10iH zrd9ZgV=frpse~4kdCdS*dr5n>xZsMxO({f)K#&!;Ib~fp1S)IQ;aPFxZeSmPLVB6Y zb;##Bb`EV-X*#-l13QOEk!~756xLFFaSMA5ST=;)hH^p*h1@py*-yia>#5M|k||_J zU3YqEUT>#nud5Vs{B6T!LD{SVMeTQXqeKUzS{#vYFbK+~6)0(smpj$4H#&$JcMP3a zpNV_CX49Z{-fq-$gSU>Bt-NTYtM?2&h0&DW*83riNWZS5iVv`97)1r2ybkiVOCB1Q zVI-0Jon@fGg~K}0@3FzrMrb9LdurGu2u8I^u+sBgz!v5t0$>!jF3bWYC= zot+rS-nZ<1+DsH)7(V>Hac$7|*^*4EIroRC`Vs4>^`C~|gz+@H+{4oqd`EnEyYi=A zgEw23?dqKmPB*)G=*E{-_-IXq&69JcSXa@d`#4=|7&*^;=-STm?GD|UYIPYoZVK6H zyE1gIwfu3BXX=a5p6#vW@a+7G^Hx8+D3?prdR#}j{Z@@U8*77fQ~mWfd|U@w%K?4Q z_ULr)^L46Gr@9+`&e&yVx2SvDH9uG0n#%l8rm#eNmC5wR5N)^SYR!-1lY&wy#oTh3 z;6m|LE690)tG_jPxLB9x2_aM6#F@6nmbU+B`U|gIp^~&bm!iwOrS-Y1Co@G!(PcFf zM+IoJ@OZp{5_k(dPh55SHH!@ zyHmlzonGJ1^_kB37%h}%)T&6+*`*pK8I8pSv$)=9ELBK<{;v>4H}quqql!M|rmios zDCwz99c-G|;s^__{8*Rf-!d)#vptx<)o=G(7f1hzqWh0tU1mha%OEJIG3L%)c(nM6 z#=5rAD%grfhd&1eThZt!#;#Zqv68Q`o=Rv)@Mi&&XQ1(z`Uf0tPlxi%28x_k6C9e$ zElz}_wRYmdV#aQNA7t16o2O%;#a>U_Wh)>3n0TxnwJdJjRh-gWd>rPR*8Ty7FKSa? z6YO(N|C?jOsV4@6IV}0SZS;a1FLLQIvWO^UIf45{&iybW1uH###9Jkd@4q;=G+Z~z zO>_!2X4-t2;STL7W^u1nDLkb77Y&p`cnc@X*|!m*K{0R2Aj@i)G0+|klNLBykElg8 z!i)%|LI%{@+_mKvT+=W&8c^N_p9J==I?sSIPKiZiBRE$y zp|TawYg2{dW;0|InTU`)7CF;}gepdVF8AQFG$r<A z;Br^)`%k&OjXDZFx#2*UC@Dvp(j$tWJs1_4D{%G**5ZAiK;Z{UDN@Twx2t*>Y$5@= zW}!CP+N>W0Hb~{LC_Vyal$io2i`6Z_y3ifzL2&b9TOvb3Ysz+;%=5NrHno9%s|{ss zMf4<#kIJH2eN6tE4{)Sd*-lais`J{h3^*x$;LstF9u|RP#qst$`tSv0#}3lrnvxx$ zt?9^8zNl+-gntBu#Gxm@PH=we#DgC@L$>eC-9$n*Z zSLx)oow`D~*%kV?1`b~KxTS=0)o95nCiVCOm8N?%5+THJLdWFJqu~`3qfiudhek4t zU!nSJEF6T%bq)9hB?3g|6mSpLeW*&+K0TSjsn*^i{u;Yp&}8=F*+~jT(J4}%8SQF}^!^n1T1};7_*zNapf9H4#WJ0;-}`t;^+RT0 zoj8*ct09~fhmV~JpQhQ|$LS&tZ=H>BX8Sqfj9WvQd4d)wRK{w;?JdIcrB*YQ&i|Cu>?N1cXil@tw{ zhH}4^Tphi3C0syO%IfF~C|qB~)y5@pJrPvE4wBTytx%3!!_~%VYZQu|YvhAYp>Sa> zWv$=iuUf}q8dJ_#Pt*iuxApu)t=1!`aXmjqJr0G*6o0{*_~!Bk=7N^b4wO!&*oZG^ zBOgeUP0U+8=`8B9TDz!OMwG#u`8W=5h7K6{O%Aaz+ove(+QLuvY72hB84Aj&j|#60 z*jSN3gekm7XCkXYCXaAcuS6k@TrXl2S$(|KnypZ{Z>#g5K>&LVvDEI(f(4z&Q(MS|ou z69FX4Z8q~ZI{_V*p*#*f0`y9T^yC|b&OOfI?R1WJUYA2n0JW2$;T#$VXxcf->yQX{ zFm_l5fPHcsqk;y=>lnWe!CEY9d2%92yL0TsC(blMY)6AR}AyffLU0Ho1VF zWOHvhJ4$Me&V6!l&vSSxB!q}Fs0*Mt4%tqDyd;O4Gc`%37hnfLHbf z-bpniYBvU91>oBT2E=lobOxw=7^F!>s}&b0O&!I4(-L$B(A5j1yLZq}{TedDO2WG# ztORer2#OzuNthX1)Ll>>z^i6JT=2CD8B$%_8iUlw0AJv6-m`eM3PlwqRY6~VSPdiU zdAPN&CMYA$gjJ1(2>)SLC8c> zDj0#|(-_lh3kjwfBTev)K)4HSA89JC-iTJac&o@4$JJ6B%>#hH|H>5zy30~(S&5Os z#`Q8^YuR`(fi0DSE>m(F_hQQOmnp5gho96;S>ZBeAJ?LQ~eQcW>hVH;(VGV0kh zUD)zKwDIBJW;SX*%-fTu_H!tl-l#M+y$^-9kBiPi2V&f#)$R&AS8od0W%i(Y z{>6*a=ve57ic(Iofd4b?(Ode*~unrA$!%4}!`5y_5W~^f9K<&*BO<;cY6C9nrw;)ikujpwlZi2$Y|>)B>vi z7}&HUl&6Xuk|BZUPE zTNG^w;i2%2A#W@sHxA_vmTl0kE95+UvNowy{DFpZzMWDxzk-|3zq3Z`pKb2@PfY%o6ju#&|5RG0e+frT_A;+C zxL@oyCrXCx)s31CF*+OSDgm%2eM2v>QXP*sYSP`MuU=;Z!vO=WgmK_ ztWbd>XByqb)-#N5N@bW_nlj7iZA1NM8O`GU6yqgWB12g-BR%eDa-gkqjn9#1F@2t~ z9Q=iH<{7=5`jx;oq&!Ot1RE1&W*JMU*@UrCEIA)-5isCR#wtp3+>DbW=-5E@>}r%s zo#Nmiu32a-r4-7E7Z)4r3qob`SZZ9TEsd|g4E{>V33Z-5>)}B6ml}0wkn|3R`=q;j zi2lorU6fR12Kp4*n~ao}W>g7(Q2c2hSX_z~=}#rnjgA14B0cJG=g_I?#?$1#(&(5M|a>W6>3wiXndz<4Opf1uWSV>)23>m=)Bul zpcHDQ?lYbeBE-}CjE9x@oORIXB?x!KO<6`K8=w}pFR z%?rlGwn7PV&Bbjx-`37#G4VPB|X9qGU${2U@58m9?eQ*Hb%{$tH* z(8Fw5!@9@ zUtQirN1hws;-|m=h4F;-4xg3oFgjTO5*<{gb1#j>?AU@0e8NlVK;?>VW_E*@;O^DM z4d03z9fyb1CYXGJH~Ubd0;7+KHD_xxwkBh1G4|z24_J4aTzZ>cd{tmvsS;|63tt;w z2to~-`qnrWiA8MR8U4*{tRqbS_*Vx0=@~Axn_7|V$`(QHjU-l7yvNuHt4VQKOcx_Eemmfz4--&g1&H z-edZ_{`|+5@h(GMD_1-)CfwS~w4i>wPMv=6FsKVf=S~b#TYH(~lYDa80dwUtrH{Wz zDSh`{@4QL%eXbV-SsfNa8#gay*!;sMYx#2x8{?J8wQH>9zhc_fTxRn);gl7)=4sQ# zqTkW)Y3XgxMrIN?&(a}`g?zi!7?@F6*mZXO$ z_4evN>h_CA&l^~MD;7O|m*HJwHz(}{XK!fb>RV1~*WI?(7Z^()==?VQnziiEWxvpPTHM`N`o>?{dnIz2V@4Wf4EJv*!aL)t()NAZ%dR6G zds9@uxx>`a?$9gKmSmqg+;=)uZ_-whoioIaKbWq#{iD^Ya&TyckS|uN&kAO>TKW(1ix_G7=P)5B}FIU3Sz~u+*cW=cgUfSmY;8x_FzMHy(pC5d;klqAE?1E5DOf6i@Lt0|(zn@R(rNLF<`IntG0 z&T4K(z=qTdg2m-t(pU)jP=1Or*3ML5ewW%s^!(C}*~^yklOzLG;T%UPip91{_K~|N zA8f|G!vAW947bg>SNPrLxVp$MERB$g$S+zj*@vH|uh#!#8q3pXeVS?XJGYfkkR z$i3ZyTXTxGR4A&n{A$fI80c5J4;8Z*K}4Wj_`QY8I|TX z%9dDeHu^D^Y4jwMm6X70C&~}#P+yb3x=~N~=~E1|W=U0(P~O3ETluTqnU#uM>!U|z zh*Gygc?!j_v{%9XFd8gi?c=04YIRT?!V4&qRVAWI)fYB13i$;Fgh2-IfHKFO!2Xo? zV^t}tdTM`Y1_sc}*9fR*HXZFiL}bTHQP%4B@fbF_eu6t2-&tdQj9wxz>wvgKn=eDIa!`baDV1_i7T}*uk*=(Kgvi|c0ms4^(SrVVIU2cbR_ z#-^Q={ReJm7N+OmT?)m^12m{bq@V4*ET~npWP6SCAs9;zNk$a4`7o5ylo`o>E{H%^ zN1zOkr^_&;1jpkW{DpCCM$N*#lLFLtqP+76HxFr!vUg+wtCNgd!6<(?%FRHPkHHXj zOtv|7Lm>{UZ}jOi7=0dx_K0fD4)<5zg9sMV!FT|JPbw7kPs*094k&ax#ZR*pmX{Nh zKihhmn<%e6%}0OlG}9IfE_laCW3gDA&HgM=|aK z`?_7{SZ~r=l-FM5eZIYjEeeIW;<)HGu%TVT-1I9C@E^=o+oOMFs&S~c{lUN_DZ9U@ zvHhVjmXKVuc_Ot@+Fj<+6}rpp?k9~h`75i)P;EfXIMh#uh5}0D&@vfX4QMNevSsKh zpnDurUg6zquP_sV>yPL@Ooplf!g`-UJ!NPBpwS#!AVX<@Hgf2c3|#<}%b^c4q`Jzy zWzxr>ud-M987l&+&7tV4$QnB#h&39@kvVdsMSxaw=!guR0d$o^uVv^HAT1@0!!0e2 z-}YG}k5LJ}CjGV<+@TQM4e$Wo8tFp5w4Mhzjl%~D!N&k!;P6WhH~%@&r~;}Y*F;P* zutq5TuJdaud0l#STH#hQ+zD{+udOG`@GQWKzQVg?I1BI@4v#abL1;DT=kY-*fJiZ5 z?b-7NKVbmW!NDXX$>V4y!)*W~YS9WO%J3Ax^S;7cWq1$ZV_)HWHz;Cf+aMLtw-QQu z2^hysenzjG*o#oD@%Sbi%1}E%u^bwIld^C87^DJ%r9l#&y?qdG(xG}V3cZI2S4A9Z z8*mFdnOkx!PYV>fNVsy$Es8vME=UDr0YhLfPQsfG#ml!SdD1O^Rs$B?iKx+yM@=ra zEx8mi|AIgDXxI%@7V{^mgHL(3Wh@uiliQN5PidFO+xg_-y^8D!yWzIlNXEJV zi_4R&a>^+(HV;@@o@8-U9zc7!|_(rl#L>vqc-*s zeCNPxM+bq~oosv|M9qRtD=;4}XuFD0Y}0Ofik=l`wy7YuQAXtRzOdF)DeLBQhofew zm0Xe9Kwz#&HnCPD9)e_wO2{u{5}VF@ffJP)o==huYjHkBp4S#rZj?WNk=v*7HtYhJ z&z15f#>VVzPoyr2DWAy$ikON;E>0%7DLLMe$6;auv$Xl$;p5IjGvUtHpscEQBo++{ zo`$~H+~M}GrHbzqmPL~NOJ~yBiwmZiVr_)G^l_%C05+xkqeU&EX0|C&$qNQ?QHlw+ zrMu#;Ii^ZVp*`i*M%2`bRHV`nUNbY2GEzWdBE(&-6DS0n$x4N6MGD=uLbf8kP*Tnt z(Sn%q0v38TT@J{)Ed^v%k_|~SWkb>(*^pFGHYClE4N14DH5iDW zERTU4P@xm=bQKDLazz&8KX6crE&ls9ZHMru7ot^HdDWmu7bl1R7_x@+7(Ap?Y|N0} z!(#e$?^Ji-hyncu#>5WkG;mOl0Yko!dXya+Gx)zih?f2jxpZ0hCif@b{}{6R^S5%= zQj_*uo+-(Q^MgvoEGnHpcjBOic22Z^?XNm_}bq=bYq^A(e{ilUI9uSGjw zS<))1L8>fa5lo_d_j&FK6CpBPj)P)~ENK-hA+a}l2&mLSZ4|Q1(Js(9hWh! z;-rir(x2*<@wyG-Sk3wZpbgRixIju<{R+51g zGwi7TF`Ueqw8yb>fNt$e?;DS!_eV!fA(UO_vXNV+wp=#Zk(gggM}a3y+sOX7$wbdi zn4G}R{q?|?S8$#wvQ;emr0IrWqK&7}`_w{>nw>_YsfA5vTTYv<3*I#QyvZ!4oiROE z3O=l`3Rs0~({#aGJd|xhMn(s5&jnMeK!08}xrkjanZ^jT`vSx#zcTU0uO^fD;}z3r z0fAGmubP?*g1=b*x~Y{QY@x+BOu<5cc;D`Qh&npu>sd)T^$Ej`$hgDo}K5`!%*{Fu=zK+GvHrE75b zkhdlzRm9TmovED-j-gw#uEUcow2hru|Gnv~TJYLoG~2LWuA9=FV8<3ej*f}BJbcqg z`;=yXI05D1gV)(5A(Km>qo*BPGdZf0R!~llL7u_^YGPw9?^P4;p=3PY=kPMH$0sW@ zdy+32k1@duyRi?IEo#=$85^^mD_hF3ZrDlLipt1`Zm%*|)8HGZuQf*rw)`7_n?3&m z_Bxo^7x2`<+(*OjIJq2m^AtxonhVtUO8e-|?(8d_U@!;Uvai7rF%M&3boWGuR}AL< z)~_`2y|u?aCaK3oCUcDIfBg;vMMtxFtx_l|?r<|Z+BmWGprcI>N2Q&k+J!Qoxf^I> zm*$SNJnoj7{yJaH+m2m_qf1gdZpmb8Mn_%JKz=(jse`9^H15@}p5{^loNSAl>$$SE zExQq{Yt~%Hjg}Ih{eYt80F_dxKraHF+{I14X83y9NF@(3&(GXJP%3#{Y9lA;as$lZ zmVO;##xuIwTTLftnH@!&l4kJVZxLfknL`92lkn+AHD;Ubsmp5b_4JYzhnF!gqt#*j zIE`4gtQjH08NBJ0HQsA@t6u$+0%&ruc{EiCFgufTi1`ujvk+n~DjLh1-2}mw6+Fcs zLUBgg8{j0hL0IKXvqn4_X1?I`w`ROv&=Y>!!ZxOoQxUsvJ99HjBzJts%y`AANF8%p zf_S0Ex$Ztu{naBHw7nXb*u-jAE84bCVEDM+zE=BN<5SHK&Hreuk?y(w_@vr>~jJZ3&C;c(ZESlAu+mu0MP*_eiwWp103Y*=0^#|EkvVtuooaofv&q&&vt!^=`x+ zx8$5E5oT>*>)3pB*wKgkt>vh(Gv>E7RZFhb5YQPDaW^tSyE&|jYp-`=ga4rKK$mP^xNMovPrL~-3zvK zxn@#C|8VozyWBg+AHVE)`(4HG9=)D5?VBgo+t$&&$K$3GCOivo9(3@R%Nq_I_+Yzw z%cn(YeU|?9+QV*gQa@(CD_s}%zRO!*9ru3F{7aHhpO})SSJfM~vD){_w$5MdGj+CF zvMeUVbh};Q)x8c~t+k%Ri;c}4x8X|)(Gwn)I=eG`(IubAzz+4%Kc!_8Sl=l~IkOSc17XT^g{sPbjl*Y`CmewIfr5Rcddf^Zr z%)_{f)nVnCO-te(%8Es}(?FDM!Z^pT?mBE5voVIeY?XU>-a^I(=!rU>6Y};3%7L;*p@Y3t)UHVO_40vB%Aec z48ZEPJV=PG$~&}!HK+smRK^fk7V;|{koOf#zFnJoX-A^IPBhqnVt6=LvJyc=4Z0~5 z)PoXXks(Hutof}cJUe>v+mLs>vP#pf7nJe6nRU*Kq8sI@)aE`+8J)kk2=tkZN_hs# zy1o+aGi7A4aFxC=L-z$yHAX2Vm)#G*zQ4@I+_s5IGaqKPRsDI3G?pK43xI{ho_;`+uzTQiXkBvKF>==1Zm?Td!1%Ayv-d z*ARue#4F|zqxX_yq7I;NY61T;vThGjX*?FC=Um9CBPQ z#jZu@5WG^6Vm9Ew`hZ%j=K(f@IFtxz29{7zunX%sbO6vPxz!^My#=J&z|ZJMwKk!z zk{e)?k)c)`>IA6w28x_m)t>{i04$Q*?BY-spfelz5T0=8Js=HY<8H}SBaijeDXk}G0S7_^Dsrdf1o z3r@8j(9TW#(k^l6CZI<$1jEW64@5L=h7Msf9}pA~42lHQ32}UE*rPc#8PJ@~{Nge= zlm+O_W@*^APauCnv|maq1oe4t!9=h{YOARaxy=?zTaoCmhM2g84`&(0@56~!1KKJ> z*&MnG=-w83*(%Z>Yh0K%c#w^a4MGOaEM7dqv-(q{2|0nWzA=)Jzfh$q@PNnI6KL-nCzb=9lV4}Gj zS|Gk9m`Ak~;m4Mt4ZF;>5zLZ)$7zhY zu4X9B@%gEZ1siXH6_??Y*(%=3HjC!mW}zf}0;k)pCTM8V zQoUYT(}rq=-Ly!iipMs@^7gKou$i*OjMVTjCEkb#w zaF3bToalsFZT9UR*Csc7YM+4h3(K+4KBR$U#uFNnWv z%jY0Jk!1tg{U*!ake|tN6y)c!+zIjvS!OK2f8cnSNxqd(wKi_N?c8OK;%_VGv zKY7=q?wPYSv7UIVBVgd=T_1}0Dawwt*-&iFyKf$BBfRGAJRjri_vq1Mv!D7gy1!2@ zPt0+`BO3k0JV$s)PQRJ^D`Pz|@#GezX!{cm_H1TgGr}Wr({JY8O67XQ8k~ljZOn7? z1?@*vF#q}oh$^1th`VzDM7LoyXt@JIRFoDc6?MO7){8M3OPnCQqDYO!EZ(uTAd!55_?Ls_v;bzA zaxU=OPabWtr6MIP4U~Ow@jnL?r#u&nck0zWY8vZo$)r!kEe;g!Vi`;2oGm|4VwvjB zG$28*C7%a-ZACAgWv+nlXsfH`$^ZFnQcB~JzLXJn(~dq=(A$f*^%f5s;eq(xWVsFP zXL&l55DV7y*{huCv&FK`(4q;8#|d}6hsTBeLm8>3dYQ!>H_L6ca9_;yvTRT)KZa2k zUyBDqzDN05wz)QxkD9}tGW=^q)%`5qU}o&>XK_~vPs9<$EI%oQKg7?)E!_p-cfzMh z99hz0Zznty$CtNUQwop7P8BSr)xu+OY89wyg(oz>XuCof2$Ua{XS~Zn(qU59jZZ(Y0M86H=6N-MVD~==)49!p5Mt>w)^#p z12dF!Tr_j)74vM_FKgxCferlY?GHKgu1ay;(1+b8)LUIWbVt^J38^o4mKb0$4LUI8 zPQAMimu;EiGHB|XNlSlw;J(cWg=ysRB+0`FDPS`R!zTCtsHSZo-S?NgN#TPTyA3yLz=(Sx}Ivp>v za7?i}QSI}8bga`r5xX=!*ymV6*6g-aWWvHXt$M{@Q#H$Y|9ZrOR@EHdrR1n)4Xbv? zQPp!x-);v6bZJ{ZV){6*-)hy`8e_Lcy(;`Chm%|0Io4hOHe9p4wyUG=mGHypB5jMT z>3Jhz#FVINPkL8rIB%`BL5pp+xtT$y0z6_$tPGD^w$JOE9WU)+JQg)!21Yv3>}60B4SELk#tytN z5$BY9z|Tv270*mWQEVK&=;m09pHpuy*qnXXlf>*%5-%j<#H)kv(D;|J;V6mg-VS=h&$ zOXQhnxh#cFT%&@kIOYyN^vRb)@#>X21O0WaY7&Je_Gl1gCQC`9<>L?M>i~(9eq|sy z^hvPN%WKY|yr>v=9ll(Q(eDV1ub$KI1i^QmONY`3c)8bIn0e zW|U^`(CL+~`&0erp-Ut>40W?I%)>gr^+SL46o~NY>@pLslBbWVRVbe0HBTYJfs@s+ ztW|=Ua=L5_()g7{q(fQB-B4&kQF}!H)UDZS%HKX*{;jlT?KlUz(1{ArK+0Lw0}5uA zvkHqMMNZl8?QGZPC(9zCIu-n6@e!(t`YD#XYGJwLK=+5_K-ZLSLg6wU4X--oQ-N~K zyBQh7f0rbd(RIRiHqro6iTuB=x(O3OWeR`1E0hdMbB_?FL=?6!A5hx!!`QYf!WX^l zFyj?eaZ}WkQ{x`uP0?0aNp_=~rJ;29>mGDywk1G`-RQS&4*%UZXWu17?Em(SP^Ed6 zqTjd?^8S|Nzg0u=WrzJOgQyjG%bm*1w>aA5hbbtlNv4Tni=Q`=X+n3SqYg7+Jxpp2 z3Zo!Sns0Hnhi5k}v%FAF!zzB4vACGA+@e=G-o{d$|4STBDHl`*+Of>yN?q4DIqzI) z5&xe3I_CQ<`Nnz}IN1 zDLCxQdLmTu2BC`-Ou-v>!{Btt5}@(XA&L;8@K_h{$iDPt1H^;!5Q?Z}>8UlIyt*il_Pc|{$t+lUwt)-s6c#5B=}?c(GU=n*8@oot)F9D|<{ISJ zkR!m+hanh!F#q{7ONgH)!xxl)*oy2$8kFB4|KZ0iH@d^HH`T#hdm8#zX33Khw$#B4 z+rH3@+aKj{dBz=v8FzZ28Fx9#i}{R8S&MtXMu#c5W+^xUuJ&UK4>sreW6mun&AH%P zmyp&#VmOk(k)MFfMbar=JWbvh<_HUGGIb4M#{#Gpr7nBD*$MNh@c_zV*4>w_aHu4mC^EAX8^{vSovjxNYmsl_$=wIc8Gk&5i8JX;Biw27@DyiP2MPUz|1r%$ zx2&KDFISUT=c=Wz3Nf2oZdw8bf9__RHcl7BNOQ>Rmc>!&--L1+-G$do9uz`<`M_Pc zfp4TyTy)FQSP*_?2YND&ABkp%D&My3bGZ0*F+(Yr?ah+=aX=v#-eq~{H$e6$M!z?( z89$S63E%@5!cG}ARTsifx#f;!sKb>)T_%6FnCa<5i?>SvwC8mtDjjDyIQ!G!yOz$H z>u7q7FRmoga(g}Kb}HkV{YAq)%Pt$?s(9w11(_86>HH&0Ib6c$N0yOx?7as+%ucCo zb)M=GCbk7ldu*w$X79$!V*iqu*%#sV~|6}hxprbgt zZQ<$B%xE;q3H8jh;($aH5{MiH7?Y96!GJ{0NaQSuoDuN=CP?HAA~hLdlF0&Ng8_pu zw!uURY_N%MS64U4zTbW8zdv5<-uu?aT7%Bn6}viB*EzM%x+eiO>y>gjqQB$WzvRAv zR==*f9(7ss@>|r$-sZ@Uou_I}d4`-Z{uysA75f^`5GjjYzXHU<2^XKo6yho*< zVj_1krH#R7-MsT`B3G1Bo(5!?4>$4HKjq4cCOkNZ7oW(buJNu%HS#b66N`CCa$tVI zP>VLD>%XOfD4%{E5Ngzxh!*6FR=)~SAGs**DHFQduPI0nYr9~!R=TiGH>fJzT5St6 z4uc0(3JG1Xr*bMpOb(d%CB#)++yZeoH9fO3gzd~a0_|xHoH_inQ|4Z~9pN|PkAyiW zyB%Wr2^8zvi_h`&##nA{cmIev`NZ1f_xFTRF1Npjwj@mWh^0AWlzGYA{twh6hG6XPFobSsKVo*BQtrs0x2V zo-+;>YSTd|jcIrb9L4lOa55aMRN>rXFxYYj!`81-p|6BqcL=AONH?P_+__c`RovPv zH!)C=!|=!(rSK3?F47I7L4kmvGM%xm^aoDQY3Osta)-1i7nD!I=}O^q_py*CrE>45 zRHO;16nD2qxbb}|3_z518a`GztjIX*S02ax@d@c33xzH;*N zcK9KKVFz1hOTGZs3x!If&`yjeMZ1X(5gzhjiE=7*Vz&B$yF}Ou3Gh?=I}QCrDulX!Hx;m)_zR=3p4>FFN#Nf1&hV z$0H0t=5l1anrSbf;~e@?g&qKU!6CnUyejD)o|RY%MOAh0!K2g~VE}@WXUK3hQ!1bt z9NGwIEB5vSfkPh4bW_dr6ChlD4Dz_oD=&1P859ylKs8mU9-tN+8mK}e0fFk7u>+ z1N0Mz^bdITmIsW{;*uTJ$EZ+MK=nA(U4{As8p)wWDwF{Tl!>h185Oz==oW|GsF2|y zo+ETr!sD7TKtw*|t(FH|OM#U|cYT72_XR$jz^OtaZHE#bzS zfbV~--SmjV9*^MNNAW@ET16GA11OHN0&%hD+3|pVL^U^l8({!Cj-xdt(P)Bt?h$wB zGd_Uwf&^6J?DrTuryg^hx@Wa6tdN51`#$E)jYcxIn6aE|A)Zuo8h?V4N3p@UB|V5IuRqD;W!T8i$qeuIp8NFYx0WPYU{&{R!Y#1+t4zm1=0u z;cpSNEExCLQ#kTIT^P92VSu!h(n8R^{SePQRS)n!l;7wQaJ^3+??g}@W34zEinA4h z;eggRPt83I%0eZH;*e&9dM$6EbEtz!`h4!38Iq6ZT|O^iY67KQzT!}+AD&NnJHL%E z0!q)PgqfwnoVP;0tmVyv@`fjvY|rp&ddA5rZu|;r{@hT}NKOw{MwnJ2Y3nmiDRJ(Z z(r438!1A7PUI>rpoEO6LxjHQifS`~gIG!_dgm9{)6J#L!W5g(3e?YR zLKU6yO8o5~_O_G<7ZE)^kd7aT5H|`b6xzFNDCO-bVxZYY#bema*}RyDO@<$RFMp$~ z5@HN@z$`9|Bkz)8H|~N7@=*`(k{?_!ZRF|f8}gBB{I9;4(X{QQy#wrgeI?#^e{U1@K z4~>0e_tSha6RubArI<2eYoWbj^V+7^yj;{}uFmQ**FL_?1)~@9ztlHVm$}wsnTsuB z>7D3KEzp9eEK82k|L(*?_%>8sFEjY!7FCNc>~#c%RaVE0x7hVs*#quc_`8d6|?9@shCBV z1}T{J)>StVqN|c|DhIJrIbB()q)xww`N$ipiZ9)SY&o;O_??~(B#Z8}rM_s9XEhT2 z^mJ>GrtfPa-Zu&-DJw}VM6)}I&UB=O=#D5L=Ua#^ot)W|-Oc55O1wEj61Gy^HewNB z1NChqMhVAgSsSq!{+wzfmc}-nmueW_s2zzKI`?Ha< zkOk$gwG}@Tj#E%OF}4gVz}_6}EwL3p_7-4Ib5EU-4IBGcxa)xa-E_WKqfCY7FVATw z-ZRj!MxrMjNfOPh^Io7qNIN735Ef?3(79cro8G@J#lQWQO(R4vDz#fQ%TWp9WGA%y z@rd8&S=^1DSQzyu9CZk}UXv`ccUSSKUOoPb)co|@|BB+}8gL9E=l9?F5|AsLwidWwBqv?D%7(|cl!{N?pM z#WMzBUx9w5_Y?E=OUi=zR`jQSWvtHfivFUvo(A?q!>5wO--I3V!DKN^FJ#HL2Z_`5 z!dG&ip`u+7F4N>;Vo_l?Z6AgSGkXoYdG;nx!AEjt?^HK8g!f~7;B1(&mg_-x#<)wu z7OFlR{mi1y!^JQBS*b1fu@^OaL9@L3xSOTd(0H@_WVjgMBpfByB883?d!yAEqs5Xq zgngsMMowsmYK{~AWND1J9Aq7IV652AcoMaoq>ypq7c?|QJV6K3L{V;@D)thD6Lcs| z>}WiW9LHtkI3NgT>E?KGYS?K&Zg%iuHu3h>HP$W&S`S1jB zy-^rUJ*J5hg>&?Hnz+Mw234GqS5Frw>Z91yz|ESP?E&v^y!drWi@;b#J_YJ$(;b}1 zRn&Bo=%CTF#1du>r6njQ)}L3DcK9z9QSK~pxC_h3lFw1%Y%w&Y^=I6Bmc=Sy|1_Pk zu@uy!Sby+OOP~KY{ina_bFem3F#p*Cx?b1R8=n=rIG8XVuLy9FE$L!$lk0i(ivLR` zp{g~Ed`C(_l(JCVg|Uhuags?Hs~E~G5+=&mNNgk&QVujUb@^WoG=|15l0<5@80Wkh zr7RX50X$z?gTLkj>&{TokIpZ~T>UiZmx!(1wc%lB_8ghhq+ogC5)oe7XXJ^?#Y+P2 znbsM~LuN__E@V72GQ=?4I#)9A$k|BmGH{)4ps-A_@y8oU9-b-QHVNnCHtWR``eOX# zq%QqiUzD@#SMV%T-A$N`H>2e^%i1Yj_m@)al-ek7lZas9DWXU}D?8pG*MiSDp`51zMK^*Q+sa^C$N@4_Q^rZ@S`#aZc)@?0Op zp5|$bS4Dk%np5?|;x=k`NVLo5BO(GZY?sGmi%*?E1=8=h*c^}5qsPS!>~iXJ5|`6P zT6$9KXH=fO5#9X~_gxt@FznBi=dOWPy#LCH$XT{M1US6RWM5}!KoCxZU zO)`{9tUCO)$wMxR0RpwVh>PQCIjd3Ll!FV2V!lC=bXf#($3|Yb$v0x85m#77h2jTz zSc9ly)eyDdd-V8g`Na3)9=&jgM&A_2;CcG$CSE0%srV0K9Xv`0{2)dMUlIKveh0As zEwPQ6J&fHv$4}+~2R6~eTeunak>_pEp+3+jV3#=_=w|l#c5@s5jI#3lBs|wg-4=@@ zru*94V&(emo5;;EAw;{-l?O90_7JR#2cs9B5o{9$Bbs5q&mptla!gb%KxcoI9~H|L z+ZJP=ga7i4fvoJ)jeWAQPqkC*4H6)Kl`H=4{Vy$q?eRhS53rUjTv+L4`#V47DZvM* z^m8#a#Sqf0^!VT37t+WHAr~UTkh9~VR!`^R zwVdB4l&=4Qwd7RSlhtkq_rG`Rd;@Wu`N|zFqu@Pn(EGNRPiYOr(A0hxTH7N$X4bqu zap%N9E#K>q}k!y-`d*_40w+c@Krq4f8X?cX&6LW622iEWPI0mjjpk+}?1t zr6IeQF7u0F34atDURh_nZApqx`DXs@J-b{ENv}q08H$d3BhK4&vgV3E;)*fm-mhZ+`^7i)Jg_`F_2%3SU1~3Bcq^f@-}=xp-VbNBtK8bZ zN858l_q7$j>`*8&;c|mJUl#74UVh*YnWHs>>uks43XdB4yjJv-71qx-9_n&o*W6#T zwG5u^Lr&zi3Av%^Bf5D!-8W|Wrif|2POZN$7B=O|t@rYr{kt`b?Z*2n%Vkyj@*7Qm z8oqm7#GCI@H2qY|^GSLBd(E2Ow085aQ|eyHKR)ww*OWzt`rNuur}2nUzT124TkD%J z!kZqLQtHHz;)9vhlA zkq17=aSk@io-akw$^0^V&KEtV2LGmPLNM0B*NTk>tnqFu3$MjC(b`6YVI{50{0mr_ z1FYp^qAHdD;5e9}*qM`#GP2@O1U8`VwXB6L69TXi0d9d`g4nDT!tR>!X4w{{)5&G& zU@dEyX*@n#4wR?ECh(23y*sX0f?0;0#n`0aT?cQe_)0q6f+~C(At~luOHaUCs$ynd zgEC&j)9?zaJXRBPk2;Ed%`zPNLrjCZ)Thn0(L|qys220k^z0x@8#J-A1@u;wYu%|( zcx-BgI1BBlrnzH~B?8Is+ry^Sfm69@Eq!2N^url0-7<0R2Jqmo$7kmN(6wY-^6k3>{ zgsI_Rx>b8xkR=Ct`cRm1M)4L|WLst%MQqXaEJ!r7yV}NJFTfa1DgGnmKX{tLpYApm zE6roM^~o=Vtxv~pKskljygKx{sT7q~#bHQg=7>2gN#QlmhJKLp@3nF`yN!c^W*jWJ zEGln#DEjdfb=cQo8V@VYcuqiJ>(vCF-}nT|e#$%p6D%`jIlq{Q zhyNtCP{<@^*NXlXjf|d*HL%Gl&Ba`mmi?b=b+N8X7@P*aCpH>r1MfZTt zWDn(87CHU)o0rH*#o^t8{!UG#NiD407G|ou7e}^Np}a6aOr=Yx ziS40!gWl`_au}hzPdGp)sUW`rfr;i2`k@4_4I=M$Eh3DS_c5PhEtAbF>mGHup zn$M!vvJ8ij;fzvl;iF^~djrf&S%=VGIAtBFfNEg#ugefT3s_j(t_o}#4S33aW+@6{ zPB%_#_j8{er(F;fQtiVK6msuV5SY^r4L&^2pA?s!>#P#Q6K3u^x40aPeO*pJA}gc+ zrmEkC`{0#eErh+fJgeE;SNN053UkM6Ry~YFPR0Wm-6&X#yfCR{QFPN2+ztAm1Dqec zyb3aNlv875Wfm-u6$nXRM;j7?{Kc6_O%}KHr zqNVMvjfIQ!puP1sSe!nPlKkfZdQ**vpZs`wl`uK5qjgh3+t~-+lD7%gF$H)_BIrV* zb@*Q>Oa9Y9ydSws%G23>QHAMk7wapHyMzVeCFdS~pHs$Me_#4&B~v5v4*S4P@}`G1 z>!Z^*DAa|fiuFq%N?_W3N@t$n)$}}M?tFD4nBbq=gnl0t>;opD?Q9DdLhoLhT{3_Y z;NY#Vq!NyRE}dD-upwF5=7k8q3jfI*lM+`~|BH!+^|p3Q36=1I$4LspZ%S#ryzvHW z1(}6pTaUkM@tYX)QJ!BwUQj?@SU_F`nbl*)kHvjs@+SP2tFjN?f-ATjpeqk0LrrJ` z`8gV_^6A_p|J%7eKGlfw!G6KGL8{9&Yj{|MPccP&s(J5Iz2pD4`-Ok1dGEiQD+iC^ zBA)ATpR#wqJAR-ckqyb#&%E?M7Nbl3VUw?3#%7Xxq*Z4D55Q+&tnzEoq0$SEmI z?1_;Apde|f^k;{61&NWuxH+iWlMZ z7|OVGy9ia^J=c}qWLV8E>>0~SE>NrsGDsY-fR`bAt+7@U^s8d%&Pfrw&8qJF*t}7m zvesJ0NmwBt*kE-N_)rGOw>Mg=n1m^^J{npxSBVzSY+d`;@rJR|T@3*=c*-K-J zyluY~AzMS`%tKbY5eKb=HZ5JsW~3$)ZAp|mri~Kc)J#K5l=7m%$E+iT`7Bcqy)S7q z%l^l$bM$|Si2AX_tW(zIe-DfLF|~Z@U$D8pXh}aRdK#53P+FD`ownXH2uo?r1?zgu zU7K9AwhGi1@&47{WpwnSb(^qUPR_AjG6-MFwZFAa7tqCv-&x~vIH6aqVP^JPgQ4gx z4;(v}dS1oAETtJ&t#-7r{;IX<|Gf>_?;3I{0Z!SOW^YecC3`C_XJ_3mclzFHHKG?I zZdoS_3f=X;>MX;SDJ(5TY5TyI2C6yU-5@u~wYJj>Byaf9nkzW7%H0g58Hsce+WnK& z;jCPi&Yc!Mv4$@E*%~G+BFE3xdM+QXNO|zj)~f6x&iV!OtBLgf7pp_Pmea;6*RmGL zwI8e^ZW0BDyE#+xJ!>e=+q`?$2wdX_?pYls*1e?)4@?LxPxtl;?28M&AAZ^;&iclt z3+&(*$vE(PPQqf@`p7zmjrgX=)+T8F)njXYXLZCW(fNx&t@RF+*=w)pQ*c>!Nr4tu zyz6VGM^Ajs?gg7$$i}ysT=c26`oHFhZu8HqxONhb%9r}cW>hLU{r%j-;|0kvuaQ2IMMHk#S(C_ z*=+AGH{QO|Bs?$ayTX4A=<40_c$>kg*G}y8&vv_Ecqg0p?)WyfaLkMN$e&yyO10c$ zE>x}aqQVt7XbWwphrLhhxv4JLmAb#RR!q77Yy6BKe{RrPOYS*HYLuQfF-p^a-y+@r zqyFj-QA@jdIxm`8?$-ud`oKB9mc!@9J=XN^c6$aKe^J#{(^uW;JO8)Yw}UFD^jqIC z;$h7VFV{up-}<6V@A_U9CG(hK*Bcyh+W!8 zd(G08&L_gpy}Ncg{ln^?m;BUz%6;bnh(!zoB61W=NFdKk^#9N;6z>21G- zYwLfVi`klZ|7HEJQrR*UmF2&X1WVURc4htVj$Nl~Lz(VdB`Vjwfx|Kbudb$8Gr8eS zQB`bV?g4l(!dCv}0cM5+A{qsV6 zcf)`}%!4_<40anUuJRk9-=eh92e5X9O&Z2pB7#2AoU%xd`(mWg2z8=WiMmI1d|LQW z&P_`p;}2Gy?pHe61m!OF1;|R-#&N5KwHq ziMtWZ;#umJQG8%S&?ok8U=Um=|Hz)8e{z59Qno)TjDD;j$9dBKTITHp_)G0?l{<)<8Lr22GCXB_AMVb=U^UtO{<+Dj2tNILL zi>$)Zc!%=XXH;1=+SFu)!tu81J6KNj9mM|F(5p7}8!ATqhMKH~nz{p>IS*D;od-FI z>K9)fo-v$I%ogX9j*V4ic|_Qk^Y~Gij>mw z|96nAFS-mIku-R~7sJa%RT^6Mi=kyZCHCnyA~CYde`SHm=U)WhQoQ6?pri_OF{wC+ zd)Ey=zCo5r7Tpi{A5UXockq9CMfzFAEV_HLxuGpd&^Ibe8I5gLij&Poc~K)<5xss2 z=KKu0*2MOkFq_UdwS{5xLh{)V)pekFGn*TD3De?i;H*uTGvaNpg@0)sZu!Y`mH5|3 zCFjh&Ee;GR5k}9O+oI}SnR4D3m$v3+ts|xHFRoSg@}uLSJN~%g(nT}7PWBV^XX5sD z)r^$8`p*c?8u7|WGcxAX3~U<|za^6H_=nUqkNu_Z-evcD>pm@mP8 zu`2{G_rjEJtsQ1`E5i2sd?c}8=)GA z9zgk}sFGkTkMBinMrLGJ*;m#X>3!b{4#n0)Umf%<%wz7(h08$s5{iM$xnl`fs!FI8 zO@T6@BxlB2gd@CC684$0+FmLwXoN&Z}Q<&9#2ME?Wxq2$IB%vQ&S{&p@Y)zS-d5u$MNQFSe z@c{*$iXtmqX&_8zxt}g==BaF~m{ozYzbPLMvQMGMj-dKWaYJ?dCzg!mNnLHf8`KGf zj0wdvHoL%NViFBFjdh9|gIs4WtUDrv&i1t}{GT+TFm!&ga@mt*7vK4Y#110geJpOAFkHOymG3uu>@pyc>nw#fL+`?>O)q)>eSdAKDYv$}a2`K-UN|~Xq zzH-KB+gKrJeo?+uISt9rys(UkzYOC#MO6+fqId+uUDMAXCyljXMYO=`oQ%~uA3>PF zR?U9@`yyMyDIaywE^>-(urOI(HN`g1NnM8-H&s~$Lecg!Y!1|!f_&KY8)ye}56dP?c@Y@+#ca)L+@Xw?elCE zOSirAs84KuY;SG(WAN&3jq+c#U!duircC|n{@N99TM&6q_t;9wi`^1w_1jSDdE^4yE*EWbw0$o;kGrn0y)t~5935?G39wd( zs#vzthuP6PWp*^{80b?e@ntDHZC`CGY}t(Ehf|oC4633~X_$sp#f+&cMP*@WVk+c0 zs{AG7RjSO~mUbhgQEzxV<-qoK1p4e6)V~s|3ZZvU-e`u+_l^+IsC zabN>Bafy9V9y|L_M;H*VGJZ@G2Uw>gjmCyLU7tn^Q>ugs>nQf!&kpi3i3Zc=Mz|sy zbE1vojhRQq9acK8x4+TQ1g@Oq-2*fMNj(w2>NfQ8O)2-8SD0~AQ?_3|xfOym<-G(~ z#1rU|@tnOO_vcmy)7p5fPXUomWCHJFXrgj1OhpoLv36GaSdEgS&!dlr(MGM# zn2dK}u)bp#p0i6AxZQSDy3MFY9NqZBS*LCY_ee)S1IdI!DzXH6T{yX6{7wD4W5KFB z@49jVvH;}w;9XDs2F${}dSc&Z&jLBN0(jEvV-92Y-tcIl=z|DRm3{<0+XVd{LR5ix z!q}-VYdh_r-CEXKA1i%{mCkqoZL|qbwF|hoOiY;YPtg5 zJdqddiwW}7i3JL-18`#!Wfy7dFiwVF<79>6!!#1|$SDddi1Ex6M%9>g7-vfP#$!%> z?$bD9NQY_22bu9PE`ppfo#T1ak!J?SOU%&e%Fd*a`U`_yobd>l2|k+z6CM%>=_z3#_wMv?E#dUaUu2bDDJ41=Y;%Zn4hhaVQ3yVF6GBr=*2AK~X zVXv5zq;uW|ID~HG-?T>CMn*}Id>KcUFbEIMP3-2mb1vLrN{5)Rnfrn+-HgcsMV|+J z65@ATcunD3VW~w>rr6Km>BnL^#cfkoxM4_EqA#uArqk_Gqc2_N&~-q+s1Udg592;_ z+YX0Hgh*nZkL4AJ!Uw8>yx@q%vLqqPXf?|c4y^>Vbvq?=9OB@>6#%(vo_8EFW#P_I zT_dBoYh*=0byTP`hk64VszUQQv=q>K4pHugs(jVmbOGpfHRB&VqizRgO{yzoaqb;i z22gbs`hr7U0VS!>EDkLMv{Hq#IrKH4D=PGiL$3gtcJiSq%snkj?!+gf3bo=;M?k$* zXbOkY0WDRb{T%uV&;=EGq(H{s0Kr=f?vzUCwIJ?%8NLf|=Z|O{N814H`Vk$+(P=;z za)->MY7M#fCKZae@-S?_@JvsT3H%w%Yg1wU7P%8<;oTsx;7*tfrqtD;2D);>R@m4M zDcyOB*AqOT6`##?fS}f3KAY*ja1>R*lK?M&tOM&I3j7AJnfqxfErxSX%`$s%YE;io zx~;lz_5?V%K;F4L?{dH!3&0>eXU?8i0OuBf-*MO?v)f4V^;8oz9UE;r^-k)>4bh@YiJ2EzTnW z&jPIYuWp927Y`ZuqkaeR7Y#S;W7Q~rph}@g=(YB#g%Y6j#RCI{ra@ey;-Q?GG8$3YlwDY2^8~#{xY+K9KU}X z_vqioJ#C5Z-%D)K{qPp}M9SJrpscO&U$W)>-%NQ<VY4j?v6B%%U3( z=`*|nk#RIcet}{m-!`x!|x}De}2l!~%_=>yNPIFKwl;d#S_kwyMT>JcQfu!$^50)k&` z6IWR?&c3vP%D5qXZG7>K#*XFb1RTqWKW$xM=W6=e7BVm7wXd5ic9+*sdY3qe^5-5X z4ZcjfS*U?on{5lWb|7OV^M?#az3dg7nbuTDg#Y~v5xd>O{ivp6he(B5751XAH?}yT z1uJEjXT3onGTN4}b#cpETY0AzxQ;V-`IO+jvA(m-7WywZVh@?O?6t3vb;dz=-hCL> zg@F;SfG*`akdG}s=BkVLBtR79}H=o=RpBzN{g^i(&>JLFY@y|RE& zPjR)|E!_up<9q7G4}+y}KYOs#p>3`g3y$0SZT@DG&-!~&wf2?$Xt$HSrqDyFj4~o! zJSf;;ch*;HNJqWC#!xgmUevjoGD6tAU2(6CN*gk~=1a zx4dLg6E8`jCyrV9(C#tX#|XVXl<_e!IsmOPR^&rt$*vJr^11-m)P6P6M0#klCkXLM zLAi&s-ANEy^IGyU?FO1=wwH0j5%Y7Q9AU&^4=>WY*i*2%2P0L?T)!*s((2wK?R2qE z!qr*XVy`1mnv1qS?+?fEp` z%N{~A*P?i?goAkFV}C4+`IwO`!o952ib$y;W1IoA32-xoWstAAjtjB zIKPGSv4yws?#^b~TFCw-^)_pL%joW6pe5%+%IKTnGo^`Gic*T%%`|^vXD_-FU{4c< zvzmfQT5I=_=Zp3q1=xrcB)7YZ7p=9~qyKWp2h%&7-2)e(yWOtc_D$?|3B%IIZvRZ6 z<RRBiV=Q8x**Tg$BfO$r*w6x&n)lC1GT}g6)0uBa3}}ATXt=-ENn^4YuQnuwBBv zH2a;eTshSKwLrs)+C9Bu>ol(4ym|emO`0nwG+3c=@MvD(dJith4WT^qJPO;7k=|h! z=N*1$R!(JM&i?>*CCbXhnrO*%c4rdwN|8jS;{I95IDYRoL zZ6A#;OfGFd=h_`3!vCd`cZS_x9u#Ho#e8dZ2MGgvgDz9J*u3&d?5RJVAZp)1@@J|z6jWt0GstUl`oXD>&-$p`BF8zivj(fUB@oU&tvUY zfgUu%!7i(V`=jA1yNeuI8&3zJk&GNe;Hg8Y`-5g90wRWab6xv1T+W%TgD-L*sGfbf zFo)s}c^qND9(}zSn*HjoC^u?g7X^03D%#kF_P&C?zN#4-+d;F@L{4mCFDKBfI(7uK zY-0D4cQr*Wx*luykR#*m+ui=9b5K*$KVkqYwjrQr_nStQI-*radwR+*zg?gEXWxtm zbI&B#>N)D$_yg7Nj=KJC>H9ZzA51%+-~Gz6tNFTO!^&j~`^J=7HQ1%k-MPNg%eRau z`qQHqmd%y>Mrp1@SB`XF94q@2&#rvKbw@Afgk>SsbR(DewBNXO+k$~JZzPVV_2HGr zZ=QB9_t9AzHPdgU{^{rk!_KAnY19yfeYZ8(`PJqvT1TE9oZqQq*DtcQj+E;Ew#BCQ zjbdM(ao2s;_}=eY!$Yr+ndsi`)Sp_zeHsVsD5dWpY7Hm&XQZ|I(fNqh&e#KkmXvwo z-IBMH@@@R_##v#jX5G7{9bv^^|Ey8%y=k)6@T9($1i7@;K}8v{iff(lz!PMjXPd;a>S5`W3AgI?r{HoOFOM2 zAy40y)}{DviocXzol19BUSId>$>HBS)tdg)=j8UCoz80`bo%-t*Yw@hI{$QLsL#>O zCDX>bbZ*|h#mW8YrOG9wblI_Wv2%}+mo_&jRbLyjUg<77-gJ7Ns-3HwbtRK^y{^yg zHV=Os6E)rMdfLqyl~On6X>Mctm!JDJwR788O>cLoZvW`Lbv-ow{M08S9uEu-(R53% z>ND;&iuxUHW+|g?4@>U+ZBv)Cu_Jny)BMgd-rvq0>d_)Z(<=ynW?W91I!M!lhW7k* zBffp zR%v=0rWt9A3^nl1%Y_7NiNS?(WznoTD@8`rHY z3(?S%26*`YLAeoLX8BeZuz{I39Pu6H?cMMd=gnaDV1+jWHY%?sK6G2^;zN1c!eD2A zF}D!qxL)_z)5HEOMzuZ5UQ6w@>>td|-rHtd#Y!>JWtr8PxzqO$m`mPre5|xGP?)@{w)@WUu?W|#r5_vDK`9LxdVNO!;9>P>mGnij%bPeD@| zsz@2#uxWfMmvcU#N`TFE*z(gOLXbaHWDrhpIcYzNXXPOAX9ghZW!ZARrf03OWZIe? zN09e5ED0Ifz@h`YDEp@dbMQJ~H@bC1Qa27aq0D%9yU7a%#$7$R?J^ItJKZ^84_;Vj zxzX4QEPA~a>t2oCFh=#}nH+tXK|8VT^5BIB?M4GM3*9k+X1ZqjM1!#m?2f4vAN7-B zdo?OP`u!>C>dG+V444@=@Nf$VQf4$lT`@qZ{>A_psCY;PMghIOseb*?ZnLL;V7meme zaRpYve9G)J5=8rlQ7deM2gXobSX+hKF_l7Im4Lf}J7}q4 zbelJgTamLMPo2&hFrJtWGc~21gGDLi2ui^OcX9@g4)GJ@88i7|B(XHuZbS~iCU=h@^Sz0 zkD?$9ePJ0?ld-SF4S*rGK?WEmRx0c(6o(9kRm_BtSgJD^#XYc0&kS|pYkAcftb(Ong!_6IgE=zUHL zPlHLk1Owf-y!TPZkl{Nx1$@U_$om2V_XL3cdp@$MEW`IWoLkB{xAb&@K@zJl`w>KZ z54Hg+=lmhg`NNM!Tw@l1pDF%0tnKw5!)k*F?v>EGvL$8$fV~LNhcxLaR$&oJ{zF=8 z0MjY|IIhs_<7hVzkCXh5>89fOa4!YZcs~{{g@wkZHq@JrL$xoK{v`* zz{t!DvY-LkSI}McLulCwD4)wR_zOBu%y^GVXd;(25n&T_h3#mx3bI6fjVyLS2M=|c z(=R5_H5S+Ziy%Q)Arv3CtddlgBUI2e4i~6tSZttc79NGhqJnNuQ8Zf)IdWJI0Fz4a zI>_tAP@}1&psN(A)DdLC!}UOEGh6*>Q~=clljHb< zzM-bi$_cvmYnbx@$bIm!oQVYEf%1ax62+cDA+Iwi1a)@>UdWhVLD0cBmZc@I zw2FexUP&$22ZNtR(P!-r=LHbERaP6ytSso{%9Q&V8afMkRTZ_e+f@WaC`>zx%HqzV zvZ{ja`>H(6*}s~gD^X3LDMrE3c0 zT^&qLI8(Ku4~oT!2`v$7yc#R$9@9})F#Q|~))I8ywbg=&wFTWUrm(TjWvKw#W9@+r zm67TQxONlI2}NlwLnZ!lrhb5DIWF>bd7UISkC5xE-+D` zYFp0+QbrDH?I!4^c2m#jGALWRD@_Da9!u?x>^;=f=pKSDwkImtmLkT* zJq6tw%KXOea5@Goxnf4R0nk+r{SGLrG>2R$?OWuE=%tn{4d&!39BZp#iNNqmWcj9R z*gRk>ICejgv2X*RnH<`rW!nkt2*-ZV zu%ChDbIh}!+C)G7hR zc=yNEMDahMjVc;e8(340^#hhwqJ6jlP#T9;0E+)EIGn28vOAdP1$Dh;FKYZAIq)iF z6*&!1D|a0r=mO}{ZD8dztQxTT9P6QCRPwf6ak-!tw^36ja%|x_&T6H;0d|{XZ#B#a zONcjx=3=UgUO1IbQd_M6ytaZ<_78TW9{8o-YJ?jAk6^IF35)g0Auwnshb{q%4#t%T z=rJ$6{T6OE?D;93j4>#?C(Ho(GxENJ_HLtEpvr|X0PrXUrnrLm8sJ$BcQ{?t^4^@Mf!+)Tl3nk%4JXRPpm{Sccp(zp&%=Smj1x7%eIgrv@xWWq*vdr`6=3+7c zHD68g9E2AQ<+G}opMY{1ReH7361;v3Y zPe8yuI2>{hXB6s|;e1eJ$j9i;ee~lF#6MNoX#}QHl=dqs%4Q{?HXfm#XUM}?lEbtB z;+heZJ!!hb0P!L(kZ_+Da2ZM2ty~?Zk$72+Lx_)r@B$j&{+oErmf3pmX!KGZY} z%IuL!{mxq;??XcVKF?6oRVWWfQo@Ys4$~+>=RbyDELv^g`Y6>;){kTw+pxQJghmi5q(WG1juBOovbcBcstl-Q1ow4_ZC=CraFaoPic9oxbu1^T5N z$YC{w;?yLimGi6y*6vj%falHWww5nX&8O7+6sU4k&mbK2ofqni?|I!TD3{*3VI-g0 z4Nl$1pj!VMuZ0vITqvRF)o3dIs-zFyoLpuMl{*Z&et z==2-=I9esI6oo%nFd-VS3p8iDeZ742oAC9LwJbnD7$HQ*ChrR6g6LUJ#=On5$9)+{0SD zmmqH(cJSewJE46W_dEOW#!h^~Yw?6?zqdyLQ7UvW?l%k z0&<`#R{F09HuAcw2+7RaSl*$-ci(Ohn>V_a`#)Pw}cWmS0y z`qp{l0J%OK;+9U+Y9PFK&SpR!HtQ#sE5yE*6nyLU}~BFCAG z5Jo*eiKOoTmGDKM6!hmG+cEh`5y;uAr&ia2|HVy`|H&T7#)JGkd}DFLV|`O~xjM)s zx)XWa>cB#tt}uSCI;_$ul0_GQM_XwHvondLAFf)d+pyJsDJjsKD=Fh4HB+R?DrV75 zRWXZhHl!9x>bwv6NX0C=#UJvmfYeCIw+d22MOvp~7TpFFv*@-#ip7o?baN*}?hht& z5N-zhRLr6~0;#-G%`r&K_sdmxO2sU?(<)}sU4&FZN&Nz9|Mv?3CCFERp+^7O*2kUkWZuzd2qaA~v?7z$9*PC08( zsAX{}MKG~uEB8`iA$V-X*M3Is%9Zy=M=DRqTweUrt>)8y}E=xMeo{( z!2%r2sz~8x_Ud*sj~k;zfikl43$p z+_+``s@Z~ADbz_BLk8JtcvZ&%MQtzWpnfDK;9kOOE_;*V@Xo#D+O1M$jU|CKU9T$VT9_c$Xgpr_w@9nr4&G$ zk}O_rNW74$-k45f*H%d2{8sgSkc zWnwRInS@cl){>+z97AcdDik#;=SAMzT56^jD)Ye&Z6__lLF{iQm2~F)3a9spB}< zjm2DzN?!==+vufu&P#6AUaDup-X`UQb;x#cmk%dO+w`cQe^;p(Zq!9xrAc7!3hpKq zvGD5R+?>2wKqm>A`gD_`G0w}nNreNIF-kpeGPrrz{~id+g>H3|9C}?0Wu5gaL`?>H zy5W8b?=D5Us5eX66UwYC`3GtT&i?*~`-*0Fm+THL3rqeFw~$NPC^xek32o6oINx-a z!qJd-56NLx?l7nEmB_2A6da}AB9+F+7rY&`R(;?)glVF3hnGN4O2p8%(hCBM*7k{PHJU=^2>ajU#C3RRVHmGAV!D4E%*ck@i0NV9wbC7i7a1Edic z!mI&ONxe%9C9f>%Pa#{PP1Go`qy-7aBq`dN)#{Y`f+Cklc3d!RlO(%YISuZqhxtKz z(BdQ>{Hj2T3oSQ-i3f469thRw-AHM%M|sr6HtDm!XfSI)q@TQR zlvGGBcu~$647Yl?6O_ZH^hJ`10>|RUYDNvl;>N-SHdcy4w^u;pncdQQ@Ubz|y|Gd> zKThwoOzk+UrQngsufep5l;2$nMxUmqpt3M<6XQYRpi3zjCNn)w!Gqd^?5Rj|p&IOu zD|Jbgn&>OzK~T0rNV)Pji|hr~!5gn`d_-x(#6E7^@ngf~gUYk+JGx!n2z*sHH_);nquf>F$z(x%J zH2uxr^dXB5<#2Zy4|&P$~xMtZ#(QQZ1vO0ELz#%rYsR4rI?gPgTSiln?Y zJ^jIgV&|D@c#TzFG-Rc;lUin?RLxZ=1+qp~DrXf+%_vYRWVLjIF07SA_ktnG zrt#dbw;}g58EphIR-%h*F}hP(Qab*ymgVj1q`B;cg6LpDl(<2U4C}bCINf)ZQ3or9<>at6!p~dHUuk%CRGY`K8{!zSZ}fraG4honfsLut?{!p-Q4Ccj}#2GF~2@fH$j!eOb1&xihf z=r2XLs#0iS-VJO;=w8g^toDRr$6K+{VR;v`>~cifU=WJPJC8{VghFg+nFA?1SoY&O z-O2HS)%td_Gx@h$>m|=UAuZ4gVRF&0rQ3QTlFVnN*}?%@bXLm3Fg7?Rl{B-Z8@wj4 zE0sl*bfYiN;Z6voBlu$uMI%U?LI=vPlK4I89}R@1-KB zZYKT|Q75rp+Jno4$sK>sxAVq|7v8iimd@4hrC1lXvc#JWy^hEFG`ZS!sjWeXlIfOY z5uEi%b~87mN`*Q|C7hY!(wWs%@Zqb#&V3lHJv}4o>20Z$k(G9qLvy9-2BCzU@RL-` zO#Ob7g5-6NBoVhm9>gCWOJ87_RUa52$34ZRO$`l!*yQmDUn4W~q!59ozQ?Rl(a+|i zlzv88I{H|WC~s?s3%ws7vW3U0EA?11)5Yh~a@vxQYN!9ks_pg)qVa{4A<(_wrBKSA z7if`lUP_$=s`L~|jsIl*a1yi@$G<`;!AZ`2jcEgxBk?zA;o?9Sx>34#9p27UL!g;{ zcq_rqp(M)#-$?-iHGhZTkn7(|?Xk3M3=EdTguoR7-F^);S04yFXxq0Cd*j#y+zzZ> zIl~w@RgYJ-5^pcnl7THZ>7H(+1l@aU4je30k_Wm3)-wneI^Z5S9#8ig9)Ura_;+M~ zB590AU~|m&FL?w87?t@vJ@yDp!VJHoXP_OqM|uW^VjjN~f0Xo6^p$7e20od0Lh!x( zZkUox@d^w^-t}IAMNroTuRxntmsel{>T2SRx@J&s??8u8k!E=Z7T4z9HQS~YqAT8k zU*M*S_6dwOv#Gb6c@lEfaY%T7P4+<<2W|2}H(cnvPhdnWW1cSfGx}l~wK)H|;FYW~ z5^31(GWbL)kY_iQ^9_tI&sJd#s7kvH*~+Ol@z=hj*i)=De$n``mCK4Tw0+5SI7a>K zX`oxafsH_0R-|Cc&6hH4haH}Y#Ku&TZ&W_qiFi^}Kifo4G{ zPTxs^i5f@%Ys#5{f#3VJ?5^|oPl|jx%(LIs`YZNUJGB0E_0k z?{?R-dwl;gBP#1IjxIk}D;FHzzS_`Z7ebeo_~p9q`StU)a*T*_(pArl@BDgJ!S6e=~bUF#ijTEU&2#kob z&4(ph?r5DBq%~N2TF=vShJ90c?zRQ@OFTLJlU8o<*T;nh=Pt{`w?*{$GWx6bF5P;p zToYZoc$VMyZ5Gz6|Nh!n`zF=#yH;si@d;N(dZkQ#QMBH$x8WDkuN`UUeec2Nr%T1m zy>{tn#ZB9)UmWTfo}2dbjv~jiqi0T@I(1R0VOH-l3ql{ybt+xFTZVYNMZ={1`e(l_ z`EGyF;DmXVuGY=%)#;CZvtI}A4XrT0To*2o%nNuu9dypw;I$@ zzV(ytZ6V>*j=no9j+1)MFqeicw9VHgUl<5+; zX=kzLdqx)XZl8N0wtDG-=UZ&O(X)u-gDdsJth#02P3kd6bESUR&313W#*^(eeQ$@e zPc8E{`e=HMO1o|~3E4XItaWwKl*LmG)#dXk4_i%{UPE)G4yoJfwR4H%cQw6s+uE;J zuU_(2(?{<=+xN;T>At3?oze}scKxjL^*ZU-o)w<7F2vYMZcbsx>z)64%9V|Y&40L? z`F880|Ic? zi(uENfIT)aDqj;DmZ&inu#FlE*rSPpu_ZQ8qsC6uSfl^Xnb}o-_vYUB|6X#R`@ZiJ zo@d$b`J6K|XUd-W_OE!d=!Lst(N~Kv*);8cI;!q%)zNQG?DuznJ)_guj6?a~_+Ja~ zbRUvxXZ>rf=lRsIuDw3p;y-;-IXWn0lG`gw+iRL_+Qj-FzPGd=$FB3C`wzNV+8dt+ zDylZ}dTnVRIGM9;YTF@&mbSZo!s(i!qncaVUyodCw=rj!U}-<tx&Nt_PwX{>ab>EaU&CbozZnWUY>6BX{S=wpW zr(ZZV?%U3mcH|-b7t5wTo?&U9*)nT^+sO2>S_{x8s@NhV$ z%dY9OqLH?R1W|z`+l~w8~ z08(h-5W%G0)RYxkD?L_M&hMi+k9KY|IoHiqgaQ9fg~7~uo8|t|GzafQVMDQ5`xY$A zSaBElOGhKeyJiyFu`T7zX2ZOO5^Tq@%iPmGD)n}>57X)wwM`lq@Pa|DDO=sysA&i~ zx(##bHCksw{k*=7IepGPH1@?x9cpb`=zyuX6H=7rVhWlFv?JQdebd_^I|uTApii2^ zRmJ09k) zacd9O8VS!ZN%iOs;6o|@Bs(uQmz8L*>?rp=?ugegao?j4zI<>u?u6j&&T`+d&Me1C z+E0D3oiiMzbI|UN9BA05CI^oCo4ZiK=fy@%0q8wl**5Sp-&CYh+jN84ouX>nnLVsG zpgj<&&X{9({N!aw=GFt=-#w`yw2$Q6y}BnHynD+&&P7{s<4gNMKa@m?@AQH#tc~-N z;OCnx75Ai6R(fV@RBR2m0D8l5j?XXd;TR0$mkkM#-5 zwOAcX|$8n7F8zGf! zqKrB?hEtQ3IIT_iHEqq&Op(h@exTBQ$gE_&O`&i#=VJ=u&ZgwE9qGT!36`44P+LIV0HyXb$v`@Qx#lq_pN-O)^d>GxPG@vQ9&!sqo|uQ& z%ej@@ci?Qzxs{@1s0E-7W++XDCIFgYhSti^w}3=5bU}hB@v2cioVA=i$#JIw?r5wQ zCTc=R)iK)wfh`7zW*o@5J1I51z@!4XORkyu6Ue(e&6$1FyP#l`QzS_R8bjn1Ni6_( zkYTARWSR`m2mB=*aB(zIMot5{BoEBXzH83A>d3zVg;D5;vi8yz~~*HPNByT%78fn*pp@1OAQv}$l$4fQ$+#dZ%0g$IptJFORW$rHVaHC=P*X9}&q*qD*|F8cnpf z;0d8msy+A>d}^5Q%oCODOVh;cOYie>!^haVb= z;9U)sHpX_SU0B8rdP_qIlLT)XbIPxJI@2cB#TwZUw}VCd#)D>ggILtBg`Qbc&K1-j z`1WvwD`5;%Bkw9l-vFHr>>S3Fl%pS(qaT%{AIo&Qw84{d9Zx}94)8nZJRIyDcKpmt zGt=~QGaU^2g_({8{nAX&2mQ)S?*skXOf#$Q8#C>Ui9S;_Wz`a~_ln7chSA>oig?ac zG#SwU0iH8R7vkk?Q<00nQgx#UfCr+(c{hiO?1?L_lT1Z}9PKNzlL~s{NEv-9a(p=B z_*7*3zag!XZ$*xeRhh5g_O4<;k)JiEd><}`6#M;R&EcK+$gdLVfA-TVl`X~UKl?$S zJd<=+{X(7Z;&=VKll-xVO4g6sUiBMd!E0^K9JdKEgbT{+kMOqQ;bq)!QQ zqo`|sI_?q0q6Z}vQm^@SwY`mP3-P%l7GLvIaa=K7yzbWm=?nN9ekMD%TIy`3UD8=0 zJ;sVECL}FL1&;2;H=ulD3#d*z9R^7+Uf^!fBi8qjoJ;%yQ5U&hiC<@1wnRB&s)6Ft z62Dm-_lop4{X9Hx0d^^8{boxmtVE)mJ-md5-Slf?!`4!rcA7J-PTu22Hq={(3sG{@ zFXS&Sg#MOa3f?7Iw{X(ZcD9*) zt_EAEu|QMI@C;Y23o`1YVr|Bqw!7nZ%o-EJ?e7P(K&{7qjjiQ7TZ2me4DiK`TlUz` z$nBzo?CS}Y;!AlqoSegI2T^KNH5*%YSm{t=@ zYHiAx;cz>ObUxdP66QI!QsO(mGdv?4S<;(SwO~UFUii(ShU*0fdjGA!D=)XAnBRka zlvi3&*mcJ^*UPP#xnk5%I665y*TqFZN7{Y|)I;734(HQu#=9W_kK0SX1>ANj!;UCD zi`Qt(hjuP?94H;y#xJ7WHg)P$ccL#|VVlRI;k6(1>LrA4p7tH$zb2;;TnBOsbE27V zF$9q#=n})QrkGr(Ptl7L;4C46rR?w>F znR@*szESh8>_K<1<_%mRgx#tE9p;U_+l!jta%H!)$^n0S#x*t+1MLOG4SUm4VHzI3msHj$+cz)P9TI@Ri?x#!doOlyXO7G0K!L=ObjJ4nuJF+X~UN3N< zEzZ1?z2z*~l9$inqGQQS( z@*&EF2oT!~cM9JKA04pQo_sJK*&r`I0QV!#3-fqLqww`^OGM{-YTus>ge`<)11+I!gZ9qB{P0h=m`xBYov4v#Juz*ko9MaLiVwTa&B zX-B=Ao9z73oRN4LAI5hwo{_PKj4fpB;7c(rfRC{DVGE70-ZvM;W*3ov>=?#%tkLPoWiQ@g#(m3kb9zTuGqWJ1K`;Ac;yO174@v&-l{iTQB zm7cb#=|HUfXN2W4TOI+%VZXq~89#@3T-$&13+W2TUi>nezhZ@3JEkdayZN^mXPkrI z;SjFJW4v6c@l}cduwP*&Ffm4+X}J3=Jg;qeg?uD zTJaIMAop8I&t{d@xN5&s_tt!kaudVb-b38bnzv?;=C(F`iy-#&S)RQA^pfzg{C+Fk z#4B;QE7ELg;&H=r6w4N^DGC4XE^bWVBdujtB7x2n1^MD$YTNT67+t@8`Fq(EvtHev zZ>*IWi&UMJt7HRL<54l+PwAK3ZnLLNQ2E=)<{OP`R_@xeMUGutd$C6ceya+x*xk}EjeBrEb6<|I?`>D7nrA!M?rgp;?u^SZm+(N-7n2eqz81*Pp+5I-O?_N zxEt7XL)2bNyULX#6R#v&UA44NHmscHTzDhG((ZD;So|?+??(ed(b!*a>v}czk^5=R z0N$8B?%bfpDP7Jta2bB=?4?O!=d>{ycg{cT5z%mjB7f@8L(eCQwN5-(*#GLL1G9Uz z{c&;gO1rA`;&!&b`DJwH+F?!I2d57jIWcGBk}BUfENpW2{>eXH_J{`em-f#Z<9(#zwmU7O6Fd5Sve}~?X8C_?@qM1 zZXj=?w4o~vuC}P0pGEnX2Wxw(R_pLW);JCj>rGBhuuJWtT*EB2Ds~eCe-6-d# z$S^|JX_RdmO#83?4!~S0oRAKUSrHDm!-PZ@sE_hto>5Z<`hq{p^a3^X;Ru!5xw1l$ zPnk=Tk(8hpl7BoxyB7-Mz0yNP{5Vjpf^MdPTpTak8D&?{L^4FFI6)V@lZIDSP(o8= z`p-mTay3cKulW&nnOoH;;}z;$yac_fx@2x3{jy5#6xYnoRZ~_S`uQ5NQ6MH*q3A+s zPp6oT2}98y8Y1_7hu0sjY%vT5QhAqO(Jl;?4F-RPLQ5THu2#X$J1`8dV@g|a1E-Se zu2P5NRxE~qB8q%lV%Ink|W`=_2m-iD-p7>K|kmlmAYCjmT5j=e*i*J zbLy!y)6pJZhe9Jd7{yZuU45-&J?3p%y&To}-XZ+Th72*qCN2O@ecc1q!3e^tPlZ#K znH8R0WjGb^BzfRhGO`B9RyNSY{U9S(f!veEC^ZeJ;Hox2?SRlNZ_3)|Xj0Zi%D@^9 zMk(^JUIQe@-8RIih6?HH2LCPU%;*ignx3xUCzy4bQ&#ex|EklZ1y7tk)!tA^%F0cu zw~BB0A89qKQr;oQ5DLxZS)O?4H|x-_T)d%}!qkJ-=kf++XS3>ZB@(wYE#Wixn=xHv zE3*o71wv6-y9}X$Oq*C=DXBD3ew>vDrb7GbJbk^IcTwh8NxDz&F8FeAAQ>y5*j%C_ zXS+cjl;?^{!sYaqt=6CfHhWpIKa1MYLhr=G@e~cFYP=4bsVSLyk+G*1nhB8>y0qMQ z#)va5B21zRrWs)LSkTY#c?vygIfY+%(x^dWk_Pwd*>uFXlwl*1`j6^4A~iW>)Tm+R z4AsGZohi8+WjA%wRz$_Yl0H{x`xdShQqfdYZI~9B+L4@`J2+P4B*L<@PE}-kre{Ky zWj>)IJAne$uOi$3EkR=ytyPFg2o*UALkp)0Jx-Dx1`C&~)qO}W3j=xwh?6$(_qZS? zamare!;;4)59^cEzrVz^OG28=b+QgBSUsQ;-B`C)Yvaq66CPwqe%100TDtNLKi{4G zxOKXWHRY9L*J<)5KG24(4LZ9FSyyJmRs@|o<2)5^N%G}((xXifg71>^w|pmewz{xY zg>Avcv7O$f&%Wi2W+_CPsw4nOVu-l?Ti(+O`Rz_`g?!#pyuX#tH^pAt z`2`#nS6<{R(TY;uhO|3*9e17HJvRj9%(k<$!qKQq<57v8?ws#NA0`jb(X^fXN=%4t zBi7x;|H^UqSVNCQuTdhup1VqSL_Ss$%yp{jI<-cp3ZjK`?L8=Qmz&O75(Vs{Wnb9L zJ$$gUh4FU+hmUu(0s`C zD8nFQD>RCx($QF^XAj6KtU`*;F~lcloP&zGoPcCsLRlyHCiwd41Rv_bwu|FZ@RT__ z>oJ;b69@LPbWm_5G4v$wuKG(^rTO0@tAu*h2pKxwu>XYh`wc^WpUpLFpI0q79;N(YFlG%eb?Q759%%0*lf}4gTHJU_^n4f$4wUhyYL@u8}FWzTM~a`vA>g# zaD1KHm86K?LuQQ+PIuf==KMxAu+J%jSlGZKI`r|MQgvz0+{@;6tC&AGwY_UPGAGY6 zVAV{IMcZlybg{HYy!ri0>s#}SEN!QT1A>CK^^UT%5Bc`IJ!Znr2h{6F-qU7H;(NoH zf<305GRDQ|?Zz+i;mr7ype=>>9&hiiK zEo^<uU$HWc6ji+oF^<$h-OOb^tkLPEx7U!Oxda z*pn%O_95IbhJl;!>PrQ;c#{TvJ9u}ABUW!kV-qc`J=&yx!$VC&nb<<|&r$meupd%s z?a|1vH4+83@L)72=K;OY%?fjMM|*%l=74vD)Bi!{{3TbL60}Qoe4(U3!qg4zS4Jm7?4??z8+2fHEO zCO*o-y6Tz1%Py9@>)Jr_`3bV!jceBO5g*p4hGPA|L3>N!JSsq?kXq-6r4V}}&X3stM zg3BohE}R56q17nrQ?%Fvk+_n*zM-{buTPK062|@}Kn_IiGl^ejZ!tY+#v?OfDjVM# zv@e&Ve=bKqL;vFcn!($y97|09SiFt@&sn@HYO(#tVqP)+xuW?~82>F|xmI&lSHWs# z9(Sv>Ve3m?$sM3=ulcLcAJ2Qk&*LtU*IO8kE>YB5D8DaL>RaAu$JP!(_|w1iJo~547C}un-@!`5^CRvIB*@<87STlEikwmLRtD{4BP7$8S_} z6U4IjJTm@Yf-hAiSBk#ksHLK-jz~vV;N=9ny`v3jbjzIR{o%20RGSk9a6d~U#XL?J z$zgJq&1@-8>7*gMQpeThwta6UtgH~jDkiFhjoe>yfldAvE^tuGucEltwU*Czs5_(D z_Ae3-<+Lw&>wY8oa|@Go@)xg+ey7`Rv9!;w^jqv&x6d_8JH_YXW~+6hKQeKZM=n3u zZkyW6(%&{P{I>=Bjz3!QLpw#{i;!7#15MfaU?WW`{E5Vkn;TwnR13ePd5!FxdU(y7oewe z7F3#Iw41@E$-IU`Z9P@$C9YDD)R4JIW$l6i57BPwE)U2k?W}^{D2ZQhq72r#+FhYo zQi*a|Md@P7x8UkhaC;XhDa(k2a9v_m2w^hRK5C*w$6&PzoSzq^b(s(CLbjQdU;42(ERa6361M0v>RKBq?CdJkwVqi|&1xsM zLyA<)SM?a#p&M#EXTc^H{jz6Rh z%5e2mQ|X?YfofmqnuBO{WNSfU1)Edhok?yK@=JSHn5|;!9sQeGL2zT0gfz20a;%3? z8~otE^Re`x5KrM>oGW#V$5Z_q56ka8u{l#d*73D^ih#Yf18@@A3s5ha+?0}6Xe~*Yl5KRlo!G&e^{6w z(kBT$xFYIp5UN57{oEkTf^FK_C=BGdvkdj6jPGpiDA$B_$&bD^3E6hCaa>aQQNov% zJ*lg|aDn?t46ZChab&CkD@j9Z&Q8n<5RmHeoVYbmh~v03;`<=MU&Z}M`1TPaYY3@- ztx}5qTbPOTVK;j>s%y2o$rn!sdhI*-ZB)YVRa#{Z@A>jxnA_g$QIu`mN6XiBII5%i8GpuIKh>vWB zpTuUA;$7C0Vzy;PDSc6OxTJM}ZBK}*-+^mD!rHtnyyXuEsMG`9;44T;cTWhEh_D=W z2QUZ-hWc<8u}K>$t28=r1<$=@^Q{HkaDW6_>UW!Xj(caEHGodVUr;AM}R+6#fGD4!uZ zyzV_I>`$v zkx(=m%A7#_f+S?o1UI4S3or$VQ1_u?JJM>@J!+CTg85W@x)XS!Q+HJGV_RtF^f%T~ zmXt$cn;7Bqk9r}iCc-OAh=p%c;R$z3gt`X#GyV?B^Q?C4h&og`~9yQQ&a7w>nWBMoKdvr1dkM?%0i1Fs15CT-u{U?N= zyxsaA)_^HQ>b4c&$M-!&w-YXL1>_kg2#_)B#tF?Ki>1d2M&bf-Cj|$?1U>EkA zXTNpkHOCBS%;fc;o-3_rb3`W!@xlrvS4aoi3p=rsksXB2D9-tP2O)_YFIMX)q$|;c z#>0#Bc5W(4>=4+RByaJmU4*gRL=jaEXK>tcvsNR#l9r;91sgH8oA9IZFO?9D{uaKW zYf$&T0rQ_{C4N(_s^RRfoRT1F+T4}MZkA(V1yHLqpL@&35+ujQnrT zb4GO_T!QLQOxIW(2VJU$OkywVyKn6q?pd=XXYh!3EB@SA=~07 z)i4^F*eI=glsWKy0NOQUWFN1T7=>bbjDqr;*csGI(a5E;!H9Z)+88>1a_)g`SU|kS zyNN36wtyFn z97iw3o5!Nvv!%Sp&9HtSHpkJkJzhlnq8vvb0DEdfa~yp<=#FhDBgM(ct)m40^?{Vw z?AOth`YupSWoW9MViAl^3r7gJa%0`iU}J#oWH8zTiVbPxXn+|K$ciIyD`j*&(Cwel zA{o65^!6tdi2(v|EEcd|iB=EkBdb>;WV9jBmJ&*d<1qtiXbM2oAH`78dtn9=m?C$L;IMJ{3pgI#*NONz2(Nx&I}cDQU$e)e`p2AyLsqX z+D_uql)KwW?qm|1hPd8ZP_yNx!qRSvlikTyV(Cd#aL}ricUAhYcq&O=86Q%GD^S8B z`qhJePZNGpzK2D>fs-3u87XYD*!6Pz*&9$$FrWry$IU|SBO#~;>Fu3Wl@1Yd>WaWc{nu_ek3*#`I3R(GV zCkpNU+gQ&3vX#%!?)TU!Tb+OC-}lm(xX%&?Akf~dYG`^Pl+k7@AV zcu>+mrosPt(;(p`pb>Xw3Rax*C?X@@#`#ca_8gs9GF9lOM0N=n2|dIfGlbqOzHHx2 zeD5HyS%Q(Wv zDT{cC$L{UPdcNQf%|!M20s*j@=L*l z>p1L7Awa&4c9})xuj5olIS1@cy23{0(+Bpoi%ee$;W$p0uY?fy!#Ix?*!f2D=K$Ip zsc=xRD{cKssATvLFCE6QMSnlx68ehVGU1ep+sjVNo9?U<>T!ESeXh`xofa@3ap`K| zAxBMS2rdr&lSU`?={GzT8TKQc&r@+*_#WLz(rLK!RIpZP<#E0h^QcRbJnWbspxo|D z30fb|9LES1HC!j0!Fj`snN{pK#0afdEBwkr9m`N{s9 zCXe1TKI8}IE~WQ&jCr^3kHuGV@9aBuxSIEo9@U*MlRr`Kq z>4oRh>$SIEx~${Guof5Gvm-9rb}5Zh9rkqmdcgY2ciLan+`bkw`@8TH2Px<3(>3;& zT9-5r>gRsy;G*kh`7=F+blv=SUpGCr2&CQ(o~};)I^ts~@jAUyQrbVf`!O-x%RJlh z3#^9aTgES+x-mzc99zxOc4=7OqwA{%cPwp-Ro&9gYf+{1{kD-Kqs7`F1iS%J7 zWZ&NH&#!sppy^MBz};hzC|C+(^4Kl>V)1vRg8C~x#lWM&aLq?syDa_Isq@L!-bIpr zO_Dqz+9LeI>Okdet*3^ku`Z`GRk9mpHSl)jX2^8< zIwx1CfF)d_zbHp9mFbW~JI9>autl#V!@18*l+6NoHtQ8A1De?}O2`=kJ^5WUzk@Vz z4kfZ*8X*4C!g}XTYFjXk`Q*66(WH3|X%?`R+I^x*Jug_HSWc@to-iTve3xvIHs@zyBt8P$G1Zu79?NII0Peg2$y{Tq~m2#8S9je$NXD-K{N0g0m|4FYq7_?(<;p!#(-tA3pW^+E4O6#Xt++z<}0+%L^I8XQBxBKkBgD&CaZ^oPLs6A5@Z?& z$s+Oq?JT6_GgdRIMQ9R!lr;;IGi)i^kIb5dMo=GgkktnT!F|HqOe+kf}t8F5o_X*A>kvO0JxV7e?m;;;4_>-tV!wIQkoT2?J^zixlkl1<77nL4=RiiR6G^) zoNtD{1oSm=J!4JkBOotPSf#Bd(p(nY>BC+}Oc*aZ)M>F@ZlcA}=lye@byj2MQjpjz zbS za4#@Ma{)+c>zp(vUNa0&#fR1udKr928(CHG6`-DfhpIqad09xe=2o&=a7a?X5?XO_ zl!)jqjwq4kr@DvofS3nJP+Lc-r*;K#{Qj z1DqZzRAj88I+BWpda=mE^iHFaM~>>*|G%JA?AdSRgw)X^dXBFZTCeB$KI|*$f4fwf z<6kHVkbPel?O5j<{BHN)H><_RPO;xiX%&}1!G90f75twmQ8&z(R#7VI?g^!w@=FM} z4+IZUb6*Hj(olb2JMw-YIEXDC3Y$3YYbq>53Y}^@;pyu37_K1`X!&Eo%bKk%I`vR0 zPEPgpWDAE?ZKQSyRJ)bS#I%N!PfBW~p-o1$3=W|@V==egIrsPHvzTIi#OJO~?mf~Is zmAExa{PdM+?kl0TTAG%4{FShPQ$7u);>ixK;@~%e8>hS{w`i^{N?7H-#XE%SB%XZ7 zc9}-8AB4T-_tryWKEI4T4&J+#>I*n-19emCJ1QquA*U=HKb7+dV2#p=4$$N_>7%B} z!_Vtz&{R)13bN9_<<^tGO5eenEzddxy(iQh>_$bILB@|8J$Wl=h)=GjqZ=yy0q(B2 zLap!5VHQejeQRzFwYAnqE7w3GpXdN>^HhX+wf?Zme1z|<^_RHiwAx0m=lWCHX}t%P z1o#Z6cUrv;K+<|6g4Ji;a;K-eJ)LrTT(O}%Tm2DQK2UE*%N`kQ#aUYY5boa_?4%&H zf)5Dbd)ezWB8PPP0k9Opbaz&cPm{XN+Ur;1$$_o!P&xF(+oS&CU`PGUG}E+mp4&8H+{5?_1bZlZ1eBerA#-yXZq4*7p|mU-Rc}WYs|s2)ziNU zyL+@?wu%&eY1_CVu5yPdxpuJNkR|1@vuW7q-?4f?rZXmQekdM$5$SC-(` zJ*->hte+-LdU<_dlWozCwOTxKe9)xI_mt+Z`y-_8{9ZeL=r`xi>@-V`_56izcF#UH zzL_OO`ZtyBHWd9Z=VQVQZr1$kX#r=`WJ%3CCFY>7{bxTPn%vPMy2VVo*=Oc~i}7N< zJ0299yf3RvIJos2Kgn3BjCH2?Ocx`)-)7WNcBYF)oaUi#>0JMmI~2yajYWjP|ffr)(cAlM|vfxrI@g3vUi zfT*cA=|El!z~Y5J1FhcUgPIzs`HW0cX){~`QB(q7FbX9@PHQOB88bjPCj;wlD?|EL zC2E-}=nnJA=&EoS&g;B?S_4#Y4p7lPLwgj#Z4MUN2`W{%MI7Nse@n_ ztxB;kbVyKv11p;$k;LbX0%&y860p#0c3r6OxQ839ioj@aRTHXx%6*|B00XO2Nrc{{ zg3#82GUr1^V$!AcGze|EHIP}Lg&l8;6F!J`-(ZSn7Fa1y#vBN7n}R8$mfoZWxj2ML zXGTpCQUg2+VX#qS2dnI*P+4k=?lND65Hd;H%l@;5N>dZ!-jte>;G@0?@$Q2;_XNwH z?TTgEgklo`-He)15wM3sx?|Gg(}NH%*8!MaOA>T7MY=E-~>R9r2M%_@(F0R zLg+hPn-W?M9)y;k8!u z38y)cddbX6+avWs8f|x&a=Xi;B4}aD>_AOJKrOqYq8)Z80Vx0`n#U}apw8G0u}svfZ5!aWUBpxyHu$wH*2Hqgd0$|X`}D;#nVpwVUse)|mi3efr<^mH$# z52t-V)b2%ff66_+7-EekD^OFZCmw{JIWZkDP1bIScE_Ibsf?7NiGXJIq>LzbDs0SV z0DH`1F3Qk#K=*r+J{n`nVzZH|(r>0K>20!tG=9AliYmQilX8n*l1W(-5nJ}6qW3zJ z+6oHvUb2|@C4P22{thvboI2>;h{F3cro34mYT6Q`_vcoM=VJ6Tl@Ri~HP!!C&SLx> zooyl@FvQMaPvOn=bzvP&C`DvvMsxja*-~sSb`GoatIi0_c!&gnu3}~j{W$Jl?8Arx zo$*&epAmF@klVbR{h?Lp#;6*>)TsFcBh~xU$K~HtHuvPdk!9I3S(b$iE2U!o(wvI< zFl(sJ8`2s)J%&1YW3o=9d=ZnrMSy`Qpz*sTz1)$j&=>HT;%yb^;XZU1QT&}HX@Y(<6a`E36njjXO_h|V)Uxxc1 z3Atj)P%4_62aBXvMf`bTG5111T!g)AE`IDx74+Wiw5`nJ|y*{mu3 zWpst0-=|5dcFp??K%PzFQ}uq7JH@Fc?d_r0Dc?4y;?}pI1n;Hy6#wj@hv#>eIH8x` zmgBw*-M8-7z4(@_@F-@Ojg%l2T z$LOE^}Cfh;S{zsz@0vuqHm>TZwH;Vy-w{y#mxeZ^mGbt$bxWUvb*S+ zu17HK5^-*Z-iO1SHe~8~%n%o_iu#y4UOD3PO#SVDE#xPnkY7FIixKP1(0g(=>`kO| z&0Hmi1J9$eGxersUjp>P_ObY0fzL90tU}@BhVQTN8R~@$9r*mGksc7YF%)7 z)Gq#2Nkq}2=`nT#(yIL0ZrWlPnRf1%Cy(+wm^mQk zS(jr+R(n{4<wYM;^RNL(Tx{+SGa$a9_thcS8ZuvqQ9pKpI?fYBJhw4f2Mc8z4!5W)?)LhSX62i;c4NwFric%T!wL zJmj*DF!|j?dnzrQXA!LrnwXA37OictOut5Z1vyVlm!(hjG3Xg?Qo_0wNMDKVHHylx zrv}JkWH$5%#7VKV-JA6lrfZ7P53=BQ0<4+rV6cY)W*cMkdZhbJ!E8pjAR1A zOMs2}Rz`LJIV2<3WaL*MWisMOWo*wLP$-xvCbEs}K^!BYltCPU)A4@B1hG5 zq4x*%opi?L$cn^X)$N-lz=Qr*o+cmCNBsXV>~W~q26La1%=W!f$-buyx1vH+ui<7% z2EH3svSAP2J(65BN0N&?5CJFUhYW|y^ZAI6a?w?@T!d8YOfK@y!s_kBX%hzfE37uH zU*7giO#b7&2&yWTO?}=@xLEA(J|3iv`0j?!Gkoe)T*UdmT|}vEU^_~^E{vV~2z&YUacH;MGkB^-sr!Y#ZIFJ7h z5_XwU6y3SCR}UAw%=Hpj$xLY#)j{F6j*Xc(GFGCPIKnWkqP7{+DjI_Fk$R&+;i%Z6 zsTtEMnu|pz^i!<3Srm6#Z$JTY*n>JLbuDCxgjs-S+eLR9@%?FiI)_3c80AShKk8p_ zv&DI5^vyXM5?#ZN9^_QE74MwY8f^lFvE)Gj1q3{-j6x!}?Ub#C{ruUIKHC zM!xZ445ePeo`O0fabduD$PF`?xZz5V&g<>rpZduvRd5+rDf@q8m6GN}zg^HD;Znsd z7xi;EC_?LA#-c8rfCr^s*7sy*A+i3_SvdZzpTte4c|Ys#V9=;v^i{e0wDK2yLo2M9 z6u+fgcUpd?yH0F!ML&f@SJLq?-<)T9TY5abYh%io+|`MqXLPlpje{{`UVFif?&LUn zQb9^JH`;W*J2aqCMxD6rn!e<()8d3-{jONCEXjry9lH2nYP~}{>Fy2vpy>DEKXncE zS$ndqVExkd-;Zu%;l7{lXr^7)Y#V3cz6*x^cA;cq=}ZgvJ=$fWuE6`NOv)Y@Qky0-DCU>WV>m~N1Ex@=w_Y54 zQy&1|KQa4>zNID2A?l+yi}LiWS39ESM-F(L!~rMcd7mOzUCnd5<*(fd*WPXT^s7wK zUQKx0Og!d0z_3M-bNcs!b1s^xV9}fcLEz6uwi{)yO;!^(e<3{In5ky~rB!ncghe-@ zbwjgv-(+lnBBh9qlf3)(pg9k9asB{ncM`1KA_U6Sx8rlVMX5Bmz}}sx#(edRnhr4I z9IY-VM^8KeYsnt~+6R-l;F?unhBkyzc9(FYIv;c= z*$XdqxVu^n%golAGKc&F=+WUhudu~({F-M)NX0d&ATJC4f)NVEXLTr^b%xYcD88*r z(Y3*&=Amq?<|hDk8n7(sM&$=&<<>eF;f#z9r-q2%Z%9wkp{@%@xnoqit}>kNtb_4=Q`kqcFcL$RQ1AZgHRKNwnZR;$| z9_!*pj?Q^kTW+am4~FnUVRXY}y&dH7!RE{bx6wcrOyFvVA7sXJhCnytpkv#o0RnbNQtmq}@ zOe&Cr1HdUkx=+X%8AlsW|Bx|t)GLmNs*6AhZDoizK!uI^mOZmKvfDJDB`ACcDo=& zIvfr0E|dpqj$*{+lpJe=NexOlLNZ{f^&{9KQyO;Lq-hVbw+t&MjgUpOY+%brP_8<` zsN9D>r$vEkKmJU0cvEIOjq{+2sXM@g7ldnfk%&6*CugncirIC2b zM#{#q=#ig{V=*I{|DvhC;3N31N+)MnQB~fqjpJ7_Xp9;!8 zIMrQT<7q%?w)Aj%;%jghfA%(zl5?XpKZAkGpg-#y{3y@Q5Tra9fFxq`4b1Ywxrr!K z_?p8oPHz~&Wr%5dL$X>q#k`M4l?^sZ__U+566t~r%eg7^O^~570&~s=83OV3GRVNQ zJrIFeJC z;g0>ts_;Jo=b!A#(jDX<+GU`UD1(hyy{2Kh5*&YigyETTWL0|gTi+^_`oO_X{H2y* zycIk}JJd6jVkWif8=|;_G^V~G8K-llzU8dja+9e|149>Ew!E|DJ6-&?fx*R!@*;5T zc60r;bTQI!Rm~=Fii#fgMUrpqe#5;e$jFl=VOM+?W9YBs22xT}!+FgbXvBwArQ(KH z1E`?TP9qL%W@6f+SMgX|!{*|Z1uUUsDPWJ74s?F))M9VrDQ`;ddeO5bDs@%YWwJmoZsRuG}wP4{i}7RJ{=bgId-?(s~ECKKdTrNho$s6F==5e+Y_?t9)_m1kt0~VW%su+k=Z}Qkpt373yKPT14V_YL)%@Z1+Q64l z2YtkEwj7)6d%&v}Yg(+%I+ zezZs#IyicG)vi^icIZce{D>rw*FVb42L{g5Cuf1dUz>}cTNWPZkeU>{z+lt}cvkM# zqLsU2dF?syJpJk@6t(Kn6xQbq2Iy#gN_-QKz_bpqv;;MPsL_D3UjoSZDNv=k55T9P zY}Xo(twSKNZfL~pT1NO1FPuIHwkH<9mm$+P5Z9-i8A;id_XKb`GWOxr8duG-NH`Qm zB2@>=U-LQqG`E-s9g+w2@to>vbu<#yM)X4}D=$S-$^dtx?0{N|O@E7|60dGX^)t|` zC}FT5*D6zAiDLD7rC_q${SackqOl}L%O1^5Uk$6b6xc9PH~jq$U$|4T#rA=Nr|7n=wDin2yNUlX%ug ztwM7gOGjh2TkU}8T|^66w`3E0jP}766hEvQTArBW|!$%3fzRi4-t zbF=kpgJeK$WEDgR=$|O&5A%Ml9b;ktiv46SYmN3}T8MsaGu)F(ZSerKqYTL1w)>S3 zrQ5-NO$(z{1 zm8NbNyvMpzv`ufbM<;UvOzz1%I*poXpm)H158--hkKRlID^uefBvV{_v}g9AyoEoR z)DYvX6J<+W|$Q4 zk#O1s5If+LdCod$AOz)s<~nli(P%eFx|`}b5cD^Yb8|#3N}+(q&@LV<=RmfH;BBI? z{XTNiB6S_KVHDC}>XOYb3bJ%33Oj;%NePMuqn$iVPA9YrqVQ=-2)zyE%RmI0-atER zxD)(Hns3nlW`aDE*Ao!eIgy+q?IcBzX(Ei_pHYE<#bkcQVloqc-eBIW6z$SU zY%|zwM}4ExgiXfJHiMjoCGt5VaG{n=MXcvMTDc5sQnPIQXcp4blH-D{3eVFQOby$q(jXHYmvW5;9c^iN~g$mk}Za4%p( z3o_EpL$3n7_h~4^>ti^W!!A}oF!QAOU`VkAlqQ`#CZ~}aB99u0QB$N*va(CsbR9rs z1-EQ^Mjm<*=uPv`x}#A=g)R9;CxwGhTf!)I+rJ2kfCUId|_Es7?Vgk(>`;?vnCusSK|JjIAcyUfk48r?uuF%*+)gmzbpq8V(R-fq z*(GaKmQ1G469`vEF=5fuQ>JnY7eo-A+gD7l#LJ|Mf8 zgC8~?{JUMu6Al>M#Lb%x&DBxw1yai~mp2K_B$m#6p!m!jBQjviT49up4yLOHr8 z0L%DZ<>=n!=sxA>M43*P4v>U~Cw7Rpf}(FZx?efEe>pn296b~?JAt0qc9@x-06NV~ zmw_H_re|W@7&Cnd^fLusKDR2a^K*&`u27lA|7j19{KW5`Q>t~HVHHvQRa9HV6o*uB zqDEpxCh?CK2=s;(RpFxG=Kp9EIab*U=`Aa&cl_u@l0F`b1>WlB;BLITBucBe2C6bX zc8XFnrB$f0pkM(7#-iyMrBwujsw-hN&6HNbq`7($)(R9GYo};y#&MHHi~17(`oTs=Tf3sN~U@eWde1io0R> z0veT@Hw-P@*vrh(oFI81u5lbUK812;2l$HJN(_gT%F!sq(Bh7}7;?)Hp{APm4W1fY zNw$~FdxmV~z4lmXG0@?GaO+ldYJ3XCMV8L!$$9HDZAVFJT~Z*XoOXc zY)txJTs>*VwjWV5s_{lQ8t}ldihC?-9va{~Gf;&0yufsg`A-afoU?fLiD5WrKL`(( zJ7yb=JK-$0Dl`1Xal>i-a|4_gaA|4(2ZNTbJ~ud%Q+u6?dQA7!Dtm=fpZ#GW9D?Uw z7(D6BGs7h=g>BP`>%%I#hI4&H^kiAl2c^-0etczkPG5d7NR&7IX$U~E2r7GRXsxts zM){p}dK#gh=tRTc7`~vw*M>lHNN~4Rvn%V&hIvx-Ne2}avk7kv@vhELg~V~AhDx($ zkF{GfaLo>`l(!j~3oJXbq32!dI+4{o!vd~<&RavE?U+%6q?={lWp)Rg&GmPNSkz6b z_NU<P0uKjaqqvo|JppEnb?XjbB8$oxgo=SjqKTQUuORdH`{iTsf{MfY-`z z!M* z#=at^kfY&7iDMm%K1$5+3n$|UE#roCRxNdEYjS+->dW<`AZMcye!Fd)jbYqon(U0i z3jOgTFq&)_C#18Xm8e>1{_}+%|g`jO+~$ReX&WJGmH}C~X)!qjQ|L zP7Y!iNeA4}IYumXGrDkE#;>$-Vd?v*@YqeiR*jt%&5@JP373B*ei+?6z|!EuX2|$7 z#-FicvRN=bjPYNLjbiK*I}Us37&|mZ&JQ7ut7Lp)4WFDSf1|rNi8nfMP;1W>j03IN zRyt(T%BWG_*IK>+waM{=9h}WsjbC;!oqba&tD!a9yUu=~lv0B0N%Qo$ILWk4kINyQ zoHH&!$)5qf)@(XDyL34nV=wYH;7l)5q`??wu$;kvH1olfZ7@c1Q^d0d;|L`;Ld2BU zDY>z9JHS{4u5b>4#v$^>S7+MFm6dzZia=u^R)=GO#t}A*{nR;Td`tS2AUBE+GU~V_ z>J?-R<@(ZsAY*`?e3F@2I<+mu|KJ-S&)se6DCx$KZ55+G&MLSH&Wf?GI{VB6^ss@i zubp&OR+-=GY&7zjZKf3%Wqa8N`aq1_P6@YXxl-iNB@T4IiqWa&U!5zP9@{Nrh8Yvg zF5F;z7=t?uF*Tzdy{UOs<7#fKc(1B4hgm4ngN=Kv<Yyb zTDrZRlXyJD=*hv4??$NcYYumMMonXPT=SBe#%H+I=fjNy@i;e(kRIng5ylYw5Gd^} z?@lE*{B$<*owZ~Ok)Q36@}n)?S+~sY@?)D!ezl}WI|g4i?9tQNWVWZ($$Na2qmU`1 zQmmddtX+L$C$;pfu;-$Z z_*s2pKfIsB8x4$$?Elh4QVnv^-{2xxV0G6wwEnrRbgGpxBYoeJf*t$Zigs9B0q5BC zXzkErFK=-L{361qAZT!{$ea&exBfr&-UF&?rEMD~VQ15&SE)O@SU{Qu3j+2I*t^)f zg1w-Cy`f+myPzI>!xp<>?_xQ}ax7riV*&fIe%EBOk>~%;_rL33xYqkU|NFSsmbtH) zOp-}5nao`GbsrAvm2RXEn%8V9?RytlQ0qwG)5WzyudKQB>TyMnY)4}~O)qr4TCd-S z0AoG9Cs}u|=(x*lOv}SgixzjhczeYY;(uot7f#ML(u5`T8+PK{%7+f`$)bCqpO2Z8 z?X~!~vI}oji8gW!?_nwJ<%g6HM!Un2(^C`n?AT&l>bU6fEiU(|{;1Jz@uS-EMZfp= zU%T~4?*lXAd!(eMSrshWZ)M~j9)H!u()Gr@?aJXn+P!<#8}B;hjh)dxvw7+;A#{wvXfF-Zthr;^#@z4KYY&K#A=v^`>T znty!vW~0&W$NzODG_7+_qwUake#hf>%@5V_cGo;IJQ_QvcIf1GP1|k>T%&KYBJ=OY z?K|H4F@$d#Gk*KRd-md;1IKbZT#T;${A&B*3FbG4I~?mebKP+c0Nj*F55FghNQdl}ln9Nt_97{u>KcOy*Cxispzd?vl15HRzOwy9zino-7i#o7JVY-HD5Z?BJLy{LGBf5HH z^$XLhkl{doE{SK~Q7(>`)X3kqctc5yODi`H6O8Xg{DM zexmakx(w+0pXf=3UIcneMoIR9dmu>BP>fV54#VKEVIo(K1y&3JQuAkE#f~hnqHQ-T zTcIsSX^}LzVxuJ(8T=C6y^h4w)zXbzn1>g|G%07kra8w=BMZuxuOY=O)LiBGLcC@W zE}G*QD=Sl(@%qFO4pUlO6UG$Fj9~CxvZpWe>CcZG&rGAT(TL#yiMiDDZGEGp@37eA6 zb>Iurvn0ols7n8>6HfA6O^mJ0?vk9uFX4EVRJX9Ca|M_yDbbZ|yj)Wvx*ZzPjl8@P zZtd6_|`iUf{w@+5)7XW5Y$ z{ah_c8s+3q(pvheBUI#P$|!1+x)uqdl&~|kDryXbMSYWXtc+j>vnl>^Tp+j1F^!;veD%-cGWW4 z>$mt$I;8n@%RIDXi^SM$O2 z=lEgEJP((!pGwa+P2RxsIqV2Ler1{oiF1$AT4dmb{KJpZG48DK5Y?-z;X|_;bw1Xp zcO!kMnoRbvOy=R60lR)US#e0C;kSXwF*{msdJtTX6t{jl({nVD-&e=~p^!dg-pPZS zm_mpk+pCZEwp@lAEd+B?7bD5+!y1j61{qorMfTA2L8L!Mk-JFq&Ttlj^p~kuE!6nA zua46pfFR`isCTugKLxQrzKT++7J#h!{q%4krCbxsSEg9$sD-u2dc-?hqakY+Pj)6< zLNU8@>)a}5V(T93$d9N`%j(rhAag9MFMC!C`;neaa#rlbx?^9gWuFDHV@N~BNZ8tt zG6xclfK?#pJ%gRzh`CsA&qk=_eU0R}iLGb|C>m9o$C}EA#>z_h^`8^nOqUR2;C&NA=@RlP{9iCPHD|G$WRWrv&vfk;#r(9p0tjx&4sT#f ztU{B_K42ZlT!QtmN427P5W%8!pk1xN1!&E-4x%BdnqvLuP8;I85;UINyNG6)-j@0$ zcl|p6ya`IcIRm>=d-(ts@@@jxo;theh28BbaVEGQ_9PDmPjmo7paY4lb4jDVj`YZm z@)4Qs#8ORe$Dg8WuVByZ#FU=*ccSbX`)gf59kGRXJIuYEWruTezB@E9B7-hC5gNc+ z{S`bEu=r)Z0c~b=OdOnZ;z$7;hL~dZWB?nw(g7bB35dll*mR>_**R|baxrKq`?@n{`s+w<>cQIZNe}8rkW+UB8@_6K;sW-hf^r%mq!;yoh&oVOR6BsC z64;x05j92neQy$nR<=BiUd0PEl}Cff_mjAtU&iAwhRR}Uvg&xiFwAcbBiqN#lrMkH z;b5AMBH5nh*;C;?8WA|hkc>h*Z%cClGdW{1ACOF%X`*le`@nf=f{97g1QNL-S)=ZP z^vsDQS=&w&CSv$FshAIaxk;D}noM$O-eeP#dy^U0=Nr-iQ%U4E>~0aNPoIjTOC@(t z<4A+SsgF%#L+0IS@T)+&D)>PKNEf6txBJMsm}r{IhSFn^PMXK?OY;y>Y#zfc=VQRW zK)K@|f&kQc0V-a|4vvbKs|PQ{#apCEtyBN}(u;8mlgpO(6jS*x%KWgXG4kteXF492Z_n}Hd7l2x>wS0*m^ zDz@FgRnS!=+&R=KGmZ%Cd8=98gVj`mJQjJf@0-mU@MqSrD!qQAs@|D&Gnw&LAGXh0 zme*k|rbkF2&7-HGo(wy7ot$Tux()=qbqZ@rg0XWw+n4DE8kIi%JT{W=`~cWhH_CZt z(>J1j--ySt7HCL2VI*y0dpfWQ-4e;C8^vENEeJ3lZD!v?l}OGu7lS$+%$tT=7!Rg5 zg9ZZ{t3ZnxlnH2y0-a;fRY3O?=o^ECt(XPh%IXRv`TIe$sRF3B0(E6jUqHhZXdZ)> z0$Qg)aIK>oUI27cfj%^YJq7y4AYnU>e!KDLxx@760o7KZuHb9{>I-PN0?lL4Qb6kz=mdi<0J^C_9~txm zkX06|zAX3{s4F-N0wfC5fkE8?4OXC31}y-TsX$<1(hW}mx~f2h4Eh_8pirC?ZdCal zV6iDsD@KIs1gP&0*)a9-x&Xbk4#a(Yb}27FP0J^g>N;E#PObH5ay;Q+`|gZG;;Tz z<{JKB0>Yoz-3@agU8eXulEI#3@Qln3K`g);cJ9P3&MAy|)bXt*#oyNiaK)4!hmfFw zq0VIBpNL1lVaTYvH%*+^ znetzF=27RlUnG(ui%-r_s6}~-vtB5p7V)Ww4OqQ`E2k#GFEuV6;bwHU=7Q_hA7yH6 z`8cG?s0GsC+ec;HN5n^H-Y6%CiKXP3fK^#6y+7n99vJ#F9aJnGTr3?DN-iMYLd|4+ zB&3TA1t1gYBc#w(C=kW;G^%+h3yf?1kuM9N3b z-HMd0oZ6vamL|KTM(;HZY`91=j~D&;RSif&OUDMpP7qZjuc>HG5m_^{f}3bZ!UfTs zOg*x~j=1@|I7z)s#SR=7AstnTSXgdAZkvf7mQ;8X2U^pxZlFsI$8ooz8 z&BcmbB3VNJ)FhY8#aL|VXCb<{(JiAn)yS!sb~=&W=2A6ASr<43YkF7on&*mUJ#HX7E)Sl9Y^b?!?_w z{L0q?^~qawkpjHL2^=?3+U|`rz~BadT_p!!(UIrFSrHPh5%+Rcr4Jg>jpso5(1{{f zjfCpN2;nsD>ZW9*PP~kahI&zqaz(oZ2LJ1?4Q|U>PFRJ)a}kDos>9hBzxu%G?_X?U ze!-pgDmNw#o98`+SEf1ipf*l8r0lBVNK<}jIkIiG)> zF7D!Rms43-(x<6t&97C6WmiWYpr6u1UVt)>oqhN`?_$In&Yn)>* zaSR#;wRw;rb$PXPx0iU!>L2MaI()zV0y<3F^D8Wlznpy#PG92QB*!-U-u*RdaoKJK zzxmlUQ_V8cT@IYGTYsnNsjNl;C)4Yk@Td@6ZSugaE2qCnd34|W#_iu;bTX|!e9(X% zpSD(a9%H&CZ_AU?%}pC#eSFJEhp`E_dNeKLz#}6aX3nTSd%m1YGauP^onE@rpDWX2 z`uDKhR!Qlfmv>t=>f?uq21h?{ebUVNQF{Ew(b3`O$L(BKZbj)1W@C+fn?A1LfpyB} zt~MUvTcNI7@|};{2bVjX{ouoZIiaWY7dm~a*Jeq>$3Kn<2Zt_L|3iCs!j&QGhP4~$ zR_RRZci$d=?e6=`vGVONHOIW%uxay&Zl z?{5d6ohxr)z5b|i$Eojy#OjBtI}aK0p?q_v*M;gMYxXH%O@ad%bLGd)9e6C@Owd#D;VClGYdttZaYU z{n8c7RFXGbY>;#!-2TU+kh~(M&9GF;Z`u~4y(A!e+nR=Jqm1_0S`~(7eYebO{y%GB1ej& zcyq_K^S5^H`9vdAa8$0;CvIDsZ+$6wjCi<$aoMcn262F6(XyHS)etwgkg8Ry7SV3> z^1@k$p8Cr9b?+2mS*8@`mGNu^I*~Z;wnp6_Z-zg?i8&-{OkJHZIr|FhV4&A!boYQB zcB)3jX-J{Ay%RZ7U}pFK4i(N?AEqksj;C%1d6@jTht8yg_;i z$+X?d_%^~(Z_II$oSvN&_RKff!M^fRfUv-qQW|MYR<;zA3;UWMn`zc+sM}`NB`n~` zGv3W$Hv)-tke!BKA~NZuRU()*IJVBiMNT9^(WeapkUS)*)b4jyN>FPl*(NwYUIfu5 zq4jKo5C)_ULl8oUBK?4jV90!iECYgYFsB}i+({WBlM-)ZWiP?bR)9+{mT~-6brcu& z?WE%3N&eIO-oH>|Y3oG{up*C%Z8&~PT{6CNa!nGHeSJD2>|h)+W!>@<;(w*EL}yj_ z2*ovwMgXBMVGr=P>M0rlL{__HjsMK0l(vav%TKBk|QM=^)?%8c%q1JB7TH zbnR*%scf#;kmD`r0|N^K}~xHq(Mq|Au-*0 ztE2%}#UP$HlecptL36*H@I~d1xdv+!ycBsBP$vCj&uPqC`J9*Gr zsIeKE|)>mhNu&E2Fy&&AF^$vsh(4!Ai7R}Kp+8l}|XD7_~@ zSolh;t-^>xBKi5hLDuDgx2;7_+z}!^v8OQ-i%juY3)`VFTaOQ-Vc2$H#_Ag)OM%29 z%k`HAXQh5qMncKXuBZ}@G=+~ElNyyp7%Dfz_jNRtLj_IYsX-+ij*&H2cg^#W#(4njVQf=)DAqO5ij zL<{upjMW6NOz2r`AGARw+>68dCDS&s%R!Z0x?)AIn?hW8)EZlKN9%THbd2AT=6aGy zpYl{l=TO}h2=smmr*_>;E zU8(Mg+&W?X;l~5*5^vBpkTiLL!A%?JmHe0`bA*NuMC(G8gdTVD)_G{%c&Zn3*$i4J z@&%S)i$mCP$9F!fQXdK4V1eSb9^y21h!(FN40|FNEmSH*-uUVm z++1TwLH1USS~nKd1Vu+g-gcnrkPVBGpo*ssU^+**hjk9BFn{Qx~l7GOz-y& zgq=F0*b(2ELAfchMFj$9Vp3#Qu>vb+VMtFhF*%?vMDkl|vAm|U!L=fVbYq$9u@d&C zIX?@izs!O6Y8okc(Nv>unue1||CuRlNSAeq${Dx*0^4j}u>x)8QN7`GS|EdlvD^TA z-~3_)EEZ7qO1`mx&;fRT5_<_m8?>7sEQEZM!u^qNWm|&j!9~T|?${zQV-}IfNXB<_ z1@$L-NwNG>OK`?ZitU2FP|9Eb}_je`P9}xT@0KFXAjtzWPG-&6J0e(hLuz+}X^5eQXQcOGY00yXsrP zw<4Em0r|E}ggt*7N#3yE$J_*rz-{yr`&|UPMt&%C+i~A#$=Mdjo}LANzAS~lg@;Bs z3*auXzlv6*)vGJ)1n+0(&jRYf04DA#s{iUPI=`6^t?XWK+6^yZ!d)|NpSTAEf<0_| z`S>V};CHF$0CX5lG}v1#zZZb<`-<`}?!#r=_jCV(?SA@{CD_oXiar5D58yF8z@C6p zNPj$7>=F$=1V4>KEb|!BZx6Ff->3Ne?SBL!*+&+BEH8IuA7Nd}p~BzvMS|=OM@>w2 zA2nt_fpz3K%a$9a@d@~yoL~n=pDtk*fXyU!2wn^Fh534tYGuX7qGja#@Ka#0kxXO0 zddq2W5KprT=mR9Y0`Qq6TvwV-Xml3LFp^0tkn?B4CM0U8vIF&#bLigBlgLlyHR>|w zF$aF3=&DS+K$#YWbW{592xnm5B>6>~mc4}O@k>8jRoxH3_}rhZo{Lt`EtYS48LfWh z=PjxpdIimXg_V#WuTua_uN7o9F^v3&UgOudDexwncP<7oi5|14?)|J!(;NpK6a0lo8ufv{6ZO1};4#*yv{ z+HoA&=3U;F-AI?8-~gX0^})$Ut$T_->lsO2)ZAMZz2PrEV`|dPd`f9a+?&<{6oh11 z@Y2sIM<}JVo54eV#rvf&{RP47?ky#M857I7dk@`yeuKA!#{aW3SLIY zuo=nmL~Xji*bXZFMTY}2)J1^?0~$*qMhM~;|3z}`v<4O6Lk!MN*&uLA>9>G?Fql$* zc&`_%;<7K$FOe)S;~}(A@ZP|O63!dPkp6*c0og)Jiu^gH&;vlP8D#U4)u($& z`IPBCC>8yZ_*&zDfb=GX-o`ylR!S}g{u_y+C66i4RY3QO75%2*_OGxQL-Ku$RaAe) zb`}l1Los}`f~NvsTnv|9k@&C-g9`9<2Fq>m{uL?MJlddo4GlYT*%t>={xz$(3ZU8y z>iU}GzQZ*EGMXXeHA!~Hc>zJlExOqSWwV=rK((TfX#uOrwg6sVB*zbjF7LA{!^sFo zt(GB!m6Bsoa%!=XzZJ0S2^iP2sDeM0;!l9Tm2oOD#oHIk`%}9Y;+39x264-?4MBdWYfmJ62sK1q%n(P{DdD*kE8|6>RZ4`7t22$L}Dj z1bv3iDW$HX)Pr|yuiSgK2b=d`!oFu%6$PseELy<^D%faXlND_Bdv+ZF9Z;Z~O0h@4 z3Kh)u18bxyp16g!(_ZL<+~o)#(B*t!yBy2PsHXy(r(jthnZ3P}-=6##8=^v38d zyUmRe6kVjea@zVFr;*C|Yi&42MdUw0#+6F;H)md-|9cc`S-uPr+k6tcyYMfRsMe4> zqf^oRGDYs}F$-(Whrzvq&UIrNo1>a$4`EXu(yAnndWX(o?w|Zafdz9zH0!Rk*lb1m zEMHCh+6CMvr3x^|SmQw$UZwUHy0S087f_D=Ck# zqzpd$!X71>HT@;zIWE6Sr;2sPoKaqtfCG8UKCAmCG z=O*2$r0vLa&zR9XOw04UI|x;S+WC=~S~@dnd^N3?Dd#FJ3)d!@a&V1kT+W*m?C_?$55YZu62~mVzkige=5NM7%g>gsf7~$&t1Dnc5Ttu zTfHxfZc6@_Ok(RI*4yZocyr9Q-eXBFw$mQwE=j5FwGDXEW2e8p^thuomFJ#I!@6jj z^89QBvD#V2NxI%u`;{Z9J+)p^L3izPjx&>H_tfs@$lram9#W^?+GQMPA${&cp}qsO zo}^i(mPVbLtRh_oX%nO_{k4`H#E-W3)0QS1dup-pJ5sA61^qCxDd?#U-7`=ta^%in zt-DlXkT#R!Y^A${wGzjF2qBkewu4w!g0>R(C&^3D4(9%pVuom=IR2fIw|1zuBFn2t zY=>#9qd?8K`hqV_#Uw#?Vsk{T1WrHEyYwjxQIsI4p=oUBbTC0pid zZKWpDwQo62B}L9eTkt-fWPa(waDk5mN&(&5cDiOFqF42F1ww5W>z_u>ZzTimhWm+gtbVqyp zoYJbL+e@^)Iru>@U841r;+AQr;kvEVdJtSBR)V0!KoV4As~ySStp(|5LX?UeT%o;8 z9-qVsEL({YIr(!Hw#G$F<;c_JK%cL|qd)@I;sPySqfO(;k|jWEtkrJdxR27~b=ogz znKZ4H^kRdyEYE90p}`dA3H2|X1*x$acg%irYqK`m6mL?JKNa^(y)D`!9Ph1^6Srx9 z!$9QBHWa}Nme}{g5u=DLF}pOvUTU=+gA#s!IdZq{Enm`wEWhyW4!9W`8{_vnv3wbZ2lA+1QhFTu&g5v@77w->3l2erSG4STRLwph<`rsP#N z?)SKwI%UiF$yyguGY5CYz$4mZj{g=Sz0O8=VI^STV0;Yc)YLhXc2l*%v}6cx;zDAl zwGSujk7!GgLpfTl^yrw@j^j+E5686y9Ip-~F)@Cw(vOqcSsV{0BDKicm0F#2=CpPU z?tyDsC#lU@dOK`cgsaf(JiS#Pt;02HeofT-*F5CKlVm>KBmN!=?9EcR7x~F!WP}v$vi$nPJ|*y;q>V z_3g!v+$`32>NEGwjLh#LJ%7s`c`5aLow(pLm#eJmX!B~1e`4Z+HJa<9W=Brjzm8q% zXtN~YTfG03Ryo;+cJn9ZRnE0c+q2HwuU*4iQ_Ph5lH8o;&A90PFzj#C**Aq z|G2iK+R;|;PbRNO-6383=Kt_|od)j)R-4~K>(E;@KY91n1A=}g3F`Re=*w-Lc0W$Z z+1<0zz{(%mHy+#j(5**n=8Z5O(9^g{0Z(4p1vKo@f9B%J6~@*|v_5$*;=)iLwcdQe z{iLm3&G_Xl?)3dUYFPQoh0BvRZIU)QpLq7R@1X9-N0vWp?{f3EZI3$6{mO4z)GTGs zhC`j6-nOhi^~K8Pm5lb0AFtc){?hfn(O&CUv&Q!?W%?NHIL~j-N7Tt0VzieH@O(Fe zx4SFbNvN>Q)h3Q%UA;CM3(Srg@FhI_(`ci;WUyFa)Og$UY7@Gf9bcX~TU~qW(wKm$ zjg0oUZ5tlWKh$%evHYMg6YFWq_P;mUg}ayT*iz=mJ)>PceA?~{<-ZN1b`m|KbiHZ0 zdJ|fHGZqLfTRY;-%k@P^Jjt$;RggvHTgLnveE)7sCTBG?+V9uh+f`-piZ;dr@(n0> z`r8+W+eSP2NVBmmJDXiK+80mvIXlF^X%_4x`HXI~yjk#Nst|0faO{U2?X7}uZ!p@| zr{27OWBkI3#tJgq-Zc4KxmtIly|LZH@xOa#EH&Dr`$t&u>f|>@`{QN{b$gd}Q;hb& z&f9jjKEYk8HX(^MX$wQDbtAFP^39jByjEYR?$vX6g9nQb&2cl@hrb@%7Lp#3VzfW+ zcYD|^@6TFB`*rN~`g1ORU1YR3Szq*h{kUMT(Y}3pY^{?kE>AYvA%iWR-C6X-VsnzR z!?9UI{Cs-lmNgz>#LSUzYd73#X0-jE4%qbK>$1C9cQW6fuUPBOz4c{#F0^jj(`XxN z)!7(#v5U^QgNHY!cB}cg^KPRZGOJd-Z6C_iG}>>5&l)|@ri2*n zYe^UO+J(m!Rd~6a%dI>&ZmcoCU$Z>!y=9{xMtfqrQok8CG?t79?9_E~cU_|k^^JC{ zXn(9#^vIJ&yZNBS6@nvNl13SUjWxUP_^s5$L&gd>WUu9aoA5TsXoob-{d%eYgji$w zD}($qPL^A~%V-BK)ikQ`A}7FTdk3^kbDwhZtF|oY{86_yH~?FF#Qu%`4Q#*Eezm{i^C-yA|gM zy1G;f3Slu^eB&&8Ofi>9f@bz4Z|Qw+l5r(L%Wt+I@kbl#E#vTAYHEcANo(S3KT1{r zSYV9_BU_T!T&Ll5r0dL%@b&D@U8Q^+hfgn|j{?L?xFHFV@p+5O^Jfzr_yx}nNv zKBjttAY9HxlQ=4EPGlK#{wc@4;-i!xfHP%rC+-f(re%X=g4%Rbu+N)O)|$*Mqfy!E z7yEP-iCWYZa_Ds&UCGM+TY|jv1jvBEl8T(kT1ZLX5`Nw)m zKeqq#omv6@a{ul`v$-8~1~P7l&YbAhm$8*{JLuMN+(T(pCtc=0bD2DU$)GOij%Uq& zOZq)57x%l9*@&&{vU@j)$-6geP{4=>^B)~*o>o0z^@-m;)_zcszIxNN!q4uN$VkjbLq1*uI^PURtc3!MshdjY*Gl8(PJ+fq$9S4 zEvU$^Zff};Ym(hVS57_077I&uq@agRqc+$>s=$$H%-B7|a<=FMzaM83*%O(2oDrVa zRnD{szz}?l8;$vMxd*t&GUMO?>~rov*X)JT9+XevN6E@DU%{Sf2Rj{~6`hAe!6y1o zuwhSLH3;zAHnAtcoTJDElFJmS4J4ZQJyBY7vUx(UMprpO?-QZA-m2V|!w z3p;VyQx4cF_rh05&Z(=SdOZ%Yrq{3Tg!w+YkEZ{H+qXQG`d@UywD%=HhIdhu6I6EZ z|JV=nc>)ez*!F08Ck^N_P`C$l!$XTSbsnf_wv zhjRn=R?abxFI^+huW6r8%eya&@-z9=W$M*Kjb2uYOVB=#Y%)psS{%6>gon_w2NVb>FQo-pp{r8E#((faBq0WV5yIQKq$B(JuBygrK z8q0f0Gj*8A(MSoYIxmhbs5z0ELjxR0T=(GWq+qsAWv!_PJ-SLkRl78=8%r*if8;^Z zmc$6;wS{BF|F6qz^1GlwaT%$mEUV2@d`9x*Avs-Sqp^lkK_ot)qcMf#A$b^ER3qJ+ zTz2E{E3PAW3#4Pb?mY)Lu^qSJ%j?>ULavRRCVqyGPsH^=iFPs5HSC!+= z(*-71a%hn*299jO4+6^)WZ03Uef};|r^PyFj=L!@I}yuFowYP~iSF({zolG$$y+LH zw5@p0r~bI^`D^3;TINyZ&QbG;)!X0f5ghQ`y^ckhi+Z8XgO{A+x|E|%)pCXIkv%MS zRXbmM^XFiaoQ(IY-Ey6qxwQ8{={&(=Gf6)=9$}f6*^1KX<+@y6c{7ofZoA#2iy68a zT+!<(Q`qU|T%~Gol_E!nMEUJBaxSU4N>@v8Dn+T#=~ok+WLF2vX?Q8k^n(aGJQ8Ur z)ZA5|6D|aJky6tgKxfZy4bE2;Du}5e*~k^VtAGqjVrO;r5iqR-*PGxm&EN*G z1{*dHLzF=<90qOGK;|j7X)t^uH|PXaRcL__u7!<{gr%a zBFOIGir76R?tiQadUXUGM{ztdwSRd8+<>5UMO_1`;e1k}K$)pUB5g6dgt?ZowQ;%) z5PS28w`C7x_iO~-5nMg!`6QnPp}TJr(5quuXxN~4l~wB0<_NLYf@IU_DHT4)S|Y4< zTXw!NIoRNPJ4CF22yz1CN+FG1?R9f z65so+RqB`B;ce1`#V*aGCGGRKv7WAMlI%G53ay9rIP{oPHRY^k*InxwJ%Le@JN#A_cUS?9dEr2Ai1d ziYFOVKGb(T3aApW#c=sFEuUi-xg(&%Ig%u|4V7ELWE6MW?n;V4Mq zdL7hHD@F^#c&KlyHgW`^(YvlCNdGm(PbO< z5|zj=+_0R6&W!2=q#}?=hID2~FCar0lE#olK-Q4h4XBEW$3aLy-t-FKy9~}vhNsR~ z*q)?ti%t}(O{TYW`bKOaXZ3(RiDj)qax2TC0VmO81s`c*5S{{l$KdTgZURZjZemb- zPl0;I6q0NmtAU`548;K&0FMeG7Nl}oW+8x8GN9qI8FU`djVZ+UI|2rLK-z&MY}bkE zAoyF$bUzs;b+%*tE}z#9l0$1eioAivn+aO!bRA3S=Lu1&53>UJW(OCEs>^8sg&%ocefe^`O80Jtewz=(AX5bZZ^5Sthq*x z{aJoCjs2-1X}fhQp3MH$Q!=-A>$oNm2v=7o(lypU;uPW)xb!%>9_5q z$;UAW<}Q8trY!!jrmS?kWj6shh}MA$v~hdN|Xkm_EJqsii>?WAMc8k^)cZ z^eSv>jMu0p@#l07G>oBKz3+r-h}2f!U`aNd(|tsZndfy$sL}6&t}@#bi7L=RPrZLN zD?zTEq(qc=wUR4ufZ23z5b^$`Yf8R<@-Zitqe@vzHWzgeUAaaN(onVo$0CNUe$#botiuGyQXu)(Nw#pOUBV0xTfp%e>lI&zw0c_=y4Z? zsf=F&U-Ztmb$^;-%YT8bq%L{7UZ#knx-P4|EZ{67MgSIc;Er%1!c zIz3+d@sD+`=5pve^W+(XYv<;PAb^{Z$3V*zUy{(+-p%H3%zRx#!|!mQV=Oe8AMt&n zGq*4XKRYD_KhgCw!?j-aN|%W9b$^YwvwSH@)N5T`oWa!Bx@2?O#A-{^9we)3c`xE$ zptBP$0+OpNYePHjqRUJyKk2-s1qHek70IyIJ4-m9#k46;e9-wRRsZ!t7l5kWKgt(% z@kd>?pVcWxSX7^c`aDg!3v%N~)xYTaa2A)a!=n8=lA!BZE~H;rq?MHSRcCL?O=k^h zp{O5jJ;e+s)wgWuVlulhc=nb&u0)jO8=PkFMn_ zAlgHzpUrksYQXDH@+fI5=tH?pQf)zhl`AdRDFj#xw!BF*dwY|n_PE#Of160KnZAa- zvDxkM90VcbAo*dTcO%)E)y)@LR#lO~Ey`PymA&pdNk`4}RXFY}JrOrDeyN2G@v+eF z2A?zCu`DERR+loDzFX)$cp%0i7E(29eJc(Jm1d*Y(Z#d*PA(*-;Zc4JAq>bt&ka2+l)>7M2`Ua-lX$e&!jM5ph&q2T3c>brD{h7ktjEm_FJXJVuXM;w--pJyBtF4V zP^O{%P*)=lx#l4ra?Kq}|2%r%Ey3m_qqM$U(H$#ST1NU(TEC9xPlm{`GPAw)9XbA# zY>UUcH`d6qpgjG!K zJu&OMW9%PG9W4?&^l!J^@cZUFGYVR~vb9WkTh_E=k2iy+Awas_tIsq0Txi}!`pZf^ z>(-#7yGZ#!eOOZLwB#|R=WX#RwL2t9wTibH5;Qb$cle0(Rsm@pFWPQ8H|Uz{mZoFF z6TRDI~yLGQY$7ba^tzRCH z^LI}7l`DqoM@H6P)V>}*MvO98w^xiA^SEYkQN%r~#8270d)9BpeC_oa8Mn{BRs#H4 z4vGr1cUTqV@cJkTer4N0+8Lxb=gqRuE}YVDtgpOyK)8Kfv{Hvq{aO#>(t%Gi{cxM2 zxf!}X>=IJ3N|m1~6fNb+nb!>#I#u^3K{@GK-rts3chr|d1j^t`D-mt(BUW$6V7Ya_ z7s>W$rs2Fv3dQ9p2%c0j7*%an;`fhVh1K?X!X@dtm}1yIs&6%N3C3QG|6dYNp`{k$ z5G1x;D*RH<7*t#jQiv>eEPZwG`_#)@j3WuT#zUN-$LE!SWRI(^Q7<&$%g#W*>U}KG z8>`xM(b~N%yw=OH0&&kysnp@+zzQnIW<_MpjgbIWmnXSd zr!>Ob@>Fi4Fc&&oa-P3GRuTf_wG=|P7S;!#t0rBquEU4uc}&vWhwTu^3PjGnr&4#r zJl5_&#jTb~SzHBBJ(xN2#!wgYo%o(`3?aS~?#PbVbGxC+HH{ig=d!4z z#f*x0*;OLjgIj1gp5#-UUNph1GIbrzn%R{#B44@+NxtZ#SNmdG>}wS^_Z7zG#N>-y z19M_dRaq-!*mpo!7tDrjsY>Fi_{s-y4rc%AB(fFS;3KBO%8yU(^yfd&DM9Fz(m!ser8Kum~e1Y+$7Rm08d7upE3M#HK`OypAY7^pT)7K!htWBfT zbbWD3#1x;5OaU^NA=??U7szpvuwXJKe7rFwA{ToF@UvWuL|UI^YhQwI9qPoNFh0qL zI+t>dNLDHAqdCydKhZ>nP6C=nQIXp!BkKJ?PSzp5k-i%KVV#A&^?L4+oI~D(WXpb? z@D98bAfTIl3VkbbDwqv9$*z|KLbb z$lxi>BC6gA??y}UBy=+2k#<#I5z=!0+LJe(wzKQ*TJza)w_}k znEwJ+T8V-OLXf{3i92m;U6Mxh8&0YVrR-#kUbw@uK@RNEmy+xz=mRrKc*+ZmD{IGbYj;RP0NO_F)v=FU?5B`vLrgtl9cRj*K0nwNFhKe5tEz) zWaDqm>sKH1>h&SJ%H7W2Y7#!M;o`=NrnI&0Kdo(k)%;bx`afPRw(GLiSf9h2v(f9G zJ2f-bx4vKeiIW?iPs*(Frsb`G6G<0e{%P(v?nB}+)mH!0pWpcn8nAPYX61)c73$PF zwtCMf-LOO3`hB)@8!<=Q@WW02-VOT>AAN6JtJZ&X8!a`y(c)o1WPPsj;mkLVPWQdG zEh|sf)Y#pq>D(kK@9MI8M=#dDZI~VOp=;X8h-L4h_}@=X>sBdlUb7|HRvm2{u>(vx z={2)eVX|gHslLWD81d=;vH`WmN1n?`?Ht}~Ym~~S!EHyIu<@5)@uTgdCs?aSCHC&t z?ys*+&Q4fbGiJTVqV0Wu>woL=i*;>=u1SwQ!OfbqxPQ<5hl`D0DVrZ_J>@!bD!#%lE^S(*q@>a<#a(9ZbD zQe~HZqPpmlCG&@at4rmop;aptttUS=DFCJQue0RUetj*=`F2=*)k21@A|erW^|m+1 z$mSSEzUMH?rT+wyxwo_{$-u&d>9@)zB!6;09nrRF0&3}EZ$S=HNqD;n5UJ_mtTJ_} zqJ*pTt0IS|B*_+TD#0Hk<5nc|AcUdlz+D&$do_t|)5OQJBX(hi0dV)KBxZn}JRVMg zS*bc3louo(PzhTwC=Ma9wVV85k5tMldC~$Tq1e!90>`;>aW0xI-AZSBFia zlrV|!Bo+6C1kai+61os8sB4*+Xh>8)9}J;ssLCN2m42%&FP<+vjE$2pr1YuBHumiU zrMQXpOiT{fBgs>*Xw;99<{Pjveoc~r8@B7B+ehI~Wp#R7NfXr*4|k)C4{U{dB_Q zrdZY{`E*N~!DW)daoBmTO$9+{hSl$AwxgVAwxbi#kW3<3y{Uc^it~?R*g-vufskFS ze4G}|*=I|s<|Zc3o6Dakmd|nV^)0Zl1x>;e-LV>dW(JCz-ZQ7zIR#JPi6@D6; zT*w3Plm?x|s%!8qm0H^yAAh~EQjP$k7=I3cdAyIji-mLV;k&3WmA?u88sM|=80vTJ z2QiibB>RCk7T2%iJMYhd&_f%DyDvqfwiyIY-eCEHTF}M&3s@H4NOHbGTrY!ed^;YL zzM*X6pvPFdKRpa9@sI}0ZzM1NpB;{CJBls5$K@|osgGiv+;#NAfpPMoH5?6Q_85}( z`zraP*kUY}2*;AN%9I*Fbp>lB;sZJfy9c{Lz7~~}*_XSl)Kx8+u3pN*eRAf;6k=z) zSFhfhf|u3=IqoEf#n*}#K<}VJe}NNeyfay`PreUUlYE*-<<5k4lW0)We5&-9(XNS# zvn9cmkSFiQZ3-68Nbob{ZT}q&G;JzYSRv*|DHihA_8tKDr!Dkrrr|@T6W_%X^y=!< zF>N)2Bq!q2f8GpyvqI0W4?F1`n9pXi8&$rOt718{FG)XzN4$VO5KCbvrLvH*zLst( z^}1BZfXyZu!HIICj-QQh_jK0ixlnUd*PM%QyLlv+a#&a}2Nvl%iLZ>fs*8|bzm4td(>5?T zw#)lcYqq1O$zu43ECg4{V#kny^cqDI5ZdtScRO(GJ7ocQb;wTej&_lPl4TO?j=R|;3w`Hsi-=#lme60PVN-Y0u&J_6AkE_KB@(mjzDWC(YLbab>%EMR zTj$`sGQ!rq7$_nD<~)(RK~lc1F$j4;UNFRx*tc(K5FGZIn0S+}hft;lL+SvDVaOnc zi~ur$AsGx=4+In$y44ki+ye5LAu5t}q>4eX-cRq*tV8qIWJqO()&z=q5hL1%q47X5 zFJeTOFmx4A%#9e)^9;QPH18++ouTRjl-N;tSlL?;iOt3_gaNJd6Ya*(en3b3MCUVf z8PN4V(UUSt)?C*g$7GH`@^esMkAn!RNb--&L$5?hGqYuwJiMVFCTm-9mL%aA%DEh( z?`6Lnl#6qwEE)^b>3M)$0vA8u1-VXR6g+=ZbLtX*-%nD|6Wdy>V zK%Ksa>5P;8Q50*$kmf)-6Ydz0M25@)vWRr0W%e-SERa9wR?6(qI|iE^q0dO{F~Bi6 zJF{}IYaLN&A#pGU6w90edzF$&THe+(?vDC7;Lk@$&@o3*m2G08MZ`{89j3#~YQb)u zZ9@E7TloobFhIJJGwHr&z+Q#S^p?oXhH;){Qr3<7Iqc8btkN7>>E#nRnOcPFi95Iv zkk$+tCL?5fkCx6PVvnsOx0V&ziX!`2ksA!j1M-3)mL%&8TGHVteGoEFqv9G2sRJa2 zA%hq)0>}iCbxJuSE`!0l0B18e+X`1kuI~-N?`&&NlJcRqLC_wfJfA}Bfp2z0vPd}dLC)FicA4@x0b{RU%#0`-$ znO&X)#o1yQJid+)BMnO4Bb~G(EWhb-SXDO0Vc}hsj%8F#vbP(KWYy>DtWlpBbQSOiR z{gOtNWsxP_c*qJCOOGj*PQyHTGKangWzvhK=VF>K$OP{|{N^Ezd&;Cbe)Ef^7Zgh` zES4rLO|CrFd(~PFgNCuBbA@Y^bXV+fqmrg^+_oxddJx-`w5PJovwweyt6w7VR8pO) zU*Wn-A|pz5F3I#90!^GL$@V3kp8Jm%TFItIOFBpW?S;NX1Tpl@9;C@jy{)(x-2{eb z#Y05EvNXAd|Cgidurj$Jjen`n=eccCT!DTQ56yb(x0oy(MFQXIYY4P&94*Da)qC<> z7Kz~vo}`N}qcd0qS=rT=O z*dKAk`j;6o|EOHRe;t-PX789HUzw0fftPsA_p;(B_(;wE*7xO> z(K$lUFlrc7B(miK6^V#4Sd$|LLrs$R?TCs5e%2r3R?1sRwqNued45hXiRBHY$+U0! zVcZzL;Nb5Zsne3VJ)pRHPqs`9kh%OaT4wa^YcQ;kE>&xEsLFQ3&GHc;+)kv z7qT6T_2i6TSWmLdQE!qT-a?DihQIN?rsh4A=@_p{3z7 zdGi^Bk~C8^#ic9@LGraStWj~vv=D@xG?0{fW@~uLt&y(S8Q={vhCH=5=y5G=9SmYA z`VO-;O=(~)sI5)wkl5vAMRWSTv$jqdPv9`($)^Vr`w&n?!1hv+m^=i(+vZ@ZI>Zxrqm&+e9+~vBli6oo2lkZNZuCV=E05+-c}{9Y7b(lbFouInrQAO5J1j~`tvwAR zcs@!Rn}(C){)lbi!qy)lR1HgGQ|!?Mg9mhRO5CN`yfMEfj06+DI&=50V6GT&c32S zklKV8u46=HX7D1^#-x&=(2QOoYde2DLwZj$dfBXnCL}qankRfar&TrtDz^q0Z@#CJ zJ-KvpyRxB)!~cGL)HZ+5>pS*_h|9JT2mTz6hfR%tj`PO81WmswKmM=MoWdQ4G8;~PGSy~!g2^LS+kvC1wS{0uzw6Dt0rp=ZJMrgRiu;JC2ZBK%#rW2WAB@<`IL1w57M9 zD@U5qA{F}5^7F}@?&ywU4ja_cj(!Fxt1Xdy1{h*FZmEG6ij z{MHbXxuH~55?!eGl)MuRfB!Q(%SQbx*jeTtC;O_^^X_~mgA)y5N%MSLKXA8S=qaok z71R7ht55H~cc?kx{*0HiXO77Ew99PhTW$S~-``qCH13tMrg7e>`&Jk2PBaxm*5$vB zuHI&lx=!Nv^*39TIbsuQR=EGciZwM3oH&_~|7gp=zM9`3oVRv7)pSSy8)hxDkIg-s zP^-__-(#n}-(!8mrQz;uXRnpdcl1d*zqv-xAGMNGx8G0j+nX}T^7VuXcdty-4NtZI zzC3K!qGM$KJF}djeTLLC+fpqi>u5q=X^U-JH$NF7a#uHP-ZNu!rMOv}F5lW&rNQ|A zw=7M4=Ktx`*TiS%BGO`*X}R2I!EcY}_L|Txu4(zPU+X=eaiOr+wJV|dP4B-MU$Kwh z`P9E!C8cdOYd5~!#K!0Sv+TmdKEJQf?M}-1N6#+Y&+mVGQ$v4UTEFEZUNmVRf5-do z#6jB^KJ4wNF&~n5reD8iQG0qGFn>Kiq}Qe0Q8}7Ea~~JVUIK91Gy(9Ih^ zbHn5^$G_E_dM2uocI!&d&*mFvrD)!DaWVhv+svabJ;h@Vi5caqyxKp%!6W-dfnHi| z^^1>Jzw6-A%JoG`;*C{@uirl!(9rIf#fTrZXP@4ZQ-MT}H-wc5*7KzLu+~nSG-DdR z>H0GD`ktHBYmXA|&JS%i*lF?Z(9VN$rf+z%_Y(PE?7eqX6-oCt+TACS;gCTx0^R2v zkc=3?F)Ip~GnliW7{)|!%n1yXSuu`bMvQHk88K%CbIxhZIHplYzo)wUFwVU1y6fKM z?~m`^`?1#Hsl97g=<4bUyTaZ$HpD&q;pORnHeb{_X5HE~nVZgc-aNAY(hJ4o2KQc` z@bK#I@0zBa9a9q2x}bqeYORx3ok9lpej4~|58r|LxBL%mXt{@bxo+{;DwPT%`@A%- z`nU_*hX)^a?`Ni``QH2ZS7S{*GkvxvJMuYG`;kHmiTk?0y`ZrkIM*yt?e|?pCCU9N znQ6}#?=2nMUf{@}?2xwE&F&d;H?|G6GW!nyxcdBBLrE7i&D||?a7MLT>%nfKbNMvwc`EhuppsJCvK_KyrK62oQaL2q~_xX8CM$$aQCJba+%$cwAxA98c$}vEkC; zNqS3_o}+7BeRhz~hePUEo$!K!JQe392a$vsXMMETuEwY`$V=Ny9I!b8t++7*3Wy;j ztni@E+_W&Y_6Ah{14ol)$uJytiwX=Ii~VESBP( z=pa{KELsltZ+Y^zyZ~8;FX<{n#=$_sIFfN@c>t^%OZt0hW7&5<&2UtX`^JdK3#XxjGKU^Gm>~5LFk4)ZYj=wVY{GaCA9gYNde`j z9Y>#dICP~wnQ;oI(@G}M3k+^cK1f7$X|l4ybZauz$gq2`0wYEB37UUwYtyh(VM>TZ zoS;cSd#d$-X1@;3L+M)M7$Dq@N!f{zKyJcxS$rz={JpTb9;_8JWY&++_5VOJ!BUmX zR8l)QlbU4Mds4}`>UO^3@gN^Nx`_Ui?4iNvOj=FT&B77YSyGvCA+zO&tTG#Ghh!5K zE$!-};pQk&G{MS&k+70=o>M54UUTI=lmqADWFO4*&?A^R)FZD@%Aj^~AzfUf9s$}S zf|o{Q?Ynev^9&fz=TS|y97+!7QnHx7uUzUw^9-$Y3iXrT z{>>$H!KX~}qi_G?Qu#rdWjI8*OxntcwE}ZgT8|=Z9xRfd|795}Ys7NwyI)00`lb0; zg{z?gT8$-_b;>f@83a46TXGy{IxGw8w0g{{8qUDi&=LK1~t<1QUO%<^S3Dldlsqv4n4i+ zcDd-KZL?w9@%f4J!eS|vcmQ=hyF-?sOI}(R%>F`mN_#Z9F|g!QlohPagIayYE;-(e za|m?<+HbGj@^WPImTMXfwARaE-FYllYdwFJGO6)}rZ|x3?O;5EetX=I-{i7p5r=^=LiQuv?+=rNQAnuc z5vqI7mGzIiJ*`5zw|I~aqN*5AtQ-5jM&~%LIWhHw)(mv8<$Em3g)}B6Y+uCYv z8R(#s@}jpC!Q_+D1y%Xx1a^bIO42Xkvo@ZV@~RC#jb->!x$N^xNw{u*ux4&4wcJvc zg>~oBOUTDxWenp&^s^9+v?EwJgXzs#xeEGS#=A*6i(SX(21}@f%S|kH-z3HH)&bh9a9_MFuQWScfoHcn zsG4_3a@=ug-7)Mg+UNW7-hnjgU*`c1IX{qBqQmJ~@yZWz&gFOcG2K$I}n{JBfu|C-X!4~ynm|9ViPws&T-b>h2k8wZecLX%r>yZ{{s%&(N@wgd4GpZL%VgLq&>GS%zzYSnxD-kzQA;1!2jJG0C< z%nbH=K_-LBEbPiMY&Vvq&~l?D40Tc6SY}~&T5d?Hgvxxuy#P~tutXmZnV0(@v$hAz zJnO}h%t0tyhntYOjvcLU`pAVxN*4A|>zemvnH2*RnKUXhdmzhnAB6n$Mw^LOxOEWA z)X2mu@Ih`I4pvg@wq~+S@4-rr^G_^P>sI0lhI?7^gBM~Kx^CW3mPs0pXlvrRo1)>} zJ)C89*pilL(HX|8=|*)jhGpK3A%1nNeQ7e*V_D{Awo-P~B$aM9^!3|wl*&R|OWiSW ztn!qHmI`KI9?P5qClTdK{Jucu6F5KqfWmw0hZ=Jm@kEbjnS7B)=G|);&DTGRIFS@1TUrbU4K_*Gh3Q=$#SX)-^1!LQ%#t zk1w-iP~t(nY~1mu^SO?sZ^$*68)qKVOk z-({Ht_vxEL)hnhl%O0>y_(Mg;;bnWZuKz=pIr6()^$PDpWXEF!dWI@c6~!|NuOaU_ z-uGL%c-qRvLx-Tck$ddqM2{pfnN7Xgro5S!M>V(x)FC$>+kuiA zrVhi&U&2c&6UlPSWDZ8VX$x=(6_izR%w-)!Qj<|{9zf)zCC6A1>1ibP3)*KUS z&k_5{j);~@Y{r6514o2GEhia;P1L$=jvSNd#*yX$iD+u5%%527IpwJ&l#Dl3zY@n3 z`Xib;DB|#k5aB9wOj!^|-;|FPvN9@|W1bi|vZ+gwH_3q^SKUk#$DAQ5$uad4lqYgW`}$h~$6TnV6pX{~ z5J_#oG5)Z2KpSc61Nat3HAH5b-~ni}mqtatYsxV*leoDoDsXp{?sv^NW=#sTTvCmJ zglb$WN7zTTgESLTIV^_fJ`M@gU1-5EPg`(gZyjrY9n%t}(vl-7zc~5pELw4lPb(00 zu~ZxhB8>PyL5Q)fIc834IfUj%5LqOX@{8MW%%L`%bVG;k3WzIhQ4TaFLpzR1Xa|B8 z6W#iuX$ekcqJN5DY3)&l?Ui6tKuqbN1iR9KV_t&LzrkBXzo+hq+;uePt`l0Bj_|7Mf$zc`bb?{`bduXVI(qK4X=o9PSec*XV)miPkY&nSBNEYG{+1a1DWs= zf8B#I95XUU`F={M_t;#Hu^1C%$GCq-i{f!$yeo zx0sq{nR%nZnx?<%6^K2MdFm-j3N}+X4D9_sAca^nuNHWXWnOQE zCwhGdac1eB84~?5gx6G^%3)Ja`bPxoI#r3PFL=Xb-W)S;5qLk!yhCQ*De$hyy!U1v zGmXQxm!eOI&oE7iFA}_3lqc_9QFSzXWWZxIDW}2<%)Hg$ZI&Y_HS;ckcTeVV)0IfA zrc=`t5uZb(9Z{-iGrtD-4JkiR)f2p;9Vk_>Fie0b$$x|Ug3O{T!7u(hic@C(1@P|> z|1XGwnStus!XsEcgJW>q{fm-XEwH6(QXl+OiBF3EK-6ab2=JlVfV{MoNwpjvQhfm* zyU5J(Tr$hw0v~(HXp&YlmAE};a!fE`Sw2uz*UW1QUfa2wz#3*|<$*P0ZaP>Sz$$pK zGngbHjFc|PVtHQk3KE|op%lMYzLG$AKF8D`BcPG9MHw^ zOewn?poaU(SAOq7I~U*!Q~3vwF)E}>HyPU^yRuYU;USe? z2|RFB51u#Zo~xuZ5X49lVS$w9!TF<^e+a}G8Yocp5UbsWK?3r<7wnhu`irMcy2sJ6UHU|ut&oOo8D*@9$^d|*2$kY_@q)aUb?`Jsx zt^TSLW{*ekcrAO->%6!HasXno<)ss)q@^vsw&VpES&#@@L^%=?1%0sB8?0HBC0E~K zC7@;p_y_*x-!bzaga20Ilj7cuHQI$7!!J~FTpvU#@wda{N3 z6W~WQKN744`xe=2ha7zdOL|DxMI1I&rrU#;ut?#x1TT%~?Rnq1rM!kSv!{SvD6vVh zpF8$PbIc|9u{!?%HQaDHAT!cu@3$D=>0%|P%|KuWJ3I^hF!dS%a*^3@7l=c0K&g!H z!9&UyvxN2^xsJ$}VTr=4170&ypjT2+^*4KrhQ}ll0b$*0ICp_BRZ6(;{VlKKmZD}Z zRdN*$0yWbK3A6`KO0*|;ZH%I1e2Cv*OTmVDGUYf-|foDMqT)_)ou0&UBIUOKGxPjN( z%o`0J3YGF!n|ZsyJ0$UR_uzaFzVzL>uAsFj7qYqpIFnZ>{DB}wQa*Z?qjNMI_)L^GoIKqCF&9Bt+=0I`~E0$+6iJSl-| z;60LLRoYcDPv^P{nFLY3)81c|VCJ?2Hw{FhLyEs@teHCl+yx*awnKJ@nOg$x2@vVi zL;ZD+LD;RvumC%6b?&Q?QA&Jvz~B)MnhRZLaQlLgVwq&-=7YNkgp}egGxr#{7eEwg zkdN19F0%%o!5WMiY``_ZA;nt<+-4vOb|H8D;fVNb6QmkIy`5(J>-uB*G?WqpLIbo8 z40D@GG_mq(gvEvbnUm;+F}y4J;K?VkX{2E#zJQ%X_Ra|~k%ZL_jv7B~fK4NN1&DMG z3)6|!ym$@EZV(f^dF%=3M%==~8W;NVp6pDqk}n_3vXP{YA8%Bw!fK@rv@^xYevn{& z$?Z3l3~V0Jo7`Qrl`6K@I+4Hp`B<1^OSx_9PMQYrJ=jiUe^gk2#t||b$mIY&4uLn_ z5Aa0ZOo4oV*@i4^#Rl?KbjU7vJgOM$qJ-ufOt8~HqD`ag`xVtODWjg9z#nKRd8H)%r1-?1i z7Zv72iq~K-$3=m+L*Uzw1Cq49$Y7g#B-597Cta$A>DZp6oq=!t_Z@rx-W&WZz?Ezo zHda2v&!H2_#c6$NT~<29UtiuM%+8a}_P>OUS$bH%F)5}tWLGF>`QIxWg_~hRFue`C z5J*kWK2&VX*3il}X7gnmvyl&=XmMcY1hrao@y9A-oG#{y>h*P-DWj|W!BJ)MgARD|CQSj?)NN{%|s!9lT1i%7r1HQEbv_w z_YZKpDek3kyDRREa92{?HIcZV;$8=LfZ}e6xGF2|+i(Xd?uT#-k=b%$C?03v zHY#o%ltQ73yDQw0iaQaSpeV)N8t!PtJss{?#eD?s8j5=YUPV{M?FNNOcf}pl2ShK0 zcma2B#qDg316YdN8}5FJy9eC;6?Z1w0~Pms8<;Cm+-|nmu%@^p;r;`q^yvTWxQ?Lr z@O|r!YixGzKuQjWZuyoS&jrT=JCh7uT>o#0zIEGm#P?U*ll;049loUy z{x`57@=f<+9E;|^B|LieZ`yjD9(gy|DIZM*-F1!D1V0?_VysEW7OOlOK8KSkcdeOM z_>Tb;TyGVg74u%&t^xQ>q6GP#`?}OJqmpKqkdC?+4#|LQ-CLc z!-0o^9Qf+>ShO@$*)r~PExW2iy1sPC}@2H`h$0v|e_4qN_gDsgHCpqJ}diNqL{3mby1cxS!dN>0cTNE31*NzM2{B>e~8lh_Bb4&sAm`~p`0r;?u!KyQ0biRXQks`cY$@~gSQs#NVl^jgrr*k?3@t+*#Lk6c} z(7TI7e2Bvd>v_S}a#^nJI@pCIcePQIoTVex85(Int6Jt-q>>UQsve2(LNMc{!V@X(U{_UybX`MC`ebe)Sb%6Mb2BGum*tVy#0f*na{%lFfl zDWT3Nq0W+D+T!JPp@oGL6l*Lk$>8>UD*4isudIKq2)_Z+l6@;)YRA7-5$Cl$Ek^W$w7WcX7Lyo8)Ieysk2B5)B%U*{!apALahg~+Nj z7KfCYg#T!%BP-MS;rhdh{1HX|C^2<~eAhHYc=C} zLh9KYgAIAmjUT3ep-8<1(kCe=1G@7A$(`1aN)BP|Xbl;mS1A=v4Wy5tA^AN}lW_k9 zEu4%HoMNaxmxgG|$9z>!_bHL@SF&(`tnG=6{*{c%jX*jQ-wSVDRHSw&Qai;%z4+~F zQZyUS@32Oz78msAqgb4&JvD%@qO>vGK)#x1KAM{xv|1d#R*FOLQ^Wm3Brdl7*`!I+ zqwOV|{z`%&%bGXT#E>pnkqra+tn3^3l)dpF_kaPwx4_xJKY{arAAl=>pMe{IUx1r| zpMcnk#i)?iGe9-)63_xz4zvWm1KI+qxdJ<&E6@>G1?U8fp#y$5IGTas4r~eZ0`>%Y z1N#I0f!MXc1OTT3gMll7AwW8?Hv;zqO~9kTa3I#?nJD1zz!)Hw$(dN-XJ9R$4ozfj zpc99A&UbKB0;4N%JFq+OI4}`-8dw)dX9o>{FM!Fw_rMe&gULZEPzP)Yv;npPRsyyK z#sS-lxf%Q!mN@3)EvD&=YAlZN6NIBEK#azjV?cl42_WqjP6F!yPXX%!%ZT3)J|nx{ z_>!p~5~p6C`Z&?P-us4A%g2Aoikf=*5hR##@4sYqn0iEZk5Ds1ou;0w@TjABjK4Zm zH?^&L{MD?MQ;(Z{hc;|Foo0eLT(`0x#a$EdZ+b(Uy3-TBmxQ89o-_fI3^v&~5r>J+ zYSSNPeh9K)+i+@qzi}hnnW3u5Bis?W!tkPuwq9iKhqh=Dm+|)5F^KpPicQTV!bJ;I z%`~gvwXfjyhwG~3I|8on@R6yR0=Vi(ytNfPY$sHBw56a`E))`VnFgrpfB*dnr&PVE z5UvJH;yuVIOI+&uDGT3gc=Hqo_8<|4@|u2WAE@q>U3;|Z^Z6^UfiM3^)To-*+ZVA|_x+hqQ{&G{crIa~&;1zZKB*;x&20$c-31^xtV1KbSk z4BQ6n3fvB)<*@@uMp;#;wmlfk&!K3@`sIL_hS;32~;L&DA4vXDu ziX1j;DZKA1c#|u5(<^v&5i7!~k#IwDe*_=PRZ|9iwp&_TiM7AytFpw{4xf1EwHQt; z9LWdZSk`YN`BZ>@6d$SgQo0UrAbp8Gq~$2SgzZZFbJ1ZevodN){Aj)>I};bl@EIPi z5c7Z-^aE1E><*;ug9j1DpgF;kFb!6nN6*BM<=1%jLvsUfW&qG0I1uOw9ArsudSI0C zWh~!^O_oD-;?ajlBc7kK`KkKVO3*bx`knkp8s+d8*%T2;1hO9M!KOLc0Hg!VpMX)o zpGl`Y{zq#6WCrgo29D!vvFvveK^)du+KSVD;K#FEyj)C$)_&5J}V&2u{F>aXa}TUmMxH`OX&zolhzaYGTd8A(oUn1ZDtTC{4U3^LcEdoX=k-^NB25M-Ke+TXg>$JMunay{UX7maQ$zY?#I$VA-aW zxav`$L_14~cD54jEYf2p{}V|~rOo;}C#`DC_{i1T5wEIE^9X6Fkyb9$wKf964y znC1a7bz$ZM>9;wL+?vJj<*bx3x)j--*?d#nWs1n6NbNcNMbbMP4_hM01B{K1zalJx zGQR=oJKKZ7q$^&tVRCX{A65F=rlsmt_Zt-4`GSh>dl3eSY%0lE&IfR*0$~Ll#$5cHmxb$YRNH14jF|By+Mk!+P-0#UCdK}4T5Tu1 zErckG9pfU}ui(E^A(0lV@om&tdp9y=D_;-kmu}^aE&~O5Hc0hheev_eZwa}bCWMlj+jt92D*PQuW~AU@YsbXv zTj4XOe{IB!ZTu-}z^nES{uwS73*E^NMx4ub@&Oi99cp8dvxanZ?G#4*;zBG6ckvdM zG%D)#k?42vtx__qnH*3Iv~f9Mz@b1oyBh|i?db?$8t{AI_X<4`m;-tmFc-K6I1)(p znWIH<7hlsBZ{f{h%;VS`@z^nbmKyOKPA9|8@yk&kJkImk$m#s^ynuxEpXZY;oM;Mm6BFb|>rJX&;6qSJ z(k}2G5E%)|kE)Qh7B&`>4O*Ql1R1fiar`RdsbnvtDoIkDYO?cx5l~&kN9snBFQVy7 zB{MIg^xVh|nex8G8+GRdEu|4{9 zTGQXto(F$z6ncxrKk1MEqN`Xc{)D~48?%2vt)xSw@jyS|1Yn3l(<63y90QyKoCRD7Tnk(UJPH*FvlSQA z0>glffU&?P!0N!pz*-93P@$VEbULsT{Idtb(F2YGU_an|;4t7);0WMvKw8u{fZ4#? zz#QOXU@q_}a1!t{a5B(F11%kpZlx^%h5!k$32+{;9dH@2J8-!TlbtgRj&)$n1a1Qo z;8x&bh29C=1^O0{zB3l{hee>N)kt?>EYJg(0Ne*00px&rKsE3Og?|8e1av9zDDa|0 zXCq>T@d$Vf9$I`*$AL3|CxC^(lfV_gQlJRD1Uv}53_Jyz*|6!{+T=U-8sW?7ia)J0M-CL0X72O2Vz<(@%sQDfzAcaMM*#x#}HZ> zfltI|*ZJoJFVFc2bo}AF6|2Ba*V;PBn%f)whg<07fri{b(xE{H$$!E7S3Cqx zqnIBeV%;cL@$w7)v6>ac1F!k%bZC?M7D~TZGWIPWrJ+lLMsfRFKAo*(F1S2_mYnlf zeTX}We9t$xqK!5cij5>`8{FN<^7p(6tM8}Z^S+I{)stK1^-AJqdapwFRQxahi>{1D zgZ`P{KvnGD`$KRNoBYZ5v0(khZLF}5L#9Wlg&-9361CtV_hl9~zBy$yqk&&#bPzeC z7A~`XWP?Ts)LI(QGFBmrdI+B6g+_3ei$8DEe=U9=tzZnGU5+ZxM-s6A=lj94+t}rW z$*(qBE7%}6)3kzzo6`UKj_dJtg~P#CdN)VH26t<6wf}JIf4nrhqKnHuUtkt*uM;d9 zn;-s}Tox6D(ePh|bN^p-2pUHEXAYmMk_#_OC#WpgIB|r%fSQ|1^m?J8pZWC;{rB6I zhEKW6`+uLqT~vC3;ih3bA)vIeqAFC;qAb%+5d3c3zKe{hrXMg|Y!<0y2ms6n~d zH}~%vwAc}E&YXu_^cDXWD039N@eRL#TugnQ6$l)PufFxQ6c^%3SHl@7iF9T~6n6% zw8Mv}#m|Z)`3a%YT!Y5lRi1;DF7K%!3;pnY=ZSm$gftav5CbX;j;yD-8Vvf+m)R^x z@Te(Q)|^w+`|HM3;r~wgo*0y)7nN4f{!w#DK@)>N$*B_X&mO^%ya^Kg1@r4zD!rV) zU(frmXpU*F$5qn5EpZiF1qWg*86@}5AP>SrnesYW0e7zFeN zMg#qT^@0AtR*HWIU=ZjuN{g)x0*p`hB>6_+S445eYFa>xU*c$i;}9G><_#L%%uL} zkD%)sDP;)`QMf)wZ-k)9}({ zf%v8)C(`oY^rgkv?;j~RXFoxHLl6r#pX4+Kz64S&Ev4!6Qkp(5lFwS( zHHC>F4YdReQ0RUjo4A~1Ur$@za1owRPac@qJ7RB}(jK^)#d=*MEzb+@7L8%AAh z+wXB_Mk66Ly-0Al2sm3G@fD_$KMM%K_1%F*ZQ-gNz0kqtMlX7NF6CFxJ2{ z$``ve7J9O5A9AdTun`Y3vZ+u>eh__IlDRFyi&Qlj3|~Kk6ZzCs@TJe7AJoE~#3TvM z@m{DmRM&>xQ7Z?lL4;T*&05$^p12N5$=oyq2^O6Kh4I3yL; zN~hU0J8!; zh34epAA+s;OHW~#)|y8&@?Q?|Z;OTV-XJCivDd55EIxTZ%t3O;_^hpLsY==jLD2MGB2d7e0BJtH=!(61AAb)Ey)20s8kG^4B@RMk*T(?C%>UcfDVsU&QIU;wn6AP9Meuc@N+~)kz&&LWN{TC@zmx`}niB;dsZh;oD7sD4 zjdYnP^wjrOYAv>QN`Gy{3loKR8a7-!HC@16Ua4f$Od%T(kuS6XOwJbqylF%JJ>sb0 zD1RvbaLcoU;yXR;$csLD3$yOnFI{jJtqX+7S~f9ZCgFYYkn4n zWLHM#M=L=PuoBP+L@G=aFccUKgnpL^2POg|fZqW_fl0tPAnkl>06PI|0@HxCfIWd# zfpic;X{w#`M;(=S22q!lIDeyXT8(i~pRK}kj7HjS69z)Re0ZC%hf``s&LY{KtP@$k z1NEspIkQ8kVp;J-#A>H7QA?GUuN;Wg%1}RY=YJde~0AJzA$xx z;4+PXwSg^xLxJspV}b2~lYlwEb--NUQD7brV*_R!kPZzfO;-ph{RlW7_!Kw=XoreM zX(!+`pg-MWkPioLy44Q#%z}diYz&${m>tjlQIN-(X1>#T* zvkzDVJOJDcJP0fS9s-^Ko&??io&sX5&YTtx?iTK-D$(u2@?TE(^npFP4DKCVs*A!32eqAlR8lNAzj?MADAL z)jM8KYXq3JSrHSp

uN~Se19M}dJ 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

rn8#zJO`23z8)VwB5!T$HuwVZ49@O`y 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%0D;h zQJ>fBle5dWd2m~A7yezKtmjV($5aMVAOeF53E(AbUbL3*4C*LL5{)`G6K6mduwcR>GJ&{(kY}kSofdK+ zsaJ7YpkD;p)@4Q%Q9h~`TZM1yr)(%Xli)Xn=Dj#ff7lg<5wNXovfuM@=EEc&M>J6w=vRSx{E`A ze`tdc;iaJe1_TSfHuP4H+`#XJrC4cfoClH!t2!lm6aROG zl4?h>6m#a)MASxbO>8xL%T$nBK`cB#H4XTSBRM-KIWo^lfw2XaFc{1pD=Q=fL#m(h zkRk>D{sohglbsd0QzuE7wIs*H!lm`kV|v5h7qYP>MW~(s3mdeWUZdH6I3D>A#|s$FwfzE)$LvNpzQTG;8Cm$XP}$_c1NxD)&N>s7 z^}Z6F73mSe7usdLkIGb=XGo;b+fO^_p`?w+SnBIa7ssfwoKEv4+UhpunRZ#HBaXJ9 z8ctDk*5SqPREp|nD;um68nm00>fsulb(91$su8tM@zwlc98v%96yEKqtc$I)gn{`A zF)A=DImM{lY`%?GT+#F_VZ?udF^iT*?nx6Yy?S6;?vu!`@>na%j}MN%eKwXzg02RD>&-a4y@ zgc_(i7!UIZkIp)Siy}D&Dre)1{Lr+>8K~-}Ro=r)OH9dV*e(kPy%?2swh(1e<&pQJ z1fsq?Ce&OW3Ek3>Mz72>CZVe0l-p$;jmoC}m272sDB1pC!H(#o95!a+IG}UrTM7w~Q@feM01fC1plSu8xU{VGPPd>xsXq zDh%IkvZ>11psv`FWSgqo3{B~B2Eo4fnW}2aJELC#EsKV;;|vxvcA^N&&I}`R!S{>Z zpWJGy>W*E}ri2zn2U#oBV?`#q$=4^7plT{#WUTK~P33L!T|cs@nkvHJwZU|9rJBmw zHkj#Q*$(}65QmHLi-0cS1!+3rFv5HfJS-u;W-3$LDBOc`RQABHCGg&WT}XQ~mAxC) z^3>D!n+sO${9RM3QhGzCo2e8@6}@OrN~UEBE6P+8^?jS~>Ga4{IaG0UfApn!$!kEX zF`m}(rz|yBsnV4A)+_$#v!H9m;UJ{y>DYQvV!2K?S(NmdptrI&AZW@dfQ1rj81NmS3^2_eU#Te&1)wcp1fV@&5}+esI$%w} z9Kd>jI{l2p?z!paozvz?%AUUBDKMC`}m+q!lWL z1LAoqvjE!yt^}k9UJFc;l6;0qX(o1ssTW2LK&WJ_U%` zPgw%!40sjL1(41r^Z;dm^btG+q~kvWbVa=(zA^=%9bip}>&jpt0~r$Wd9)qZ-&$2H zZZ#Iy0+ky!-6rTUSmpz(&C}=|qL@r{4OmT{MyFPa$waR!Y46D-J5{G2uDWya0aR_j zI%Vbxrv_J^FW!FVPO7>*?QT$fmlct!)^=?JpS+q}%PHuQrJ2{(!rIf1J#N%sM3Bjf zue&BJ>2BA*_Kp3Eo(jw8*rRJa$P0Uw#1NmfNH=pbNs11&CdI2vr7T^>VCm8?Q9<%w z_*!x89l&qIfgxl>4OJv@Q6F|C=W3|dR;;YD?~QTbesxrNGY)~FB9Hzf`XvN-1O)jD zXg#0-}|-`{pQw;G10iGY{=?PCe~~tyqK*7 zwQzr+V=C0b3sG3j)1`-io~}b)j7wBdB{IU0_JXpQ-(9m6G{OPCbX8laLxxh6R}>Eg zd7MC|t=YvW7YM55vp}zZr$hdLay4H4OYHU)3MSXmVR(@``{jmbC|KNW4WeVWl{vS@ zj1LFspI}eHMJZH)|D46_*AZT?7ds5?->&YeJ9D->dc&>?_M^{^@j6|q7e0?PLX+e* z$c|SjMsb}m|G44`F^%v_-P-u(tN1*HmGNo6j|_rRr|LbRxOF zs=3D7@v;O!Y}>}w@l(YzOebziUDYB9pmmUH1M^+IroL)~gxSXVH&jiQGTXWB;i?F+ z+cxwM#4iYA(6K6hfhbd2Ac+XuZcQxqI++oR#wrO{zqzX4kF)$P#5-FxwnH^;QNfqy zuX*0sO|0s0=kkdqwYm>ao;>yH&C5QajzM#ly3ClNtrL;=ZbsU?b?NU9tq=B{vvq%m zb}M%uyKt!1jPrsaS_pD4T}v6J^I3@w5nz69y%ZBXdKXX`Oc1)5PoUyH(afqn|;9~JbEC?Gt(8FJ*h zTKKSJjZus@>t7!$4C3}QMZxsoDP-7Fn1m!BU&OMg%CApiO718KD=r>QEMBCrl3-j7 z2@n@6*r`D0k)&rS3idak2LI)-TIj${*f22n4f|8DP5uZA@>=z6VA-HV_1FSwg|#kl$#ECVFS z%A~5~To;inp|2_|qUt>A-(}-4u?m|TP=Go0&TVF9Ta_{X$MdOyDnzs2%7qV7J;FBO zrrJYPQsfh=ldNJ`rkwK|qmoORH(dLPs{Xb=T)$-h3`XMAYSe_*PnMMp-ErxnZ|Ts4 z{q4giXlGOpw9qxZS?Bc0$(F;jQhhUWMCTS{PTNqn@6fCwsn_k#59>$v-}hl|+>>o{ zyL*av22^|9m}{G(ieikmUsMFT8x(#L7|Ef4V;)@KLe+)JbUIy+Bsg$QR;fzxyf;?L*|kKi-Td}Impc8Kgr9a8AQATX0XFB6A`Ahi3?WoqPphrC$!*W z0F&@B$fH9uFhUA?lZN-KF<|kFygJo38^yF#v}6`bbdlH6L~vRv;Tm zNzb_orif^cz$E4rC|3juG9ysR7f@uvl7dfy?n4STsl3V9&(l0e=~r)-FR~M`@R&|w z8(dQ`>jla_P>Ohp;ccLAD;6#`;C!y%)*@_El-mo7j$uH@f4At!Mfq30idgLD_^fou zx<{8T(vPT;`U!J7*hs=IVNUn-<8$0dL-4e6^y`r&co;v&qGZWt)wqAodc=Ieq7F~$ zEtCHtm0viRTI10VHrKu_M>aw_q05n7xUg6F{b$GRKRa%I*l|0soi0ZRAaOZ@#*)ybtoRjM)7T~jN}a?(+yie@%)Yg8&C z6>o4PO~bak5sQe$)}(ZPkqbBHh|0_W^~;Z|>=-FOObyxw3AZ|}MiL6NA+-v%GS2#> z%1`n`HZu2Tun|Y2p|#_khg{pPB1_Mze4<)BUDm2sa(~IVsmq;nq)86k)@!Oa-)tkxXSQ*$^$*d9 zLZ-^CP@btY3?nh;W@CwRdbJ1p9!r$3!V<;5aa#%d4%|Xc3eMMqu$zSiLLj)sI%|@A zQ{^so1UIN_w>S^p@g9)kOu!84IuSLh*iTrAC`g%&T;Ht$G@zT1HSHGae^>fljN1+0urGb z-3;SMn(sB{`4ovX2n@g>fV`lU@1fk?5d_zNA>nFYtS25fAjJ(`-I-k^X*m`G2Ozv3 zC2N|ND3EG~r#uA((V{8Eo~&7cHgd@HwMoj9<;dGgBkJ?SSP*;hM1635o;nTG`QND9 zgtmJ?)d&M9cNDWy6u*Y*g9^+GyeKf6K%(j1!<%i?km}$xQ z!PJuoMxE0nd`4LDH3?BXQu$dfa};vARx-+ed2W}VVi`i0G$h%u!La|~YnmQacA&rt z)wwD+VbU{|8*H#vJyQ*2mJsQ4)k-mOByO7y_>i-oR8gd5ZF>t+^DmVR7y3fA-ax$4 zktFR`+Y;wvMl$ZpD>QfW#XCm#dIPJAM5}=3{oQXhckrzW$&$>8?2~GF#qb=4=NM)w z&H7T4%m1vhW|-xq=!+_!wn*H%st&jIt15vZx-VeVVY4NM^BaE8WeKVxPo7i^_A zW1I<2lx|d0w~Ox~Pv?@X)g7fjWa6`b3KLJOYbw^-Uv4F=I0wwV=fQPyQok^*5DvC?xZ=P~sHq++(eHc(61R@#4h}(~0fJ#F6%Lw- z=EKf#X*+DIl2}W*6WQd#DTwRXG-wHB@Opp{;HP#MpSR{Sup3W@fPdGT#v9bka~Jrq zbS4CZ*R~`N`&_aZEEk8_LDA+wEb6M=rE0u~>z#R53E2YFCCjlx?M@PDT|8EeFFZ-9 z9Q{t>F~0T!SCdfY~im@y-uLhT#U`xJwc>>OaOxPl*7Z~ z5OjKu4M>bXMoxmRE;@uypChwI@0DQK`Jp6_)=^LNLEt+$s&OdlhBblH14;3_tM~nI zhRs4j1n>JnVtzrs`Qy!~=dWeYFl3xTrdX+Sb8IL@66FXBcV-JIFdOX67DR%r5r$+c znCk-NIVhjN&(m;^=w4R!7Er?z%kJh1wgb?fq#!L#!TthtmO$MEbQe!$O30cPhrQV{ zP@a;qXGayRNlWT<5o@zuLH@iT7nF+ZND$L_BD)gk7Q!fTG+tME6y-ZY71N6DltrYc zDVW+MwnhZ@^jc#duK~!-aZ&9QY!c8hq#T2@3xTc{sE2@-2-N35q1NbuWJYv!arG!c zV5lEO=9B1mN1Ykf8hQiHrXakTxj?_wK;4M36zE|G%!Smn z&TSx;^j5HVUuU%ub`h82z5gk(n@D)L+J-w4qDBtw|2}7s_yM%B>3gZjVd=kzf*c4a z^<29GR%KF=i-@lzODpARB{XZOOZE z^)6-(*&3mq%+AJ{QE$ssl%2|yB%hr)x4KRG$QTe)eerdO}kmcJbWUvp5kogO{V3n&*t)Q z5t$gT-V!;+sA9lCb=0&X|A>T$-VyN$y?gc4*`jR+{3LuZb1+O`zvJH~Ja!fTf|G$} zN)mgioda*-^uWqMz;q!h$4_QJZJ++uLX$FIC)C{ooK5n3sgc6+#wsbfdE|o3u$VDt zhKP2OkG<3_(iSm>qDhRYsHtVS13HLC^-o3kg$Tc4nexmh|rJ z=IP;luT&l%F=n`kT4q9~5Yb5&JAVv8403_Si2N}cwXQROr5+tciBcYZFuv-Gl`2!u_4O_bg&^QLyp>*O3_}Zmoen*&Yu4AHkFk2dJGvyDrrMV zz`zd9CR9)ty3Hex`ly{rz=7H}X=f^_=PJ9ttfalIq=~_3s$waRBCWHffP>hs3o@hf}_EjHZ=5hJ`)CUZi zx!kZ}>aPZP+QpoX%bl=Q!g;4a=qBO2N4t_kW7Jkmby7S=?a9)|q9GBxN6Sg|v1&7M zb%r=*A9XR=jAI&zG^l+o)TWG8U;5!{X9n6--Gm}-`K75X9NeZ^*c!ywo}IGxtRyMo zbBEX`$;Q`Ik7}>>KY!?6TA@^u5D@ji`{Ko{%QkaP4!WQ17FVE{@5{#%pifQHC}e@^spB@Ak^*w+zZ)~wun>(K9R3(Ts;CBND~W`biT$!qTY>z7x$iQ!X|qV|sN{KwXYwIfnUgYoKP zK38`2DoCtuGPG!-{bc#*XCs^kzFhXE>1pq2VeQ|?yNIlAsjp>hxH|h1@%}|U$S6g* z_eitad;cKJH2*OYW4cY0^7gtf*JOe^iZP*|o)PYI;gh~3Wyg3pJ(eq_tg8f8EF|{J zI5~HEqPm8}GKl|#P0>&)@@UsSD3E)fre4QNcDqeGOjc*A>zT)nxLMy+#G(cL^CAUb z7I;hYBO}9!$#iu+NwN%4p%bLiX=DuMb3hAO|v5Ykz3sPH4i(@ol3!Fp%>)2 z-NPi($0(llAc^y_%%O2GG_^=}SsNEw5r#R8eY06XBp-F`Hq0-l2-DddMi$3IB+^op zyEV+sMz>6D*P)3nvYF`CA_B&Itw{{6i;WhE-nHi=bI5G)G4uqp85u|NXx-(G zXxD|rxD?5aac{PCh52DG@`6_FPk<^SG51NdyYy}%ej?HP ze!L5~*si}I+}G+4t74L}@Rq``6VO5Z^{U3{C@c`@`9O;*=(kaLM%)(O!u3#}bkhOg zS)^=De+AnRXiK8OP;5V-sRDHY&{f28(Jh7e-~i#6MIaUP4aLv&q%R=J2(uV{eFnmY zouseDh`oUhp;YX38d$Ru6jul}zXLrY)bOWq7v^t-+R ze)w-Vfy4a2Ucb9o!y1cwvRb{=f>DwbU!66#G++JJl%|J2q>kqU z$Iy+<4E$=74~NtmG&@kJ_6E39sE#w9h6)-9<_&48Qb(}#y`0KrsMH&*(W2IQG)yOP z=hgm})N_a`RV%!N{K>-e>Q-oU{k*!S)oaw!A9ZOu%(o;ZGkV(*{|jmf|BpBWisraB zHHd|Lv7{!ADNzv!M}y|{N4IT@@VkUx7yPLE(Q7jKg1SC`R_S!1#&6t8xHA{j-bTz+ z?(HAysf-nMhpN0r;5jzL{PYDoF7Kv#os^lzMcz}J8wAuw4gJMHvz?3Ksgjr;g2vt% z3`pxJ&fh88mdkjc{>U=vT-q~r3iDsDpJQIA^M4$YAOl}-)kQ3SIlKJU%fHr45>Jn_ zsN>{l5PogYoY^ZGNgvCp`FWaa+TZ{B9QQe}U(?*%+jor~6ugH7d{8@t%;*zRy{Bqt z+TEv{77ki?yZyR}@AuwvX{+w^+UZk#*FEEW+9(b#T6FZ+oquR2=lyx9U1&i&Ut6om zx485V5OR#RZ|KmA9q4q0*9eQ>8}V7txxt^*MP?OB;TttCI&ghunhh0kz_6)E1(D!j z|8IgwG%twwkAYJWiCF9DNKVbq^spQ+!zM9ABLe*{{e$u10WW)5DP*WD2lziYlYC2! zJ9`$Zo6DqN-AXx09t3V&hH@rZW4>J>-G=?)J@Ag`8t4ueLS**Bc4>zUcWIU!>l^6& zD19aH2v>nV*cBcSt^$1`aJd^#XIr^prAu-k_wa|1c1QWM8wt18xJx}D1g(UMGz7c7 z#dYsWq&+>6G_5wtrj=h|r?WbM#Dt+T837lh^RfMVJ%p6f%ASp2Y}AxwCuhlxr7-mg zgP~4K;%|d0acj61M3em62zzz~b>8iaUF=Ujfd-p>4CxkVwq0Q3xbGY2Ffc?$p_6}D{)KJ_ZfjcBP#l!Fn};q zE3PF2&Y7v`t{%VP;>`8-W}2I#e9 zegwn!z>QLbOCaawol6x2zRf9Aj?x6;cxQlKOCkPy5u50J3NL+1Y1TH=Q39>jD4s^N z^UrS7FYq>9%wd5{3Ya|BZPPhze1H4^CB2urz zFHkTIZl@1cl*f>O=*HAyxV+Uts-xyN&F6@PUGF<$gt9{CItFCTJuiF4fVdqPO97vx zz(*n^DNq8^t#|B^*LK&q_a1}Uo61%O_>I-$X27XD^%D%ss;cGH6#PUJpT_st~PY)S(s*kyOY! zM=_Gudr$QSRC#5}6J>e~X_SCf<7qy640=RhW;_jUt4KS&;>z;sX=8y}@Wcsv3?ajT z!FUQsS)#`fG8`Br70`C-F@y{UX3f)z^_Wcb6d0rzv@6$Rh;1#d2xM!e$7G_qz`%29 zWZXaj#f8zGR+wUe)=7^ccq}m74bW163976ydYVi$PEV7GCIh27M-x#xupT^?si(o$ zR8K?HRA3OR(2hn3O6ta=i}ggAhybHBnP?@j>U`}QU|@*ovO!NnUR6B}xx9cm@U;cN zy71T@JxwO!xJ5pi87z}bocuI5h@+pzh1l2CsL2OEjhwu#t5K25bwNAt5857ojSE*0 zpt)R-zW2V;76}Gpu6-Cnr#Q*VCR#V+gC5SlKQR71f zglg&;(n$w3r1bD@TW)u##@3h_&z)$dc_+q@+7_CQPWmC=n>rf)mmx_&OHC@vkHP)g zQq$0w`GvdJLE}r$$GW3tJTsQe>8Pmzu&JY_pT40*Crzx3nZWhwtr<)ko=Vb8tT^#k zrgeUN;tr$aTV^rZWY(0Eh~chR)@kB4hE zHPckmf)3|_Wxpm^D%=O+w`rpt=RQ(XlVv7x?NT*Y8D=c!HCEFNBXeovHLr|+sGCg3 zJ6tuvxxCdvr?i=U2AX91MqCRG^P6zwSh^tspP`2EgvFAnZLdDiior#q*g zu6e}g#F;K*>%SEb?mO{lH0SfNn_XeS-kv^tBU#_;dxNW;H+*Sh6&X{bQJ1TO21lFM zF4`Ho+_cnYQ^Nhrg@1Bur)iQIqn`G@Lu0iTu+E!jkt!Z9Kvu1}~WEy-Nry!=!g?T6yJhRUyNTkOhpx<*9+{j!9wvk9L zy1`=4osaEHUeM6I5zv4v^%Pnt69>Z+%?lg#-n^>sjW_mtY7y6uFz)Dv!v)lV{xN`9 z41;3P$PmhtKrGW5l6KbnTx21rZ`%aA&1NLe3=;NVs5g#82FrG&spDlAV>wR#a0hCk zl5{LYZaE1Hj`y+9deQj&bzH$d0{T{H&P$Uvm^wYW3qqW<84B&Y6QyaaJ04HLMg1|P8K7r( z=LJM&yFgc+=xf7*d`2J}J^_yDmE?3Xag(}Wo~_k`ml6@jD`kU5aH*D#1$}A{VVpdY z6P4{P-3^jjAQ|2S{<2~Wi=KFJJq4k(A@KIZEg=lP20+L66hzou;2Q;U5zt~i`5Evp z0@*1Zz8~?z0b7zB>3nZ;Hz7>0#b7c7!o0V2Ajkg&e+ug+C%vUN(dAJ*jg-mzsu}gd zVkN~(oZ3sUjv%?9NTJ`{UaZ14UHJ~6Wpo) z7j zNA5(<`=X{sH71d3c3U$@68(=HrwNWx@vAr{g%!t3{QRJ3uqdZ^vAkGmR-n>uuF)T{1O6$!b?#Z={p8INa=&w_jzc%ibJ^t0>>|bq;ZF>Dl z!x+tPeRjNVo> z59XQu@a`Q6cOmL$S3Sgyjo>ul=|x_&EtRm#O(1lUq>riavdDzCC<%+3!Db}yy(?Jx zl3fxuz#Q4%Ns8q`Y**3H)|Vj^%&;ce?>D;S-g0C~`OzKT>`1IaCX#a3`|!tjx`|~` z+-5_>A>gNN`9L5n z(02lvu_du3R|P&T^@I=-U?=#^bs!9-pAC04=i^ewkToS&73^m4mV+ec;xw0^7|KIw zrS1BEvcDr?cJp1x8*0s;Atoi^=csyvW>qAsYx_w5-%aqSKEu*h>-aCX@ULQWMFQix zw|g(z8&xU8MNPY33kA%#st}SMIa6M{h$4Ho-T(OHb zgb@c|n`OoII$W@;_Sugk_)q*PlcbNsx=@32kKfc8sC;HrBid!u;ZnKP0$tbMYajOi zWyftdB&A@w z^lPGbJ@m9T>`ajYTflMY~78wBq%)&Uw?2cn#D z&Rsel_@e59_4ho?9(Sw57_Ek2JD&X+(fPGtO=eEy#d}w|F_so>pbEJR|F5@Ls%(Z` zLkV^ueo^qt8rf9b@WCGN3G*cCCUCpHLhG^0*+ML*9FWTvVEApdVL4WZlvYc3mu6y> zbJ0&&5xuyM6F*!Rdno?I;_DoKNhbG)YO@}3U5y}8eC7bI9(FqdNolRIawD9|WUPvE z$jFgFa#b=U0U&J zZAs$8qZ0PlC~DM@ek4S1=y4b2_%>wTz7sCIOWFf!1no`Kk@q}!gKMS+iS^j%&3d(^ zyF1JXxuC9RVg&LakW(pH!7LCc%Rt$vZwTivxNYV})6K5URrY zD#1RYw@_ENR(Bf-s-_B67KazH-*x&8H89&4ic`AujZ8kyYy>L{>JsOKwX1&zfpxO& zQRqQRhT(MiwdQz~XI4~hL}4d!8;(leti8AcHotm%iAy?=!kHVr#AO}GU-Ieh{35Kp z12wep68DM`7GX>9F8-A504_XOJO7{KSl*_ts&ATQP@@YcqL#S-mTC3_$8xt&ZNuIj zAed60@;$hw7(M<5_$&N=!Ztuvjivux)_4EE&S9{+u@-ByZu+$uO;Xld5xOEwx+Nn$+rm+C|VHtWN-GeghiJwF~H! zM(qqJtj3kL)&9aVaRh_eamle-1YL+B58|}HB3kUij@k$u=VC`~bqUjfJnyRYW!e+x zZrbro2QIgpb|gy{_Qwf1_10Q4Onc5RLEB#nxTwGOgiJ;wxzPn=`|sV`W8N0|aVL_s zSwB{@j{hklfWxC!yWPy!9y%Q`(&a(R1^)M5Kgo1An!J7}IW$4*5S4YQL08rAd`WTK z?V)@BdU4rc<9`ldtv)iHUp|heJ)LYVirIB z{=^orjeD~4ypEA{5%Ki2Z9QRWyaTXIyvwV14(O|zh|1FqfBrj})cZB*<29x90X8H>k+zj%EonHQ+VPDu2kUu<0js}X-7d>(i2rLl3UO__Q zqEaIViFA2=@a|xw2*F{SK^&2V@RuWdh1ak!1TJ0;$qQO%+X%NcjQ7Vg-iNxu5iq^y zz2+=CL3F9#9O_?4AM~%2psy_vWQ7}$6&?z*0w2)DP~h{{;QVsEH~?2LxQO%Yzct96 zzax(p$Y~&FeMjCRkoSPB5yXdE0_77ZI06+P5U_@d5A`7!Lf3^+B*dGoy4P)GwU1ah$wRug?uo(55YkKQ>Kg{9y6NI8^G zb|A?u&nhH9-w0L7br9Gy2I}@0{mMN8h3FXK8V&_P_|mo#@z5CZ$4adiGo0ky?B^|= zh5E%Yf?4OTm~UpCyJPsknvhXlV}G{N_t7ft&(0Eo)JRR&XlZJs|2B+f8%(@Z#&E&! z6<*7qp!fZcT=BmkjAq$-Dp$1QG-7uMe;I zP2%SMs?~~_)+BZxIQ_tFT9#qjkm1|4EsUv9@d`hGa$vi51Ji~}+Cc@9R(w-pvQxW{ zc}0ASv>iG7T~G*+R|VSYxqGw=jrmSEf-hAqcirv zwN@u)ns18MX$_bbT>B&15<@0}b3LP#8!?ew_$6(RYClxEj={TMwLM#0y;EBE-?^RV zM{oV&lR7uA-l`(z(W1yE$`DD)$`7q%cClM?;|@pduv&4rASo_u__&g(^{+NuH@DH5 zbEd5#x#xPmQ9| zASk%rH}%IgULvu0O!Tk%)Kc|p>@fxIEi#Z z0JvWONwga8E`0_3dOcnz!kW{`j+E1WrAOiZ(GWa;b`bHuzE%#M13W1renC}YH+YnM z4ub1_un=O-^>!Btvxk(?N@dS5mW4EMvw>jFXpwM2!umlRK$w`;$dX7cAv-q2FN}{8 zXHtrBM?xa#&faI)HwmEH3jW}0P=3=&ICwq{l-eBv zM24Ww@VA1}X9>zLTJsHLp*TXPHW;9dU^`iS81mN|5cap#pZ@SI5`>wE_;L@bogN4} zGy|dlX)ow%k~>xd0c`U_2U6MyYAAmlZcG?>;qzFbyT#>biMV4NiCJ-5LC^kXoJjPs z6Y7Fo*naqmu=3wpLm?AE4bu?zFAaMLTi^3=T5Ee^0*Ds`u=dzUb??oG)+5TXkleQS zhB7Gufr^f}OAQinMtua~EBUFngl*6l(Gy6-Ctrw*yB8wj5z1qUW~eQMkb;F0@iiEb zUJLV*miC7!=K$eRxb8qh4_J|QB5OSQz@dZQh)F0f8bs8S8@Y>%2a$Z4nL8=%f@^*> z2!1Amg*bq;r`Tl(QHph5()O?~Ju*}fUGuuPlQ0uVM1BoqN2I-`4a0{0@Z5SG-I*CA zCC^TgI|Rb>s^QSHk&=UsLOdpHis#TC{Bcf=fc@jhZ^wZxVL$;Yl{h=rKbf9w>~MNn zIFxvO3bByryx46iR62Gua)9`a7fiZs6f_*Ej*#W#n}+IvxLl^+4Zlnk}Mj0HvN=0 zzQUW{5^>%f;%c^!e`lm~A$`vm?y0{Hn=vQmi$o)`iQ2FWuN|D4jmNt{7&~tgvQWk? z6rOLFh0sziBFag4e9IOQe?vT=-HTwpuvmEJ#kcXYIOQT{7g>!c!@M)tD-pLxgxtS^;@|m2fJ&DzX1+ zDq)wmTO}u@miYEoqinr~f00=#*CUX92s-nYBlp)p%ekJ!3=5J|qddnAkUuw&7Y*@U z(TPgx3&MvD-(FX+&VYvW$aFUPWg`qnHj&bajocYul1}M-r{K+q9I}OfgN&)0ZPP7S z50O|uyyDsWkXX9$R+vWQ^Y$!6`6s5TnIx$(I_GsnK+0~r@KE;hbBz=-yJ#OLd;{t( zsATtHee%108Arc?=mUaX_T&Rt?j02F5Df()ZE*;q{2^h2p|L>Nr661+mS%WE{Rg6f zrwW&^4W_gAhs|}rCf%621-K2w^dl5;7CYkVAV41^MZypsazmFe<()E}y{a8S~ zE**aiT~6qq@D)7am=n}Zt89KKz7rY%Z4%0zNW^G-H~ePc`jc=LC$Z-AZ1%w(DDf1^ zXX!(9XMKwC$&v^Q)P*0%nJ1t;l$4~RuWMI)a|cRn`4Oi6olg_1u9EXX0g&@6_B~%w4A0Rwb9| z;@EPctwQ|pvfy-A4$^0Vd|(B*s$uT^FD zqkLMZdJGhKy3vWay8E&0RjkFX3TrW-9Z32VS_9WW!{I1TzN%l0Ek|J!tyD0FNkPnM z8&dacZ5s)wR|V=jfyzfr`3kZLu~g#3utXErye6D)z%{Bd09hgKsV5BuX`Db>tS4;% zsetb+gitxFr#}Y$oj|8{@nYNS!l=I2p&2Diy8d8Y_2dMQhw@}$m|1%I2G9$>H9xB- zUk3S((3}sa!u%nOUhNN9Ym)Mc(HrQ=VIa5tMjosur+_?}CksJYmj8kL7jkb2$h!nG zU9++!DBpuG37(X}4M;7dY$|R#umAQ%IpT)?rYE2y#hVJy)8H}wNgLt(x^-v(4uLBEBob zQlVW}JuLyWp?caZJuL^cm8HA|miU04b{4ejrM#IL`vJHm2^fP@tXqbi_A=oVy8|CA zkY@m0SSB2)piDUWe$Wo@_`4uu^; zh4}Ps;xG5`WWSQ0dtF`*oV2x>lxboG~=>(lGapa z%N=yqu?GKeFm&FxAzKKF{$CO?i|-qdh%IgHYP5s^ZNVHEI6b{XsWN@qz*(Wq7uFsE zsZK(8XNXeds6;*wrXGozBzGh&+;#n!a`LOYE-X#q2=61@mRvF93E&|N_QO#2*5jDl zMLv4G8tUrk@h8A(f(F|D75ctHyV($q{=s#fdHl%a{v$?@9#-Ko`M+Y1qpAv-e*?<} zr>b~qFn!y3R-r$)!b@k%q&3CswHt5LV7y)?yz?r>gup*E;e?6k0%|EH6FmktoTok4 zV=|EmUQL=q%|v9b$7D3AmuMtU^V4H8n)pkU%+osPF_~y6vV`&83?`zHAX2{unP?8M zQGCN}Jth+!1vZwaodgzypNZ(Ko+cBO=xH+1WnhA<2n~cnbIh5DXeb;?lZndoG@0l= zFd1kjBKc!I(M0rIPn7W<8?>_w>}ieX0&8-}`KT#*>Z2RWgb2R8<7(;x7?SL(v*8Zb z(hX;r1_HfF9bF(p`ql(J!&i4t%35R6s7uO6=p4COLAn)Ud-};6D9@XCON~s;tDA{> zSmL^n0i!HMSA%qEp!2lw{LZIgX${OTa~tUPGv4IkC|x7cG9%WKTO6XBDel?R0NQ(; zrHLp(kKvA1(neO&=2p^jDrqY#X=^HJJ~&ljygJF1|rxDNsxXsOR6PQ}uACbDl46_K~E{d$HVWQ;!2IJoV zqHU?$YUT5H7b<1Rnex-yn|!5I$L^<|jX+|VJqbP4AF zrz3Q7#*eEuQg^80fnWL20}r!s|GQg2>W$Lvt$5aZyINRrL8Ep1#H}XaDLLaJ5w}N= z$wad&X*5+Jt(A#>tEA;u(hgSA)Fg1MZU=Ktcp|g)Ph=KgJz_9UciF=0?@#B+INcf2 z@?%Xa?!wk}!9cyN9>x=Azy&(=k{7L0C zT^)l~W%vS-&=5D51_`1VrhrP?n@XBFZluu8T93&@$0}*3xVgXS7={Vr=5NzU877eA zZr5F50=bbpbf?6Cjd$u6vN(T45*lq#U6=HbrHTE_+@&Ni0e+%f~51? zUhH}GH@iQ&+q28Ao1~8j+8WW@+J?waJ=$VT2XXzcO)dCN9kREyHuTJA7Dzhm;|TOn!vCz0S= zI-ihLBNw@Uja*`T?^+#`$9>sJ{cKIr&aZswe{<-;l_ZZKZ9LxK?vxjDWTCwQR zsCu)+nl=+U2fcXN`@znf;U}U32RoIxG6YlR^Wby29 zXt!S8)%(347b`lI9(vUCuNmTpTcl(65T8#g=GFb&Z_Aueea{y6^nD8%T7i z&eGwSeY$Kx`Yy-3q18vUjY|$#)_<*JiOJC!WNfL<$LE#X=toyFQpOLlvTgl)t>6C4 z^jg!=>|OcTU$n~K6-O32PID} z`}BU=ob?xL?RfF>fnCeS+}<)>h=I|Nf!XCNelzsu%@A0n3Dip@C7?*bEx4z15VKUp z9Zc4&%8+ws?&~hdSQ-Zb0q@5;%DE#ib(>u(j1}fs7QHs9+#N{Sw$Q;LAox2IZ)1LQ zAlHTu@!HWGHp8)T9*Q18f?kE+MsGM z@v{`BX+M&)bCRQYg|)CA+-D7)t2K4n;q9q!6U$|jykVV^GuzXp^%8XXDb`{nz_ZAj z8!j*M|L2&DHQifqa>BM-3yuc0tnECfIkcLgSVS$dte9NaJ;uec!T)5S}5{Dj4eAnE_k4e~15X}~yhjh`{TCt%r+(0Df)3f5xPF9IL7qO!X@ zWa>BjI^aY8pC_gswlEc$JzjO`eny+g^GbGIO$s&<%%#Ff%I+NsE<2#;JyT(zO%vpj z!oZ^9%2_C9jyqOm83MC_O!#zc~mj`zJ~RMmdR6x(QKd}3Oe z60=+*b0nj(CcWzyxwACts3&hRMY3l=N!;8HbC$iZ!A18li1-MS&(d8Zwu1va)=5fN znhh2;Oh;1wv?&zymeBKd#p7`#n##JaL=#-3-)-uNr=V~Y_Ku1Ju1UlRjzsxc>%}g_ zLndVYa0}?a8 zQ*NZxvz0qGq{{Z)Mj}9Wng}qqX&WH~HFom+I`A@q34f7F~xQeb6&L%(+M0=ue>`bK>(#mM^a{ytj1M7HyL> za&&g0zx6(~L}3*4c1P1;FHXmk?p=$b3@_g|y)+t>^(;F@eA6 zcEEv4=v{Q0`F;ksx2xZvLBO}50O|Y`{*EJwiABxW@em-xNW`%nHYDwii@6LNDIyLN zzk{**{-H-RgBQz6;Yi~BnytR#$XiYC1dmdoy7fZff(Ga~r`NcO4aU>cE_(OU8O zAdu7wXBZZReaa|3m!QcC4O>H-)b{^j?>(TRNWQ+|?qO!YAqPoH90bfDh*`iKP(j5U z!0fI8%xPsXD<%wFv*4O_6-=XR0%b_L3c6-p(baWb6Rc}?_5D@X(E9uzzw^E4!*kw! zpKm#5_}%(-b#+a5PlbDL-QxRHc%Y4|9RZJRxP`FLs>d*x=nPj7E3BulG{;@T>KGCW z$HD=h>NslvLP8<5>96kCk9Rbz#KA+L-y8nPk74R?Snfx$XkzY~ViYhIeh*#7@B&zH z7d`wQ%*RUxYRwEN6SNaxU71WL4(Z)BN?1xPr$UjLNHH(B^7FUMggs}L}LD-VaYiDEbtW*~*gUJm}25cYu^mT)kYFfbzw|uu? z$!($cYTWeIq??LBX{cUH^ks|I@f|g;Af3FPnWvQm? zZ9`Fuad?gK@L^8<464{jeUK=+8{E@}(lfDkCwaRgwv6o7&xdp;j7jy@?O1xVol;c@ z^H9ihICe)4$%3ig0lnuAqt&ZE5-oN}<}mdD$WwMuK-N923gYG+()UrHf_!-gEuDQ! zqOolx3omBsz7x?Zb{dO`K%&P^ZdIEAc`*(!&tCN^BsT9f76ke7PF@g1VHdw&?z^Cm z+hr^$5{W*$ctKMjFDpBcj>NHD{LEGhym3FUMZv)dP@dyjQwQ*ep8!7)lrgY6_>+t03>*OL4!p)2bj|-pg;oUyzmQ#v;5i zaj2Cp9S|cBr5Hu@0W~b0S9A`gt@kp};Xdi=N5vbw ze58oM^litK#L%hss z@h|eqLN%59VSe0CHup|?o7RHdali4ElKfxxQ)S_c!k_L101Sm|4gKa{?xNqMbA~${Qg+$D8&QR0Ig%R=%)lF1DWKFvv;ku~RNN zwV_CBOZeftA3R*1(*6M>&Htkdv-75Adzsi`VRptvFBiRPTDG|;zR}x$mu+t%T2K{T z_FU1DZ%R@e>SdPR++ zDqB%x483bvk89o)M<7HH(t5DhqHq!C~%YUa4PEGWM#ME_vF3nf7}y2?nw=m z0=$&7Brn_1#D#tPiTF&$hed3$Lj9Ow^{w9HEUSlx-@HWz?6enhA={0YUE#C)t;hYw z7Bv;*jMn5d58rp!_3X!rzU(fuJH=KMvf#<=dhGKCA9l^M4~vJ)^8RN&_EcD2_F?6) z58LNYDntL*t?Vvpn)wuO)2TPvUX;4XRznN#W&bI?6(9cN4pgO|*5K86crn{S@Aq4F zA2Yg}mF+|emnqF?)^?N;&~>(2f9h#=Wl?;qzx^!RQAyvw$*!cg`3o-^cG2qgB0EId zxfdg;7uk~)=EmFLxiZ_4ZL)<}&w4!lE+$Aw@7yheSp{BndQpH4J$aLTS=zD}@9U>6 zdvS)pzRJ7ogG$j{f8%5JUAr$@q=ut$FTa*8Vg7=8n&zh3qwBBh{TI*lzT0|b?@F;h z#n~56-}Suks`_hY5mj5};)xFxIf}q1=kG#q2uL__0^0x*1tJv3lrRg8_veR%U z^SMDk9xr&EduU`<>z~cs`UF3z>bJW>;E(;oOH9kXUU2fK7L~s3|7JU*Hw%qh);;!ZPhL>ImgFaL_)o!bgOUSZm zYf|gXZ1#Y@UyE6ch)^mCJE)`!k2?5h?9hRmTfu;B%cC?D zV;1IwxBrzBjS4q-tE=Nz^B9pen1^v8i*nN#6Wv0@%c+cz4$O4>I~0BSP|wY|V2t}* z!3XOIt1)k3Z_BJ27&T#@$^IfJd`g0Ig$kIlg$P1wDD^`QaU6MBVw=B(%@Ki^Y*S`y zRfixJP}(94BY%hZ7iFykYu5ta{glP8IB>}Isi+WhGTqsV+lNl!;JH>5XYZgDTYVZ7K50cZZZ~`tJzIb6b$;_&84|v- zk`n9uY}y*Wu+Hymg>w5>Bl$mIN#EKC1Gb`nrBCl*sHYU4=zotgq?$BkYwXyES$^1u z_4{R?KOwVG5&JNi?JmIZ1wL$1--|DfkO(6r3%#bBL7^5O>n-~j&YFsk^w$R(W|-JM z!&znaq#2N((a50&CwK7el$XDrU z+hnG-=y_|kBD`)R$K$8k*J&{7OmOzMuJfMRbb9#P{)j7eLwZ{8jC`HZ$KgBw-d(ml z-8jhNY53-qE8!QFaZ6J3s_EHzK1?_!Dw!soi?bUQXs&Qt_UEOQNI<01#8U`bC z#Obu7fVmgkZFT5$Scqn3?qPoiBn!LgysFU9RONGP^8cnqMf!Ne+Fo@P^kXWzoTyc4 zszGlGpWg(nX)we#)%aXqH3W$dVvW@%)rJ5KU#Z>sTAL{4+4Rrj%n2?a!fs~5~3v~=R18xTfaVr42TT#|GaN$ zdE=(J@vTdDeZ1>BWKRFFx0mnuVSdJ=BgX0bztPm#RyO~CpS1VeVDPeehz2Yyx?A_~ zuHoInyB~(h!lJed?b=|lNNAJvFd}KQj~T{{9g<4hBpvf%i!$3J{TTs~g~@6&zlBd+ z+a#q=oB0twF+uqeNKa~mjX;OJ6vPN%06P#i-fL0R1PGps+AV6as98zGB1_f;{LcOb zWj?&C!ghd3d2O&aXet|FGP+ID`6LS7Xs~x`lk}6sJlu+Gjc!NG-|e#sxv1MlLszj9 z?b>M2iXG_uMngq70p8zeI4*k9_o;@eigzY-F4f>-bzZ9TIG;8%--#2Z)0y3EGrr&FkHn!!u#LEoksT455q zFU{a1zN9N@1~*ME>JvWmqc~wAeMmF7I)Bg7i#mNQD-?&Ox537vRA-Z6g6O5+vB}U% zVHc6aze&>RHc9-OQ|V@deZqEjcG+H}r-N=hI)KkX8&m{FcR?wIk#8$W3t8nPDH;FK z*y8AR{I`{)eX^7b$zI~_<3DSNmBJJJx0a;0vIJ#;V4Wb5%r%)GZUMQP7V@kmd5A9t+SjSrxFeoOuteU+0}i+C zD2l=aoCJdrUW}%;Cs937hz-QO4YzHN%=~Y+FkNt`Jt(qjnEFo>Q|WNzXNTwG#TX!>fjjrPMxLl zqSe0Q6+xj8L{k$NF--YLxUW(PkMVh~G7(3JhvXAkNXhR0S`&KT;v%iz*QE!8hg)ddgB3J3Ya8!&v_*g(M>g|Z(M z>^AuOOLYO&zmLxgd`!g$$`ZUl?82@rk}ZYQ18S1sV0)fAUaOw{a- z@C}kfrDLup=E4&N+ccTgoPXOc__lwTyfZOFTf_2-LQm;7hnega8Ymu9t=)!xwmfSz zvhEbE6{gTftlw>L?Gz}L8lsO>oKNxh{ozk7Q5^aQsQoY#I5~Y&OMLV<()uGuq@q@vo{$c6#XR3~( zLWmZZDcOs|_EzS1rxV({&+oAD$-{I@)_V*d74AuApH_WK_4XJVboz8hEEMJ@T4Aq= zT6kjOh}NmBkcq=b4H`YMj^K;SFn>I@v;a%AvG!Oc+!R&99mOwVHhyzw@F}E|dkhWh zuw8kfb5aFj`{>zXPvKXwqe(DcR#&{NtU+Rb{K8$0H;Ah5HPja!XwY6mpz+qTLl%k~ ziY~$v+Pc@!Ac3FJS)$h~yoHf?fM2R=p!Ahl-?2}+lv=7fd&g!J5*36oJr_Bycl?7j3Ty5M)+#H1~*;*OWRK5N(KN(DIMm9!Nq;xbimav@DfH`Mm! zwd*9+Zm^=4RI`0pXM`Drq*mrrUrM}{?U;f+|48?z!Gd0-8+3~83W_yLsz@WpcQB(B z8HP&<{_?M$xA@HZHUQ;RHuC5Lb*w4T0;d9ffGdGjfa`#Mz}-N9AbVTTbLcXGmB|)P8|pzKm-BJaq(avYk3g4Ojie3AJ`b!0N5PZ2-pn> zPZ1q!zrumXfz5!AfoS=4cw2=CAPdTh7DHDJh~KZSCa?pr0k9*mr2;*FCkX70W&@eO zMi(Gk+ZGLE8*g+2t_Jo3?gRD)J~5`*(h-)AJ;gylC)~Bcz+m7|U_IbBz~;bjft`RO zfvgc24V=gt-FOJ!0mlH>0>=Zt*Q*ae-Bxir+P{3HHv-u={vOzfQajr_(RHg14s>zT zaR>A7aQiCagAIXb&mTwKD6zu>2Xl7!IeVVkTEoy%wc!iE8UQ zyCzh@)8f~tYLqlWU72ejb8Tg=gUqp4fS=n}=5#VQOXk+eT&m2S;u5G`>fWp0DaZGvQcMmaKBAZPqV=I+Ye-!dnfmQ~u)D47ekGUq09UNYBQ=32{K z{{)#FD3i%Dw^HVg$lP(6`(5T9%bbN-**CT^N*bZQ%r%y|2&0r>E=0;?oSczq4f!LP zC39@Ybk6OQxkEB{PUbGi99y8kZ$I0yo}X(Ya}G>G2ZQHcUnU#N86#z`tIX+SZkEig zkhxVdw?HEZo+#N|SZtIuLJ#w@%JeZx8o{Nihne6cMhlt}vto6oGR`DM5sC8z9ojH9 zOmU;M!LuupX7o)5dmp4t1TS=&X2D%qCWHm@pIOtxoFCW-;sSjfb<@MX8bo8xpSuYB z0CHAQU%-J0>Xgwp-L28lvpo3EkL%cRHYJ!Y9Y_4{sHG=eC~0O*2Md0I={UGiI@pZO z%h<{It>XehS#`j&KQ=>W1)E3{TQ0FLW2`5N*(Mbe(@e_5N)d(#6)VQodN$E|vi!J-@@!f#O#&Mo%&|dG&rudY?1RDz0erL-8RG^Tp3vr;n*WV^578E>|m$_P9TN z@r3p%-FpYu&HBy3x?SkWepT+8Jo9Qhqjy-${=yMa0WHq$`EG-co#X9X|IFzx)ozJr ztJizh)v4iuqT~@iy$*z2zV%Jikg>Hdr++u+?5_S|^_x%B`OO?h1)Hz?xPMB8RkssI ztuv^?CQ!K7xbf6K?55V7P2OwcYv0=g!({YSdn(*up;qajhk+6tdjL>+NliN{>6l?g z(|0Y^kS?$_wn;49=Scm>-n66ib62fs`n-*fDIe-!4>I%Xb`*I%%#1qDsi`KzrIn79 zIdOpQH(bADVCZ4i#_8B~8j89-t zgHEU!`XWrZd?Gpq2Gyrh{bYA%rsKiW5Z;)ag<=K`tMunAQbw;NUz@&LQ(t~!u`WN& z5gQQ)th}pqU`37G?1cr=Whb>o#2JeBwXqm6w$~?iph#Zhhx=M@j-Lb7PFddX$g4qn zKbwB)VMjiZFzQC#I^=6zJjdtPPizK-FIwkkeZEKDn@{8!vgx?j&pIRG6-IVth2DqW zzK@^vIr9@(qFqLQq_o3_{H#yhs`%j(=|Y}$8vEHKT5QFrp)4o1YABj8JlLTFexmHp z79TFgC@AWKwKI849Ih^NF7NYXy0c;oc5SuJw?`PY-^}%$vkX;5GoOLOVuz1H(UO+7(|E%t z63*KmnD`uV!5()Mrl_SmS63xZMK^cNIJB0J&{FjerW#xCqsVN7(y|_=5vN4Qsl(_!b39GkIL@7lS%w~%VS9cj`6g%% zpqGl7j)rv(MPio+3NRqUs`;2wETZDu*cvY#84?!bmzhEv)_NgoHOpYK1}@y|$n)=e z9?Wy$2xe7Jwn$s+QRJy$C4AV5SQs@a*x8I7nBnc>U%0Ro@#zljrkFwxZ3X;x9DWdl zn|oNiFdq9$ad@v36iijH7g|9o%`sr900MuB)5%r}t;V8)EzQ7}-v22o7!Arb_>hjp zXB@X5zL*DiT(HdtcwDgE2QVo=$l`*zQ;hB?VzwJx{Z!cprHv}`Z~qOpYnpQ(aWO^ zCB8>deK3O^Mnx#xbPmKd$jCPTQyoSkoAY-ezAWP%j^N>w?QvW>EF@Q@MzZq}<2i9i zOr!9#2CeBDh&#*pJS2YR=h#d?B%NdRqp?EsdUf@o7{>mH`6gKD>XVR|1y5$wY7@kL zWqctLHz|W%UApaWk+wTpcAt*2`;>eVC-s8(O&LEAi4|0OqU>(%L;3;^N_Xof64>H} zT}gcmFU>JyVfB${K^f-_TJ->kV~(Y`?bj+Hts`5IrawYFSC;uP60fDqD#zn+il*3W zzFJiah>`Gf#&xAY;iD-2bUi=S6wq@Rtra(O<}jFSo{@bk)m^0D@-m!HFy|Wa^l~`Y zKIEd3ukPUX$5Z6#zOjidw(l5eZvH1kwePhdsPrGg$JV9ZuX<8^%1h11{ z+d;;n$nffa*Fi?{2HS5BJn5*2z|K^cf*lnp2u_8qv_-@dWA4?#CVW5cxjZzL_!~vq z+c+s2A|m#J@lGxn(b$Nmntw>z`(*UCEr;zbep@_Xks#bLuI;M^l`acZHH`~VF}c|1-1f;cx&4M&493G=48Img}`rs714Zr3uKxq zs33LqfTMs-flyoP*yi3SQ#a3;UcuCi(?P5QkpMge)B!I6p(xfdeG`J`=so~v1KlvH zWjxdNGd>Q;_)H^z+Q=6g`G-JMUiSnz5BLnY0BDPLViC|g0m5PkzQ83wwmsD{U8)QH&iW*DQ3$$b zctN1K)kOmb1IGi00G9xv5Y(jr5t&SS@#2BIkRA)n0*(jf0io&Dod-??UNfeD0Zv2u z32+AR4R9tg{l*crGOI3Ab`#50$UE5678aJ0HlVRX+jQi+B#m^w-F%8vwil91Oe) zoRR?HA%w?3Xh?N`10Mse@O)92&L7D5!9d1m7Gq#MRO*0v-o$1)c<^1G9h^fl$LH=%TslcYFftElEsIhE-o23gP0!x4a zK&CJX1bP8k+8-DStOjfftZ7Uy05(T@Gq4RX3&_eT0QLqx2lfTN2eL0x!BS{0)!4$4 z6JEd=9HWqKPlw7Njx zEMN?95pV=>F>nrW32+|pEpR0;8Mqd>49NObG{jQ#wi0MSnt-=}tAY1`YkgUp)zYDWW;cg76wd4v@8nr-5~VEFH$0DPVKfOaYlO z2tAAL8{l~$8fl>rm;@{Wt_NNKZUbHfqDg}_8SO6cGO!4E1y}*C)^(sQUT5JZ1lIns zn)(6n0BZp60z-hm0=oiBfZqV01IGd%05<|31JN`IPk{S@&wvMkFMwz{sNo>w0a9+E`;~Mw|Fy3@n*!;%lS@8uNvi4w-|s5w^uccqvJjVs0FJUwmf6^aqkuzLO@D+LQcan`;kS!C)bPicScG@YRKM=2)WVFoz zHbOcN7y&E*b^)FNGUF}u#5xRYSmaUNQs5=v8sKFh#uvgB;5OiO;9b_s-hglq#7!WK z{{p&Zsh7MBbU?Zo*cr&u{ee$_Iw0O{9eQBlPvA-*W<9!tz!yN)8NLE$0bc`81M%f_ z=m-UL@j7&TOev|m!g^T~2sc3BChO4Q3HXiZ&`}8(jOtzj*$GNKG~801H4u+L=Lxh0 zHa4c40UePZ4n(+1$>{3_oP)F{Z~@R8xD2QTt^-y9ZqcW;&KY8r@DVRYbJWR9g}gv3 z;1-}Ya0k#9m<6;4;?4^gTx z1a<;?1M!fO$GV`4+E2yFB;7nj8;Cy3xDX=oq%Zxl5?6UMKV|tA-4K<433BC~M z4a5t92MXaT2w&iRU@ahfL#hIw0{wu08Plwxfg^?PqcP3e0hU$*S$@`-u(TA&73gJ5 zqwNrCAkCaQ*zrJMbzoE0+Oq>Kj0AH-U}@Hkund^8Nom$_ur#J_QkuPitfH*ps13wK zhIxYOHW<^GM+oRKr1pXF)_AZi-4WOTxDeO`xYQCtCI3on(1iohy6L(BABq$!raI~u#^vN&M}Ns|6@%|rKBY}8qI#P3 z$UB;Dr(KdmKj?D&6NcWq^XGWeHNnbxZ};@+Uwc^#Az;$Wk>iwG6zR2dyDe()w0ebr z>&rLU&uVbtc~id&zqXijV{O+SIm7*re5f+MPP>0`E$H~%D&drX6i2=9~9pmno*!pnR>SOnD06D+IZE6&NDN0=~JpsUfM<9H8Dq2 zn3cSH?cDa+oadD6*kwE=&+DtzznGa5Cz@=JdxOAcarTJt(NnEYoSpO9zRUvh{?I*V z{od6%iz>)#N76ppIajP(FF4qf{V@wfM`0lXq-}?t;rpCs6=Kxz6T%>F8(IGn>tP$G z#PGom?}8KVKmJ-$>>}?<2<s(?I%{Ia0Yd$=(jLG zu{|Zr*6k0JexK^DL$j3tYkkL=Ku||bSAcJ&PKt$974$UG*Yc7{sC%{ z>Wwq{@*|Td_B6i7JmV33TN+dmh3Jk{Qi|X6JO?O?eIx7-&5Ha*BI)j3T)TKaDv6ct z+0oeOWs$d1tVqcQ6z9V!8}@aZaGBMLChX2Z91T`fRg(g8 zqK)-<^NGds@5CGw9_fbLD{Qy+{^k-$B!Yb3sz;u$kh$+2oE77ePCYwynPB*H(4^vNs3&=tifofFOvU z1C2Ez@JZo8+VJoot3|$L!dO{y05c8a@bIic@XG&Z5y`*K{H zvCgubty+1NpXH4Xk`Z(CV|kRnUaf5gQ)I*5vE?eHoFPio2Xp*94&Yf}(hm2M!$yg3 z7qDL9e%41E%+Y*#OTxZir*8_J_^eBpJ!^01_ngX!RG8H(tn<;abEQye3qJ&+NgUSL zTff1Ob5GvHFZEJR56ypR|DEg93u+*@|F%;5zqUHwF)HeHG?Z;999NuEP3-|4!FzMQ zgIhOr34d7eb>|DwCn#(%;dUS!!$5aUDwGo4Dq{AA?d{s7xKreJYY}e^V}e2wGj3vi zUmt8rcMs{;{weC|-s0~RJG_OT>U~uV*QqodD*#hr%|dgWXmIjVHLJ!JF|vh(=*1*v z8kl($HF~{Pv9;Q#<=oqv2fdjl36|k`DNBD z#Y_a3WOzkMA`DVwxSxZ7AA_v1aiCpcCyHqv+P^$6I|4?!mFN6_z+${!EEdqg@_dQ% zTChrf&v7cx^|LZ2pD54yXm*|SHh<(yR8?eZkTyvd+a%?&NeEvAS3v8Y<*dOj6!l7S zyb;%@S4oaeOrjelIW5JOdau$PUxk%ri=-Alo@J*|&*wSM8uY>s*b#*&g;BBufoTMU z8D@Ol6GZus{ot!0HI5Sh%F&C1slkh!o`B^qa;k_u>Bx(mK^OqIzs#xMm-+6u6-6N& zeJfjCU?$uUeH7Mk(r;!P00tHh{QaV^__R1>@K|ZF2%Fll958Gt{}$^@%Uswh1s_&3 z_^5?rDf70MIUeTKP1sTkw%TSe6}`-9BrYM#S2^|lqNI$L(y{~W&B3&Z_|r<4W)qXK zEQt-WM!d>#7tJW?RZcg>ECof@-s5OGL^|f4@;axo`B?=kpRH3FOn$F(ysft=*it4& zO2tx-*E!)@w(8_RswZ8^A0_FfFL{X$zedn|UJYOAe0FCBlkc0HL6zAG6}EVZ->4=E z2SI_azhAmp`b}>zu*VIyf0v_k;srQJrF)`uHe1D@T)*>OP92f@OnYEq$sQ2XS~SIh z_xcy_b54qNvM_0C0sa(_-I~+De!y%XD>4^22ABsN2h0~Kae5U;{a+t)rinqWczzf( zp__9zO7PT_xyCXVA#;(G<=D(EK_?Tl4n4i*}zSdFyqkYC_OnY$$CyC!q@W$vNO zy^uMkm|&$~Usn7+ASqGf3UF>{=Vl(v84&d;)~Q)w0@FnDOHMRO8X-yMmdM-=nfpQJ za%7I_C;26rFF7v{wge;hT;`zOH*%)9yU5oSHGvM_NLDpU=1h%l#_{v-znG2D*Rx;O4 z=9saOR{2osoo6P+ob1!A?t<1T? zP{q%6hm^o;-AE=wjS@D9lDSSY*IVZL%iJ`X)5+W_nOi4w-e|>HOJpwi8YQg5Wactn zn{`YgujNBL^bJ+HFHOXS6j&j5&=*xIz0j_dU!~$dam>t?N#V-ZJ=V@>&~bF;ZX`t73KZ8tV1OHHo7nYLc>Yhn1WRjG+4*V$}XO{eug+f?}Y zX`5<#p~-Dy&YC?3e9JSl{VDe8Z!U^dO-co-OrF6WYW-~U+{3I5ZEBf&MK$NZjS>}& zcrw$OHiV|QPW^*p6NrX^8HqvU+tzv>kJ z@qA_Sc(6uW!4p$~+o-`u^03X-s=H&9ywRQ7*yi$`De6iSO$xiWMk%IIX_$w5Tc(5T zA&9ns^4(Vbb=%zUm10*m(Nt^~C>DcAMF|jtO6s!8+gY*7IMKWVSK(B5Cq7)AXB@5; z^GRka=IhiDO;!0SQ|{Oe80qw&r7diFmuI*XA2D`FdCm{_SU%`$%rf2Rl}oPO7pID_ z-k>pKKg=80uf{geJPbcCrcO177vb9_Q`{2ffUuSbW)ozRM%V!f6E0+e=ZGX}gtL&? zTVyU28YPXiiyM@6;GTnHl18va7ilkX6^)WcV1@8>xwN4a9G`G53tmx4 z%4cDeuB`hC?8{4i*Yxv4Y+!Aa{VGtdZN>p{uk0NS)j_pBg#aT1n2%At7}?wQ)958}}a1wjPE1 zWrQkvm{CB`Az$nPo~u+p!+X078=g*XF9pZWhIZgE*9cJ9DTJmg#JlQe!(*@qEP?}d zOT4m^?YP%<2`eEQ@8L0foCkps#X4-ZaZ}@~ z+70S3r!E_*-$4CI$?+FGq`fF?p!GNit#H*0rDB>h*9NS@WB4lD0O>c^%N=VB4WxJt zuU|H4Z-#{w3{x;@X1W1bCZx%Ia|PL6yyGPDMpk@60RvAuiDBGBb%lwf@S~3`67XO< z8#_fErPN$AT|gi!?z)nq8s;K;(;(}}@-$@SRo97*k^Lw$x90wGRl=llKZ-N0H=;a+ z{3Fy5f3#*XG{QGksYIFw zSAEoMVc%ZkvKHN*efO#at#5V&OX^(>wrYbvF9#Cl3( zJKiMYOV>t^fMq0Xy9Ba{?W|P$pc7b#0KHvs@-Q^&XS~sB;b7$Zno9NGAh6kc3_BQ) z=KD6*Hn4-zZuGWjyI1>CW~Jud>W65(-})JgosBlEA4btbs-<+riLTI)F0YQ&3^=jm z6-qq{;$01jWC#1#gl?l270$gNHI9GPLN^gesW?Qw*EBX1W;)z~!lJMd#bsDJw^EvA z5EP>p&PoKGPn*84Z^)?>?Fd{wvV!6S*H7RGv{AZIRe<_4Gtj4|$hu4;ll zzlm`jL_H*$lh=~6gRw}DFFUv#iH#J$Bvz|F4)LcZR5CF}tAzMUVqqFfsxz%U+kYMg zujE+^{OFIKxjvF!SiKQijiXITw_%x<&cCsMi4NLgQ2>S3(c%NS4q%hBCRDixB$!^r03 zA~mISHLt9i3t~Att~Jeom{oS(Z6qG?^H{yq6~Zwr2&biWrfHQBJJFp%IAtWn@4}6> z)%3+zlU8~dDBK+3SBr4;7StFd0f|t5NGmeuW1kua`qy`+dSIq-w-W% z(AMfL*lmfQ4kdlzABPcX+X@%!3vxJ*_&Qf&)N8?P!{#H1*rzbG__Rw@4nDYL~j=Zi>4A$8p1A5srZ%MWjIrjPYPoe_3*@qpYf zgk6oA=7EJ`19B(B;ikO9xBuH0hJ2Ob!9Sp9FV7C-`s5+Gzt;Mq#)LWNlz)70R{cSf zSA#NU-`1a9nY&71_ViWiM90LZg*-lJBo$e8)asS1b641w^~)zK6g%tB?acjArREDx z$>w6Bt3!jJPre>iq+WSwRf@aW!#!ni3$&VR2P-Xal70yatu2Fa!PA zd`#%}P+;(NECgidokjX8r7iVl4Q)52${+K%4wN;xFUsj~L#0A;A{rZRMf;1Dk?96*OJAKU@rpf^9L(!!w%!wUIe8xZi^kZQEq2ik6m+Pt3E zNc{lm=T%5I3Y)bwr?ei6{Z#ES4(Lv?eUi1}c+PwWWi}Z&>yc@ zsK3;nwp)#d*86K{l=@I&sK!Zu{ZQ^)5gtCp&FrzNPL!6*DHe*{%6SinnTmT;1+#KS zU;87WnPbD_h1a`Yal5`8LyYIBOfuH%wF})?j$ywZnj9Ok90d@w{56UmJ9y04K7(S% z4jUgkd|;mzqbH6UF*Z3YH`bBc~Cp zjGRVrfW&oF%=5JY#-uofxh^si(OV!fP9yk0!hjw}+51>Wl4=+^1a#5&IhOlFr7t#- z%-Hu8n#eVs2L@MnoEfB#y_#z#n%y|jr)1}_hP$LDQUw=Z)|drmd+IgUbIH`$OzKbG z$-StQ{UM~8OWk^PxvH0GdfQ2DPL(oU&XVK%eMnQW%C_g1UXR_?>Jo-M{Nd;m?zAvA(x zJ?KO8o9-GGzh{Rh&aOh~{X1ZR`tQiVnuv{leEt(KuYpqa3`7uR4fQbYF-p)FoJULng$WlGKp#`U6cjfQyS4TDKHt&z8S0p6X>!Mym?6Da;Lh*fo^3Z(pj z(tpNFShXId-<^bpdn+a{@9>)MZ%9kucp~TuHn(epc@CvTTYE_B=~a7?{+_~nL>Rx^ zbF!_8b^Yn*D=Ag48e^74;&6QNbm)gv?VDnu2!(gUx$N4i$w>F4D0V!iI8G@I`peM&J0VbKLtTR|S;K6{M6a0%TE&Vsl6sCJ`b1zhjjAYeIHUdrnf_?QCj(|}`AYK&Z9lCv zcWFzho5x8j&1bjebAqqdhv`@RncH3gKU2x^ZlC0Z$9LyabmUzZC9JIIPAk{h+5NxG z1zfSj3!Pl!0UbwNTYaw}bySU!o7}$3#P0wuJWQ`=+$Q!Cw0AFayZ4fBO_+@0(mr-7ofk?Y~a{H!Xf_Vt&^BwR+pyc>xNu zq1Qb(!hW2tSk4Fh%)QB&+#$?iCi| z%YE+%9UT=7>g%Cl&Lz#A;T2PvN)Y-*#imF7DR5{DEn$_PQk{;z?=c#C^nEHH3@evX zsnZp$=69TS0G-~t8uYk*p11lndZ;egAhmmtM+IE0F9u?8EpHr==M6{mjMLuQ6#WXN zI;1Ds-M-{`Ws`dfW+h@jN(^8TVxILcDQyv}X^Ki0&cwiNHkGi=csv(FIp{naAz$WwwgKp23N%0B zr^=hp;+Q0NDu$xW%wNSx#R8m-{a}l=su~c(C~aRAEvYxnFt)?M|6UlPEoZx1TbJ^%Jq3i=~N$!eSwLc5(4jE@VTVtUtQ(uqW!KNOxOE zshf0Kc1TCzU5mA*8zAmkXw-Y1MdIqGQxq>3a;uBgA{H4Z;}MEt{fwgiBF=XOAH#Xp zn<}O+qQVa-7IL33T&w{$Th|OH2-5XvmqNUdt_$mf0{@Q9Ft1fvaqN2Az zw$=TeL_xC5h;Jmjcn6~i9CjKO^+WNy(O%QYXa!%6ps$R-0b~Z48r+FfF~@`(WNraj zD3SmeW?<(LXHiTGd#8R_5Q&bVuEU0PHLf^JNxSk~yS3HuX?*rmUB$*54g36mpM20) za2tF_0TBsZD7DtsUFB)Z%j-Z{PRmER-3rR<_YS}Faw&;c^~_uK-4}a+HfT`F_m-5l zUS8RB^xx|>Ke<29&%2VhR5aVvIBwbGfUu9`<#)(vxjB3-Z-b^xLzL>DZZu^Bb}J+GR&kp)(wT99X@Ns^tz&JrU^ ztic$Kz*^ES+8r@dzC&rN^%#xMIjB^-p{f4Pp3i)29%A^O=zyh#WV^)ML-Q9J`%#!S z4RDsWVAj~+mi&pClA;pD97ywEE02SrNa~91&fZ{F#hM%Op0uDt^%|NXjJlRViNuDU zqBmt=orkI+x{_8#8o5=2ke)<|e`Bzj0&x>RBn^8rkuKzioUW z8oC+1=i|K4udM4fj&C!Ltvi#n|B{&-9r8P)4Bigi1wtu3&6CHs7vZUHH^;TvS7_P( z)qMXm_PHrnqxQTsZ;Im=8?~1B1(&Z;la^oZXx#kR#a4|Y$Y7Sg-E7zCXGgw|Y}ksz z`+AJ0mWa@)x76f6R+cqtQzzbZ*4MVquky(p9s5mZXXpBXL7!T+YQh4TqxUytTNO&J zT4a~SKAOX5ome=~{?3%zEeKHwJ7YXL7Gu@N&J@#VGU6CUM<~_)Xp=6va3b?|oKj^A zRX0qy{a`E19ENT0?;^bzqgz&lP4aCemf-|OV|7gEw*#$d=};JUE4d-+g&Qqa6?m)1 zL%!rjAByH9${`jtQm;zs8Y*b&VNM%^J<*u{f@U(rokx)C5B2vcXgRWx#+Kbp+M`|V zgi2mTn^o*dHuXHc)qg;q<3(XmJ&B=Y+u&z=vid#LS^Wep)f1@ikJ+Q~%z`SVi56NW zD*d?*TC`*E*g1%_R~5>9>4|zziC2n0NJDQbIRgV|6)4Glv5maFyQT$NViyd>`&J{} zvo$O>BXmB7>R6ClL&`uUObOJWCj7K&QRHt4QrFP47D8tPP+U*kl+-yGEiVd$QYwf_ z8somE&e*C{=R<3>GK7}C-s&yJQ_*U7Kh8tuoE8!~+q~!JP z?rqng}zJ;<% zS_@dkggY8d#z3?~xT7M+82ru!Du@qF9mN<5xD?D58kS7;a8j74DDh)cM@5v1FIn26 zl01$S?_juXkF&$ne7HLgh~cj5HN5*aV%7dHkKKC_K6zb1OpVzOW-LJv0_=$4RN#bN zZUa~3*P|gQk(Pp%5!~Yw?r(ub(H?|+MN_|J$N-+Yqh03 zMV7A0A61_7{|^sPsp!_Z&E={8Bj5aCABMb_eOky7D zp44<=ftCKcUw(hjFZMajzD}QWpljyAABq<>)hD;f4-n0|WLm8_GoMaNsuaaxTZ*fc z)Ji|QU4DUCnet?0mwZyl$`h%}2?(kiBoCw=q%P+y+SrDa{7vW33MyK1ub&Z25s&be|B=IjV%@j$Q#5^Wv#c?M{O7=loTM&<_XP8x zDp(9x8>af->;!ecGjHj2+n~+=%NZV-u4MBu(&!1L!!SLwGKKvO`v&vYQv2X37Gm7~ zp)AKN4A`?hc@CQ$D8nC}Qy*_eRHRPB;wwla=uFD`ZJGmF4=}f;)RCQ)iW*qX-d^L@ z?yI%NeW)~4gO~_C^WUof$!+rewi8yE{x+l2zBgO%+s|el^?zxTUFp14p&8v8kZ<#E z!#wf}23-1|&@h+FfQ|PYTiOiIFJI8rvgX;^&DcBxSo5sU9-ja7%RZ^0U#CHywmSMi zv*>3zq?wejGh29c|BKTYq{e^V{_bba(*@0EA`pTgU+;PTK;CaNw!t5b9QbJ z(%{o9ptCR^vw%}*HBGrw>h?)Bd^9z%P~rjf8ul1lTVvo=@*P^lMrg3=A~?kBNO#Q< zeCH*eSaj<}x@F^G(wvSAacICsVCVG~6Wuk4R3+?##smi0;#X+$ma+_@51M;lDnYwU zg;!yfec=m(z8@9-g;p|h^bV!k3uEerMk4*!Zc24W5Ji5Zdw~JDrw&78OMiGv`cuP% zd~b0j#jflNUpjw8;P{@&#sC;gBZ`%(!!Q9)r}))_VOi8Khf=*7bk{X0azwCXaE-%Y zd=f?J@{R5N45VFaQ+lUa-s)yhthcMprxINum(>2OA8@89=AA0_1Hl1M$iS%;^9fB? z+>%)s&|gJbcC&p9!Y4?wGHc?IVIFM8Z-RJ+VwizdmKgC@rHsZuduZ5JkBeX?ZrhNo z>deKQ;tjfuG}w9@G^H>RVeTajdj^cVw#_8<5T!DASLU$zZ3_yh2OYe0ilGJOC9Np( z9d3Ino76mP1@Fw(DWx{-CgY61TVo#5j?Y8V+m69Jq&>VAI^scL%*9Zq(MW;dr4C#zaR>_SEF z+0~fxJwBQ%-{*s0N%4P&Xcha7R4%BC5~V7IsG>V_aP?USZyL=C9lGKENTg~i#JQA( zv&AhGcy1`h0&UIhRYyP@BwF<=#8*6X#qO9JQtSs*EEHlVvYn4|@6F3M8hfcb#bqD$ zQ{ot$pgx3fJH)l_6yV__v2cVkvZ6U9Uc}YTkB@Os_K+N+a^O}VS-_j{L#!e+{X(B? zes`}R*CUF>71b4b!gHY~h1o=Tn+8E{-jf?H)Uim6!z`>!{a)-`3OUirVvY zSJcv;(OT6~3@qzV^7Z-dZCB$J{VI-Al(r_{LBD-L{=|RgJWp{=P2!4ti~}!Y(m6$% z)pb++{O^SBzdL^Yj~F+UXF`Tod1!gghlbaULf7Woc(BPF#;wN59FsJ{C2;8Dz+Kai zTARPB;TNZLY)`|lphk3T9KZG_#k))TewXv(6lVL|XB=7b^!zA3rK@2_MfZap^fA}+ zb7T+N$h$S1^?e@YpOgK=R+c(DIo1sd3HY>1PR$1q_OxMWd^1HKTM8Q#Tum|1PBJF* z>C_O6C_cb45LB111NNoli}5gb4}*?v8D-SexqnTsP0uim6SdB}*jQg&n*aSjb6VrV zRZXq+(eqVX6MDO)t{JV5PsOW%^)tpsDe88D>%WcC|Jcb)IU1Ff`2}C4O|qb|V!@d& zHaQKxN|WRHveU9@J1+V)ZJ+D&JfpDSFT<-tIS%fFezCF`m}Xk-qk&528pcz25%e0x z)5rVJ+AZ;RDUBc5(-M;cxfKfgHrSain-qBdmzhk(pgIjcdFC{g8lg+ADNftlou2OX z^wC^}dMOuPsv9dw#taR-@Pz$P%)G0_ryQv_FbA=&jEKXPX(^kf1oT*>RJ%e`^PL;d zAuZ!g2Jt&5G%TF!d!(bhs3}YrB1VB9%j_DGo9ZAm>nF6_u5kf!9W1g7IfIo2u*s%S zQM1N;j-m;{?fo9}p=(vhvp$CIOV6%VstNOa8dw4clSB0h9{8R@9Fk@=Kbx!sP;6;a<76cQ)`*B&TxnIjdazQx4pW}I zAd1_FiGhw8FkaV%hig5SL$X(ls0Y`h27DGE*)wzv5!|+sG?7R>geg^OBRJ?Zp>vxY zF>mOVtW?*>9AD8egHc2I5xEW<$gx3bst_B}4^fq`<$^ z6LX;eY26m>PT_8w;w0{+s>31dDK#BY)pl~`5SUZkleL&Le}RGb49nv#Ii{+8TjG(n zl*ZCxB$c+re)s*?6xqYd5}xS|uc}@M>DiS^k52Rxdr;cZiCA&b8&nKG9K+;+T$Xsa z?XuG(e%NR7H=oHPK9ffoWgje)j6-NqZ)iP_T3bu1!pU^!*hH5iQJ)PSv+=e3J9tr8*4&@dC&~bhVJMH zh1W`|OrtL>&}z=2OPvd^*DhFz&W!tU{R)(-p-_R|;MV_=_QguI6Z+Vba9Lvh0_oU` zQS}Z)5|uLd0Gn^uE7iH^b9cG%3^x6-@BIUGsVlI?ZG)tv+M!gm@ucFSSx_c2Ux8TM z&265%Pdy5`l9$w{Qk-W1%)3p>x>N)1`4TU`cL?p5qNKC-i{sP%#E{i%_au zeOPd!_~=lqwCIO0oGq(hRk$w|zJ-R7IT}a{O?LV5RqZxu`<1GT7?gLXlP^7uo(8|7 zSAJAg>U41@gcnFIqO2%Od^zSafQZZ!JNl`M&{r2#=iP1OQINcxgx15$1U(81uYwTG!d>Z0;z5x3PMC`-LSPyj0)%l|8wh;fz z0_-fdESu>wGkD(f5N}A`JJu>o!vITk$S$9jpkR4AmY}FZ!M1N9uLvA2EwNUmi|{I; zBFh5zwyW@%zDnp5ik(nkug@J)VDZoF42_e@h%13+jaGKmnGf;m78=k5&ePTTq;j&P z>2jryqYK(7F8-_T`a(bOKfz2^j+rHU!^;&i?9POOTGodZWnG}u8A@&odblk-`f?W- zgrDkH=mKr@L&RvqL~DIwS^<22&+PozV^PBOS6sby)@UNT^nHP|MVY4@bN?mXis?$d zUwXl3z6)8=8Yh>apt_%V0e6!6L&b0w2rQh1Zz((&;iFk+k6rv=DKp1T!{`q+7tqpp zcp`ADC&j#lp=<`eS+o~sb>6giKW0S}wb%{>Q$ltO`)dj3&>QXYr(f8yf#@;P5YCx( zo0*xxO7%$)&ef^b0UQj2b6IM2?jy(I*(=^wr%^*HVs&@mb)~4GJDvy{BN?TdqMvD6 zlRLRd#Vp3e??KI!EAVw1c5$0C_jG#)a%gQnm6W=@=P-2j3@~*WqTdZIGJ>eKynlmP%!_*xVrWFjx%D z+~UWbF?Q%iC2Xjm+gXSO{V?U2lh@WNFwM+`zg`fGFnfDS^IZ*#<=UwiEKPl+uc29n ziuv_J2i=cs#?F+k{s_sTF>D6xEk36}izR+)lUR7C#FEY;%3G{SS(cz$f{Nml>1fDv zWBLBN>SQF=$5P1=Yj4$2$mg-=h^1Ej1mc@m$^4^o8i0#ZVt>#rAw~_5Xhg6nI$GeT zP5_lOfETa>@^PN?2E+$OS~ZaMry1A!Yt{82HXq2#jfEV~=_L@?8tEgD^Ev$h;`4!0 z*|0r}Cvdqcg9IUP5RWa>iBsJ{4Kz}ToSF}6rIFgtsiUBBjnsWkJpuJ*5VvtT4aS!o zY}|A>5Q!!fzx=k=v^T`jW&C6$W}}(8tyO$Kn41Q7fzos85~tL+Ks_AHEn%iZDBy#I zx3tNIiP;c=5}m)PqOc!AnfA-QrS&=PL&#=lytFEF0W!nurtMlh<-T9T2a?310!RIZ zlLh%^|753|_(!YX1~qH=^?Ih$P+Uvj`_(SItrXxTxTlmS3D*2Z&!~Xc3;C z^+T_lx-EKd=QBMNW~1%hM>TFDv zM`NnW4jy!e%OE-@=5f1^v0N^DeiD8{XG{m;C7hc z|Ac`_mFiUZ_d;(~cMMEAQCcSa7bNw05{4g7VZ*A2I(TA`F#<6aTBUfa3ZZSj${cRA z>bnr9f9_MWl`>>C^(l-)P6hC;f9c;CEZAY1+^-IW)kj56Vc4POF&L!Ty$?njVZpQ% z$JCoK%IMmNp8ADjQ1KckGHoIj}5W z3Pzzj4UZX%b||VN>2T0;QzX6*{7Bee2!(gIbkdAaz;cVRz=U2@h%C@!C$?Scr@q`9 z8+G;OT`*iS)acx8`aq-Jhj)|kd1X{bP`&!_T$4C857Y{bBiN{5AEydHUG9SotU&!G zQS@_6s1Mns+*Xm7*%CjR{;GygO8=8QrJmLo&P9EB=ZkHGkU_l%)Q?8$DyND;JvLGr z5;e$Whe3*aKMHV+(o$*ny$-Z@ZD)IvCjA5|^+bQzy5Fb%FsdIFvL3T!U!hWQ9Oryx zKh)`A8fUuFv41oDmZoQB{iFNE-<^}sG)?SN)zN;$^)AoGZ2E87W=yahXn5N*!T&m= z{;O^N!r(yP>C9KrHe1=BK&Qy|6!k>=WG=jA5}R&&=qd6{oA598iEIb*@=dp+9QIc> z%`6E&1V-cXA013aR^P^QFncT~8}4_{IX5}K zBky|G+GY0aS#N({h`gal9z}+#-iYxMh`K!xb!>eDh|BvBan&19!hXnr!;ndjoA5+a zeGJZ37uN3ze`aqRwDM#xtZ>xdaS%ib}cb#Sb1IhM;el zIQSXp^%3O<%ie9FThMc_5zr|Bk|Yzxg%mNt3$i`OB+KpLNNisgZElL;)%N8+0NT+x z4G5*IK*FH|vQ#^AA+CR5gX#-N*bcoY^g~F?R63-ujw%Kg(Eh9sl5+cr^wz9XF#Pi% zX_pKT2onsG>lI9J-5@G%1=j(OId?@eW7{Dj=A6+Nm%0b3TYZ=Sa$+gN@-zs!U&x^d zg@RexIHfHlT(y`qn^10)XXDEqK7t1b^n0xk;2weM-Z3JdHaul1ZfPtK^~Q-5-8`0p zTYns+{RCVf*wgk)JpOMcu==~$t07(-P3ieWxS1!5bla4-;U$Qjf|T8OC|)d^cHV8B zGI|<5{7m{`vk&|_8EbXQrdh~qolCE7Rx?Nu6kxor=ACw#2WJsw9?IjXqtf*9DH?v{ z@(hl}biJG@-^F?$t(LC0CCN`cmEtfTTHSm~e{#cE&ZVB2{sOva=ixjgV>KA!Dq~&p ze2)GqZL6@d`hlZ-r38b#?4(by_ytZ1r9|tRz^!b>m;hLl1g^Vid#Jq8;Ke6!tw*~S zb1uFn>U9u!?0u0 zE)WiiuRuQ$>?#X28rOwF#cE1E{Q^u%7qI#XmOLFaq8&vz?=Fy;DmxeSeZgj(WveBM z^ELq8it?{v^&pU=6UBKKQ)Yjhm%w^ou;gseh%T^|KY@I$o}hLTQ~}EV0_<)e2PBD) zF%$Gk!QKP%NRqf*KIjt8rXNmR7J0-{JxU&gi$x?OaFZ-Fz=@nizBfVy03kTa)ID(2DyiP_JDf<m3rlbZI3aFnvsP(iA#q860)76ql7Dai?aMSjrH_I6!e z0cXJBQI^Z}e7+a1r`DM^QAC~TV$_qe-gd|{K6K&o-{l#5(2EO~W7-y3;|W+Mg`c~g z*iGKMJO^50W>-cDDM0Y5RJGtH%s$3GOSBf8;9ovTdHR*hm6Ootbin=ZoFrOSH5x%d zp5~rcFFzapMt!h81g&LnA_pm0x}nOPhCL$`b6UeId*M96hxABoOU_(-$? zSL%9{`ba#|2Dq7Hx?Kq^hunfj=;jg-6j)w08pajEZ6hhK_m#H5;)HGl|H#wYLJ{Nb7ur}b^85z27F9-Z=R;5%6$U>|gz%1Vy(}*Ragug|!E1(Cdfh1Ou}rBcwr&jf zP$%457t#LoXFSn7xJ=IXqJ{(TM3Z{s=z;X-MFVm!`r7G~af1;68cGS6ly(YNM8+_@ zro)7Iy(w5ffb~*kxe4z?!{N}*hKp7G1#1FWvxW=*32-Nw4`U}-8N;~_Vx0r}8+b2L z`&RK$bkWG4j20reG3d6GITW#y7?6{qg$P~+`d!Y3tIJ8~JZM0`PWwHk{uV7Hu(OEY zc*h_=J4SeFx(e0^u%^U_RcIQkF0jvtYdf%O+MxO262& zp;!E@Oo;t(w@W}Qcf0VszE&jJtwpN*%H2Bcp4dwFx*UYp#r%5cmA1D3%z=pYpY@yH z@kOn>jbAmd)g$DZ>;K|#X^eh1SN_WE`zy2WO@+^&Ou14yz83p+kgYYWAW=2U*WzJi zPM&(DeY-cxROWxE1ev_;&C4n6NUElgk4QKT`<_oNR$N%5pt z)yKQjTUV|)DR(^~O8_*CFo2Tg1=lj&VwT`z})MJ~!!DE;aBhd9xOyFX}6O(-K=5Xy@eK_Gxa{ojE@Q zuAHiVj4ySj2)FAdr3a+4kBM`JQ7Yq%fIFvIUCxhpzLSaKfc%G)8OXHpakT=2Wfq}cpzxMR7otV2v=m56EZsf)zYE7AZ0q=O`X zpORPOqwr|VU5N5kjVY!{7WXbZfFz&ePg!1g0zhM90-EPDRELCa7ARWPEEDZ*?46PK zkOE1)lb*BIH+iT%fUBQpQE+JgKOwdCO~o;TDHZK)h#jMhg7luFw!Qg`x4j|nPFrOe zUZQ)=#qvN3n8#|AF9YHz6j_7aX*;^!a3m&WOAA=R@Fp?LPQKtI7?&w_9GpDf1G?+9 zHCvH)_2YhWqgG6Z;tj3N0hF!hr|CI3;kX*@0-cocb2~%Gn3=Y{QC5nb(Qp z*xVwDHy}YJX+;ZJ4nx&LxNz8n7rAw2yxfSk~gbb@DJ^#Q+|SPsb(h>cH0}27SKwbbP`(9vsU>!#ig@G6VaKx-Ip1Z@t^~` zQ0TQQ2JN6OX=DBTw1c6+prac3xBJ?KnuL2hY2WTb;X&8@w5!F8{9YGU=A1v#%c%WS zW#xi(OR!#ap=Sr?nsiWps!{wTFQe3e9E`h7au7ISf-{VBXz-vVE-IAtpd~7lbck^` zcr?>afd-|??n;sVaemqhUCYhpi(Sid5CXdi%lTa_tsESttv9ZW{b#nEUzc2Ah)XK) zQpAB=14Z4tQmgH?zf9-plNtpy#{VY&WjZhawvxpA$RyQtw&miT0WL90uekxLfb(vv z6k1GxD&)N1R7$ULhidQz=hX(4#3>(@Cz^UDQOVsVPPBS>A8+&J@2;F~@J8K%b&;q9 z-J$=S#XZcJ(*48lX1ubcF||t1Zh4eaXkc z%hkPkP(>)zM;fL$c-~_v+CGw7O^R!H)mL8x?IG6}f)S0@I9v#z^_0uVUa!*v!Iykq zOx6xkCJfSpCD)~AqR(9-#j=hDELhGBD0>83Vnhyz;2i0*g=q9~{FRfE>C4<%_o@l(POwlMbwW%?BSZjME)aJFs4!f z1Lc0kVka|T!G=e3Z6$$Wb(@rA7@|=zoU@wp*+SmrVqFZ7Vq+OwyET@#xKrMbMLPZn z%39FMAnzH$vih@G_9E9Cu3`M$NRcd=o^VnpwV><(oGYb2F4}q&JQSn(V^W~fXd-|L zo<7*fk|?K)h6XrR6iD#nz99$C2%%YhKNi)F59iNuD5xCIPo-~) z--a>)KJ`gFgrg6a5pI}-`-WwYB;Qo1AVpM!_RXo zWd!swpif~G<43ZWc-mHcr`tGRdj@}jiqB7`e6kI9k@Jv}ss+Xi zc2Hja4uezzxZu*0eZ2!=lJ_gTxdD{g0>6uhDFT;(aQgZBVl)pB=$rKxkJ6(SmVERWWJhq2H8}bnq8`AycULT?M ziIS_jdFd};mMbpxZx8TBK4gLiY{8C)hy{AlC)KGbO=v*^#U`wTqe{q6Jc zm|mo3z(La2!u7jeMAr7_cux1z?zzM?aA_}_xUNiL4S{)*}&48|b*3VDa4W@y5?Cbaf_G%&ZeL?_y@RI&)skTo5x? zG4tgWagV<$`YOLe>ye;mUsZ2q0|wjGiL;;!ODCRV@W)l| zu(Yn3gP&@ShDz4FWspJl%Mn+bPCijM`FyaJtE^pubr7r*Il^OlU9cX4^;3>`NDjI9 z73T8(oHEE>x#G?ygHFy>?`#_eALQ~=D4&D=GMD12_BXQiR(X8A+uI$_EOdTqYAjVREgOD7g%ur^=Z#zD}h z^HJ+I%P50JbZF_>O(L`w-d3ggMxj&R+#K$4i^=#TyoVLr~qKV}Dv`%wuy*L0AHVygIScwR8f6f?OXQ5RTt&(nuKkFw5nbN}!$#EiGfJdLW~%NxCu0Bsq#d-V9E_$iaFL zQUpoq3@Ex4`Lqc&N$tvK`!mu6EElneeemgm=2w7RU7ws0I{{oX?DYHuDdi`Swp5^ZS2!#~ z(EM~+71rcdpuem@1JRp(3gBUu-uW*S6^;vQDI$VBwuH^-7Q?9Y8;4bj-wZ-Q;PN-F zuUPPGUke?r`=x=e__~(}uDuTsVbcVi#9o_^D$p0yBiWnyh00$FNKq8dq>uD45PuSn zD=c~?=#&_|2`C3`hZ{9ABq!L0LxJbhTF}qF2-E=*i1Um0x6ny51kFxIeYfP;BS9_H znSW2a)Fap(92Rtn5qF$TneB1%>w;y^UeBk3g(h4ba6SG?*Az6LZX{@abOfjQ!x>Ov z`REEuW(%6#HvRlXps!pDN=3TLT!G6WoWrie-`he)tBAUBMKJm9)Il)|;CsJ|H7Eo9 zV2hc^`_t7dK*xGGE0HFaZC!@KFpu|Tmi=M=eM13jQ!5c&)T|82NtC31Om{(}2j19H zLosaBnPSk>Ub{){a&`~;Hq!8<5PF7Lind>%h%OTM)Fi-AD~cYL;~`{6Q)J5_7B#4}v^`q0m>iSWaeNod^DeqdGYUAF`1dg9eQ8dJ z$$4h~Mghw@F;{|s?Y6$KWOq8gYaa|`Az;TTTrU#8)OaTL|0|57amybM3nuYDb!*l>H~7tlaySZve&&>iwo7Q0fB*e1tFg zPmMu`TVx*lQn=z^K(ltfBk^B!qM##dW3O4I(rgENUu(|SO@kJOP z774*xTPtDAMBy*26KMxe3w~@RGK|~kMF00Rm^jRKDMn8)_BU9yan`6d&TZAk@fR7v z9?KNgVdlcyzWt?F41Yz5ztyK80$ga4Aj;?`iOKSB`yUfVH66%OHwe zP{sM5!B!eTS#9R5rszI>hFh{}Vbl8=R#R7V#=acAWXYNS)p1`gevos*lFyHF>-y$T z4&?mJ?u|QZO^bKd_|cxVtOwuRThISaU2-^`v)3ju_mAQSV-geiz6$MH67t8ebC zDVasRZ}6Tw(ffCDEb4tziez8aDGa+IL-xXUrMkgt)7gU!-OZ!#=G=08qX2QUSb*>% z6FTJPV*PTBpLyetIo^^@^*r-xxpvV@Dw%(<6y}ni?Jv@qlYY)QZe6OL_kWd>UfP*V zh!D5t!OhCSE}L)>lHE+Bd50y$)}opd?2WdcL6l5|3%)r;G3ZJTAK49`+@E7z>JfF& zOv3ixPKCN;azjbP9>1$*8WR&IK;BiMrnwCH35@Nv)H0RH5KD#F|6A7<44w)(6%X`y zZ2)5$W%uhcG?_MQNE_M~U+ay_}-euo@B>!%8umzdKc+T0$Ot?C7UWk|77DI*op z>w)l=hkd+WZ;S6N$p_a!f&-H=97H1t=E9ab0&#;2oyRcr{eghV!7@+>tgMG=pI5hn z6bi;h-x<9x(F;?Qv~I+XT^Hd4*4vU7y}C7qOaYu&Y8Fazl3irV|GAAx4h}@Hm3)Sr zH7dhFP76${eZ;5(wS_aSKL(i-s0LUbWAGd0C!aK0*9byzK1k)a#{g*-kK&EmDM2E< zvkX>t)WQ zS3}Q=V%fkA4Me`CoP>3#@nGxnUNjTyl*3@20S3v(b_VV3V4k{(*Dm>_pEG&wk9XGL zz3)Pj^Nq@MfMhATBmb!pDBrz5VTNOM@7byA2HO4k+can~f3-CjIyG+el<8%eoBytI z$`T_4@3k{6sF7PqVydYsrl2RQVhX;^GYxCg!n&VVHTQDOomTUWvdX2BWYxh>+^YAF z{KV`YlsizeS)00b+UoPebA=n}GZl}rY17BF9VJ@wHz>>UV-9}yQ~ zbH0!fUF!%NXgKIIb(mx_NDV2qBfQ4U{E?f(90?-LxBr9@Q5S}*f7`$sgB2go? z%6Jov_;#&YXK&XIPeXtaGqmD<6u)7qnyWD#4*W z?{L8+r-J>SVDtWACk6XcunR@&g6D$s0vseaCM6oR#*PBKp+QF|HywrO>esQn>YzWM zJFGK}Omv;2h>jO3wK-2Om|W(YU2}i>FBV|heW<`;&i_9}E9il$LvFX~kb8-2n9#>KmxZl|}Kc-|jg>zNmRYsmshIafte<{mot ze!2GAdNu&e{;M7I-wQd)^zByD5{dBdV7XcH`R5GDwJ3F=tev!-pDGNY{xe}{4j!8O zTm3hRKgY@uf0qyJduy@c_k(%K^4t}Y^`=K3xx~b;B!`ewGqt}tQu6WX2J?ZHx$jmf z_4W<880}_G*pM4oT7wWs5P|NlfkEZ)P|djn?9-3opEwLotwmPHGL3o-ewc?K1P_U} z1p0OO1fRe(>xafZ07ryN5An;*u(lowC`B#>8$k*JNs)^_hBdSpQ=Y({=DdrJg>{3dypefCvbuxQ_V19Ead$1WMl3Dt?|nz8liXlj64?@!|)h zK_Vz!1Tc|(yRAB9a98A;^g%&SOokkS!@-jO036)kM;j4~-nV7(m)?5nc|>;0fF zm9G63gP+w2$0#^xqr^$be|xS@8cO-Uq8}*B8?>H>*;VSSycdIy*rZV^pb}g`z6lOm z46)^`O#x~%pC_RMsdsN?mpHso+4OGATdJiu1~b#d440}Y;(#q+@2$YTDA)yH!yJEs z3nI4!XI6B5AU*nU$%=do>E0+b`waKC;$v(>N4Q&xTU4zJj!`+rnJUe%}=M@stg zb4PRH54ka=y$H;Iyv(guF8CY@1KnIgf`Wp}lJx3u$!BUsZC>ZLm2W%1xk#C{&l>gL zVe>fYib8V4vsf4CjQ%KdVbXqgO^#ZpzljBlApC~bre``}3gUxaf@2ZzGrWpAZyah^ zMtHN>j>DK?*dc*xsJx5uJRec5{0ptyNq+g9&xElz6DR2*2<$3Y#Jv!wS%(kMYda& zq(uv)O82kgBR9jKEv&oE0;?~Ewr}w?DdWJM(L!wd>nP$qPowoDeDZhLQHLfV-HWAs zq`v1_iM~LRT=JYLB|@(=50&#eS!=h7WNz)Z8j;SxvL0AsLW;=dmXLdn6e-DScKroOLV{9Oo(r**@ma;prvQ0e>n5R0~S*ArbR z$uaMLv|NCwK4!^7#Jg^hHN@nCd7De#W1lyQfU1=v0_u(Yb${neqXwGqH_x+?Y-Ihi zEo*^*D)%mHol`jq?rQr|YXx(7CG;a{Gm9j;jn=ig5~ z8JJ2`AG?~=b^J(QeW;U0me9nV+|?6Xg>*Z%^;rbj&?46J$kENDJV*b7`^@IIS08h16?Iar-~! z(&H-xcWU@k#+D>r?|i@?Z9fB5VR8eqVkb8CQ!2tOFCWYU<0H`#MpSoM}e(EpUU(ohRQ0V;niGz3XLLg6-4>yXpP>LAv!V z;oQHQ;OkO?&=&5HrJG$31uc3Bfce3x5=Z92u9OFz)Y#f}VrGkFCrMIx7mUriP z^s)x8{7)q98djMJgn#Rmcf{tOUX~ty>qn{oqki*NEnMw?r1wK?4dspAU|#uA$zaIR zN@(=PB6q{#Jqc@f?*iLfCkJ+je9wktv^qP*KzQk5tMbi}& zymg>@syw|WQswD2;r;qks@2Sz=9(k&?lgX*P-f;zCD>(Y@^=e+&d%^ON2TT!OV%Y< zhx+9=LS@3pwKKJ$PUb`J1M9;e%|EL-YtPZFM~V|Y98cYo_E-a%j4{Y z8qH1KyG3aT4`eS}O6jUc70LcQS%!@^3ne$rAje{k0qNqVBO0H$2tkPsW3sLW1D8r3 z1*3}_M5i&n<|brK9y1%1q1ji3{Z$|SPe@Ys-+Bt@XXi>;Y!TdsSt_nqMlK?2m%zwr zEpRIA59G-Tq-VDMp2hTl zAUW8g9b7zonY(+*;G3L=hi94J88j6320D>sv#6`zF%5({** z;76m>&RYRN$L`H{He88wgszazPA~^GX>%Anm_gYNdi-2UvAS)r-Zd8?xw)`_`d2aN zK<85Yhj|E`F>&?;V`-i$&Z^9V`c#gg-n0U|dTUH|;Zx*)yC!U!GNAUUn3=E69LlRW za}+Zu;{hZ)C1FOv@U?m=#dbat{O425>P80ZAkYKmi+fOFF_=7Gl+nK>@Yc@;L_0HV z_7CO@u+h&ez_6Eq|71QhGFkFXo-8GZ!ljg$vyA3l&FnMF`K;5pl}iFHwr+eK$&CVX zwgZWcl||JPbOsg+idVaJ;B?yIzhm|j3yMd<*yAT)OX=8Qe@80*LSI8WIe}hz0c4Gt zy9*L3G>Z8ScT~A9&d?)yVK_UUa&x1?JJFt^*5|QSU~-2e zkDr;RX{cjo=4r7gV)h7zuisv3)Z_T(hPE|k*ONC6OG>wLL7k(He7=tJpu0!&I%{w0 zERXJ4Sm0x6ZH=V@Bh{+baEh~TKFJabt`el?V9NTmQH%vQVLo*tFL~k{g^f}KTQ*v1#EjR;(>(ywND&QT`!LiYISXTZT00pcBYePW zoje1Mz;`H>$&8rOF#h&nY=x|NhC0MgFdsr?KV^@GP>LBChK3jz*YXzPfMF`iN!~~> zq~yL~*iTO}d4X{=gE&Jt;I5Pp4ahRA!~1>ebut1|FgSm#Pu1IAfWgU78HXc^wW<+i zHO?|9dqF!lA^U}`xM}%z6Z9BB`!8mCrZeNzDFBHKL6qd(z#zXys+|v&Y&im;9o8DG zDJ;iiSdNB4BF&>la{*bynwKc`;TIeeLiWRFvJPF``BwmE-W}!+g!p_|Q)m4OW8YGb zUgH)lRlUrkH;{Yu$vEFx1>_dN{TO79;64WV8}c}?wni%?LDKdg7aHaEAR{Sa zH9$Q%Y{nFf7mBGZAosEy|fo5 z5G+&I`anRiz$F@1$+$UT&@BlI=QAGFK2`A=P+QVMr@YHv!SM5{3hym~~`(9VbN69r(> z1?~!!T+`Y+xoYA0WS&m#F?d2*b=Yea+M>5kctlBsxVWoAT=@Uzm=;Xhcr1d}V=uK2 zf7tecVq4?g)5cd%x;jEpDnh4-FK~VX5=odeDlPfC+dcoE#$sa|?Iu<-wvqgMe!ZXJ zQ0%i{-zApDZprcg>S3{)z4I+Hxh#xynp6Aa+Z)~}_pB_Id%PuBlPu5oe_c_-{9}N==A6 zYk!KV-M|2Ni4tYJN$v%2Dxibc01T7e-h2Tg&F_3UWZ`ttYAg$=%Cs}An>}UBK>{WB zHl9U*?X4h=#wdL%kfifI36XVhzLID!#=+eRAw_>eJBZqlnhubl&zlNdH-je#$|Jr=_73IS&Yx*$_c3DSr?Y3H#XII=Ls@w#O*-et#HG zU*VX0;R0kYFBb)P?IM6O)lRi-8BX=nc4C%483kFBKT;~|RK`C>;|{>aq-^d1cJ$II zvoOx-D4+!cDK?>}NofY(tkPLLEi{HmU_M=@&UEaIB$+Pak#In4fJ6ho&`+5J_i8xs zm|0;(#@lywN&=jve%;ej@PcgZ4lh6?w_Ek6@mu=1H*nqhQY4#u+81b_gQ>W2A5Z-< z_$s4^;$<36>1=L3@@n^tp*H;ni}G&mw()7-hWRNc$0MdYLA*5H50S!KWg=db$*8Ab zZ{uWilZxlPH_+>KhECZ&4IcCvl)@(G&46T`!?FI@7bbr=SEKos^8H3YXJX)p_VeH* zo+q&Wco#j*eBgV|C;xRgcoFFS31ZTpg@qR;aB!?>AeV9=#D^H)N5?LvRCN;Fwt6i@ z?#e=ezBX5|lEGT7vOeG}I%7tEE1pX8m00r~*8HNbaT5KtY9;~e-_o52(5y;;;mkMn9i)=0IC=tWZw`<4}hFJHUb@Ey&IIF?gBsgZyQO<&M zd5KU5zXKlXFJXSt_iU!JU{O7CFPo?y4cWvOs`t)5`+x61tqTQQdqX|y2{jRzBE7kF#pleH)^^XJd;WY zCk)71lmAC_+EjB;)q;&yHdAl3y!G1qqO+*&>Fi8VbDf|xX$twj1x%u0Pg5#x6paTA8!9Oh#E5# z?McWIutByL96!9zR1yV@Z4X-?nwav~3q}8M>HG$W(WFUm1k@7kT#D0hU~eN7hB_ij zkzR~&|2K7j*W<@KaL6VNi3uy6SLeJl%{&)rAXuk-zYHgy3!a!C%PA zt@yk#8VNxmOW#1BT?Ni*ZS}V1VJ!=$DGcU@%edb(liz-nreU*k$+@mCCE*;zE!l*xwpgIT)U zwm=3Qk-9I^5;1^>anX|FE5RdO%aZHEtv;CE`=GbG`OfZwD;5a^iz5WNt^1I-=Oq_Q zK9Blx%3&id+-KqK=uhF(4)&zDZ9_Jps=r{UIk8K@r|xgu*Z;8iSH zvF5EK3*01|ho2-TH|rK^$MFT|?8l>w=KiA#W|RU8(Cvf-w_}qFnw2~5x&NYRaG-Es zcr$<+XTG1$ug>iH)Cs-A^fTZSYz}Glfi2nJiS^Xy;ob{vq1Nkp(Fnuv(>he46zl4K zR$f)GbNNrGqYbD+k=`XH?27&c&HS{zs!-k+dOvLp{(g#pbGpG_XBCIV0k&BD78d8~ z{j9cv;gB`Hj`pZHoi@9Q=w;3k{R*p~M6s$s^y>jFwF&J&@6rwxgMEPcN8WDX@OSL-BC!rC7IahgUXy>2r1~btL(PT>o|+YhxgOQrOhTcDtXfOps2b#B2v zt2h4WUt&ciD08o;l`N}~>2QF$EhtE`dH-mPXIR(V-4x+7V>CL3BB$h{KLLZf=2r75dgDX_Dc!^n#mXjqqB&TvFhxAL@jB19&c{n?$di zBzRer%}|PNKuKC!V30NNPTF(tr0r{by6*K@Pm|cbc5vUAk#%o^l+8ux>~GM__-}X! zG@VUQg>bBr4f>ZRq9H~HikbtL7HdEucZJg8!Ci_J_kFxh=?_2Rgdj>;hGX`_8~9C# za3+PXfmiEKc=4iIQZbuc+!84x2pHjN`gHtmriUV>Kb-uRWA3{MT(}DrJ7s$kb0o>` z@PS2BfDb%P-0`^_y!t*5d4cI z?-e-x>quls^j6)bw&+>02QIa|-W10swSC}I?Zf?4diJJ#gK>6W%3^cx^urS#DDHU@ z=H4F&@by7tzY=r(1|juh2xa~5jdYPAIL8o?W$Hf`Z98s*@irw-aPi_56CVx5H#dwj z*m1tYQ7|7Po_cu7Qk}drhWQ&`uPiVsA+Z{bZiL!AW5O1l(r^SE)gvf!6%ITM`p!rZ z8)ZIHx&J8UGmXE3{zSZ2$(I=Ci^e+?Q?eO3JY(Rw979PSM-1{-&_9yHBo{B+w)iCd z$7wVh>Fm$;MmY;4bnlILVFkVe$FQQ@aaNJxBd}KC0^Cc zedCd|8_$((ZBKYN(U(u@58ep$3c`u4lR&R8U3?gWGwQ@`(9cRIs>2oPF-=@E1axPL z4aTjE0Xc1&xWg3CI|ch3$Q*U`W6-Yz+haN$yVLnewC$&hTj>j4%ydztxDfQ#>FRx- z!r(J?;v3M)jM5JTPptn8^#jdNKM;5$K>PMI0w9=w#uZ?#SC<`Dc^`v!QRO|DLE*;+ zm}IbiQ&}};ibFkTqBwM>xI$-@7YW|bnY<;6cHT@%8Gqg+gSAdwmZ2^?4&Hf{cTeSg z58mHYp7ShmiCRd&syj56X~tikBlBu5#vb7s-ABiBsSK)cjgbT{m+T`FoQ zm19_UPCc|(J>9q9{fuMS7wU*yF2C98!)lK~clm;>U^qdYQ&wQGelDedzB-ufKMx0>=-hI{ z@W@uXov6{Kg3j7%Hsn#{i1$I z`#ai1u(*9^)qu3!S#a<#0}}bO|8@qXQ+VUbw;m^Zxk80m3Xe<`O-+^3YZ`)D#(Dnc zgbxbp^nRnF`6~otB`BIcr-L)2wjJAQe(^^^v6an^hXr0G9haeX(((&4B`4mvVXn5Y zSJ_$?cRCl&~aQ5Xmk@{Z|`vctb5`H zY2Xfs1Vnf{y0gtSqBu^~6V}1kxR-ob-WU&UpJL;hbi00`LHnR4Z}#;y`YsllXu|e` zE~4A6Yc0-qqkQmX?^>)J-{<~jq%J)l>_EA<^{z^9Fo)MFgOvwZ?5Bl@)CRnz(|%h^ z?4LXE<&3HnGc==np}YChhK0j9cJ%*SrwH+%e)|AL)xD8Y|b)%-_j;UMcbZg)Rd&USb18>`#a zmv4@v58D@}*tDAV@rq-Yq9SN}#(|ll3i3{eLanZJv-`74VY*bd*-4F#y16tB5!h#Z zuhVIgU{Kd|pctDzZM8S-DE;@Pemr!smV83SI@8_XmpW;Gw-=kjPJDzhm9Z(9@kKQM zZ*a1+{eY`O*(z|Aow^SUQ1^kosyg%w5Uk)&SAN1L4*$!a{_my^y}=F6f4;-ULKwq} zz+3L(64&_YY`e+VyKFn&`t;tHG;vfEo-2wsw zTQuXD2>hRbX2JeJLH^Cq`{rXmSND)+{uSa{9$X;1L(lI+`L7+rYzJ0F0w1=dM8Hg< z1U`I9p-wqzkD_E?ot`$Lpo29m8%q(N90Cq2>v|Snfu6@`-fzlDUJOenol3gjg3s}C z2rr~u<4AD@I}FMtM^u|S3aIPbpc9;!1KD7G+zGXlPKbnes^ZCl2|r;>&dlI3$Y-5V zgoxA(1CmjhG4v8+zZ%T0F|rcOJ@h>ACNd#d#r_41FTnhnVsDUKD7EKeg#7Up)gzyt zw~UDPb51XCh6v7F&LQW3LmVs`4eHnmK~NFX}?AJ0}JA}*7Eu{dfK{|CtcX$=qNSfl@CjiB8Pc8_~#Zkt-p>J z&7mn@3`-BV$R6gIJWqs8_Jt17`k)xKTmuZx!sKSQIJ7G~HyIk(<=`!v6n6m{~Wne@8E*uZ>x zS)ol?d!D;9ySbTvf2;69x!D#wp|_h0lNn{%Z2nwI{EF})%2ryBHFw+@+RtmLeaqVm6lgNKQVo2Y$2Cr{p3@_|aT3bUUota(At?}nQsD6< z4lnHrEYT>IbcZ-nL{YG-1Y?~I(e{l?%4Q1P-CXFQUHPvs2`fbgK@qkL0j#9?Fw4a$ zc4CWi_8d+(u?W@rf4U^bPqSWPso1O7=JPhh7?g7ez+#osYkmji$$2axW&o#Hy&~i3 zH4H|V@${N1poH*bP@YJm!C9PCo?gRxIxrqfFX#W!forYN39_%ZH)ZT_v8HXm7~CkM z&N>}6nd6LRa(%sZbf~CMZ{D_}@Z&c(#rqZ~ssy2XZpWWBx1RdU$DDb%Fh)`qKkoX+ zl=~F%a_KB>NHxkhvDskG{HX9%X_pA{zaHymzJI2$L3!2W^AW?`-28(oB$0b+5@!M} z4gzC1MHD87>5CzGKZS9&$B|;B+Xm%6jHfW(e1Gmt$Tbx+F zpr5h}=F~ZuT1*tNoFb(dj0|UyypspeH|a4wKVJysV+i!VH7F^6he0|{nJfUsa0rw< z7*^hH^sHl=L0$rB`!>agC8~`f(lBmTE`6=1LE^4;7q%QrNjZpdl#sx4A#%~#nZX+{ zQ%?Q}<6??RF`y_Ok~LOHT5ifEVw_l82tVMzwDB^@*CAW)laJQPh~(&O#<9g)|;hgwJ(7SqH`AdAL_)B9HlhRv2ADVlkAH zzk@encHHy%UNz8ZJ&TDm`UetAdlz~U6IQ_xR{y_*7Bla(YZZ#fK}4!VHRqaJ|BpB4 zN}9S^WP?ySchIYZe?R9G5KTz8V*QOCXF;^YnCZnDiONKOJnMj44QCcvv0q0EizlBx;To zv&jz5Lwk|v5Hs;Tozemh$X^`<0xD~rpe%;8{M|_ilWz3<(?ce?4-}PXdhY$uC@m12 zrQoC@ZTO*43r{912I5vu21R^!$XCV_tL0M38DD1q$A$C%chZ9IGcpv-r4+Dl@fmtY3v!Ai<^;7&39kNB9ku-RR86kSI- zLdYX*c2%6{ZL1> zjc!7)8Nv;hG9bvHbOrr`Gk289^|2=hQgRz8|I8t#gkt=_1ztE97TU%-#T$k~f;*a` zExR-WN{)8M5`B!Mk?ci_QcrM?{ImY?$|Jqd_!|%d3u3fp6gg+v|&J zrEG%~OwV1f1F(cad%OqlldXyJT6!CRB9QrZs!3+`s9#fR%0mE$B*8sr1sl;QdSOR^ z>>>JQPXw7LxbK17M?RAQrtqogubm6dEx~yqI1-9Bs);Vz$iYJwZ6yetuzCVsVHmpq z+^*&)4HsR3%5btq0)qRuhP>-qE=6<;txR87j6;#L`D2@+Ty428>_1o*6jo!cC;j4R z@2Fj(rTlP|YKravw5>s1g_>eQT1NgX9(0Q$8H_>`5gl48KoxGF9}*C>0%f{YwI~o+ z6UC$KEGq4^v`)&>ddSR}lYcvQ&DF-DqRdKhoBa>prwQ+Gy=dkzf?5lW^^{8KHJ3oa z#{nLTorH3#K;`K*MJi9Pxd{sU2G-rdzpXgMws^+VYaTG3`CEsggKlpW26r)E367o( zyIQWBzT)IY^OO2T_L9wyJ`LK0H-3Psgf;eaXxi18-sblj7Clf(WkF0{Z#T0!sOXb& zS>T{-@o)+*Zwk|kO9EX_^8R`VTA3Z~?yFBiQRh?y;-9+G%ceyJc>tUzhbcY;m(WV)S2T>~XYhby zrCTlDC=De-(5I(^k)t-Y<||lZ@Bp=sHP1Hg#efIYYa}%<(kX+mVpna^d@UL>=>*0o zR*HF9dXWTts|Vp9$|y2ay9TSCvW}f{=U^f|FeJ#tvBJ3zd+Q$9Pu2=X#T4MIGr z_^L_P`Jo1lbwV{N?jW=M!~uVRmMNaG?I4HDCc*v*^zVW#L$(~OE7;$Geoom~E&mSk zeO@F;F})xG??SvhtS5p`&p~gh&*W*^TR>~L1})+1#+3B*U7!U!HI`+6_|gJ|u(bcw zPu3yI_&G%+KpdyQ@uV~gf^7suFxDQNcLR55hKJu=G*?a9g8E-*x2x5Vs#BCNpyHk`h;fpf1l=U2iW9JyIiJ(D)HS8u4ZORN{r-5Pti^A!o5&b> z7q9=&%1DVDN_Oq^ZsuWai(?SOp|EBEy?8~heY~{s|ngbH8{2mF|+QgSgb62`%)Go17zdmeNu>t2NAp{>8v4OUxjVWx;}_oDhnrfxLC|Ao52D7_{R|2F14rdptl zNyl?eiR(GzG5+m=|LZkB;9thmYktPR*pG0E-|+7`PQ6ljdd;6IPp@H(!LSQr9qUPx z!YS5_i1GBA>MBpKaRwE^XWc-p;Z&_em8sWws!YAc7gTFLT^H0loNB1@^qR&hPp=6E z)q>A5q?%Mtg{nNgrj5$eYubZq%4a)+TFa^KDzAxN(^F;YHGM%rqTrJZ1htw|Lsgz$ zGo0}#|IvK3s%t;ThH^Y|_2#S|MSBC@sCM1P;gz6veO$jqlW*yGJ#$uK(Lk-u{3j28 z=y~o&J#K`{N!ZVPDSv;F(R^xA(Z;eK5NoIPbThA7S7a}jr8LK9CZNW@Vg_V2%|Zm( zLY=vyz`TqPgqM+PMOJVs4p+U5JbU9qFz%^d#<-u%I=LeZ@6{C5gms-|D3xb1K7!tW zNIukBIq?EqxeDxUSBmm}$OBZ`rh=`s2D^(BdCv$oLZp^W<$olpauOl_@<0A}rX-s2 zyGqf$aqs)m;=ONsqj|NgDaobEqbj$_W`9vuld>jqEUb6 ze56$ei+(8E@?saaaB~Z8=HI+5ov$9>^86tL7m6+fE!~g!>d))pAXBhgJ0O*>I_$*n zk0bRP+u7F+%#H*+KWHO>0e)@(uil~CI;A;$jPsGx%_cX2u8rUdb6pmXgAvjJyW4Z@ zbZpXy-Sta299zv*k92{EOqv1TfP=k3VnMEiv3E`xq8DqOT z(!w!N$eFz)zrr#dIaEa>0G^ar9hrc~D0VFp#IrtzeTU)8@@Yi}ufqX1ip<3Ad<*(^ z&9u7O1++^v zO79BJesGQnPLbd|00)>KSVQYO6|0>9JR1Tsg0?rmX_Pus=AN@AB@&#W$ai7wWH^@p zJlg)5tAKsw;j09S=ycmCGr|8YrGD<}*>yAC&0&>eh_q>^cQ;QuTIBMN43WxnOctIf z>Mt$-m$x_ma!fV~XpH|s)9+;e-?@QP!kHqG$%fxQlwRm3YF-+%6yUZ3uSlizny*2@ z8j(cN3Jt(LOg*&X2 z&B14jKJ<8_Joy3(D?yhIj=ZQFP=COBbIY4WbtRi?IjfKEw!eReGT;4Xj``lLqGqK{ zP0h_76g4i3&=V6RE+HW;MEMX4Vuf-+(xW-`>|@tfKdveO({15pa}ffByR`;jn~ttQ zaT5?5@=n^VQ^tc)4*}_Bm(^mT)jaK6WQ!9?^#+^Zo8f;Bh?$J#E;{;g)4Gbg|0meq zFOyGLqEWsEaxUd3oJ9H01Hh~w#qM6kU8K3CEQkB7o;&=M9s=w%Nr%`{2Y8I1*5obA zHe@*Ilm-w2xwQqt6APZno$w}%75#Hqq8!2?$>$F`lh+YDCnXhc1QNev&LB7Y3g~oi zkwBL;rmIeS8;OYe>IUK=EC+~>d;@o~QQSC)jA3v=O1>heyfvJTgDGm~dq8u-oID5P zS`<4EKD^@3;Noo$@lsMpG%+olmghlPa6q-H3U{2Q9C|}JNRgy!wqT@!55wwWu0rZuIGJZzHfg5mF{ zfX8B))IxA0z(ts^lsi#yr-PeV&V5gCcY&K(&dudq}$s{@7@a$4)t~-i$5w_N?f8o%V@_Cjx3aNg{9KJ(1Y1{TT^@*Mi}fW9fnK zsc5g?h`f&w?xsr-ZaVEZRvh0|LZby1&fCPpc^*%7%bH^QmcHEf$D^)WsTqueby-qPGWOOq+!1*~n! z{aYIDWVwYDX;ojoQw^$8 zRrBYy+q0l!70pZhJB?G!5hwzY44s_u^cvQQ&WX?JK|wO&2<8Z6JapQW%&mVfI_CLC zQD2B9l_2W#*L=S3`wKmXn!9;i%aW{plH9`TMD?WSt!vNJj;l(=w~7pu)uwh0`k?yq zs$?Jfs5&KSJrr|Et!sCxmV$bGRqxt$og#{eDXX8}!?jt{avdO?>j3xLBDcJ}rTGSX zAh@|weuHyHI$v+FGe!1A=12{p3|@Ms z9ewSAl#-eh^U-!MTLh?TKtwkKUiZrep0;0MdaE~Ut5Xtv$xCmK>4QFq;vj_AcQg<* zAvukHLjLn$R|F)dTvu(`3Mnm}5S@g0Z}1-whI_ZZ+Bp4goKEQplj}YtX;UN?7WdkU zmN;NcZ7k3=lg7icT@D#J!(XHxW^|dRQ_dqE7mlVqUNDS#I2LWySZnn3%Sc%11<4ZK zlw$6lHAsg<%k&h(2%Yi;e6cN?3p~oC9JI>0h(Sr1pM14BixEb#wmbIY(XOW-MfC^( z1k^b{UA2)d(4C|uK0p4ePO&bHYieh=LLfEWPdld-g$G^p)6Q+hr7n34_*4Z_Khg?S z1ERCs*C3yZrgM?3kE&fLo>iy{h!=rD4=O?1IcXv}oVacx{Xm?f`0JXof~m~Xb-5S- zJ(zW_<0pB6akbX!NgBXq-JE>ZV$%B_4#aSL>D+P*-l6!lu}14mkl89vmY2`kULfOInZB(QOeSFm1%KK2Z%`Q6xI1z~S;FUTtxza5s2X7NUDfKhtvuUD`y*-{>=)Fcrr+#>vjz%- z$1|=e98U?oeBqtmS=pl>?f5Nq9bS_TvS^jE2F>ws0jZcG6TE8D(Xea&Z9^11Gt0Io z7A|XT*(ofI*jXy8EtQa!Bc?43lV$f>b;c4gSqTN@7M1Zuc)c^FRln(@r%fL^Dt7v~ znX%(X4sAbm_WvnL%22{j&c%GC-L-1<-zbQg55Th5lw;E0UwJs{ososF%>h%c6-zb^ zQ;)w`*mI*7M-4>h2RkF>b~>D5j)=e3vsCU9Z()96!8KEPjaYW$LqODO5m4S}Bu!%B zt2=*^_o8cU^{?Q=U5*WHaaWqO=$fJ0{hk_4P+xom{O3afAw{lKyb@K}3(yvMlrfDJ zXajf)B>AJ6G!>W{h+fdrfpV^NO3*2F{dLk6LGyC%k_z-Q%KmzkNqWs${Jf47@Qx!2 ztQ`Bo4@MUpwq@bsls;((16R_+lr zyL;&f<+JmBQhq>QIeAAcjAZ9|ENK2DtSB=N2f0vuF5t%!gPJ-ih5_)e4iNAp!Jvx< zAobMAU~NATuAhM@X={tNEiExn2Jx&OrR^Yif#Hx_NNJ1Gb z^a&2*I2sHYpw)&32J1#c@OGhL7C+?x42(m?DOrQLv7p&0<3YO*D?g>&Zy0OL=TH<4 z-+>cc1B)>B98MX%mKcxL0B;-2ZAY8jTQF>o)>kj$Fy_z_>0R182)AjK__u@IiKtgN`_^!UxF*BYwR2A~uajC(7~a z7x4)OYbS`Cy*vSZ9YEvR$X|h8DiFE(y=G5D$3PX4`~PF_J;0*6*0$l9VfKK73P?w3 zGZc*t6f99GYHVl(dsi&6MFo2oH1-Bjc{FMSyNLxfajX&SB~h@^1?-6pEV1i*i<2#xj`s^Pd)L2* z+zOQtS*g(3GZcyqGdNp><|yPLGvlhH=+!e7id7Wd7Prh^Drp1SA(T`BkDfoE`Lpn* z%o1l?135TKTxCWS-jpcuP?tllPf6#z@%2U6s!dt>!MV}m;Yn-I7(&YP-g-^KY#8)r zi*xOR+Af@O;=P$$ zn(r$e1h9~biU&xi<{_AYQrh9u@!y(aK3>rI;R zXSQ5Co_3I*QY7o+=d6Pmoz^jB=7Zh<-o}WJua8Ag4Ql34ZKZfA+pNU5y^_C_(j3UWNqMRGR%sPpz*XYw-vK!+ zPP~{)oN(VT@mp2WG<5&NxjJG7Jz`A149IoG|_u=K7LkMcF-^;E?A_*;>= z1`P422+g=fY`#+{j(o?@r@T!Y-srK-Wc($rYmryJPFRNx>#zc@6K|0qHv!=FJ?qp< z-y;|O`!ao}0KDEH4(uC`tyeq+1qloFYBW<5M3>)2e7=n(U1QMPwn=oEZ$^&)<}#;j z1z_qH(RpJFzM(C`g6+5!mg#K*-?a_l&D#WiAF{&^fluFoINBX0*D;{^R;4WM)U*n^l z!qC&=R)WrXsU`2zYz}o#mtSIO&KWpfD6Hi8U(h~H3G8_OlG~lb_;bQ-5eB*Id2!t> z=b4!*fgQ*0NyKF;q~yqLdoSBPc|558QdDxeH)yLUDWmu| z)#(z3UJ{pE3OP2F@^P4i&BKRO{xRbEOqHZGyxNxq!_VZ)SXdzA!D;qEK72*s=2tQ1 zsyI_C$nCBP{JU#deXj}p8syCD0WgAhn#pr9HYp?xIBS3f!rcr z;4AVmCSP3RBIL^jA|_6EQxv86>?RC)H$_p3E;7~!*sz-v`b`tPQihfR`c58pK*o}R z{dyDeDI3|ah)uJ-B_JQ!ms6Wo9Qf(RUGuHHZl|nsE>fA%Ft{;%LKGjhJFHs*?=8*Lx%1G z!s5gr%R9n=_k8M9?)p+S7l7364(i8%v=3v(%g}T{3k0T;mB#;bwP(GlC z0@B_Uw_fEgb_^73i&Hg~p_YI`1vL6D1^s|+Cy?13F^RvcpvWIacroZFG3c^!P)h*~l%WxTV76nUR?5&iK-&d$T81tH$`a5k8Df6@id5u?13&v+ zoW35Q00H&+oeFp3(Ey1M$TE3Q9H5N?N|vFsfUXMYsSLdVq@lE`IJ?Im{Ooi-f1~)G zy9q$*_XjGGh%pOfCK$5e3 zBkg3k6X1TO@brhg@QfO0Oewls9=sp$aSl^_Xnx75?*o2bI=aduaYd&`P)exCMZRK7 z8Ey}_M=3l}hGzm^R0?mG;Y7ekO5vo``c-e!@zCMZ3wDY$U@$ zfZLbCBc4$F0lc9=XL6KcUf@RL!J7dmmJYrs!`A`dlt(ujFDVPf70n7kpmqvPb!-vjV6=CC7B&O|J zMf^52e!zlcte=d11#GO0#mLxdV4I7W6Q7&vj~7wsxgfn%5qpQHg0um8ZTUpK(eew| z>S8YZKS2pe;5^(Ge+B=&t zNByM*;Umu-T{t8@I@iPO#-`7OKmJ>gISjVwXpDKbTx`s~G0V>za}&lI+KqL}<014! zUbAIyV?G4F@Xt8k*(kh2!WGOUts)=)j^!BEaM|P-hT18z*L-+~nL;9AF zYbaw{MPnJ$Dgq&e^KmU8#qx2jWlXDRD`Q$kM@W77xXzGf#qfdMWl*c=35j7^1xozDCMiVcw3@^PCWP2tiu8AF|O8Ph8EK>C9B?t@f^pU)s; zvry<<2DOS~kb?QZ6OelFfoEh4h0bM6tGEQI86S5AQeQqUUB*!7T*kDDJV=fCxLc6E zR0U3@@RK;U$FR$;Z`)G!1{v6%Az! zFQJU#C4}V8$F+bo5r54Utz`@^p^V`rgyhV|%~EuR7>U2;itaLqmr%y=5<+t1CmaNc zjWy@5BE#?!${1ckNVa_3I7t3{+$0&pODJP_2_aeWadRLAs`|4N&X+;FgdAk2UJj`e zAGiY2=lF}Fy)uTEP{!~QLaM;WZGzMif6W!!WDGB%!7}yQ!;PQxL;Z%M%E1ri^!dTg z&FA(#Xy`KTdQ3$#uW>cPs&!lYj+B|pCm6z`uFvXP9QED zlR5{gL1!u&($ZVf;qgADa0bUuKde^OLF$y*w_cihRj|Xhru@;nb#&;c-jWheUO@l} zqY7zm4GqC2ZdMbWvK`|q)C-GoM;ipPA*FyhUV@I}4tnDo-b>-F$HJztps`xIjdpd4 zW^tnY4wg`G7ZBHS+eEBAw&O@>W0dir5@D3_tWFlVKp17bJ^9w`KM)?k zw2nX%&TUJxA`gQNq@{HgIyTK!LqqnvTNkt7u2NI%mSy%loY1kQ#MF}o--Se4?VdHq z#%lds>zvrlFo&UNEFu%1fGT%Aq6}JT1flL)kV-X&l5<-ll%WQuz~?zNUuJ6b>-%@W z0F@|n)UjK3041NPJ-`@^hA|LQ@>TnQxaO6ODi@FYGK$L3*i_%YItGD-IvN#&kboG3 zKx3;V8XNkGPhm?Dj#g&Iyi+`WHL8Q_K1z+~P|0vYN?%;zlk3@eqbCF&S5dF$^llMX zz~jBuB7L>l4ha_zw6GAbug%H)9aP;vGAqM&$oV= zy5C>%r7b%O+LfsLJ@bAo4=WEWJf>L2YU*+C_)~>~4|~~bszJ;{5M!lC@N}`I?=AYP ziqL+(^fmT?wjqc_*czt{<8)S>eZDKyq#B4-WQ$hf?^qUxP-N-`c|{xM1%IhGUjtES z*lLno3S2YU8}V(`1^x{WWn|})7F6f9$FNFbDODm&V%;S@zsx#lXc5RyW0&Ds%R4_~ z?C_CmhR9jVo;9I3A!Xo*HIg#eJr1V=H_-m_LeryaDHIcsH^4giO`f9gB7|-7mGdk# z$6xD|IkFlh6?aN*by;FI&nDn!9WM%+^RrI&fePtc=0F5%m=2dOc@;WpPCe1-cK?i8 zs#PB)J}EZE4_*=$l(`x0&Hg-WlM|TqXrNH|eNJwwZZ6s-SZorTfJvwY1yoJfY2LNM z*mkQz!(6mKLHSzN9&XZZw2XC~?**lyH^u*H$+IYW_eMHHAD#%J)kAx3jjhj!ez1cf zj3MSI>VjwVLl$AUhy{&VvrjFZ9LT~QgITyj^5Ch+ZW#oR`Cw7G{9C*j3y0uc_==~R zkk1K_PG-bH=Y+@&JZK=G2)>Zp(S5^I;i2=np;a%rZNk1(wZj7YaXKUN*tiFn=UL% zUejS3olZV9!Nm&tBccTGPw^jGelZ(mgjm6!!PDdV{OW~Yr|-oC)II8Lp;nEV&ZxGL z-owJ0B1MO#J3^$s5pr@b3$@9{=?Y5QGu%_PRUXX)pLUjxP^HKnJl5%y=-|;+7lj;k z*bDJf?5eD^hRL1c6Fw|^+*A2DMgjg-?y$s7f+0J)i!TZ?g@dU^P41U)8pac@v=lgJ zv#}GhD;rZ)jIkVyZ&Y7qd_ys&u9=lJ$aVNROE~WWXE4q?FV&AT%Gt(dSnZYG+YIr~ zKFq$hQx1fEE(gMXA=}s1$bqoWL?Ema+ctiR@Frd+Plc_Voi0FT)m|YKV&z>yiq}N& z-$4fs1C6Tkcb-k73KX@H99MH~xaX)dL)(phJ9%LJct`W1wF_7|46Y5gK($w<4Sy$V z!%t*wxRI&Qh8LMq*mPGXa`jE`8f?5qj5?Y|WjOpDKa1qk655`>)#>7V-2V>hv@ts9 zPXBbHwj=)y6>008FiDZPSY_2QC@1W7927G_Ni-jPx8r z!F9V#l$d&5g{(GBaWyPnmEOlrHbl|9MHd|m&O6hiE0kEH5`G;E79XhWC6pHaTx0Lr z5}B+b3#stubPwqrTtEFOdP54Lk6CajGYO5Sqf<}W;B@ThUo%9*`)SSrm%)@AYtjR)XTq-b2_8@534=JI| zSXZrD4UMD@Vk7GDWG9Nci{v_TM*V>u&78ioeGy@BVETJ-3Q zB%!%Ah@xsQ)vF<qWG z`EYM(H{e48jymawick!^4X}`dTs5vtu|PF;&5`5ZTrdI$H7Ca4#2t^p%_+(>NzcmK z>}p=#N>Ptr(pyWa?)Y#ly(ae{gybM*j-x=o92b&c?Nj}( z;))GjX?4{>1^;3=b4lLE|I9duf{`r8NEuCqabG&qi<9Zr;Q4Fjl;K4BQ|WD*e*^W$ z$Vs4_O<3?u4hJP>C9M(bg#qr#N=DHG8@pf{Z9i*m*~@7ECUdfuS1F9~D2UO2^pHva zyVWo($Np1YW2T;Y8S>7hKd$x3Rq3SBFC@1jg*oi?jdHor$Kd%geSy+!-=50mC#tRU z;a(A1d$qTod|G6*F|2x>UYecL{d9i^gQF(nTAA#e`;m_J_56j8gz;lE=Bv_nOwWhK zsuX0N;i<-I`?1WTv>fZ+c1mCja(q!bf_AEnuzjQsb5%=jSfyHuRf}ho_CR}>9Us7L z1P8EmJ#-K@0#>5pvLhmVU8rBh487VN4~TpRAWfFhuD60^sVSQexWXoFe7666;_h2X=*A_d~q!kMz+Ar0;I zb%o&}6Ly~`6r6?x6>fMifvxAG4>vrJu42Dte669e75jlrDo1N4Erhve6$J-`@W3S` z@)SJbT95f=3UCH7nYR^iSHR(%pTcw-}AH6aO& zqXN%{_@o%GgoW0T7<+|jLx>^u}>K5VsZMr_e~FST_C%#E-?eGgjytR4{YD z-n2Eu?tb!lCZG{5@C^|66yv|4kty((5KaB%@t*#0*HUa{kX)tSttwH1S*W+v8{kj@ z`V@AP!B~J`xL_kgVUICAjP{k{(-fico+2NCi?(V5_Mm)Ksd`OYh+P|q z0}66V;LBHj13_E67B5RVu|+*ZiYpDh715NE2bxQUO*R?Z)oeM7-ni7B;s+jcrW%WW zb`TWy@mR;$0>xrz*#8~m*qK%MpRIm(5mSTzotoj@wp2#V>_08Qzvt(hR)$(-Jq!38 zs)h+$z1lVZ9sT9Ca2c`EkdYaq#;;UZX^fAADfgA)tFc4MWu0 zT%;KN8t~*K@yU22B+r`XdoCs6EyzIp?eivh)XoQB;U zGnSPykh)vB+S}D{*ubZBndqsQ4o~{Ji7>ZkG}lzGjESTY#kAAvw263ez2RU;hk1GA z02gf!GcY5#A)cfLRqU3blQJ45s8N>b>{iE7P5%wwsIDat0rMf(EJE50e_=4N7Z(Gs_lh7E*m zFcrGg1ff$V&d?QFaN8Dw4#DRv0{z#t0MLrlA!u2MM2FT$wr@-Md6QkVziObFhahq_ zj0*FQxoBN*#@(IaLg=;<=J_S~cv0OEe>;HO9%Q&^p>->s4?={-U~+qZn{S=k4hFIK z5W&^N)2Utz!H)PVIi1QC*7XN)%dk{ASjRQqL-DMJifkNSHa-l%jA4}Qj^xXNVG6~| zVG0UsiF{6T7~V}s2-|pfDoBg*mimui3!d++2VzxPD9~7->p4n^w=gC1p(g-dDjfD4-hacF(gwUzXN%}PbD}P ztiQ&K@wHebXzTGQ@_uOy;5o%`e9NI8pOD0#u@ ziN+8LkA9#xodc1I@t@I1p(KXqL3|?Pv~|-wnD%>qW1|@jcgbk^EJM(UB<1V}dew3` zFIY(MkAMse5(~8I+Gs)J4)~FP+0IQe9|Mhq3Vd(tHO(Nl9m6-A(oo2=1iT*N4jDcJ zIZwdvAy$as?f}U)|9_A%;ir{iteIgfRNg2etzFk`XiYYKSnpvyrzTK8X<9 z)Jl;EOo~*Ha=~Jq1UV#9;KL!$03O=~Z_HXWwuuhSDae_T6j8C8o{cvd%g0OZWAW}% zxF1g68Df7Ko&h;lzaB9L>sw)USA8MVP$2P)#f>}?J5Lm%<{T7pFnU-j2NtEKOis&q+UDr(SZU4sF8C=U z6eXq>qE=)siUkt6hupCjOcXChWcW0%hxx?FmHpq{3| zscejfW$aemST4#Vqce=LJsXNfXN33or0(*I(JwmJT@G*h*)q)3>r2BAXEL^{%tmaC z`F!Q=o)V9kP*txCrC_?w@brAfRqJB=>%0B89SrYoWE?RqvA;4M#?imAzfXe_18jG$ z!}PttQlf%4dR8Uvy$lcS_Da~~;BR--{`wwa`BC@~BdfyIwnInBOnG=v6%%_kiuaxF zYKA#13A)Y~6yAf?T8*e;ouYl+WCBt?`c8s@`D**AG2`3-@I_cL^wao&htt0B~th!iii=6CFQC-_hy z>#P9f=bb;rqwh00LfwJ8DA0k%Cgs1~h8iXa0_bhELP|2c+y{>ac(I*!HSI{e=3Ph$$t z_jagI1ykV+WF;;~f*TGVwi=%Va3m2JjmaKN%s#3&`fb z2yIH^ig)h8FJepYeGHlug@+<@lE)c@q3xV3=m2^q!vvlzD^hdNn1z(khZ#E4ODUiL zNRj>fkI;BcX{T1OfXbwE4ZZ39*@hmJcp64l)|A4I@A=%fTo?G0ZVJ^K$FNv9R+kw9(7MZ zZvmN}B)1O;1@)xh3k|(B!6%`_o)mWOkph|oXwFFyWsm^*;7M64NJrz=NwU0sOlPV* z1vTQ7tVTc%ImH)x)8UY(0Ox81p|R-{O>>8vmj=+BbRhl*YxFipDHP*15X@+G9NL*fwyU^r-FQ-*Q6F$I4dieKvLJhf^I zjttQ{mtRQiD&I^yL&o!r1WDPOX(J$3%Wsadb+6Gj);1?6EB z|I5t+<)cCvZ&`?JKdx_F!1yF1GyuFB#w@_4F}6nB1Gt2ojf%{G7UH<-_e@Lk16UU- z;4fUhlvwbct-(>5d3xt3^@GD0Rt^r@E~ybmZGSnPXlS@QbG6DWdUX%)`19xc2>oDt zC5j#sqBD$1%B*8ktREb!kndo)aw@aF*+1w9rf$Ic$`r$F3g&*myrJv#_Ks0%W&Gz)mj=CTC!LUBvLh0ci8`bY)&LEiLJ z&R&$2TV2x{T>X(ZgD`D%!{jEU!GRJYNip;31hsxoD(JCKL}OuLf$Xgu$T9}X%zc9? zdf3k*8z2>jvZ-$kF5Fw8w8DSJeM<(*%b8F9716%xz7o0K@aFv&)uLIMX!nBNG{JLl&2^tyPn;wJVt@VbWwBtePkEc`oz# z(b+=g#iqXz@{_sCt-a=fcIjsD@ZhfpbhkUNXZDJEhQX`1Avs#Z-nrOIti?L%L- z)Y=<@o@Opq8c|yr@fD~P!0lU^vVE(rsH!|$M3v^KNqUh9qTs)4Dvx4{)_?LWWa#ob zGsEJO6VT7)GXeSazgEe=)#Xd{O@*ulW*zQ)HSyuVQFSOGaVI?4tIy~SJGEI+B@8%1 zmQ!&41Y*8jM7e=)QlIe{tqy_@Lb;g+FgyA~C8vQv9aa|4MNgV_bfHu0s#HYeW3Eh|q=_?m)+mEw5mSxt*m91R=l zX00gBZuCV7@(>4y2KD`YODy$u_#~d_gL*F%W?nx~JFGJ1SW_74vHNyxfe>fkEVbq% zCgS>b^nD{6Y{!@C)SA|qiM{Qq=>=EliEK-~q0IJrn~+0+o9wZNC3x8gPvuVnQo#hVzbsN@ApK^;m7oFx;kHbNT(S-Zm_z=-`M zH%#%(D7Y3lb$y1y!QUHg^Qw%&(xpOeJnZ^dn+8yL5RNbG6|2^aN4u7@SYYzaz(a7r znfZoOhV*r-pn?^_1%wxF6fp*i6C(v6zcm-3eYX5wVv%!SlEpp?L|)v0qhgT`ws))} zRVMQg>;OHqW-mDrklmPW%&3S!RyfS zGf`nZ{}n0deh}<`#3Wg3=FI-jld@aYhpjt6kI8gbwIWY zjo|QKaBC7%WT-tqy=Uh%T%xAPj4f98hvd;fkHED~cx!Nh4i*iUL)=Fgo zFNdV6FT0lK^93_c&g)|K4CatVYB1~?tZX?;=u*|kYI)UGi9tcdtGVlh&T-3!4#EPispjRbx}5SJA(E6*Sh}ZES@mmLYC@iF9L^ z;d1eK|A%j3$k=84Ldz_p%;Zo59Lc3(kVX3dEGf)x1LKFB9>pZB;s*Y$#Ic*Qq*bug zC#)J6$5NlVbIDxBw2Def3Vs7a`+_gBes%cdn!X1|l!JZfdb66%Qx3&mGwke_6{<9w z_xNqqu0P#I9R*MqsD@Rh)VYUrhIIq7{-{uFBg%Sga4;Mhk@am!F($Xp7LE?Se!iup zeLv%iyHj(-NC^v3Xy;`f+IT#JZJ63x+fc;lDlQdL@e$_OfFX&L^|G+Qg=9;pfWXq3 zd7Xt+D)Q)s@b!dgyUd>7kN;PNZhi1u;!Mx91;r0iSrRoz0n&jfB|=m@_$ zQsu}jon|Li-mmr4{`=W3T2Cyslf4i(S6xJ@H^A>irdWMoBTF0^yG$ADZ%K~MGS1(_mN|>rS(XjUxPvhbFvqY~ zk&b_{Ny2iLjeiGnDNn|9}JM#twUx}_pPxiR!wZCGy zJAsqeN|C5qBB;+-f*3CN2!t_ zkSkQ<6&|E7;LjOIzJ6GVc`4v1v^^-y0*O|9foqQ~>u_gLadMS%tBWLuVE|7syv*8{Iwh3Ba=_l5U}mLF`i?quV7^51(H+IZV&Pz zg!F5>VW~c;gNEcu)$E(NXb)hz9*m{CS}h*1Px)-AeuqtFW?f4B6FC48+p#=e!Fp{D zIv$i~6!$!?0cdEjpt2goyCL6bC>Gx4jaWvuRS~krc(sEWXzwE5>!t1%VWL(9KKr z9Ld%QFle_HKhSc@(Av`yMF%%$+mRZcU-!NSd zV4LwQZoyX7mUrLth3Q&W4GKIfKkw3bT+oiho!Q%$Z-U{(UsetLFK0DX!JuudA^WdZ z4UFA_m(LdZZ{4DtbPJ=X|L|io-k#1k!cpm2R=id*(+dPgNCkSbD8w=3IRJMKzQVsV zxb#lOw2BWhrd2Q-pC#{QRpc0k)1%!*jDrJk^=hf{O_%+tIU;7GL1?SvY@4D5rch;7JuHLlrcdqIPNX*+Jl zS`;RRjpGk{K_wT_3tV$v4%jup-3iaCc0InPD$ptRR9h7v<`QREsn#rZ#wOccB4^}-YZ1Z~9%rC%HjpjK|k*w{PQO{QJy}3gNs7>L0 zV)e=pO6al7Tj~s?zd&XPWG)coHL)>!1Y!Vkf+2DcNr8ah1FnG7o_li4wl^g$iS^b5 z!e$=gE!Mi>Fie9_gF9$PP*L0|JtdD>uU1|s-{r9`eRt|Ko*Dh2X+t`fOOE z<%O+CpY5Sq`1iv0_rmsdF$tHkiAd$KX)Z51kO=?&5d;6XQ@qFasXQiP$mnt7N}frH zy|>X@%#8=IqLf+c(9$X{<6p6YU5E4q{+cVYWK65bQPBEp%_f(uSB(tLpJk7+{^WYK z6-ODjUh#A*>%wG5^JWu%rrXW3Uzt^Xx-WNbqm~A-UM;8;cT@iv9i4Zj4y{hivNN0w z%sya>)hjvnl)qtr>+EVK|G0Yj)T`%L;>OkS)vE?3`B4;R zwd-xcy|`BK_(V+*os*5f?2j2G9H@$1O175Or0~Uv667&?K0>ZLz}$j(x!eY%JdTBq z`))hn>5j0ZP-pmV7eF2+xZAmrcC!_jH?2gq(EX6Vsv;J)ja6XjrGm%U^KqYTF4{}2 zxsg`$GnUxP*1|6ua}1T<3IWuj@Ox)m<4#wV)L0*Pk=1gnrJ?3^Bni!QJK;3-`A{4A z-B=U#VCH(YRfkw^#?r1a#g5zBNib0PieRC}fW8nA^|}!*NJlgyfliVKt`Y;+1KJ@E z+@I(s54;34+ll*5OoJvqP#mJ zEthS|l)Gj(pgY!dt_I) z_zAx$DDar^*~(Cf9(}yv=*l?QFlhi}S&(qzK&m8TsC=^O`(!)Ax*pj{6+gKMY{K|* zSOhAJ8a{K>@UJat%aH6svlfAeUnNd@hD5@?t`n3M4Aw)lHEh<8dE(|w>l(W{7&?y5 zu3I|wCry~;VB6SF1n}@MOf{eS_i1T>S?A`ehzb<{cCHuKl)Wjf=5ZU!dpp-!xq=G5 zI8vUPa?IFlSEZ^OCOJ0ABnnzyQ$aOH`|dUZ#T*M;0>vA&puGO6Eah9)gjJnZb8T zwoduU`6u4!_nj%Bmc8%p`NFfwuB{#NzUeZf)8$02ep0iTUQohJ=2;cbJ!4GfxzPM+ z*;Zw>PJ2f`KYtNlz~`O{eC~09Ua1!W2Kix~JX8^8WH~+iGtCnyq1&_+G(B6VF*gUb zNkxiU-3dMcMzDz#;lNJV@NR_{Y-Cc@C)j8D$i+a?2PRB|2NY* zoO8IYG+iD3a8o)Pb4xzrj55S4K@6MtqaK)#Q^u@%82M z6F2jnJgV-Qt=sKr*n;fprs-o=E?m0v2*pl5H-T;xO!qMOEX+<+7XQ#=?o4nXyT#e} ziyf;GyH+?l`1_X0G^@ma=3hf~0$JdbUV$o~$`mst#H#|^7k9+Q?*%2SF}P}TpiB8; zuUE;M+^lVMs$JHC?&%=5ai=KE?Vet`1@R>nc;@OQTbM%KsmKj>Kh8@Ph&JkWiCxnu zG^S9n`#rsiY)Yqv)f9Yo52LkIsBOzRmzE;G%eFBrS(d#)HUKgL0Zus7UQW{3#FI2o z1DC5bO`+0E>~E)9t|AtX%E)wiXiIa%oH81LB_^`IA|g^%_0)pC5HYCSRhB2~H~y&T zz;bODfzBx1i3Ou_8eW#N!PKAm8m?iv6hPgvRJw-lcTB0cd5$_O`t_mnMew{n!?W=F z_YXwiH%GKE{FZwU#$WDr87IGka6ly&g|bAJ+l|oYG2KC zLB@co&uV;6O*dq>G5fPltCWdh_R(ZDtkVRg%+}-)pBws!VH}A<-IcX$%CW#()fV2wjU6k;4yk5EhFJfwsmSCREMihS2E)l1v) zEoD+skgH4i(bE`)ZOhjGR~!xD(fjR@^=IYtGy9Jx|6RI@G!#~p@n5D9%lc-!4=3vP zF6{G5yEXfkpXu)Sn^+fo|0n31&kcz?E^3XUWd9FWIO*Mk`v{7L^>G;CuX0r`s5@=7*q}xu-#qL7aqJj#+IUwXD=`_&@I=6Aro#=!h)y? zN-ZgSMEcP8e`Z%Vt5zGw|sP(}t#{3|J zBxEqoidpQQg_y-KOz{f-4^PZuuSCta#+bwktf=rjwye?cOtgTO*%agm5i=gBHJMO= zZL3kx1$5rQ^yB76F%#zS46vzgC|9PV7}lkN%en_`uB=Pp!%^fm zum&S+2p_#(FAaw{gVL@?>!r02w+ZwV#7u#{glIy+&1dPA?i78>-kX{>pXEUVX77+_ zNb_0VRIB$=56Zt&Rnj0~Ea@{@dA@{3Hi|vW(wn}9SgEFr*R0806luMe>S@^pt?ba~ z3vhT%8gLP}J|FV(nq{WWHI#DNUY!N&0SglTk;_}GkW@79T!9{S_2xq?ld z?p$Kd1cqr9hh$8vNR}~k#Yq`6SDckGt>U~PKO_5W)lbf+D>14Z=F^9knd-i$6RhH1 zz@gyVy3&Moc>rBF*By{704F@I(|{exFwTmJj(Ql|oRLMOY1rQT#$K8^l{d2FQ6 z2m_*~cvRR46W$Y8x7Ly}3em(tqpzqn>6kBDTZy139tAyzl#I`T%k#M$#}bDYQ}79R zjV)9;)|%C@5R3;01S6d(^h0)W1}56=wiK#Dl+}Is^1(<`=#NgHE*5Idc{p_+J5oIB zJdah&yDB9P7|&@ezkp}8u`?C2t|Yj=YeB7K$3?NKO#LuH>)dF-OT-*scSFoECTkXJ zeIN1?cZxB|(NUL%p?I>x@MHEkAyKJKq#H61uDU* z%&H

#!VJWY}%xq@{fL$FTNljxFpj+1i!zrVg&9^A*}mF)AMyp^V= zmN_+=u;~`Fj;yINNvmM7JeV+mW#QjOT)H7+T1CE$p*rn3_Zk$l4(2wuiU%#pC(A<3 zGF;R&>*^IBgRNDLuF5AT~0ojmBry7^V8=5067_=`Oi98j7&iF;%RUok+Q)PkH)c7Wn2^sQwF$ zj+MEPs=frMt?mfeDJt` zs$5oQeE2^XGc#;yoO4wAr zjs;z8kyBHGbElgfqZ`yqP}^2J^U~znN!SkNz$n+*U2LXf7Qu`xVzAJP_r&>_tYK!tMV+9k+RBZO=32v0l0@(@VfZ#^q#>ndeehm0c8Q6jG zpoDORP}xgxqKpP7%G5gCXRTaKDgF0}&F`8zy!r+-WCbd!fE%S8Qv?#1t#sgWg^OwC*^W`}+oAaa8mw8?n$QfBVqQW)w zIp%wU;W1`ne|uF1B5#<7tDbO0IW6I?sE#wNB8NV@-r0X_#@#V)7kZ=k3i`+SW1J~t z8FQjR9dnwh=KuTqri={fAY-R$W4$twp~1cOU$Zy+&z`RTVh5kGv0|73Y$(4=j%19N zGHFe$QC`mA&|F8Vy~@6#p?lYy(@vjUy%v|x>h-MI+7T(PxSMC5EY3v9jXm43qt z!8{J_ElC%sHyn-3iI-$`*)VNV&Yn`X%4o|YShpIMI=S?G-3rILfdv8ST`Wi`^+5+O z?F=kVAE6UZw?NG?Dx8|5*7!gdwnU~Ec)+yB@o5x@ML--SFO11+nwh~6e88TPZ@IX{ z-9$3hZ3h?%z)Sh6CN~C;g`aD7Rla&@wK#n{q;Pk^T3B3IQ~D0ZimjB?t-Y(3t@UrP z6fS^0;r(r$<`B#WRXha&FOQRY41+lGtKPtnjQk*$JH;zHdU$~=(@VBZ^g`pSGM(R` zy{@?P5E`dNCl9l@jrQ~6&MH`FT}18`CkSiGbFZZKfP0jICkl8T;BU*oi5#ZE*P>Bc ztTW6gEOATvfKk|f#Uk3HI@0NyQZzGg_k#Ep6~qAj2I5MNYW70>rMd|J%Bjxx9o&$d zTb(SOv%QpUDLAC5OL^uqCw_r^<~mV1Q&cQ?HJk;UeosEkGV&btBCdfAOq5ARF%6%j zy{LQ4_|TEo%u7#V1Hv~Ki1pw>8i5FuXR#hJCcN~d@*XA5$?*$jDu8iYNO-JxAhc1D zoj8f{g`5y$I>?wQ2jQjXjXAy?_{9g2+bnaVo+Jy@H7cZx3&}i*JS=Mg#U9<`nayg;npKzobZu6m~4+Vkm zV%TTXoG7u$6c8nWTSD^$fL&EeeO^}$Z2hHNo3^0 zc?dhM4Q=pqvyj^0XbakPsXwSa<~CMqMq*;^?12&zZY~vA-!oXZn~;+28F+t3Ot7dz z#QLeQNg7Psn8r-1i^@nouqaFRn5(u?%1~Ei#mfUAX}`FkxIun*-ZQdzE&6}A}%>(IrGcKGBV&5(LxONDgV#h|K4sj8NC z`LnDcs}qfo8ypU^O-ch$i8Q8&p7mYgegPG-QNR&J-AdpofaeOB zaoVdkb&s3-leZe^1^FD0O9#IItVHovKfThGqOTO+gm(|ni85Hks3^nazBwpBg0A6| z@UekjIbWd1eEW0s$1(?;D|51IIHI6T9}0lW7qXFhBICR#rvfwehaA>Ztnr#LXiV!V zN=B`LyaOHXz0HwDj?&IOMLDV>O1g#{KGw|1hAtJYLkc>JwDzXhHZfon>jf^9UV>z- zuYjfin%j$?Q@Ke%`v4v5B@*Ux1#|~cQ7>@?3yN-wb5+G|&$~AzF0HKxgLerHNvqzJ zJgT-{!WX=^cX|6VS{}|hW1`%`v)Nwbp}?F+fmabGIRq=Ta;@0@f2#c_pPd>G(J5$@_oX)Tm2FLCQHD<{& zHlNGrd^D44{ZQU+%Vr9af?AP}%g+al`8dXAsYC`ubfLoLb&T417@Ol~YzWYSlQ}ib z=RujrngiFvBE#d8IWa9hxdEDs5yokM+9*Z4&#h9t0ea`0`=Nv!i>>F54H`EV8z7#mVa3<;LTp_=r?g&&165tL z6p?@0OUp9gtg!=ft4vW%&G`=I8)S5Bw-olbpyMF&kATnij1>hjpKbhNET>NZ^tUD- zzs@>Ux*X=62lL+p9_9@S4A5bCOU~Fi)es@x+@snW?cT*9-c!(+D>~WUL$e9(ec+_@ zov2qs%oWk!Z_7k~zhlwg@SVEfgAY}X|6YryT`p8d1{?3(q5mqt!OP_4j z!R(oOVV_9TePf4Mefd8qRPWEftxU$T6B-`Y&2{*6A)?vkGpjtfvh-yAjS07?Povyn zX3_WiERK79ERO9FCX-iqJ2%7N#<^dXu*au1&7D{pZ)bHS+QFe=gLJ(~YG09j8ZGpq#AM7IhcPMKMLx)EWPIRPood55Y_u8B5ni!2%qXa3 zPsvYusWmrXM+tByA61x6nu(pjN-D5n+BV~U+m7~lnbQs)0VxqXgVPlK1Uv%V=AVW3 zO*cl`s*~zrl5Rr@SL;DN#Ic$_X!ii69qZe!gT;Z8E||XDEQ=x(L90P1Nw|&qYmqpR+RQUz?$HP5UyXu!x8<`{lP1^%>KS#Y(N6Pf7PRNY`9u8`gvltrv24_ku zJ|?3+<*e%@n0szenC6nVs-2%u4cFm`mJfNYWvkq`D%A#|6snkV$c!>Az)8pcCy|t_ zdY}{;HHdZL#mZO1hy(MFDj)x|ad0OWF>}xy?i$IKspJ2VtWJfhpG<{x@|9RR&e``Z z_Se4hpu^mOyI-|-o}H&q$n15>d{KA>Jhsv6aqgwO@QM?qx65s+x@kPOkFn}ZO45{H zjM52_c^ucgvaJ#4FevRp2N~s(FqZbc9860_XGIjCqydmk4wFq%uAWlZS|5i5yy3>0zjz)|R45W5|)!ny=!#q3<2 zCIf42vYn_ylK4BSYh{qqb*s0OZO=H}(xxAF)p}#yy@zGCa#gaNldF@=swos_X-ub3 zy>tXC;bnPcWGn7nwDnCec)7Qj*KdBKez~YM3fZ@aB%jxHUPVDFwV_EZ8{dsxMCN@PiQ2U^hr0+ zgpYe>j$Y#i3tcU58c?)R4b3zctmEWe} zk9oOzl`0+!C|gQi;QtTZmre|5&=D5c z^Ht}O%)H~T=I(nGNU!ZetC$O-t|VL!bL9NcOqj^nLgb@i3sGX%scD zyXP&z&Po(9p=*nB{Zu!MUvZ56og2%w@jqb2V^kaG$LwPQzB_V#N}@)eT>QqtaAHqxLa8s@YNMyUV`E>G{VMV8SSi`QEyhZT zDplbxYgeWHdviUNRVZg~ZcPb}1J3}8FTx7LBegCCC=`R5%aK}>;5m5K0$G_YMU4J{ zc|WT)``{?BZcX{FpbXbxfw6~!rExoQtGds%f*R(s5X1&`6jf)(p>5F#{_$?~ZXdRU zuwEAqqQaPDgzZ;$P-|9yg)QJP3Jrvz$!!zj#Oe%3;MUi|nSKige>n;q17m63PdIo2 zT=&x{pldJe)t)v`YhGft4~piFc5S=~j*A9q>RfT>`2~nE+dmJR$_12TFoN?c&I?#HL#Vhk<%BLpQrYBuz;--x9@@ls0h0ri|;8uCe5`1?r_WZIAH>( zW!3b@4Onf0o&AKK(Njfif_Dom2xEL5fv2w60?XYNimx+Kr|ALNXPe+?ABMxWZ^I(6 zUEEhxKd`}$*p3n@JNUuc#yDA>AE03TD85vm11sQv+Nn^y-_2D8eqq~0eql!SJ3djN zh^L~{r(7!p;@s-J(4Z*tq8FYCD@_)Tw*ODUwG$LGSFPFglS1+KC$hZW$(0=*{4=~3 zq`d0ws#W6?ChW(jJV@^j;QKm^4QmQEMky}Z>Ud3hp9ClEX;cawBr=FY&fsDG#@`d6 zan!$rlwvBfZ~$Sf6?|NM(MBHJcw4>HHTL@#@C1 zK6aR90@{r)Qz+a1Pq?g5EGDaO8_Ts`HlV%fiZBg4yTXWQeXVd@R28^0ov-2xxhDF; zui>4iNYgrU-(s|9T^D_q@ao(l<%-67&1;A+(gplQ1`m>4flCcI)kspK*@6m&?|=u1 z88BvLA~Ks2ST}dB?LhnIEODrmtx!~@;Faj(28_CB*UaI4rqgoZC~G=}8!M`D_g57%41f|6RG z;{qC23d9lmn|N+F#g#N2&}e&0bga1rNANAV;{+PVZi^0!JD5A}KnY^kXpDw*S3LIM zyC|+iv06O7pl+2U3C*GR*fG#zryo{JhI{a(QUU9?OhDLr$bFFF|IRD*X^-J0?EMGQ zQy&Os$V9h+YE7dD3Psc-{=3p(wo$ZsOi>Br^{k9v%wzm;3dyqb8J#q_h}lR|D&oA! zKjF21g7&m$wCuon7giBKW%`^OMl=@B@xY&Rx0kB%b9f*Rc+;^Hxq3cmq&#RG2F;QO zt(UPaz>;L_l8mJTyCq}F7vcgHULbe$g}6X{8EXQpwTumU0WW!=w*+X)3(hX7B6--4 zzzi~WO<>fZnuiBhm9788gZopiBNU8Ahd+7lk?BatbI=jn1z$x18oT}!&ch3kvx_@k zqanTIPC=FarMT6=m#`hZ6lWO@Ir^o1`o(C_OF@14GvssV;HSTb#xv2Ov3iA9;1$Kx zo3582c6=qqkAfV{2vykaY(V43SNwJ~=OAakqKJy!_;{1o;x64^W144{95%iq8ofn_ zW(wqmuPOPD<$4L?zSqK6ng;n%@p$t$c)UO6}C{u=B z$_IYLF!T3hS(Kp%8z0L@(=>h$3e@-F`3!u8qx>xg!CWa z3jZJ<5r#(J590QxeGsRg18n&R@xAYYoKieE4~++MM}?1Y;eV9R(gcmxAH`XQd=$R~ zKvO<)ud|9iQk1QSw*+VpM3!3j+edM&JHU!Q@@tt`z;U0FqxCe^W2;vejiQ4V?wSs0 zgeySvYpye$1$i+#f-S?`H9OEaD0ieozJ-qHis(=(l?q2CxpjkgT@Se~6&+d$LWw9_ zwP^>mM`3@bY;#Gch77wm>*EfrpV2<0kocyoJCoW(vy9wCh?=lPVC{-Klh@6rY*vtwP&M zThG&^S@DR@5cqu!VhFo!FWhzn8vJ3zL5N(k(9>iM1b+Rk5Rx|HY6b}WgIK!bgCvWV zr^yWn+}i&Jg7^ke7|=v%hHvl^ZpjG(Kdg|!zG(4V{t^PeVowPCFduNsnDjyG*n+K| zCSMl|(~E^A5Z=4ab2t4OH@pswlu@;H8Z#u?R=}->XseYYTg%Mc+*_K`ObecW7J^61 z5+JtV|LlhL6mvVm0ahIDJ-`o@dk-GVi5D%AV8OfyYeYKQV>$04NM`?94Z{v|HrzyB z8vDNi%s4-Ul(2r~%cW>h3xHXWoR(^sb!S6dVdd42pB~Wlcg@|-%fn@?IsC8A^)S}V7VNrWFs1IC_t6;ZQaLzQ{z@7z z!W>{{v}2`QqOa4Q-E=Yxc$9nb!YA!aQ!pPI=iT6Trrnd5-A@@bc(P&M!5hQO%)WD- z*uim8svnOWR(VvR0YN!lhHsDGc-Xi&*l69m8ySwJZjFte_J|(#@h{C2?7{sS*4-(w z&tMlCadMCc1#Mifu9S{IqdW)PHvZU9@L?|pX6xAI2+ht3HRkek$~zQ&`ic#?vPwF? zQ{+9==HnISiUW0-du1U#kV z8;LP_FWjt^%>>RX`n93hQ?cI2b>>4k)VGX0w2T}nWPa*tLgus=--uJQk_o(k?gG)r z7CCrDO3%Ah$c0OxNG6uSkI6DC#c)o@>{!Y_)wQ~^fC^4^^;SL+|Gh8mM)}?7(|8*E zmaCSLJxQs&1ZD{owAa*iMsY!B5wgs~xF!O)3+ow*{Z(j;ucV(V3+3QZ70E{s@%tm% z{oN_Qb(~Im;I2?O2>%c>SV*;WEFwbLbE&JgffgAodIVO~ri#vax=M+@Xt&^BGV(Ni zyILS>yw@?cCI(@_Ng;?0XJKTW5%wF_9@~eGajPcil;IS6W3abocqsNcp?oU<(sB;1 z1+*N9wIUz>Gw@0PytFd%GH(t>9B*}mA&h_1 zpbEJ)8euQ6LiT<%pd#L{_fadG%43<_Nywc3ZWtdURm0aYq6|Dw9Lhar3pmbyR4c_0 z{w61s8L~y-yg*2j!1>wt3)zwp?H%AUKh0q=oWJyEh0KTGaj+Zahh{U`n`RGYg{0xE z_ zCsl!o7*!6cz{k4NSH2yXvcixuJTG2l_S5r)N3Jim8%xSLJ`i|UyxkQO;bp2Znk7^OZ}hB6+Itxuns{@p^onEsA-S1K zQz!w=xbujoaVg(YcQgBVi0l)EWXw-u*-3D?lIKp44$6fqIaU-jhd3x1-87c(yj=}*+ zPD5EGJxI9<50Ggm(nPf9iLT8Mp$V?SIW7(rr@ap7rWnm4=q1H4rZ>la zIaV*#gBU=uaX5V+h+hkI5yUtO2CDjLm^jC;fHDO1rwmnwSJjEq2=8hmsB|&jQV~_G=6fu@pYQD@-O%~9*BSdk@&w{8Pfk>o|pk=E6i*!&e)6eqd*m< z4Lrsod|28M&p}ewM(qlr{)

hhdqbae|9tDp0oqj3Qwfyj+}iM!Sm2ytB@o9fp~>H|%Gho}P)0!kwSh`)JW z!C{Sk&T&}f#Znx4pMT*Ee%4%rBN>%yh)G@4OeFm4mDq1U((n<(L=GaQU1~X;nAC@Y zjsUaD!4bv*gDL7HGP9e`p&g=nM7PqnZWYzCRVR_X05hUC9Zi^{fQd!1F`c`ZP_|{7 zVW^au&hDCGSO+ugEUJhC*DLvyIlG$SovQrFYpakQH&-QOaaH5A(}7Hn3P0W0^L~53wmk! z60}LV#vx|-57woz!;i2vBUU<){dhNk<8Q_qE4;i~w5m+?v z>Wxh*;!2$HaBxedU%530VxipS6(hvz!akN@^aHb z@i(4bUT&U%DMXo|*qC{S1q{=Ny`N#oWJrz01|@l3c3VkGr&&3(x$_Ol60pQSjnp@C`oKDp9*k9KhPN#59B-CAw%veW#fwe zC2G;D1%|*xQ>`JIrhh563fCW$Cf{B(L@`-p=0$^VR5z^DF--3PDg6`a(yg>hD__vD z0`=}PCM8ki{FlYQRmT>cdc<~t5&~WSQ`u)14ZWnyB(}pHo0pl6)uQmIsr zP>KUhO#J0FM8r35%eTxFR)5QoB8ECKBsR|E(H+A!W;wMy^(M*Dk1W}PcMZvMl6%A8 zKz!#x)#sZ>hSidKbp2E+(l0B`?34;yrOeJ6ULCN0if(vdGmGb~n())TjDCH-yM&OY_;4&kg(J z@cRbsEeAH~H$x9bJOlow%5FOo!!*4Q`{{SX4H+|oDn7ZerGFX<#WLFLesb)C!N>j> z$gQ~3LHr$#zXfV?=hvIgtn#B_zd4h^o|eJ!3A2J+k{f&CPaQMkbY=y+%gp#j#w=sE zSQ&p}u&3&8V_eC2a)W7BlR93J%9UnjN;fOhv)v%!?nW03M^igQoev}3?2JCl5;EG( z7%Jx;1L1Of8aWf2`!}uF>vqPga%L%;?`mwrICHH^{FP=FN>4>ad$wrLh0jZSp;TBX z9jq%d>CKwbc9rhwQ4$}^AUe>_Cap30?sC5oct`a2HF@%&cp9!HWS+Y*YVOvki5`VurWbs~(U*ETkEE6-g*bDNgudQ^HD z($eV5U{3oOR$hR7u5EPTUNEKklspu$QPKjA6$L`-7#n&E?YpI4ki*T-q|tJ@(!O&= z8QKU&eR&57YZyLE+$2c><^o3Xc+D&x%SI(x@H6r3(7JDGr7{XZK>l0<* zN+)kaj3E|u_ewjI#n!85Txy0FhX|dlolbjka@3*(`Q{-IFK_eFiFspja?Wzb5F}9mK zYipgmx*6S{f4XsL&W70$k3Nc1+jqCs_(~psks?oV9**oB5 zzYbf@b|1L?y5oTjcAFn(wUQn@I?PaWOX}xCZTh^L{>_I!(mbU@@{eZh8)$g6BVY`Z zI(Lqp!)V^TKT+iwd6k-)^<;#f*JT#r?!%ntyhG zy!^oLb=5C7Ec&J3$>^Ro>q9z@)`#zQU)%Ox*QEY)s@XprI(2=F`qlT-cW)WEYtf6b z&*E9@PR1q@^ZG9yIj^hjQI8aD9zRlwZxm5Fei-A!K8iO^^fzfDP8w@Wv8l{1c5`Xm zD8!fkql$>Z9J5#y4G*PY$n1@f?S>g7A&0_mt9fgi7$>lCV5CT`Z8|{0JI9r`wke)v zl*-q*LC?mU40dVet?nf8X*`B07LqKESd5>jMtgqX#QLs_V zkAplM#s^)qCs9*o1<25}v1MIK)k)Xq|fy!;-Q!_ybMs zHSUNW0XrEIwHClb{?BWYNmDZTOjGfmXgG@)$4HXBa$+EpM)If6@^1UZywGTfZGgg+ z{g`P~2}Uu@Th0M26GIG$X@(`6GlqF0@F1cDW0={TF${B?bN|YOaLk995=5K%fAB>^ z1)MpHjZJHe$1H4)E%PUAWhPXjCsv{&s+PjUeWYu+}jIF!MINO>TPxfvxs$d{^XN$3mIsH78 z=4pFLvQuME(sipbER-HI{=mZH>k1}xrHk%w(s5Dq2}=KlGNy~x=|RqHH8!`PA0KUX zB5SwJc+i4LW6^_&;?T!9kcB(&$4R=^q?ZY!G(Ahwqb5C1Qf2bHxJ?uMy~EDfYiufI zCa^~iV%KF!+voqKk&GKgXQF!)RhNv8SHf>j^ZKrA$|2)whMCAZ9Wk!@XH}p%Ro+5T z>)Y;QPlev9)AYAzaW-zt>niGfXl7oAq(*Ibzl6ItNpz@A9wI<`6MZ-=d;M&s>Xu{nbO@Cj9GMh;+>yJQOo+S=B>L7h&=Yz zfB?5G>qnA8Gap}a>y$CWJh#hsuc3~kXK?al@>IXepH-eQ%9WLQF4^?$uN#?w!4@^9dLvU$>UBYMwVtdD^vRZ{-N{=6({%cEec6+#x zY#N8R1vzv$K8R^YhCYtODnp@e#CQadp8u1==TH_u4)JzJGJ{ATr!FwworJ z1WV4>z7Aw3MY$Nfhxsa8iK2=U%r*GPM8o&_TbA*ukHq*SGKhR%+S8sC9?=-#=AtA?6 zcMYFo@OPCm`$^f+_#iTO%W;2_p$?Y92?%#zE`0D)TD~2j13>H_8WB!trW3TDkE35y zo`EQEMaMIPunck#7ok|oL;W~NhVKNzqau3KrNr(e%5I|>L9hD@Ymr zvzsrN4?uDL3>|B2cNuqX6((hCc5X~474HRo*O?g@mX|(w1M9)iTLeOYks@5gyB8d z-(xs^dZr1tT_Sqh|HIyUfJJr0{la^e-DO#d^d`~;u~6(4!QQ2aU4d=bqM+E7V(&^+ z{+2|scY{V6w3dHE*W zlJGx4*QT{WdX zPi|m~&0yn)$MVtHpG;$$*o9ItK;!nfkf^rI`( z$*y$yJO!ErxSEla$wY-gd3OlGkl)(MsMuetP$eRMxCgJeQBSxE>B&bK)qbc_iTLAQ zJWbylM84j<(Sry(^yT>Uz96~6^8!;cyoYezq%WOOZcTzJ8~L5C4`nD{G^S04E}E{) z%=Fbm%tg;z42Qa*YA*mMBd>a<5wulfnWyytK;wQqaYsKwGB9_jXA(LI2!Sy*mBK&5isOPC{H4A$btq5VW$0#=6 zBfe=iPkT38CX1p{mKJpacC`A{V!`f<|Os4(%OQTBH z`AkG9rz$F#cdVjPiRjn`yzWyFowKJBmc(>VmGu|0rx^Qlur%6la>4u0<+dHIh)FE* zavc|e3`5y78*q(S)gHvRE-urjkNB>4Us7f&vOo~Y`=(5N~^97P|ZMaLLP_D<-v6m9b|CR6?kP=im+i1;W=n~nOU3wVC9Z7jdtA$E)Nw6p}cnGVZ;xRa6x*2$_gg<(V~cO zv``3_sLFAOFQC}Z>34UF9$mxH>DV8@rQE|OWAPqrp?ml$SM3G;hth1B)D&Cgo$zU0 zzwh%r6e9X+|CcVQ)*ryjeSl&npYvC`6hPL59MW9)dQuKQ$e2$DBk*F~LGTtOe@+TL z%p7<*)I?8~B1lL06x}}pvLGebl%`MF_(;+|Px z>9Jz@0QO0Fu5suNpr=KYw{1@Vgn^OA`5fp8=XlkT9BKt9PJ(c0WVuEGnj}FhIkXYb zE(wCUM3(CYpa&A9B8P6y!AiUHGMOi(4R;B^iC9FUfOO!<0FDd=lEIO0IIro1GB0R9APNl*?z zJcEjwVt&3sa6M1TJM)uLfhcSqvy?v&R8V#Xo73JoO4=54hMUNu+Rmt|Cm~rN@+D zb2C9tI%yLts+P;wUZbovJ%bgmMcn(MqR$LoxRBVz2N!ZLK!M)i@fVHO4~Rfh`~EP!}4=d9oGQg`vNO&@D^=uKs%mF%`MiI z;7GvjzQFw?I2G`?FYpo$)7_TlCwW@Rcm)~niWxyITA)87XMptc}ISeTmmdR zAedyvGZ2|U2Z77i-{ND;2egkv*KSe%iOs>NMfQ{ISd}5~eB^d!Vu_#+FmeYp*Y1QNTJ#*nncn z+kG)u2`HnOeCHPgVCQA)NwpeKzLe{%gk1u5N5W*1fVsK^TaP4&UQ@yv0&B%(*5!H$ zO9z%EVap(-jwMRL8!iTjg3R(OQmzNc^$MwQM<92+Q$`Lq=#C^79EpG^e%tyE7qDdn zC3#2Wy`%|}_qapFb24TVF!9Pr?Z>Id?blt#4Dw|`4V7p00AZ& zEI$JQc(ZMTk~@_8-O&K06^!-$A`0HNTP*vR$SS?5X=RNYx!v|}Y|87TJ@Ef252_?V z>tD4F?)CWsY!zZi(NefC!kwh>6og;m_utBR|ILH?FT;Z>4>jy@Pi=rOlI(kFZ-bC2 znjNs{tvxG5)3{u1u+^y`ZiwqHz0TCugcY!e5Isz5KDM?NqD_f?w7&{MD_*L5qIR-S z)}=y}R$BwaP;IbjP?8ort@b=$cCvO-*?cDCixY%cp4zaJRRvOShWUa*oi_0=`3C5< z`vjq zqnS55P(xv)ZD%s3YljO$LtgyZaP3s7aua-6qziO?IE;{Y?5%^_@AZ5pRWxL&wnv#R zG-Z1JDzZz{`ci1IR!ydoXnX218hwTvFlKxrc8vBfE;39N#%f_2y)sW7F-}`mDEg1{ zP$bSn4CVa-+YNKZYhwg*9))>p*GK0_`*IU2lCQtLiYjMnm;d7u>urHumrAB$xVKXR zHKtKn+5>{nk~Qi^ohM+4iJm!NQwIx+u&~rLa3UT~i$pXsqlMg#?oUS}SUf7)oQxs& zH$j{dc70=b6~8CxD$tH8TC?>F!m1iXt^>2}O}|dnMhRf>h)oUF>TJvOci?pN_seoK zh)az1(zIiS_M{+m<)t3$bQ-uK{9L;Us|$8Fo-=!R2j*a9^*6=NMNL8tmOs+GkoptQ zMtGiV37N2j_M07$5Ee>rQ_BTx9#;><5SuR5T2lT(?Ww;m7`m0Kt!lwm3OW^N!XoJ_ z=QGvNbbPTEM(dmK9yVWUp2CLoU=-?3{6@RL+?pwL8GFQmJS(i0+MtS894*>q0-T(6$pK?IL4cqS5=@=eXd%PNYcb`l#kvH$MJzIRy|#n7`gW(Z^{LYa z)Yp+GE=j@@=(JHAZ7zCpqt;Up;(2PtR&sH7`J6gwGoFHwz*A4^@XUL!(fW~ctM;n7 z0*~*s_XIk$g}qX(Td7vwIKrS-4A%l4sB~Q?6s5S zrk?<}-=%HC;b!Efxadsbl`$C~cWFNg4R~ip#OUnEXSeoGsWh#>u3c^V;|Fa^0ivkl zMEuZ7ZcB-KS$9k;_G%3RHQ9@W=KZ6#t+~mSKWaS$ntm5e7ViK2R7?p6v=s#*nE5g2 zYp%cAuiBd8YfHwT4r41gs4WsgSPn00c1YW*Otyyf;SgrL7n9C)ryKEBR=G#e3DK@f zL;6|1LruL`qOx5_v?cT@A8j8viKP_TT5d&qe)?-pQ{+)>sNhetx=b0z*hA+PnGPOj z54|;Sy#1nWr(CQtNo!4XDu>bPrc^*1gPRyzni~es0xNaF#vt zEYfRy+W9COLRdVY*ww2s>iJqphMcN~R(4A*a)bqDnGA7e>8!YumT|x;w+B28n zB`C4G&W(zZh^FrG$6oi){-k4;;& zS2JwamnOWgYC{Fuu^qVv_QYl?_Bv`e7OK?ikGHYq=3mFq!K@a?-n$J(XS(^hCAz*> z+m6QH!ehy~iRU_)eIhz7HMiFK$1km+GR$#m0a{yjS8GLeO0e*x!R{f27rz`rOAm zCUi2jc&NQ1$Ie#iv39#~(p30Z+u!LQIcHN9yIRJbqaB^Nfvu>-6K!`89IP>8mStI#rhjG!g5|#FX#ad-}D)&AXO4 zLz|JevIbvyJjxtj`CxCvt7YvA&GC&@?qA;@y(ZWk?_F!wPoDR_>t;5T(_^0J<$4Km z70vP0{U1EJ`7z^%X>}@Ful;Jm`vYxW&1vGcMs}c{{`G|j=BAv|(qcbaOm${EV0JAp=~^GxE#w+~=)|24tJl z{jyf>Sm|}Ek~#k5kJ*?*>7o$uTQSbl$?@z_dY&ra?`Od%@yjBgM*H^ zwi#q@JfdBG;=&SeC)!H>%7g@mmZ~+_8Q#w z^hc{P_uA&X-LrJn?Jcguk0vi_;cEs8QlnS7Tvw-=e>MN_Kh?`bkL ztD5~2&N&CeySQYWzbRXzn-(n$qIu7JE17~j=!(3`GR@uHYt^eC{+VYUCCYCVw}!$y zm)~mFUl*v!asb;$1O5X}tWWK|HTIx91bBhEP>J&T>-=p`RDv}GUyvK{&yfyxwsq4q zK$gjVVEOvfb7WDC3jos$RJq?{yfp@7a|#3xA&{a5AZ;VU1<(ax*@Fc8qVIh)VAaZ6A-XL{tQtIl`3i`1r4=s6 z8FZk|N%;_opGeqt!v`|W;Ey{6%VZToC~F|vy&M7?3)Lt}fcxFlBjC?cHSpYPP$5gS z43)`#h8X(C7&vh_3?9kEa4_d1dj#?CP(IN4Q%vigHN|px^G#ZJ!I8H-)P0UV`i{^U$^)AOB#+O%Tt$NT{96EWwJW)ECoFwRMx9Z zmPC#-wS8eA$HhFUEbL6rzKP?`QPZhp-^c(Jl#^t|ExAJe5D^|=V&z+vOHsArU>)?*Ra^ld>hYzwYBKfs z2pCDN`Ua!LyDR>42Dz{Rp^f;tlnFD^VV(c`9W+3W>rL)Ox8CI;JV6KEg;G5n)bw4Z zZgY8Rawyf8&&_H%9W|8>wk=ot<(10&KkehddV;Q8J{rnx4WYG@S9#VCbokxr{kJX^ z8u{Z@-HlfipJhpjorN?qaD8F5LzL>1LK;~qLQW#~nuTcVn4KQfO25!Kpe;Vpu3}0@ zDWs7NK*&wR2D1=&F|DhZrcKnn)(90%8FO@p<$|ZFS&k0GE_aiBzHW$Ia5D{Es2eL6 zTuo0&SIa{1Hu*2rS<8h=rqFM7nR3C`v~{@-7D%1xw>(`Kd|Fprp{omt-kkPTy(#Hs zkhPNSLN2DP6}kp;!OOH~mCi|^PaSNm>B?%|PlAtW*&5xiD4*NW#+UB3w;4%MkDTl& z^su9vy0cL8^|~>F3zCn0Nilu9L08G*A1`H-6#vGhOnvLgrYqmq9rlPEx9E~GXWfli zYCG;=pL=~OB(z*_taM*l*R*HXwJxqt@>^aPet0%)t4qnWGh0HxfBW3~)PNxm1Jngg z_E+wA{j#dIkCWfgI#(Vq95;J?hw$!wHWr`RUH^z)*?2d(4sC1}-(P)R)%vl`k2B5j zO}1;3W_W(AAxTeC{ihW?NV8S1x`U&wm9!>bifC z-_Jgi=YiG8<&#L8xl9Otw0jl33Cqgda5* z&4qCRnrk>H)NV=nNK_heI>?}s0X{w&$Qa1ZwnDkqxkpj#6%M9H+KH~WG%L|sUVEs- zK}eFNX*z*r8qe+VXQSB0F0jIxKv92G6GfBSCP0*}8|D4s>#aF~WWVm{L3eu2inizh zHI?3!I$(#t>V0o84Eu63{z4+;XtZLLRuDLo4c9}d8P1bnTC6zqu2N~hYnVdwJevEf z_Cd_>Tt9BSE-Dt%YWD!_>d*BHU-XB@7)9)>2>DH>vFJ4bpWuN^rpaG92uIin6md8R zX%3L3%SF8BAYLwakW99jV#DEMK};(^e9~7GzI9K4@+%0)=8KR2rsjR60Wh$mMl?p7o`YXRicnZaS#RNoHkxOY1FG!<;=|%o3*-+Te z8OlA?w;9H{$}z)mL>k8V(PJcR0Hwxu-)$ zBAx7a?g;?JPGnrS1JpI0XG@o`alocY*xGcF`K$!ACtWnCFTavbQME=Qp1 zi^zZxqG317X$UVeC+tGxkW``=;Xlj?t|MWsAH1u(2mEoWjqtu4tV#kjXe8w+V*@yl z3t;6)uH0FG@Qsm@*utNPsK{??A=Ut_*I5RRLSIHniG2|nz!RA%G|Op-=ONLrtF@nU zBO=hyWhD!;GL>}D=W?*}2EYeWbqU2v68z8`*U{+UXs-MjHCj~u6qO>PY1^q4xJa2D zoOK?}tyvY|@VpoK+G{GcU5d5VM<%cjP&uXkeM@vOt8h-2BRtA|psz@_=MgNXB8z_R zG^>fxoubawb5y#^)DHV7R?)8^`CiZ|pp}uY=ocy+pwk2O-C|rP@Qj`-`_;!nuMt71U+HaKkJZPuta*G)VqDAEww+pa#(7xn@Qi$-j2`srqApa} zN6Vv(jp47Ohbs-gqzghfJ`L8p3y-M8vL6hdU()&D;C>+5=*8L}qHjXID%A9+hR@Dt zdbyykSLOzqMaQ>o9@jEHMplWz6#GQ)jZS)B(PatOP0O$7vTRJj)`&sxT zf`SzO9bpS8%uMSjrSKYrUn1>>N`|{~`OFls!#EANp<7&@6IppJ?3VXL4Lz5hxsmCR zj#W;Iq?ih}JIgbg&o`a&RN_}ot(Ed#Qp#&`th|SOTyn~F$cM?ZO68eN)&^Hfs)2-~q- z_-li|*7&LLv&1hJ`53Ol-^uuEMRqTAP5jvqSr=Ky*iOfGIJUE~9gXc|7BIV$Ucs4e zE{5ZbnJ;wSn755DbX%?DimKEpCB>Ce-{YQiqCPFx)NrNF&DW~v(}@Eb)2jD6AGt5v z^ejeN2U&-yY%G+pQKS59gGY@dHQo8BYg5-ej%(65*ce#fHTbdq|Gn>geB|)v`zkQj zF#VIRn$-#RtrCVB(#SrlYbDdQPr9!a!Uq!E4NjD$&^rjFR5Ss-?d%Ui(pH6jXJs}@ zi$Ima!pXWNeAzjwG&V|0vt1m%7(grbeOk|jzE$d5*|Pid7obV1 z)^}6!r$ezn9I9?wqShEo~w4z0*E7@4?LQ5``*2oXWk_R@lR*KJuM%(Cpgda_dZS)o4o0Zpp(q4~+ zERM|d*k0e4t-6)+mBp4^xo=H@fmA} zQDUvGE~Xd{{W7`yQ-}%G3}FLLs-*YUuvIk>OZ;^REiJLDL}B5<)|6jK4`pW4&Pw_> z7J}Tg*-!skuoItzMb;}DrP9WtGR1xy5`ZUiK0qJl(F`}l#u(fgJc!r$u|ayt9PP8H zsB?V}3e|K}^M_)J4%AP#z#2RitnVY7FojgnBgR)YWVf0EN(<5Z$b~MZoND?yO!xtR zE79#GDQl_1UT=E}Tau!tX_tNNX~D;nRp?p`y-|2)iVoF>2zbj=9U`Vu{wL%M4{4${ zX~Ok+Oe;IDUeEXz0ga1e*$o^M|1es&0WgV~6Px=g7vhlorgU`z7j`QEUc}33A zPoLSO&z;3PzoWuLk17|o-yi;I*u}oj##Y|kjXpiSQNM@jTFik3Azr4D?`!mYI6QyQ z?Qa$~c3tQelhN#?>(&cDw|{dnMtyYX!?@$=HQ&u|^1FQd$*tLIZvVMQ_kMke>Gbgz zO{ahIN_*A+;-lNEOG_uE{Bp^!(%bgGSN}C}N3-(;^337hznxwD+#GKbKR&r@@0a_?wu!#J+Ir^J zxAN{C8&O1udRgnvG|>y{@7;&AwfNor7Pn9zNYO>r1595v)!%b6(Sbt+0p^wC74hABbtP8>w`4UjJSPW%->1jRl$ z2CagF6&1>bRhWD6Smul{{4m%=epuK=RmB!GLvbc;3%1eT>Xg;wHyr+7QxHKchZ?O+lK#QaZa5f7bkDrUWIUi4vy^(U|uVXHwV=M&uWfLx*u+1-8WjcWPOz5bxv}2v2 z@(1-Aq>1WYrHDU)@EuEQ5(}OiB_Bt3lKO)Zk%D-IIBv74UL0sK(49d!k#3TVcruh& zS-EZTtZUm?xl|{ZdB2YM$Sz_z)$%Sf+0HH^aYS_j;n@kiA14xE_yZ;fP=@)eRJ}y} zepj(RRlRO#s~e|)BqQ9TJ2&&RfwIr1NG{a3b!WEya*oyx!0qn~{0rb`9JZxx7m@ow zp1rdYL?yo-B0U542t@c(TWcp(YvAz`p2qRcbqmDolO=dnne3a8-6Y``rR?(RV)lm; zY)Lt7<^`)N^u)61$s26Ip=dxIC1@arh5^ci?yh~TKh0}1uZn65fFF8tV^EiQo@apG z^`w03z5$fo7FAd7g*T!X&jZsE3`zkstQR*jpM&tWUJ~JCFCxc!@oxOe^F9Ie7H%hh zsNiqu2KrjH-csH=h(!1135f^~GbfBkWO{E-kyzLJi^H7tl%2jVK*ek&IQRLt2@v=C z>yL@F2Ol~!K;Ohndk7ea^T7W*l0$8pJxE{iFLZ}M3Qf#{-_wCXp47SO<$9h@AO!qB z6Cf(V4#&2y^i?3tSfJ|X3jYUsEhk6RzYBZ;T4sp>Rr*skj^Qth)HCL)F=3OUZ;L(`X~PrCZ-%# zwS30uT;)w9SM#}&b**CVYQ848mmnqxQ$$k4EhtBeJ{l#`1H8>2v>*T3bz@D50x?bE zX@U|VdY7*Qy??Mr<+EVhn^7!EROFMcZ)Ic$r25!%8QtL`!t?OABYv04gzrh=0l@E< z2|q)a8SY*Q{Dl<$i114(Y=g9yh}ZqUpYvH>%h~1SRsKsJkjlw1D=#siyjHWzOW*lF z%`yE~C_?3>=u{h{53>9NuV@>55OUhC^D&JaqlakhE7~PZ2?~dLgOJK^N~ve<)TXQn z`nduq#v-*NahhJK(HVxO%WP$l4yBZrlj2Svk2F(J-(S0EsP`oORADeH9748}_4c^n zdr#I^vk;zsF3zyjY5Mg77@i(8^x-&^wVR=DW68EC8)ZE@xCMrJ?$fRr`hZGJfPHZ0 zKTm{D!gE%{LzAdWAH_#!LfP|z2iqhqvVO$9 zz9O!&YA3TX=)v@1k-nEaE`**{boF;(`=^b2c0cpApG`gHak1VBGreZ9zOwL|PA%4_ zDu*EBGm2WGZ|TDJZdN@j%l2GmHMHzp>QBjq zN2YywdWiTst-`>btkBziCYVI&@G0?`H8Bup;KnQUmxTu;48jL)a1$$Ar463f3EH|^ z?_uj)#vJcOdcIm;%Y}V7>?MN47xIV0k+ABt_*j@P{k}>+M|k+TI!l_{#0qy^bDiuP z%j&UZADz$jn8MfSPYEE?gL2|d&g=9spD*V(y4lmrb$SgfdF8ItSN5oZa((fnL-2PV z{!Rt;#vQ*<&J_2p*4K#&f32V(tMz)1FPHacgJWGxP1obO3Kyw(qu#@GYy+4Q!X*Z$OPW_@h@F;YiUM~Y`glKMfF~+_!xQT z#kM6=YgsK@_oQjez~o;$9f^HM=dZ?B9{4J>qRFzJ-|r6}F7W@+yWq%5z1Pz!X`7cf zST!U1O_gTq;s+~Y-iJR-c=q)BX+y5&S{Al+`AU1K>F|5=z3n=zvAEFwc8fs=zTLR? z;meGvZ+6=ISoUae>dHQSZf4ZBUTJx{!8P2!KAG06-`I<>e|EfaaMt~9O&+bkeBA$f zUW*r%$2^(zGSp+s?u|DOH{R_waMO}570)}IF~@7nZrf$WfGZzI>^?K3*sI=8H-2uG z`)T;g9P>r@om)t)@B1cBGsh2gIr1jC^QfA&E)LywITJtWvOZ9g1oG0{ z3U~v3DXC?yw*wR6yzPg$KVCchbKrLPl9&~_#S|UgI6$=MMn{&w8XB{Cwv&URjk?1; zEE2-YMBEHe>{dR9?N70di7qO4k4scGzpyDx0*Ia5(H zR-D<3^W$N$H?=9PdE;PQqQqp;E?gHeESA4xjq({r7e~!`jA&>e>>&k-cWKJ|eS|{Q z76P9M)hO#Fz>>l>Z;z9g4fUu{GISboEhVK+SMH_or61lC8Dr2 zl{MJjU)V*ZS=ED;`{P(e4sYuQU}F}M=Rn?b#FKKek;fl*_E1{!XI(Bc+JU28fF_A3 zJ^#Hf?gK3A6o6lU$qEn84BZX%2+zux<4mfE!5;x@DB?ZZu0nnjfiwmcpbh1`W3-V< zu<(p%2CbNU0(K%0T+dPhlt&S~#L-s>%Bbi)@+U2ttOWH@G}bWh;&d105X%X=HaQFD zz}94AHcA$v)j<7h$%ozsru=wgk^YFYXC<`+;$O9#q<;S){jB!5R zvbkl7t>WQ4e`NiUhglUg=}2wJ6k82&6@KHWXxs544~wIy0IRkscvsoR04ppkTo{5{ z8cH~Ohaqb$=3!yjU}0ggrHMSu>Y*16eI2RLX}+UqFM4}7CSVYtw18EM?p$eqDIUbX zB45y(@+xaQXye%SO{nvIeZF|pPd8ukXFtGw_#ZF%jt}*t@j3k>SKzF4#TEW2|vU`3)nJ_!vG2BcSFo&-IXGRn7M|M>TH$wQD6bAiNc3ldy_x~k+b@7QP zBWh49d04;U$^CV`TMQXFc+ik!{jlCcQVoNL4I5MgYW6Vp9Gady^luQA*BoVeFXQFC z2A7v7US2VY^2!wCSa=O64^KVXXMQqec{_JtA{Jd>V#HQcp6dPusz6UFZl4)X_Dfwl zQ$fd@u@v>#*0EeBzOgsD(7e}rWqC&SUxHo$(w8TW)!Xbc@8VtFf!8+(KWkB7dX5;{ zCt(`deuNmNksZPRUiewdj^qE?V(7GlX=G<5Oe4F1kd>Hv1^>?yLpLN$BfBMG8rfZN zrKE-*0OSonMu>GrBYP@g8rds^c*B1n#2bDuVH(lL0K+sgaIU3>*{P5>%m|jOGa8wl zU<&(PzeFkAAlt!4H#&FC&yT#_9aW_MptrYVms|lNp*hnhy3q6axf+W605b3oH2edY z+!v|kM}4@O-DYj9vkIxy=;cK7K7#5UN2fmO0~m|@qdv_04l)eGJ)h}K6-&R{_*;VC ztq>|X>h4QJUXNDWnmO5QBfiAQ71hDcUG_;o$x41RB)4@xH`?04prR|+{A?*}N(D7_ zwKDixo|ihAGjXhFXL*G~#;&A+VW@T6)oTW(`Lv7Gce$W_p;yW|M+EAq`+r@3F zwDl@;#b=wmjl8XOh;<$7ui&>wVP%bbdn_HaHnhQUNMmD&sKqvX8}$S~8}AB!e=BM+ zArP__atmuK>)L-QKiJ05#+rR)Y;3Y$+gP}mZ_vE3YPwj@udvrrUOgCkp5h9ZWSi)1z3qH9dAR zRB_^yW@#OQ3A0u335#+yXgyeh9VjJgtTJ>3f+E92=VIMWE1eB31TYKkyBJ#iua$R$ z6S5wry{?9qf^d~lOWOahm1oY)x|y!I8^Q$`akus~G*rhnWa~S97$wK0y3qK9X?B$A zY0wI>rt_YLXL8}P>2M{(2DwBwA&^Z*&=B7-xPEWatI2gtkUh=VUfr4M`x%TlQ-Pdv zpiFxG{SyLdiN9eC)(@yE^Ldgee^3x$n1RayqqT6+1hG~zslK0|Jq^kZayGTAY=F-I zN%$b9PcUQ`!mFxj#NlT4rgOoD#{W#18LKFJ@c7?3ca&7`;AMH_O^1oIOK*~~hG9|W z{EkhsuP1l#dvR&iPpr7Y82sJnYu z3ENN4b%@zwrh#Pn$JOq5IChK_ZyP-*qv&jCl+P1$hHfq`{1=WIQOg|nTzKwXM)82! z=6J~%be9B8p8;W>ZA&D|pI;c&dVOR+2y!fBIdZs1kQOUA?qXc*I zTmDOcNgiR4yGUXN)MlNpyQyI-!%>^hq!T{}A9we94H|rrH3*WOhW^8@ddwiGpRP|+ zcI+!Q71Jyr~de7y??xZ~*}H&#KYK<~O`GJFr?R*TB0U0T*D{Lu!c^ zR^`Q7*q$l+x3mDuPYC+d=8RWmNNq+_E_w_+9>F1Id^94HDFV2#igI+@gOz)M9HVR? zs$UU&Tbt&2j|x!KVcxFOo}hd*g0XcZf%GAWjHMjATA)JQ2E}KEIwn}T2H-Xhiq(Z8ruJ-QwGzyeNdW&DiTqS+;AS zTVymOK#k=A7P{E5dL$m+9=mM*=sEzRsf2OBH4I#owllw5kH*#q3?;LJe z4=LQfBMj4oQ>ObP4A%twJv7QN<)1xQjw<(YNp!pPLrcCV6QI9(eoj7!| zpS`iyk_|P|Le7Ql9b>oU^tlKt-BNl!)li_W*DE`v|FT+7MfZ!aK78Jhe6^JwOfl09 zE3M4(koNNpaf-5M6gQ7rwIdqT|7@fqMm(f68pKW_(M(D6)^FbgI>fkuVr_#@svkCP z{PUvdy+Lldiwp|+Cm7+dP4g%FYrzU-49*+yB9wFz3iH zB|%(X(f%0hqgTSQqa~Mz%sLUQfbW>(k)7ag2)H z^_i^ZVuM0;2d5Uh2BHck`HtM6P%Xnz-@g%sH}v&awFC7oqY2j{4e#0k$13n@;+xX* zH#mZ&UZ|;1or0p!-e}%@{+{^?Rcr8KikgXo%k9w=5{%8kb8f*cwI^*`pir#=6>wu~ z@lZv+OVNYkHqZ*}NY9H8;8=GH44Mm&UQCK%2R6uyo=;S$z6N7tYaG`~)nZUH;-O60 zh4Sx=^0C60_9x)()I${aB>Vmw6!JJo+kH3`q)LLAoxT@i(Lh{%OqxR2L4K8@ovCvp zhzS;geOCyY^*$$2ebu)QXpxCHgQC&=Z_uqviMaRcK%{T%j{}mh|70*N*|i7fNM;k{ z(5^jIR7rZUq4ZRIdu4zE!DZyI+z_DJhv0E|(t!M*@*cwQsRUT*Y=Ajq@|%Af2JN$5 z6!J&|CAISiRsil<1|DVL=gMioaYFu_eY=Do0)Cd#=HCubK1NVRB`Z+5w-H(qbdaHK z5bVy;5eQBohXuC-Eb@$!DQZAF#EkNDMs9c+2n;WysN5!nx9yc8lff0&LO`ujcrStU zBw?Ys^P{Ak(||AFxM((fyM*rtezFYyK*C=Emr*IJC&r?RQqhmunaSxiG(Z`HU~egf z85$ph_#B?J8NuCUk}e_sh$pH0GxP3#i_p`W{kcy~#`eMCeB00S#AB`#tcZOH*XQA9 z;5*fD$LRy{Mn5V=lo6{vBH;T~-_9N}-0S z+Xh2NK{!rpHX7oEb4<9fGI?(@jD&H>+)akJOntFr@;Hcaw2yX^KSu<704lO+U6;Fz zY9J@SEe2QlL^-8hsO>5*;x44*)t~{==>}sQFwH~xY3Ym$N$!rQ=PM{KUPNvaI0qji zU4@SnezCTjytQCFDbm$5T+J8{ z=Vp%7PFuCT-sphP@4IHU9uDPTC~32!^HsH|aw)H2MG@Z_;xhMRQ%l7pr(tprNZ~Am z3#9Nj2p^QfyAeJjg|A^VV8`gOR`~CKUtiIJ9e&Dtgk(&B%yKw^G$alg7TT{Iqrf0c z5u>l$2$Z$Wu(UkqD8V(RFJ+Chwkby?Ccl9AN%C@3K>sC9bLC~tlviCbEiyHpd;`;5 z%Cod|Lr15k59vKbH!M~BFR@>GsP2DprB(Pl)2+O+n_$|-Q>w|}V{t4*Mt4kx6Rp+w zm}~GRTgz+^!nYG4dkNFX93@O6b4Q51@zydggp$ROuY_r2{-%|?4aG|Nz7Se*5mbdG z`wh(%^8Hfm^&tc7jE0&j9Wg9c$`6aEo9X8hh5)&6$n^4*p_)>DKtk&k8SDhB!`N&D zoS=Q_;9)~;iir+Xn`WFdbW_oU{RVe>d&Lk13Au(>4Go0-lz!Fly#=;2Dme@iOXM|! zx{Utc!68nrCc`yDX9a!z8;YL3g zJm}*cgHxH#6uqwRY6}0wP}c$#rQ9?43KwYFJ;Pws_xnBEF%A>zbEk;=hHbX2K1WHO z?}F*seZwjX;ULZb%`g_-ukaY7D4?m2#jdS;jIJqJCkn{wsUZxEi3U#%?*!pTQ=R9A z;Yv*Mrq_lpR{y9JHe6AjZJh1mvF{FgS>74>`cu5me(Ltg5U!S2IU1=*Y}<+EeloaM zsW>*jL*CqTZCmy8%V!zv}v&&b{8z}FLv z{mf{ZIh#)Q{6R* zlSa&#lAo}6M{MzlXYJH??C&l6v@p!*uJ-MJ{rr*Ynca4FHue+L>6`4k>o#4(6*$MQ5XjrK)y#ty9NLnXj*Uh_|PrN5=w`OB+Lph)P*fQg_@GP9R<>QfyC| zjeEvYE+ZzUeTTS36i-WuVji|c@vx*H(UpaWmqzon1l&G`aLKTORh3~=kj0yG-K$N_ zncY2yUQMCU1Y?BCtB5b8>>eF(BEN&1m0v5ce&GGJet@bcf?v1hRWg5q_Dr2CKpEJE zNv^Gcwie~X+lz8qTZp%DZ7$yv&|BMucqr7jFmM%fHCWJ|Qism;S6x8(K?gor^*b`* zHc?b8D*z6^5Z%>@x8#X?4@B{pJecUst_|XgVtCqnT!G*m?l?ME6|!Ix;y8RS4x1lS z(h5*H<5KiKUL2~beit;-rOd-N0to6#^AfWBmD{`Gf=FrS6LAQCkNfFwhzE2R>r+kb z4i&fVU!JpaCxA0ll7kaF8?veru2l7U@(he*u4)ee+DPJh>YYLqH1UD3 zsU!Afst%pi@xJ7-k?aKUt)5T8ReU~P>dQ=lC9X@yjN%li;&Bhb9VSn_VY0P83&8Py zyw&Rcu?}$XXNk;xnW`s%p#%6(4nY>?2DdaM4*xmggJAZUt@XPg7<}Z`gv4@=U*T3Z zn3o$fnBA1pKGcwgxgPQNLwJKpsWRCZm=IzOigPdrz@0Rn*lH*)!$T>{3ZjhZ2p10H zcc}!Y=Vjbd)6-=Xm9Q;X2}r)2L%z#- zwkpf9Ur1P-g!Kewl(0$5Ddz0iU?reM60}RowjbC@340)6&w;&P&aF3j=J6&%^We5H zkC{>Omv_&j=Ud?t2~cXDsH!NRBV}6)Yua&%_z?IjoI3F`_>i*R74 z06~JL0a_qs+b&^yfE|^vyDPbUD?oopkn1Ymg7+%CysLN%Z8%0%8^i~auXPnA#Wz65 zCLqfkDa&T5*bZO?5_U_%?g4utVfL$e_3o>&%2spxToTj{P}kMG#dHZ92W*;ztzFIS za{<~TL05P-+7;JV^l>IYKzWU8u*z`_2B3CiQpdO$lQ z=p2Wx0lFta;E1v6ZPr5mZ!NFBE{7rkwUeNJ97+W=PJ)(jXeFSnYbmMk@Bj{608lLD z`N$#FI-E7v@yf#~b{*QQ52%F%X*o0i&lG?SIgq1wHvl*M3S*G%Tvj)^-2Sta-g`W}E>@7|7R#V+Ou! zZoJ01zVbgL>DrEhNS+c_(>(ZIm%kN6niqY4eR*Bl=>%iI%`7N~QNdb>@vQdgo?jIaAWjFnema+tG%UamHPg(A`*xw$!rHd?{LoV$zK*$#YAiswh~H zZftJ)Io@a|P)Kj1p9+LJrm>6R@FpmHl#%5_1C??$4FYLPg7Fab)~fmepI4@*jq^fYp4d>(OIiR4$gOJ~d!=am)mq@K^hI?_D7 z@e%DAWb~#*24izJn?6)NS)Xsz6r< z;VEwBg{ICihEU(Hj9V#fEUbfe>?-Gr_yl`8e_g~dvc?uMVG&2s^A~VzG_M4Dz8@^- z*wBI@#t-B)0yS(%HQIn+h|+GbLmJjxoH(X$jKy37i$;-q9))J78PC$1k;p%;tDG-o zvCLnW@(H%meCXQ?VU;Ot7?#@1(O5B^-WmA{miqW*1)nfs1;=Bk?%INUJMVyDz2D&B`k>Y+eF$>YLyrT{WQvW zRLJ~$Ra-|J)x4I!F7Fd2EN{r$W|b*0Z>-V5JYD}`X*08S*TcHem&B)VC+FryA)Ojj)!2F5EdsKS{R`cv`at-aDWM1%M9YZD? z+X|$fWAvwMQ~t8pSu(5P6YY(|lC+;_w5Gxj`0v{a4b(JlnzYt=OQ^=t|khP-I1Oqr?^{f zapW>S8%2fm+;vr~t=J)w-U||P(}7V>ubnyvC;Lj z4*jF{_SAW?ad##=ZQ7_t+bFHfrU`ZdVb=A^YWlOYs*Uwv8w-d3SuS>pwW(0Y#`1Hn z?NVKCW!M_*3~ZzDwXw6bkyol@uFss)Z0m0)a_yv_*MwBgZCFiRjTK^@U`?Q8bB&2uvQlTVk9f7uHbLx46*!-OPk_yv$D~$hh@^bKe?4wM2C`j_qvJ@X6ED z0f%$h_dwVTIF#u%pMj?4EdMk~d|<8^m^s(>5ORpG7D!ps?bPAsA+Yuw%=R0l?hi{9 zN5uO7#ezcGw{~vyvwwYOQ@!Ozot!SL#=_jV!nj>{Lw!~n{ouJZbEUDOaw95i_r=zM zsc@xHA*b9)Y#9&2i~V@Du>y7$X1;;)kAy17V~sJ&ymksJ29#x59ms{D=BP_y&ZZk{ zjAP`&22;27C@s9Blnus7!dQB|0gHSbRoH0s59x@8+hA=E!rv|UF*&xgZs6A8FYDCL z2=Bn(PONiIkl-=c(X;*zY9+fKjT2WsWo3A(O{+EbR2TY{$0n{(Ivxyqu*Uy*)t9aaK@Le6W^0cN#|sV@x?ajgtjoG?jJ@zHEAGGA3*O zkyABPQC?1!=y-1JFPjc8ycuw1O3k@*_V26QJWzl0Ue9G->5K~)5sG? zG<%vYyI<(t>x1pIQC$XvS1lZCj$iRgYaH@vfVvPj5BH zJ#rr>H1>7)S&C=c-VshOdnC-QVa_mRrlJ3jK{0!pd~9-X|0kQ`=z$w7-fG^RuuaZh zsr%flk4_mU+vOt9ZjW9FPwxo^#JudK`mi@K!WGsj~*g6|z^pfH%@ zyJt6@<~(K5Ssu@9m~ipk`rqzD1(a=uMNb9`f5&76<1F}=+3;T7J# z+*0vsc!)Pczv*%zTyNbeD)Gt(cjNsI0}t9>Ioj~6s)G+rKAF4k zXneYDbg9>^w_Q(fbv-!mbp^|2T`~jm>cn-sTQKK+m0>3?d%T!xupIfMg0Fr}TJqv| z1-*A(S+Hno>q(y03Hn2atR5|>)oF6!@g=0oiK*hF!N7;d1HL*TvpT*rY~!U*ZIsqttB#0T|LR(CZ(BX5NLQ6)DS1K zBl}y)K1@)571UF74%lb#uPQg-@qD(wLT>3qF+Xd9&XWEN=qM zK1;hGd8`wKpQ{^W0i(vWO&CyFp6*1&b2@(nSm_D`R?6I4oK( zm_^Z*Q9&M0^+GDFR;oWZJdu+D9yx2`7xGNvv z%kzqI($4!R!KQ;3z3hHFVdoGZ_Y52q|5d83sg-j|rXVEbf))u`-f-qsKt@R{)`pT0 zlP`w)e=`si?+Bv&oKRmh>_>_A<5gU!?~WwI*VuxVyQX+H%dtS8|Mvyl{te1Xd5MJZ z751q-L`q0f87QVg zY0K`;&eXpiE?SBHDL4P|ATi`$IY_9N*yla$|L5v#(}IAMB*AxmR29o{E&EK7ycZ4b za;j)>&E3gei+}#! z8^9q?Q+Ib*4E`b^KTviGYJ8qxGRJZW`P2n{0_D{m$-90^RU8cueuP0_QGWfCKhu-V znFRp?-$!W*m0KWa<&cJFa@I^!Pw5-PPJY6ju8?|AL*RW71lpm4x7Z+w&sVAjA3@bQ z&zNzxCqts$EtK=Ev(`bzqirY*(1&vaKgHc7ayU2IO37H{$Z=q6(sO6Pc_L74>Ke5ql=H(iw3b<#g}hqXBnW zwmcH{d||H$)vNJ^NNfs1JVkFV^wBt>_TQU9hOGq^H?sEDtVZoIEwJyjCA(%nfw}+i zm_nJp9W3o7h+peS`4RE{LRBgq55a%YhEP~1=2#Opgup`{4x#o&ohe^q z=TF5BFmN;!q9ONUsKB$6Klc98&@-_7vJVXE&av=?8Aru~xBAO2}Og#JJ@lTcLy`K2WS81&4eh(h#u$^WJ8#^Jrf{MF$-CpAsfO38$J5*5m+yYj3wN|M_yt!U9o@AM+hh&c)US3+F&;~>{7f?ssJP8& z@qL6p0Ee?Dl|#z^VDCMEqDtO&@iXTzgaH%;1yqnAU>3|-Q85QFXEDwU4kBXMHGw$? z4754!8dpVK9n&i2wC0?}oCS0CKAiyf`~C0#yTw-BTeq%N_&)E`;dDMd-KXD%;Zq}v z$kx?_;xw@voouTDm&Ruyu+C(gV8#RRojASCX$|nQXvXU^@HGeyv*NBPYB1WiKp&hR z?L$%u*74UBCz~$J2-cUy%cmysOMJ#HGIeGwnQ&o7VRqMO%7q!&U51|(S$_8MkjKDY z%wpeg_6t}$;yUtKfEpOX-*hGM*-2$iwG~uXP<=QxQBX;s7LiRf;I0_buhPN??j3+TPvcT|U| zdRTO%wx0A4Kxc5e-<1M-T`Z$*J!0{dPb}M@Rl@|=5M1k6{ux5N;1a-1#uqd=XQ8eU z+zxPuV)-Ww_XPI=oYs$jbKr;Dx$tP)%J{%0ydU@1gL5Rg8*aOzM>Fic!PPmAAGozG z9)}N};`p|2>$t3K-!{0+>pW~);l;c^?q5C{K=!pW<|QFP1{?CEfpOY@*O1bG+4TMS zf~LY`O=IKe{{_oQOPUzRO3O)AJN0UmeE5Eze{AkPZECEAo!P95nuK}e|Gwd*K=RVT zR2Xr*YHqxrwXMr`YisNHE^RWlcj> z!AlP?)DwqyVJRt++E04L3@4GZgB&Z6v5WHLQDFy}**}IYBz8^$d%BBS7+WwqNWK`) zF{~&p@xsUMKeKm4?LbhBp3ZC{N!%7Z-N&s6zMa4gfujUI1l&vDAHcl@E`Ts}AGf?6 z{=*C}qJONhf43O&vS;qvIhpC?bh^gQ0Hhu%xg{rw@EefdHz(n9x-pDB)n3US5j}I1 zhW}?HxdWL|*QH}l3i1Dx9r_$y{e)3DNEc5Yw=+;5+ zPty~;QifvHGse2TvvIhlYs0PGHtl9~%3O(0A5|1z7I!oD*0m&$yBU2Pyb%FC{_Dfn zZtpyIbc7Q#M~o$0Y#dozcSm>_M`V_GHykt?Y}vZCxZ`L^Pb1OiMFf3m1k7l%J+bsM zW?#>3*1M7?$@lw77whl6jH`6`C5^Z|N$gRh!%uOs#LYJvyE(@p!hZORrhhbIKa$eF zHBC(!lkt?MYfoeF&CJ!tDz|J&znP&1YeS0>c3IkzmoY}af5cL-uW<{qai*`)UnKZL zUt>pktyNtzV@A;eKJ?sjK0K7>h?+U3WqU0z#$S|cJJ>_Y*9528(#qSDU9m7GDfx&*W4e@p8geyF(&tr{4HC3Z=XlLs0Nbd!0M5!=XNuGkD5X#9b2DTB}yT9Z42j6OPC|9~QQm3D%%VyZmY zSX$E=c}&BG7&9+?TKeiZjPA$XH(381V!Wc$^(Iq?87smb)1hI;SQug|KipWkAbo#0 zOi%GQZm_l{>#CR8TVhhScF#-%_JY>a-L zXbd6O#~3&2dSrQbF!%h)@BXpI!gf*x`Y2c#cjQ+Z*)+XbO1$1Q1 zBx8PZv#aW4OH=-j$DAE++@R}{^#n3+g3(zOo|0$n@+Ijm1?=q-@Qmh2c;xNL9weeT zOci-dG!EBw$_!|5>Na3t|6V_(E-NSNVT+SBE}CcJd&ubcU(#YP9uZG6yegNlhEGP5 zBAZ7UJq@Aw6pzPC;-(n8qp4h&VyvjAdnj|rzVU^NBEwatBEv>&=c&d}6=tmPEKky< z47xwt0X$Ev)8T%KT$_&Y=dIOe7-7I2Cw4u1`A8qIt=p8t!49@EjQQLR);pk3^FASZ^tf#nkj5CS#eDiwR_F)d-5$> z-P1Z}sd4LnzUs+hlhd^;wpTK>;mObmB}Vm>2B;5L8nbFMg(c~wU%oeQl2`5uC1&k6Z|bcjjQMr* z=JsvRmDoCSu}8j;#jQg+ZG08F&sx7j%(_YYi-%rZ<6Lu4+33w*z9-*lQzzu+t$y2P z_ettxiF}r1?i2UHp?{$peczP)Wo+U$r#=(frBzN_e$@U&^(QI4Zl2gTwM+Hh8^Tt< zZn&o7`UZj4W&AlF~vVhas84obye#=Fa4_Z-#z}9?P{J+u8kMY ztsa}_m{-{6;-?n)I;8xTe7I`0t1sqkYHzcl#L>@h{rY}uI$-NxOHyatDSNG6cf;=9 zgI^YDGGwr>w_I1>T|DA>(|hmFNo<$))s4w6Lj{Cn~r-oy2MOaIHik9SOmJ0Hq4(i`}LST+2eW{wwo3^*;*H` zGak(+*O;7NM0i>k?l(RaR<^Omw8^Ktr&mbXN?B`6jdgU5$?GCIKR&^DA5nl@Jz)%R z^>xEGVp;sKu7`mO|2mL3oP4s4Z-jOGMkHiYZhzacz*7Y#z)J*P1H4J#UBCwfJ_&qL z;M>5D1kM2dB(T;Pi+zn*{QA7W-XyeF-a>|c_E;f+N?MXVC(#A#lcaOh3~w(ib9dl4 z9oD*aJ?V8uVs$&3q@6PcV~>$}?RR~%o)gKONS%KQHkoNG%#t?@J5d}}`GR0)L?OOI z*?ipOcqx6(6CM@rE69xC2ghvX-H~*=XbecEsqLK`dJX~66%B5 zChx{ETd9xEhJWSWsm<~GM`7Q1X-ITFGUgZ%vp)VC_nLx*eEL}ujgH~JIA+lu~@l%@wx}d>h6O#K_O)Kx~fS$|jhPe&_3^RidP4bRe;r zdE13d^NjXXo8itT?9Qm|MYw2qaZNP`YD0uyZ5%*`Z*-uR1Q6-~umFHPYy%IZ?uM06 z?C5BJ(=ha*Sm&e=ISNYy5RT#$lm3vjP{@%)s+qFV(V$ZA{GUr((P--kVw0s(fuSbwW- zM40-HJ`M=n5&91!k1g1Qg8;;}o`|hG)Cy*vpZ;dd6{C4#T0~>M7|ruD6}WsK9=tQw z5)bo?f08wu~Obr1#wC8i4z}2JqB01kM=1gL@4`<_D6fJ*c!+z(oep;I=&n zVZMmF(9tq%8w|!&Z!ix!8o2l`JZQ^bFroj21=UXj?oRgog`-LA7}MfkVG@4`PyGm- z2*Y0C9=I*7f|dof+fXv&+VTMXP(@ielt26+@Z4d%94-vQ@i<`GMjrxC8_rX5d^kqc z;XEb!5%@M_1W(CD;MXH~8Mq{1Ek1!|qHrP(t0j^duU!K4BVl)MByU)CfM1OyQAy_m z^rNt7KZ*xz0bFb}PeAX{`0)db1n7SO#$M_1U{R8t#-M4B;ZYIbI%9bv`iw;{8O!5Z z2|QvPtB9TBXvu_~kii#^N3$N!@}R#8Jd%ujf=vtGy#@3(6L6-8Y}!*G!1g}i?ujgd zj}viOJkjk1dt(ybB$L>q^&XS)<{^=L>0vNh!Ox)EPvI-=E^Dx%5i|u|b1FUL=5M=a zDz;CilBJc!ME-P~*szYM~0K6i}8Ik+kF zvpKE>accp0ti2Gc_6vE8!-3Z?;=Jo(jB|^#1!@8!aS3<4zXVf&rP&+{EybGLGVW+y zhC_(UvN_V@VnHjYV}Q*HMOj6Xnxen6f;|NN6V8axJa_&bW5Ms)!p#No_e$;iR zt4KN>5c>eft|qmLv=6XZ%?^JyqvHoX4)_`R_cbIXsJ*{!v$Yr~){>N6xV&K^a1x0- zCtFV1I`~^hW>iKc7W@MTGuQJlmi4%VZ#{p^D&Tb+IR9k>&XR28e1(nJR7_#Keo_j} zkKZYb$L#rspdZ`B-MltqI3RJ-P2UQ7JJRhuO+)Xzdi@rxjBnvl-UEL0Cx2AMt=JIT z%6NT$;6X%pK_>g~HbuF&jl1crxF()NX1cZBj+fDPmR;K!z;k!-_#W?ozn#1o0(N4^ zA#u*00k%VT!OJfG_-(*DcXRKCzc79Ji$@a<+;k7W<6;rf9jXY!mV2mSOV|Cg0(7T2 za~aG%&gjT8>c?R(y^=WN0Q{8YOjR)TIn#?XF<|gX7xhCpvjogK&K%>+Sui&_^Mx~7 zDt`2mu!9Iy62_PDtny&OIMbCgMlkW5N#e{rFu!x=0B25sxy+e&ocRXEft)>rn1hL~ zSF2!s>3wX^kuq3Lp-eY0G2G8&&ddU{gfo9}<`9^(oO#8W4`4L1>?q>#Bb$yP%|-W9 zOQeix$(fE|jGP(EnWg>K><_f%+h*ycl#V29u-5E3!>7%&Dnv+x#FV0|)uze&t^J znOfx~HMilqkagV87WmmK{M_W!15g=)%1zQ}Odf}@#dL_r6vnBBpjrzmo>N0XjThAK zoLUcRhoCMqN_U%_{ktMeP0>U+khqhG-t{nk9vmi1UtGaybxPC$(flxf9xgAT)Id-p z1+|1zt3YiL)LBkl1@%BsFz0j%0UeKE`}+uwt30QwgK8)!Bd20P4HeWpPAvnqUQj1E zbsp4hL4D(t{wQ|*j`HYBlT8iWgKaBR zE-(a{Vq+==D=W8cOoM;E_vF8OMl=4uy@}T`>u6?YJ5%&eyLSz8uyOaBgQ+iqFS*jA zw%!K^IoYYq0%V}U6iw}wG23B_@uP>{F!~NZo9I?tBOPHz!&dN*p4cf($~VWiPE@W? z`A1Q(&dcsZsmIT1>gLjoJzYBS8P>x?4HqXg=i}xRdZ6=}FxDG}6Pr|@3xj1&ru?;E z=#`uEqEd%E$Fqq`{nkJ$M5-)+R|Uor8E4b2`o*@6n4G5vT>!sm1^a$jzfB}dQC z;XWkJr{-w)3xiuea@@t_sztz}RP(0!^OBVfn|mg-Ku2>_bUIj^0Wv5)Kv;qR=P!^! zsRe{z%i!t?WKgIfPyE&d*IOWiG7bno%)m_&$e^qN!fzXJ>jg3>$AIvw0^G?20S(G4 zpx+t!Mj(UYrsAE-I1hmgN+lq?_z<|7KnA5F&=tmY7093@0Nr8SXn_pM5}=oiTOm+_ zK}iLC$H;>~ZSjXoP6TIAjtkD9oB?{u{9OQQfj>v(ir@^&HNhE_J3u#>zxzPJ_;XYq z3(lZC6`Vmy2fC2JJiZ0=Vdx_zfegxL!QoY>;TI=!wE@b@5Vf^NIfG&loPpU|!_N&o z&K;a5L)6w9a0aCxP&D&504Ri^Uj%1Rh6v7}Bm%W(u490L8JfU2um)w4APve4pk~Z@Hc&B! z<_gZB%om(NSqfC0x&8)JlA+atGbn2*XYJx{a&aY=nkIIH)?nz}zgI6jjBd_#YlAyp zmX2^KL!A4Yoah;@$Zr>MEVKmtmM&tlC*|5saj}*OGL6)c1z{orax&PILH0B^xmZsX zG2xD0FJ_ZExwz>qDbf(0#=bGRu%m-_`2#{qm};nZD-qXc)qSmqo8b6lWB99B%JhTu z4FsxJ+LRk-kFt`pq%@NAK3j6Ew@RDl=yVOO142!EJE3ia)+C*LcX9B|SpGl99Lq50DbS7=@13}sf7F0-BOt;v;5Q+4EeMH#$m zRnr^tu#yRv^;JWnPGv~xXInR zv$n}YCEg88?&LvT(+5(j8c=$;DHlu#W@eKZ%!u)Pwit=UY_hjbsb@;U^s5FBq9+v^ zAlj9+kXk^My1~*1QRVa<*?rmmr zB+bpLp0%VeSrH{SH`$OIO-%Oc7v7{qb8U{ue3~L%x~A5YX2^#wAKBa7A+$~VbZ;K-#?C@xk#i2bgSh_h^J;NQr?aCt$={nxsVJcc=OFBzi`d_{b_nesWejHundRd`G0A;YSa|mJ(}n&($Kl zWklVuR$e zLYmb<5iK*~A+Ne4z%Y{u{iL^PENlEE+=z&0Bs=Hh5u^E^Aai<~@{y*|sPkJqV%oNW zGfM$2`vlq25w+=K!N~TN`O0j#(EpKy(rCOSe~jsX&W&t}HRW}#-z=lWcGqdWOC zXw$_Pok&e;UsF1{)86Fn(z0Q*`b|)yEhCuE$J}RPYxI!5Elu{g(e)n>+SnQoO6`Zd zei<&?Z3f90YcjGo06tDh8e#G#zQa+K>;-T!e+?HB-`})^oEnQ!BPgDZm8(Y~?A8Iu z*vZ#-)DOmYo{)Q5g<=Io^yUM zea_y&|7dgvd1%(?4${Zf;SH|T5Cm-YYxV|rjCpnbX`JRE=m<^z8j27%hy0@np5pPd zCU`0{b=OJf@yKxEFq4fTv-v&eURm>dPQ892UL#GO*5wKKIZiCYOrD13&06vrJkR~o z!4#t_{MKf}DETxJiI|jt#!{#pyquBr)6M^cOGv%));C zttLb7F8JzWT{hd~t0w&T^=6^Z8%ulF-dp(MtMj)osF;1k>h)!e7F%wqFLGNZ8TTK_=kYDc69-rIvq`0s0M!UQ?#T z>en*jqW3@dY(46sYwo(AZ_-^Rpx)+nCwc{a>nj7)TrlU#k#38|%ZNutJv(cx z&}zn_4)JHL7lIo~e+w_)z1lP5owxKi#_w2c=$a>&jK?zaul75oN`J0>%(5hg6U@w$CP`PwkWVe(8karAlh zsf!+Vldh%96tCWOf_Y`3>Q!6SzjEZUjAdj=oz2ROjOLmCqObnGXsK6bd5`XMrrYdp zH#4&v7ydr+<&>g#r2oQ?ydwJMaU3`1)8wFc9sz|#yb1Ozir@Ya_F}fP^cXkJK6QNa zvb+4N4o)eyDc??+0H5k=&p~^%w|4RKTBk4Z3a?kDOMCkPj)SCL)S>aDZ}G!tN`2v- zZMUASomoffO)C68{L!b`8B*UInV$qcPZ-i!5SOLXT_ky7`)=k=-j*=8T4zIW5+onZ-& zUObTmss6~NV(~s_q^{0P_>@M))Uj)%KCIo&W_zm5Jtg() zfy$Spdo%#| zZ*OgXZRCW^0D&37l^Q&3;V0dvdyFc(eqsDpsjnKhV}PlLN2VShKwl>PK!Hrw3??5RkS z^0gdj<3>O3iT&L*)H->IsY?CKGrbQ@ns?^eG{2U)y*w&rvx(f09ZhT6fNs@Aw#;3C zRI)J_HVkvX!6HXR`GQ&4Z5;ffzsVY726fMqOtUfj+a~45XQc&5lqHH?DKf1fPOM^Y zcL~lRB|6~#?`Sf-RZV=b(h3{4n|!fTgdbb5gUTFj!~F3p(x22?oak>m0r*ecN)E?l ze2`=7iC?K_3Um9TA=`05O1VJnN*95Lay|wuS1VtOU^ApB=~o?wT#=}<_|4d-B(tGP z`n|E**v6JZQgDMy6&#{sW@T+l14y(F@1b9^8{U7^k-8Eu>3cODIVsw(|1 zgqn|LpO1Wm`gb*UHcM}hpU*!0lwQBqxoz}ipjRQf8OS*cI;jTTeGh8`^U@Kmoo)1g zLdVw|neIw0YEhY)kxqxZZ87NYYw-hQWx`;_B21h*>jb4;ZIbf*iof0J+SuK%&F}al zPS20P94I|8lnz>{Bd-24)S(f(CXWr!l_P%6=3spTF!+G#`H=u!f6fd6GmbOAapn&& z+c|TIGq=Dz<%~Vql*=4U>gL%1%OQhc7?rB}+I6WRjkpmBI3eiaDaZjJ6B$X*VCfd~ zkYAI>@&jgt$=D+LEAVqa%a2Nyg&zvm8^US2_l-!P>1IqdFbz1*!4-1H8Tz=-%OEpLS{ICoZ`f^H5Pf!~H`C51q>PGO%l$P7O;w zfl7B7s$erNWUB{pX+2u+_I*owjXEcMJ9RzX;!($i+vm_)o8e{-DESgS`xj*09e=N~ z;q+`cLt>KRW-gvUuO7y*r+ffSu?O%cfdhcQ2wW8S4gMC`;J+N53-4s^+ru)jXD@cW z16h2!x^qqzssDwmw+rUv`RvpZE)jRkNhD}&UNv)g6ANLxNB`jx@f;`YfA!*yf8N`X z(|rJxjyKuqVRm-=fyTHS?GLY3tkfXvAnciQ z?!x{B01C}pmbnVK&ow6wW{D}8cv-GEH% zRnx2sOPjmXT>l6)2O8+$=Va&0s`aIJL9(=z*_Ip(4=zp8NBG*?Qs>u2NZg?NUSwq% z^Ck6L5i+8zIiEePCEP$gfP^)fSd~QeD{PN;bEm9%tLHle;r|lj&Bm@hkTJSQK98=c zz&^3VeOp@J`&JZ!(aX_AykWy+v|}Eg%5H2a*ae~CBiGuK-mv``WJ4;K$6Mq*xnACE zRNoaL{nq3vP35vRxvG;3%RF3ob2whXJWBVGG_7d%(j~En**mZ&qZwrA?pJe7VkMFF zj3jclqWPQ`9nZ7U`%7kmMI78XA>v>ueo@KX#^b+4#3IJGi9eR)C9##wuXLYD*D7Wc z3@{(9V(v-eE0~Lso7H1nNbjoVyCl7a*^4acV%FXb?(?X!0y zH(H&zdAv_%rNQBB@3#1ezXrVeRyQxk{(A;6--F1ErV-w}GwPVDkV@CwTu9e*IE^%^ zhPgNTFg*LJvnvt5@1>eixwdwRKpxxDn&wHQRb8`Ju70uoy0SeD9$#cFb3t`(B@%io zck?`%DawnrdZbR7OU~3X-@rN-OGdwe@g|Hp|0OrwmOB6cNF)n0wZSyp;r#i}| zY8|r!a)C1OC1-jC6yrHMh)zHsM5cE(+p=Pt#EWg|7550;Bx_n-^AznruEO-j8#zZW zWWo-+968ZiEmbyGg-IJ-?lisG_*$do`e*LVX3cr>#^zAFJdf|M-Dp@{uE?=Jk2VYs zix_9<(ey`Gue~ESv|rQuQ@!seum0wAYOR0yl);m$wzxDr+~3%yjA7&IUlWTRk1JiJ zQrEfnZ*(})dGv}eoh!%rH(OZ4eCa{N?b(H03KTjV=4mM&JF8}bllPipcGa3hEO4GT zI%B?f!WOBQ&HMGttG>6KmiOA)@cxjZ)=Ib5tngXfrq;I!ZQd*T!6T+@OW77Rx5>f* z!xy)1quCuUezo_8%9iKyhVrn372iB9)jGDOJY!PxxAg_f9vwSS>bXv}9y;$)?e4QB zac0!69p~d*`5_b-iyGGUa@p<`F6pKFt`jYWy*u;iz0{RXr*0f>*8Lm#*3g`8KWs#l zv-|4Q&iri3FbDD@=vRO1)W+t`x#VG#T8kfeS_gJ8d+W3RsPyovP@zJoFZ&l|=sC`f z{j5yD7+8z{th`e!v9R79@4no`Z}!3f5)x&$u?=v-#xBmoeY?+YEa?q(K3Vq0ieF>Y z`MWcAEpwAZTvx#^$6T2kH+8s@ka8{ki6J&mb@F3JZa2Gfd6*GBlGMu4Pv09#f0Fdp z8elgA@V7kpnuhZGpMK8`1I*^4};W0&4NB7D{qjS@#Id=+z~mMcjfdf zeNOG8!*tU7Z5KW4bvemIw*s#Da}qwM_r3iKKMi7YlK!09BEY=YouE0}kSWpT+`6aM zh0*3v8(pmRR9|z+|NJiK@vpoKia3TeOuiHtZ2viRUih-l1=kPT{v>#Ci1tAGm6< zrFHpV?Q%ZgF?_)nZ1O2Gz@hL1cQsBt_W!x?m~ z(-{7i7)W}Z)3|&XhTAk}M}9_1D+oZ3JgLPTVe7PdkX9Z9J4RJqxM&do?95e1!H_Y% z8@UjlRI{hnUs82D?{X!DQq3OfL`Ql&%AZ?%n}emi^N!rwTW$=pmoes2Yi~cC_<(1J zf!57A^Q+HLXVNckTmb#Cj2q5MxA?b*Ig)>vxutF#={w9^5GJ}O4>N!NH_X3vsfO}) z(cKvFAm-cBdhTZZwgulE5B|=FwOMe>;Y=f^T{5TR;{O#U;n=v)Y^2%E?GYyS|NK3? z)TfD;b?Qj7NhMp0w{j;AW6V$g<%&Rj8iC3eydRiM!GCQi-2Z{XU%2X~>nN5r6q$u2u z4ia5$ZIrut$%W#E_|cDlx!6tVhOfDF%56~BYm%>1%>J79 zVXQp%$nQt!X<0SkFiHGuh9ynO(sQm_IcQ0N+XJ;GlBQNG)yTsnHNzaF_B~7@UPAU4 za*&WigdD-8HcEz0y|h`cLK!)+dZ0S{FiFux2Wbl>v56Dvj>E(y715p&`Zb}y5&^y- z085q25t#-55F0HoG)9L=+6A{!YvrLuPQ&rfN&sh%7+{{8(siV#6r70F!hdp$gcdht zVxZO%AgPU4pcW;4Q~R1)kLc`Ms+>Ln@Nz6WsZ@=G$gzRms(>4U9uRd^x*tBa{TQf)B^cIQ{SzKCad9na4CA1CR)X!EtehPf;YR2v;9iJs9xsu{;293TfA=b0KW7S3{XV?K=SLi|!{_GPHsxM41Hx z(A;UI0nT1B1ZrUbG>{qzzjUZDf?$Q#S9no}@>tZ#CwOL(Pw?EXfd>}Z7U5GnL;>xK zY?!$y-Csz0DLSJSq=-BS zfE8p#fH;q3fm%}l_P7|y3XkOBZzp+^%6*EZ zIZz7#U^%V{Kp&*GImK&X5D26Qfc28eA+eWqD)6%8GM5NqfMuK6R9arbEPS>W}8)>2zn^0xnPz)lRFxM%*1%PaYBWG? z02WsZ0G4s{d6K#nWi(h4a|N*y1grHU0EjA3yFvkt~}W3tf;UK<6Go z&{)!{2Gt4KD|}frz)%Tl3!t{V%TA(&i(yY@bNsYDt4OjS>bxeA`C!N`(;RiI=&r5^UtJ&)^ zL~86U-}EX^TOY}?$0TOg)J0eMV|IdNdA=Z>*@*K-YBWun>oxYUK&=D-^W8uKBX{DR zR~sia)<2eA!9vcx&Qh%IxXyB?p69yu z7@_EVLQ`*uPE_Cq&wnTgHUX;#z`V2r$QsAups_J&qI91x-C2okfyQ!s27paJUftj+ z&3%)*s3A8Qp*9z?A0+*am~@l(k~#3m`WEXY^Pr&{1mWXd_G4%rbT%j0bd&d*9o&1M znksx85rlS9f(sH{m*6f3m{nr#rarmJi|4zLZnwBzhqmH@5d(M0itSzxF@}~@NTKao%hmR^>q)YBJ(LMvy zSe1}%m&`Z=f!CWFk;Vtzj%hqhZ+K-@Fa&@-g!Rf99WdIxexwxOkI1Q7u5dy ztZ8Yd;YwQvIXDu}n&F9Oy}nO;ubAm2BJ@|Q=JWthpfi|40IZRe24ItmS`st>U~|NX z2RwbW!Uux``NBFa}vtU`ry$-;BVBO(QSD%Sge1rol2mK=sROd(h z_eowMeID`AG#DO`$3U$V2Yw`C(=5Fz751a4$|F9I)DvM_Fd0lev0rmNrSFg(1#DEK zhTBEZ-HS{rW8Fi>L{Q=$iG4FY?kNMC#8V>XYrcUF8x?afbk9iwE z01s@OISs&C&SUO_92_Sbz50Z=24^8Xg$xj~6qm$(JVM;LWXPx0eIoMN>Iv_gou2SQ zj^&c{q+Wef&A8QCxXcoAiID4rvfBsTdts2x5mMPT~Vh`djlJh|F;r<6~S3cTkTD50~J9 zHMzTpg8s003W7DIHvsGjY#H^VjL7ae@ADqdd4~O-izk$S&eISMf;F}dAn00>h5J+o zKIf|d6XAjNx~UxSd5JcghNFw>YXr@VDQ=MLZt0mON8R_FH{dg1*>H7TIlG2>DIge*wmyb04uyoFL*C$_=0D(^9w$_8HERJfDAGgfR*0t z7cBFn#wRnZ;=RPh5ifWJoRnd%$}mp>SYQ4`0ZYnD(Pq3}@@`-HB~L(Ip|^X<-#jrw zA0qVWkaU%F;Y*&mRU#s7rvzsJSYF`SE72O{6h5jHj0fm1tDpbg>tD? zfhU&MIsoiV)*66KiFyIB!D|?9FTnD=I_DKHtu?Rs;JO7KSo;Ynj9KSS?y6k{%U<#K z;Ekp|;}uIgDfNTSb?A~>?sV?rna-0Okj@{emQLrxWIYh9;35E6)pZe!8iTO($LP>> zo{J~xl2f=zH>vora(q7S6>9A>+!G|fY4Bik*WQgZh24L^?1`@Of zU}2&~m|IoYU-4p#rnV8w=Ie5T&ys`eV*SV7yq7E$LDKn;G)Q&H(PFYv}( zYF(wzcmP&gV+2r>h1b=udHwDd@+^-^dniME0>~-`$2Zxv0BCGFR8;^q@(oLYW(2_= zI23@D!&Jeji-ngI5Uh$00tACgE~a1l4W;u*hCW<_7?KnYz4Z841*i0x%|=GIX5o@}8%uF9_Dg zM{>VnOJF)QmZw$HeY*ha;rG0ET=*%#EvnIo-;0QCKZqE-09g8p0kHb5CYcrhtkQY{ zu*by%u!N2Q$f|=yA9!lFf@N_XmCo#^#Fmb0I+)PE}35evNAkbgj@lZCQ#k>iNDp4Q2#WcX#gxQuRihi_?<>TYryR@ACm%v zECET!r1GB;f-cH6`pn<$5g_=R_X_rfp|G;+O#xjO9VEd_0G5aipLrtof?$LDRR9(P zTkg62nGcHJgfx8Nx`&X3g$xz4hLDYgY$s$dA^QuNAmo%UJY(~OTrT7~F10_uh_d-h zf)f&46+nH2xUeip#^sML%-}~ZC0x3D}R9uq26ip8z;lDwYX#vZUgtG?n8LG-f;3KUsnX1{uBE}ux{T(N?43O z-*^laeqzJG(iPA4VA;GUN&=$DN-r}42k4*(nc3j@$JsAY8|r470w z^>GB3$#&F{86oH=13^#=t=IV-_E3EoLyrwKn^5)_x9x&+N7=q5qD z1Y;#20IU$!NU&3a6B68z;DrR=0a!({pZnM+;ad8oGB#Q<02cE^3Fb<$N`h?w?7ebGf{Oqw z>klM&CBY}^hkj?lDo?W$8oj$%4YuPo*i5i?f%rbH9~2hX9Lmzy*Af7FowK$PfPJ=l z0D#rqB>z0L>)Jz&0psSLeE530sx^V$U<{=^zV)u7y<*8VlJryD}`hvMjrD zSSr*~*|Y45r$MBH9!U)s3VXcPS31!$o}67t$*x??u6&jXJtS4gQN&G^`q`COC~P~3 z2$tPUt!?{ByZMu5<0K-ZM%jvIS6V}1g_{7tiaSX%Dde`5soNXLsAKe_)7jV1CgP6ujd0a#ai zL79yx^tS-))349eiGFlw=K_GyOv?>GQ>GSl;UixON@RZORRtPLW(xrJbPE7`-be}N z0MLCF6_Uld3xMVJsPuA0g6Gr^O@QJm{MZAq3i1TVsvvKnv3IvW6j~!{h$~NIH9=^N z0NB9YM!1-z*TI4qExjg5uZx6BiuAfi5XYt0E5fUGUosyg(DH~1%q>9y34$dk3&4t~ zrUWe|FiJ2KfV~E$1F-zB1jx+4x(-*jPs7VI1uPqFcLA_gc}Rk@65N#F2>^RXy~~q4 z4KpJ*1fkyz=9VB(f~pckN??>=H~{ODvjEtm7Xz?&&T0VGi>(0r)*cR`Phd5DMuIyM zq)PzvnB0$x1ili4NKi|H2nnJj=qEv<1Tz3w0+$M)u5;%@_crP!^Idl3C++J`ns46h zKI=-2zV$Sd(Cp~=F+IDoJ-d>YUBTu7Pg7X{Rw6Yh$m~bWe$smXq>cDVOa4jQ@RN3! zYIGR61;AR*O8_=H=si%^^z#ZxMuY&caiul@>y{k>XtPvd4Ui}%J^hh}K`HEdZK^F$#osQ0z z>Ox~psT%+*uYSUvz0pTyS5`?ce*>_D-pcO$PAIl?LX+Q{BzD1gSle4-Y z&g}8qps|8D1;8?Q6M&9eq)V^pChYSG%}@wIXot=#L7)WXB?yi}3iZj(;?B{(6$1puTxP`fFaPXO$_uln*vPWqao3lq9!q6L9sj}Hf6 z&uA-|?vfcGK>`4K{3Pio8GyYVR|ByAvm1cLa~Ob)6lW=**NEMfe%?u^AJWOiPXrGD zU{jNl0IVO@2FR+ehCgY|e$rY(V^!IX(}7wS0JdP&3xJlX8skUq;M*r{kn}Q)13z{n zn>HF6>(SEzSbi2#hTdSdQZkzaqwW%M9R`6E25Nr;umqf!%vA~Q0I-xi0$`J-R{*S< zKLD^tDgNS71`6oJDlY)@<1LvW$&{iDO;<$#Rw=b5(@Zk$DMRDw1;FBokzf!2duRgn zL*tn!!E6bZNU#=wbp|#i-};kw9vX`%1Asl_iv%_S;_=P`sCjYI9xZ)u5Uj)k09dgU z17M-cP``9CTUCMv610|}y9BWk43l7@1j!PtkRU~Zza%&=!DR{VOOPSKcL^K|i-dVf z5GX+z32I8vM1uAb^p+rAf}(GHsvXGrVTECkN|-agh)^ofVGBt65z5y&a{)Dn*?Z2+$mmyVG@j$ zV44I(f~69y0bnz!%|ZNad{`0}1o2oB?*(B97C}6Nd5{ty*br9*fV~5nN~W`9`T?+! zEfIhXxpO45N;118b4oJzB=b%(h9cq>R1koTy=5g+Uou@J(_b;<(f^QNS ziisq60I&h5umq(fs3bvc0n{eNcMmNN`3vU6mkBIz5r#wRHL-fmR$(rwiYX0K6m8k8tu7=NSl;Ec+CtI5al5 zDGw0&5}_&suz|HY0Bd&P)X6n1NQGqc12X`d)QpwPY!3L!T1s~1qEPtc>~nS}zY?Nl zuqkgnXe`+=0BndKzyUw&sttuklcSC;!Mo0U5Si~5b+up*XJ@qw&{#@e|3vFbijGtW zfW^UM&kn#OSe)}ZLG4egZhZA;fTUzg$&^FpP06t?u2L}Y1B4iTgs>|82;K%oVs z-h(UM7)Y0{G)SJ1>`AC9G&|VyRJu!r&iQBj~}{Iq437o6dJ4U z0TPUmV1fiQC0HoIN&wb2QY1J45ZgO1&M3YgWMg+JR8!WMMbY(%@^*BG!GT@nH05+f z6m?8FZ{l*OfQ{X{N}AHOG9F&V(VNsd0>)ffQ|49ENOS)%Z^zfjUt|qUsZ$eyj^6Vz zAd;pvHKk}BY+2PCjGsWTu4?zLuBP~eV@Y>$qMu#0a7{7Qqt9>=&VSd_ly_j5vs-;l zso5aA^NI$V@;4af{1i&QM%>wPB5Y9(X{0GyQ;mGveiP9hMFIyl(-eo6B7yXJnSHG^ zCAtmDwxXlABfZ1reH%^L*`7v%Y$m3)vC)z{pxxZ78ECfxmyC?>h{@)b+}ue$fctyr zL8L3wow$o5z5C{QCr!!KMI*Wo#aX^Az8tQXduqzBz2Ln(N_NKit~PdCduhs9BmBSj^(J?Y2HV(mHfhRdlkjuq zH2hRBYf76w!q3wE|>R{l>-H@fVmTI6Y8P>JOpYj2*olZ49_0bf~7pj0G{Jq_<-L;_#ZNDb*%r<+kr6 zO{q7H=a!^jM`FiK*OdL!QBM_+q4Wl)=Ef76Fj#G zu2Gpg7h&wXcqi{eZ9JpBZRZWjP{SfuQG>`)Tz6x}7N$XxD57n$T~e zido8A;F6YUU|7nR!dk4|HZa?MN1VIeyvfq&g*JA!D>Wrzr6^`_ zod|Pkou=G}5?L2vK0hj6L8UQ;@(7cPCFL~jr-J2z;`87M3T_o3Y1$XvV~VUkxV zhiZ>WLGo!oX2~B6CVo>kF9$Yh%2yD~3pGV-XS*5wb_@4HB4}glyG2v(feEdKXi|5> z&#!-KO37`aG^5fMV1U@BDSIeW8GdH?cek;-0jAb=#DjJ~n4j(2HN|;{@RQhOh>czG z9hx$EC-=irtnEUB+m$`V^}y8Loh`*PcWcTC5Lqd{215l_{FS|4-FQA0EAc$kCrW8mOE|sB#L!png z>j5P}x-5dS1`2!35h%B%%Qq+v`$U-FeHewI#I;QJw*_u59R@?01%)MG6O_N8umoI( z@(fD1DM<5vP071o#8nnbb0{oG43uA?upk7=D(P|v%2_DO^pSqrD}am_HG^nGb_aOo zwLkz?1C96_d+=>U0y)>1cgQKaZtn*a8Of9LtzEg6p9%N zi)lQRSx{I(ZGv)4x;%pN1`2(K=6XoPcOP3@li=eO;wF`ii$Yrqips>{Hj%bS45qN2XMiKy} zG!*926iP4Y5({N06qe$7P}V~UyVAnn7Wgv7v|YV}qCYB<6>t=hL2{jlJ;?>zbeUIAmgOh>5?U2S5TG=^oIEy%t2sk zVncK@*rh;S+;9%m4g=g=*usxpTYBOI@!g2|WyQY{q_Lskzig(DEZ-R2vh^5hXOsPl zkHsxXAbmbB>SJ*F+VGiLAejK z(T#GC1;VA8Kq-v-E)cHGL=W4BUoZVNUGCy2&(@M*~mKkh~>5l?=YO6&pPS2<%yaQ0muAs#I>a?5Jrqd`XyCs zNct^P8%X-$(oo0-khlglu{mUW$SBATkUbzfK@NxP3^@|A3*=Zx+`F1M9x@7Y5+n^b z4Kf~bo}!dd1^`gwv;!f3gB%2z3ON|^800UI=OKqc-hmuyEquySL)Bg6x%l;rB~^#} zuW6P@#5v0oT~$)$yycSaoYnP$WrHoMAoZH%&;L{f^R8P8q6)TMw*=kW(RPy-$Z61vvw9K4cQ)63Cg5 zs~~4Vu7#Wpc@T0Ax8Aq7>(uXoY+tf6c_s@LQ}3nQt#IwsrMU@)cbWv>ivdw-6Km$747Tl z6HBPB7jb-QDX3m7LYh6bc#v98!KINu^2PX)nNKZ`br;CcXBID9MmOh~rKIj8`Q{Ph zZR?I<1Fgu{Gp4R9oo>)61f4q2DMK2m`rJ|+@hDMZFSx40*G4L=vWGpUSd)bvLGb& zUqVr=UN0;Ybh;bXy7k1YuTfr7^EI;Lrc)AOa8kkKED?jN;t5G7RTzR38$n_KPHYK@BqVkcdN)XK z=rNFfko_UCWS2M;5{p@hqal4ECkvhSH#DZiIgo*nbReSfB0J>VYs*{G_JgGqdHcrF zKo^H!*h}3=#9K>g@-5wxi}-%D8rKrqb)pwcs6ZPawZWv!VMW&a~x*f3=kKp-oazy7gq& zY4`%VXL~omK*?8hzclOaua=@ZZ#ofoavbbr=i;R0cPj2sBAeG+ME!0FE6jR;zNM2s zm%Mo6BU%Bycq0!k-Vj~g_}#+0I-TXyNa>_LjqLtzDUexS$;Ia6Bk#VWxN0ETa93(W zhCwYypX8sI-Dq zP|GbLQPfInNLpMIeprq=qPQX*W9p%W&vlF`=*Y7c@W17N`pHoZ) z_-W^q=_m0W%7Xiu=@ioh{i>LA%$kI$crM+5nFd)M zat@nThWLE=TK`~`{kpRxyXvx+O(QvnWw*bjLO@(?6mP|7jL zXOKrBKR}*<{0{jyq>YBT0Hg!tDM%;C(~vHZXCMP0k;}wD$n%gzATK}`gS-e?0rC=L z)dYYm0QDfRLNrkD32kr z&aXU$Tn_mh5=+g>3rH*#D=#6j`m4NxOu%BSk`937PbC8qD{0DWNUR$v?;%e@et>)g z`4RF740M1W8~1l_3Klt3rlAR)Z`r zbo%nAI(_+9hpY=(1F|t>UC2nm)7MZf=+dP7qGbS!A;6|+?> z>ITgXzVbn$J1ZWLfsme%bQb9aNk^*uB(z}6%>26nALCCMn>x^?!Q|5d=N_|y+$pk9naZxOMexhpLghZaA@A@h|*BgDD@M+;!1xBYh zrv$WcJ;~S4=#6!T8~GXaLC#XH72}LtckCz1HGIEJTdXA~b1aiall+W9jnA>-l2{fo zpMimo@xmeEW%`K(v!1EL)W%XE4$MTxS~{5%!!lQ;ya2jcYlaJ#g0iFOwVx3&5wT{V z-rwj~TV=1Zw;QHWTRGb`unV*c(x~j!oOm8jrJ3ZVvfAL#Z)vc1j%Ou96ltF)@F=k}g)#H?SQ6UaadQ zv9-cEN3%?d)R2q;Ay)eF*v4Z!0o(4_PQ(^FO9hU?_6wx*v7Le~+Y0CKx z+nLxxA~IuXg25P*EoxdLTt(eXyebiCnJpFEjtcI(3hrzLccp^+rGk4=!HHk4T%K5e z&QihQsVMs`sNfb?aN_;TC*E7Zq4`lb zG&oFq`6TGJD5Ti5%3OE_*RX;st>Erda2WVjj^zbSkP!ywt5mnT(TBCCcGZojyirv8 zFxrh`OQ&gQadqP_&i1Ib9ohcrjH9v;mA#M?YrgM! zJ&aK2=jhb*TV3OQzh5E48viR_{0VC6g569aVKPz(T{k<#wRnOQ)EFgDX zV=tk1sIeK#{zNOojQ;FdIvQq-QJt+pd-UDV4>@tehV=D~XQ_XL(bHZoNnA?H70Z^5 zaWljQC8Yzx2 zo`e-d%G%MuXeVZ&#HwoPD%VCf^rd0Z4QqWW)j=uMlfoj6S8$=yq56hK8pxC=p^;HwFACEe8|Sg;pSw3T4n+TaVpC(J>Y}u0Tnzzhv2A1VXlBM3tK;GAjxh#U zU%+d%cWFiXSfh`U2$vEFN?kS97{LBOO=68+<@#-EtT9$AjxqdzzY8@;x8c0Ia5&aj zk7cjZ<2d89gt`zGVy6fO{~Skb!?6`x^ayP0V~Y7pkEw<=lI!R0m zfz6HXEJC<6ZebjR($}>xj>E>cr7;Ocvym;0ciCbgr4?@1Ueqz##r%7b82gBfX%UX#vo2?Nc_mu)>ub@>)L|#!)Kl*vU+;l)~Hpo z-icWd;>;*Ht3^Ab7s^Q!%NYgwcbVSY4wtPIFG|hF5-r#y8h2{{b|4y(HOjrm)xW>*N`<-I zkKa09|A}yYot5)}YnOIT>oL|{=(Qqpui;JOKbj7Vwb?r)d+^R(>-CR9zP8Ue9p!W6 z%fmizk1Xnv{^m`qw{A}_ov&}@-K$o?osV^oX1D85Xe_vRy-IcA;nXMb4;!6ZH@RS; z?X{+!J?!sHlo;$Vl#qxp-+pp$zdSBgjn)RTEuQv_LoY?-(!CgJ-U)k3{ z_h69WdRFeAGoK#0c%bL{HK(pRolXCJvGvgw$#n*W3Q}8_TS4M_)G2QbIY>dO#SlV zP-cYXEm~hVH-2dV+wo(0y5aRVYv$RlKjTs`X!Zr}$%Q`0 zsMXQO@8%*+f6X;E=$>-xu%o%(+iSIEAGWFM{I37(ne%@4&DeF-^N2p(_DHQ)*AE^l z`#GcLO_TgRF8n=Vw1r8s{}mKsvWft=Qj)lWZ|XA}B(OiT45Cff+xtw!cpsk!W* z>?zcGWPNqw({8-=|+# zWJG9qcxa@uQdU@4{rXa-xCqV~X{D^q#4ryi?#m!=a`)r|wN22gc;*Q!VO=VIinZV$ zo>FTB*r@D7Y4>aR1HOVLqCpquZ3Owf4e_PEkrp-A5AwMxIiBo~)zH7jTJbjodztyvBtK0#V+URwof z)KJ(@Mz^B^hcUj|zOZZmors~FPP99%y)WeqN#nRK=!q2Y)K15(rB|%gn1bXi@*n0VuODyyv>&>K{TazEPvhAiE2j6C7KhjP4M1Bu zfOLQ8^tO2BZIN`&kk_Q|kijr8O&_l=EmzNtK{63*A9-V~`#&N%ZXird1F3LkNq}ZA z@YX@3yW?x1UsJ;~DK;6Gw|oem@KCv|jYBa~NnwX^uyk9+NS_`i-_tgC^;1@VLS!i7PTb|9KN0^P4(q?gY}aY3;of zgT^BlV+FZXARemgg2xdD;$|-C0zv|;ZNES~h%e;V!G$C7k=V1r%DZYj8J+jZ4DD%- zl`%7rFj8`dQiJu8DKJ${!2EG?~}*Mxw`b${C>xV7E|F zVPddm&ve+-rcM4nJQL_yw%@5C(}JCDk?j}2C1c%cgA zK2^>bGG96)oqL)Rn2(x4ub!sV;4-k2>C;a0<()VJz3vlTq|j$TW3aot$d~h}>`9Dt zB5Nvoh6fk4K)$W81!zP>O1|4(3f&*{$WQcKgGbxGlu^+(Ih# zZSG3}p?qys%tA^E<*TcjFO*iXm7L>RETrNO_5qqVYFN}4QfNDEwa@4u=MctEQ!!DL zAI2xJ&xO)3{+)`A5w1n>zASr}-ZkK7VNv>Nkvz|)34ccN)-2nOJ~rf&*_xCb#m`}_ z=z0|Y3wHe~nvVndE}Gw|dW3ua(9B&`pQW(N5$>w-@M^=Vw`>Xd?a1&@c_XOzCD22# z7_OMTPj+)tA*`H}^GXktSp=^))i!t|I_uoozw@y`F1ZwJmwn*8{>GEgu^XG-d-Sa5 z>|W}=t5*!P9@YWPBu9JN#ks3iaFqM8nY-5mwBS0nXKc^Nq8ePAo~H_~SDmnS7{kPB zh()=o#Tp6|&+|w_>0&zEn$nRLSLEH5;Y~-H@HUN>R+oko#K9$IQw`bpW(PsP`5$=8 zKk(KHOc$E)?m_n0cZb4>c;`Rxu5wJ;rhL0d0ZGw3))KoNQZV!l=CFbtkatwU4S`=G zFT{qDs~wm@NfYf{E92H?YQ}G^%<*u@N};sQo%_&(7=CeON(x&re;|eW9ymmOAFpUl zeNQ{uSEjhidb)iU2d(EGU$r2=K$BZ#?gU?|XG~@N%_{4@h&4^0k)Q9`%HD|&ZEnF= z$^H)2`Bzk9abUrY5sl6w(lVmy_L{_rrdttd8AtppT8-@(7X@i0d+l|JtA&3>q-Deb zjvEq}pdc+HTBl1TE>%HV(OPZK+>yv!{CkI-F0A&U*cI38g~2WPE-Drhpf!J(RnxdO ze0yw8x8XanJIOnNH?W5&CV{VEBT58&F6SF!w|V-on`w@iw}*Bo@QpRk(YyK4nw}@{ z?VQB@M2R7O{d@3th}yU1d#Qq>DCe7n?m}T({;CzboSb^`F0`!!KaxE_-W~Y>c0V=i z$Op0eXn?rcPqR9r{B5*T%-caF9r@}S2Bt%trf3fDM$SomU8ij*Uz9le@V6g-2ZZD# z{w&Kbm5Z;}iLa%4*nkQa#kdjQi4U}nK?$N_ANC~FjXg?xI`OWmMn3es>LvtYw6n8< z%%PG=VXivSM%*2{K5QV`O$Ux3fAc6es@IvE{&O7nV;=;k~PhlFr^5jsh3{1 z|30088{I@tGx+LuVpC!7m>XiRa;3FF_G0~MGLSb!dVw$hJMa7ni`-dH+%~uuI(b_S zP7|Lhnj38$$TzB}ZDPA5p5zeyF_3S|1`Dx+cn6M>(s)G0I)c6BU(SG$X|VmL!4h5tmv9H~3yKJA06gE` z^^WxHN2D7wP?l`5Z%WU3-bJimxdjue3VIW7%d&;ECX@FR;>>(+mOUmW^jJs*C3)sY zchk_v5hWVBoykYDcZ6yd-ijsf<-8q*WbqiMt+46eX+W^)w{a1_FKLjV{FKP>YuwO} zc6STb5zpyuX!_p^u(0>pCa&Z;iXTTmV3^?_0}pbM^1y?wJn&FaX8FK_ErpKeui@kK z$3@W6OT43Gq*o4=jP$DJQQ|l2t!f$t$ID1}>igP9D}JX=iS{)N6(yFB<208pTNzM@ z#lvk%rDOP~`QveI8D{fHv-FDP6X3;*qZ@{Q+|nCYXB{m|z3WQL$MFLpYuNF;UVJ*@ zV2HRij^~TWPrO?DOUjUfT$rB5OyD7n|8t4gC-Adq)e8AR+f(*L95e-eeNLn%z#xIlPB$#%KugW=AQ+X#b{Rh(8 zZ>z#Jwc`DC+f-FY$Fuo)G#FT(q`~J__8O=;DfZHu4!*w$KJ!4(u}-Md84+nyit2RgV&dT z=}t5GIw~|bu`~G=)&9fBjzUC5Rfi8V3Dr$aYiIIqR>4uQX^eDn7cR`?m#A2QGUh;f zY^RxXcwaA3ps66xSp13D4Z=)(aB_1NB%bH~9KN~LcF1_W>ax4gVlJPqVh_^B`Fu^3 zRXm>$srH`>`KSB%cJf@n`~IVeEH4woZ=HfU+U@V5(V%ojs6o#=cvcloF5sK6)xHKJ z|8g)ZC`}YNY5k47G$470d>8WdRN{MHr+1}BBRcCSb0OctT2=)@$nmL*D9L|ah_?BY zWUfYmi}{#MvDoa}ioo_8S_v1TW|g(GtD~WbX4Ne1Ns6K-k;Y zq@vn2JsoV2_>aQB8uiXc^Z#E?A*{^jd$DMHR7r||;i`i&l$ zRsB)?y4aZHeD9E>dBwd>UTWRNGh*I1tqm)lZh9nS&uJIa>bC8d9dA$FbTY#6@#O~- zZ*SuhcYd*ZWCJ_X`nF$ouN{~F;#rfP_p^g{eLQrmqra`@$=eUR!_EB{uQ=RlrQlkp zb>lAY{jE=AsYYH~an;@UnA>xkJ#isOF9{O;<3Iw{W!fx zorRB{2b8DXTXf#sIA+H$8~#LcYJY_`T)Yl^OGX`sH%=(Wkm+tx`JM{=Cpd)j_ve$8BGf*0f>B>;alv z0S(r_@!{4@|8CamnlJmzs5xb2wGW1&3w>hm9*P{O8q|77`!5!q-G8u$XWtPv=XUoV zP=3M>M^YwU^v|exLNV{%j;`R6=alEy`=-q$+wbSNifNw~_eaFV{BSune8uo3atfg-;|6>)+r-7BK zp7p~TG^`j`@s-9^?gV2l3B_H^jiKUtcMyO3&aFTyzRs&PC$#Xe(#q!I*l(+=ISyur z_LSat2+Zv_u)`jh6WTfuZ=S8UvBFFf2Zk}zo_Y85#EaRppd}`|kS-eL=G`kZ)Z9o6 zOs%7}Hz0o(!6rG+AO$JV)PV3ET$Ku6V+bSmQ81^5Ymt`xGkT*OaV)|Y4s6xE^L<0~ z9Q4Cc-n3im5FmxZ;CA?+M@D(2yg_A)*lHqQn6g@}(FMT95}3avD}Zf5Z1;J=Tw)O1 z)DTOAH&Fe~Nr{pT@Qcn#HMrf#I7}tTfZK?)>q9WFWd>?74yKeST_8!u-VPF>=>y$= zX!U%P&X*ewi7|undf;wKujZ;@sxnPE>f2>8=oE%^!lrWaAho}FEN>Z^Ix@{daYZR@ zXwz-JK-G(Zq^s`%C1=l_>K@dh`GIQGV5PIOY6&Y@uGj}ucn8{KL#(0^53^Sel{xD? zR6oMp1uK}U7N#Ko&Ib%#1{sd0FV09{Rsh4e$cPH^N(GC4fufOTB3^IhZi86&BrKsa z!LCxa6n{f!Qza}ILW6ryB~`28sWa;v7utQFFJ_lf?gKQr%Y>s3`0uRPl{EDUzf9~2 zzvTU??^kv<>`EcwDStxEEyqJyE`aw&&rPWFn*W2vVTL#SJQcfK*!z~>&uYboXm4w_ z&%yA*vkoEHZ{>S_42nJAX6mf|*A}DO=V>v@KB~E^+fFwfbNaByaJ!^O-fJ@(j(B_K z-pHU*RZP_!l)l*3q8J>$RjQzp{0;>@jibN%c;h zFPAo@YjgvAhQF=Sqjq3uO)K5zx2+nS&FXsM=8?tsC#-w=Wbux+ck;I`HQeuae*W`C zy$h-P(z{O7hBLLXnK|sloF)!~R}uU3{4AEE(wh?kgiwvCJEsUH+I8=ur*PEHG>^5G zrBgKJ%?a>uuOE&v;0pN^!JNrDnclk{#cG&pfrp1Q9aPTOJinLR1s3B?QG5%5&B0EVh?xm{vlL?4N9*`9tFI)*gy3GuZpLgjZ36wUFbuE-DV;;81TLP#{FwLRwQX?H1v z9Vfo{nw0cif4wa}mP<9ETGgfw0dc+*`YKYbSy>meAwns%iJh-@DRx)|<*Pvi<-F8E zI2L-V*_o6#wu6B}|Ei_<0qPDAPHxCuDER0aI ziz&U%c^rp}(mcWNv{S5nSGsW~wdzSM?Jho7U1J-E0kwE!;A~RHlKA}lG1a*}@#5%L z+)zB0(7r>|9NU6nLh0s74Cm^KBGj4|NN;aR^A4TGxTm)#$F`D(99pzum?ZRlvJI*c z3N;SYG-7kI@d_|n#;r%Xkdj?@qEi?9d!S6(z#l4*o`dA#0XtA!ZngonBH1g>l|Cle zxzM>~Qv;>3JMK&Da8TNpesDD@6y}ZsLfeRMY)`L51J@I9sLaj)TulCxabIs+xN$FE?{W(@HSf(~X8UVq?t=+T81#W95 zPt}nGdGKQqj_&$7gu8Iv&Ge2_wPNUISF;C|#=Cf^Ze!#k`jiKY0gFewJfz_YI9>6V zB0N+<5Z~f(LAEklaR!SfAx(=86k}kbeVj8}lz$of*{P+$54ID9A_+57jthkUQ}l?M zxAnjmDULCyFc&}B1!E4saunBfvInc7Jh5q*t&xT?$YoUbV?+ZxZIQp#>>M%u{Cx`Y2G3$d;fRu}&n1=y6Uu*8qITUv?6L2RM= zRJMf@&_Yd7Rpu%_!^Cu-%A7xUrfEcFj_(*~8fu^#(mYSb78S&f*$?dkk_qS#kjQD7 zuZ3%YCKr|+DU=17HrcU@g{5JpaEP#5@6Um_#65@#dOH#cIUAh{Co6mPELb6WwAPe?QS}3 zSKj=UCYb)?t<5w%olI$6aH z9c5NsR2besRzZEKWLBtwat52!>?~sEr1~a&HWgGjH`sJSl>L%?n$JjMqN2KBdhaeQT4Mds)7|!m8*!V@3EAZ<3tZCIN%RWRTNbxBvDmG5mjAeQMF1IRb^^< zJTyv?RWl)@mZpoMOByx}lVy}DTLYV_$(=o)KYWLGymzI=5n-5YBl&Ic?OvHLpkgGl zGKKv25JnKpohv=;IC+$5IGaahqfB+#`J^9hqJPz+lRu9nh<49g{{G?O)d##%Xm{m&Hu(~P2vPg7l$5y z7`_X4sBt~*cj)3ZWVPn%WK-4uqt>LGQ%CX{BQi6Gmup!6zgKH)XPHJ=&BZVPKmF`Y zDmXhYR#-9H)Jx4?7XF-X@?sCdKH^Oy84&ax~EJJrcRUE805Kj~_FjW9ajw3{tgRleGP%aeL9H5FCJu(cnZ zJ*tLBM}~b8Vs^}FbkvW*8t4x%fB+vdEi(nG(HdWn#n|o#!D`iLTUmMW%Q>UgjDr&B ztd+c;DQWB$HP;BX#&P7dcLI7}&U&?GDbjQ7Xtz)E0M%(b*;lO?=ErMxwBT#U0M%RM z)o}=rtZ(n=d6VBUVW^*-Bi9`wY!LZ(?({j;pEfH@=#KTG(3Q>}s=bV?n!LqU>_)Z2 z#52)#YYnzYvsgqIyRprwP~4laaH-hIdZ?lzubp*OixD_4Jn^0`CGjFDx-PiEpt0qspBs+^{UMAlIBx*s?NU36!QOaFG|>4 zAa-tM(BZXETBZt*)|#rZ>@>l4ov9i7uM(l%XORdsZWdd4Iu8CRyxpn5mwSrOzH$t> z?%2e2pVRxGY`w|T=Jo#KKFylFgR|p2orMa2g1!=q2aO~BX(CDB?+(xHnC_bnR+0GOM>AW{>(Fi43d>f za}0`#rz@3B{V{-xb;U9~lz#6Nj7(#;s5L)9X%P^O>lUUw%;4bS4ST2{QQ7@ljtQU7x-)6336{MdgylO; z&sCUjIA@P3;eXJLVx#5m(`32(R3b|ga_n#omK_-OF}YC`C{*v8AdTFAGD`g?0nr#m zKi3b4TM0*2wzbrOBF76mG?d}2b5`9#S4xyq;j&9An@c11nLNDC<3a1#$YE)ZtM@s0 zd-VNg*LqZ6n1lKB8d|f@{GXEqkt3CZR%s&O)y6uW~E&UC>dUU<6;5@1deaSOE z=`(e_3L8&YD7kP}=F9&q9jBuGd+n^q&&x>zJF}@uC9X%<^p&X-tC}ngIk=JT8&f{p zQ`q#4sf~v1E|e9S^#49}vd!m_2M@lV*ZW<@*%^|Wpi2Z84np%|9_M^Vj=BkDM=S@*o<$A&2 zwud~0l48@uPZoShF=!AKAsg@|D~63E7JA})_om#wonoladZn7o#}fi=$HEdss5d&P z(bv{Mb*qauKLu_~7fk`y{U9&KxhOrCDM&1Espz@vq`Zr!VAhNBW(D~sEJuTx`Z+o+ z2QQiWvutye zD}HjN$IJv%V&;}gMcMouZE5}`lN(L=+2qJh6z2SFI<8`$3LUSRIL$dOaH+L!{Ou<3-%mMEH!z?eTM@? zC&`nb#9w(j8l%1cOfUaWX+$=Z^Mxy=rc3{B9&GtpKBG|Xal7gBTLrutIpp_+Hmi^C zd1n0iQLet`s_(YVTlRd|tO=10WnHTGYW~f@44=PtCFBH4ACM|mBaeL@ziaX5}?SHHyAlbBrx z4S8LPMe$TTH(DO#imFeg2hh?kII@`2gfq;maHVbjfP|L99-A=t@{x(tL?AF`gfcT_ zAQEP}Iq9ImdI4ZTIe!$1vy}VTWYF9Pd>@hj@s2@_(J^Pra|qW{?EG|2gJc`{)rv8- zxlTy*A^#^PgY^W!1>nVi;&ja+JdpUIY0}=W6qa+wbWmUN*M%FnCV)v4rYbgYBLK%y z`cspETMD>YX1@dcQQo%qSLk2~mKFWU>M~6mS$dIe}daxL#suqY~2S}{u3&45NRB&c)D~Rwllod?7%U~+@q&+=*`X;Qv z_4NK6LR5HPW=i`!eI+k3ER~M^KIl;GO~d**`?P=YTGQ*=AgF&z->JURcbcN6?Ra^ zFm?H~f7pS)&8jNwj|Uyhn{8N&u*Kc{=-<_}cvQDajet^m!z$i=s}0(?;EGYVa7RHg zfA@61pJpBB3ietWp1sqnY?96V*2k=t)w6jUb)vat)_m$Y>EwIYmIp6BdUCqe%-50U zU2@_lUGDSS%D3J7tB}}{{^|1lMdxN=!R#EJPK6TBn)t?%uFM~YX8iYp54V0wQ*-I@HPdDpbgZ!Nt z8mM~3QRx1))x{=3t$Bp@DhV&Cp`Tuyp57C0?zK4U48PiRb52`t)lLW5oO2xRVm~-g zj(u_f_ZS!!ko&s~ngB;=f*A0^)L(8bM zQc)vRiEkR1Ri8s2>@A5g>nFK;Yo%!S4@ilb(){resJbulNdCL%h~g6qWX)98%;GOt zH#V=a{#PSM%xC#pY+TMyaCuM~QiDFkn`3RFoBZAP%nR#@a-~LPl>CjZH#Z+I*SV;` zW1lBoX=%RmA1bzcctk`)IS7Sl!{{hg>}4aVxYIf4GY1j_*)j@iZ4TkmT*b**>8;HM zjk`N4Eo>EHIEK<)*VLTZTl7*fiOz~TR~Rm@BmKgM%39@10VGnYK_BszXX}egOmWMh zVjZNL!&d2S5h;+F3JKofzv{*=tRlg67^I#7>1RD&2Gv28GQzpWguBI!p2 z8<^b|cAXCL{qMdUtma%WfK-QyQmVj%Xa-ckIHad0OP)sgrNL_WAwI7Q_aw=iXmw|V z3wmAJSDcGS072fvs%^!*zsNa)eh9h)^6fL8Bj9QZe z;!-ckRn!i~2&Qi;JPUfGkCtHPYm3JkM4^Z-s!aa?tHzNzbqXt zsRN`FQ1L}rr6*>{R%s~$#L^6Cj00ucQr}@|96L~U4SF+BluqoD8_>iscU%=PNaiD< zjKs_Qf+=olTD&g9P4Z&mh9hUprz5z0q_HfQ52ap&c|gBwtYOml+05HyAOL zDKGzqfolZVmh!~?2LriB7tc9R=QZ7p24gr2EA0hc{-9q|>vJVvipJIq}vMBAGO8b__-UFDV@zLF}K~ni@6o6YKE!l zqGb*)yLlVti4I>yVlqYa)~zvn45F#X*qksDYK2xe5lz6;TNdyaPu$N+#PKWLTTwnb9e19R2Z?+ z468wLtqfQk&}gKYa&km+VUzl^<|7*5Amm5vrPc~P>F0Ce;P5)NHsmW3a z55(+%|9XOIjsh0k~WZOIBoY7b#sB3?X+TN;4`CQ|{=#{*}Ez`P!YgfSytl)-LaAKTm`Pgwl*&@_3Sd&d5u`-x);@>McF+#PxpBg%< ze6Wpzw2W&7=UKt^uiyq%a9>n#(<-=y;*2o4!2AmG*9z`N1^1|edse~i#VCz@>_G)- znR69fu~21}S;wk|V{l=C*+Yn&ZEnG;js#N4j&*@T!5p)r8mmCyW^xnZH!AgM|~z%#E$sp~A7FQ^IUN#9wLz3mcC>mEKH6b)bd&knzkN+dHcMaAPn*pf<=S4G zG_{uKgdd>g)k;g= zs{$9-47L4W`sMOZ3-7Ie(D%^~Rl4*}p2Y$KmA5LgzMJ!jAQR zZk1hs@uQc4_Mz4G%sn$Ms@0S$A4la>+dtI0Yna30S2IGZ+x&H<^^CpS-`MtCdvSfx zt3#cR%}>sT-z}x?`Tlxv}4Svt{WQP*^@Z<-m6L4U%GlbyKFf7?bKsJmHlYx zte1@&6!yc+PzvimKZ}mt92F>V2hEpQPVCyW#q3#Uz3{hS?(U$NGHAZJgQqb2JF}yv zqT6TMcEr;&Dm>!TBsfm$^@TyhZ$;0$YCUXsH-(o8s?HpGe$K4dUIKg^50$++l`U`K zt3Bf0KxkaoQHz21{jbFqGp2(k)U{DG3Sws;yNiv%UFP5EWoj26r^RA0>PdMZl!{> zO!huNKZz6+gyq(N{3WhLL0aZMP=LfeR*;ra!6aaiIE{j|OiiFbiL0X^EfWhABylYi zq-DAQRY&`ZtLZL7JcYqP!P1Vy6{KY*0ioT&eqSg^%Paw^DRIjbq-C}N)snbf3eqx1 zfI=j$NI_cW77*+rDDN&%wg|Cs93aM{Kz>k=mho*2TcX4TC`ijh1J#qbrV7$BU4cR+ zu7`rO%xIu6i5ssVEwcbftp0Y)Vg(^Sd^TXXMD9?KmiYllY~k#f9~Fd}4ul~oa1Ruu zW!?k9eglqaA|oy141`YsoV$XwOg$h}DsbTn(lVWZ@E)0LJ0?YeT4pE^ZXY|2P!LuK z0>XK~%~6n+SqX&y!4)V-%NziL@B{aig0#%{K+PoXf`YWnO`uqb`&~r%{>0i37$=eM z6a=*ir9pI}Ku-l}nI=FGpWtE@q-6#GwUD^M3eqxjfLco20tIOqQH<&s8_}-(k6*Ti zVMWRCFIoRfa&UQ&dH=JQAWU=2+#*K%39X-LP+fu&e{+Hx8&R+*W#toJ(PlIJ_ zm~}(Q@A_8;ao*=@*q^=}A&-EIMmSX~ULNg8;n7Udcms4^?u7vScZq#&r)+ksD;WZRhLE)p+HRQ7I) zL2X9kK0)5rAIkTA zjKmuy!+jKF?I@*?E=cqpC6_)4cwTwNb|enT8LBIz23i@w(AyG)Bv%(3kl? zB5Fbotgd4~FI8yGK_rfkmJ2ThE>ki%hcTkP(|;#|{)*Lvw)YvQqhkG4Pr5}YDe3%4 zPJ>+*j*-jfb|Z0E-d{Y6<`<;jj-k*KE(Y~j@%uNG7iArfbf>Y(aXb=m_}W!$z?62@ z|7tLI5X^CzDV3S`U~Fj5u438LTb;rTSLNBbT-|Z_Hl!?R{w}VvVo%z!IMc`;6TFvXu4ma)p)f!5u?kCnNQI_d$kYhmFUuUm zA+n#uq^`+aj<`L4uF34lI*9MMJWAA-aN6xR#a+l+o0+Hf?J26M(l2LFe`DH^5ko9# z5&aOb+Y#Zt7Es{EObgpoShg`Ui)9xGj+-+t+5f8vKwQwQawY)wWU5bgqX|wmZ;f7O zbt8Y|uu}z{9zI_9Hu{UZVe6XC&U`ecQSE~lf2}t`msj{^?3pWJ>#uL@xZ~Hp57r+3 zd%OLM(A+n_ZSS4C(~5@Wy&4nU!C`N{|BRDmwT>M>-?4Pzxv-zdMJF~-KmON*Ti3le zj(w53wJdpT4Xd7gGD~OtIr>oSZ+G5=k1c9*e|h-yi?RC+U)4Ele&gbCsPl`)1FoD_ z>ucAZxbybcTfV<%`{uY^{QPl)#vZ?sb?M{Fzq9#RF1_7P?uR>eeSD*)%4%`9UlRs& z`Ac|rAk#)=bLPF%jg=4A`$!|T>}Db7Q0DJ0<&FoF&t>M?R%kmVr-D5_BO)4nQg)g! z-@!BPn|4^7kCHn(#%M$}1(Qk^wABWn`NdG=F!U{n@|Ipwn&~q-^!i+-Pzh2)zrhXe zP>63Pdb^2}tvDVw;qxH3{f= zc-N=0E`6mS5#8!TON*4;?X)*g{>O$G$BL5t>7>;KG|^DPnn*DsY%e3fCsfUP6qn+t zmqI}_hhpA8j^-Uh)H-qa4z)keZb&eBnfl8^eb!FR(I;xIxQsPK0`rmcry96)z${uj zx2=I&1h|HZmViA1cwS~70scv*B~#^K4%Tih&>3o>6x0}r*2EGH$p9QnMco|@909JQ zJ!0`ifF&~f4DcP9CPD8MFVVUxbovG@<$@^XqFxE>Fa-2Oa_WI{Rse3IJ=xg??j+!4 znSBZPk#0UcWl&X90!~D?5`%|V1e~z$k90O7DMSa>8rsia)nl?JXQU^1nzn5vh; zZ;won!f#VSs-s%jG*qqB=~$0fgEjaJgrOWHp&9@fTZ z@e-H&-^SSmPb|e^TgbnI@X&w)i2 ztVutIwy>5Gc8)M!W!cNIi30MMvg|C84yLEJmiz21;i}fcsoA#Tu|8CA)y9U}POx~( zrwwql;I!Y_S{&%Zy-cj*rn4MkrweK)i<=eOrs5E5im8uVOPg+~LIqDU9fUMj%kh7A znu}CdwsjPp=CT`g-O`u)c1-)9{C?^A;mpAO^wRN8BxRu*3d$!qj zcjlDu-n3tm$CgY>xTF7~_s^-Rx)pPS=iZvQbI*&dD{rpvJ#EeSIUZ3PiZ8{in__NM zvU!nx?DZ(2Ud`{OwW@U>`1lb0G44Y9h2K}b)^`7v#FN?Y9BqA%-FF^m8*E=^+=(cs z?3Th`dP^*8{WHy;G4suKEKkxSOLU5p{E&Y3w{);Cw@Ck1^RlOEpN5?Lv+B~$0ai9N z{<4j?u)D6s{K-b0KD1L+kI*Q2ex>M`FKqt|xFv;7+8Bm_?_D?Nq@R9N;#^TG+HM9jVtyWch%7~@>gb@7tA=hC`3 zYz+$QiWyc(Si*(7foAYm%8RrZxDZ$Y;wbmoBv=NHqF>z=>1aQx>rBPB;69Uuh4lgp zs&nuC&{9%ZLyG}5;^v`S!CWdVjf2TQ%3`pd2Dmyv=_th?H^`yXtnY$;tZ`(SIIe3KH}I2X?fM{_NbonPu?fD$)|k~a?8P;65oI4ZiP(5<2o2f#%xPN z;ZSqS0FJ#xC|pk$PRy_tnkQKPP_a!YI?*y5n~jN<*;aVObaSR9Q0U&?GM-}_370xq zpu0Dwwp}c(RgF;Ze{uICzoA{#g3!eh&9Y5|=Upv%s(;n$!z(SfZq`op>9%FE@zU0% z(cPO~In{V>m9pwTo*4hL)!F_7Cjatth@(?8)8SS7T$j0@dtcwJhSi&mMc;CkgCRTa zmX-%*yKpAlW!!JoE>%0XaGsyWFOL~i&tXN$W`C;H!;)n4y=T2|e@GgeE9uyzzmx4k ze*J=+1h1YJS9Q6ro!G~6_|wEK2pmt(2GI>a%|Z#3Bu>+CEOtddKmy#t|le@4B+7EgHBzg{9mxXodlf#%vYQ zv3Lpa2AMtqc%iN&d8|d}O0HgcF`}|wkNVE76JQ+;+#4CX;1GppvG$YWPnZpF(m6`nZwR$+h|qJ$$$D1`R*;@M}p@ z$0~_pS6kw_;m}hyQCP%}2JKu_UKdE20teYjUl#F;TC>#wv$UL~&bj2Oe9IY<1-*T7 zuG>#|C=VfZj#s792S54RdO@;yLDEEEg^e_LT2FkW=2FqQUrOWGSPYs_yqIPo6xzs7 zZ_8oz@esuM3?+y7lfGJCD|Epj2LmJJX>PkmAhcm(q&TO`y8wE&>&7GL`kNLnF4W}ID+cGgR38B&n~RfIa(ke2$iEcS+!FL?uTfFmJNkT4wJJk$ zL2Jo3n!}NZ!nkJw!a<60cQxiV(CN@8@D1_RK(;dV+fvS2OLa}lw&*7!Jf^s?+FD8u z+!)Mlfqmovu_N@dtid|D5`7Q!OPTfyuFI(tF`7%PJ^Gr>0XtIONE{%_7|w|FL^*2( z;3hdsvTUD3`u9Xds69jC-9Iv`wufriUde2ZL`PaX6wg|+RvVF?+n)TIJu;{P5d*k9 z%en~Zo8`wnLgG&;Q;g4xn8tD5N?b@ywGJ3B?ocuRqcxQ@IF9H=s2Te@d}gsmYqwh5 z$nBD;l`v$3MfaHmT<1;D{^p^1E5jQcFTP<#*omI-FOmLl(>=!H3uNmH-)*&E2F7o6 z;kLz7Si9X4tikFMVuJJotgMCmdo4N@JD&d9Z}G>PZQchgJ+R3-U`b=g3zrXAGBj9s zpnP`+A^otWwiTNVYZrD8rQOFYtFh@=XtA)_!ncK%92@q8ynDS%Ha0@W87M3ml2A(D z_Wh^Q#|atdEGMn8;IdRYcDE+}B=pDROO`T~VG@jR3{yT;S;MrD78CfV!)7QAxGJ69 z>L;9ik}&2c%Q6lt8b~)<>$>H<3ZI>n(A~5gRk7a*NaU*6P$BuQh;xUg>*PV825cOUo3*~4lK{r08tc&p3Xo<%$M z?67oeU3I%_^jq)s&Gy|m@cR1rc3ph6g{^h9eV^I) z`;fm!K6c*waCgdz>51#}8wb`(Z5(%Q@Xj$FjdskL(_nT{)x@Zp&jO-7#>7Whl{^he zJ-BG6apAfBJ7;?}-J9YnyjaoP*7J6Yyiso-q<$4ie?7J=u-P(Z`1nQJcT|^Kkl{)T zQuC>$kxh9EV(fgzQ&{%e;{T}yk@VKksEAKfc)X+*q-ua@J}dd?9D`uoVQ(!VoHzQ% z7b*R%#ZcwBJw%@R03yno$escGO=jN#T2ovev|~x& z2BA;gfb!m>n9hJ{|Hzt%^jtY>8=xR(m6m#QY9yc2P4S?2fYubY5ao#qG8g101}4t^ z8;w&9trE7Jn+kG?L~{E8kCFeP0J#hO8y0FjZJ=U=yoK2*&rbI_$LpGW_+0wok~&%c zeIhDQH><2bwx%$_D(j8fW~?M|ELdIk*lt&0flXFF6+2dVsmc6enK*t|KUt~mR#HYYOob*MWKnJC^>|VJYAJ8>?do#!`FiWqE0(^xUSsQ&o z(Y^9FM-f9)3ZvatqkOga3>g<39TG+kgO9-7^0qhE8|mrz6Ms+=nb?1LSf-0)Kg z(b4M-kSIUxnD+|OGH&o5g1QZ^s)DpkGawAOfs0oV7Qq98paqwzAT2W%2m^88CMrnF zECv$aJRC~BaefhMnQuVCascv}g0##PAY28wUlfF?4M6xG+;atK8Cxj-_#a#q1!3hr zAXG+hwG^afL~{h>GdMAHrikEQIRp?w7Nk)@T4olIpTx~m5L{k?P<65276rjs9|+A6 zxMBrqnL9uRiMy{LE%O>EP~zSyNXyva>VjndN=F&uYW#qzOFITC2p*+CP$qGbXa(U; zfH3X?uCs!)3=f1MNpKbgX_-7A^mo85QP6+(vlB~}e*bq)Zo=jkSr@QU3d(6lH-ks% zRftyc$(`+3*Q`CCW|lwi*Bdd!8Z`JMD*Tv}7~ma+r_e_>bMpso1*%-p=ga-AI*Bm^ zSy)lNy@)_yVuz_NDxrg`Y>SpM;R0Tf*&emA4x%l=$BSZr#MtlmIG#{;`;ZQz{vNDZFKWV#RC~Y8j?=F2KJ0oODi&3I^93afYun!?hS`S0Bnr z#o{8E_IP0pVzXi;cW%7+GAY?{Cq{?Gi)|;{)N@W^<&+M1CT7v5uH+r3T=BTjL2%_c ziE0LklQSYBfL%plgAnUgTAaH8buJdhb}Y`#4fexSVR9O%Tm!cd=_};eC(FP#lI`vB zsAV0<1baI)CdmSC0h1#$t7T>*n7vdYTIq{rrWDL$THCCxtPEh)m9K9Ft486dWr_|{3bS0Px9!(9+@+SpsPU}BbMx3VfOo8P~jbhdo&rzu_?t|l|b z%F_{F4{84UyuFRe(|-rrd^^+2{b70f)$4AL9@sRUP(CK`aok$BExun+*u~N?3Z0at zv-z>``^JAJW%ZR5IAXs_3ltF5@k+%KEYE(J;we0yl2!ea_U5EniD*Zq#wG$yTyB@3kerH?<9T&WtbJ zY;j;-6!7?Mun`Kw$i(%N_z!EMl>HUAP_a0zTUEjO#Im65VLmPVUNU?(0uu)Vj zSilO30``uG%p7chy#s1o8jYf{rl@G*SfYZ)5-V6@j14rlXrgGMMvZ>&KIbs#@1OfU z_kQGiZh5Xg!(Qjz{hVFbUVE*cqQ+Il8u|Y8Q(jWJ+D;)UYF!AIDQ3Mcnn2Ic=HVN6q>$ysp1)Jo=xB~u_A;agG z|BCqM$}UmWop^#`Y^S78e<{EE{OIkQJ5E7T@#={z3Ul1;FDhUqufnWm)$9*Zq5Oiv ztU%*li!GoWTQvS)uN5dRpystEuOS0tG|5=an__Ys;!L4Sv;0&iu*kL}-)4}G%N^bY zQtnvwWV=u<{M73~4|ApM-Ft)E(F-yF7qJBDPPT{Ec&|8$wN@^cJT9J++6?H8Lu9O3 zz6Jwh86r3Gfdp9qjSbldt#IEgQ>q(beR?2>CNR&Am`1XKB^z+5OoPWV0QW#f4Ec>7bQROjRHyaH!Ip`9$^y(W+vXew)588{h3R8uSzTQFO26l1XIN@bd06)iK^1X2B{ za>yb;2?woT;}xV5b)<=!(_kKyA=GS3e@BYkV`C5Qo*3l!2#8%vL0qUbseh0vxTSck zkh9uf)f41!%779!^(>GDuoF!v(00)0T2dlq#frn@de4UOzj7CD*p6`ezlpSuW!lnOm)F<#LN?oLqn6y z6ERA|T>v&-#Mq?(MrpXmpwdO`sZ41&Qw&=ZM9e~_G@Li6OcC=pq2g<&9S!5RW;Isw zrZ@%3+M(u6DPeb3Jv>g^o%PlPkAR&F1%|9+Jl%Pg?PM6UFRQ)+{woh;X_!BPJJG&F zS&pF3AIb`W*I$RSf=zfQwg$GR{=-cy4bexkw(vMIV~FAH(X7RYxn;qLtbf*v>ie%u zX*pBdE_$eQq`vB&1*Uwn=?JobFkxZGx4+PEwTe;N4W^uInEJY6bcH?RtC7 zx{2!X&zz=qzdGmAQ{Bu+=PkM4IE|WSQPR_*VbAA_3hrgNHf~!tWZ80Iy3h30_H)-? zDqnfG{`*RrJ}Z$Xp2^BJtGbc&D&yX+uc&J7u`J%!FyU<08Pn=1HMOj#i(%qruv?9D zYAG&&yM{N9kgkV|OJH;Edn|$PS%8fraV07edIqT29k?7yX#br9t*g_~Ui~EosBBpXELCELlpHLm!mFJZy|o_YN|B1ik{g&OgwxZY zjzQFD_!&EXy|}o3BP&4e23^N&k-bS;WIvG?+5fS)cDs%qq2*V+>v-_DF0@!@y3y_@ z;r9^`SBGx-_Fdc*GoYlXwrlEI>IDib$Uj9z-S4iYotK^4)>_TcoSRvCe|t83;3I+c z!-fz1mH4mU$(V*aWbnC_<-qf{)U+aNF29rxR%AJwx5N^uHGZw=Mn%?WeyO2TW!Bh# zHVokPuk=)xTQ;xtktch6ek!A~&Ns{b2YbK2*>1P)bZhdsljUOeng7Pc_X`ijN$h^5 zdd13JexwcSXlA&6Cu@aKk6yvutUVuhmgY?&KCoJ5Cw7)xtR^F<>OqDFjWO$pjpA{4 zB`r1U7@!%7HBS$79NBB6^_gg^^9j1g8?YDBo8a2TNN=U$krky{9}QFo<6Zs%Ws%cb z`Kdy|!|p<*wh&V&I*onjAUu!PVh?KXMH6ttQ*{Uo?R!)>zl(e~!w=#heI2R$CMQ{N z>;ff}U&XbyKNdSE!GnH58O>mTVCTp#D&AR?H&q2=h1`UqM|Sa7^pv6gfQD0H#zl!g zHj6Ue{OGSLz}J0B(GRn{{!MYy?ZFxss#g^rL*H6-bfJ9b?|lAWdu+UAM;luFYgS#w zMr?$!fu&`xQ0#Y%Spi-y^;*SaX)g?2OQDaz^!ik?7pbU{x5g1B($;tZ6+FsvSKO?9 zCuIu94N;NS8lF-gukJ{xCv9qF@Ylk+qi<~{`Pv#YdGUKz9TOV}kyhQl>tks9Bx@TJ z9)0jMtAk>3Q>v`r&VeSlv{6&Zpm`eVRh30*D+~!%kSpzQG=NgyyTR&BR68xd*wFA< z)-xX5THinLArLpMGvaptBP-Z+F^1(H{18ejb8@ETe`Fo;wnQ4zzg#w6_nw$GK67~b z#Bo@Jw6(2{`+iT1n)3h5@>d|c%Fn%nS*p=<+Iy1Msc2K0?(S|$JDWC8(jNo2Y01r{ zqYsUAE7lr%zQ{TWIahLjmE~$INZI<~YD4_1tZ{sG1#C6$Vv6w#+J_muUT3xZXMqLx zS`SYNZ%REnPR(u`_x^p^q5+?5DLOT_+m`H4xAGzFJAdPp@=J>K>o0nnWxV=(e9_u* z(Tj45T|W1--`q{t!~cgb*V;}RpMB-KL9&l>Ev<^hPCVXDgvdL z=)5)TaHzK%*!phb$)&jh!`MVTPofD#=E+ZFO2d_clFliQ$&`k> z0t&-A(z_;88tx$|a5jMbCR0%T0m_bpV3NW1>uH zxC~H;jEGq>^`EC-@D%?^hhMbTti6k2lBaH@hF?QBf^@JS{NWi_K(Nl?G zsNa8_*s2CVv1li#gH!=t`7`;Ju$Gr3cFheuW(7(L42s|nAuL-xgbAPG zdWX6a64hUWBg2lya;G0qsvlyo$q6B!`pESdjtm#qlk8@TG5b)Z&u0G>qjA2K1nx`& z%3FNP+dLDEZ&U*&zj(Ml%H!7v_ZGvc!X8R%@8E3>YKChg%}Lt;Deh>FO;dy<*9g%Y z&W6fi%33_aQ@MjP@`m_c5cU=i>6*6^ZJhRN{T>`y+kpq}B2NUXi1MePsfhY{>`G-Rr2T|<=gN({&CXfFzB zLdh8zU9ChZ%qPt69!S5=(yf__X?Uv&2u;4H$VTuB>WVMZLsCe=lFW|>e+*h~8=;1Y z3HUI*=qaQ#DV}`|hd%6*3jae3?@xBxE7e=^*tH*(ob4=$644|kGg@$Qgi6vCt4+lE zkqVDDVP|=H7e~lf?_&UWXD}q(|8AyI;xU)f=KtWYS_|?E$%m<{aP05b>nqWGjF5dXQhIh%r^CL0^;Lzd))|rB8tyrIsjCt5jUIO{F4L0t|k9 z5~HLhmiYnd44~8GfUCuTs@;GNQ)C1Nq#LOe6@EDoSMtRqp2FvCs`R$p(x7{Tss^GA zT|p+MiJ7T%pqEJSS0MMMNk#h+^gRhy4#r44Sb`gZZcBM7NF*8L$ib2h-8qA6bm-0< zOeMJo{Z(LuJRdBbC9mTCrLAl-RRn9C=~OFSJM&vS8`8~ehmcci-AoKPFyZAhcBqmL zwbps?DHOR+7fg@r@_nh}Z~L^gV4p7BE(HV9*pWC*NXeW8p%oT6yNzxhRs1TbNYz%? zgx@F``oj*m@YovJ+VDSYe6ypq~<(FG##&@Q?ZINx{CB>`k%4K3qz0~Lyv9+cNh=RjX~)0M$zdUstAOS`)m zT-}2OHz4?Fh2319%SEf<=D|e^{@pd&a|$+{*gQ?%YVDlT!br>Aj^t!YA+?Pk2nFdDQsuRDa?e+iaZP2&|B4`{UdcD zNf){<{GrqAA0~CP*~8B&nG_qnpF4Gg1kO&r^_}2%D6eif`*n?DvKq42*nTWf#N#gTFtb3zv!I}Wh{@KdUJm(`m z+lgVBKVv$xu%nSUTcI*BN4ER(6KS33HxhnWdf}e~I8b(Msm%V-z_s<=Y1(L=9a)~& zSyH<7Ne9|7S{Lj$5U;HVLZra$3pW*RKe)Z%vT8w)qjYjNCwf0x*VAPH$yj1i3Vn_)5YMUch%wJC({a@ZWf;0^|}%K zK*LPEZVzLJx16FY0(xzVE(|fPrs}RM%=$_ny$4lI*Es}O9PhL^hhKOy@3{Pd!%xbe z_h|S}HhWC*fiF?#99?f1os2MJ+N+=d>5Cj)oN5HupTkQi4|Q(E_77NtL;als??L^K zUs0-}pYbb(ig8S+Yp%}SEBwEFFt%}NDF$)iC@RxXmntHC%_w(lkeUwW;#1|1)>-no zRN8BUeaj*ED6A!cX~sBe+$gx%NOEK0vV6wDWr;zXZ7vo(+$6Xo;b!raQ8nL*qVw<( z8FLbA8GM7ihIx6qccu!c<|@B^#EUl1*EM0Py)ayefZ^SI-S~eNnPEzgYqe(;jojpr zW1D(I)732xXVhPzv`>C!V*6|V6BQ}h>pge1@PBd5cX^}boiFxwT+}1O%6(2#RoC$R zgKghDaygbWB0hbLe^P0yY3BVBOJ+Sto*y#%>gc)|Go3@ z{l7kWeR1L9OL3t|UCP=H30?eigkNW?Nq;A=&QKM6{ng4r3x8ViBw*mruN61CU(?R} z!MaYHf@4dZ@{iU#;^`D{;NXDI-S%hCi+ylp+TLBO->Ugt!|UzO>$CZ<-eu2cy*Hf~ zVruW!*=79uursszf9%2@(1JJPGdE46rp+5ih`U(nPgt`iq2b}7 z%_3l(Cj%;VL&GIsrmvtGcN9k^7UAsnSaidM9+ZAzfj{M5gc6Lol(()F;teN*lxjVC zgM*!PieF(0bvgYp?#%!{jWL4bk2Ha86?DP-qR^&zMNWm?`zG8YhE_jK5XP4z^om?p zihrRMZF~Igid~3@xGPpYMqT$%`pj>T7fbqq7Zzi_V$zyIL}fC$h5qz*?+t9RuWwPR zP3k~sIEbPe_7csuY{4e^buf82w}OPhZ0sr9W93%AKIN|LDc=X#NX1(Y2dTfornsa& zX}#z8DQ?!Mx8HAvG9sqXt@q+vS}NIc*oBU?oe$wCZGt`TC*56cjGc2^>FzSyzhRs! z-D|)>Qf~`;G8?oTA_?pw-d=<{NtJ!>`>XDOd?rOmwS}}o`JmlF)c5^NNAmWbW3Py9 zSd%X{!pv8l+7JT;?8e;M;4cAd0esO=GJ^ZmGgJws|CQgsT$~49#@!kcW5*t>Ej%Ts zrR4OJoJo>XC^|GTDHk8_gvO4<hlNIdx^NCS)Otyf?a~WMnQ7Q*33qfjULaD@lnV%?1@g$TAeqIo$fGSERu-bVI zD)X-}#mHx`ZU|Viv-axtOZ$lFa1QO$c>=t?PdD>p5i~_l$&?4bjZ*Ej&U}?w|mnaEiMj>q7-F?Cd0ey3NE=UMHr{Pet=9hsO+amzzO~&%)YdHdzq1KB?^!F`}Qe7q1HMdK3eN5oCIHrp=QE z+n~~7$oa?*co`2dHYR0u9su}PsjafTG(MO!k{!UVa>ThYjHhZ} zAixn!PpdE=?YH+bKY|q4ok0~w^htnj2Kf;fzwWuEp-yboM0edt_0- zE_Smkgdx5X5X#hDRQZB$9YE(c;M9`cMNoem07YYUL~~k{n}I4M;nev1U@94tib?V% zN^t=!+dYlMd+wU?nB%P*qnJ%7v^7K#iV(oct|{bjBTzp4Ye>FN`@7RG(dBkjc3tD7 zQnW%0ie8)s7HsJYFPm7j4T&}{~-luTB{-L z%MxP2Oy*jN`b%sb7(o;Rn%_RIW5Ekm|cnf0?jO|T1xy|A_tJL^-t%zs7w zS~A&&K+VwNx4P~;-_LOUZ_F*yIJLm6J3g(VkQhhP4RXD*PqEa^I??AB%bF|X#HSMI<|hcJ@#2laN2V|cCA|e z??*nmiHldqCT*P@)T>RauOzn94XPMw6JMKQ?tk`#g9+osp3BZ=wUU7Lt)Jjpo0m}8 z)WxSZ@&9K_U`Kl|8(*99vsu4YErk78?{KI)gpFNQ_%W^#lidCb>+`*!8TSY(Y-I{2 zjEJAyB4&lowX^)I2eG9EO2ZDdezcl@Ms8O67`_jkzpHmKWLfE1UwboYvtGusw zp@lYjH$I(;4}a@Rxn9|3*oUs#>3dl} zamW2J{3I8bw4>{jPsnG@4WHTTT@?JEw8v3jg1~wweM`m5Ao5+;$A{wG{FPMEZMo8L z%}KwO$C7cfi@p~^P54uH+KKZQo?LVLcLqBnw7_pd1HNOr@mX$)#Xo3X12fA=D>(hSD&MtK~OsD8mpJ!2SdYr%EuWe9(K=}<}Ic!Hx3OV5{)w!eiqmeW(&9uq_JcO>LF5U7wvd~9!-qFhyj7$&GzzI?Vn-%mu;Oli-U z7-^+2KZdl|tpcGb6M>~wfg&G%Y^4A-!_}C{niycVdnHI-T?)#a63eR@Z z&U7UQ^}YXwxCWK?(%aJr-Oud}=3Vu%Jm13*-%anyD|%x;fmvU%9mnGKIH^+b;#L#d zxeC~2sSUE=<_qjp*$y;LwlcXE%Lld-eFc{taCMcfNq!<*le}+2(U1L{u{O%@p~r<; zEF~0=A+N@p-;Qj=cuUKKiBR{2jx(L3)_JyKjg|(|hy$T`J2&FY#KgH>KRcdOyCK zwAMH<80!i!$KVTbu_5}E@R&bTKgX4I2}|>IrU%oS>u-zUlw&>SUJw-rcmyNegkkzw zCj74~raLuz__Yt&j?(XgMbOiu^!1Sc%Tan8-kJ3#lNo2#F(yijShd1ZrL@AKOE>Zy zqi=|?UB|GnB#hDDMK&24Zmhnc)5mKUsVhDVBHM3+>)Wwz%nHNG$T9$4dG|oH zA!3|-5gJJvB$CkAPF6 z(~q?JC|yHSz5Yi9|APOr2%v&s z@L-o(OYGf(R4b*)7Hf{e%tzOuSxfF~sqKYkE{Y4*6n|b5sJJ7!Ca)2sm>*ro#MVX% zYZ3@ToHQeB#KaY`HXkI}2fnr?m{P~tNC{=zP=Tp+ph8f*{rF4@TM!zg zo`M64xwb}?bDOAqK`8VPuhxSDzk7pMmsRMj|H|!*WQq)dNXyBSJK~@qG}6yI_{TCEbP z-9$;P*X#ZLZ()r6r%ml;d?PH@vC+M1n6X}eS4p#nw058=oAtl`Bahee-x=`!G+)0& zIKRY=4sOwx`83|(-FdcR>Gi>9^Q)E(EE(VXbouzkd(--6emVPT?6FZcMp^69Lp}Tr zvD@^}-v{gJPkcP7%p%FfP`N|jre=^5cUj?$o74!#wh+fC>(1EF$l71N(FaIe+bh`S zEVLK*T2|{Yh^@n>iv3el-k&;m^));;cN8~W8g~B8RK1jgPYXt_1`;NmFZNigA;$F@ z&!1s}eeVoq>2CD9_gpW{ScG4M-SjJWk*}+{gz#;#*RsPltNSc3%}Mw##|A4Is$pOj z#M}d~b|p4g-;nPJZ*R>>1P`r)=z)^)v5K*{Z#)a1F&CSxD;vP&ov=*_+ive)So(_> zsl6etVF;5LzENjzk0qxu1X9B#9&r)7YW+SOo6BZY@{X~gnX$1D zC?4iBObTPAdB6bIohZWCy71RkYTn0ro%@d6d+s^iC7DHWHcP>P>p zYxa7#V@3NM>Jqeu?j5E59>!M)jqsR3YCFEhAJqTEM;Ss6=@;>4uffaj)GfLl^dPON zOZN}!J^p{*_c75AEnnbT^h3Xm^*;3)G4$aGr|)p$kT2~7AIdwyD0wG1PudC6x>CK_ zpr6nY*f!7tzpFCs4*EIX$yHUYU(Ejjtl9rVc6d3pVDJu^m_1=qdh(c|!;?qi4|H_Y zcH<9@b8V(_am$x_TyJA@9c}i*E#LIx`ns0v9-YseWyUix!ne)+ZOq^6>jx!6X?$1v~CWh(AnKuQ`ub`FoSRC zVgKc-A@sIB#RO_(3-0RM!jb|Q)=@m<^R@T&WjvIt-PboXPxq8Kwg1en-g3{=&Oi_J zk9qzwi{@fj^Q+#M_j-(2zNpxLZv6g(dEJ`&-@RgK=BWMbEKsUHiL!J2LO~ zMBkGCiRL}g2co(=p6GcVFQfRWzK7;#B+ROOHHdOg-Swe{nr>z)HVj-fG_TT+RKSWH zQi?$$A_xA>bA15MUm%}9^*vBYaJ~oq^A^q=qtO3&v-oh8%9Na&waPm1X?FWpAr$yp zAC>s^j~g0)@pt;})FBG@eZMDu^(3Ub!-QvFPr51se?`FB2vGyL4896tp?tys=U8?e4_L<)4k*VR(YrPq7 zmjB>p-!|>P`jGcL{H@-_XbYyGyqk;R8#CdLnpKgnt+%sl(O4_p));j0ed~Q+JM_qQ~9*)cH8|z15O(JFO6f zn%ZIMu(ma6$EM2m&04g@X|JTRoC=so)|qHF@6uCi!B2go6Rd&7Nj6kVps-w>*A+a5 zZWLuB_^C3wF;iicFPdT7I5`8mDM*#pp^Uy(-Wqlo6M@G+dr;IkNNV}w*)tx?s(8w6 z>f@(M1|3ZNNJlwpd;%nuDD7kmDQYerTlW;BnzN`wdve@tN}IJAD=>C_>2o}%_o9kt zT0b@Q;<)3zB;_(iwk}HbF95do79+11jl=S?-q737hkR^NpVoaiPT5!VqflJ^QP=Ma zak9QNfqB~ZLjy|`uM=zLAlGGy&^4JvCCqPi5;*_;r3+J`t>a)Ir$5uUYl}P76qSHG zM2!Y8#&Xzb)Trzx>|eA>W~-TuxQV!{{1#{UtMNQjGB_)}t-}M^oe$efDN>c6;PFe` z7{S{Tt9)?~?mbhL%0;fS9qxtPOp!{?-nLquic^GC3e}=?%|JiHjgRWc?21P#swxeX zBPZdx4sLG1U&_4OU~#RrxsH_iG(1KO5&gwal{N%IctgZbr7i+Jc4$pp_41*($T(EW z_WKDpa|9ECOB;(wPFh+&T(3D@V)O{(+V^bu>2Oqp1ur)rFv=$4H(mDnE*48g zV<5#xm1?{>EsNL=>-+9wrHF~3&BlEYF_bcjoTP~AX5%>Sw(Kd!WPQnTJZYVgr8nqn z<3ETA7WvNVEX~uI!hPR^?sAql@cbZMiuerlb{O|%?>_b636*jJuHsO+DT?QFDNm_( z%Ye~A*z{%oJ4>*Ze+{6{M2dI8E9y28O^`Co5Lm2dG}-3i;v7>Msp^<1UT|W5Vrji6 z;bzt(dWv}JCZPYAR8v}oN7e`L)-Q|M#Fc!-s4oEUuxQIFYN5jlUMG37macvRz*$f6 zW6{}~>cIhoDO*<9r>$Vj&{n`Hk02ISJq&bMHibfmr8+4a^IbOOx*^3opgT^Xg01_- z5$MY)Sp7|;r~yS4%vP$We&H>Ob z+)s5LbSClLD^UBwTj*ai(JE(B35)nW=&7@$Qbw)XtyFKEh5F5r20c*-XZ2jvX#p+S zd&*1P(|k_l7W;x!UoK!fPurdq{;JC$AJY0=b^KMP3vus{(ij>BGMXxP15E)rMno0! z7fQMVRsq_?AXs=SxUYiow+StZf|Nk7h$zcS@#jL?*+@doF=AKvn+7dHZ(SrGa3$ek zn1s&+N!9qbcqpal-UxpS1z)>k~sQ$#GG_<+4Z zN}%0p&@po0Ou#uJOci&rmBeH561jHg@o@z&m8v0QhJPTq(m30smP8+ZRe%x)(Cjj_a%NMLNh(H$X`eq?e%_Kno>k zTOpNcQ3D_cCFGhM=nkMK5@fYhO5JfOR&-SOOs-Jm(iK-11StXbssS_Pu-SlT*TA34 z@RxuMHSlE_z5)1Q4Q#qh%usE!3{7I0sKSO{NxnZriY|3@do{%e3wDZ#WfUJeAyCm~ zSQv7H_8JC(kDFT$z3GQ@=ud$Qdlk%S2TP4aCD>89y zt6Q{_q6B;M%LuPgQ!zUr9-^kgcWs>%U#KaJ;m={0@bksaxL}jUvRML`C3njdch~UT z)J!^8o^K|JFyAs0g~${UFlzI@t&`haoQ!GtBU-N^e}`tY+HGZ)x9m!681AK;Q`nAS zZuE5vL7T$_6jxzCPzJXRzRPNv#zKQzE7S8qZj;WQTq-{t0TIqVN?Kx6yuLd) zrQsg1XAxsc2^po~6ebwoEJcuA=Vg?J3jt*%VhvGNs|{v7m4fF=vU&LB_!#T}80IOli3GpqLFf3$Bw) zX}DBS?jkl+rZgNAi1rY%#WJPgJ_F?`V(Vo}!|es-C1T&nl!mJSmE$dfzkp;E(>FB);^lRsG&HZh(66mM zrbDHuUB?uGl$;M{#S;9K;$373i^20*5d#NCY~@OBs7TS_`MrHsR4!DS+u)g<*BzlQ z9fV$dQ(D_W$d7rW;BxJNhMM3I4Q?3RSh$Vhf+NMXgxei%Q@9Cmo52Ntg^Pg8QfrCL zdDLE5jP1DJfmX!|J*``#yffKi11)@ZBl;^=I7T-LgmL86NiffmYQxIHdXY-hXH>K=YMO70c&5hhO6#(iN zkqQCzt4K8jbzY>xL0uLpb_~RdrsUdydMHvcpziyLWJi!kMXDPp_92w`FNu6#qV+q& zaQgf00A;Whu)YYvR%X(_+#c~Ay7%hUHD$=yVQJ&DCg3J~Tid2o)mdm`>dH$Gn&m+m}QIX zo@vnxTri$`K=A-vJ%W9L-!UX~6u-5=H=#nOK@Y=kge%U;0`Ve2XCNHx9)zh%{3vvI zh+4&RKTOGSLW3N3xv2Wz0MKlW>I;A^c-g;axY*5Vj&&$g#Lc~di`X1)h2=Jc`!}9h z`)1Dz;Huy*hpUFW0xlX|?n=05XSu84Vlv6y4Ht7j?nyKOHm>Gg0f3<|_c~mRSh?)0 zVpPdx-wKT^w+e0pxG&&_!hH+3F;SPY?0B$ne#&8G1 zZ4P%3+}1qaObUo-0I6_e;SPoy2X`o3_PvKuYXAMtRNPgF_b$UT>jM@XJFI6Erb8q4 z*x=Jms4$VcHG5l9XATD?bv`zjNJCQ!s3-U-Vcto6E1<@J!aD&a;4hm)l^nPg;vA|J z%`g2S`mV=cDco0}*leogegMV#m6AJ$Rv>#{HF~r0fW1AXn5hk|PY~?eu=!Ofe(Beu z7dszi^DBl`P*M){K(VP*$wh&BC5B@?#+IsB5|S6&)VveDGC{Ff7F7TxB>{aI;w-D= zR)S*RPRXrf;V8N%l3)|ClKUQj0zV~p8h_aYtmN3+mXf#zicP>u?kOk^KP79C9F#+` zBqT33p_YlMHv**=12qH1W@#nY3V)@0x;ckOs^R$w? zkH1p5XQ0@Ot>ny1&;Z16HlTb(%mI`XjwyL&Gd5-iP}X9&)`LK@DO<@!8v}L)6(C}R zL9u~V$&CWVrfelQ-WV<$RG^44p{!ftOZ*I!ofu;yDBK+BE!e|uT+`k{3)oes@qL7% zoN?$Q7>wAmQydi_ODc{E6X13M{s-Kya9_bqhMNO77cSmpF4&XY0=TQ-E`<9HTo#_q zJ1qQhxJ%%&8D%M43zTIAT-JHlz=ev69IgmNK7dVd55V09_deY1a9P{j1vd!p9=JW> z?t_~M_W)dUaJJ^noeuXfTqMesz}*NJUo5vA?kTwM;9i7V53k`0+(fw7;m$Vkz_bHm z34q_=E`$3V?jg7kX-{os3vDK`dxL3}-8T+2xu5WBNX?9|M5-#$rWm7?qEW6>sH&1< zD-R_tP82*HABaE_{z}vM5KyLcI8kWMm(a^Zp)RHtza*hv3vp_}xXfgE9l08t_H3k= zCK;oM@5htO>?EPHTAUAph_^WHM875p4k5?nQU5qxC**koZaUnPa5LrSY3vz#|Mogl z+x|i)-k#?67n;)_I>C|J3=+&}=M}-sT!Z-w--CndhpZ)#NlKYuNdpH8K5iJS#EAvt zfw<t?3fbSu#d9|ODb{6P2_*roCM2h$fAq00L*&DJ3@*|Xk;Wcc5aV){Xn4u}D zk_CHP#=@~wSs63;r;I+<^%YxD$5l<7X!JPn&#GvU%Fmfz^quBFe_iQkMH9xLf!ou$ zWYpqNf5DRmmVZ!z4z#{>)`t~9Hx?^^Nl2`K6I@mSXP(Xr!<|SqbE^ZXGK4x#HHBsq z9Y$OhNWPlp+5b-&DxBDdQa18 z*|5(BK?`oDNRjR2UQVP=5quqM^12Q$rD$Z%lUk<;4d|QU_%hQ|gaIMwLSoTd!DXK} z60SR3tdDZ*z-WLVdYCv+p5g#|8swr1J;G zmVjnl1BTJ^R4jycOJD29RKbP+hMuGf(X@S}U``QfLIB^4ZpOE8w%m%~Y$%25AC3w} z;!XNovB#T96GqCPA4?$^4znFBc(##-<7NP)WoZm3hM943pw8f@gcUIyJBd^p`z!Xg zv7jty%wUvhH7k<~F8&BXcFR#}1?s?7T5NSy<{_<`QhTq1)bWPlX5=?Sm_hx*rUl>> zInlv_jmN*Uw74^L{*UgskS&+hll+DXiT|a*eg1n2%(fP6_BZ3$DnTkbThvQMXZ?_^ zQq8#R>TvYLudXMhG+boKf68i850&aROsHf3U+aV3h4)4qh6(i%==?CDDXpBAsHNfE ziX3Ry@d~KTuqd#gKEnljZ>cS@w=K??}Oo&JP!Y6gxdA z&3=9psy{+-aKrLkY-C`U=DH$QAY9fcf_ci>an{Kn2ics7_?-vI6gUA!Yz?ER^j<>; zI=nhkL&YNmSGl$Qw+bZ9>Ar~QO3z22XggTZ8aOe&t)-$&=6)8P&=pw?>^0$9A{NH5LHD>>|#B#<_&Nv)C?7rd)l{KuNv$B0KtW=-^(h%lD#bYt7 zT$qMo1u0w8xS!?0OUu~cAB?|8s5k>9-a}z&=xJ>9rM52qW<;hfq`{0WiKM{{y1T`} zOn$ki$KgG6o`Cn@HD1svPT+P(#f3VgoqI|}>2_x=$$KoCTBckVtU1NHFr9AfokOQv z`fFb&8}`y|jGxnHMTSuKgBsm2)+kV_(bx zNQ0MFno=f`&Cv>HOEx^SwHB)p@z>6}iB08$Pg6-ztM|&EX0P$nn9{Hbf(elfU(lMSmGTb4@S%91joEnO&XqA+KG zG*+pFBO*4P{iXVunCMqY?@7oM zI`hGFBvS~oWhJ)`I*e2~$b^qPsSZ?XP~r&w?8*QyNZZ z#3mcDPmS1GBgQ6KDK6{zzfq|UYUiGK*{R7sOK{^iNM)+0Lxb*{C8W?6p9n40?U(4F zJptyMI7f3wF;;V0dYFYCu-+IUng-3nsME~T%8t4Th(A6p2pu9IQEO9x@GtO_G+Do3 znTFGrTzoZTB%TPGl80W1cfQAQxh$LeaO=Z;DMkvVZk7?AG$I?r{6RfFctPF=QJW|> z22oXa7gv_62PNhRQiiXL8NQNgIes#to|%sRnm+{v^}$+*?g&CBTa4Mc2+XPAvfR}a z^;wZKjnqUqKs%n$hW6!r5XqEIXQQLo=3)Vp{&#_yhDS6FqA76T*kGEI%_7iP`=Pe1 z-tRuh{D6QGY@aN|+hJpx3s25d&e98wKC{9pfGtdr9^x`@MrpYJc=68EWeW1&m@TCx zuCN-=t85hK-DJT`1J;3995cKfPl`r63RG5cOW_UM-%rI*RTueLAutXO#eN(H zmql(2S@qLroosSJlu-HRfTAIL%!aS{gZ}(H63lRK^7X) zxg5L{G`|2g2-{M;9&NY#v7=@h^b@f?{LayOZG=>lzfef2CV$c3Y{8FK<={Iwu`L49 zX-8vqXjQTGoV5@SLpo78Sa5^sBYqKFJG5@$EcS-iVlvC|_jOJCz%_Kd??5`2E2L5I z3_&Y4hv#C@T>NF!e`yZZVsqfvv8cUFict6Hdd{%b%W~JwK)a=eiCRn62>!s2wMj~! zR^&uQGqup4iU9Jw!PX#8@soJb2dJ<=zSH^B@s{K>43#^Nkc#8tWEDc!@56wp*G!?l zH{)YjaH06iD4fj5lr(5pQKgf+E6c@-@@EP*AFRJV$O=)U&7w6OoQak_Boq0)pDFlh z*%`K_gK^VyT%4j5YvnzUZWg+Gvl9sziR@Z9(4JXBPkBA%fh2E=$sz%nbKDrzB@t_l zzory68$&SUE!bXb-6Bl$J1+|sls{YOiXG_n*+N5^xoI;;2m=y5M;JkU>qKe2M8>w@zMf7NwY+AP-pQ| zic5Wom&Rrja2SF010}B5xS^mVUK(3DKf_Ncj{odrO36(zhMNP*TEq%Lu>lwit3hzs z(Ug+=43w1MW>6CAte6E7efNNpraKl!DqtC?QWipFc1z(N;aQsQSl7UNoiD7x)OK#Z z;OzLH)0xBtem!3(LWtE1glJ}WLDb554z3$Z2`-yx*)yA5!ITu4u}|Q3lJV_u%kj(x z73R-2a?GExc7BBG0vGHxk#~9%F8daD;MRkC4=x5M?h)J;JZFN4bn8)XCz`ZS*z-Tu zdcY(o>aB)NYfPJmjqON_seI=mp_5wTU(ou?(a;!i&e{xky~RTFoQ=pC72r0*wTHV6 zF59VYhwB5k7;YfkJ#g#6-3K=e?jg9%;FiK=Z{i5t`f%C%mwF(hG~8e#He9AO+(aX$ ztB#`KW*9-%PNc}c7_kS8BC92WD+(U81l@AdD0ItFON2PLHOLy?+*-J7;sfh5*9LA8 zCcwE{omz|qZHt#|A=+|d)Q6+ie@tiW$ipnNTO8%fEJ}1SWpX zk(c|wa^%(7T;fKe?^4xr%*Zd*&RR9AT$zGOHDPW!382Az6c1;n!)2Y6O^{N*W|T&3 z;SvV6oan3JLS@Q=YhuLu8nOOH?5+`eXvFH_qf6;EV$6LhllDfiQ#D5GT267L0lSJE zpy%bxD#6po0cn_sJyxQ$C?D3bz#4+;%TvOxA}`*bQdbDBa$qxf)I^g4vw~t5#sX94 z^nPxNizXDtZ}U<#;_0U|hdpRvhX@CpV<-G%=Sg2tq5~{N?cB20lj`j*a8?mmvWRTsz~@tbgBVY;{HwbI{|Sx%3}Ncq zAnVl+E(0(*^SncRfFP_79D3UMU~Cx9iQ>V+Nnsk_k745y7W-?&#@d}YuYS0ZhHHtO)`IO=3HDa@2iH#4ZZBwgnzfgzHzr! z<>d=4>*(g~(zH5s=j-_V-(0_n-uC60A0HiDcjW$so^OtQxw4qs`pJ~@>zalP`fSUC zc8?yMrM#E+&);XR3j0Ria=}bLs|k>9jVJEIq=18ZdZ{!}vR0Gah7o^0~IbZtw2qIZ4^E$v#s~FONymKD)T` zWy;p8JKjv0Q*wIfsN-S)_;2{;am!1AXJ=IV$K4Dyed6)!%WD7T6C<_1cr5*<+W&j= z@V7gr)_P9X8nFD?Zq`kGfKpzdNe=F>Wb%c}i9x9#>_zrT-$SNkt?KK@lg zX@kG_4)cuX)6DOlZS{S2?{g{lqqdc||MU3p8A^(C;a~D^m-?b)4BD+PyfaDb#UgGz`|Sa4Tm-eiM&~QXYBl(eCbDf%I!bNl!r97-+Vtq>?Wbi!jjFAEJ(*^lWghz z-vKWCR70y`p@9kIrux}ILEA<<{yW-nV7@=4e4S{P(}(lHNXq{GB{^Jz5n-x&*}q0c zBveM6jYy=7xEhh(GBUu3q{>J)BQjY=dgK_PPi3gH5i!U}oDun1M#7B9UosMIM7%_v z8^p7WNNX8sZbVXLqyv{zUHd#4>SzqKRYoj~$PpQ_G9tHSB*KWimyuRR#7`}~MH?g1 zT1IR+pB(w+C(BS9W1wsqi8LZ>WW?Qwd@UoMM&x@Li8dlX$w)gR@=QkTf#gUZU12Jf z(a{*lMMnIMNSKV&F(UCYQqPEtl#vETWR8q@8(aWV!nrDD99M-ij0I9kry)3 z&xokZXplkh!;xX0L0GSFGo#9Ww*#rmUcp+?*o^omy}T%N(>Ntf-7DDfor$0B6=Y-o zSKIGZocxiv!Bkby4{8fH>Xh^Vp%hchX#MHPKpV5~pF^;+I@odw+b1;Tzozv=or7q} zJ{`yv1+Hrgc~l^*;#TpEP9qN3Xh6 zHl>k7E6pvLQ~a1E`jb(kfU)Q!|Af-ETS+}49N23^LNyWiK0%N0AYZH+re$kgq7co$kz`RiVR6we;E zT2tBvZWtH?d=BKowgvY}XM3=8o1lUmVCgeKk z7*dL}A^sSu`m_X9eK$TrqsV~fo(9PE6!R{$p}e=K>fcQq@g^cCTktkyyAe4zI}YC; zZK!fQa?Y*7JAg8+yr%N&^)}}0LB+>W)7Dx_+k!l;PaxV5EfqS~fim(V$g}K5eT`zi zmNFV4&&kaD3oYe0b405Bk?JWem2N_Q_uvERkUvid-Zc2P>2?%&QfLV~&1olvrgZ{s zrQz~RIN0>zUjz`gLE46&G^BQ<11AOloCJ8V1F;&9fj}6ywFc1v@%adu10>)h+<#1g5N6@#3miQ5J6i9C)l9ri0eh8jYjR*+tCc+H;2zdl#PLtUNbX0-Dj>5yLbd{#XGA8C9W@va zT%AQmh&`T0pn{K(D?pahZ>I$JYGqY{r*UlX)SilCP7bH{(=J=n&anAz|G9 zs0@{-gFOP7p|R7tN7U{Iu0d^=D|(%{?i!0-kfhW56s|^1{bUGX}N2x#F#H5=g9zaGR+>yh?0;>DofbZIDQ zmU!Cqgi`$uY=dEqD3y86Yy|E`n5gMk^Af$=q%lsMnlLrRe(Ez2#P?}QQD!imTgEgo z>;%XC3ay91SPHfCR;nN2xgC`GvpecV70~jx1uL9WRGt*+P4Unkp}L9ZpNSXE#*Tx6 zh`N#Z{*h9VzXNRkoE+KP(ER_(*=rCnldx3mUwkx1=__l<+0HTo8Z;6%*eA=V;SL@&Ef``76XK2+4 zm84c{D!_Tf(`$z2mT%pWgn#UJD#m&Em|s<4j9uu(8U!aY2NA%xW5EH^>I;2 z;4FXzl7g=7B0`t!w+B#Be1#N%E+yGG(z^XN4ty+ieIRsK*vHbLd7B};6H9Ml3JIMl zx}b|a-F#>1K)LfbD{QQITc{A#DDsV0Fq;VrD73wOBSpB9qAxXZrd)fiv*Nmv zdOa5WqM7=hkvvpdph}x%dL3w{-iP7CK{M4qjGhmA5qb-wSAc$wUxWYc4J_1Fxh^x% zV5so?wsyA{iv!|nbrJMmxObRdn|p&7o(lePg=ic*(J0LEvk;X|u~`~M`(#YR?FYp$ z4OfD{$MLfeFF#1(PRf{uJ7tKf5^gG?Gt~Qq;A_4F30vZP;0<+tA%vK+hH8=*O>IrG zL##YMIGb2RJ6;HGny~?x#l;^bysC8KH_@*z1W&8>UNy!A+LOaep$)&4dcG9=t(amf zVrIj|cU$JzkCEb26yyEjext8sv@M%uPyJotOk0uBz7v22L z7=nP9bn4Yt8V2#%FdsZildZLC*E=y~{4l-zNo?>HP?89fY`NA=#5$Xsvx-~&w<`Xj zu4pEDwFEK_16l;D**izgqrb~=HM}s%&g1zdB&f1IStSb>KxFu9Rkj~0S*FT%jWiZn8!NxT zb(-uwjvuv7v{YsaHJ5C2ES)IVB0GqGW7uke*WkVY_4+WO&RDZa>7Z1T(FzJ0e6A(6 zb@nnf>o!{gDNPp~jOZt=vtv~dbGLEGb{DIFz=jxy>|=a`=XG$M4ZocZk{J$G7Dh9S zndSJ9zC%r%vb!O@8BW<>nxF?Ybjx;Q>Dhk!|FHKRP*E&fyL2-%{?uet~I-v7M&*86d-^WXQb zF4k1-s;;iCuHLn4*WTYwbRvx~o!mzrY_~qckA--;2K>gR{B>W~PMn&QY5b_o!!f6tt_l1$?M^j^ z!@b>CXN5$5-?4r4C%wq72T<_^PDh~ zN-W*D5m&}e7y}nuMXBzn-01u+`Tlc-&}Tg3rEoUZY)$xP^%Xn*0W1!2H|zQM{Mb^| z61EiG8__LIp%NC`tzj|nUIuv@CeDo&?lgX8s0}$J11j4FdYCORC2o*L0YPqwt-=a0?-F+r#m)36 zg}?=2Ml~_|h|f$w;Cg`rjPfEG^g?`?hij4u8bU2%`YwP!VPo;RHYulN*hU=oAz`0U zmO7)6L>lZ%5ov=|z@Lpd-cTa*_J^TnJ(7Q+11eBJ+U3yhhj~diVx8DQ78v_$aB2%h z@?DUhlGvBA?!ZI|TI%d2wF!WK7fCkp7XzCFiPR3Db|-}<{_a2y7wRQ~k|I!uxyfWr zsI^@n9wCvh(A<5o+G|ig|7^~V6sALo=WKn(LqMhq7V^@r5N-#O*oedKI8x0Uy4{jQ z2P!OSnI)Ou#NGmmN+JDvMHdqxD(0*P0v;{Nn7mwq=tIn~?am#S<9+x49fEg1l2}9E zj_((w_{cC8e2-R&V3zqrf_xL&5!WRl5|V0WYLV7f5&Kj4PF`tljVNZRfHG&-iGec7 z{1Ynz#As!YSut)&khTa*vrH2j^PwgHNq|Izu|X(I8t05Hm56vW4FPXMacbrQ-bSEH zMSPk7geIW*Ie>?zxHb0yb3^lubV%3s3c0fiGl-gwVOOk`ph;7`36;r#c~dgPB(y5x zTvfqQsv2f9`A@kOiLo=&t;$1G6Hr@Rq8O^nB$HD;6wh&BvZJS>gOmc-uIHIv z3Mq>a>^glEV^9*`MEQ#%}_`oEPkpm#fnUTE%6ms)wxSGo6G_o3Xlkfl>oNlM4B+RW74r#isk&s3M z6*s}(%_9_ZaZyGDM0F_sA`~?l6?qk*@G+uWDS9al>|#c|BNcwQ$ACzMlih!9yt3Bf zNQI{nEvA2)(Ez-ZlGeMETsIq;j55LmKoX=3vFA+(DK0QrNbU_*e8YY34p9V1>DG>r z@X&`fXf!)>vgJ{B07+4}8uCk`6k8c)3axER`V3RdmI~;>0c#EAWA30KC$S{dy>?p-* zR5c#02q1pN`{h3)@$pHc6<&WWgHp?xs>`6d%U&N@wexlJ+2nh)qJ7x3K_kXRpKZVX z>)ex`UI#tgvY5^3PusTkeNcaD=e_aqxzW;o-nn&x)Uh41{I%4fe!I)ICl1Pp?^YCl zrQ}$~tm9#MExN7NcC(uJVrS0ccgie6VicQnPk9ARb$<73tr#+)H4ajugXR4FSj8H> zN>OjMQqj3m)N4p$n*`fh`3Cq0{1EkAw2lB4xF)o;Ns5;GcMM@qjORaRMv_)RxTE&O z_i^;_-dqs&1pH7UnXED;xyP@-Yjo6L#7I#<{n^<9`)AlO2*TSq&|KfOs$IHW2rTL>f*2z}7+oPe6Vnl4*=~9dkLnC*>N*%GSsr z&U%A5cb&0FCREZ_AOjxIyrYW{H})iaCsmf@l7*!OdDt)xv2lX+O*;HGNsJGerr0Q{ zLaf--TISf7L&IqU{B9vsY;7@A>=aScd0j#(qDEl%H({U+I|Y%AX?VH2QZg_F+g3l> zzrCpRTLQ#JI+#@{qWJ#{i}b&;b}4nOX08L!RS;)Jqa^`&s?n7$TH(d2cn2z zO8CtLt1>g5zpzxH!!mK?+A>A7tOWbv5(iSSzD6yQy&X*J;P%d@WZiPbP9~o3y+SdA zWn%e~RfS~|Yix-AG+1}V$F@OJy@}5nMTD+uckA}?ZC73v*QGm#;=1Is zR`E$%xh}QOQtV`9VyH2a-=>AVWy1!-q9mMY>I$pU4Flq{RnZE2=9r@$Jc%n^Hrhe( zny4r2@zajhlS+}z(ie}@K9a~~v0hTf07464p6?NPr#Go+T4qT?k9Dv>uuW!ptaFFO zSdV)Ajx8*|En6{=VS8zbK&Kh_1<)x|L1S&PZ5RJ8JOEgh4 zpTQ2^ep?-Ou{Qahqrj$A6E)KtER$|Z)!4L}Pq%M*4Xbh$#geM-rT*p(DSsqSVOFJW z)NeSTsR}S9-(!cuf?=Z(k#Y8Z_(z(}l9H)AF@YM9hdUKLq+`H4%E^&pYYS4a+`yU) z*q7i!X6#a2{L9b%({K6QebQg%ZFpGzq4UAA+!=$6CWiaQt|Bk)rw`R@bH-ss))afE z`H9YL_LdrWr8kSMskg*}Y7^s0e#r!PehjZLW;EY(+LKtIZtPKv(ikcv9GJ2`lf zkT73oy&?u0vl`T?II^3Gix6n|HZ*q2e2D8OZ|5{>yTIavf0dsQPneV=1eWvz2w^}? zH=-KG6%v^()MSGKLe;@Z#vMtDqtM7pFg9Cyir z2R&T$_n`;Af$$9rS`6k~(9J|5Tip_XZEZ=pv$wN;4n9zAh`QU`lj0`0Ja-YG=s$pv z6iiY-y1LLEV|(a_hIb-iPQB%_=|~UlOd`6TlFQa~hAJt9WHiQg#WaXuLqT9aM%}#Q7^=R2w`1FQt4h# zS&uGIp>`t$pCDf6KJ}8Ye;{*E;VFCD4Tcy!ekqvNQ!JR-6BaeS#RAhCoiTiUg!mPy z0d#OOcSvM9eW9J~Ck|g~48jR$_osLrG#&+s84iKEHu8lCSRwb8OFtrQLW25ony?P; z1F+W^K*A1K$fe!`DI|X3xrPXYaR!Rp?#M?*PzwsVPF@6buMvQ|Zf)QuD?;W*q);IB z8bpIbA3^*HlG_a?8R5vQN$eQLgU(?c%Xf^@rK!V}1%hXM0^7;!x_ST0LPy8m#Y_p@ zOnwfO{{eHQ3_wio=zB_QkELpOflN0jY)=h+6zCIw(sh;~pEVZY-1-{GB}iYxY&jksK34BIeeX>!cu^6QgNnFES@$#P%N`{kgJ0 z8VhgCSfPELx=07diu*3v2xQ`8N%>wAxy~Y_H&zy$K&B9ZG;nL3*GPY_EN~hJv!roi zpV}ealSI}-pW=~B9w#)!t{x|%+V24E@Hmno#R%Nh(4K+nWH)t_~=@9^ZKe9xSQZ&`F#tU%%QjiX6NJW}z4?ugZp&0>#o?dDd2kS0G z@W9hx-}n%&C8u-oFrkakPJ348ty`HQ?dkLA;Z zgj`TuWF8Txi#SMqLLOYiVfZ87=#s*SMiF)>fPxD!;WT#nc8#R=NtD#sV901x%7TnW zW0(J*WwaKBkkKB9G8(BHU*tm)?Ynr@+EHFW6phOR+`*<$O+^drWP6z&F^o_#meHWzvVKm6X06fMN=86^jZ#Gd3J zDl>yg$sP?q%MyYZD^;`A1ku85mTz&bA=LpJN8^L3HNLI0vrFnWZ(-J z`wRvQXNHTXphK4m&&B7yP;6nDUZme^g`JK#9dD)-TTH_&cd!vZZp}fIRzY`)*Cpqd+reP>;K?r(whNYiyQ;cNWUPCHk=fh^`IzTVEBuBs!F% z8cJ)EM%Miu#o^FzOmZ@BI?04b3=8*P)!!(8P!I+h=D>v~{?e+Mtjl(H7REtq%8$8N~bQaw>IJyvdmEah6$ITjfd=E!F9*TZMER) zvDYPhsRftLF#Sn}J!eOjSaEmAV;9btWZQFwe2O(^%aB-W&YnML!;J=*p1iWCl^xfQ zA-x?@wAY@?U@*Kw3&!0z8Lx2U;B1~@nr%U5nPkV4XjjgbL_2e{;S-o?nmte?OgPrk zlq9=wLz$lZ6Bn)q!}R9O-MBFf(}z!zb9oHYi}&;38teV#2J`)I**}!Q z*UiG8J-s;f<*Ui|t*-RBYO}e1YwJYY)+UzHr>2Y@FrEm9-u{O0c<|n>uxh8zV(|HTS_DUu-I9Y4; z;pfX=XVg(V2oyuI_`P-Sk8@$e+@$4mEcYRRY z+*zk;wd}sler%{o?f2*YTyJE-1&ePyMW>frIgojSzMnz;Miix(BS z32|4irrhrl72CNoe^X1Lz0qpL-r>rK=3Ac4i#hy2zNlkdw+mfQS~#|Tk~lVK+l5OV z?bjNHiiEL28GOpTsJIsgEAu0^JFdMu!9}MsZ`;IrTXxq46D#u-mC)T;ioyiM2ED=RDP^05k0seGd< z^ON^4FzC^G-j~Y!vt;Yx;iKvwCBCmrBKWIyxm-pkzwl6pI~^iP;nm`J<_)53Z&D3rjc~;Be5r329!> z(pldXOUuNj*nBk;H}PRT5e2)V8TOR0o~L{47pTx1d+s)^iBD7PLWQ{2MXe#`v?uuw zoZ;c7hy7gF4)l1&tS;p9R3yWK1s8_2XK)a>6O284XOg=j$%TSKwXGwLK8V#gq?IoA5U3v7wCAqrX@C!V<2+$jlEP~loEGG*?AtTM5U-Y;&eBaT2>itK%1R}J;W6=*x^M#6t0lEehK%4GwP9y=(_Ekw>7BC);~ z+)3)!+EOX@)D}ZXzCFkj$q`BxHs~sBr)NgNqou2yy%|MZ(v#b2nvPret5(@?2u247G9T>f)Iv_ zkrh+vVcihyF>A#L&Fjy{yHa7NXAmpuOj7&f;=b6gog1(52BC2U6R}&tZYDyVBA1>) z8lmsTV$_rF;?d0}K$4jtzG>I*Xnq?AeI}87H*Y!s%w$AJOd5bzuTFyF3imUBAUs@3 z93Hrn0_^Bzn>e6ME5%2S2sM&0;J3_PO`)v{E;8z03X@2tzh(fXGu70%E>aJH7k$p4 zKMxat%8@9lri9?@^%Eg}A*vxA&A^^>CG3$TlH2LDyB>z67|Ug#Ca57TW7d&a7Pl=n zgEr{cWPDUp#SROF%SlN++%}9($$eAt3a0<^G_#3secC4kfR`?tPJLW_pCXta4VB2+ z&xE3{g{QRUO!)nf!XNZiv#_~6CiG<6EV#kU{-u{SQ%Dkf%v07O1>-%3l($Wjv(@I3 zq|7)^S?#&dG|Uq#hec;e*je+$fRaMj*35&GN$St8vEx$3QsL}&a;lcrngu_vrO2A> zBX=lcV2)?75TEX%UoL%&m~k`;sBr1~MHt#8KQCp6EfGso<%6IC#BTIqns}|ysrE!H z6$UesK#Q{Um(oV*VyV#OF6lUOUiPz;k(0az7|r}4m^e*vK6`0}SSY*)f5J3GAvGwJ zby*3ZuT?^!{%A~QztvD(t`-a&iD0@|079=!;Y$!BdOpmA`fLpeT$Lo3)m{TOxK?~3 zI_=o3wZzqUkEbkeEk=Ev@L9s{p`;ORXKG1LzSkqH=LV6^0p=TY;WJL$0Nuhyp&^+G zx>2-IGcsTCMLgSxy&B>Y%{lt zZ@ytR$t^hVDGSVo-gBF#!{=~DvyFtUC>3T<{x-l(=ZHnF%0wwJi0P!0)yu^Ii!E3t_?#K|>v2V9MIQvSsj@BF1ZPqE(#+AVfx{cd7vf?>+u zjbY-2x@LPcPfX{6{T`gb?-lEo?iK4k+Y6oZKA~>Nep3A9sHd#werSvikYXhk1%rb> zzDmo3@JT!*l5ZaRr3)p8Fz@rlf|dDVK|VDj-H?y3@#v3XoPCspbw2GWOFxQ@)^Ty> z2n$-&aaa@*CY(mZeP3H5-HQARQh41<tU2L3Neb8#kV1p6<-$L;H%3B z&~TL&$fZNC()HEX47@9*JG9`b$S=JnmOZ&fRrIksa9PNpQI^fG1ECCIzv*>@Zcxag zLV6utAEk4Uho|F+ESI!rUQ)?Tbex1QYUD0Gi{vs=f&xJyE4_Y;K5yotM!4`C9*Lr6 znih$TMigmjO&}%FoV#o`lC$p!WZCUII7~qr7Q=#LqD*oZ)AFvUZZ^G#aVI505QlWz1F_wGpq+dm-s|B5 z61cmkmlUKA8j|%xp_(RU{Sbrq$$vj;R4 zkAnn{MoN11kOX$m6DqMV6b8k$OuS3=GA#8Xsf&ix2c)4QX=)h>yLiz{0?Ja6vRhN> z5J+c5(i07-9HcKI$^H>--AnR_dU*y};eMS2il?+2ND(3_;Sm7Gj|-I+QVJY?s4hNN zQ}Z}#7W|~^yh5IRtT7^TeGI{f6k2NrN2eq5eJTqlAv0Ah6wHs-Aiuk^@G3IJzg+nZ zdE+OVW@|mcEGCh*n!f1tKz^jAP&N~p#ZO4anYj&Vv{qx{qv9k++d-}Q6q6PI;NoxQ z@4)6iB@w;tJlP{p$(Qj06&6qIY6*$#G~0&J9N0I}1WTQdAgR<^{4q`s$Je)J8_Pti z@_8Do@`nhXI=Z!u9R|UadC_am{DebG&rW~c)cVH4*>B)~1vt@}9F3uxY^Jsk*(!`F zxS*40b3UGd!p=iX4@KJ03o9h*&`pfdFKOdn(k4IBBzYzm;74uOLr~uubehIiN6SW& z?v1pYCVd?3|B3t@0JHr2+qAn>#m1p^tGlSWh~HU zXj1xGYmuV65(BM`nv_0;Cx(A7rJc~E^tAxOtYs$9N;N5ctxrgq3$$;Vl)ey?#e(9e z7zhz}ki?A}fhk)G6`N^NaFa#KN}vtUqyWK<6k=lGTBRnXPlIdG_*kGVa3XFS z_g5#WyOsK+_xVP~By2HPm+!Wkd(E=rJV^9Htk-?laO0R5IO=h2WrsYmsrDppmUF9v z)M_m!XX64$#aD$bpSYH@W!V_bMLFv^!cGi;CtD30GH?U;m4Qr;`|>dxIeV7$-Upqy zfl6saaF%Te!sx`^rJ=)v9=HJ>qqM zGv+h0x!#O6o|=@bwz1;PayUyCLs$8f624g;$1wC+llMl{;zw`i?lbVgaPw0OqaY!J zcXI7mTR1m=JBwJ5){70u{hi!r1}my&pd{pvU0i!wC1|Zjbuwf(T5$ha%J=2Dl?-Xc za}Gp*g0?>Iw3lnjFdjc^01OqbwekD71vpU1#-lqQ;3}A|yy-#CiDevVMO)JLFxQ4L zCUXvRa;U0u4s%@*^F}+Lt4V{h*UjgG^{BvLia!f}NN_4#0JVwaEBOc zl5>)i>rgqv&=^hy7Uqs_<}{;Uv(k_IJ3a*JUhbsT)$EEhQ2d1E?MR(doSz=Okk+^6 zN1WpBFl?wh3A(}Akh+tVQhx9m?i9ngknjtfBWZVzYsDCmlyjV&8x?U3rHv}@aQA<6 zhkNHZKPjzi#9N)`nlOw#kEX6L0Jg<1+yO3e-Y`}leTnO#KNZtBl!+NU9AP0%x7(78 zd6Oih#Z%6de7MA|ATS3qK7CxeH{dab*p+%Q#;d zPl7Mw>}Ncmd6_e1NEm&DXilj^u3kYYaI&s&&YF?7A`_&g#y|t%YO#ix7c^R1?gm(U z&brE7Ar~t+C!)B<)$pPgYK&IQ;J9(4@x=w11#7-I>UL<3W6fl-oD_b+02W{4np)8- z=tI#ftN}M*i|;j=_r1=+Sg*Zi3?^b?54pj0VmOj_gNtK0-t#7U3~)VRjJ7)J>5@LT zxM29uY`BF_Gm+Tc=Dw1e_c$nyk}wvJ8KpBBSj5S6RGJQ$u}VjB=LrW4_#(~{emWIn&0PkFzv*KF3|^mc3*hl2F2V2 zJomO@?lY;@);P!6QC)tm<&S>oOBW{ARLVQgzk>euA42vSg&$wD- z%VX{|6Cz$P{|V=(xdndgo^lUh;DP(wJ>x>q{o&8Jv3PAao^djUI6pvvNh03M+X~K^ zxW4%1z1%lbI_TJ85o&IxCZR95US9N#VSEaS@&{7DDU7Z-QPe-nNa)7>utxs? zH`$jjxDv9s05_@YtS2KCFENlx()<;MM#<;BqFtErsIv6-YaCp1q(M1186DhLj>!OU zA7NhAan>`SUG%{8u>XUrp_8DQJo9aowsiK^({t2J1Ql8R2j|2j@CX0k<}-|)z<&6s zH(YBLVB7*TJNk|bhw+c)dvHSF)V;^NX+-iQn1-$jZ5bc-fosW-4|~Ai3mByypYsvD zCjB;6=50S?Ac>WY(utq)gMp@3V)?OsC+|!D0VW)h+7^GpD z760Lo;c|kdhvhH89cGl*>ev}d5hdWiGVuflr5|I)=Q${|v>98zuZyx9g9RejRk;Ui z!w5H}J9ze7`eRP=+>~Be#&5YP1L_3316U4!yCD5+$6s&FFU20AX}a?N^McVsuJkjb zJKZ0P2D)ZL(&frlOlSVCT-idKvE-dRm7N*Jij4A7j$kdlNP@R{UHY4uWn6>!R9D`? z1WESAaMYQBRla@=Wp9S))&dJ_k&GoLucopmgJqG{;5}<8T^aCdAv2`566f=~{ZO-L zh7xWEzUC5sV;$u{hP17%bml#LlsKd}tbybzUsT0&3%ALgju&#iaJJ@!I;- zi|(~TbIN9K^5Xpk?RuAvn&S}B zzL)=!3FliJN{h&_j2LIY4Y*jt{S7}mczng&(9w!!9hW@2*WJJNJI@$9-R)%vl+9e%-73H&Vhkez|!z zb;Q_rk!iNZ66uxtH*YxEJabsR!h6!qre%$*ulBflZ0DZ3eJ)QKKYaMcHD}wl=w%%- zw4`wU#*k}evAqX6EQt!0PEX06`*e<@w*DAZAK&Wt@~?TeytBCI`{!N0-f^GrcKw`K zzQthAu5JnavcgWM)+)|eIW}l(pMcs9LwkFej31qMpp9z9`GbyY_pUUF@wp&xG5uA& z{P7mVQX%Ki{88SKl4? z?%VPNv*O_Ju%_B!BxKx~!n?N$cltgynOK+aai2|$?XuTp%Ac37jyo~$`X9{#tOshl zmCXL+xP_G;v+R5SO($cP-!^yIfxVZVf)<`0Rq<}piEGiXF1`2YH(_&|!2KsPKJH0< zD8Di2*5s9sTMTUCvVP$7FGbaBf1Gn-va;;;`Xim^YrRjpdC%aBdPdTH!?%y(dd#0R zen$S0n%5fl&v@rQEOBVSp>;+>`0mwfDEdlkSuT$rG4fk_S;OX0G2@%hFNr?zut&R~ ziyvRy^s-8Kzjt{-_o#DSGQMQ)(w5kcD(*Tc%&%HrOZ^b#nQjk9$OhcFQL|~l>6C7- zmX?`i<~BHBH2LOM{fiskcPlf@pDWw$GI>hvhviO7K0C#{+;Ts_;$&VI?Zl7|p%YqzSoNuG5hY{?(f zy%+R1UFx>1!=vxVqzA@VFLwPpcT3+{El(%r-ZXS#_c428uVsGA=+J4v@b^=`#qVh{cjMfY zVB1MkpEN0P_;%{5`&_H$g)y6gBl_k^iu+8cvm`PqIk?`M>~jHS9s$w8Hp5GkUViiV zv+I)U^^9B-w@tjMdv-5*Nf7RCTdrQhg=O_UOb)K)p@r=VkIH0sHJt((H6Zc z?MG&7UtNE)<+kgUd4G9usA{A4`O17|>ow8iM!pTI%(Dyjm#?YWTE8+sNPbc)WfH5KUp!(;L9oq85qljw zXgO)&xzLGZbTpUoE7~f*`BZwL?U|??ZT`bvg?dNZHmc|M69~s&Fjui{M$Z!jY|Z>5 zHXc%2=moHztUiL%P@LT}SXZ4l2*w?^O*~D$j8f z8%ON0oJ3cX2v~ne+hgzULn3?4g*SmNtY8XUAm)+eZa}OQoHfR{!gkwDMDz5+E6d|M8~zHqWw4w=0}`X^Hg$eNb;?Y z$bqDvxx(2i?Nqh^e?v+i9Ih_y+z3JjFfGwP0kLPIP)9li(3=n#Nl;Az|Yhc(O@N#3PVpc&Yt!yNZVZzd`?8MWD*6>RpscHtsr-y>=PD&a-mg_|WCsQi zv+jX5{MWV0AQqPNg8Hz_2IXh%?$A6I{uyJ<58bHz$}r!=qV%bg4M>{pL=#f*LTOCO zZB=lxqDUyvKkAccGnFBfUdeVU2R?YSax+WJGjS)qY~?%lyC-3`DP!1go@D$sWjAA8 zJPg(S(p?$UtI1tFz081=?N_d$!&R8vRdb772b7H&<{2qJ zs2m10fB+y95#ymtifSCw<7XejW|U#cw!_LCY_8p|ga9+9dzl_TGhaF2uVG*+s=P-N z;v~se%@*lGG==A$rJKS#Q zkl(*$wT=sRs&>rn@usX|>xwPztt>{p+*QkEt4GWF#~USA?2&t(-0v_zE9ZHgkNooR zvSu%DrcZoUl3xt^^Bj6Il6tyg0*vFdc7Pm z*Yom`HOJ1)nCrHFyBD`|>e1_6d}~b%CB`R|n{?fxblY#sYP&`7^k-}Vux8>;5;`@~ zl;LZLJw({Z=ZLRzp`ZRQ<|0s}oBdvTu(fD>E1y_|Vr9L>I z`7Q`q`fae5)WwlVoFz3CbX^GvHe+%dQ5yH(-{30604BV0}nP93n=bgVeJ4UQM`C)F%0ku)3l*kWHuqv)?*D znd3(+}3j$F9+&qFT1^+^#N}uK- zn6Hp^>C>u{eif%gF|1F)gHA%_n_}f0{dShbY1uS)N@Vq6!A;#!%^@{76Q*A$cebg9 z6b4d1;x;AG9ey5St;rz4B97MDsv+frbY86WtUZZYJK0MD$~U1BS(DtPy40rw0wj>a zQ7-OmpAJGh#HUr6haeBKb3}@CDJrcanY87j8q#Hu?vco;Kz~fqMpwUd_$kGG?LY$U zGu@?_0V6v8Zb9zdUF9(LU*Yonp9DG5s@n`(_AUSrDdJ88i3o5wN0jKuxCdQq*#KY~ zLA-OCCB?xHv%A6YF-OO3l{=X=C1d7I94rcLcmM4X#{YJit;#Y-eOuS6SgusjXoCFR zGT*32N>BEaCy9*!3(u9P%*dH9N(=t_BV{TBXi_RF@!S*TIYv7evP0(E`qun_XUbMA zTr>nRYH#vnLvo5$WkYKm{Zi?UE#eEMHNUA`IhA3<14vM~pDo|^4`mCMY-EA875Wj! zb{TJ!d7=nqL*{F%EP3@? zoFFUB1@ol;Dv!-4f?H_vxufgJI{KX9XZfS?_225{a+7uYJT-emqq!9rXAilB4vA)q5SgnxC!wsuN&W9z9mif zS);^`HO{>oGVP4Tr7r=`UJR)fQLk6wNGm?5?s_&h@%5eByZf}6pnL75u5Oo>HPXj# z*m$tmbaSihNya|o%?kUT2<*LgiP?+ZN5>3X+qB-KQ`G}@518?>@%9RT#ojuZPeVPH zo6HKE`K{vBf#$vIP4y1RIX-Zvk3(X-_vnF(H^03yb(Y()QN|nInwTq>Ngp>Y4BvX9 z`}tQh7LUs@;g*)1^D!Sr<~yry>b~{szH48Z`~fi=-X)$anAzW**Kt*CHK-J~wuRob z<)3=1qJJX)3F4Md1OK0KW4r`$>qTpldio+Dkk=gcVC(6U0w0yP6xJ@C&C+~T?o!yU z)V3wYyX~Fzy5iM5wWlkn*` zkQqTPsn&v|`k^OChPDu`mB%2R+(Kimyc(G;Ed-1M*%_p7wIDHuJ=`To0ta{yz@<$e zI7nrIzzPY}Shn^>W|&w;ZDM89kWUXJ1^y~`36jUeqL{}HQYo?@As9JNa+d^A#O9JA zXWeyzkPHvfG!~7Fk^~LGja(nYs68EdsEz_c-KFP{yg?SwOWq=>*Al*_Jpi835{LJs zaPc(F70r;3BH?p8x=W`ZIiL7OopqOHBY9Ay79sgqydZ1}kOieeyce?J`fQC_sa>m| z0!jN;0^))UA>Oriwh|?h6`CW8a4w2he}dz-uYK0kvwN`lOqfc2&eTs4A`%WDBRNEX}`RX{`z@6{)IdAmA&6 zo!s}DxIP>|qzWU!V|JM_%qzaMnQF0)*<&R-tSKCkj36x4aLV>_E!jqK}5>MzTUp8H|<>!KygYkHJrKYF^MN2};JhE_3O z_j&rRua?q&`Bkg8z+I zMV7Zo=GhMMq-5zScm7_Ss#vG;B;$@smG*OU9h<$#&c?UCu(cNU)_MZ7kH+bQw|J0I z9Nxu)%|K+vZV`yem8_D;TyUz9WK1$DfcttJBT&;sOY4<630ZFqchgNPr4nqprz1QG zcyTI{D@c&rV|R9+rNDa7jgqU|u>rJ6uwlKde)C3%6sD-G$REcoTJmcrtLkaCMC=E! zU}~=q6c=HCvmU?Cb8G~gezr9$GLR+I$pice#{9mfY8&X~D6SqU@eXk&($*H{EQN)q z7%(Z=9T^U%cKmr6&Ng7OzMF&TkHFQ6#a$BXFJizu&y~^L(u$r&8@d!s>r>OCf2hf& z!094OD*5+UasS=Bl`3x62=jYj*Q*GdUR7)Rsxs!^u&`9g&b+F?LHO!DnJ4^*6v$=1 z6gr*8#MuhoLpNJAN)yfJAg>0G=kT`!X{yFnAsxeaN>zpa^)BN{l^HzM?Kb3MXX}s8 z{P@|~Sz5t=U8+B9S>1MvKD~amEcsPwK6`BGwfaN#wyv6{t_(vHcfED)@^yS2QlbQA zhwry5@D$c{k?@BXtD3TvvU_S-ye;obRPmKDA7Nmdy~x(KLH$Pm%+8;Jo!9z>oi7#H zx!x?uM>gQ*8KjWA$q>-df#RrOr?4@bAJk`@wQz1*M-+&Qpo_Z~fix{-`Vjotb1 zb*ko)fPcl{_h^{B;uj`Ai86T)(#&YKoJ6Op>hTU)sycto@5_D*zqfTL`jFp=Iajc@ z`Kjr}Ypl;U>rkBdI;DL=XiXsBU_ikfa6%&S_RS=eh;HFNKKSy1!hf41Auk7BMrW2G-P! zHZulm(5n@todkwIjARzx!kW~sg@kHju1#_7@Y@(Ze_)3SN4~4lsG}_e_kZbyD|p=k zA)6`^;F^>V`xG`v6U`|_6U_;S8b_#tz*iH^X%<4OE{%ln51(AJdQ`TLbFpxuk?JM$ ziI`Pzf5YyHr{5ZWX(Dp;{|AB&z!&px^=19LdEpV0;k~OKTIt_iMqa#M<*r={3ysKS zO)N;_PK7SHwqG@rDJD%1s5Z*ZLLKe=3=dJU>pWJBR zJr;kLP!|A8Uvt*d-@;j|M_yN#IW)cep|^3XYcVHv7mS-+ zczs@Tk3HYnfy+h(wfthc?D2tF8T}2(`;#hH-K1uFx|_LA*d`bq5VuRt9z1_awe<(5 z&9K>F%cq}JP5ehrYu&&n;1`vMk-%wh!dUaeZk*BQt?^*X^+>8BSY)*(hFV%3NaQC3 zei2yhFytQ?k>c|zxhxu7_7bdaCz7mo7hTZHefxpCWX1=p8s@5{VY5ebj;0pSa za!tU3R^Yo-U9uDgPSh;$l>mmow$fM$5`h7;FC`?g5bE3(QbGI6&VOdI8M!B+0azYC(#-%&eaF2jcK%7*DYw;KdI7h?}Y>EOVRhQlvV~ z2$4`v5|_Iw8@+81a<##SPx3A9s;2xk558Y@9=y!N(JRzVvX~pNp^^p9TK~$-KJP}4 zA$j}me+|y)ICP77wF`yPOQdm$s=DsQVR@Z)<@PZb!$A}p11%3MxIN#oR5hWJ5A*jP zs)qj~3$|f~J16le=RSm#phaRaAwq+6;rEpiW%l_~e zu1^9ZJImpCyFgJ%pIaXQi2 z%$7xIEaF{ZuDz~_CVatmgoAKw3PhBqq`Wc=gR~b2VT2jsf}^^wu+qOO1hmAJ9%qYXMA_V6-ow65c?53e1qGfS;dVPa-wx2qZP)+Z~2jNfd!_I`W$V za7h6g;ZFRm3=X>C=&3~~ELWXGM+5cq4eE*z)m=&X zVRyOg9MYFWC`I$SVI&Ep!7OMC()y8j3gU+F5&C#(T4sY0FJo}pXj9>F z`ypo4m^Hhg2n`_uO&%K>3WG!Yy~A|3)!Qac7wB4dbY+EHQZna5IWXE$A27yYZ4iOa?T z?i1kuCk8v~```>UARa(h3SvCV+*v;j<)s`9BvqolWBGbGU>K{RB}^uPx&y=t8z#dP z072g%1L;f9z~!m%_n0Y`t1x~;XQPqXB#=uH>>-^~FrDUVK9w$*ps(iQ5PqHrz?so! zfkd`;9+bJMKWj)QE}-#nN=Pt1R|;=hYaxbUu~@;Bi-jHDViAweb_u?TG;!d{i}2{h zX?WK}92^0s)01dvHD4+Yj_`KoVPh*z7vFx&RX-SCrbF0WF1%p<2k3s`avYzp5Ya_* zU4acKSqbOW)dDloe}oDzR^yp7#0r6P&^>u3Ms%%Mfwo}04*oXlerX|Sy_VLjjY0(y zk&jnaV-xULH;FzpKF2VL8)d=7Vzc;BMQ(wvdkcLAVFK<(HX&P_fMLT1N@RZ9fZerC z^#AcWjn+JK@B;D#^w+c_$e-MfNxnmDojM4~*q!)fcZrYq3LRXv8<mOn=dAdKbH^eg<@d7)A#;utWByT)mqq7b zesuv)jenLT(yERF>u?cPS{a_KTJwltf}asRRpF zgn1RJ%tDnVnkqX)(teOmX-H)v=_N=XFA5eb@bt>-g0{Uc0h;xaNJ1bON*V!D{3QVt zk69#=R)e(Vk{Hh94ALc+G^Q@!kufMBrWH5cWd(qgEYQ$?(@rV7Pcy+u+aNMj1c=2Jux0cow~!XqN7 z5Tv`B3lWN(wxxX;esTblL?9HB|6L^^aXl#Dl5T+X;Ii0Tc*ga#^pcugp%HdsSaLr{7K`CDSqdn93ZG65F}zF}^}S6l5Rt$h`POv&yDWk4yifuM}KN?Ze7w*$e%>A>^h_4nT#G#7v1E&D4-mL0UmcntScjv~?ZyQlTw5t96qO zIEw(Qg2A}nO?U>9Och%3*N~ck)Q*yGM0j+pX#4;_7z${JZz6SkeH(V3#@6a4 zw(x7`Q4qQQDq)!Y9Aj3=t1RUlAr4H+Y;PCN8>P z)P$IRF#|`B7*uEQ|GllI;jcF#@Ljbb_jC@Jus1#V!|gL_FnkX?^<|c=a3FcErIvhi zM|GkM5qzkAM;W7XPApTx-vtDIZdnB@<$q}2QkbUAw!xrQKvH{{Pia4 zZ44=Gp|&ThnyCjO^7*%BYA<#(S!UXxq2Z(3g^O%|6L39JT}Z(DB-sSs$Hba zS=yL2dDups!dxSHPKj>BG~Ga#Pj9R4%P?2PQiJyDECb3v4UA+GLnA9v*v6|S32m;{ zC2cpTO?G!sLtU&SW}VeGWPe9>By*WK1*;qUtig{8R>R!x%35@yI4Ma&4zLNPq+w_E zZEYv`UmRKLYs1$HQRgwtG1`hF37I+>%JmUyDbWp6Ull4*uTg?Zmb_lLx;cwiBD|)) zUDe}dfIp`hve{M7h=1K%?Z_~PiD6%LI}Glbk!mlZ?5j?f72pY|)8V-gds45T+C!Hv zErzB^Z%N50wHrz9r*_x>6Dv0e76yoqQj8AhIO^%KlD>? zlQ8+>eG^8g^~gO}z*Sw0RKLT$XN*(_iT6JL54YVlO6`FeaeI_nA)|LkYq1v`tx5D~ zwF@~vMD5EuXuNu@qtx9b%n|V+(Y`Kyr2j^lXnj8>n5 zET0~uZjYbxiRx~AK&)EIGV5r0DQGTnl|@7N^Kt6i><=1`>iG<_kB4uF5zFiqeMG!J zsg3wzrMiqE?oIHXbCcCFa$l`J4tI}r32JZYPABM|NZ#RHZX{x_fvz?dc@nfiZJE|V zt;;(ms*_lD4bG)gF^P61tK)H*_hhv{o_gS9b!`mhw(08HWZz_UV>*Qk+pU+A#L*Tq z{hihjz3|2`l!XCmD>7gPnrkyf9nUi7#hzW7rdFY~PSb_flF*FU+7j6>*YUVcPy1io z^cvd#*EgMKR z++OWOOzXi|ba^VC`!X?Gpsx4h8-4xFx3%g&^CC2$C?K%)=1`edfBdb(w3`MkslN8Hd$E-SXEkc{;`MT zxSwQ>Vw`O|<3ILmO*fw1VZaS?_mH|_!)Lu;S(cqq+YCQ;Wc;zdnQOMT8MXb{{b6%$ z=biLi6fz=rLTcgM+O?bvmrs7Heo==#&|K0=asFx1ZPNL$+P3|d}!R(IT;qN_5o%MuRot$YtOxdPB&jkKHr>B zf6J|X&F@8RuulzJM6%JE?u8K@brx=gdG-b55+mYeYr0=M?wyxlyW7@p!=}R1%Uka} z8?`w2!0__j=0omx+E+H`&XZSx)00d3NE&t>G+xypvvv>5NlStcDz~0o>AiQ>^YmnS zob~1!CwIv7z8wpHwd(E50b8ex^KH5!V}Sm)?JJYL3P1gMToUvwyFp;PN6M+2wbl)} z_{RNu_liIE-%iXr+gHAJ()+9{Hplutn%Q%O5fFmHdp_VAhDVRjIaeBL8ntF%puE-W zmR?WkIZ`)ZrY`;!Hr71 zpq+IdCD#1@kvU$^F4xHZTFfuQ4IH)o|od;d94bI4O1^u}ilKc9~2H39{|_ zJ9n1)ItjxxRyxcF;kXz|FaaYU2fNgC=LsX4(^IT`ilCn&xb-l1Mf4coG>V8nOFSAT z-{S|`vT)=Hr{}~oMfjL|B7BT5Q1K}`eu}uQ)Y$4IT2yORbJ4X|Q>1HU_c|m&i%R!( z|ACD8UH0sd=Bu)s_#d#P`djVMt9np=(Kx}K-7WYqyOH6p3D%^hNkTpY6*3id1-IS; zx~S`$CcI*IdXfcxccGN20qMujEa4pUmy7PLsxP|KlzsgANx30gaz0-A^hqnU+F;*$ zH$0bFHc{nWY1l5@<uL zuU(x8wPT0une?o)HQDeSXOk1{AQ`Q)(=#Hb)(LU{#5o%__-D>}@qfcP^KWT5XO4j; zPG9IMiR?Le=W~&F78#Qydk-(_#QNEoUzlTjW3D~#SJnN);zoVhEYcd7Kd#uXixruVj;5CS@-3=v!u1$tI&5 zzKmNr#XRUA*yQMH|HLMVqgTS7pA7N4xvg!(03VSfQZpI3)**`sT>^~3OF1I=;xX(b-!pO+#iD0a}T97%DVuFfPTXOToY1CCN($&sl3E_zd; zEq8FiAr&b+b^^ythw9fnyf4>l!euZCb^g71T8cP|RV$ z?CR?GtL{PBd-vV<`~UI%?tAaIJkM~dPKBlLCX;nH zqE$RHGr}a{&-yS?_`?OzU^{~|MeMP*Rt*4EdLfMR+IRI{3LE3eH;r{0j#5kyFTD~Z*H{G+-*ve}fjap|JUH;sKRjd6$rhi!ki4X%n z-*KvrS4G1uh+Og8M~^yo?hUT$n$D^F0j{i64DYnL{bRS|hw62_+^5lxg9EBbJIb_w ze^aQ^3Q0;SnJB&g$I@!vmzIwGcRvRlcrdk8@sH+&Y5hz#K;N@ve$01N^^%=RcoL?y zRd6eXPqnp++xG>{H-pLXX!P6_)!^ka}R{| zY_1R%L~6~Hpr>&GSK;Rd+IF0Lr61`F?|M+=6z~V@G}6{oa1O%AX4-iyj)hfoZLjhg z^u}yuXV^pi2`uloNVB|^6L{j3+FX0YISLDNEZ4thZ_!av53FYFFRD5{uXf8(FtpG* zsyIhsK^yHO`IqikS09aCvF^S{_bY{E?X?+y?oZ*uH`#m}FI?87ZejJT>a%V>bPir$ zcqE|R3DYK)yPe+lecn6Q(r~}paapgf<@Vd9%Tia@_Ft$UUb)}0YAdRydQ6>meOrun z`-}(chg4qn(@{FpO`B!b^w#1jYqJBRB_o0^>K;Bq`2_76v*Pp1;+pQx!uv$6sj}qG zT-GTx_^S&YJ8@%P>Iuy-Baf#7@1uN*vxqf$&Ry(HOpQ;@P9ZE9abVwMh4K@QC9^4g zNT9pA8>VG9PB~@mXx|RO-P{zaDwxT8uH=!V^)kK5_G~xf{%MLG+m52ry(EnWWf1ZW zDE;FwZ)Fc82TMhwUdv46mqkUUnR)jj0jOGQo|%$-fpY;-8LibB36>3<*Qts0Ev zSPyac;}+0zwWfrX!a~~e{lB}3@8A1cDg8D4yYFk-aawQHa;*6WWfZhy5=2mm z)yy(lc2RK4gxqmjgA#g(fcErZp4MDQHfSvrHq3O0YV+NQY31E^oO=4SC`&uc>T%_5!B2AL1#QiBuxdEu{0#Hq9S+qjh@y^e!)x`n9^Bg5LR#vDC!iK3M&$Hcd zU}Ay7*CKBLZ~bo2locyXC=1;rN@f+rAn5OrZz*}}mnxiqK+}m1unJ-X^@wsff)VpbWeWh+m-whZ^b?SY!KOSvL2S)O9lrYZR&;*mtUWi~7XO zIGCO<&~~PP>erk})Omj3%Um~$8nL47aI8Pnk109)BJ7F}!*XB_^49}Ibz4@h>hm4^ z(IQ$-#Sx;y@sG&W_azlx+%+CW0J1geV>HC94R0cuVa zNiB4XgxUqv5hLoZgn9zhTL~q1s4B`$XpDJR2eMAqNTzj-Xp1lcq2mpE6kxX6#BXzJ zN|?}ZqKns=xQc2Ast}Y^M@U$vg^I;};pa@Pz;XFBe1$d${wLS2(AMYf)6*5&gs=9` z#X5U`>9~kVSmd{j4vfOSiRU8uOci}zrFD_t`uE@P{?$G$w#4swlktm_x->Es(Sk4T z7pI-2>7=v=y3!sf|J^sv(yGZdTCepoS%L$hJ}bbH_}jh;%Gsc8PdC?VtH{&AwLEID zx9mB%Tf%?=2*_I3<~C_JYCBsMr1b)JdX_ebl5SR22>u(i zRXF)Q~rqWzn- zO8Al$yLt7;A-s@=fH+)P+8!KP{HV32k6W}3|4_a7s#0~cSO0WX!F(ImJkE_;Y}e}5 zuHYtK!1n6uLpEyH0D=2StC7PYq^+Pm;PSOlI-`EgQ~nt10Ks9W)?LmmV&40pX7tl& ze_{M??MUtqm^yp43eGbPl#lesOLN_=M`BXnUPHR|9wg3s0gc$NP2vjZ!G5iu?QIO2 z#W4UsQT)4IT?)dPW`=m5HM6xEq53|p4+o=+PW!d4XjQWDi+^bRqC{f>jfZetDs4ER z^>SEM7gk-_yGholodFxp)OuqPId0~`lu9-YWwPRY?@JAy+3JpDoO2Dl zdT4a3gz(iZOd1w-dLRr^zV;Xgm#!YcG5tzrXVrM+caJ3wdK@&@t-Xcsj%h!d7t?-$mlF_!Fc(M1lC+;w+0d|( z99DK@jbdIRMwd2Q&yDOE(FBfWk?rqgEaizin78-!@Pfh0~9sN zfSSW8o*{B-!&N_X0FY6JZte4OQ!~rb?Z|&bg?lGH%mdpDI9-$|%c7?xQV(VFwlh$FY&xC*BYI8WnjP^zQuu^#$D0o zL%Xf(RqcuY=GZQhJK=K4PvifjOUAT;TYI@qe|*%gv&GxU<4-%8U%1Mi`&3ZOze< zwmNINeMkEfg7KVMuIr&Z3mM}?TE0yeLV*R^0T=|L=r)Z%T%OpvCvJX3-;VyyJ={;tE;^b^FZ71&xOAy zzsXK&cBjiq#}{W?m{Hb#opWHyrtr0Gepq4>y}#_c!x9MA=t1?Ts5vU#~|hs1SGo7zP|6Lt>uAk86NI=y?N zD=Tbxtesu#L4m;6xTUHV7!nc~N=ZNdT-G75dQHiN4P$6jmi-L5uzeH_dJcw07#!5N zOAHOo<>m@idvNLR*ck)P6n0W5W!M@z)AHL%u%~`ALZONQ6T`bK<-k`M#r>*<2|1V+ zb6~B08Cu&s+!-hjd0;alo8Dc(B>oHwbs0Dg8>FB(L0-7sNcMD=pyH0ct_Njqp}hMzSX5i$#!To3=;3e{D%Vtel3- zJYyl+skR}1sx~DxJm;-I5_SfxT~ehgN>v^7SjX5b3Yq4VoSNWm+8@cW#rOrttR~M? zw24o9prj}`yjPwA^0I^!<>s%Ecc?4z{Z;OD;jy`{!~$s|ImmAbRF}G>DcJ92Iu_|g z#dTLBv&C5VoK*KRP$@l*JhV_P&)WC(ez^@GX!3UMCQm$i76t#ZM11butHAMD>cf$^Aw_& zA{OOF^hytXQ>Kk7zil*Ytge#G8K)Y}8Skj5{BK$>+mTq}m@VQiEOAVcD)evL!qOV_ zm6m`htCV6k2I3nw4pC;GU{csW%~=5k#Z zlikof664SCa@}Sm zCKwq7GrzjEL>HrKa&^(!lAXEk`f*ex z-(0st!3}37dpxBM7_B0W{~b%JYdOJQC}*v^WWtT4m$te{*Z*q7@On+2eQg}5hn?;! zD%Y{sX}xzE$H^8l_IKErcQjrXdCFhr#jm6i0rTC> zT)Q&g-C300$;Xp24>*{KPqVJKZoKCX3~$is!TU+ziV`t(IdyMZCoZf703eewK)5sN<+Z0DX`I6c6A zV#C5`C*mEZl_?l^YyF^cV|oR8v?<&rO6e?xngG@cT15_M&Oiwk>MKoX+Y$zma*<0I%>Vvb{4qQf4LH zakGNsOKm%4KYT7xl@CuQ_y}fIbRJ*AFD`qiaTdCU>1KS52V`?W@9bQyM%dTzixov` zawMcFS~@VpD?)w691cTN&|A^a*#Ly4&bb2K2!UU**@kjnfdmr~hk&>)A7F(1Eg)BR$(C;fubWwCPI=4FSugSYG>xTDH%l^e4YFx zAlx=3^^%6+ns((juABtNXfXr<*Vn~|YU~FLh z5hs5dQf-Iidj_QaQ73<;KWOL>%Kd((H`h|abOfds1=Z6@v@JJ5LN5Y(Ekk?5YEW$Y z3o!X~pz};`)6YoSRWeemL6s02i4wX1|2>lZi}BNtnMYA!*W5)`(l&}}1Pi1Nc*gF; zdGG(0&VlXg>ke>GpSsjQ7sSzmQ<2W{*BBiO?$Ov7++&3?uFzZLng7Wq2qXmY7|m(f z$Ibqqbr|D}1mZ%8Fmz#o#WY;?^qccSD%s9??BlNrP8x;xCK5i+&>hT^c;@}$I=l!s z*17)6;~j!nDpgFOe>Jx!%6(2x(kyZ?FO66$C@r-&MLxB%ElnpN8#_|=vC5_Kvnfn( zrnBO7L$O6=VgJF>0KUg|{BIbMc7mccibh*Qhp zfk}oX2=y-Fe?u{K#fVeOt{HJ^S)NQbK!zm<6$|j6F`X@B5AmPj)UwA$oLW|h6y9r; zzQX_dV(Og{rWjqWz(x7OLy)wa4@TvK6ZJ6*Dz>qiwj>V|Tel+#V;B>dD- zw~B+3c&G1mqky~cy>6f~88ewAiF7OyaGi0TbptuBKRxcEtBdBMcqG$tt%9r*aKZSl zx*xcKr0%9W!et8R)PWOwNEUk#(8DG3XkyeQ0g>Hdl*zMC%sMRK7k{eR*+yL9=%20@`dA ziu0zy_xF7C*&9@xKVNZSZs*YhJ&W_(emp+p>Crto^M82y)4cC$ZSEPn@Sb_c#XDLZ z9q_SCTaWfz*FN#fTJ-Sl@v{ea2EBZ5Q@?BYxZ6c7KJz0UFL<~9BUJp;drxzw2QRy7 z=w+g=v01Q9opteJVDO*2VcaNqQdn;0?k-&Kr*r(G2AQ?f%USRrs+%DH10O21dbO`= zkO?B?P^kso8m^00_r<#v0Wrr~u$G=ftRae2Lhz2abSWWH84Sc~BSI9Z90KC85s^It zbb%Q@v&eFEa)i#y>NMW+S0KjOpCcWJwSwPNNNSWh*mIv#`bcc?mL8zjDQFb7LDru# z9{DLO@2y;olT{yyDU#3S!a39Kj*Y`4ag`=wPYAY6z7|EznS}gUJh$#3V(M0+q>d1$i88M$&<3pU6@=hp|f#oyo zry2;<942B}KX`(Euv+z9ra2eqOs7fZ}3HICl75XIVY>zklkTR9xGE{2}LoyPNe8)7_SRZ zu0e&Zls%BwV3) zit&bfjIU9+&)O$Tk*&E;U$IIit#p)vWLGoB&8`hpV+qw;LXlVQU1L=2`Nm4CP$^5Q zbk6jA63Pu*=y?;kAQ}s9HcZlu$j5r~yEYVkkszw+{Kzcm>d#q?)Ij zP+;tFe+4jk66TZCmI4D0`cU8pen&nbgMb;+lrcBmGRg-k zxu&#l>KZ@!x~BBeeX``3ZD&&{KBk!otcRLOjL!M8Zxq%@s6Rvb zkEFpdY86e}*00)M$Ve%|G1ZM;+ro5bqMULg&pY9u#5kF>tYUzQsv}Sxx{G5Z>Q#6u zL;+V-q*yrvr7@fP8w&EA1`bEsh;B}DJ-D3HbT05co!8Skt~AtBX}z3#mbEEWz!;`t zwc{5jvr@St`%h3$`bJ*326h|THzDZ%!VQ9I;q;n1psn#VpZn<)Z2H65R)G zDScR~3oXxtm}iW?TY#5Jga=m^ffKZ!IaYt;kf?EJ^(%YPBNWkH%U7h~I1YhyH(rKh;GW zj1{{4V>i#ZY!BLLsIQ^k8+CE?Vl$q_@r^ov@uExVz|UEplypz)Oq=(#w2>sl;vi>C z>1|0}H{tSa>B1&mZLxmWf9!q8X0TVaKSDaqW$CJjbrSxu&g?85|4#zvGbNs4)-GLT zN%ZWtRad~pk;yjQ0>He176!i&4y}LFU6gK9=6>CL zUHM_{u57A!-Lm-jF);N>UZ~YD*W&!N)l(AQHSz3TobPpS`J>vZ)YZlLQ4RXZnvSqu7%b)&G&PierkPi`_Yv%CRlzfS9oiD z=)pwq9|L@v?a}G>wn+>hG_cdMh1%{PxJu;dYBsarZPe31pH81|^1&Z2G;6bY^D$qp zhGK86@v9quc>C=B?4t*iKkllN@IK>M+h*(UTyXGTJ8V#|Ax~Q6IvqW_&h=wNQJQ%@ z*SNXk*PXuC<9<5@Vx&%0HZh zLQ2MzQHUp@p=K0s);d}qXiAwMCi#invj@bz*ZIp^n~4-h(}h@_zKN}HXBt#d?M!bD z+tnrAP2KVTdm5uHvm2f$5f`*8_gbKe2|lMlfZEeK_W$=Z#J^f@#>Gsm(51N_Vl?2P z^p-g|Bvtu!r1ikdO_uGf^YgkB&C~XMlVw0-8#kb8y@PurS_}8y-Hckflx+I88cwga z`rA-^h`T9yG@oc;{1|Ak$z(Uu73jXY!P1{v1gSz;&9BZ}tYmwkqw+gcg}f-}*G>`U ztH2&`m$L(T`Y&3Tw``fC;4ahc+=<>&`sUZP{H`TcfmlEc-th?PEkP7?2_{al(9diS zH!@7aG6Ct|tupRI@zNJcnBO7x-9E@F#Fz=A!G(Zz$t7GSa4H<&>oqVQ5tT1t^xrqx zT(sl=&X%(IpZ&Obl)G)kx8!N7AL!A$x-a!`b%BRpX)R3`6f%fS)~s1UavMd zydvFeU7$zjPSwA^lHmP=?~NhV(yCNAY^fBo;~(w3zNo|5s&Cfq*hkB=HVo&~#NC@% zO&I+~H{*+^uUXdLJ5yR44+TZM)46|9!p}YC@9Yo~TEZowLfi`mOVkk+RxVJ`iVu@~ zMEdA1qmKeOi9Gs-VMmkR>sof2 zoHVP?m^ZC9ZkQh8(nr#>IN_gbN0BCzZA#KZ^A7P}$)SXPt;*U51%5R_E-!uo!7w@Q zdk5U{YKMKzEuf?Tn(mOb(Ew#QOmQ!RaDne#QE4Ix!K_rFpj;Lk5jhWlI1GfHjab9x z9(Ww#(7Nz|ss;OVAe&2CSJew-YuQsdIgbck_K36rTQEj34MSSvAljs;_hNp+93We9 zro6Wkp$5DcI=mi`#LRG&nA=%xtQ0C|NMGugr^q^^y;SQU)a>a_*=L$~L0+`QT;s3w z@L>GuFRmoObQRH^fbK1!HP4SJC1e_qizQ@^GC-+9_PmFY<$VL0hf-N)jbTcqr%dMN zNjaZAyqVagG3jdzgA4nU=5#pUG| z<(_KmO-U#3D=@yOnupz*ES4c4*0(T&5zZ=kGtP82L=w&GS0|e*6UtH6kperVt<213 zHrbf+&A7$X#gvbee~*wM6$6~$151p+@g8AYnesuDcTj{Vj$$% za!Ri8gk^)6J#cMkHZaAARH(ipZioC4G#r>hL|vn+r#Vo8W%Uq(Q&e@0!qhXB*M&xv z*Fq(6tbTnJMb(IKf*X&K=Db&{8u*OzI7yz&4t{r4_*Xi zkI!r;zAP-dU{CL5DGF+DXHS`2nyFCHn%}ITT1&v4d}PP}1n%=Pd;T7`kS00si6AC_ zb>JOr7(=)gx?#*`D_9dRBnL;nVHJiB1G+YT;rKB=HRDki;~2h}ciqI6ZsiS!bBM9^ zRa^~Wha->37^0z0CE8Y&uYoH*Da(hNvp!j0|G>d^p!>_5G-Pn$KS~sC5E^W8H8v2( z#+aqB39+5#K~>7}c@ky25Y^U~H&zqJ^GBX)u+YMdKmX?n8b5uLt=z0i-sr%ZV`_h< zQJ#EYzG{Fby-?y0`dE;D=TI*p&x=2-EG7X8JM3{5t_AShzs5a1u-mV!Q(y^}h@D6T zxIn+Lgej`}F!&Lv-j z8|b5wF=~NijQSLqcVCTB9ZMLa8jQxMgn@k%M;!F7GJpNAHsMAT7o&EgU$1Jz{(?!$ zd@73D>;I^+D&xv@3F7}Fyl|A3D^glfVrjWLe{*I26Sy*~LwPUjy4b3=V?i-;W&UWG zN-#{_M%!!fnNV118^-T1DWVORgs)jO`2uN2D`A;h>yP5Wl9s9E!ufx;Os&oODruQ| zx;Fn`Sf+0MHk+E$_4_ThZC{3cfmx=m%YC%@mwzBPTC*;U&w|r{5_&e4o9VL0cByAN7w$sg)x6uSTgiqWN{-g3I$Q zoiOFY36rp)KCk?n*Yi(N*yx)m(Ug{iFRcf1k=GM~5B$FpfNd`Ix0IYbx19Cy+8zCy z+zmPr{IuKE`eh~0-Snrd9(vTQ1h2BldfuinRnCtqQ!J_<^ zxhM#gv2UO%RCIS!RF#x+H2C~0tYk13>Ib^w-I@Q|w_7fON@_s zkdF?a926;`tM)K}GU2K*Be1)YW$i1FM|+f1fI4>tN*a>lrJ9ZOnu^4a3-?mKfxVT6 zigLQaVy#1jLgfR~s!`A&LK6kFqu)@%g|)^abrrBBtCFSzimEcN^-;NKmA#TV4`TU1 z^uWV+!Hc@!yh3BT5=GT*=AOYE@i&#Qt$^+N6^la~t2+_cw69p4*%)>Qum?pfWya;f zEj&X$1oG9_s0lQ3DpApYj}`@L1y zkbE9Y+4o0zE0Ba@$&+MnQ?C$M*M}HQ(b^yrPw5P=MRHa#egiT)DWUUzZ}}yJ9zgVI zy8RuTo9R09_FOg6#OC*B`@^v@B{y9N){oET}tx-nDyg*xynM7e*7Ra z&Vvq&;LFjjAvj`wCmmE{#_?()WGHXWQJe9+y%0ByPm*(U` zH=!gQA5GcI!^>0Q`6?P(*rBc^1#0;nTsf)ICoMmO^An&k3>UfOCEWA*=(dpOd(-jq zl`9Cmo)6|YSE+2!eBOe7G4Os|MRv&$q3Q(QVDhI5us@WZ>RD)A&XiZTE{qJDL*`TX z0Nt|oSDv&zf63w9rttJi)Ae?p*B!2Mc6PH5#rb6^z0WR;SvIFQUo|zOvhaCsl126d z+dJ{Qo!-rQ5g4AYZ&jSXUBR%mLZdV9i}RgiF@EvadXFs5zg$#sCsVUE-FzJ3h%D)pjoYT-2uLy6U<}|*AWicB% zGa$uTegFc$s0@4JA8D-Tz0=zZZ|3m}zeY1)2NvfVHH?wh7_rtwB-W<3WmaLLkHj!V zqL11h#F`FL>Nzf?Sqxe79*BpBmZwb?i7AUIl8qda#w74Ts3irPVziU4g} zZ@6dlgWDzM#9~G$MGn-ssZXHkcF>cEMxDvpo`KC*a=7FZitpW2q1sYgCc9so3Rz(x z((~c}sB&vBrB4L&0kHgV7<>RQsdj(lDU#CADP`t>di)Rx)7~f;@Xzp4)r^AqZnR|n z&*!&O$U8<$K^)>f!f?NLG??!7BI2b^Yb)ip9|QZswpI!j6L?t{d)mC$4&vh`u!wSW~|3!^B$0GUEc?+?n8`O7jb6ARie)<~q)M<$MP2cS@t z#t%YXTU@vp8IXPhy1_;d$y>3cnVRaYMA9sdA~h|&O#R|O@Wn}esoEeDA4j}pOD|4K z>9>0Nt1^IEVMJw1s4GChAAF_~wICEnEoGUO%&al@ZKyXyOClx`m>3DuPr?iVMk`?! zOPE!_WJ#E_66O*xcO;Aqp2#ZsE6rLlGd7#|=s8%z)B*-Jm<-cX#8AIwvqc*|ESW(^v=hPRU+Z$+9LR(=TWjy^%BuF}}SRzpmGAy6;2qCzJvC`s74ww7qr z1$eo?Nh}TOx0WBn^`Luec^%hC=(Udj%vm(TXVhy%Qn#e;y(sE(4cM^y>Vt*s^?d$c zam`#F;zRy3UtD#J8s-MyolIFGttyc=Es-`Wkyazk6dPus zt)($N2kA1#^lGG8pd41`64Ed6s|FI9DL=#w8Qf<`!a#c7(>l5|TlT-&jIOja>;Dqp zTaD}-Xz<5QW~F%)rB$W)+gG}a$2T%YG_FPe=hld22LI6-vB7rU$Ga@PVWwGe6F*6_ zf~C~5b7G$1E(kNW^EXtSxsbSrca%fzivJm8vxbiS%*S($C}1CGE4I{FmKi|FcDCi9 zj(U0@@5Nctulx8`OohJQe!iX+tHM?owwh>Y&VGKq909Y6{G-bX9kO}s_|_D5gg=S? zO^))j5c+oZQGNnW>yF1j&MK+SF?9KW;*ar_&Dmnc7O^svag49WMG4oA@wH6Q#NibG zNzHIMFJ+BuTq4ByR?HAGY| zH0(8qw!A#!AWS^Nhsw$R6mLgo&hhqgQ$NaX;2+MQe!)gZAvA|yz+ozKa`}f)JK1%f zuY(zRd!8SLrFy^xjM$7)0X*4FTUKbRmUXhhf+>3f5x-p4!p1??+NL77G?=6F7x;P> zCFY1){^Dy-)h_Z4oub8YB}oH=n9jx~5PdWf(l7D}a?Vb8d5Iq*ms`S_TcIDue3eHW z4I82Mb-ohEsfENF{9cZ;AirCDUuYty-r{@8)qb@6hcW?F{x*M;vl2es=Ff06>;dm0 z+{x!VbDUC$xXah%I8*w3k9VP}O1+t|sDSUmaVi0r;T&!cHOdOJ9w2nrpPnz)l>U4n z%q*uXoRiq5Wxqie>vvbJ?@@F#f75npm`U zjM^Btb?2a&T_!J24DZ|V&HP2v*8i|JdCMUNRo)kUVg8sABJ^&r2l#v$#{jpBUS{M`2T`8#Kxigw8QWmjRhhZB!gK65L*QR}02 zuY!RTYaN=M_0Sm8~9Jqxx5OW}C&sOnN4B5E8Y**OdZWwDFM-u%aB5z5*=c z6Gnn2&xF3K@(%d7yD7OPNMrtlzk+)MJd znFrJ|yPDB}$(!;$82x_&^#6C@?N+ZWF`+ZZA>_;?N+_ypyw)^udlM*Kv&nd^CA0;7 zO0M8nfb*-ZnxPB#;&#&()DS5Z1auk&qn>ChwE zWra{aD~xQ3<5EqWxy);bGa+wKgLt#qe##~|dzGb@GvLowoVm6XG^Y4Mox%`PmOg94 zz2W<(W%D3uc9cWmmqSMhecf^Wjxh@E9ObemEaH*!3LJF=P|=S$#<9&Ho62X5?b2|P zTTEOcYsbd@loD83);T=D!a9s!&81;3#9`N`WbrhHr=e_$Q(ilmIJ>*6;;~+>iKM(s zQ@tp&HG+o6gPa`DKsq{#oo*nTamDwW)leqm8%a-oFC_pk9!0a^ZDVd@X^!HvacazI zjH7B3%CpjYsZQgFRxXB;23NzO3Zs-;HfN_sKa~cjt%BxKXC72EzIc*+aL)Qj`ENp{ zyOM{+5`Wg+Pgxu1C1_Xoft*7OA=oBP>Zg4i+yS=~uda^8?exLvWk)MYvc|$EPoHx?GN9d@oq|u=4Sy!2CW&-gqaT3hA z0BKBqcMPgK#j`?H4`^EVl%hbfxs}U%k;ejqpUSKk_P*ZYTdss<9=P^4!FV2`gOvfj zaX{=NzOi_OZc)ZJD7_Ef{k{w>U(#2)pA~)4eWLVIZB3MV-jN8`GySCRC-NX3Z<+q0 zgS$h1c-5!CjBhmZuLqDuiw|WW1+{MDV~(j9G7w+SAmeApj0(?EdX@`RzS~+WR2K(f zJ_b`(P-`y^s_I)@q=y-lgyTfAbor=c>78zn%v3Tx&76&oq~#Eb&%q;UI|Lj7idw!6 zZf?4sRH!-*g@|e>dDvr?o*>Cv~OEqXlq z>=THdHBu(4JW8CSMB)s_w`Ybi7kzd-mI$p>`x+H7 zJX>&-x3p|M++tol18;Q1XLj;a{icJmJ}+Ldj9$E;(oWCT!7V5JF)0`E>UbOQhz*qI zgh|mM{c-{&^=R(J=_tP%x@T^Elv5`%4@dbA+d;6_0S+PY<;w3Pj9H^0O2s7T?oiMp zW0Ac36ylc;^HU9&0&&??D)emOB|i>NeZVQtPi1PUxnJs5nNA*McKWHpro&bsC4*I+ zpCX}_r@#^845>LcQ|i)UCLYr)v09&5>}I^+&Bz_`IA-DNNEPvUsU`4_QnCD{i+#ZN z!g4lZQRLVo9o(?lUsrqiq1hB)=8&KA*le)ODB*1J)SR0GZQZ#PKR(4vS#d6NKhB*) znfQ5knnDHWbdFg*u{Dp$)e`9bqZ$vj+`2@+dgS$zA%(qXl(UM~_cqlQ`8Smu4@<}X+ zH{+4GOv7#b8GGiIlI8^Hy`uBH!1KZa8He9cA1Q4rm&vvn({C|5%`io*PDi9;jOl(z zzr-)--#>QBH&KB4SL>;k)`sI>E%qvHkhRkCpte`m`@-<*T4jAOj?YO)4P|Nb{;3ue zR7L+veg=ZAqXuUoqN?6rF8|$E%u&^|dP`w+kiHftzvwNYGEL1b=t?k}+%;C>H%(NK z)f5wRdKsdBBS$z4))N7(A-n4Om-72kMZqIfAH&JF8Ot}F)~hM4hJGfuOK=O*+i~(| z#*)EPOe}*znr3&c!0dS+&BE*!3_ugl5r zNhrZ1QooRse>7J3Z4fT%S1`euZrAd+q!y1`RFlk-vm;Ru6RkfhFA%R%jv~+K6+-QL z`Y=xZ*m&Vs98HA<_4P$^d7juItX3N7H*?J>uCaazLTf&6tlwbH)|FlOH4|1g(btg6 z^Nm#to9Ta(?-IMR-_czEhLbllmRQE>_oMacSp7+Fr=Hlzf%6mmu~meS7H}RYPq8-#s4rJ#QYD_HI($~lr2ScvGbtp zGLaf#LofYAIj0bU`s#7QYE@>M6Ma7o6V#@kzK>jf)+=KeL~gkQ^wx6jwU9qZe~^>^ z=F5<@XPSu>9Zk|FaziOFS??fE@?o*=JcyrG#?0ciD+F4Yzo9;m?{x0wD$GmPn{tT2 zhd#>Exp#ZiLiP|mVhZl3cciE6lJ3LwwK>|T)!UM0m|j6Kr|>k#4%ffp9tlY!^wu2r zMBqp2=W+6+5iN)NizYy*b+;tQjkYg6dYbr|VY{>q~dJMm2^v|FXG+^IXvEI?j-@b z(r3N?J;*%t;X-y3^sl)>DgAM}iH1TZqCt^_h?u1RL_U-Bu0n^&`j#99i0eBF*;Di{ zIGhw&hMJ$y+X&aD>05B}=hDpx5h?oi_gs&ysVqPbNqA9s5hmsr`0`EN;@SM*Xg4 z19*P@>@{Q8n=Svj;L0$Q3OSF0ULL+p1)Gmma{lFHtsh71YI-JV!Hp;HHl4aK@bn$+ z$Ezp%H+|@3(d6p+Dm1od)ioR1R?@BLH+okc>+dGNbKhbbJJMM_S!>p$Wmd1HCyfJ$mN4?$&7cZDDb*p&X za{8RAzxEw9b-6xV_G)HK;njo}%E$)OPhP(}+N*kg#MBcun=cOYeBrUC?#Je;hM_v2 z24hCp4?W#cRi^Xq2Pf~=T(GH|tX^5e{fwny^&Tv`w)@b@os5W zP4V8Ny`I&(!^1~@5d)?dc}$2te%d1Ks71S<`zgww`?Rk~^L$EKt`E?iZ})1ajk>z8 zX3)T>2@z*PCs*wK_QVJ8f(^6GtXlC9J5kFs@@udf<&Zdd54VS6jDeP3b3 z?$=u?~1A))s^pbc-8CiMR!~bnhUk-Ev;I#zHRVqp6n>RD%oPc9fSBJkRPA-V5&|NbzeSryHZG5sQTyqPey%@y;8OMbp;v#ICC zedk{M>UivF+e$OW{P6hkPd>G^{jaG_+~;1uuKQtT3oq+RRYDfu=<=|}(}%HRXJrKp z9Wt)zQHMSobk`k|8dX<3zA}1ZF~c$7^tE}PcG&p2d{<}7p)n`>Z(eM=KcU>#@Lzw{ zgmyoDEvD86|Dqt(=6A&x9DTOQ75Dt#wr4w(U-o!w-_x3Ichb(B9^cS-hvl1XTQbuA z`bm%C0bEWlvMP6i?yRN{M|()T;Emd`ZtrWsf_*4ZW2bv*Pa4*zz5_M)g}-H$L-mmvJr^ zAKh#6=s}}ZgGb)(ZPFubOJc#~xqWKJq`%qmKv&r@u+`mqi`BfL*iHQl*?tDV-#J(>@?liBXf_A=p%jt#$}?!P@X zZHC`D^K9-#|9S88e9GT$v#90X_8XS>oDsI|dQ=rxi%pHZR_}@mc6kzBU^C=|u1;9{ z8J&w?S=qSLgX?FVIeco>WUE)PpGUc>Z>E>6dvwbHA$*k{PBo?+9N4b#eoK|4$Xj!z zpO0X&M*qgMn4#JtvaPdF^|=1Jx|pF#2@`5MJ5&pg)L0@%Mx#Yz|9QXU9jC?6TA|?Pw)@Vg;}DMw#5}Vfc$-c~ za!oNl3z@yNJPLsmu2Di_eShU0V4gD!I2Js#AuKCE?Y4rkn^0t;DL-20Z5of{FyPbM zSa>R#`tMRoXZXEHo;KoDkCAx;jj*xvuxJy$Y)BIL@FUxF>e*octef?p%;wDpl9gitWFV zX=5Y1QW?*eR^tAjaPSRpJG9r3p`Cjs4DCBSA+bm2`h!Of8ZbDa=g`i76lGWWXWJF= z)3l?@d3ue>EngXBS{!!}KIiE-n{d~J%?0`?CRQv&Qx+E3jri3U>OIt_D!I$Tg=hL! za_$O6yw;ba#L3mlBNljwh6WevXMx21RH*lZ7|gdwKL%=_nML}J+*RSXB7J=mKr{*G zB(%Rx2YifB$&$H2x3c>3) z{oOw|<cRg=f(duoTGeetF{`x+{Jm99Q96i3xMe)2iS28%+mX~g=OY(zyi8k3{Og#22lw3%r<0~NH@n%!9W zK!u5A4dbwVYe>VZ2}F=NF40Uv$h+2%x=bprIn7veiLs{1W+ZH~aj}C)uvwCytszay zbs*SyO`aI*(yP^R8hSn})>&>BCf))aEML!-3TMSSngoRzFCA$tx~Rypq5V^0o#fra zqzM@tMjCanAHBG<-<5Qli1=4y^IB8YD!a*Vk|IOf`m9XTWd6enaX){=B9%$%U9&8nURO z53`w)c~buIjSwL1a#e73q;y(9pn_{IrP&L{b(hk4(;#aYE~YbjAvwiZ-5b^CN@>5HsBFD0);)|%U;x`hG1bYA`aY%?A^e|%NBN;7-#b$cl5*@58kulj*-1q_#>>f<+ zBf_le36*E zW27|CzL)k=TD(YKF|EWI0E!E&Lvab?)=6n`Ob4ViTjb!&R=g5VMbk>>3 zi`aKUKAY!g=+-5*vq@~U^t#BqL8qN{t2aV|TD!P%qk_1P9F3+yy&WJ7g*aDvEt;tz zq&FD?$$L9UjN8Jmj>ca-Genzs!P4u%if?8T9Vunsa01vfl ztCMa`zS$Xt#`qa}z;@)8pP?MgNvL%oW?{JBi{fg1pHQk!N*M=aeMN(}_eGo#cj9@N<0ol&vXol(3;x%} z$A01=3^{4#TC3v!>b8p9NrOl3S-7LRxWY8g@XLG|; zrN^;Op3bXg7tZQ_Cbeizm+V1pPUQ{?-kH#Dq|JgOGk;}9ShF<4z&S<-5=kG1kqRVyQt)v%?s zrugzB7i?1~`+MLl4Xay(ib}c|3=fXro0$1XYCJhb__F6h!0>`vu40DJO@}B{8cc0% ze@SyGYxf+5suGmqb_7slep4}MlM2gUS1NkQ)W-6l=y4ESjC&O*Zh*#1Wl~Wl6Dmqv zoU8&A-UecDC5j9MA1IH7#w4i3^{+x6%fRRH7zsX(J9OGsR;5B%P)kNLw}J2vl8kXQ zM?fH_1c5*frmUJ4UMdy`eqc39dcDRAGbrk-iCR5O%e4sz%q_>fR0~3(H56)$c7G78 zqZ>faBB4eRg_6+%F zvC?#BJ@;2CpthAt2iifyFl|5jUy1zfmeK$OytwsRfl<|(3g2LU3Lk7%sD`wG3Ql`T zmy3-s6oUEp9gQPo&nu!6X0$VUfTkI54yBz&U06gtn~UAx>-OA1ch-4^@*S*jQ~z1Vb-TG-?+Isk{z^6Kxp)9klqo zB!y~he?+PpK!G*TLpe-}K^$vpHeIv~YK1z%5~d+At;n+_Fi8?-6fhIXhSgaiVRis> zP^yD)R_KTJ1+MbRI5k%Zx-$EQ+D};_1y7i`)_LB_Hc0lR{B6G8w4qgAB`#Y`D{ldf zcy6sQ=%kPSDyf+U7A@syIhx69&7k(5*zYsD8v5(W8K#__g*5BYHj17&tnC zlYX7Dxb_X8AAYT^N|pL9105|F(myv|GR%mM1Ulv`x?d_~?)=4H0jyTUQrc^OC1 z3g|2eE#BW*39ot#{F_us$H+bnnrsF?xkDOrH0#ARrl7)h4s>?v8e3HryvS$LL?TRu zB~9Mm&fJC=$jEu|xh((xiPX2aD2ri8$2Q$h(IY~t~b{JadHppdsS@g9LuoB=l zz`B6j0iywb0&E1h3osUNH{cI|dja2HOpDpoQ)?_VI{h@M%SwVANKrGBm?AMWw#aO(v*>-w(01c~Pm#wBpFu-Lo-mxUod7I| zZP`>ncfe_KYPrS6B+Ac}h_)ABYmzN_&=8f7bH=cNP1E>u zhPLv9z7%)G;6zW(;gKjQ(`*79CH-uGYl&P#1@;+e?i%drro{vYVNk9iREc)0FByWq zmnO3UrgQ)XsF008O2X-ok|ub?7u@X76 z1jBVhq6(^BPxB2|JsHJdsdOziVLXN`oBiVaDZG~r#|Lo71?#(p*&I_fe`s)_y#3t11_ybFbO-f;mu6)tQW6d%j}dqM3+@h5{mJH` z!Or-;rhb{Gm2B#$=0m)%X9NtQqFfh>E3(fc9FTpXwE-Ig4gqBAPb6R~z-Yj(fb{^` z2T&gn2RK_ItD>*t13;J>^7YVeWX@2*Pr z1|1|kP6zSDCcM~SQkqYwDO4^rAX?*5spSkSb2A~c$nb`vv=7@n%1;=rku^`rkLj`9 zhsWicq!cztc^;GUTjP}X!(g%U(%`0hR1+_1;}mYU%mZ-R0H64jzKVyaESr=)OcOP; zq3MDNcTDTgtR#;*@ViNaNpGyDzQJ7$cWj(uEmre2m08Osyfd|)#6FLh6sM5uQE#I) zpo?Y0`b_wp8(ykogE8R;2Bw^{o}F!xlX9r} zq-^U3CmT$9X1y$X(sAoaYV_7TVh^|_VDr0mh=)7(O`AMq%hrrL@B zvPZ-4|81iIGJs*O%~MX-pEk_LBPQjj)Jz=Xqc{{!_}zot`%H9hQ?uJB>xp~Nw0ZbP z>xpSdH2#Yb{=)!`;~U;N<;>2{pFiu~Uafc}%KI#}cx~{lxRdn-108^vlp{@2&c&oW z69*7u^82xgJ`B%>{G`(EHFQfe!I7%G8mkHj$$pYNZLwI2`hR{0co&zMScY83gPP`MJ@-(`A#(q?t-Owr0CVtD$fEII z`k31yC4Jz@NDUWD=i@)iDP-XoDf^%lFvKoy(GIEp_$g%H^w5{mT%@G_o*^|? zEVaVhg{w716IUdq;s~UquJKVBD=JXE2)|l5P}Yz&VvEw3zb&ZcfgE;o*(vEw_kW8I zpssTrm1T2Wi*4z+134`p&=$U=8qd?nlM!v?l)=s=2F1Z*ak9LOEXszx3DO@$H5q0{ zS*s?fsp+X5YCnGwJymXrkOae!=46S32FO?&cH33O(s6RKd9>Zje2e@uCzn-_ccroK z46Zs;u~T~xZAzIV8VtmO;*P#k8=M-96UW_8)&}F1 zCi0Ih{h(c8hJM&4_ZZh>yBph?*lxyf?01ZoJ501A&5m+qD5>ctGZPGqQjbjXrAkf{ zYN<`cOJEHTp`6phoOSHEvr}?KblcNdcAmrXjQnN5I)GOI!CaJG1&jy00oVf&ixEE> z@HQZun)`rk_j(Gr3lOiUxct8WWRLG9patM7Kr6u4oJ z1gsDE39uU=rVm#AGMNeBYCsL300>fn{{_$%5QCH10~P@~0ODdYM?m&YI03RJp#Ws> zj#AzS1Tqq!F!;)VE`ZqmWS)Sn0KEX)0QvwX0r~=BGm`lMf+~~+0RBJhy$4toSJyT? zb2#S!hu%S@BPdvCVpl*>q$u{TAodFO76DIFv0z=s7BSYuDAt1w!QKMcODxzEHHy*L zqu;$}&HJy*D{Vc%=*GJEFC>{)y5wbz1FhewD@&p;Z06mlE~cR1;@ zkp6;{y-{$$x$lS*jrcIVMo)I9zQSR~K_4a{1^0CsZ)F*e4Rm6;{bjrpWxO+Gy!&Om zU+B9BTGuo-6A&vp>5+nCUs;hCP{ylY#$)3U%T;jfYb%x;P{tcq#+y{en^VS{U&h-d zBKl_k5ettCWd-o`=o`OR#zO#wlKn@j^@5C~KOLkbeJKbBdfw179wci$53;nrTo^_% zv8!x66T6>K#_ME6X}7L9F3EOsq)7#JEve`uzWyi4Q=+Uwicb*JPBAe!-DVknA||G- zLdr(O6+4xidA)cR0a_eRv3pQIqGtoKXHd$m2NK8Uvn-cx@yZDPln!U`lcZ&%IcKof zBW0uB2Bc9)3z2q3`aM$i4sAxtWaS@_vQy_)l` z^gg5qknTrXfb;;;+Z;Xy2LaflaTMt5oX+^HPA+ z73m?QUPuddHZo=KpM|I+>^3^kR%7M=M2ONsh?>hwB-QBo$LaREmkMP(YcA3Pw+jnU ztfj9llt(4UtJCdL-x^fq?)0v7%Tnp%4=GppZSahx+oA6ZkOm=Lh%^K#A#H+m3G|gs zt~%1}#+U7>tCeyv$qv`6Mn738t5xvLhKahZ-~QdjQ?1k~By=?xVyKSwU!Bf=HdM=*{DD0+*!pLBtR2)*S9?shfhm>o9|KelM zrWqn{2@o3+q}+1+7aw~(I(o?h1G2sxhGKo)Kp;^-St_DhsB92H`T;cKTG`;tWq(B| z<^gIu(&JRyPT5?PKA3nRN*@}`>yN16nZZt}kU+lx>BE(t>_22JnJ=Ml)+(#g$Aw4a z*l2C5a9R2VA%ne;1IXQ8=@2kW;?5g$d-zFQm?Rn>@(3GeNF%LrD!83SPJf;W8S(gZ zx2C@K${nHzCG#-PYySpkKn3vW4Ice z4kF7#Nb2qo8sd0g2q_UZLr@MQ0{(O;Va+9S4)_}Q3Lkx&vVKT}emR!W(zGB}K zhYuv1^VH|9x#~QV7KVV?N9YWzC`v-_*g3e1{ATzk;;&Y7!1lH&4$5jBdkg%bUy^*- zH3bXV)db0hoxi<650fn7$8i?I{rZdG6Pi9p5PSx%6iU`A6JOY8+#vWk|3zGqTNtI^ zlbf42mofp&Td3K8$iRWZX_*iy7b<%Cr!s(p8E zO-7oA6mxk9Q(XEGq!~z+NYS};4N?tKCjMxVu0T2i={HDcB3+NP3DS*7n<8azJG&F? zSzds{jCy--H`DcUQJP574k1%uGM%S@6x<(WJl@E_v(O_m&ZdkPQ^sps#_Lzc8(7Ax zgP}+~N3b4Ysvx2?2x*aJ%(i6(JCyPIl=0Yz#+p%Z6U%s0%Xm>C=b{5nMP;69lUy8~ zc?ctUbmJ2dnTH~*s35xWDa_AXnlU1M-n*D{t$CB<%~9sI ztJ0lssN>y~agu5t3eKayCFc=p!FhDBE43-HDz?Zs6Q)Ij$@7JayWKsU#)$KjNjO<2 zb9P=VJx2uix|@p`?DO$8mIv*BbmJc_Y23?&;w+Ea>ob|;yG_ibK|fg7Qt>ZV=G5nf zi#_}&?ekDJrI?xH&B(}8>BoPd08eF2T0e8VCH3=EdYCg=#Ym7xC-9WfXP%qHgr_Z@ z%0Lvog`)6(7V*x-mA=k2H>Wel8rx%&OlvP?6q(kUZ$_I&BkpRi6OHX@Q=%JA?4|Ue z>g#S|?`w5mbF%bSLQY_0@nHBM4hM*L0Ep}yZ_IMXP%nb>veqpber zkj=~RNLJk1sKNOb)`>=clZ_ed_hy)NwiW^;J5jt=25`?^!>{DW%rIwIeNJ_<*QMG2?F8&w2E8 z?wx>U&j+8mW?p>$yCZKd&il%9W8SsR52?5>!li{>4K^A1+tcONOJiy&udcH&HPAh` zE%5!Z?){<97S)+~sN>?-is>aAkG_of&etsL(d`9sKQG@@XV=2aScqP* zU)m41SG6kr^}E+3wPaHw|;$2 zZ^_&c)~H{#v8RI?WsDkl(KY*8%#A+#VmoBMmvwq6YwS`*HTYf+=SfSW_ttOqeVAnE z+ZxHE0~F00ZaGu5Woo->8H>EDr=2}Gwbys8yB;3W&v>Z!sW$g&e|Kr*!tc(-T%?13 z%Je{+#nZYb@~(ODt^J!GTH`h6{*dqn=@B!l-YsZ<;_mC#W1Fpm$x_yU^s|S~K3m&4 zCw@b_8cN=J-i!Tpqw=knHES^b)#K-fhEd;|%0QFh=e>We-_6^fvQM=chv&cK_Eaxj zU4P{XsX3d*TjPy6o!-Wqf;Rd(%knX91X6o5D|a|7P!8tJn0Un|I*U5oqKH+qp(5Bm zNG@Y0GBH>UvT`>!j4ZMr9qLnQH!o+MU668?iS*XM4hqU{s0@}`?z1$a%MF$O2}r0vXL^#O19Q=W_4(0#J{Ix6EWFOdZ&H&y>zQ*jti|i*4)La*RiWUW!5iPWJkSu63Pr-My^Y6nZ|imLGlJNNGtfZW=xj@0Uvg@!wB(OaLF8mVif8yX6&y_QvtBlQ`RMY}AFu`vh!nivZ@zUlRns*nb7bWKUhjS%jx;4F}~EZ37Q&C&uevd zXHk!ZzZ3b1!(GZcIvu7Bt(Ht$?L;N!L4mWY!Ef;(0S=4eC?d z+ENl@OhM5&>jbd*0hC=o2!?n`wkAs^&XZF3i~9<=Sn@oK>-We^y=+m|@(NVTdEiSU zqt9FNxzv8Ijh~h6*Y6J*mzB6cXD_VAzQ&33Oz6?Z`j(Ps#x%eC9beklTxlu6Qs}nQ zj&3lh-D^T^H(#)nG%}&vZP1YqQ)XFW>}%gJ$d7u5qf@DL_DG5!{dB*PB_&x0dN>(w zU-s}TtAfhTmqYx18^5aCTe^gnGtZiccX~JyBeK~z!j3LADRhF%N!LiF8zo059VJpz zN*p@f%_&+e%FXO^1DX{)_rhN!@q6yNQxPjU$&_wx9N|W?NDz6Z6mhAYn?JL^VSoE# z?s}A0!xvrn8;$>BQ;`a4|Iy0Xcnmm32GdM@Ih`eK6_nHmik_UHnXrsG)ytYJhEA(O ztLGzJ$177)XG$!DO1U&+aPNetIJiHwzw~)x_P0($8a$<>-y9up(?N$Jz~{v^g27!MOv!%4XYyz=j0W>oNac&|IBun* zXragK6y;7>B6dP>>PQ%keG6g~ot?T5j-tZG%A}ZJ70}uKz0o#2mCG-JK8wA*BdwWH zCSQ8hPhPVM^r}@TaJQ8g-%(`s1Z$964IVuMQ>SF2=OEK2X8wAbx#uMCmkbt#F2 zJEw1OaV&1jTcpgUss%6FRuL}-=6(#Bh#5~c6YbL_OCe^lfZZh$%2Uj^QN!~pQXls6-6|R{oOetZT#-J&(8+;PTx?8e zYg%$E%8$RXt0K)+G-OOASPE5W2Qci$Tq|<@c!w&qkGi6EXBGAN9g%Rug=#N$GMD5- z4|?*l9i>Sp8`D+4W_I+fL8gMzdnzOO>AJ%`m9|EFp6*f~rGv>AcP&t*%p+>lOO0LN z6)@(?yG_!=%|87S?%d%1{gA+W9qgK)dpdjf?8mPr2KVao{mMit`N`Iq;&)n@kaCc6 zh6(@G&*3#kpLbw&^LAt;Gikv70m2yDP3^2It^{sWm>&aCs{DnUw6QD)_9FAI4{c zVCAyI%1!YU1C&I!8iL*7)-I~G%37IW~k7HE891Jsek30;ene$=hgj4n$ zc?E(eVc{zOfO5)B3=}8q6bOduWMpmeDiaQcN@eG2Lm5S>r3iVK#kN-Tgb|2$pt!Xn zzbhQ-iavq`FU1c7A@7Jjf>+P1wzB0$g%`v48pWGI^ z^^U{0a07hWDVw?VE&VM_D)VdvOEJpsY=ylAow2=PU1N@mf+Jl-c@f>*CPj)qIR`{S z;Y<-jnSYN#F;ZDU3*271eH0;AJXip`hb^&1Ae!>uT6;-~+K5Kmm)kI1$Jt@--Z00r z@m}vIGmXKoN2$Zn3JX5MhluQ0u)EUj-f`Ztaey=Ftmz7G*#^KJ6x0XYvw*in?k7Mq z;zzQMWT1(f)ZS;kAN8B86vK8T3$$!lEEHs7F<~#jVv)TG>|Nz-*?G_p$;J$)lf_|0 zlID-nH!Q0Qx;gRY$m$I^M9gB1$+V!Ci&=XBkBV7>ThF_Y(Qu*9z)%$q1Y8uCu^t=`!LOp<_C`~ojY43jsmf|dbW@dkosF=F9@QnGZ&ceB?OI0lZPBS447E*c zjA-Up%Kd-i0`p5T)|n*4-x4E;1nDD)sF`e2cRq?upsgRcO&rsefJ_2HOH=?M@!xO)82#mihS2A>e8{I7TA>_7mcdO z^;gs-X0A%l6dE>O0-uDV(&lkf!; zpjD3N_lTCG`IqaO>&|GE!+1EMZ!lANU$Un<*=QqbP}(=jP~DVSO4#}y(LKmi)-~ey z>m27Pt&H5+yCs(xrRT{d=2AJcgRz7)3!6~yLCzl0YNhSF>5lv^-N*&X!%_)?te#z} zbk@a^QpNK}b;V1S{dqo*kh)OYWy+(}X@%07ZY@MUQH&6arr4=QwK<9GH zdrRo8lg@gj5>`Cwq8C3XV~{l4qHKjky+!Ha&o0s^{koYCE>Z?7leRWh zKU?z>Z-Kca{iqq7Vr)@5pxXT{%KB*Ab*ply5wFwD*sjcw@VPq0E@j@ArMpFyBHg9^ zUXs}Rqua7k9d|sbSNi@;@%$e=?%Sngbu!Kx@P4{TuOId+OaWPc%iHlcraZ9rAG=v8M{vad_xV;RlshOd4!YTHSVn+b6aYcOvnAlRR{} z`O1+N23^muvky7zdKD_SOUtF#ANxAFAhtwkxh}?v+XH84cOh~H(OLDb=89Z1e53Ki z`&rWJE+KA;zIgZ>Tf%Z4s@&HJ(4gJzB9)&3qp>xWK3BOZx}m@U=w}>ksG0YCyk z9c4q-^*y}g?SLQKP$EQBaeJ=X80`oVrL1nwgb`{-Y?`^-!N7ADfxeQ;} zc<&CM2jZ5n8&uNYDxo4HcttnoS2URIKc20FM$rH3pYfBol)hHm*;ffKArsZ%+(7s7 zmNLqSERJcdsKZ_5E*SX-0$(fIM{Hjk|;|=>Vp9*9RJam2UE06H}R`PkM zJZ;G;vsY4VMEtg6t4K>qa8t>3qkdKx9)G zCR!E0g+?s}18f4EzcWUD|H)E$xGzRm_?3MRF)qIgiyH-9UzYz8`7}2{Z<9_1$FQzE zBLM5~6x0Ik3TmtE0vo2t1?vym)2BUFcE&GJ#H5yfZOgY73y_u6dycnp0$`$^k1)7N z8&IL0b$dHFncBADpr0%k`A1k$Ec!wtW_$v-T9%nY%CzQ zQT0I$L9+!9T06%3$+m-?C$h5+ERsn;6(b+yb{Nx+K+9|SR=YSuGC8c$trl~75Ag=@540!Q5ZyDg=x@G>MG_*}O-dhHv zF}RG zl2VN853k55RYAQCRdnNdMVE6bVU(@Va#TgtMimv>@u^F$$nXE!M0Ln$BX$B8%XAJD zDeGx(bsvuz#!5(zY(GF13Tm|1g<4UF4V>kqn^S(`4VkX4LKS3;wfZC*)kVGuOYAAu zR&|tSpM{X=Zl^jh`qw88lrQj6?q4ir)9mDqBx6oax%8F!@ zpQ}nIXHx1Ky#~r4rM}`<>sq_3TzFr0N<;V7veSY7R~~tOeWeDaG?-zl%lA;t_;Qrb z%u4wvn|!R3NZ)?%R7$ITRSgoiHEA?@$Hi^|kq7Jk{B>l=IbE99?=9X8A7P+N??m=_ zm+SDYfnImo@{zQUbV9=yHRf(fzIv2pYy7Nb(9IDCVd%biUYp5QX>V*JZPOvJhT%qxQhg|%o zzN+fq1s?xzQ~{lti*c2aFj&)`v)2OUY^=p zx#2CTI5#Yw)9|yoVMhu&zSEoXFDvd zjLTo=)w$4z{_oDK?OXjbetf}SJpJd4AM^j_jhJ3JZ^QtL8N)4`eq%Co&_b`@8||3z zcjL#Pc$JO(vsb`5EG$@D6JT@bb{u;JUbTfQM|$3BbaO=mb1Vtq*x*c0q?T@`gE3yX z!zx8fsaa|`Rb;L*_kiwSMVun%k57}zmq3autV$_uG2>0Z4EAOeB~+a{-Z%i=J}?L?l94Ox9azZ0{(VE5ursbyKApo@v0f?96?;T$pX zl)ga)X2$C&dx6?pRtR|Mv#b)(Q)%15P;dEK*v4$GDbCn;19yONG-l@V$^Mu&)*|aq zm}m=LNm)FU;JTE>GQD8T;u|bx3iI@*!MIbQRKhazV2QA$fiP!Z!h-IuYKWE^Q(y<= z-GsGDlO~jSG+8i$?a_qero%HfTU*IW*(8~~U<+Yo^KD9X&v$}sY zhb=~=UO7Cm@jcac|?rfIqa> zho8}bI4qQg1$_G|5zsWWF|(6B2m249xTGo!ZqQA#4a!4n+z}X6T zP~_eK{DmT5t-~9O_B&N!ljB!z)+37o-CH!*nF6R4jd<1p?h?7@0THU4HSveogiS1q z!7P~d2p7^AbUV>7X9VD+a*H1sf!-iw$&Uh_jTOyjp2Z60GgP_>!F5Vw%l$Fh#tAWD z5y|i4+TNaRDo^_x*+aFP=Zkf3d#axBX2qd++*<_qjg9I~1sgRTsMJ{PM7{r5V@U_J zY5xC<3uDY>x8 z!~IoW?dIayWOgo|I7B-ah7{Z>{Kq#Ayh1%vaCd;b1>OTaQgCm8pdLWE4-C;k^H>)e zP_WCMUajtELkTHotaKRzRH^3Jef1(0DiR|)IU0#0eKQ7$EsYzCJ1LlQ!s<5hO=ViHOPO7+ONrK9 zPglk9yh>Mdx@tJjD`|;RRo9U@Mq_SejzT|gfz~Z?7*(T)(3`HbdhKZVgqzY*&MS3N zl}ak%Gssk-n$VG|aiyCA;f_?rmaEFI^uz=(_6B_51aHoOt(m z=a~2TriahnzSI5XM-$sO9WSomQnDm|=4-b>mdoWePQ2IXa=(UJ&7`F0W)mY1x6|Ux zuYox%ye~jkv|LqaZJ7Ga8{O7fw|TQ_hH=@7k*AG2vw&$>uY9)bA&9%NSn?S}?K@gQ zWZiYgN0Kh1(u^CvqDyg7Ku}RoLjD#nc>(YUGqUyy@RBb!gO3z5fiF724Xda zxglQ&fq9d;n0Ekp2xYUpglB#-nFT)S7L@+R+Do<%IGLW8Rm-&GxNJ+Y+AiQEnm=0K zq->@Yvx+IOf$UN;5U1Dyy05j^6)h}qR$2>f%C`Y`w-KUSkVE7!YYLwg=q#Iw1^LDF zJZXqG{3`^_3iOlh1LwHNxi4~l1?R26kvQ3kLZLg}uK=3=QU{ywW1%t(AJ(_J`ANa; zEpXY&kz|U#uoCQfK1&sc#5Gd z&O6h@ALdw-%@Nf=el$%yqH@Di&d#s9dqlPB%SI$qD`iYh%Xyma9hP_{(XjFRiK4O3 zA}fEXf%fZlysgCyRjz?9P%n+SBv*|!&<}?lKBvC>_?UrSzH(2)wr%$gG0?Ui?=l@~ zecR7KSHHCO$$jhP-{`}7P=lvdLrk8wAAH_o#Ixz*P>PX{?b)WyZ7~E`w?1!9#jDKa zy01>CI>`-M_-BQx`0`CLHh$Zj9Rfo?vre%P#?&8R=yz6yKt2&zYi6#@dRmb6{WLGh zC<`h%tMZkP!{E2hf>t%KcN2p1?EwvoTj39jm(9|u%BzE{Z7EE#W%Ys2Q^qC3mXY_M z4VNV0zP1u27G&Xi9ud6*u}y#l8x@vsH86>Zo5j{? z3$oRQAftLK!0PREPl~xSC$onvzUpHUg2_Fbt?~q)HiIP2!fH{n=Jq z5=4#fsXPLkDEnNrvng;4?LFhyA&okQOuIj3*2_o1riLI#uJh8|qW0V|>$FSj;1}~^ zGt@rr<9IV2e_!>AH%OIpt$I3B?T4xXdZDsDd3LmNvH!Dip6-9Ph)|hEBXesj9CiDC zR!RR^icA{)muR&AK}!jP@M8T}OOfL%<)yKne4=>v-tS^YBrbZO9=zCL>EA6Syna@; z6e+w2PH=}294Jn&*kZzXj=c)QreXy_jPuo_ROO>MgActHlY)*OR9M3fHgjwVp#{_+ zPdzE86bgPvC_*Mv>a>&YiUk-!HiK;Dz2rGG*>k=FNtyMbg$a~|D$xL-N3g*W1IG3&g3z#kDRmaS9x)<-+_MFFJ&@CD-8ep6-z zDE|Oj+Ca4Qvuq$}_Jul^fN$#gKLgJ|NLAKW4z&Hb4aM?@fcrHP`Li0KAB_aQYz1%= z$~Y8?a~wY^lVMR{cw@23cwomSVwGlC9ca}=iN!CB=A7&O=f)P4}7YrSpGNQ zcY3}Q3kPcvGLv=b4Df|!V)>iE)0&I?^^iHXG#B}~z}><{etI}ACtTz&07jh1gje`M zdqm)J=y^wM9Zuk35GiR1d%RY(n&l0Ij(-VdOvjJSHau%$P&5uf#MpBX&t}z0b?>3t zIV@XDO2E9c6NSG<*T!{*XZOQX3lVTBXP#7^ z-y6n|*aprjPEEoi)1OM4!2UDqJX&os02eR_&kZtD2E#etP|E*^wVUD-SVs9U6h@LG zFtf%=N%}}iC@l1oj%4%{ zqbVpDm9hX=q=+_;dx1}h?4JQ&BCwfxdoPJ?s@Q;kD)!W-iXKWj0S`_UtvKZx5DQX8 zv&S6Z{8UQhJ-uask5a`pOh$`sc#MX#;L+mc#OQfFz#BMPyc`wqT1pB<&kg|=ibZ8l zfIo=rDr2w)Hb!i<NLLmnTY7102%p@=ZFuo*CSjM(8zz>mi0J8Uu*K9t9b z8NtA<#_BWrgGkY5%mrR!$jAqAW~_LLkAUBeMTj{&?81f?b)3L9js)&7PTx=ph^hLF zWx(GVGERWFFiz;c@o&J2@!}$u+rDeG@Btm-Qowx~uFCK2&fgWTbY~^)ga-mi)^uD#9+RFqtj( zRvjPS|id!e;NG`x0WLzF5LG6vXSJf2|dx ze?5W2Q^!3{SoLB?tMsgCJ2yJI!q%3rEx46Y8;Q}ru831DHpluOZn-{es`hg0f^TjP zMkb5|T%sP21pNYZC2YU0=QOQXGp<4!hgtH;62qN1t-Nz;V1A+^hm+E0YMH!Ip(Rm1|>!vbV-BvSUAdMO!$ix zkb+AE3J`eX^hm)m2@irA%4O-1g4+mGTi|WhBL&B#y*dK#gdQolYe2yQ@1`Cp5ZI)b zk4e{DT3OTumcj~^neLU9`e$3CmYK(Ox4qPjC2-JruohH=!PV9Ibmj)^iGQr6HYO8a zbw2MeX5I8vAK`sPoa+Z1B;sCvrqEv2Q17RE0cvL&SyO!oo28&|yoxC9LZco5>Lavj z3^biWqwhe%R|vAMLK}$$KG|xc5(0cOE#-_l$ga=$j+9(iy^Zff4uR^6HuYS^wY0Jn z#wfcyDcx-nmed-l6}mb>>bX4MjXc9pb7iL5l&%M>i?EM-bBMYwlItOA_iD^9@#o8X z;x0O<|Es|eX7xC@5NsN%Ztb)yl=%ei4-dsQHo3T&BArY&>wa|5<%FtJc)q(1C$bbb z^cifJKX2{JXQ8AJ#5X>Zr*5q~QeQol=X+B`L$wYY;@>t@2U)NN*ycXrD8E1*F7UjR z@5`>uPS?7*x(Oe~MrWf88?#um+H$G6#7ADmyp2s2D1&9_FKdT&%Fqc@w8;W{#H%rDjQm@eu93@>4j4FSuBPB+t zRs8q5`w{BfMtq{sO}ZAPe(J?qVJ)zlL+!+rwQe{Y8kl$A)s+s)5{)U*=Cp~b*SQMK>i*?ZM-|uZUMycl*-)D!+G>WE$&AC9}pDFJ3aExvdx%rJ)Ukbm8y&Pzw5P zilc65TlEt6ZSwh*LihN zU*P#py4M}mwRu}s@AEnquH=dBV3gl$jFgHR&uFguy0dyd3mF#BRlQq$xLoN|SGBz< ztM-?ti@iQA>EMrQnQm@3H3G7A*6F&dtMOr32B?hZ@9Ippq7tean`9{X|rb~S<4Od z!c#wVYyGsatARcce`$H>9{E}W-P70YXw|km@(pxyVB^!>uS||L&`xG%o_S|#d~cwe zTeLh=uu^$lPp6$LY&yTV25hZ&`gS((tR=kwh6zdmbl zT^Y*#F)-q3j7QHaH`61BB=2c+@ejVn&Q1@04$Rx&*v+z?sUlK$rv zeemNk>dAR+j^wl*9((70&4F$D{IEaZ$x_>as%4rLFXozkX-nHq2w#o@@@)3Vx-pwfH^o|f69-~cQ+SF- zn<-bJ@Mz)*8%r+)B8N?(V05__ikItpqe~Nf?X5qvtgHfhw`f^;6Y#-jS*4(7i&OVR6?pj8Qj;Lyxp)Wk#s z-}4t8Ojsv%fDQl>#Ms*6+&*PWnp8d!VnL@MD*1r9!~|` zth{B509VttC9s~%11uD{H2dlCTC_ImsE^D)ipAQtNrUlfC&0mE(;c-mfD33Fbm3f7qu0ac>S<{H4=BKHDdiD29*`v?fnz078_78EoML`%*t zfCELY3NVXoU|q>?5iK?ko=Uctf?FtXWlsP((Gt@wnwj1*OH5fbU^kIF9&oy7pSfBz z?v&+#wV$!z$~WCXD!T^yomko#mY6=GeP$$J2hlz=1#l`oht;NJ8EibaboG;hlP6eg z%B};JisdY0gzaR^zgh#pXu&j7J`iwpOqpduRt&;(AMl1FdG13@C2yanm&?^%`OCVv z6>4AJd@JNCwwm2Cs$*X&U3S5lZS5TPFB9bdbvGl-n(}$Jx(fe~#bnSwi;4gK#l*$y z)n0aOtBcc8Z;U6R#iTbq8FIm;{v9xo2j&Ak63ruh1>OhzXGruG<|puM@!9hu*IO%G zNZ!7&3we|%jddM2s9~CLJy&f<1v}M;>BMME(VFWp?_0JD)4-**kuhR7GPdkg+fz#& z=4f&<&Q)Kef#)zoe4MM^1=E7;J&;V-()hjVhQ3S)WJ2NRa;*uzzJI364Fw7NIcrms zeQI-~??a)sbDQL#OWdbMu-n!;ivwy09@94OJaw`!n}5M#jFWRMZNh;ZG0%}A{k&m` zD-|5Q<4Om5jWMR;Jaw$i=d(CgYnQIpK_*7G((wg&*X#UMMF03-h~^^yGr4y2AtvcZ z)1)Knt8Rbp!@upbtxy*_B`K0 zr#`7R1S+;C@rC7~rLWx*_zPLHxP*V&&|W3z1=8gK@`&RVMRquNst z@mV#O@(H9M;_D#dyYhTX-Hk%^U#vQPz97|$yw83tSatT)N1Qr7 zZPJbf#Rhswl|`GTxU0Gu==|uFAI#$}-l@Oj>PVAE$CF0JXJ1Uq4>%b=Rrzc1jqtW5 zt0XsyjyAD)-lY05&-_I$yS7)k8g`;-_%C%zFYv$5og&}RQ+_{njKWqIeodXo8?WwW zY-RH8Cdx4CK28#7PR}R8qi6a$8~EKQb92-Gy84`zVI9316*%jLKT(ItKNpi-?CXE# zDPAf_$!VgO8%YymTK!(_D;V^=U_NgABz;9EH!2~1K#Z@=k_x9FY5IMRrvNX zA;7tITI7gPi)~JC?VR#^c81yHDXslouKe*4&N`z)#?k6umUTCLPq)TH&0}P&F?a^3 zPus?&{fpN)b{qdEyW5xG`npxdZPWRhX#N>R{-Z~c(7zc)`d7+pU_CZI)jXxmEz7_g z>jFbY6utVdhY=5&Vx=knkXGa!Sc-R`QapO;R##Rg{5@3E zj^Y0@&xt{Q^I9ZT&TA1`*Q0qjt^U1VROsxe5Ssyi^IAAI)O&sYlLwUg#6Gr;A)&#c zoIxPC=WD$aTMmi3XaIuoz0TJnSoL1~ssPB3^-? za}j|}T2cG2P^b7K+$bi-qF3>hP!+vjgq6-1%JA$5Hxa|I+Az8;bmZ-6HS*;BI>4hs zPx5GB=B5~n&4BNF!sc}ll_HNPipZ$~N7XjYGB$f%0dqox8>5)SkU8|Mn#N9&FcKA4 zdr|n;u~JDVSQ%z(d?j7m(-Fj_Q{qtx$)`Z6=bos91-KL_{}#UD)c zmI1=pkXil7ykJd;XsXPxup3~1(Xdc99e9Dr&H>ynnjy-s0lynXiP`DiGMElpr;xR~ z#!FHsg+3hFf>j~tHZrcw^8m7Yp@GuHb`vQp^- zXu;xabt_3m<^~iq%wqzUX)r#;i}8=z`e$9+sT?VFG|0ls!pX1$C^{~ z^%}$^^wO+^1;tY@O?7ytjM$*DGYzg6#@WO6Y&HdYYaIBlG-`w99IgJ@OUkQtu0EP@ zp1wXE?kxEof#g1Rae}GF{PBGqB`bMhzmDX!es5uWY*jkC!ig5OALL4lVRR;ezvBYt zJMn8Hir5tEh@C-geKpS5$s>5o%|^;{f0M%Ze@Yd)wX4{K_V{Wd{_Wd${_T4iYqhUX zc&v*0gAB@=cZycGy}zm=Uf1~Kxay5Nj~Os}Ot1b)V+M~)8j{?r<){fGhmT6?Kjts{ z629;i)IZ7z{u-V)s)K!%Sst|-y05}DI^JoSpm!dTBx;`1aatA*eYq|+QnQTbSLz<4rk-rYb1rD!x#owg*_#mcm`Ow0hGlYdE0|u%+~r zn>IA>!4GoXlg=7{8Sll;>p?x2X-p}+r)C#FgSL$2jKT>W|J05No`u#Q_eR*aw@J@pwK-Wpz-Dv{`yDG9S6W?F=dc3ADBfC!2 z1oQoLvnFbkyh|-K#tw6RT1J!aWKC0CO8?24-u}t>ecSN^`VSf~hO>jM7c;l(FYuCw zqzvxcUu5D+lIihejXzpQh-E4YOD-WHp<$wKf@vlK1!1Y{XuO}~Ib~mSg*7A>GR6*nyCuUzMSs$F zVej?SUXYed?;y(`(vmq9IcwY%XQWtKcf%LkoA$4SgwYa@QD54Ya~%@O5UhWX0bP}n zn7mYc-cKrPfnTu?@x^_`eEDe5ReZ_Xv%5PxaU{g42QYA8e=8`WtA&#y94Gt;i-u<5 zw0RXi#Ftt?W)a0E{v+8i*+`I?99nZ+d%et*{h7>^3z_M{XEKwIC^N}xL1ub`_42P8 zdy#a2gEb|71@TJ|nc6~RdKD*%Ow%DU!FB*5(~`rG%o5w8R)P?&O;H1aV;rQWu{{K- z$)+2mreH`-vj&P6pdrs$4Xg6U==oMAJh5P{MZ*w2dN}1L$9qYtj`&PwavveeOr9fz z-2}3FBRDRCk}@89OZw_rW57xyn+)vQ5S&l11ifbjM5!)jUQ*y9F^~DYHvSbf1S!Gd zUgiyns;(%1u^?>5@t}JfGN*vhikX6dv<~!9WO{Z%=-DC=&`h~&yd`f(mP=7`BS>1_ zqbOl?qPGmN;V40dGG#JUSI}0pl~svN5kx5ZZg`F@nR{q#1tDr!3awr>%~x_6f>*4< zwKA7JAVhgnPjy-o3OwaxtaDwb`GXf_CQlg)h!(}5$^hJ0f)sV~J55VdW4sL>7`X=0 z&3R7UD*6?#Nd1b=W&hoxSfz+Um0{CgQBlgB#&6NQZ)}ez;|N}_1vt#O6MCfJ?g1?p zct7irf@5AJnEum@b71H*!K!$x=4)$24TNCjMYHoEn$#|ns&ZlF4Kbk_ZE?|>QlCSb zM|^~?&0)>Aywk`(2~QKzG!vdi>5PtQ5Y}t7ZtgM78l&C@;fX!OOgOSY%J5Ct;2Bbb z(8N*$W_j!|`|S8@d1IP$O0$$7sq;OpDTI$Dv8Of{HCNEdM;A4xdES_IU)F>we#F^W zOFv=;Wf^HtCRa39f>_rsebx;FW~o8SVy9$M7E4W-lvR^A)-}GWnJS1pP9201gXZNbEfp$noA~Vwd*5IGH+VeQ&z!^ z63*{1(>-~tX<~-RCxV<5q3ifsbC~C2bxvzQDb_fC+LF1^zXVq~)qf}E84LGwND zVu^mUgULw-EYMW%BjltA8uL-p8Yp^uUlxseR*q;i z$M(%{jvGAwpvC4|kHFeHA;Uq-gzHOUh4SRilQvEIVQ)O z9c)|w(XY!Xdq(;=UN0Ffw$$b*4C@Vnmy?`zQ(Ux0<>Jx&*j{njSoNj+am72WievqJNiMu zPZs1Rn^jT>q{%R#94waep;Wd{*Lp#$R6cYFd@T*7Rqk3Zxf3LW>%)ZL9*Qe?ecypT zH-erb&w}mG%)*97_E(KkC!{%>qQpkXZpX00kVQND5joAq;td!ln9VBKzLH7fpxBu} zb3M@d4eYDiFo|w@Xx$V)A#c=VD1@dm+DmTx6_hPsiD&jhUN_Kb)7Z{rnBST>OXUt} zuo_Jh&24j77`0Q{puk^FjwyYN%s0;uh!X$jj3pjDwaE-(k!1&k}^&odG!}6YgBB^U{TNE0ETxoZI78`I%cb&jUt`DIa@yjJ?j>L;E@-8&JDc)v;^Hz_a-7pDF%C-> zVhGFYtwMiRk#$3;&~PR$1vETfg^$3N&>G*sV3Ot!m<;3QPAHoU+Gw?qCl6Q+gU;3E z^#+1|rO$KAMyR^%^1SY#f5{f>*{s2?p*7`saiFiS5zi<679RR&e*7wTp)1Wn7JVyL zdkt*Aw!B*KT8=xkR?K?@Y`l&V**5X&>p1S{I%}^yz!n?I z+Y8u$aK{_O{nU4XA8!!%Q~wUUc%#Taun}!RQn~Eypea!&vxkIeeW(Tf)NBOB#pzU{x_pixL zs491g_q8qXQ$62t7uwz>-q#wyXLgBgy#%(|UEWsR-B^C!E#$$O*nxJdyv6f->F_M* z#5#|FjdRQEREPAsD_6|B0sQW>Jm)w`o5Hx&7k(y9cZ~Ao4dKfVbQOBL5+ z^yGu$y<2k-8<-D@_iiU}r+kq=H6QKfi}!9WaBzXxR*wR>{4FSNYcc5RheV_OlIt6! z^7um>H{gh1U$59`#BrUE!s+h`suPG&qv<14E}}l+uVVQ z>Ym6D{58w&W2ky4GFEG_N5JA|j6RPrQe!MnS%Oba>SJ{A8RZ3`i#MJ_4fKM-{|InX zY?k4kzrY5?x2(%va`k&eZ~sGx-fosH!G!Z8))X-zvN@XUN-2mXZtNxDxiC3Tw_3~s zXG)q(j=hsN6__)@KY>CHYkGvFs$Bw`- zTzDE$bFC{SjKU<a>0CAd;)ugOy51#UdI-h-zkaLlZ6o2Ps7+yWoW(V9$h zHA_I}mf)-Lz)vhe?7EE))!?~z{$dfq$%6660G^v%N8idzRO(Wf=VF3+O6`ulCi(k) zrN)gyc?YtU^Z8Cpeq{-md2t178PUX#Aa_8QVCXbBoh+n*a!ncLF!j zz@28`E&+E92%#hS0730e_{za7(KF>ALD(XcI_pPZJkK@3hIpZaJwS}qXUqm(ii`;B z_MYLNAGdITg$qAZ+d(^pvj$aV&v6pwTfd2EL9Aq0{dS#Vy%5IV95#9DpEA>cw}2)E=3fN()39eB>ZgZ?su0R(OgxLpj~u>kE03w`Ba zE;TTB8;TZ!dksXk3{T)216SIS=d3&Go2>&NG}{W?4j^nyap6dx@3`nI2QQ0Z_Ec^G zaj2tsAtk_1kRe=%q7yE+lbF!}xFu9F!iDq$5Zayw?ko_jxY0%fHy7L^AcUKDhh=x( z<|_wN(pl`B+@mwkHRvq1+y%HFGK5p6gUHfnYysY@uVHirKsaS7xF7VzjjD9fbN#U= zJPZWuo~#py6q?t`%-eV_;4<)8zk z@oln|vt+Iqph$8LVdSDY(%Jd5()L!5%(jziykSs;Xv~RUWy(mxEVkTz)LgZ zX6vDXTLZLED7apa6kHzAB7t{Ej}+V$pv403x*jRG-+@G3{aZa!aMqYKkxr$-8|KhQFPH&~Ap+%%x&0<=DY#`o%(mQ&Tct+|ZYL0Q zTHxjCk%B7*S|#u<=n)17InMu$z0&jvIDY&^n>liPMTcC${(t*|s1-I%E9vYwx0`HU_Ar=J? zG)=g=2YQ6@0|*)>@Hi6@DL7}K?*v{oJyLMNK+r0oT$q4#FZyU-hnT;M&V2qe*j#jG zA-!6l_2LW3WuZ38v}NYuHkp^BGmB`@LT!*~p;$=$iLw`J>+;8SXBTSwxTk$;lli=5 zCjS2%m-$;<=52jbR~qKNo9ehWj*N-Ajv_)5@CNhB=vU&}l>csEC#8W}Hu8Tqe3J-mi$6)qEl{kN?sD z6&mKU8#^toP39T$*rlyj^B7vU)VDd#_LsLGKRd${5G^zJu^Kb?(STjrnqIrXnz@ht z)M&v_txj~Z@(Eb#e5)CYDQB0~jUP`%yR@EGorL1-Nn#y{rBA!GPHF7HwnlL&cNK_b zO1WQwdSft^a!~dN-(D$aj2y9CO`u{1%*L6qAGB%b(GS-BTL?0t}O4o13?-P%GaUyZG1y3mPz z+N-<^!%nnkzxFXDUeMZ6R=!q7`wwV;qAmNh&a^cTDESb~$g&S=ufr}%D84vf`x9?N zsRi2K=(p=)Eh$Ytq|o+i-u+bj%%+|ll&D5O1y-1RqIpekoyUAqXs*ZK-!+vKIZM{`6+D`az3TKg1`d6 zzhRXVi3|O4T6>k&9?;s;qchrD6mk^k#*f-tnC2kgk7V@)A0my&s)TKaakzIjD`J)mPButJG@Nbo8=z0-gNPklX1B3coucl2U4Q6>T?Q z?Ko1yYv`Pnh@1Qb>?h*p*U?e0Yv{h|4ctm|k$d-s7QeHIAKlbu!vuNuE$u78zY|-f zWsAp#^qieYpSAmJkF#~F89_R;+u9jCze%^~j&>^Fl&#cm#KG#G$8iIPp$$eed=u$m z9EWh^;W&olM;t-A_lF?28o zwvGuM9kYU|%z`;9h8f2(fO$qo#Wd;|?sKZDTi$og|NZN`%w6Al|Nr))c=p*R)TvXa zPTXg2%HLA~mZ6!r-j}bp0_d_s49+9}K68+QThDKKK2yngo41$GA`vF5cNY))2=pI8 zmWNH?>%W{CuHZKCgWsTciDgmD_h)%w7kfUIKl3x2pOfXS^s`3zp>?5v9f>ZKQ){^$ z=`^DpdE0k0!{pp@zRvrZUAVd|d8U1>^r8FG^smUFS+Nw$2D`n$TRdFvLK!D2*ipEq zr8WQJ!^{D4ZW-VC)68<58%woxDmPgwh%uRe|9NI74l z{uD>YJoPU8Q5$^=x$ve}BX$9<>$vXWDw61Y;0atm;bQa?TsywK7}%d^s;@?Wc=xsC zx7+Cl!_op(aMX_$%t?vL)F^LP%^)h0Gze&@-Ut_ay6>pJ1=HO58vS98n?sq-dVitf ztMUF{q0ef8`4ZE?b`G~=7b@3F8?86_FFx*Wg@p<#dAci%_jS>)Q*t?U+*4m7L}yiq zRi7hLG#0gj%vs|vqXtJ0+LC`UL}#l%$*RZK_SRQYa;y0?KmBv@g)`Gse^&xKkjB54 z0^^DGh->eMHf~P^7z9dMtRer^UJCNJ?WUk5Cs5R%0`&1#Ts9wDQD2t}U~kM9ci9JI z75$)uMaVI8pXHYY>yzaHZ53=r)s#&mEkCw*TNy5f+o)V6ef`>4>yy5B!}g1nI}3k zHtu9mTf@!fggAF0x5aJ8aoIvRECNfvno_uLw@8$Ak==x>O2qBqF74P&*mxd$`p91g z%!*^3*iEVnJkDweCePO(x6_jImHoz55faDBu=J}gJX1^Lf1}Lq`N_>`bC$5QX zCD%*1Z*xQ!%YO^mk+MNtZP`9fAv`sEOXA(iE)oEo(ED)<5jhseF+3weKaNnUqHd#d+ z&mzgraxo~C&oZs>(5xc%7x+EljuBETT@iDt=)HQdTF$1C*npIIFUQV+!g%5Rl$%dGq9m+)HIZBjTR>i`rZsE1H@H$#}11-Fv7TzoiZyu;j@g_MI z=2}a@y%yd<3y-Y|ikZ1(;V~H|k;f)%VtOuCW}b&csbwJ+UKI=jK}(U#=9k4!r+$AsH3kS=a%xb>tS3cNLsS79lQCT2+hWGE|e5|3d4&fsW#N3 z0|pfi4fI1fZZpk~h2Ok}`brdCYq45MTt~<+6&!31VS<&ODjG7kr&{?v`X6kQ4VY4a zeqEHTq2NaPHG=A^owx&QPR&g$qpyH>3D+0g`E%)+22@{_=i{RFt>oM$9=DZqfviYa z9QItLpO2->a*x5g)67^L6|FZtj)&dOS4RO~MQZjiJ-y$eiq=GQjYL-*ENKDmXy9M_lyWLaT@GNw$I(QGhi9%7l@=Iok> zTxR#b%r!Kv^g(iN9@T84zv;jplI4=!;cls%iUZ$M`|rB)OOo`kwYrGUOV-xP`VtfkEbNxX(~RZoqiF=&F8PTM{zi?@j1H*y8$d@3t@$EdaI85ksP;x z3Oeau3!__es{e1J+Zet<7gjiP`QK770}!fo>2W7J2qmUPvGZfAmde?dZu)B+T}#tD z(fl6zr~h(S7K6q7w;D{S!Qyk#>|0O^=9#KL$Z-qldYb-g<-dC^=A&3FJ@XTlDt@Vq zGJ5Opv6(^8lTlIR+b7J2a@&ux<~R4%*RYX?V`XHBezxjw&o*_oD(kMLpxf)~<_gA_ zeXCm0iBb9ln<)ogC+oWV%q6$c`uWzu&RLaKKiETCN9+AFU0Q@My4U~BM5~TJPu~3J zC7G$NQ^k?i+qGtQ+U(j^Q&gP7?7rN-w7c8b93Ur2m23+0w>Ik$;|DJs&W|7W z%Ito^U9%s5a(}Toe9I|uBSR0xPcXX&=nF4il=oe0c2}>P`SEhE4#UjueI1VKo*7P7 z5Z#%VWHr3CcE5$*erOJm?HAL0_T-PAW_MqYCU%4C4F19Fb~+Gsu%uSc8fN$0A#Ki$ z**DPg#2d~}UEJ(;+W@ow=8ctRFI895njc_ElRIsS?=-g&+?kDQTzPZrM!P+C?UtD% z*j0M)=>Ed7NoM!PIjZox1Lj^cyNg$R{cFf7*K=m~S!Gl1(|{j-G`oLDZ*`z@wVml^ zcjBIx^{q9hpPJn>`n^3@$*7vd+?nj1d#}#ECO+)R2| zPvnfqpWWMtdlnmMd;y^$9ZD!uTF3Y}$jWn%Q#eFe>* z_W#M}d#etK9!o|)+|%N0j}9-n8QdQqIyu*P|12`5_~)%V-xjpiRGL#WK%x{JMujo1OQ5@7#IJ0f(jAZ=ZYe>Ej{iFTG~? zcPTlMxvU4@A-?U5F|*?@+D=`QGrnX>-#gFuj@pn_sqsK;I@Eg6WJ-LnpVxtAYM)7fwK9p(P!z8mg zdhNN7LkHh*ZQX122uV=*8HDh{PI1d9LC{n<)2JK> z#*dWNu+UF93*d_#;&-*_as!q^9E_4?V=H(94wtNgyt=MmqCyph>00jw*^a!Q4e~Su zt|4^SuL=%d-pPQ_XEZkJVDzdMD+U}#RGtFk6s=D8!;wOkMUPm_$YR9|g!f0$cLu|z zF%yIJU7YHoP=zLNz6Q=00U~;CG3#ZjhPJ}4y zfDSWmvCc2^Dr6S|^Vuth>JdPdV>7!3xgaAZ=5cLhQ2h&rM_fz${(o+&8B zF^Dv}1A;c_!6NV0lIf#Jv%G~;(Tpis7PLM$2H9HB`ivtV$*~VzX;phW7nZCxc}aSjr6`4~jaRnL6i3q8@0brrA~0%^V4`5fu(% z#YlIR(Be7oOO~L=d6dW%tZXfSdS}?cQm#bkO{Ms!n^Sn3(?al~QtU5caFsd{T2d2f z-hRhGc~l~0+|~y}@#t#rSXYWZ;OHovsT`I_ntB>R@AI#c-e}eFXvVY zW{cj-h|6xxPDDmPK#JQS+KPQC*ou|M!Z@`H#Iy(pBblO!-?2df!?5yroQ!1hSP;Py z#JGwi^%7AE@gU_a$(m6y+>h2V>8mLnMtFEB@y7o~$g2q6>@GD_G@l8B%|<(<;lft& z7vpAKyV|62P3=!ZuHs|83;&Td-Q|(iwA$;YcVs9Eg#EU-qAkFru?Fa^61^1kc8SI( zB^XAUX-&m_9NUydBC4#1D9dUad&=uTzcS^2soS2i#CK}uQYK-nGM>NW=bzIKD3fvY zvKlx4pO$8WT;I^Lyg+73_aBmm>yr-E45R)x#No>Qi{35DTROi?I#yznZhKL+#UA$Z z(Lq$`u+x{S{iffM+y!5~La_66U!a&Q7F+sM2=YkiNkH|%e>BFRO!(hYpjgWhFHk?= zzZjPZiZtZIf7j+0ApfIF}u&gYlOXZ~G6|0W;2vNgB_B%jpxSl1xza$pd9KZ-gNacU zR*MW0r4~ewL>|jDqtvn;5@jc2$%wq87T!s!`+A~}U5SP9mJauy=hKrd1&S%Lr9d%O zUkfkY!ppMoW?FbVF)k6~@)D(%owx8VGm6q|g3D7(XQMUo-b1|H#COAnpJJH@fQqN0 z=lUC}cntIg2NBnOJO)-T^sNF`%Vaut_~UKpQ07d6NLLZK4v0z;-~~ zR@WJL95?`Y5;z)o4mcKg9yk?v8i+@iLC~b5!NaZ_$Yfl0vQ(;Wz*&wAXUE@ylK0TjX7_THsE$f9hCr0fjQKD$4$Yc8`jDqB(CEN@PZ@Gn+!zc<^*w2q1z0psv zAr=qYc@c}EHmFCq6v9UrBT($Q#KL2>Iht0!)mM|p`;y}ey(jr!ZKa^!-s*SB-;6>Oc^Ec&ATnz6mAZiFjLqaX@TJ=vo8u*$5?>3+xJa9771Sg0j89LLwZuT_3zS-T7BSH87G4U< zK;-q1D7B1<)QCK`SHUQ?Y?_6qXB5r9)KN=@_xcLbhv1D+Vw1y~j6~Z19_2D5h;*Oz z9@!uC{gi`)(AZGH%%A|VP;&P{1No01^fd#~rs%v7sSyxg4y%#ER}lk@5Zn}Sz}LMQ zt72_%*~wVVVHCt=Exf@N-b@RRwTNOkvhbGCnVBPeXix2h-ZcNCzQ1BMo`)iKEN~;I zzw{-I6CnN+oX|U=!Spkud=pHCEoUnc7qWCMJe$-w^F*Le#j%$t`xE<2h@4=k?>IdZ za!py84Im#knu0&+L%3Gd`jftOrdX#cvJ`MButA62B7tIGLMMU3+m^A0R3STo|6<)M z1Qjdr*t=qnu8@7g{|*A>irb3e{6UG~aHvd5kL@&xzUgcSSM*+KVQvD2vPObGTX>H_ zH4u1zS$IqwDpuer@V^9?j?x-+aq?5xII zLBZ99?VK)O^zn`*TpQ$PxvZza{FSzR(N}Z&w~&|va8)X}(bq3}_Xc^`TW^8jZMb^a zp)7~{4o4+?hG}^hXM9Vz*t&BqEj9pgF`DriZgZyOulh-uY|D)OhGJYUm$h+v1$rC` z$oyj^!G`Ts!5A#@<4{hl8pi`G0rC9^ttBd>@U71V4g-HKa2#*}a5``ykTvg%flO8w z6*p7&0|>lw-3B14hz<=0d&$D?B`SsPI@~P6V_&rg>YWTp-v>h zTqIH09+gvSv4L3X8EwAK8Hmavj4oCH{or0sF|i9hC~}OW zs~uhqJ^@w$lW1w=VjpT7m+$Jxnh%ld$tX(BN~uT(6b27>vAO!zm{&*Kra1RBFUUXp zSc-z|l?EGbD199{#f>T}4FiN`{XR{3XA+uq2Rf-VGzz$coOmJTWgz<$(3t6hfOti^ zFy?77He9|EHw6fIG9ICspJP>THydXw&MMOEe% z$7u$z60+){^=0)k!IWr|faW_~XsxH`j}B=$n-!Q0g2w){lZMVtP{q%V2^M^7F<}lTg=cv`d0%kmr5{Vwr_}pUP|eVWu55*864fgqxaK8@w{5 zE+OGmoIkr$LRO}yY!u{(t)#A`FT|ursS*r>Jf9{u!A)nov0y?L5)5&k38p9Lct%(K zyNt$)p&*wW^KZGeYS}xcL4xT*f{A{$Hn?{m6>3h!@u zQgOJ1=1&?RYy*`b_&&scF~;wp>I=Nj79Nwd5L2lMDn;qdPXW~4PT#&zM4ev^b##-41kiSXA6^2eq4UV~EV$(A=YGR!h6Ru+& z(+JR*TChF9?ALk~ZLmY#W5<@*FSArH^-V+z8|UyZ!WDur@lx39_!QY={tRTj*KHsh z6x;!#W0BnjvLeSz(4oU%3{0Wm(#6uK|;K)RV=pa$yDwaI=1E&x6Q z?f||5?gzdG9tFMyUIV@Z{sR0Hh?~kj0O2S52*kytzjc^#vhQDq8K;mTR&rnAW}-H7 zZh%Y|3qpaMGI=v4kO_W3Rz%ksXbtQSWKY75f7t^k1IqzfyTSOZ1etpo&=Hs;@izl+ z;6|+4XmId&Xjga29d**xPKTT|#bqa(Mgu3^@ae`nW|5I6QEH)1iaZpK;HzejDTTv> zNxbinx)@F;QRo9Kyd^j)dqe9^AIcf3a9yaPgP|HXOlX1m0S<;4Ts?GSLVth{LTGJ6 zfc{7v1413Di>xw`4MeH|!+_}fb>V`W3PXmw3)7y)aNDsFgmCOi4F$sH16V^WJoa|Q za3-of{f3X-E(>EX)amg)HHs|^_GPoMYT+XkW3jg?@=(N5N|1)=yUxdMu7$CXY-W%2 zp{7&=HjbPO{(fB$OCfx_@dAa9Rr=T~gK9{bPKL>Hd=kkQdQ_z<&W4%+weiC6sjw4i zIuBr7AS;J@KvoWQ$*I?jD*o&do8S^B+Kf`m@-4jMGFmk!(~bO&HnyifoDB}rJcl(R zVq4<}ssU+S3`^e_Tm#vt$b_tk=sT+XOW(s=dHxTZ4 zTz0ad5~Y@%weT*IVnyvrlL=OT*~(nnsxpuqjDKdv*Y<0~8aXRj0IXLk+uJa{Fy~~*T&&=& zApB{jG@!&713(3Hq>HcZ+sGh<3P9U0`){Sey0{Ti8mvu4KK|QjuqH2CN@MZ=W*XT@ zW3!kBw=BDUH!pwjx&O5U#OD^8OeySYa(W->C6C6@_XRtAY5cjW(yLfj^rI`pu!dLe z>%}dj!rvVIpi#b41w$n|?;Gt(URTf9QN5`#F63R_;A*!|$Tn*__E3Ruv>)|*=IB6Q zD&Q4wY`Vgg+edyr1~(xpcY>w_2fI-ZA9&7cn(j)SKlgQ~=vzVd^mOVNSFTX>PkmQl zPZx(Sa^-#|?o&CpY+r;oO&{Ybzb&KGRZ~1@n6IJg-wLaAu=*#2RWc*r)7|=C>J<-c z(Chw|UbEJP){A>`H0tQ31)JA2^0Uk6T4PVIQ!TFy^UiKjqpfe$?Xdo~gR|z$T;6g2 z$%1)HnyC`c$5_XwAHF=ie^aO18Kax_s`t%)Y;q6^k>(?k9$`Xy7@jSp3%Fj-w%!VOixslhF=dj2Nn!}<@og0VfWBAMK5x1{j#y0ON+?XVdFoBJoe4r zx6l9a)~eZYT{ic>X5-iCC1v>R@}#GJ1`UlJxj>V-N?p}2^VL94TOUKkl$|A?S~aWO z@aUSr+12+x&)-^Z>`u2sCqr-c?0I+Stq(IV1v-a%dLPr&Qk)rUcK3T&bgEbH1vky^ zygF+$!+#m))@WVE+aKrk)#Y=)c^g`vJk_e?^~(NUTSGH^oF2?RoAJ2Ug}EgQyXVtD ze}lnuXq4UZuRA9!Ii@UXW1V_vOV)e4YlG%qx=h?Jb4Sy%YhAVc&H%#z&W_FKT~X88 z9fverr!*WmQFc+u?G+TOHSDlsBPsTYf4tyJ1xXEYj9|6BihDpsV{2)tevsjY-9h-; z;@UKRB~58J5g~p*YK@@@}ZbFOG&dn!cN1?P7^?ib`%IhS1=u(GJ`_D!$MvL}@oFOzlFG zDxQmQTsR?|{}$GhB4+Y1AhBeOjpO>D&#k}tMA4MZ$jy`ny2;;|NyOP8H%GRfwbA@* z@WECT@zEp1VNCy~--7F@AUI#k#9d|o8hR}iF1!@t*w&_j%eT<^#D$y_L*Gm8vj3aM zEeg0iF~srQ#=Zx>G2fHs7hgY0u4-_XyDBJv_Xu`;pETlJIZHW&QF7}Wel%=oq&>~+ z>8zGFQ_vJ$m0!q5n|e0|i0Rxrj^ zir9J|_E&#C;=tvjYr|c+FoQdHg<@~q2ytxluHd|t<))7)A_jJ#t0%Rxas00Oi!0xJ zK2rG9Dj~Ev3`sgr_%R3$#C+B%D16U01^s?C$3Y&bq*x`g@$do`TIAz`oe;>+> zFnG$NRFu}^xCfsbVJPM_K_dsHXY?F3tY`Yr^ie^PwP<*h!Hqv#!_c0SM_~pPGu4G= zM;WXwj=RiJtF({VA^6lT?ISt(HZ=_wIl3}U=}kjx8|rwgtJjVUuj~Kq7f~xJyhe@i zTD6I(@pP+Mqh=k!lgSxX7vzjW!n30wDC0d)6C@v{rtmt3%F6pr5cQ|x=aZp*?RXu9 zYBt7F&7lVTqd!DsE|*s*e?t>xOHOkGQM^!hrV7D8%f&rAvwk4ghVp!Wgp3k1=hogG zLsCj(!E_Mi;W8+;{T%4jQ+X^pw@9My=3tgcrq!N;hkn{xgAvU zML`f=yK=T3b~s<<*FS5DZ|B2q4M*`h!pEd0j&e& za|0;c`dF}PX#jRb0tFt{c%8no$2bMm=XP3*wu7<}l*^*k9zSbEn>4d9I^95d#T_AJ zg!Ex7q=fkiLQ?Wz%sxVdC<`!7hpKiVrDYg|9t#!k-~vgKOE6V)0(bDKghNo3h2YaE zj|CSpIR|6ZZB@kJUns3`m6W;-#;gg|C?g0tS^}j~V?vZ0stG1#da!bXsTq8i0{aoz zuZZh`Qr1vmkDVbZPfX8(!UU-rt}zw#+^H1=Y2w02vuU^%6I3W@Ov+B&iFENo|M+(T zFzeCkLjZ>RNGszE9`ZI&Y{Zl!5s*pQJb{8E=5C;%;>J)@4lBcg)XmQdO8(Bzo3_6m zZsXh$FYN{%h|L_ZOdzX{=4SrJq_W5glvSHi8HGKltj1HyD(eCDNBv0W>*`RJLSzCP zWzraqD&|IgJGE;>MQ63CWylH-;UzUk{)Il};7-Q3WS>qys{8-C_G@>>!OeL1eP=Ywdn&Wnd1Qd)h+oj&Fjh`)yC8mOCqq|`o^?ZnOgmd872T|+;5Tn1+qOQg+*q_SvEEs?7{LPgqiKe4j%+(2ZYz5++X_O0A$-f;hC|%n&U@Pa zGxMGXZ&xKOU)oN6t&XaO+w-e&wYsdO3d8)qB;8#Uq$%%r^6lBJE7v8qesk&73-?pc zI#gYhx2ev^U+V^E7j=vazkMg8-jT<5r@n8xaCYJPN+mT<`gB+jU$ky?;hB6lpH;u_ z7;wJ!+aT49-0rdVgY=z?>lUxsT)*$&;w_CF{jFD=b9wh?W?<^t3-y)jHx^Fl;`qb- zymm{DdXBr^b&K}?qW*PT&VRS(@h-c^$-nn&@GxC7q~6gJi|)sG+&cXrvqHBlMLXA- zPLFTA`11PqZ4IsZZw{Q${8ic?vqx&THa$BpdaU}?mwq0%qwCktIG(;|YOgE>|I5y| zv9>Sv43Yn_*I}h*Uu>lJ)B2SkI6Z67>+{L;R-5AG!<-7DZ)Uz=UeU3D`U^?{1=#u>cjwf^&kIrCBvyxVi#!=_9EjsNML>^~q-Ijjtw zA~Au;vcxZ|L@p$1-DudS6q~YS!s$@;@@0x&MzP-T$p)=e`ye!U^P*koyrZ)X%~@%% zq0N)AkacM_#uYtRVTA_H)pD*0wVGlG%WRGTYinHPakZ4_L0FM7^B6x4Yu?QL7*igG zO{H*cButR7g@kP-Y$aimgv}&OmM}30`xPv~Tx>+NW=CVI^5IhrDSzL2xA{jpZ_jtO zGkpjTOj7@K}B39nkN^%^Z2Or0BG2;#3yGmNm3 zx+=bx-XQJTh-S!1pnR-Wulm`C2k>@Tu1`Jb8{$feMf6CNSTUYM5+rQ~5NV9Sg3O0#Hnc6YH? z;uce~h5lZobI@Cn|49!lOqZm)bL&Me>)dc$mxaz|J=peAi5x7INWr&6a6F`#x`#m5 zngBP&7%!ifN2kE}FGTnxrQ{Q?u(GX!d6xgcidKOj^46qR#M*5UI?jrF-Eo+r;G~Bu zy_l5hf|VA5_Di#Kv5H2}f|B%#Tr-hbJ=M;IYw;}rjfyV{BG$)Rbwbc79}%>d=zaIC zzl&A6nK?>iUOI#Yt%+bd<)>G)GMb5ObFejHu(|cUUAT>pv4zm zJguq{s-piRBLl}J|950ywr5>tHM9TI)9?Q~GWh?%$Y9P2j11yRj|})rD-6XB+y~0r zf>A&$I$>X23JJfWQ)2EI$sHkKu!NoxewM=3mfW@y`b)@05A6CPg)_T3$-lCQnL;4u zsggWgB{WAU_it{GQtp}(-9W;I5(bnC!_xUEWx`qF*O1UXC{uh|2Z>=Nq50;e(Mj^F zAfb>l=| zXt;f48i`R&!denGVknLb*KRk2D*tv_r=?XHSCEP6Uho{^9C>-i)oV9rooe#)(a%i_ zJE`wo=-`-EpO4y&ZB?6#Z#x;YPJ3V_0EfD%ySjG}-+(vRJDOK9hHkCx$xl9Mcw(y( zH%ur$qK%hl-N+iXEW^VXVR*QpJI2!D@GvpGcaZG>H4cH}%A~@Mv;EYou|B;JyCYE^ zWNVC z(t^U-k#7GvIJ!QqC1m#72*<{4AulJZlZ;IcDqL3)2BKc3C{$E2HZE2rGg{>wkl%mv*$d|_(dQ#b?Bso^g~d)C z&bS9bOevm9PDE*ytwE-UUTh;pIS%ewdDqSS zNC>GllK9<3{wi*^D?M%Kj~9=#S$ zRq7Pfz!cIf?5b6Qj7g!F`y912KVe>oY6KXQ;fHY6%RwJZ5e?$f;n!8&Xw`m47x~K+ z3jbmssH%yoQ<6gYE(-&N9i-r{uptaSlO9^oRoFuM2N&3G+%$|Vbrzd#8OdP>M>veV zRv1sqpTTU0`#ulBRxRD_w^K#Rco%2+W6@fzJVHEt%}u8y7g*Z(MKp`SRVN*DPL=Fo zTo>(OU|Yz%%(nZEA+S;jz9%+4;Bmc@=#!w?cgFZkq=RiI{YpiB9Lu(wbg7|tS=K1Z zdUU$1yFpm3d&B2$yr?eIa^3&K15!rhDwt&q3H5x1dK>c=b2rFu4Q-Cs9_XxJ`lRsA@PJQrKGDcs*wRoj<4kMy)l1i-THZC(ALiZ9?&o(7 zF42R%vqyA2k~ig9<0HW*sC>Bm=iC`rw{M#_&!^+lbz?c>*k?`mHE3`pu{cY(xo5e6?zYe_P_KER5l9)?jD3geAVDc5{N%H_f=VK7z|AM*JM!r)AO4K-pgmV09Y=uR9) zj`pb4Rf9-(*ad2Qj2KRRhk&MTZQ+qMP+L3;|D8hXhA^y8zV#I9{Ur#8AW9 zAsmCVaM42<4@VNMZrB3PfpL%ZP`D?XJ(t6=LG;YIa6(DRuNs9YZ-V(qWa_#dfe;pB zY9d$>$2LMTIk-8NC$61y^eTL#>@#yI{tpe21>aXt{k6LW@7$5X{}q2Ji*ljbk`YI9n>|Cds$mU6r86 z)tP#9+vP^7k1CX-dDjcvC}*daJ%zJ@O6%Wes`!^ZjZoo!o3Gj12p!<}Xk8y;5ho}) zf%e#&zdBLQksupBzprrs$KB#9^*7GtxI6s50mdJ!xVwD!!NwDRzf{r`?RuGn?S!Qg zo45`6$~BelX=uU-V^U1J<4fCIPxyY}u??BB;2GhCF`-W9YJHsW*Y4jJeSYEgSNR7! zH~y;GwxW{Xk1Y?58P@Q^vG%!*fBULzYn^(>_radeJxD#$m}67D{LqsLZ>B=S8P-?i zbI)mH-ONLO=WrBh6VsLLW^r z$6)oiYDFB3tU{BSXDE71T{y*X$yla=x<2K5^n0Ty_Pb0!wGQhgHzJ{ip$=s*k=2*5 z1+3E7gC>-Q<@ zHK#@*~pzk_}ee_}HF@g9v*o|*6&-lWgJI7aDVT9J}E4*RwYo{WwUkZZuZ2LiH1;+Zi*?IZ^6_ z8v$6DF^*Gm7x+rsjh8s?JpUorc$ecY^1tjb{vvl{I;SI%%2lM;26L3_z^nYJ-Nph1 z?q=9;G;-Wk-u0l-^!J@toYg3W>&U-z4hllIYz%m z8@hJ2N*QGTb0gQ#<=sqf9~S)Bv#(FDWj`cF+*=;}A*AlpK2JTqUOUyG$&;&FmX58} zWPimZ=XKQv#GRy>M~xe7YH4z|^BWq>r;?c`Msv1eANKl~ae!HOE9LGD^yKGXG@7g| zbIjqJ4|%%Ps9pEl9J7{eC&WlTHK(L2#>VO(bYU}bP;oQ5eatPL>=jUC<%Gp?bW`kC zSL~u@fvrTZH6I<2ANC3^H-J6*DR}=IeCYBUs8gMduI?b*&HbstRrD8`0XTgO$w%xR zP)3il3e{@#E^b)vjUVeP&MLd&4dGOPuz7F@v=8JmYMsLrbYFP|eHR$+Chi~1$7FCR z4evT%?9Eg^z#U!j+sv{*Iw|WAvDeCfk)kNK9+O3DOb6Mo7UfMn<7ta_ObfA@iPgpa zOS5{XLirjU+E_|!!1g6z-(K}ArdRhP$$#ctKaDl!*O-G}LKnt<@f6z$ljYpDn0bzE zh_m&v6f-{`XHD4Dt_lT|L)XzP4u|5%DSNt>8!mFDgEL>?D7S+=MyqEhYL&$x{}8!$ z@tD$6L1#y;vLVRkl!w^L{vgMS+{GYQ)9}fdRI@3p@(A1z9$^vQf`r}Y%uKD)uL*0N zow|VA3S<{iJ?mIe8*3&wCLEPHrGwIE5^X)b+g(*?)m;P06}Ut-NAWQJOWP zDLX(eu)2yYRe!KXHWl@n&TmRdzZiq%3!2j9Q|drfeUwyzMAruWNuuk3uF;HgXSNBJ z4{9ccWxQ!3O)r0nRLBoD`?eZigkyj=k#Nfdaa#M2b)fv0o5uS8$GT3RTMBmeqr+cU zudgx{%$QJa)T*ZbH9G&_?sMqKkrs)S|G#&io9-F4E~m6&_vw$XfOVg2>KD*zZ)IM6 z-?-U@+t2TL$2!Y>{JZzY9M0<)g7-$(win2{wxdAC%jdU$G#*tr>;WzQbiHatQEYD` z4tZ=hs%X_$V-k0QfBDsz%yGM^F=v{@9p>{nQ#!{TpvqRJ4%}WU96bjbu}@sEp`-^F zZ7BN9El0W=a!E-StW3Kc_PBP+)a7?5;32%!|B2jd(8J7#2s}1>L#Vq0s1)6oxjI%$fWTb6)HEpo(|Bn81bDS z>k4PW$>U(qL9DliJ8V-Zt+6m%i6Z(y6MH_34=3~m=$5n@En=msV$7)#8|;z^*>U3zO@f2BwBwxe4IvaP`0!H-S%VXj&?_+g>VUNutS> zu1^SpDEAo$6=`EkmE~Kt6kBx8oi0xg^5dt)nA|vS8~=T*iR6FV3O2O*CtAUTf=0J? zjJvlyp>SJVqhpT;oN2!P)uXdN{k1k@X41eeDYm*}ojxckW_76YDyMMI1Es_1Bz5ci zH(dv{8gjd^aZ${i{JaN8_GO*j>p*AXO-a_(U3X=Ey77YYMjA)s@NV&vQ(C&C`Pqg( z&uxS!TWPQ2Z#OY@V@IEa^XXrjU-jgNC7Q~8TYE$E=;az7^{sKV5gNxo>?pUTsj(ai zTG@L$jsYg0!c`m-66n#XEE?p^L^Cyr)4&}zc`@6)}0Lh};K zY*n~Yn`6yg@H)9=!+o1C#S8pL7Hasg)~0AqUK`3b*|{c@DC;4=$BBn}qoD7F9UGoS z7u%RTn)4A17ciXj%rp z6}W!HwG!8EgwFwv#U%O%;Cft3F&$qGgf0%&809>^;6Xz=npXa8Gf~g#pJ*n+_iqcC zKGCUb%JM^df*;eSb9WB32<=|8dQ(Z6%+PTK9iA&quOe!#{xB%fWmYXJY*J%1&ixe? ze;3GWJDcvwrB6Ql$#74;epl1&QeXVlDV|vAv^WM6$LJ8QyU5B3gk|PY0xg_xnJbdr4wR0vQH*j-@KfUD z$!-dynBY5+o|jrqffjK7ecVXMRH#VDgyQy$E2Q7#8`-v0*q$P-!-5DmRHQTfrFbNy zJXhq-3q^j{i?oKFA3Z42Y$=7iEYR6{u!}@??o80nzp+1xBsQVE8N8>dI%?E zvjvY}`7#l$)^w0j@|=Mcv5diTNbFz|w@aj7vKt*NozhX!LrC?aNDJp`Z18KRG5%bbTyF{vQUE}7CMKZ=!B$& z$7mw5T9sn8r+`cSLvUPOfIcD&7GV?%t`(1OeOHQ}E+#XlR5FX9J_yOIkV3JlvAz_& zLyU1qioss#aWTe4F;tNO!kN>KM?u-(m0IrH?;=-t?!Q>15Uke@ztmr=3`X_W2&7ms zYhk<(-`1jU6nwjjzPU}%b+ag9xMgCvos8v5M_y_iNpll>R7WAC+O;!X9&Ca(6s)1F z=t3E{)(F!VE(Hqlx|078c$vDwh-?o*@RsH=Eh#j$Y1V>w`NMDO3$7LecNU>|sc^ z(RWPGmD8CJq{~b@4V{dhVKT&mHG!&J(48{{qfLURQkMw@DipgBGQ>IO%A-W!zM>On zZ7=H=DpY|}aIkR-43)7UA<;wKR2&Mm^N zS58LmU!==e48%8w%roaG0(H0$9yj)Dior88J1(0QOx@)fy(xv`%rOyc|SFT zv}L=N<4EIju^irlUa>+b2V3TMVg=IzQ*b62lU-Lxd8<}J%xRTa47vHx^)ql43Y zu9VD(ZG^kxYSBO!D`n-1)mY7@yt7C_FpqT??zwA9l{CKws(6SyhX8^`n-6e1tu0m3 zX=`P&*!T4R_j3In3|CcIX?}Au2J-{SDfP9%FI(f|g>EVe{+v9WvQ| ziam7#uMd9mcRNXU(Jxr_VJCJvc2Uwn7u3Anc#XR$V+3Azeb8-)yM~(PKL9HLtM;IG z+C%wOj(V!L9)sD{<6?5mOP+Q@ z)MJ!mf|%FH6IgLSDf;F!-)5(v?*n)1bP5`MPgBN~HG%S(rzzFpSg>;LX*38_G6LUZ z?sb#^oe@*I`~`O1^3Gu0`y5^Fs0)-oJV&XQ{j_YMs0Hd7comtKvB6P@^%D5aFU08TidaKZi*fLw;0iPtU!@%8IpHc!T3!=9 zW9HmdD7Rf>OYy_4!~C+3Vea8}9d+SnarH%zo*R7wt;r3FnSl557W8K-PTz>b54Kpk zse2OwVK-?W{8UEJ^?nr-_TP?aO|M_EkqxPA=6M|Sv|FO*Wyt8MwxIr8zD2o@<_4Y6L-8kJ~g(3^vmza?^8;hgamz`qL817 zb?gh8ntspFNW7q2=C|tw)aAdS+@7rtws_Fbu5KB5YK6uuv8zrXN7{)N$e69@=4 zhoku?mYG21(ogs(DArL*RCNsQW1mGomoIGTtk~k$5blOwp$$um;b%rrPOx?MS7yTi z7K?{!0<7+VD7dArX#Km4gKB3?4EHz&Sh=DXWn5(ij+2E_$^J!JtES+kC3*!bz)BHW zo;~W1w@Jn`H4_1IZ?;CrYIrtv%j|zN@1B<>T{{;Lu-@-d9q}zH! z!(=cO9768dnHg0)+AW#a__IOZnY{`-|jPLB(EqM8P7h zswv16l^A6l=xH=RAM7M@pr0@{tKUURC6sr&TZ=KGK*vyF0lb((!EgMV;OCv$6089GISoIB z+}J}KyFaA+*aI{Iok&in!5#o|oW#xs4ebP{q)#osoRpi>;9vX3e`V%>1Rsibkc?H3 zgA}%^0|$91f!EQ@>jBtfB##}S z55pr?lN_MB1;;bVL+y<3#aT?sDhh;98VTUGha=#NCO|a;jyYJ&z`M8J0(vhzgmiv_ z<10keS3*5$LE;MJ*{4ZI-DlkWxnG4K8zX$h6GxxZedmh{yaIhz} zdS~XUU6E;5+>A#1sBb87x)cn1Z>XL#C0fn%!P&M`>HyMNp#xe1SHaupidIWOtnTd{ zAWUPemcu2e`d9}-P_?lgL>>p_9|u6BErjxo%OIG(4yy+sZZB^eV9n-jPvI#1Vjp1r z1nawIxke!>7|fB6HV!#Q2O+!`RAWH_AV~y#?>}z3G~*JPb7wi?y7d{I~Y? zpqla+2-iW-T@FQd-1R7Tc>z{++2XIQq~S3I_Egy_?=H!nstR^fnY)LA@>;~Yb3c&o zYaONf<_g40o-+u3ry%%l7 zaP21*ri?AHm~1T?T-94sM5|bLdbrNy&&?;*kERytK3dG_Ff6z!qc%U9YGpD*R>5!& z2LC;97Yc8PL}QdJ%aG_w@Eak~%|VZp=(eDzO7v8ul_k;atg&9A&w!pQ(H*QrnTYGw zNIb3{b@bUijV`y3?O2wT?y{~_bM8qg)U#c?9%ahJQn#+zn+g-lyly|=szQ%49}_6? z*cVU!LBrk3@@>TS zi=(7Tc21e7g(bMK-wsvbEu9F}bUvzU2L+SPSS(R$Sstj40&llOsbv>IbrN`2BuXuN z1}a71y_6`m%nDV$tH86CD77pYR5$Q4?PQfDQY~u&s=E-7ottBnTGks>4}sTTqSUe} zpn3|t=@O-utpt@S@YYC_T6PRnn!r0HQEFK+sDT3SA)_)us%265KUrYbktnsSJ*Y_n zuQUEf;b~x7P~xeDEHR!MLut%ng>VD#zo!sxu*6f#hDtoOY!s;8xa?%(Bpxh(D7uJD zwQzeD8P*ixEheb91Y{D3jHi~(k$A8I14>MAiNv#$EthyG4}QsZQ zE111DSvrO9Hr2+e`heZ01C^MGRxkwSPMxd0_y{rn_2g1#d{wxeJ7VPz}Cma3=9J$W?(C*blQDL z$iVGGc*eQB+hJ1)C!ejQyj?ZjvtRxSBPLf;ZK%<-SQ~1PZ)%yDgyga7Bx?`!1EPf% zOxbn;vU2DOY!2)O>@K;}fZgFv2lfDt1*QTCm;=Sn9jn1QtUAg101p5M01pEP z0)NIc$OeOW0>%&^hWRpR_bl?O?9PW5m>{s1PTLyI@}R6^rc}8>c#0sZUN=uo4FW>! z$?v$ywbFjPAx9)|80Z0nng(4G@EGuW;0Yks#AGM=ZpTe&9A^+W&61WvEx&r4gFSuH zwzQ$YPMGY|79tPj5R`y!z$HL$;4)wUa0QUP8+>j;p)hxAxK{()0e=8?1+E3A0@nfi z0`XA_MqSp?fRm<;+$3^7WvWe2FPO^H*2nmldCC;Z=|o#`MbQB^7&V#NdySHd4>lfH z1*uE`h5;v1qtm81JMr`U35-entkb5hR+&?Ude{~m)_N#p>^-FkwR93FPl3XsuFwJ~ zm@Pr!Lskd|a~%ZVE#R@XMImGFEKuMbvV_B;os5kb6wD@;EJFx~)ft(O!25!wbLn=N zJL zRF))Fz;?hkaJL6`1TuFI$<3-cbAKnfv1}^q05`sISx4Y&U?<>Tz!V^}MBEKH5!f9_ z>|Fp?0a0gl@p4%WS#J={QC59`eSx@iLx2N-*}!z*ufRb-FDtYmatiOsXfOdC+3Umu%%O1%pO)%joS zy$4hjN%uEAJWX2_;rmth0Pa5f{KJRudCvPD@r?J@t?KIPRCQC``!L%MH>}CS>}GP|hS9Qz z*?wg58{l&1mCmy%Ld z)1U5L%U;EephY*b5y8g{Nv3dH5Xh(KbG8rCtWC0_jyJRItdC=AWAoJsz{-Fp$@oV0 zY?^UB+ljW_$WBBsVeV#jx-~usq1{K?0iQj1(u!>G1o&z|5(Zv~DWgRCYr~BFUGEd{F+M>g=fNYU1 z0Av?=0k9R|Wx#HLR{#e9;$6-f40r=@D&TFv<$(7A4*`O|%z_<5@(hqo{KbG*0iOfj z1N;pTs&ksUY$2Th$lj5O zfH8nG0NLj-4Ul~fQvuoMz{>1%m=4H3hZ*|dN7=)TI{Z)Gyn1NQ7fOV$aKk#J?q2qsK2f)qa&p)#Jb3f?2KFhAgaf6A9vzu@| z=zcLO2b1;l>?D-BJO_I^h-N&8ljLAJ_B^{Oh>kBn987U9vYVqc^F?-&MGt&WOcTMh z4uk30i|i)NI~e9Ba09|u)ESUX6+Ho~1EvDb0>n+pf?-b51yI873LxVzx&dCpuzLW$ z1nkLCe*H_B+g@h3L?m4%oU}$WhCy^;2MV-74AVQl%GPkwp=yNP$abcEe`a^WRk*#* zPLVT*ufgoguMEl_2R@KeV|h7^oe`&`hp)5k{QKa1m?0#60X+c+0^;jrrx3WubU-$> z4TQGqE>^D^Z*Wt}y7i<@Z?mH-4?!!;ImosuCJr14$a)(N$maeLfQ&mFNw)8@Z(&l$ zT2YCXF3hx|tVB2@2fWX=vbl;zY_`1y=m&V6qog`)dXKJYN5kJ^cfe>WdY|1*ToV$= z(F)>8>EYJ542Rz~99~GrKV<((h3~W7>FhBh1*P1|cB71f?g~2bF}urGD@y<^`IPN# zeb3OreLx?a|2MkuDf_;(ohyyyc-OzJbcxoF49$NBWY_qZYJS1`Ht{2TXLTHJNjq<3 zyU(`cD;vf;dphr9^M~P}XNH4{x!L>qU+MgpY&f1g<%L1kphAvs^wszRsrW@#1vRS) zsbZs)x3hU==;cp9w$8ogXh3hQGmoV_&p|91A>&8?RU#R)2(m=5oVRP2iM7cR$4mfZ z63IkB72s4rHrq`DJOnr$knu%4;2S_K;3q&GAgpMT96&aAXaE@_ougkU=dmNdw?5FA z$J+>jsGxCtAU*4i`1wyw_)*PgW3)l&VJ%=d;5xvXfExk30B!>854ag{BH&iQ4S?GK z8K3_P;90=!fNnUWo}+QCFFEMXn(|7iVGYUrJ44kI2Z#(6Tf@YOVgxXep<+v`IJK}9 zO`OzzD5Wg~CLX&Sn0V}ZVB)b%9Vs5W8<=>kj0PxqUogFMl>9I(MHUwPUwO3p7Q8oj zw7wR6WdqBbm1A!H70WB|)iOGZb_NbPYboQ99ZA{nE*zDwX8V85+`So*V@2aD@OE7m zVO3(Q8MK?iYW5=_Tg^5AveoP-K*sB=2JB%dvo&T7$~k~*0SWMDzy*eK9^iVE;dg+3 zDC>_{2ePo_^>p5fcc5#Q{1meTs79^ipp-Id!-+b}if@6P+!w6))uy`*b$e)%HJ{6A z$-##2#%V+mH+AV)6FMA+js3yNP34qwxwVqwJ%5tX?JpCotmE)jS)ki`fYyL@^`C8E z>MD_sv&JE#-i>YhaEKjmS9_qL^$-`SC$ZIsysi-Sz!1&X*Rv-wFJFI$tu@kRjaDzu9)t!)NOe3RKV zi0d)?g3^R`dSLa1>-r3=iGZ;WQEV3vOgu;ZmOxq8CX!~r#17j6gN%h?rIa?rqGuQk zmLbD>J`tFB8?%9l>-j=po#}`RZexG_XBWN_Tfx2E_(Uwo1Ks!lTECPH8h`LN6kv52uXCR~TdZmg#ZGss)d3Tf192K9dBBRH?ypr}FZ|tNW>(9gQqchD9;C(&B zC(;CG5g##|Nm#!kKiioK1Nb21sjCpk`*YnWDv(c-!Wnk_d94F23*_yRafQP7Tp5rl zt-x0bj{#RKsE?`uG9EbuurXjLAY(hK0;U002V^gNI3Qais*@s!KW;C6jea0l2!mlC zcW1g6#QRngN8FwfaK(7*fQch!{fIQSB#2$GkEajzx8W+%*;TmF^eViqB{MN8Ei4o= zql)H%=Jk+d5ieUex?F{iS9C*N26k@D3v-}q!Mq*kOAUj0tvS=D%Y|I@9jPdow>9vt zZ2l3?&pttMbdkW=NK7QPfO!a)(2&)VZwN**kXnWCUf5+eB82yp&W46@VO*fJJ7AB> zj#LlY+Bs`7-cBe z6w1UY!CW7#&Zh{^%S7S|az_e^;3H^pB=1nh?agA#6+Br}GE8Wk$tVSFir`hwN6{m@ z@5cdEfF}UGS(zS1@V!0QJ7DM&m`vh{Dwcvz#v;Z^#?in?Jl?6aB$D^Dp2prWcZ(7| z$}BYvY*iu92xJO%!}fmnDBezbL`pgbjJPohRQ>l@d%Egd)0SpF$+mMA7c3Pz7MCfU zQ7|0!L3+~)w$yA%j0t5e_mFYJX+{+9L0e|G^rig4lT4{_o5pI6WtfcWUJACVsKGnI zu1O2%0+<8nA(ScSb*zJV7Vw6+2y@9Ka*gJPRTe)Y_Bo3yN;P2OiyZ?@oVpW$b*5d> zn7Rkk%V@q8rtC&Be4-KNYTEb~dc=(}yl+%8&c#-4$dSU6YyrsTG^`|9ae%DMz6{7f zSuFwE0JZ~cOO`eG`H*dXuEAfYyo0x8j0ci5LbVlOV?g#|BhQ>a^T*F=x z;V+8@z5{P%9LMLBGR#YtR}eUphS5QIb=}Y|)bL7I1!UiG4L~-k2*93zk$~xdF@Qsa zdh#6X=b-Nt&&P4qM7MD{1DhuBYp_I8I8`?!iO+}tZVaA<-&&` zegt{*XPeNG+I;I;Z}Gyh5B?n>dv}d-YWBgK0kRL<012V@%>*^;Bw*+PHvpOgt_O5tWpb#;@8J5-*?Rn0&!wP($aE1| zcqb$)0NIjKIF*$q?xvNz2bumhk8U?)IR zK=#bd0Q&%%1F~nX1Y|cF0z+07Am;k4rGPeoxP{ChmgUZYF|Y%IWsY4!7M3%i%y=hO zt_SD{$e1O(ELq(FF>ho+I%ls()?Gl>@k>B_Us)dk)qohZ#0L<^O8fvpV~c$jaEU)) z6~F+%P-!M2djp99AsCQ-&mn*<07C(x6_->6WSm+xzz%?6fKYNvA^`^gMga~6j0XGx zumRw5z*xX_fHeU(0>%OE1dIpV1<2YRW{gK|Ajbgf0GRIf9yqC-7v zA|LpG01JAX-OH9ZMxw!;grZg3{4S1UN;44RIo)?r0c8PTg_p22{H{8aAOZBG}G|EvT?NPTPbk^x!L#Z;`hHHR-{tq$x(? zMY^Wrb{qA??Vhnrr=&eS&|hCV*8>y#K(gzJ3mZuFd!nP^l+hEt52v45X)Imn$pL)Ur2Dxs0at#z|Jwrrzjl8QnsO{4;Qzb054}etjeS224 zYVd=SruRXI`;2IFaRpaemfOotdRQC)w}6i2_VTbjDU6r1<1%idZL9ZnNG)vk+pI2#9@dn$r>2bt$sMzn5_EaC<}`2FO>SRl5I)p7%Mr`i~hm^ zssSi@P~!nOTP2z{0Pj>K8GENvFz76fswDfnBYM)40cc%`DyHKG4I6?R)G8e}=qHAa zoHs&A;WO|_Tw}$vUZ<2aj}@;B!2SC20;;x?C~}QRnZd`(o3Y-ByBv!s$dzWA(6cw) z8dByEK9%f4V?wCeP~M8L8Rk&xY_Jboh23EB%&%eA|BxF#^7${1Gi(jkRt2 zZJRx9k-p0){)#ly^~!+L5hsU-87;1(x&9?_ab>@a{U&|9eQ5k=*}-ZJrsvN(xb}AQ zeM9?gX?<+y@ijiXu8iDmHR02UU&1^t%sKNhD?2)9vv2j;L+hn)nl|qG>6@-$53R>n zZCJ&jk;Tpm^|si}Q@-%r{i>2Aqw2#tljgd$ueT?9+lG8&mrRerQwN-qEz7*DJmKB( z#I{C#21iWjTxU?1^m{SywKpxd?QQp?yUlSQ8{_qF=AUX=G2P`DpHTH}8;_{oO%CK& zk^H8p=oRFW7&-FRq>L*Oo#wsiQ@PsjduQ&i+QRqAjLVxm8tPVc{<6J0r+eb%cFJt$ z5bs#Wj@ud^Nf@!J)vVde+wY(575+HqRQvInJ?8G7+Vx471?THpHwZO-_25J5`e65n zs%AH)4>`Tg<;D)z<#BIcg!kT4Z`Ny@5tZ)LiR|O{aftcHC(6~0wzt+F4KcZMd&!HJ z8ADoEoq6~4=i4)EQ~p@o4LoYY=i>{HO z-u7u{io@Zz*H&caoZWwYpI zF}Qxe+UrZob=uc+mJG>j+Tw_qC&B$cOmp>HwOH{o+Sw#}<=Y#-t_dE>?f-b>_{|{wrTe3oN>nd* z9DDddekWm<@^)so-@WQK-f`i{i(}rCM(2eOxIDa3&zH$nr;w%Nip0kLH$wcUEWd8I zuJZif$IkBVyYSbZ^^!lG8UFe9yy^?j9%{B~=FYdjEcDv>aopw1K1t4R{7$AgcKNYk z;=@WmH#{W|ec*c~I3c{#A?2-Dqt-?BPkx@DI$FE`S>9@2m5%Y1uJ=r9*L6_qcHyeg zkL`2sRlGIiz4O8$kHZp=MjGe;YJ9cI?6mVM9j_b+9yGF6%z&D{D^J{>m~-jj;EdR_ z4|ndN>E=P3*T1b>f}(y#4z= zzDJ}-esKyv-}Q?1+{zb)ed~J1@jOj@sUr0s8fYJ zm)uq9cTM3RdzgD;0>fM*`9a&Ap0|#&HU1R^Bg8X0xr*PdGz&*b_}i(^+{(|k=XR3) zaX!>)UB4P*cS2<${+)88#Ro6>n{OmWMhH zn@hXj=1%>O*Yu&eC;194R~g5Lzl4A3Ad&X74w6psDofVEuF?)ZQRXRJd-N#`&%uK} zAHnqwzPGn+r_vTx=rL=t3N4Ud)blj1{lY2SoetQbauls2*502~)_O2$Sc~}6Xp!wf z%44|pai?+Ua(c%qQjc9S5r%NG^aQ&o_zX_)J6cIEc+iGpm)sqhJjVW}XiR4vFKzjR z7O{_w;2w?WBZ!v{dAyhx0T(A3cQS<1(MB z=A6W7`xGhoMWsVEr>CsJQr5uFllq|r-C{>JpmqhkN9if1m?wvq9o2($1vo|H0t{xd zCsjCw_jGM(pDXACtKE)TE)OOZK7fh~cr)pB7%5L-1fBSnv)7ll{zQvd3vJh6GpV~5 zxt_)dwC8YWRWdz~p=F%Dq@=)Ym(1`~D|3YyEg+0%*Hi4k9 z_p6K&14=&Thq8e-2Svr&c$c2O3nSrdWryW}a)BL2K^LK8IdTEd`WH22-R|#Bzg<;2 zc$`H8_BRBb;HvR=hjrp-=!Ev)?r%$VFT&Jxdaz&$hVNyz~ao9WX zCXMo@wuP*BR_N?aS`EPag5>hfa;b4bK@ChoVeBH@tc3(JSp_N2(v)}zXWv6E0tJxoGBMv8_5+#4ObTS?z z93=)Ha)C_?^XK*^zi`q_>OKk{DE26nXYkj4jD zG@c(i536)*>_<()`|e~<#fLQ5QHUElgsgR5*gAJ%yi73@<;D&ae^}$C7zCBn0Yp;z z#CyqK0e?bitX;-a?BMmoOEudGA+}L>9r!aE*hYhmk8L$9Sn2-ihp?yoI5sMWLyc6+ zMck*Gb02v?a-obYauGUJ*h1H3?j{UG(EzHso^E9Ih4)fS2HqQKI<{JR$yZ{YKS2At zck(dXjayfU;zEp-B^y3O)}~gz@>3pgYoc1YUTW^ONcjv3qH4?p#g8_#HX$nL`4~mq znK@Qyv7ZVw{$wj(xq~M(6*N9#2qt%XC!{4~ z#D*ZY6o^8|x0g6HxjIQ1J4f3 zt)}#M9qQIE^S2%=ufrc*PDQmbo*0D~m`bA%_axm{&@$(1Ud<<9UYm=r1MdYhr%9sO zcUHa#|NFaZ+{?2arM$u1a_8A^FVFeQyUnP)DbC89i#~MZ^^Q~=v4Xj<>C9qXnKAJ8v7t=r&^e+@NOWk}kf zzmYn!Il-PZ7Mi!^xr?=uZu+Rxu)gfTSDAsI7)q95W|DmT&(?8s?Dc(EK@&~gtTYb# zNJ~v1Q}7n-)Y?W7#R&(CP9P}cm3RZx-ijd=QB!-F3E7F|KUe)ZUw>Fwz;1HC#4~DxuU-Xo3tMQ|p>l#~oQw&ThX=+^o zZp&=(os798hg5bNL`%4?(a{wW6b3Q1vgrH!bnEOjv7DlbeWjB&YW#BuMHa%Re6t!$@tWyXk&{2#YO%fN+M9!{yo#&+o<>G8Xl7TCH{`Zyh{_4R zRv~7=(V?%E9oBLB6Qj;$EbN<{SmR(&+j?6@6f})03Dwx6U|7h9odMRKhx@uzt$As# z$$%}N_fG2l{3|3{0`e(o_%`7zY(&JOq{|UZgYxrR7&F%^;Mghc8ZDH-M)NJ$7X6RGnx6k@hUMpi^oX{5 z-d6v0_T$K~IVbS!UK$vd8U}_19*@E%>fa0ui{@_(OU!qMEqPaE#m!fyAp$Xx*)?cwK&!jEolpYJ_ z<=q*rFNNgZw9$iaLFl0kF8Q83mIj7@2w^4--x&>uGLtEkzzCxV1)(4G9_(&cMKI zveMZ77rYBRX1)dQvS7^X;@*AFpDW>Ap6#)!-sRM_L?_cmzl4#~V+T^Kb}yLeT+ipk`rSrW15Wj9^yoo@73sroAILr4S{?gk z(4(v7Z|>EQKlnm*J@0QC{Jw;Dk)L1Cq5qR<)@Mt2mkDc@#Qj($aks#`7}LS0XQ#F3 zLIoEJhe};V)`h^j#OiYrG}ZsYzvw?U*R(eJifeJUiwKFRTFSOm7t}E=Y2e0Tb-?IYk&o8`S$A@V--F^YF! zFFHc;A#3d=p9Idri8i-IkE~9<1IxV&g$CV2RQ_(GWQsai+%Bt0^+Dyq)Q?E;;)vp= zvxtE>9vZXBw7Ce;9hc^#d=Z+jKgl!v8V+5K?5MWz#Qoy))u3X0AvX9LA{w%ktEWI% zSeZiJtGpE5;I=c~U%b|()(Ez?1ca^uf@X(ib<`vZOvxVFf5g#OemH=olPTz+QNxHV zP~L!o@YNC5)SM?-Zr|I&NE2wt#p&k=p^)vCUew&Qv!B8u7!E?g zOl1^7>8rAAr4hljDX4;%pg%&0B>ga7ZUtGVZgp?87!N1)TQFgCv$w`s-y}s-^FPgr zJza2o-fy2jeRSWkuFV*kjUI28ffK8#AkPh*9619c_E2QR$fCN&s&?#m?&~}E^_}~o zat52%V;Zn7FZYFDT#;G}%Vcn0yD>j4!OvWhM>YFue&P}tb5)UYPD1e_@29yUZ355t z<})kO-kw?;y?KAlIu1sPvNnb9Oibw30F4i0z`Q8mMGaq@-dZcFnXdU6ep)3h6?)SQ z%?gfd%-Ae7Z9Iv+ftLqDv7?cGNIe)S`U4rp_;uMqHsZV+VYXP+j)`6~R&$Ai`_cY0+DhW}=`zb$x57Hw#&qd; zV=KLFmgcb0KgQ*+@@@FHWuK?F@_%O{HNCee;Z=|Lafk8yZcalvA*ehv-|yNqg( z+Ve=mXOEB0DQsOQ3Kt@=kFI6Uj_pf^>GwzX0@8~C`&$Nf4RKi;+K zW}~S&{%*H33OgO2SIN9za=*wDzV3)!*oGY|J>n^UlBU?C&V=@j-PFw*(6VV+L&53R znzqwN-))NKRcR(e4uCS(+32DaF*RZ$x7hBplcHcPOA#-b_; z$p^mVAtikAURdQ=PQ~s91KToihkMI(Q8!SWYcR0oiQ1@R;2AH7+Nc*I&gS%r0)`P?|-(!p3A zT&D^6yGBaMELz@78KtF5>tRK!E9#R_f;Fk}-JdVNf&XxY_~-L`}Dr7}Esqrx1&gU`$)TO=E7* zLFvKBH2-JQS->}8Urf@x%xk6weeOn+^cq#KpT@jT($?%(`;Nu!dqGDMH~-e>&$Z4~ z!*b(vlkjD%}p7)iWwF_x1J%d7Y+)8<|w=-g8W=Ru+D}J8g@<9~`jJ zrh18z>1^-EQ$J5VySjuI>HPdhQyEz@T`d9a#&EMUBz>ECf=>F4a0Y2|<;{HRH7h!hKIH76s zA5-B-7s)9uU*jPC@4S7+|BWU2?(IY0S(5K8NqJckJ*I#PFuX614`Iq49BTW@c^rXWUQ*yZil?oUYpT9c$?B&LbjLOKXIOHoQA3gLe$j@9; zWKFtV*97{pN#cLZnn=fck#*7%fip>@^>&&7B=LgV&ux)M`Q--Oe(1h~#+?@2DmnAl z{ysIR__n6*UtE1+Med|;kw#f!A^V@W`1pMjJ|)vD_=)z~$fdC*W-?{pX>E(5ihfKU zd|T6K{BKz$X0m~c9M@ZnTB&t!kbI_Df@amtXlt`dS0AqJ@Y@d~uB+V+6}xyoYWpJW z#?D$*D?X07XZ`ZQ-K~|jt2X$=4(*c`+4#q1=kh)zOuyQsgo6o{{Ob49qfG1E5*Ft6 z_!U1b*?#|m$ij5;pBi@EV)*vIxcG>6vXI~YZYP7EPmRAZE@7e7%G4_U62`a$!Q?Z6 zl3Q51P*Mx6x2duMA{xPYc`FsP)~Mx2nLm%HI>~t(B$L;K>I9a6HX60!3`}QF9V!1g z9Cgg$sPl#j#vpMuGm>%D5Rk4W6df!zPb3UzGG;(iE8?Lj*;A1+Uf_^-z(medU|b0x25Nf>CKwQL$o(kMyP=g(R4{eM5Uxrc~=pzr{SLMVl%IAe2;l zsD~5YYVH{Qr#zb(Z?o|ec$@#m9Hr~7F=>n!OYma;ZkGDa*Hrn=*OZ&D!EErY%u>;q zpqW`}6n@MsRcNIBiHi_@eiqBLx1^C@Tcm!LYu9pA#|%ku@_J}xgcb^HBQr9gk;dR{ z{$iBU(VDe^{#;~fUkd$V6YWY4F$o0UAJs?Lvig{5{pia;jpM)Cq-fP3jg`KUxi*)h zhC^VMI<3|sI-pW3*qHvwB6Y<=yN5#@cfpx?tEF~ki7`qKV^lYeyUc1F^uJqchjUmE znHh>Ud5N7W$-TCw0&VK7GUJqbI5;Eudl=(*LjHx>A^0=f>1)_)JN&a|rqZ|Jcv8nF zs|tSUy?p+!yWO*gj(u->ti`J^ivVSbVJWkJZqD$i%O-jDZcBdO((6=(!0No!vf-Di zKby6)ts?Bc#}Dd&`cFO=rq+$rkDOP#aqhjKhsT#k)p2;-u%7emJe!ZYIeKf|{LyAd zKlgCF85g73Azxy8ddFG==i_|*xoJzIQ>GuDmvBDA?!TOrIq7H|GbCkE;UpLWgGOte zOlDN*m1lQv(ln6=QW|VZ2c5O;O-kIH`?ommL?b6@>xd6=-)SS`*^5lg^|_#D4 zlq$e@RI$v?6e&{UK}{^9!hnVSU5Y`Vj{C|bdSRJMw25eFnlFKe)weJ-QAz~1D(nl? zHvNyPa&%R-4$|ia>r%AAx`cSPf*Oq(4>c3zwrM4h84SY7#f_z|}ydq%jn*tlX}i8^P1|Be^)>KDpa{Gk3aBfw|k^v$mZ zbK6>f^z5-}TtStzTaMS?P6&%Sv|*yGh22!^2UiB<_pJ)BOVl|_luzRAlg?Y$E@5h>oSUdjt@`kz==Gdjx9PBPvtJ+%eDY9f$%d_%hT6Yv z*n$Nrj$+OjndyU)v;|UQaU*&J3AU*Jn^Zc6z3B)g(X+0oyiuG0b8$i??&1=hp(|pc zA4{AuHkb>}&?`}nQj6KrnalHc9gpOj_#AIw3kt1*fBnB}c)n|R`j?m8nbRKX-o4$lhk)L~hV;FCpvO7ULwiN)C#rk&a6pDG#pkPP>W!`Hf6?&lL?97%xE_bE zE#2K! zYPs*D$% zw0-@?>r!9~*BaVB!$wo@W7co%{7)~qsotD&bZNa|*%x;=wDj8&<91?UpWep0UVq%} z-+OOXvl>GdSKxY1{^P)ry#<3O93Hav!07&(*wdxzoC=%&_CCJv!=PdK`zwhryqWiVB!bYd^ezXNMyjTmwD3|?ibU?n zNGc9DhqmSbDsO?%Bl@ddWG|wz=RJnvtD}XgR;FAYgK$l;B6B2cGy5eLTgz%18cf2K z#n(iBu{dEbnH;Ad6Hlsn6MPg?;t`d+mdJJqT-B{w63ORUW!v5quC?L9TSweUW;JS{ zOxh5Iw#R+tb&y&Kp(A$Nx>F&xy~(%Ll}JKqe--Rr3wakLQ`D=6K+_F`4QBHD4Vdbv zsHFu`$g`+Ns)o=3HKh3dR_>-3F&wK#$oD`+jRtv`W#GMcY>fNZgyKy)BlbiFZk}T^ zi6n>ywzg2qYXLQ-%{}eW6|1V3glwg>A61HUpgof*Yk-v(ndEAp5Ze%j?FpVU5l>=C zOLJR!CbBDJll8mmqM=T{2IZYJaN=<_RXMuOVCqA9@d<%`vKA}?*0T3#Ds)qga>oby z${T>(LLdv~y@3K%F%s0tEl3rwLgYT=x0fz&F{h`G54TdNCWoL7hQ2S0z1&9o$7Q{k zlIKM9ZQT-gjB-D)Q(kkCi^Mu0HWP@#2{FgBrb9s;PoW>HtL008Zlz_DkE`VcKyQlF z4?r#HIim)(0_RKxA4@K}4az;ms>wiezpC1Z@;$Ed>1Z&Kil*R>u9$kn2~;Og73+cSZ1a`T^KzRqqvw@2lx4hG&Ej*{ZTqe5o&g)M5Qcr; zCE7jpQ|D+mDW&xx5F=m{w_uKql_T~(7S={Mrbwi*XHlGHAc_-<^mGSF>=C_*mT7cO z(p)KduJ7(3y)LDJ7m(8(@sfp5PZJHHolYB(r_(h@#NB=VWtby{G^yn%J&ce}Ie`vR zXE`lfp>;&?1N1!b0Pz9Dp{EK1Y@g_w2zE+C5{6^2cfqdgp?T4OOX zRFN@pzpZrS5ND#*AO@ZTi5QnE)|AG7L9f}S^n4{wW=f$OyH_OjDy>~+HhAoO z+}%p}K3TlGX}~efNSv^$m*6i^4mHDn<%*`#v3pAT;3~cT+DXX&HpmXaiPxnZ;dS&- z7?w}h^9@2ZwJvu?dZe}QOj%>hmF2h<-xWOsds(&d&wq8pCGqgjV|embGe^ zOaJ!&LgcCPJc;s#UmHJtV7VfHVJ01s;E5?C1=Gi8%oOG3pz zYc1zo^(cfJDQqy36HXK|H&sQcUnx)`v4h?cE=i1S_wz}2S|B}{;+Qvj!(X3X%3{hmTHCwZB?#vS$de1Lm;<-Zf};VomJ%Yl=Op8j+`)9I2X{ zw)Vwn|8Y0(_h>$>Rn11PCfoPecmDGFW}hb4NIv%7Z&8t=`@Zh4Lgu+n^^ZL@X!GiJ zE|%378f_|3@b*X^6Zs|R&J0Stt#xV`_{X3bhZ?>0DUo?rkNXtjT9R z^H+KA(L?eROM_KQy(Y9Df92u3lHk?t-g-6(OMCN~$w;YsWg&!GlQ~hUmltd6kgJ2q zNBI>gfAX(hlsZLYqQ6n3eQRA}^By}jz)5fRN;|}~R6i^VN#UWPWftxXK}ed}6JmrY zB;|jCkTlH-5i+b1uoN9z+Chdn<13fpeP~KWQ3#Nn(F^=`Ta-W2z>%4ddCvICZ^-Fg{EgO!qh4-Ay7%yy-6#`Zig5#Grg%@6Z7O+Ak!&g0rp0iLELZq;HU@*EH zLRI7sTO(5}gJa!GA6gm>;U;G)WS2T{lG_I#HzsQ2Z23W^u&j(grj;qlt(}J{riBy~ z;{pWf$Ls>iw;`o%4Wgttb9XZK@=uOZzO8$?YK|rBLWz9|#~{g5+`(tJN3f zwu~0IP3P+)Gb3@6q7c(`GA?~M1gDfnVgn}b&<39l-h#WMqB4Y}$_ebQcqv9EfN4%3 zm0@7ZQM{Z;d7c4Y@|Y$PNir3*VxreR45>TH%bJRHa>!CHOsqmkY8JFD808PmC<$H4 zBOpvQVR99O5muLma;IeBbn^AdNJ~j+$07}Nmr*|7T&z<=w27k4tS;-$YPlT6MlHor z&Vx*{u_fghxAsyT1g>u-9%2lcz>Nl;hb%0dDiq})@crz{#zF@8p$+9tFYr>V2EL@N zc+9i5NGL?Po#G4Ll0Hr zL>occl`3AYDkgkiQyC6L?kSwTR*9l*ReHT2BE@J0#BB=pL2>-*vupo(x&}t+|le>tcS}u~d zg0#=j>ZTs80y%o-UdM9IpL%CXpL@=h?xk8-)4rezwt|D~s;;zj@i?^%Ymp5tt6}>s zL$-jyvZbXVW@dVgrOr%&kd+||Z5*XrB%)mQ9+1gp36Kw&oVWy#mEVbSqO`do+V4+N zA=)qZg7Vnm^^sY}7E&fs!9ZT)p3_nXofG6lK^8>R-(<*s+$+j)?BE0mk#p2JNPjfA zh&+~y5-Bz!3liyUg(wM%ky03neE$96cK6wQV zcP-z(umH9 z9y)9eHrB_fbd5QLbpmwIFZI;@z(Jfys-$zIk3R6ZY@ycG;3Slz)_Gx8+N#zi$|X3b z5fw%29Q7{Vx-gDIhO0`tlXh&{P#QZb&6Fkn9nr3ox^{6OXRYt(ql=J1&m?qw#z$kS z-{!A-#z8T)B2d>*`o)X>2-HAX29r3C5J97hv_bPc#q zbP~YgM=vBELF&0#fV0V?imsORC!k;OLM%cF@ zT+f~)EuzOn>w0;!SyX8mRCfJnkJ!l8k|toU#Xl388?B2sWnHoP*IbVqxrjrit;`y_ zDbm?qhywp>puSqHt~$qA>HE~wSx7O`5%IbmR_qw1t!qi|wp8FA;U%Qw!wuA@*V4V^ zI5X;1N4J&xOs;ixm62VheqEhAH=717%Jrl|+aMG9M|AR8|3h8f6pmt>=_*p;M4en8 zSzp(I!|Ja}&^a@T1^wDUmny{rv`$p|ktRWBs&CRzXTl+eTuB=x-5!TLY*QQkts$|7 zTzv;4f!!6GJ4#MMkCu!l}SCr zKXZ~1cPzBy-`P%&d7Zgn-8t`%BU=Sn>DC-xY+ZS7oaT=g*Z2AKx-;U~p8*}}yC3WP zyJr8o&fBLfKh^E%P=B8__1E>T@p0F__3iXdjaL3p;c3)p{o2cie!IWA%i~91j2_n= zwyfs|^Yix$N<_`YGxIB_PH{b3Qtq+z$DNur4J^cR=73rkcJw&2Y5q}%k_Pj$)WMbA zwChUB8I#{PJ<#fWY2qelX{V5%e?Ip|Nqy5_t~D)6m>gA7u5>J5oXr-ETS7sIpEx#KTpg`$`i^Im!_*`V$=TWkumwn@HGCzGDH7+nl7F*;d0k?OulohSQLk+ zSxu!}W?Oo7yS4Ie%71tW(BY-J{huh`fY35{(ji&X~Mfw8h@l8Cz* zvkYqNh49$IxF2q?xXrhMO)RdRLNXAv6 z=kXryjh3KU+Bb3U7C86aA!g?K;u$(qsdO2#zc7;uSa$0gRUEO*2)Q+uV`gIHukv)H z9bV{2vyyuTbID>-j#V)1Fz)`n!LU;o`y3gUKNk@6icg{Ru;OaQ-5J$&sM}tLbMG@R z4fvD_jR^8}u;a9Vto>~m{qAQ}^uZGl{_-$K_rmHOi_&ug4h@08j8|1qQ8&wGwNIA`J*o307 z)z6=)GvX5d#4ElVuXk_!L?)JDW|B+zzmGt>X28rOZ-Dg`XdeuinWQ2H=cna&jA zTwOsf3v>=DaWK{X?O-T*fzH;n7sm8E77te%f7r&2f}8s)Xp^U-LctDy?nMRTTR73S z1-c8|A2fZTE`^3xz zO+D*sJh!)bmAV6eqD?>Q{2J2Ob=AUlH2lIHvKe8%K0UohK=sTE_oO!+W(IAWQLE2| z*CusRXRf@wI+Q=($HvEK)}`LY^D3U1KO$(WM^n>wBkO6t8I1zEScZEx;I*c8}UuT{t5F0!JkVR`={z{@p+0m!AcgGLIgs;v6K8$q0o_q^>F-|TaU2SXPG@w3 zW%RhF)`1Ey>g1GIGsjy0@tiK1Jpj6b)yr6@_Sd$ANPCsYltp9vb zcb)r3ySZ)omt&-;id;L+D0V~7gW3kU)0Q_mx@kp9^U$UX=dPUo;-yDM_PY2bMTgJW z-XAjJ)o0^2!EHYtZqfOn>*ozYVIGurMdugkYO=zA#)agngFS0y*|d-q{XBPi$Ggp@ zXU1Qp=RT?t?_REGb#2tX6|;UBvb~v6_1^>ai-*piIAr$}+J8kCY0~k^+ldD!Z#XQ9 z=r=5A{Eoq1G%hj9gu)sGBk9v(rGgf(?FoD4j}a!+VTwOu@5$OJ^zv)EW3m!^c5&NX zPI{x;x>jZToyO}XJ3EGlg_nx*4J8}l@;kFJi#=28d{tLEdv2QA>?79pHs-J=A&Wy# zghg7KWFez-x6-^RC)GlR4Q$*&M>VB3gV}WnmgCiA9S0@<tGZW-xJ|MM^i+$b;dyT9xu#VRKf&rmP66CXxJ9 zjq+I?(8%hfTEbY1TSy)Hq&gxZN0911dW;YfRsDVxyR&K}$mAoU!5R@)dofrRX3O4# za#4(E?T){UW9!vGl873VhhybHyT^(Oj?|03aybOn%dwPKCC^LoC-Ag5!Fk#2G=};# z4w{B|O8pI|tOdIhJ@4&-Q~1?q-+KS$uV#?Q3-NgBtHQ8rO;4n zU7zx9nEA+^A-q>2E-OP*Ng#K$@im%rbDPXx}ANi%wP{Eiv$0l*oDH`}<}TABTuN0!U^vb-DLq1Cac3}Ptcg2U@0 zfhNUF!7wvugrVILXm-HH3Ye3DCMvTS%}l~ri6=rWOA0Tx^W!9$0?|yuyfegxA;2CB z4Z}(sMjB{llIYTQ@xa6r*DY<=&_FX2Ovqw?NuY@*Zdux{t$}7HsodT`G?SzP6HnZ& zv?0@5Gn$#CkN)jDU6ex9orTQqlH(p#qCZ=OTX+M%Q~0HUk-80N>M4<&16<;U#GHTy z_%Y?&W&Ey}>DdT+HV-|=<=l`WIvOV^i>;L}`}9XmbLL6uN821*8m!ETv}bFSQfYyZ;^x*RcH$!1Ja9yi z5vu6_ho9TA?K#QDR9Cw`3l<4C_g`BJ0F}i4(69B~!XO*)C04mPP z^i+vZqYtfeewCV^z&XUfEQ*iMvDY84&5?4Z`#@Geb=IEZ3r{+dYT!@@{d>C{UWyK< zI_9jGA3=j%wEtlD%K9!&IdUm2am%r%F%@&#$?rTxZ5buF

&!cLjSFdrK57vBU`2jSY;t?JdR_Q$(YVu|jUt6pdJ8j0KQl zi-PIK==E;@v z!yDnT?iXHZu%2hX{^1lJ_Vj|q+Vj_&or)Kgu^umzbwYdYG0eDD(KDj%^YXpr$YD5& zKIwj1XF{J=mN7pxbliz%9m{#Q?>k{`sS{6MbS}_*4}8m6whaESB1YC;DLM^m^TB*@* z<}eTRjnlz@y`GJ zxO1sQ>ue7G77e#4E6vv6Z)xOWbCFtTO~2^b&ZgXcq?@|)2~Yajk{15|`a(n8*1?Qp zK3M^_j050HtjK-KMmsx~_dv28jAR=AqE50kv{F__r$P9g2<4$+UYkJ`24 z7piBqbJ#cHlbWq(-d0QPPAkjfeHI5>kJrd5bX1*LPD^Fv)z3Owrlfr`)Y|Xm)u2J> z^Z9OzseyX15;;<`NBd**tRQ^@?EhJJ%+$ha<)X+u#mEkG!_riXtBV~jJOo{}>bNfa z3439k-9voq=bjesAAS`D)&$WTPf3*maHl0x{5$i7eXdA74g=MO>rxl{^BzlYqIl=$ zsMt<%$ont6{fFnfp+83-Ou@NlQm2n_=BfK$Q^lJ-ML9gw5)ff{AF0zZL!>@90)g|| zN}rpE@|xnEbOG(;9*B6l89KkPcdXopPP)J3(B2sEq|c$_jU|8Br$?Ra1ptPU>lqx#$&%J?N5rU*O;pR(sH0jFiWq0gXnI zMO_orSwh&L1wsu+Ys-Fh=5OeEKZI~Llo!5xD9|kCAbuAn=W0_jon1KQrC|o(&nRu; zzZ>0hH^dEE)|J_GE)~$B9RguWJ?Taz<@YjaC+dmhL@GZL*K(6dI~6Hrkc8bmh2%w% zNIMAugi%dIrAJ@gL4!AisK7fdd6$?lglsxyAt|&qI+$%K;Z$#o9X@M|hrhGjp-}AL zfIfX1Du4(_jS8^bhj1}g%{lLsWh%F!8wM15(XWPu^R2PvJoO|TX>T9K!Uu8xHdB#< zi~Y<`2jlQ@$TprvbJrPq@12HGGBVE+ug9RbK7BMz>C|6A&+RAlRfkOBHFxBp&PiwN z&|n4}${F%*hAxHASOz2PP2Ny(6_Hq6YZha#CGyN%6h6TZ`eY)Cam}H5s^&Ix5lNUU z9Zr`X_-^7MxXhE8s8REfu*_pmB6n6yQq_iHdo17DCCg%eXg-X>e3izTi;XNEb_c0w zp$kz|1=+WF3x#U>VH;1#S0OTO)PCq9OtD#{axa%)W8s^!(B&0=&he8FE$dB`$K(OA zSr((dnA}~yW83T?N@Q#-1+CR$#7+2+Zdv#YA1@8n*`s$|3Nb;QO{&=0Zp&iE6LyUa z7V^Fl*?3+Z<0|C*=dx*ubgj!S5rae-cY9fkkxFU`se_PI3e{+AFI=KVTvlLX6W`h$ zcjO2#6S~N}<4byEp{5w(BlccP5oTMeMsM0+qZ`lefvbyODnBs^(h|Ps9u6-eB*tAz zKL-6vp(7xpq(VqfUf9)pnLI@8WuhoT^Y3v8DiG60>64)+3Eg7cw2UXc(=WsX<&fMn ze&BJK#RMErs&UD3`F(V$za5KqWW1#rq+q^` zeR7t|FbCptF4xKh+Zj^itXn%XfF|XZP2nj^n*`grK**klOdqcle!6~oAkXTRRnyKF zs+h!U3{IgLw=|eiJ%y)Vh_qAm{8PzG1f;pSn=_T%sh6cpEsJZ zthg3p2|e4oX*Mq`VQUZJ&yMccI&Y{{dKekbqY>jhRV&UG-xLe(jo_K1oy*yB5L+k3 z**dAM6cTN0nZa!BJ2K1H&~_hwRwoU@u|EicD+D^CG`X^r&~#cJr7U#0Jc``!G`5AN zv#+hkMrF+${nAdstJuS~m?F*Mjs9xiuD;HDtt&FKqD&6S+Y^8HDpRFErnzizl}n|J zy_DtRUp&IK=BKP4<^HZe;9f8Mg@Dz4>JK;#;Qn^mE%aAlUw#QfM5qQWndchggt;a) z;EajP3jDbxeSb>k*goP*4CYrG>uG4gGcW7Gc2`@Vbb?49y$eVUg?ax8ubjdlSxQ_v zlhLjvPg>L@*yz)ecIUzN*+F8U-5Al5yXfJ;cF`>vrG^@Nwd5)GPQi9Vm0&ly7?J># z0J;P~iJfZ!;P4JS!CIw^`N5=Pk3SXIWOodC1)+d{ySgT2ko#p zgREBvqhyyL%A~m}Ic5Oz5$?ROH);ooeduJ$@vVoaS~z{GuVngCVp^Xt@$HAF`pex~ z&`WgA-Q`|%)FCA@Kk3sbNM_v3E)fk&0RzEoqiHqW04zA~kQ3*Qtv*2~yk$&{Zvqz%4QBoZ4FQTq#Do!wdp zlr_9dydoa018wNbwEGMKJrNfGls%j!KgjMb1d*-G=euMF(e2?loZHEhsoYLoWlbeCgg}pb zdjQ>tZVHTp+R0zv*y8uhXh$c`g9dcM?^6%=uv@2IvP%PqL~`S?cJe22LH(Pn4)POr zpr5eTUY)&5d-)CcD8a5~G1M=H77|3MTk$*Q7w0Cr^39=RJ&oh#o4N7At@1qjd?c!f zsKaf-d+2AoTY>SYdgUt!lm8BR)Jvv;hU;kM*wE*0D`M~Xgza-#5)&rBL9e))w#fE?$OFH6B*Ge4$3Sl*W3iEk z)rYiOy+h;?rb`x0hT$yn>Pevpv51eN_aFzqKA1krO>$@uJ_>`=&{qdy=X2tqaq=|^ z){K`dlF$s(B_{=8M>-Ozn5Ry7_1i` zNe!+`jC|6ns(+iuNXsj}7-PQ}9=&`~h#`i4v&Px#HG1P3Y=~zs4M~im;Y^n=nh|1Q z=j0pgG$b6-R1zNmnWidA;d?i(z$lertcP6`Bzn?1$I_E#jEm**o?C-?&Y;CX)Y#cA z$1XH^WD|gXAje~$HxR}Pv=MBFv_`Uf28`2)(m*`y z0dr8PBXH{qckZ0vA~XG3^pKf;aTs0tNM`z#W})vrZBXdDPu1)Z218F#G!!X7qNj>L zU7XlzCr9kp%7UTB98AtZ#}e5Pg?N<@c6r0hHB|I7=Ey1?gBm05<6?MHtMb)-4L{9$ zweq>eKc8ONR~GL}#cQ_ur)MjB+tL%UwPT1ecbiiFQJ-@Jk7?L{h%FZ(at~}OvyJcE zod@6A>uMQ{c)aM1l)+!w8xbT|4~wH7%2n&ZTG^jfeQAFKX(u**pEL+D{TH7mv5^{)9TXgiuZkf5ja@ zp`a6?C{rw>z$}fa;Et?;Q4hxgm(ZJ5nj!JSA%4>n5YA-RY7*xCEmOb zvc-~K!x(#&Cde#nN((sZlkwKM2>$-soRa4BL3nReON5(R$=82H=;?7Q#vZlj@!ev? zQa`6m=KPLG3_|lM7DR}5L;QJuCsaA=EHlnR%V4Iz-bF-#XVMlbFfh`{wA`C`g+jEy9V)Uu=#$fx%}th!;`3-5bV<(-MUup$o8?IHA{ z=8UfpSwvxYW86`s-MJ2B>{XsH4%d|#cGYA&H%#7z^t9zBvo;*j`jK3$bqP1p)fXl? z4WVc)c9bahmyw6KW>R)9lkv=G`6mBoxHDIg6*hmY%(4tcCZF-?Se|4=?Fr;t1dl^h z_EmYnZag*38&`G;r{8ZpLc|kzS{QQbkfJ5@=+j7$`(}bDI}rOS&W`S3?*z)h(*`GC z5<1^nqFn;xaU@~A3Zgz31?`6DTdoImX} zwsZNOJylTD8v_eY+_hVlMXL#n=3Dnxv2gRY*){n^$4`Q^4G?#Vfd`o`sGY?24cbY2 z0(79U0-myJo@T<(K~tXnF%CKaI9k1ex|hcJi+SdEuhUS(CT_r}fbobLZ^*=+*W{k! z%#4qfUVe$FCq@Gfjn#ldD@ZX?8oxviZ9th#irtnaYFGo(KDpC*^}ef+@}*=_BL-zL zVt_d>Vh|xxNlhVPF;^jtR#H5qnNnIOC0?^<7LB>^9zCtwwR48R_$6RJt02i&hbcI<--x>jo-ikU99WDhm>pUWlWU0MZ9~)R4=1H!tsY+ z6N@XJL*+7zqT!$(SX%L7Hm$Vyw5f;jUE~yv$^j=hV|59V^$e#Y=1%41*3zS`o7j{9d@+)&I%P5jTV@;6|_;0cpzkGAn7Y@O6< zvvY`Lqj*}c?hSZ!dFzjSaQE(mY;p5Y_;V0Xn(0{9mV*RXx+mE3eheb?;4yDFKCtB= zrIIyd|Yknzu3Aw8isTFaQ~nLTPo6WTZeOCWIg$W8`<4$ z`6h7?AO6dYY?s8>;EADcjQ-0EMLK&6Ao2(dK?;~CJ}E7I8rkZ@ET*%(DSn*(woZGj@4 zZ2=)i3j1wWq_d+SbXlNfDAL(=&@gl$99g!|1nTSwa3qP$WcAF-K4CN_>D=W`wwLwi zoNO;MwyfAna!_)G)uA~i>#m~gRQtbEdj6K}TvqHnQp=fJz4)aAp*eZZFYN=ucec@N zi#}l0p$UWUMOHex;Y;J?jbTN>_dE6}Hz%x{dFGkZ<9g4VA2l>=!?&3WUEV*=2S(?3 zdDZ*X@_ob)Yxv2X4bt-U8@+D(e(?Rnk6#JrOQUn59JZxe+>Q+GzR7wfI;W4pp~jt* zRb6L0wzt-5k#o@C@NhS;*{9+UZ=-46Hw8IcvC}J5;4#4~%JMB8u)_3)Hm^rokGIM> z;#HjT=DoVNmvzs;oc_-zaTN_6=;a;}85t!yoYdp2NIlNRHF@;toEDk`zV2r{VC4pj z{xhB-dpAsZa>u;wM!tFshUD9NB3HYT=;=`^&SK;UZ}pc2-a~t0y6^4)Oq>W7tNa8S z#_@pBtwOZKs-hqptrqtl@TgoZ?mJ+CRJCd-z>XRxSVOKpuq8K4*l5v)028FT9JpSp zp8&s*Y60*EzO{Lxn!V!6lTUbtXw|BtdL42E5-s-KfupL!8(g(G&;(B9sgTXPfyXfg zZ2BCFQ19?qd>+qjf#tf>YdMvtyb6aJwA3rEm`$!x+IbZtU&&dZ88;!sj|E%}k5-GI zRVP_Vb~Q?$h)E}R5ylni5m=Xw{3Eg2>uZCdtA(;v5fbBCJLxw)QVHQmt7v|=z3|(} z87op*7Hw4?_j!nt`NG81l=b(@t~T)NKlq{4oShCe+8SH?I`>JVIl^*fR^wYa zpB1mn%CR!5m-We-oV4QA23Hk&d3i+EuP>{hQ!ArWE7Q`8XRSvo;|~u9EA2h%YBBqv z^*>dH$85+6*7D(=82O%M1%Bp_;ShM2=kY;XC|-32?a&tiz%QRb36?{@aA`>l;-l>A8pL3Z;(Z!48O`@hOTm$fzvR9txE@q zvI2fva(w>B&kp=+YM<>>`>egT=iDpz(%<)x()oR_YI(-eY)tEEeC^(xP=|5V_a3U) z&2p2cdUT({v)7!mSjT*v6K*JWBR|=fGoob30uE$F&+rD%ml5@+U-qRcRD7hnvkw;w z92ghsyfFDXmIyk8nEhrrmDTvxwU~|uM6@(INJYY~~&mg48VpKq|yIpGy$+2$=-7@N#Oi2*wvFk&F0=OPU6 z>CIRj9~sp}h?*s00Hx4JCZkhuyk;d#nMR=;QGy_T(3d7H2CnR9JVP9Tvek32{UsJA z73(n2N7ROE8!Oiw5+9+B!1fz_$l9;vgyu71Y0?nwQlMD*@m&4M7W-#FXNydOHdnMD z{){mKl(w{Q3GQF~!U$|6V08R|bD(iKre=upogCWRh`hUC=M3<<;+?<4MuFU!?_2+M zd7gPq_u!{b+{qTwi}hZOPkhhG0z8!f$CBvFYmS>t_-#EK!>R#aIJ1@>ax zpo$d}M2N7ZN&2jd@vrz0SWKFq9f6GCV>unL#N(emv%1*bv?*;>Ot0og(sO#*;%cOd z1tR0^>%U^lL2Px}{wDXh(kyBdM{FFXJTPCXreN4Fu`-PqXA|q#m?NRI z2o|Q5ri{n&)V|A*c=b)P$#9w{%sp0`K4;ZCISX*T6dw4`_?%+Z-1*X!en+Mh_3`3R zi^4FEC&92{?I5a55sn-45Pko78dVzQ5f5{`4A=g2V`^)eiqdjK-FfEta`v{EkbeU^ z`llA#-1I|^Eh__C(IO6Wf2sBDZ?pB?T5Con`x}LhE!=M$=S#}m%5(_MTE3{-sxAG* zA}mvA79Y$}{c@dveLqAsF_qL}rX%#)im#>Cu07iWD3UR#WP z!mzj{YG3I+U^A0p65+>5?-}V6+8$V}Tpm#Gs#<8m2qWbbBGV{hPUV}l4zT}Ix#8_9 zNTZl>&1B9)@byFux%h$)d^E9m{VTO7pNFS>2KPC$7E=2{<%H6-G^F874ujbamwTjb z7-2G}hcotLJ$Vu-vB(C@j6_9^NIB&+S_qEyF);$QtIlr=Gl zu}g*^jS&0Ui?Wo#4Up#8*3q{NF1Ho7Z(|@5j<JgyV_J1 zw7i9vyP+giJ)Ycq1`c<6y~+Gla||yaHwk?U%I7F(g_)hLdEBTtTGIYxYt#qBwAEVO z1GPtOvHS(*8kR#_BbEc{-40(+dtT_!IM5u@0j(I;x1WwrwZmfU9nnGQB9Gb?pPJeg zcO`duLYVtkb*R+r<|WlosIPn+V;kpPJ`(jj`zmB>qFU5x<3xy z5Lt%(2FNvLQZytEAicS%KhkQpPmy0i;Q-WG`*aG*s7;kc(&$TifD{?W={%(Y-d$}vI%PAci=>HR zq3JSPhEhA{%|Le6>+%T_Rnm-$UYCWs3Xm;xZzfLdVosffiNmwxIsu2lXJ@J2(6`vgne05j z38vt-Pn5filF|f7uPbS-l(s_pFj4lDz5;)js6HVN8%2q-zvY~S#q5*R3t`x3k|d9d z$titsn!_MXNTPksOTq6XahGQIEE@1|5}m#FE%Gnqb8s|Rk)W3NCS z2Aq&g%NZD!^5nia?pjFi$UO~zBZ*JG5+$$l58BqW*%&zE=XPwgnCk#r&gSvmF{KpP zSEzDAtu__goNvX)X#0T~Jm6i7klX}5lxn#-VhCl=&f+)J$98X?@jeo8rT~-0OBQW2 za5t%jGu#k#3&Ap%SU3A$AluKCw?}iGi&YzV?0Xw6_KkpDi}k+P7$I~u+JgBz1H(eJ z^^o6vE}Kta`}$m-G;FekSFCai>F=VZS(SO>hgS3;Eg51eiP~=9VV=4R z2TvdNrDnqB9eTxVKOghW=5v?a9wg+i|8{@55bpT0BrGYRRPLd+W>y*Hn} z7{e(keFN#%d|9|v0nXLm5aoA zVlYawu)0Qcx zymt64TiiuHB>YzO#Dn+&qKAt_gCmM`b{d4N2WXl2|9T>kNG&v(H!d`tUBmxnfKi^X6Z^J;hMg>bv>YSfAqfv2*qFUe;rWZcTJ7i6Uq8 z)RFie9`-!(y*v5L8J$J6AXbEtzaB6=NUs3T#2NR*g7mbLw*rlWE22aDUZ6e-7x}sm zLIssppMqC3yD}0^19;L8@Pyz#vK4`heHF;#tXM_l53sAM2)jirsM|RRz8hwB;*DCD zDx&ag!YDsvB7Y56`fGT~mv};>izoy-65)uO*j~)Hu9)YiXW+OW!*QNmjYofu&rGX^ zoY0!80X+ED!y%n+V6WD4b`ElKMazE~VK@dK1!WDec3|)cj9EOi(_T zO1|3Z0i?$~Vck57=G9(2L&;?}ShOy{e!OTvCyO=>m?G7WfQO`d1z0FmCv<1LdGvB1|l@GV~~jp8v?r%3~;nae+TIo`r|brt23E zEyqJ^;mA_ob%3(sVJegTiCWdR{@1Jv8;t(A2N@mPPhl zYUY}Z_q?gSmm{!&l|*klwPr4Q+rZtGDfA&hPEsi0|_B= z^tez|v>z0L2B#X$O4FCXvW>0I*v~a(IH<5zuE{(cZGTE#e!s&YU!L{xN|SaU4YH9p zZ;!^>{|mI1GtlxrYD`7W^v}^m9z%;cKbjZ*j1w+gg@KQ!(Gal)vltnP88z6XJ#8(T zp0JZqeyjh65M4T2vpxt`iPxzx?iv_#BO+E}CQ_zYY1soYtIM6#NuqPQsWV#QSedL@ z7`@+AE~*;_J^JC9!Jl|q#6{nPi>WY}W~uo{i38Qa#l#OqcyKiDv}ra5ZbZOw+Bhl} z_cxR<6N|2D$Fbd!56QPWc=zW*lDtQ zp(bK^QIqK%#$J=BV~#Vk+?Lts2QfnIy48S$N&kgoOld-pWBVf2kBGzmSNt3t7oqlI|}3? zf@1t)3J*n&0WJGt{8GIl-fBGk;>Oo6Ze+f&VRs&%Kt<3lzMvYfsEsWP-Ag`CtTJP~ zrd|*mb~lUPoAcs(^QSy7lXiQGOy|YZ-Q%^=&VV@GAotckU2-NO!pnQZoke~Ff9A2=%zumU3gwrY=DHz+m+GU{*J!mt??d$@B~TL!Icol#`#@SV+d)Jh`*!q)ub zQt)*8*<1(B)*8XK=HA+xe|)=T?yI&u$%uz}@$b(!DckXz3NJ4ikcsvWu^Ifms7R-P zk4{^+@&DmOBH$x5tmk9B(JEK(|57Kc8}=v#CoI?Tx0Q}%`hR7O-jci1=+N$FR#NT9 zA1qU~%*x7IW((iW?Nzc`&yxeWAH3jq-A)h@miqNdazQ-VB;= ztMWqeT6{IQBca?seiqynF?}~Cf~P#46Jm-G(~z_8C0NWWfIA|1Qmv&Hp=R<_sP+$l zPa|Zjr&X#e8t3Hu(Axm})s;G5GV1_pNu51`D#XL~hG>WI+DU#6yP>*^P|U0zyaWtK z9&!#eRL7KvD;5gP*QiIKc@w@8&J7i=`1V>0ES1RofMFA-$4{OxV92ELVFOm@b!d-j zGM<{X+~0CX+cvj@yR8lMGHz58Iv(2bb8jyd6FS7Av&Ieov56htZ<ce$u2@YT?lo4<|-7g00uj=C%raX`_R5g#YL#{KE(A z`7W)J{e~Nr`g~L;jZc4+yT+lW^VK-!?e$pp^rPj(k3B!+UM`vVQD;G_m-Xmxxra+~ zVd9!^^7f2s@O*Y*C2Dlq1c(9cqT0Kg8GkLq3!mgx*Ct??1VIE>gpa8tcSDSjj7LJE z$UhVn%FTn&D%E!5@qeIoiE~5C?M^S2nUCJ`P7kr#*16#W5w`D*T$2`PrDpl?^xx2X zPO9vs@r0&+A(}5n1*-FN1~)lot+m5;9FP5dvPGK(L}eC(8&dy(2c>!$m?PgnONTN< z5i0qr5N|Lx!g+=fN25eU6rd0vG63>uDQ6~O#9%(QvG6NCgm0_0RCZIf2N2=)Kfx#a z`yq9mH%|?ebvd*S*zPA^ng*OJUrJkjQ!`-`O_84~RvuTtoMZe?-zZKYJ11T)lrKnEJYw7xBL# zzwk$E+IwH?Hm!nUtGz4*d-rF?QmtQ>$vfcsQj6BfW{c)Jbz3F-hSTaaxc>EVe#Iv* z-9hhNdE9pkhNEKAGMCAi$92xBi^UpMId5i(Ma%Rl@Uq?w%&TNq62MG8GuYETGBoss z$!soU)U5p6o^5{o!EgJ5j1_bq8gT&AT_PuIW&|=b%F0qb=1bVPUXBLr%(Yag$Aozy=RV%%+kPExY3WS*__bQXy&opm;Zze zWaC_{m=}FsSP7Ao!Z+8bYW~-(#K2m4e@%y@w*UWiBe60pucP)-BY^=<8{HmCW*GYF z(1FwX^!b(7ub&rZ?=z-B?}q2g^RQvdrx>slrR+@vOIHBS+li&RNe>1 z;`D~iUi-bQO&aAjFqGJgt*0k?dDRbXP`{+}-JVRw)mRM6%k+jQ6Xs>5J(y+Ug^ly7 zYTvkvLHcBPG-a;A!KniW$B`G^#MA|ss~CacaBxDA`%oV-`NEMiG*d;y_PHSiUWBNb zXKsjGh{ZlU^N%Hg=A+>Km1Oc}%IA1<5&G?)`SY}&Yxug>bUCA*TtVca`E=e zQ7HS@4}%u(*IBhC)>j{nF7pE9DBP>dofehH7)H-dCi5tS4k{qQfR^4nh^*i?=t+h* zq(KyYFwQy>=>n@7)0!|c(YRR?BnXJ1^IpKQr1G(| zQ5c+-ciju|Q@Lvv@IF5`PNY+axhlFCD-YrN9PC?oa;0X*5KW&B%AXvH4XhjT3U;PS zY)i1coyO(0Pk~?aut7*ZxX&|M~(M!DX1i#7j3HG(ornW)JVv#_p#b9FqPo3arG0fnGh)?Bb@X2L21o5~Y2rI`H zYg$$NF5G4+2jriyjVOcD|;h_w~p@_t^h;UF(^#QGt$HsBGtmI(0)o?Pxr3r+X@n#VeiK{fR95hi29 z)}z=&cf5lz?>QaThYW;M7UU0-qjWvEvrD3cyS}$`vTdvYa z*62HVF$RZ-Dm#;YT0Nr&Z+^Ac6n=c-b&EChUS7X4#eJx&53F9+^dIw@+L`NyMnr^0 za(`DpuZs1;8`KXg=|jE6CSm~dr?*9+4$2#g`86*{Ga^~1alfPp|y!<9hM+@S)`ofq_i#A-p7l|MfjBw z6AVmf8XS0${RT8*qQ5p2%|Vwa*&P$}0kv*0_Y-73c#^1TG6&o5%6xD-{x7iqu6(P= z7Z-I|s8D=8$_J<0Jg>2sc$(a|89shsGn2V2x_iGimA82f8i&0+pdVhNx1PlIWxiFU zix*xF(KK`fqnpz$(|UkM^CHS57gu!3%T@Irmhka z@X~T|+H3oXX2;bs6rYPFRn4*eF*6l)a4{(XS@AghB0QP}gVnmN^N<(k9EU>=m1S(= z(9PGr8Y-fC&3~^&4Xin17+U8M@=-|Yr6_mkf#xuZt-{NtZewH#gleo8#DX>bU6e9gm)HlDzQ|$;8>tO-I&3>0*ng)&1bv!N`L$_G-}2PIu9H>8peFY9sqUpb9KH{mqA_kTs9f>bFVdw4PC?2gW&jyoy-d%tXv~+!(J&Jf^kuwlr(W>IM)h?vjkDc4nUmN9S{!QseBvCa%>u9B8Jjv<%xSttHy)pb1W ziw{CHNDt(m_GQ=Owy&4*19MYsbXZS^upbScS^UB}Z0wLPm_GwwS-;voz@mYS8|3Nv zZ-A@5K^>24AGt}Nbn6E=2jq;ofZuJ*kK?Y4Tqd6Rs<(sZj#p+1@0s& zhl+gHvDkP`y|5CzQ@y~)*BL-R9>#PmZ{i6a%RS|+3{m%~LVl#-D)(~FAB7nle|GsNTLU6u9%&QXGROX! z-(h1;-cHmgKiSE6ky(LO5C_LgX$mS`tSv zGC+~erj=+jOSF^{ZDonJy+qq-b&bxSWp7w!O=+9|o}s+u|N3O!zJ2~>zP({Yd25{x z`AZBD_weQe^uZ4m>C6$AA~k14I@?~N?X*7Vm_NZ_=)(tf&d-0zm&NgA)w3?@l3&}v zgL}QA9J6EDzD$%kf znec7pSqH@CJNX$V@I7hW+^nC+GJGcxjh0 z8vEL2w`dg3`SLGLt6MiY$HP|VuW`8PvM}MkXMZn#Zgu`>hd!U0iZ+klQplV0{Hk6* zOut$=E7|qEN}midoxeWw(ttzb7Mz~ha3@dZ*!Pt+>ppS+^>5p)MLhqY(IKeO{^5Hr zX4H~{{w7({r~UeT4B*{Iv}cjUT5*%usLPYyPY$x)-IDKP)N*m*{yf0R+0R<-?fgK` z;-KP~L-~E5&tlH*n_96#eU%v?Vv3cihkCv$_fMLRdS#9Mf{bO$@c66_!8}xqu)U8E z;d@T9j-|;Cm0X-rdZWDTBBY(nH<|k*(P?J|p0*(=(A?A=Yub3x_}gk!@i9NG2p7?t z>HuM_4ri0Ok`H4WD$DMisPkjq;)~Kc=+5gcxV`G7+mWJ*{i$qPs=Kf%wIX%uI>Zsk6uh41yArIt^?sWj>LKGk>o3|I@X6Z?_>TMepF0d6Y~Ek+#m_&)Td+wk^_MtP_FW{?GZc$nTR} zRpj@X6RJC+w>s62s+668X{-2Rjo+Uzf>K%5_@%g87))JzS>snu;hYE0Y9|j9Nu9KO z+!1VFbEim}F5)^hJuuwhA!lJyRPS2|OTC`g@HK0&kkc#50$A}E!%Z58uz<&kGzqHV zdk+@ViKkXT5Grfv3{9(qYL1nux&YQkqny!ol|}ldNDQ_A40y4!?AU2HuyI$Wh6)pA zc7Un%M_fmA{(+c!ip0>>!ix3y$GlKd=Sy`N_FeaU--A+3hlQ?CQ`G0!7-sETbf7R=KF}u4|>Ja@K3}xHCNP?~PdhvL>TkDz%j4m%V zuMJDbyxML5Eq`F@uMPRK3I*v7$FE-duqb_grZlgzUauAPdP`PFup+Ir{NImk)DMl2 z0~@qDf-Bk9H(}4B__=%?&6I{^cbd_OS%B7D*Z*`sb(c=sD);A3+G>oMe~PrzfC7_9 z48JtTw|(ganVtj`9R9C#(kfp=Y|O=AJ*1BgnHpU^?dRmx;fGdc$TgsA|K+-gi75XD zR_0I5Sg%^GV37V&+fu)DY)kYzqdJCfS`*7}L==p6=sIBRrE|_-4B=bTK2U2jJ69Jz#HkpqIMMMH(3Y+ZedYfjyaCUV2_>?J+R3AHH0eJC82YSamGx@z`@% zu;KXHa}`XmVtsi+0V3EbH2AER%y~ zRkHtVoPXTP(Ar$@TF}m6mjA9N*W9mlE{^nx%zf*lt_9snQuUWPBcM2=TS1n}3q+Bc zMjf%7%?q>SE3*V7nS>yb0xKr$Uf#@@QXIhRhGNxq(8=BDq>5D|MtBn2V_l`G#F`x@ z^DbD%*={mXpN#1>baStG$Pi!p4_1@8rWazWUUHN>ORT(b8A2DVO#^>U{|>ih8G5B- zP}?XHx&A3)xtufTd%oi@KP0o@6zX>ez(8Xqm&Vv5tGhEQ`5;IaR1@#TpEf*uNe3T8 z7C$%W;}G+YwIS7!gNMF#kgi`xxpgtv7*IzJh0XxKS^UCIZ0wWoFrKd?hamHzJ(8Ni zg~vW>8lnXu6(y8!ZGzEo3f^^*@=(a*r7WgU@{6+$S2gd1xGz*Xi|0e1k4Rn!rIl$Y zq-SgvR@%wgJ^B>5y|^?DR$DY8kS=Vl;cdBk*F8B1*;vhCoKT~xFF&!Ne0f7n8iM@S zva>(wU(ob_!T6)isnl_Ye?D-@)8VfPk^lMS#I5b(3NE~Sigy@($fYpK((29Jd4~;7 zzwt?P3O=`Ay|(xMBbD~iTqj<(<&_}ocXJD#FLpp-!4DS~)GJ%dhpZXz56(MnJ#vaSKX|zGpH%bLMHfQ=nV`tRH%;JFwiU$ej{N za)x8bD!zc^+oQnPGN@F1tuNwj=K{F@V|;>3N`Xmh zfc!udnNLGgt->p?ERI@Ac1FKZ$Dd96M{Jj&N7Rp|-e--K*SgKa!b!h9c@h+`Z zYdFEr?mO0zyUc!1du|18x*=6GBu&-!0V^%xXE4s;h|_(Ru9y~lTX z>YLN3=0P+`Kj17D;x!w87k_rGtLFv8W1P!5+EnWZCfJ%)dH-KF*oM1keS1Ses?STi z_`;d8%?8K*o>9qu$-J%atbBJhUvjYEw!^#K(;NLh@#+UWKO$O{=pDOg@%TgFiAqVkXd*Dbm>%Pvc36bTkq5IP9Z4lB~xHy|{D(7qGI4V7Q3m{fMuN~LLK~|HnH?Z+(iSSx*(MMM$gtlwMLIhI zLi3pjF?V%j;yXCo%IKyp<{`TY_LL|O$LS1j?)zBY%NH5h>mQdBAx99;pvC= zu_B#)0g52)j3O*#022LiM=X&lNoQhcv>s_?1R>8Gx4$|tlEm7IbQTS&Pg*NQI_n3D zB5jZ&oxK5SKw7dQoe9URA!(Zw>FjTyMx>omq_b};;qx1lcpai3o&5l6LfS8ibXE>e zWmD2z73s_ZYDQX!BAqn>MU&QC5q{gC=A`veq_fvSErgcH5*6xf6{sccxK@$QJ_5BO zZLcDoWq?|fc0!RZ#*@lbvX-|o8{kS^(zS@)Msz}EeG!mdm z3sR)BhM?|dp|Tnq$N5k)R_;c7m0p~ zbXEt{o3sc;I%^5)Lt0x!I_nMUOIm+Lu-~A5q)kwS-#cgkX>%lr1wB>)2a>o}kVt-m)<}`g27!i>HdGNTE4C9|n1hQQ;Q1e{ z=ZjdAXnXz}UNJDM%l(2&u9|QuKH%9QulX70GoF<_)7|R-wBTTIPFyGt=pv>qf~ zlyi!7b{iyJl>3Tw_6!8K0q?b&D+!G=2rV@<-?{jFfjSF=h!zuKJw@-ex=a%DZ;P+6wsf~;OQ2Hn}72!bw zNgt)BA{bDR@KN9ZE7I9~kaSVrRHUPH~yqEuG|7X_qT6h&}RK*~i?q_asN;iACVnyOG|OF+^`Nl}C= z0ZAX_eMLI^9MqUj@U$YG<$#)ymaj->zk`~R_Dqq^+!hwQD4v4w`@`+835=#4Llwba z1vMwFqaygLAo5Yz2t{bcK`m*&L`86@L9Iwzqey4(fm)OHp(34qx)7h=hQyN)1?lV# zs4Z#VE7FhAProE0FYC+9|^K4jM-L4N;`C*FeKbo1qBqC1?a`D+pHE1+xzbitkxD*3uqy;I$vj7@PT2njoM}S}#R9O8_OlLgEyl zAlLxVtE8nUf(-zTC+&SjI!gylAnh|nI=cdjC+(UdofUx+Nc%|<7JplYDeI)UBr1e8 z15F~ax*}LJ&}7nDDMB|9G=;RmiqK00y++zJMLJswno3%#BAvYtnnv1gMTt5)51dZo zWkouB2%16K4~lf=wH%XxNvottXW^ikq(v&ySx3+tq;*xKv$3FAq>Wdkvw5IIVgDT2 zB7q=8PC!YdZC9kTPe93}9aV&r2F)hzvLc<`1Hs?G@g6F|ihC)jvr3w-2+s@%%^~&+ zO2MZJ#6trStqsJciqMe)!Ei(Cs|W@J1hWWjq9UCw0>L^#TdGKB+d%m7L))Q9XNN)f zxj{RwNKa(n0`WLQysk*cVyVdABh92pXO%(tF0fyKBAvAX;ZmV>P^7as5Do-wxFVfR z2jM?xZzzII0j&^s-H~k|6nEic&|9>lRT0)w1g#`3Q<2W{K&wc*qX;Lx0?V6`W>N%S z55!6HRiv}Jpf#jLiO(0Pv(6CLk{GK9&IV{5X%iIbYz1gNX{#0K>;upS($W;^>=bAt zX2s66!b1>w-xE^571814ESaQ;iN(Dk>;%k zCk@&~T0KShd4k?2tt%)|AiPoF2PBSB1h*RWA!)M}>1+e&Bht1gLKFwIo3vAk&?3|D%9C`pigMWn~HSy6X+0WzbVq06CU%!q?K2svk=e`(rPHu zS!>Wy(%LIR2L^PEv{8ca`@`*@1w2loC{7>FJE{mL4f>R{n~Ja= zDd=ycJyxWnwg+mdkmjxk=9}a5PmmZ1Q4qRapp&G?qp=Br3&jX__N7Oe=T8g!Pl zzKYQ3fHFxNuLwUy&^gjp5#joAhQRYA9#EvSv!Dy4T~LG`F6bg@qMCvr1nOY5E|KP{ z2*G;LWzxbGp*IEkhP0lF5R_Ys-~Sa7$3YaNvt-b>q|H-=h%e|WX&V(G;tTqYw2u|R zet@o#c197b9_Tu0d5Yjkfo_nN_`5E~tPs(F6$6SpeuZX;l=V zRRrB3t%D+ri-7KuHdYZjuAszwB)$n01Q!W(pS0bI5Z45KPuf{UI=cmWKw5z!oFM2S zX`($6q%(I=A!!vA!K(%pkrtY$5N->1+V#2h!pcp@9MYNZRX);8ufvB5j2t zo$UbqLfS4xIy(vam9#Gv!T-wz{zl?$MLK&5dQ6%Tt*9V0FreQ_^Hzj$4A2wO>MFvM z4*G+%o{Hc#fu52!Q4xNMplA5~p#@we5TvtxAOrxR9aN;V3m_2?bY$Ns(%Fw71O%b| zstC6ljk_Ib6&2|$5`e1UjcA(}~?rbtF(|BFMei5Q>!Z;b8Y z=KlQ!iTnTGehSVmuFV%GiC;x?YsQh=gJZDnZa}#^7Gp01g_(Jh`DnR!M?-m@yZPZ; zUS6SL;m>P2YAhbfn=4>-P&G@8fNy{&cMZp!#*c^I@zZ^QQD{ecaXAA1d3(W#3TAVc zusea~@N9Hrvw4#DQD4Vs?0Xg4-Z_lBZfWh_VkiXLhQN8z8+Vb|bo7p+^+GKeo~|}13D|>!W@~VNM}_*ii2(2_o#hm*RieKIYPzBm? zk|Ok|K<=b1RRo6!Jfd}zmBicnnxREe~BMQA%fl}US35u9U?c>m-U_NoS|5;#IWGX#B5|=I zRQdqbCT*u8q$Pmrke04UXO}>sq>1jcAOyQXVWd4$gi*!R;+V6eBHYzPU!)hBJCB0QL&DAL|m1fK@ffV3luaMGZL(1ts*Zx!MUVYM33 zj*g0S)&SI)v?hx19fO*X7O&`^w@=nBr|wMds0pJOC&%!xxQ!UYBjaiv;CA;$@d9$8 z-1S1ZXT`csrY=a@O6aro@soBS#8r2otNb7&InMAV=0i5gsj&GiehQA+!Nf5gdk~H7b`+S11OO8dq)w1b07<8#}#2r z4HQJ$B}K@f0ZGGJs0dNU5haFImx$XR4w8m7QV}8oAZb|JD?&FFBn|6$MHq(#NyEBX z5ljk58rCC<(AI&ZVZ8`ahV?E`8rBDjU@Ary8&(HJI`aid!y2dvBg!CQP90feMQF7_ zVWjm{1Um?lHgusPG%txjX+*aw!dZjr(VLGbLXHne8rJKIFu(`%A`PpvBAqn?NyFMq z(f^OlyE^~w(^{IaRJ~qe^ZfVUeOg>4Je2R5lIZ0X(IEVJa=SEnK0RS*$>h1F;9{=f z++PtFfIow{VPktwU7V5^jC&07C1LtpJL6f8!S=@Pv=_7EuHBD#a+lWaOy9_mo{&gA_ONu(&n8}gqR>m+Po)<5Qo4sDQ%v+BE%s;(&p7t zq_cJ)W%D`_3Y#|=RDn)rm?HF;LDJ^Eu1IIgLDJ^Er3hVrkhFQb6=6sRByHX`MR3(X z(&jy@Q)2U~<5weXUTsB4O9Dxo*H#fCB_L_@1}nk{DM&h#vlO9s43ai)l_Ct`f~3v+ zP!Vii2GF0b_=F;aUqRC5Wh>H|j-Rl!c}|KD9|lRAS5J}7hJ&Qd8?6XKHJ~c=8H*I* z*A5C+&ZI=#{v)6e+A&=by6+%q^S)7pp&F31c@Gs~mD%uOn`f^G$+{qE^DK(co`R&! z>j6?WZz@pQyw?>W#16t!g$MH^MF{19@by7Es|cPg2)7AZfg+t5Vcc+L(9DW-RuP09 zpjB3cJD3Q>e-P^_(ph^DOb4{iiV#5sNjo@3kgCNH~*Y9mSHmggUE%PnFJO9Yq)q0!e3bxT1e8KX>Fzxr zO_)ZwdLlP0>P5dY+4Wx0bH8${_OX{&12yB4rl*%>6VPja=!{2#7qxEI%y5x!Ex_~} z7pz!dhIjZ&8Jchzpt00%k>4C2`*`NItsm9uIq=IzXg69fY#KweAqxzqeeuCaRfDO;t7(O`q54+aax&>yo@CZ zi4zh#8lxFIMy-(A*7hzcP1A}R>F>U`yP-4uxBFM8Z-$w3&%1kPm-Fs9zjNL_=ai+e z7sMG;Qn)4zOu$O<#l_z^tL|)QJV~>y%&DJu@!#u?t-h9~WKz?k&#kq{cdabUpGUpl z_%WlBt#KR-|H{;F(ky|T6Ukv)?wrkDe7Yw2XI%RqX(E%Qi6?bEi#nLn@L^V^m2R}V1y}Xf; z%zj_I49f-huf#gDS?q+wIe&Dk)Mu27nh&{V{_NQfMwSYqVN=IG4>6dA8mn$Zf2NjlG>|>#+$@T&504hPVQcqFbRX#8bf|RZu~mYwP~OwZSU?HM zSSW#xFJ$*-lqd&4flJhSdab8K6M9!HKJne_J;mAQKFrT>4y4x4up53CW7`mFH3ZD5nJag4D*wGRy$3EN!+dZHdQQ9 zk>GM5A>{2>M$e{s1uRvNsG@*n=)!?OVyLZvnImElpXN{(*D|G3VAx9RQl40X?h9x6 z3}DX*Kt6u0pp;uHW{a(GQoH9-av?L*uLh2rc^e>c7|cJTMFyB!sH|wRFWzF7vOpGO zc++01FhFVZVjSv6en-RA-Dc?`xZ}Q$gah*#sjde6T#zN1-r@$U zFlfqD3l4N=lI?y35|8^9YK2`i@v+gYbKu(oNN|z^y4zIriBZj=P0vztXmvwizfOYr z#N5Y&re>Uqh$?Usqf>3C<@i^ zd|aCs7qokE!59C>1^*McpzjgZIdi!H?$!mane-P<@80#+n(<-UzLxFRH$N5fo35TG zo~BpFTUv>Y|HUkiJj>qI`jk%D%9bQ~potyyml5Tdz<~NHYBtC;Oz?)DY)3W})7fRw zT58F9CsmIxybK$@-tJ?klRj zf4NY#`W7t@@SEhvHnJ#Tx{2@F#2Wo?QV&eU8I!W@3l`=j^NW|VPW?_JoU+fGaSoJ< zrapC$b1$0BU4>M7X~SmN^Hq^(U3u6IEv4i?97KP*m#|LHQecWF)M;pCas}%EC9W^$HK<>G z3G3)85m&2MCp=5`hJ-{tR9VX!oDiikOc1Im<@}yB-RgBXc1v5gFjRg;9U5sD#(nF& zmgZv&KIb>h(mz0kxxIX=8$LP>w}I~hS?}YwVSu;MoZkoXjF(TRZg*JJ)~bdEgcTaR z%amd8B=v8_^yfjo?Bo9egQFA+zUEAW@~2(7r~0~Vi}IT^1C8n;XK@>SYumBz9hD^-nh@A&^6wNU)jjr%S+oi`(buGI zl;AMPL$VYDuIIlEu?TT7QN7IhVY23@b4FB~&r%?!@@lN)DW?Kk-f6hDI z)GRG<2jCYGoXbPxbVOCsQA0%qwauLs707b-J-gQerACGYvWRg9vu3}CN0h(V3ReyQ zaw<$Y@P-HmcxRL`=kZW-xbinjF`e7yMDv3#kqUz!QHi9?-cw1BT0kN^f|*=|oWdy< zP=IIP@kR!mLiiI@timhvQpj`x6{ql4%J+A$zt_#Eig@@j2&(9BzdrxwyIVh-lARu= z7xXs{UaxR1(r#0A(V$3I-B(TW^>H>R`Ao)%v5`dii?7+OZz~&cZDh!`XHT;kF^V=S zMGcvCYMYyt8O+lKn<;*#3tGZ@(`SfH(U>Kd-4Mqj2;^1cVv*4Lj8Ak zLlB=)>>b>>2{JyCw~{gmBh>G3rRhF}1TN9o1JEav3P%*8APjE^DMJk*>9WCdP)b~t zTDG}{4me#fN9p}q;S=irs(fzntPu^~4T^^`5TpKhaJdwF64{1wF*c`*aGMi)gI z?fnuZgU+q@%0DO4V- strs; vector < const char* > pcks; + uint32_t cert_count = sizeof(CERT_FILES)/ sizeof(CERT_FILES[0]); // read sample PCK Certs from PEM files to strings array - for ( size_t i = 0; i < 3; i++ ) + for ( size_t i = 0; i < cert_count; i++ ) { string pem; path = SAMPLE_DIR + CERT_FILES[i]; @@ -118,11 +119,11 @@ int main ( void ) cpu_svn_t plat_svn = { 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; uint16_t plat_pcesvn = 6; uint16_t plat_pceid = 0; - uint32_t best_index = 0; + uint32_t best_index = 6; // call PCK Cert Selection library with sample data input - cout << "Call with PCESVN (6), CPUSVN { 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, expecting success with index 1\n"; - pck_cert_selection_res_t res = pck_cert_select ( &plat_svn, plat_pcesvn, plat_pceid, tcb.c_str (), pcks.data (), 3, &best_index ); + cout << "Call with PCESVN (6), CPUSVN { 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, expecting success with index 6\n"; + pck_cert_selection_res_t res = pck_cert_select ( &plat_svn, plat_pcesvn, plat_pceid, tcb.c_str (), pcks.data (), cert_count, &best_index ); if ( res == PCK_CERT_SELECT_SUCCESS ) { cout << "Best PCK is: " << best_index << "\n"; @@ -136,8 +137,8 @@ int main ( void ) // change platform TCB raw data and call PCK Cert Selection library again, sample data is same plat_svn = { 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }; plat_pcesvn = 4; - cout << "Call with PCESVN (4), CPUSVN { 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, expecting success with index 0\n"; - res = pck_cert_select ( &plat_svn, plat_pcesvn, plat_pceid, tcb.c_str (), pcks.data (), 3, &best_index ); + cout << "Call with PCESVN (4), CPUSVN { 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, expecting success with index 4\n"; + res = pck_cert_select ( &plat_svn, plat_pcesvn, plat_pceid, tcb.c_str (), pcks.data (), cert_count, &best_index ); if ( res == PCK_CERT_SELECT_SUCCESS ) { cout << "Best PCK is: " << best_index << "\n"; @@ -152,7 +153,7 @@ int main ( void ) plat_svn = { 0 }; plat_pcesvn = 1; cout << "Call with PCESVN (1), CPUSVN { 0 }, expecting fail not found (error 12)\n"; - res = pck_cert_select ( &plat_svn, plat_pcesvn, plat_pceid, tcb.c_str (), pcks.data (), 3, &best_index ); + res = pck_cert_select ( &plat_svn, plat_pcesvn, plat_pceid, tcb.c_str (), pcks.data (), cert_count, &best_index ); if ( res == PCK_CERT_SELECT_SUCCESS ) { cout << " Success index: " << res << ", exit\n"; @@ -162,10 +163,26 @@ int main ( void ) { cout << "Error returned: " << res << "\n"; } + // platform TCB raw data, CPUSVN and PCESVN + plat_svn = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 }; + plat_pcesvn = 7; + + // call PCK Cert Selection library with sample data input + cout << "Call with PCESVN (7), CPUSVN { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 }, expecting success with index 6\n"; + res = pck_cert_select ( &plat_svn, plat_pcesvn, plat_pceid, tcb.c_str (), pcks.data (), cert_count, &best_index ); + if ( res == PCK_CERT_SELECT_SUCCESS ) + { + cout << "Best PCK is: " << best_index << "\n"; + } + else + { + cout << "Unexpected Error returned: " << res << ", exit\n"; + return 1; + } cout << "Below test case to get the hw config ID" << endl; - // check the + // check the hw config plat_svn = { 0, 1, 2, 3, 4, 5, 19, 7, 8, 9, 0, 0, 0, 0, 0, 0 }; plat_pcesvn = 4; uint32_t configuration_id = 0; diff --git a/tools/PCKCertSelection/SampleData/pck0.pem b/tools/PCKCertSelection/SampleData/pck0_sample.pem similarity index 100% rename from tools/PCKCertSelection/SampleData/pck0.pem rename to tools/PCKCertSelection/SampleData/pck0_sample.pem diff --git a/tools/PCKCertSelection/SampleData/pck1.pem b/tools/PCKCertSelection/SampleData/pck1_sample.pem similarity index 100% rename from tools/PCKCertSelection/SampleData/pck1.pem rename to tools/PCKCertSelection/SampleData/pck1_sample.pem diff --git a/tools/PCKCertSelection/SampleData/pck2.pem b/tools/PCKCertSelection/SampleData/pck2_sample.pem similarity index 100% rename from tools/PCKCertSelection/SampleData/pck2.pem rename to tools/PCKCertSelection/SampleData/pck2_sample.pem diff --git a/tools/PCKCertSelection/SampleData/pck3_sample.pem b/tools/PCKCertSelection/SampleData/pck3_sample.pem new file mode 100644 index 00000000..c5759d68 --- /dev/null +++ b/tools/PCKCertSelection/SampleData/pck3_sample.pem @@ -0,0 +1,27 @@ +-----BEGIN CERTIFICATE----- +MIIEoDCCBCegAwIBAgIUE8T6Xg4z7Uj7poHEHHSOnSIZArowCgYIKoZIzj0EAwIw +cDEiMCAGA1UEAwwZSW50ZWwgU0dYIFBDSyBDZXJ0aWZpY2F0ZTEaMBgGA1UECgwR +SW50ZWwgQ29ycG9yYXRpb24xFDASBgNVBAcMC1NhbnRhIENsYXJhMQswCQYDVQQI +DAJDQTELMAkGA1UEBhMCVVMwHhcNMjEwMjIyMTAzNTU2WhcNMjIwMjIyMTAzNTU2 +WjBwMSIwIAYDVQQDDBlJbnRlbCBTR1ggUENLIENlcnRpZmljYXRlMRowGAYDVQQK +DBFJbnRlbCBDb3Jwb3JhdGlvbjEUMBIGA1UEBwwLU2FudGEgQ2xhcmExCzAJBgNV +BAgMAkNBMQswCQYDVQQGEwJVUzB2MBAGByqGSM49AgEGBSuBBAAiA2IABGRGsHFp +LX67vmd4MDSTFawgcVtGCIH9oTkzciNOA2o7VvLe0++4dF9sTByHNGvV6OBt9wSX +rnfbktNl9zkcSHGiHPQyQW3yDpBFt7iLclIdqR0wdll7cwIjtYPpsk4IVqOCAoAw +ggJ8MAkGA1UdIwQCMAAwWAYDVR0fBFEwTzBNoEugSYZHaHR0cHM6Ly9jZXJ0aWZp +Y2F0ZXMudHJ1c3RlZHNlcnZpY2VzLmludGVsLmNvbS9JbnRlbFNHWFBDS1Byb2Nl +c3Nvci5jcmwwHQYDVR0OBBYEFH0Z+IE+Rmz6bttmwa/iaH600AXfMA4GA1UdDwEB +/wQEAwIGwDAMBgNVHRMBAf8EAjAAMIIB1gYJKoZIhvhNAQ0BAQH/BIIBxDCCAcAw +HgYKKoZIhvhNAQ0BAQQQE24AAAAAAAAAAAAAAAAAADCCAWMGCiqGSIb4TQENAQIw +ggFTMBAGCyqGSIb4TQENAQIBAgEBMBAGCyqGSIb4TQENAQICAgEBMBAGCyqGSIb4 +TQENAQIDAgEBMBAGCyqGSIb4TQENAQIEAgEBMBAGCyqGSIb4TQENAQIFAgEBMBAG +CyqGSIb4TQENAQIGAgEBMBAGCyqGSIb4TQENAQIHAgEBMBAGCyqGSIb4TQENAQII +AgEBMBAGCyqGSIb4TQENAQIJAgEBMBAGCyqGSIb4TQENAQIKAgEBMBAGCyqGSIb4 +TQENAQILAgEBMBAGCyqGSIb4TQENAQIMAgEAMBAGCyqGSIb4TQENAQINAgEAMBAG +CyqGSIb4TQENAQIOAgEAMBAGCyqGSIb4TQENAQIPAgEAMBAGCyqGSIb4TQENAQIQ +AgEAMBAGCyqGSIb4TQENAQIRAgEEMB8GCyqGSIb4TQENAQISBBABAQEBAQEBAQEB +AQAAAAAAMBAGCiqGSIb4TQENAQMEAgAAMBQGCiqGSIb4TQENAQQEBgBwfwAAADAP +BgoqhkiG+E0BDQEFCgEAMAoGCCqGSM49BAMCA2cAMGQCMFqbdE6Z3XgRZO75W69+ +zqPGZS4J6YBwlCwOgSjd9CE4owLoU4kKvg0ceJsHf99XaQIwQ/HiDdy/vc2l1jkK +c6Y4jyp68UbJI0hHi6Qdq5ithg2shq4rAQY2eK9eL6HkJmRH +-----END CERTIFICATE----- diff --git a/tools/PCKCertSelection/SampleData/pck4_sample.pem b/tools/PCKCertSelection/SampleData/pck4_sample.pem new file mode 100644 index 00000000..5c20fb7a --- /dev/null +++ b/tools/PCKCertSelection/SampleData/pck4_sample.pem @@ -0,0 +1,27 @@ +-----BEGIN CERTIFICATE----- +MIIEoTCCBCegAwIBAgIUQxKHanzfgX7U2S9/CGBCsQjUKKUwCgYIKoZIzj0EAwIw +cDEiMCAGA1UEAwwZSW50ZWwgU0dYIFBDSyBDZXJ0aWZpY2F0ZTEaMBgGA1UECgwR +SW50ZWwgQ29ycG9yYXRpb24xFDASBgNVBAcMC1NhbnRhIENsYXJhMQswCQYDVQQI +DAJDQTELMAkGA1UEBhMCVVMwHhcNMjEwMjIyMTAzNTUxWhcNMjIwMjIyMTAzNTUx +WjBwMSIwIAYDVQQDDBlJbnRlbCBTR1ggUENLIENlcnRpZmljYXRlMRowGAYDVQQK +DBFJbnRlbCBDb3Jwb3JhdGlvbjEUMBIGA1UEBwwLU2FudGEgQ2xhcmExCzAJBgNV +BAgMAkNBMQswCQYDVQQGEwJVUzB2MBAGByqGSM49AgEGBSuBBAAiA2IABGRGsHFp +LX67vmd4MDSTFawgcVtGCIH9oTkzciNOA2o7VvLe0++4dF9sTByHNGvV6OBt9wSX +rnfbktNl9zkcSHGiHPQyQW3yDpBFt7iLclIdqR0wdll7cwIjtYPpsk4IVqOCAoAw +ggJ8MAkGA1UdIwQCMAAwWAYDVR0fBFEwTzBNoEugSYZHaHR0cHM6Ly9jZXJ0aWZp +Y2F0ZXMudHJ1c3RlZHNlcnZpY2VzLmludGVsLmNvbS9JbnRlbFNHWFBDS1Byb2Nl +c3Nvci5jcmwwHQYDVR0OBBYEFH0Z+IE+Rmz6bttmwa/iaH600AXfMA4GA1UdDwEB +/wQEAwIGwDAMBgNVHRMBAf8EAjAAMIIB1gYJKoZIhvhNAQ0BAQH/BIIBxDCCAcAw +HgYKKoZIhvhNAQ0BAQQQE24AAAAAAAAAAAAAAAAAADCCAWMGCiqGSIb4TQENAQIw +ggFTMBAGCyqGSIb4TQENAQIBAgEBMBAGCyqGSIb4TQENAQICAgEBMBAGCyqGSIb4 +TQENAQIDAgEBMBAGCyqGSIb4TQENAQIEAgEBMBAGCyqGSIb4TQENAQIFAgEBMBAG +CyqGSIb4TQENAQIGAgEBMBAGCyqGSIb4TQENAQIHAgEBMBAGCyqGSIb4TQENAQII +AgEBMBAGCyqGSIb4TQENAQIJAgEBMBAGCyqGSIb4TQENAQIKAgEBMBAGCyqGSIb4 +TQENAQILAgEBMBAGCyqGSIb4TQENAQIMAgEBMBAGCyqGSIb4TQENAQINAgEBMBAG +CyqGSIb4TQENAQIOAgEBMBAGCyqGSIb4TQENAQIPAgEBMBAGCyqGSIb4TQENAQIQ +AgEBMBAGCyqGSIb4TQENAQIRAgEHMB8GCyqGSIb4TQENAQISBBABAQEBAQEBAQEB +AQEBAQEBMBAGCiqGSIb4TQENAQMEAgAAMBQGCiqGSIb4TQENAQQEBgBwfwAAADAP +BgoqhkiG+E0BDQEFCgEAMAoGCCqGSM49BAMCA2gAMGUCMBgPQxZlKmqmD9r8jgpE +h4cWXy2RVuTE6zAQvk8kE/G7S1DLC/OlpP2sBfxwaPl8/wIxAI16zxBSyFjdEoKb +bAihxv36Z7mAT9MmBz3h59Opug/ibQ5tOoQ9h6/7uwuRxZ0yCg== +-----END CERTIFICATE----- diff --git a/tools/PCKCertSelection/SampleData/pck5_sample.pem b/tools/PCKCertSelection/SampleData/pck5_sample.pem new file mode 100644 index 00000000..d9f93aea --- /dev/null +++ b/tools/PCKCertSelection/SampleData/pck5_sample.pem @@ -0,0 +1,27 @@ +-----BEGIN CERTIFICATE----- +MIIEoTCCBCegAwIBAgIUOL1Th6SQCNqpHI5B09+15UItniwwCgYIKoZIzj0EAwIw +cDEiMCAGA1UEAwwZSW50ZWwgU0dYIFBDSyBDZXJ0aWZpY2F0ZTEaMBgGA1UECgwR +SW50ZWwgQ29ycG9yYXRpb24xFDASBgNVBAcMC1NhbnRhIENsYXJhMQswCQYDVQQI +DAJDQTELMAkGA1UEBhMCVVMwHhcNMjEwMjIyMTAzNTQ2WhcNMjIwMjIyMTAzNTQ2 +WjBwMSIwIAYDVQQDDBlJbnRlbCBTR1ggUENLIENlcnRpZmljYXRlMRowGAYDVQQK +DBFJbnRlbCBDb3Jwb3JhdGlvbjEUMBIGA1UEBwwLU2FudGEgQ2xhcmExCzAJBgNV +BAgMAkNBMQswCQYDVQQGEwJVUzB2MBAGByqGSM49AgEGBSuBBAAiA2IABGRGsHFp +LX67vmd4MDSTFawgcVtGCIH9oTkzciNOA2o7VvLe0++4dF9sTByHNGvV6OBt9wSX +rnfbktNl9zkcSHGiHPQyQW3yDpBFt7iLclIdqR0wdll7cwIjtYPpsk4IVqOCAoAw +ggJ8MAkGA1UdIwQCMAAwWAYDVR0fBFEwTzBNoEugSYZHaHR0cHM6Ly9jZXJ0aWZp +Y2F0ZXMudHJ1c3RlZHNlcnZpY2VzLmludGVsLmNvbS9JbnRlbFNHWFBDS1Byb2Nl +c3Nvci5jcmwwHQYDVR0OBBYEFH0Z+IE+Rmz6bttmwa/iaH600AXfMA4GA1UdDwEB +/wQEAwIGwDAMBgNVHRMBAf8EAjAAMIIB1gYJKoZIhvhNAQ0BAQH/BIIBxDCCAcAw +HgYKKoZIhvhNAQ0BAQQQE24AAAAAAAAAAAAAAAAAADCCAWMGCiqGSIb4TQENAQIw +ggFTMBAGCyqGSIb4TQENAQIBAgEBMBAGCyqGSIb4TQENAQICAgEBMBAGCyqGSIb4 +TQENAQIDAgEBMBAGCyqGSIb4TQENAQIEAgEBMBAGCyqGSIb4TQENAQIFAgEBMBAG +CyqGSIb4TQENAQIGAgEBMBAGCyqGSIb4TQENAQIHAgEBMBAGCyqGSIb4TQENAQII +AgEBMBAGCyqGSIb4TQENAQIJAgEBMBAGCyqGSIb4TQENAQIKAgEBMBAGCyqGSIb4 +TQENAQILAgEBMBAGCyqGSIb4TQENAQIMAgEBMBAGCyqGSIb4TQENAQINAgEBMBAG +CyqGSIb4TQENAQIOAgEBMBAGCyqGSIb4TQENAQIPAgEAMBAGCyqGSIb4TQENAQIQ +AgEAMBAGCyqGSIb4TQENAQIRAgEIMB8GCyqGSIb4TQENAQISBBABAQEBAQEBAQEB +AQEBAQAAMBAGCiqGSIb4TQENAQMEAgAAMBQGCiqGSIb4TQENAQQEBgBwfwAAADAP +BgoqhkiG+E0BDQEFCgEAMAoGCCqGSM49BAMCA2gAMGUCMDb2U7Hin0HUUXSiLCh1 +cIuhdEJSC59xblO2KtwPCd1j/NBdXlijNybQjfyHX7YiNQIxAKW4r9/d4WNe9ZDN +W5dik0pQwsPJBS6HdtZwoYNwFqEiQ8MM1sHAAivHA3HPYxOpHA== +-----END CERTIFICATE----- diff --git a/tools/PCKCertSelection/SampleData/pck6_sample.pem b/tools/PCKCertSelection/SampleData/pck6_sample.pem new file mode 100644 index 00000000..508aab06 --- /dev/null +++ b/tools/PCKCertSelection/SampleData/pck6_sample.pem @@ -0,0 +1,27 @@ +-----BEGIN CERTIFICATE----- +MIIEoTCCBCegAwIBAgIUFAKiXaO5ip3GFvMjNoNWaR9+OjMwCgYIKoZIzj0EAwIw +cDEiMCAGA1UEAwwZSW50ZWwgU0dYIFBDSyBDZXJ0aWZpY2F0ZTEaMBgGA1UECgwR +SW50ZWwgQ29ycG9yYXRpb24xFDASBgNVBAcMC1NhbnRhIENsYXJhMQswCQYDVQQI +DAJDQTELMAkGA1UEBhMCVVMwHhcNMjEwMjIyMTAzNTQwWhcNMjIwMjIyMTAzNTQw +WjBwMSIwIAYDVQQDDBlJbnRlbCBTR1ggUENLIENlcnRpZmljYXRlMRowGAYDVQQK +DBFJbnRlbCBDb3Jwb3JhdGlvbjEUMBIGA1UEBwwLU2FudGEgQ2xhcmExCzAJBgNV +BAgMAkNBMQswCQYDVQQGEwJVUzB2MBAGByqGSM49AgEGBSuBBAAiA2IABGRGsHFp +LX67vmd4MDSTFawgcVtGCIH9oTkzciNOA2o7VvLe0++4dF9sTByHNGvV6OBt9wSX +rnfbktNl9zkcSHGiHPQyQW3yDpBFt7iLclIdqR0wdll7cwIjtYPpsk4IVqOCAoAw +ggJ8MAkGA1UdIwQCMAAwWAYDVR0fBFEwTzBNoEugSYZHaHR0cHM6Ly9jZXJ0aWZp +Y2F0ZXMudHJ1c3RlZHNlcnZpY2VzLmludGVsLmNvbS9JbnRlbFNHWFBDS1Byb2Nl +c3Nvci5jcmwwHQYDVR0OBBYEFH0Z+IE+Rmz6bttmwa/iaH600AXfMA4GA1UdDwEB +/wQEAwIGwDAMBgNVHRMBAf8EAjAAMIIB1gYJKoZIhvhNAQ0BAQH/BIIBxDCCAcAw +HgYKKoZIhvhNAQ0BAQQQE24AAAAAAAAAAAAAAAAAADCCAWMGCiqGSIb4TQENAQIw +ggFTMBAGCyqGSIb4TQENAQIBAgEBMBAGCyqGSIb4TQENAQICAgEBMBAGCyqGSIb4 +TQENAQIDAgEBMBAGCyqGSIb4TQENAQIEAgEBMBAGCyqGSIb4TQENAQIFAgEBMBAG +CyqGSIb4TQENAQIGAgEBMBAGCyqGSIb4TQENAQIHAgEBMBAGCyqGSIb4TQENAQII +AgEBMBAGCyqGSIb4TQENAQIJAgEBMBAGCyqGSIb4TQENAQIKAgEBMBAGCyqGSIb4 +TQENAQILAgEBMBAGCyqGSIb4TQENAQIMAgEBMBAGCyqGSIb4TQENAQINAgEAMBAG +CyqGSIb4TQENAQIOAgEAMBAGCyqGSIb4TQENAQIPAgEAMBAGCyqGSIb4TQENAQIQ +AgEAMBAGCyqGSIb4TQENAQIRAgEFMB8GCyqGSIb4TQENAQISBBABAQEBAQEBAQEB +AQEAAAAAMBAGCiqGSIb4TQENAQMEAgAAMBQGCiqGSIb4TQENAQQEBgBwfwAAADAP +BgoqhkiG+E0BDQEFCgEAMAoGCCqGSM49BAMCA2gAMGUCMBDvtnCA56/aNFFYY9NV +kzgdifL0P1Enp8WrvETrO+oFRd6Jp/SdWj2iuqjlZguY9gIxAOMRBiWyvigq/tcr +xUbrh34DXpa3t6Bb5ExotjV3yW0jTQfxcG4kveYAVugBiKMlEw== +-----END CERTIFICATE----- diff --git a/tools/PCKCertSelection/SampleData/tcb_info.json b/tools/PCKCertSelection/SampleData/tcb_info.json index a4429eb0..faa38cd4 100644 --- a/tools/PCKCertSelection/SampleData/tcb_info.json +++ b/tools/PCKCertSelection/SampleData/tcb_info.json @@ -1,175 +1,106 @@ { - "signature": "24f15870f33c63d9ad6c765ec23c011a01011497fcdec32fc0fa211a256ade7027f7b0a1aa11f02c38b01684925919bb68962b7f6d7e14096b5e6987384401b4", - "tcbInfo": { - "fmspc": "00707f000000", - "issueDate": "2021-07-05T17:20:02Z", - "nextUpdate": "2021-08-04T17:20:02Z", - "pceId": "0000", - "tcbEvaluationDataNumber": 11, - "tcbLevels": [ - { - "tcb": { - "pcesvn": 11, - "sgxtcbcomp01svn": 4, - "sgxtcbcomp02svn": 4, - "sgxtcbcomp03svn": 4, - "sgxtcbcomp04svn": 4, - "sgxtcbcomp05svn": 4, - "sgxtcbcomp06svn": 4, - "sgxtcbcomp07svn": 4, - "sgxtcbcomp08svn": 4, - "sgxtcbcomp09svn": 4, - "sgxtcbcomp10svn": 4, - "sgxtcbcomp11svn": 4, - "sgxtcbcomp12svn": 4, - "sgxtcbcomp13svn": 0, - "sgxtcbcomp14svn": 0, - "sgxtcbcomp15svn": 0, - "sgxtcbcomp16svn": 0 - }, - "tcbDate": "2021-06-09T00:00:00Z", - "tcbStatus": "UpToDate" - }, - { - "tcb": { - "pcesvn": 10, - "sgxtcbcomp01svn": 3, - "sgxtcbcomp02svn": 3, - "sgxtcbcomp03svn": 3, - "sgxtcbcomp04svn": 3, - "sgxtcbcomp05svn": 3, - "sgxtcbcomp06svn": 3, - "sgxtcbcomp07svn": 3, - "sgxtcbcomp08svn": 3, - "sgxtcbcomp09svn": 3, - "sgxtcbcomp10svn": 0, - "sgxtcbcomp11svn": 0, - "sgxtcbcomp12svn": 0, - "sgxtcbcomp13svn": 0, - "sgxtcbcomp14svn": 0, - "sgxtcbcomp15svn": 0, - "sgxtcbcomp16svn": 0 - }, - "tcbDate": "2020-11-11T00:00:00Z", - "tcbStatus": "OutOfDate" - }, - { - "tcb": { - "pcesvn": 9, - "sgxtcbcomp01svn": 2, - "sgxtcbcomp02svn": 2, - "sgxtcbcomp03svn": 2, - "sgxtcbcomp04svn": 2, - "sgxtcbcomp05svn": 0, - "sgxtcbcomp06svn": 0, - "sgxtcbcomp07svn": 0, - "sgxtcbcomp08svn": 0, - "sgxtcbcomp09svn": 0, - "sgxtcbcomp10svn": 0, - "sgxtcbcomp11svn": 0, - "sgxtcbcomp12svn": 0, - "sgxtcbcomp13svn": 0, - "sgxtcbcomp14svn": 0, - "sgxtcbcomp15svn": 0, - "sgxtcbcomp16svn": 0 - }, - "tcbDate": "2020-06-10T00:00:00Z", - "tcbStatus": "OutOfDate" - }, - { - "tcb": { - "pcesvn": 7, - "sgxtcbcomp01svn": 2, - "sgxtcbcomp02svn": 2, - "sgxtcbcomp03svn": 0, - "sgxtcbcomp04svn": 0, - "sgxtcbcomp05svn": 0, - "sgxtcbcomp06svn": 0, - "sgxtcbcomp07svn": 0, - "sgxtcbcomp08svn": 0, - "sgxtcbcomp09svn": 0, - "sgxtcbcomp10svn": 0, - "sgxtcbcomp11svn": 0, - "sgxtcbcomp12svn": 0, - "sgxtcbcomp13svn": 0, - "sgxtcbcomp14svn": 0, - "sgxtcbcomp15svn": 0, - "sgxtcbcomp16svn": 0 - }, - "tcbDate": "2019-05-15T00:00:00Z", - "tcbStatus": "OutOfDate" - }, - { - "tcb": { - "pcesvn": 6, - "sgxtcbcomp01svn": 2, - "sgxtcbcomp02svn": 2, - "sgxtcbcomp03svn": 0, - "sgxtcbcomp04svn": 0, - "sgxtcbcomp05svn": 0, - "sgxtcbcomp06svn": 0, - "sgxtcbcomp07svn": 0, - "sgxtcbcomp08svn": 0, - "sgxtcbcomp09svn": 0, - "sgxtcbcomp10svn": 0, - "sgxtcbcomp11svn": 0, - "sgxtcbcomp12svn": 0, - "sgxtcbcomp13svn": 0, - "sgxtcbcomp14svn": 0, - "sgxtcbcomp15svn": 0, - "sgxtcbcomp16svn": 0 - }, - "tcbDate": "2018-08-15T00:00:00Z", - "tcbStatus": "OutOfDate" - }, - { - "tcb": { - "pcesvn": 5, - "sgxtcbcomp01svn": 1, - "sgxtcbcomp02svn": 1, - "sgxtcbcomp03svn": 0, - "sgxtcbcomp04svn": 0, - "sgxtcbcomp05svn": 0, - "sgxtcbcomp06svn": 0, - "sgxtcbcomp07svn": 0, - "sgxtcbcomp08svn": 0, - "sgxtcbcomp09svn": 0, - "sgxtcbcomp10svn": 0, - "sgxtcbcomp11svn": 0, - "sgxtcbcomp12svn": 0, - "sgxtcbcomp13svn": 0, - "sgxtcbcomp14svn": 0, - "sgxtcbcomp15svn": 0, - "sgxtcbcomp16svn": 0 - }, - "tcbDate": "2018-01-04T00:00:00Z", - "tcbStatus": "OutOfDate" - }, - { - "tcb": { - "pcesvn": 4, - "sgxtcbcomp01svn": 0, - "sgxtcbcomp02svn": 0, - "sgxtcbcomp03svn": 0, - "sgxtcbcomp04svn": 0, - "sgxtcbcomp05svn": 0, - "sgxtcbcomp06svn": 0, - "sgxtcbcomp07svn": 0, - "sgxtcbcomp08svn": 0, - "sgxtcbcomp09svn": 0, - "sgxtcbcomp10svn": 0, - "sgxtcbcomp11svn": 0, - "sgxtcbcomp12svn": 0, - "sgxtcbcomp13svn": 0, - "sgxtcbcomp14svn": 0, - "sgxtcbcomp15svn": 0, - "sgxtcbcomp16svn": 0 - }, - "tcbDate": "2017-07-26T00:00:00Z", - "tcbStatus": "OutOfDate" - } - ], - "tcbType": 0, - "version": 2 - } -} + "tcbInfo": + { + "version":1, + "issueDate":"2018-07-23T14:35:49Z", + "nextUpdate":"2018-07-30T14:35:49Z", + "fmspc":"00707f000000", + "pceId":"0000", + "tcbLevels": + [ + { + "tcb": + { + "sgxtcbcomp01svn":1, + "sgxtcbcomp02svn":1, + "sgxtcbcomp03svn":1, + "sgxtcbcomp04svn":1, + "sgxtcbcomp05svn":1, + "sgxtcbcomp06svn":1, + "sgxtcbcomp07svn":1, + "sgxtcbcomp08svn":1, + "sgxtcbcomp09svn":1, + "sgxtcbcomp10svn":1, + "sgxtcbcomp11svn":1, + "sgxtcbcomp12svn":1, + "sgxtcbcomp13svn":0, + "sgxtcbcomp14svn":0, + "sgxtcbcomp15svn":0, + "sgxtcbcomp16svn":0, + "pcesvn":5 + }, + "status":"UpToDate" + }, + { + "tcb": + { + "sgxtcbcomp01svn":1, + "sgxtcbcomp02svn":1, + "sgxtcbcomp03svn":1, + "sgxtcbcomp04svn":1, + "sgxtcbcomp05svn":1, + "sgxtcbcomp06svn":1, + "sgxtcbcomp07svn":1, + "sgxtcbcomp08svn":1, + "sgxtcbcomp09svn":0, + "sgxtcbcomp10svn":0, + "sgxtcbcomp11svn":0, + "sgxtcbcomp12svn":0, + "sgxtcbcomp13svn":0, + "sgxtcbcomp14svn":0, + "sgxtcbcomp15svn":0, + "sgxtcbcomp16svn":0, + "pcesvn":4 + }, + "status":"OutOfDate" + }, + { + "tcb": + { + "sgxtcbcomp01svn":1, + "sgxtcbcomp02svn":1, + "sgxtcbcomp03svn":1, + "sgxtcbcomp04svn":1, + "sgxtcbcomp05svn":0, + "sgxtcbcomp06svn":0, + "sgxtcbcomp07svn":0, + "sgxtcbcomp08svn":0, + "sgxtcbcomp09svn":0, + "sgxtcbcomp10svn":0, + "sgxtcbcomp11svn":0, + "sgxtcbcomp12svn":0, + "sgxtcbcomp13svn":0, + "sgxtcbcomp14svn":0, + "sgxtcbcomp15svn":0, + "sgxtcbcomp16svn":0, + "pcesvn":3 + }, + "status":"ConfigurationNeeded" + }, + { + "tcb": + { + "sgxtcbcomp01svn":0, + "sgxtcbcomp02svn":0, + "sgxtcbcomp03svn":0, + "sgxtcbcomp04svn":0, + "sgxtcbcomp05svn":0, + "sgxtcbcomp06svn":0, + "sgxtcbcomp07svn":0, + "sgxtcbcomp08svn":0, + "sgxtcbcomp09svn":0, + "sgxtcbcomp10svn":0, + "sgxtcbcomp11svn":0, + "sgxtcbcomp12svn":0, + "sgxtcbcomp13svn":0, + "sgxtcbcomp14svn":0, + "sgxtcbcomp15svn":0, + "sgxtcbcomp16svn":0, + "pcesvn":2 + }, + "status":"Revoked" + } + ] + }, + "signature":"43cc4895a9b1035ef4c5aa0290913a31c1825d192ecbe0ef4854c603f2dede023665cd622f25825bbae1f8f8dc6e1286cdee499c8a40fc76d689dd2a3329a1c1" +} \ No newline at end of file diff --git a/tools/PCKCertSelection/SampleData/tcb_info_4.json b/tools/PCKCertSelection/SampleData/tcb_info_4.json new file mode 100644 index 00000000..a67bc30c --- /dev/null +++ b/tools/PCKCertSelection/SampleData/tcb_info_4.json @@ -0,0 +1,1270 @@ +{ + "tcbInfo": + { + "id":"SGX", + "version":3, + "issueDate":"2018-07-23T14:35:49Z", + "nextUpdate":"2018-07-30T14:35:49Z", + "fmspc":"00707f000000", + "pceId":"0000", + "tcbType":0, + "tcbEvaluationDataNumber":0, + "tcbLevels": + [ + { + "tcb": + { + "sgxtcbcomponents": + [ + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"SW", + "type":"Late Patch" + }, + { + "svn":0, + "category":"BIOS", + "type":"Patch@Reset" + } + ], + "pcesvn":7, + "tdxtcbcomponents": + [ + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"SW", + "type":"Late Patch" + }, + { + "svn":0, + "category":"BIOS", + "type":"Patch@Reset" + } + ] + }, + "tcbDate":"2020-02-05T14:35:49Z", + "tcbStatus":"UpToDate", + "AdvisoryIDs": + [ + "INTEL-SA-00079", + "INTEL-SA-00076" + ] + }, + { + "tcb": + { + "sgxtcbcomponents": + [ + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"SW", + "type":"Late Patch" + }, + { + "svn":0, + "category":"BIOS", + "type":"Patch@Reset" + } + ], + "pcesvn":6, + "tdxtcbcomponents": + [ + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"SW", + "type":"Late Patch" + }, + { + "svn":0, + "category":"BIOS", + "type":"Patch@Reset" + } + ] + }, + "tcbDate":"2020-02-05T14:35:49Z", + "tcbStatus":"SWHardeningNeeded", + "AdvisoryIDs": + [ + "INTEL-SA-00079", + "INTEL-SA-00076" + ] + }, + { + "tcb": + { + "sgxtcbcomponents": + [ + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"SW", + "type":"Late Patch" + }, + { + "svn":0, + "category":"BIOS", + "type":"Patch@Reset" + } + ], + "pcesvn":5, + "tdxtcbcomponents": + [ + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"SW", + "type":"Late Patch" + }, + { + "svn":0, + "category":"BIOS", + "type":"Patch@Reset" + } + ] + }, + "tcbDate":"2020-02-05T14:35:49Z", + "tcbStatus":"ConfigurationNeeded", + "AdvisoryIDs": + [ + "INTEL-SA-00079", + "INTEL-SA-00076" + ] + }, + { + "tcb": + { + "sgxtcbcomponents": + [ + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"SW", + "type":"Late Patch" + }, + { + "svn":0, + "category":"BIOS", + "type":"Patch@Reset" + } + ], + "pcesvn":4, + "tdxtcbcomponents": + [ + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"SW", + "type":"Late Patch" + }, + { + "svn":0, + "category":"BIOS", + "type":"Patch@Reset" + } + ] + }, + "tcbDate":"2020-02-05T14:35:49Z", + "tcbStatus":"ConfigurationAndSWHardeningNeeded", + "AdvisoryIDs": + [ + "INTEL-SA-00079", + "INTEL-SA-00076" + ] + }, + { + "tcb": + { + "sgxtcbcomponents": + [ + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"SW", + "type":"Late Patch" + }, + { + "svn":0, + "category":"BIOS", + "type":"Patch@Reset" + } + ], + "pcesvn":3, + "tdxtcbcomponents": + [ + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"SW", + "type":"Late Patch" + }, + { + "svn":0, + "category":"BIOS", + "type":"Patch@Reset" + } + ] + }, + "tcbDate":"2020-02-05T14:35:49Z", + "tcbStatus":"OutOfDate", + "AdvisoryIDs": + [ + "INTEL-SA-00079", + "INTEL-SA-00076" + ] + }, + { + "tcb": + { + "sgxtcbcomponents": + [ + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"SW", + "type":"Late Patch" + }, + { + "svn":0, + "category":"BIOS", + "type":"Patch@Reset" + } + ], + "pcesvn":2, + "tdxtcbcomponents": + [ + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":1, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"SW", + "type":"Late Patch" + }, + { + "svn":0, + "category":"BIOS", + "type":"Patch@Reset" + } + ] + }, + "tcbDate":"2020-02-05T14:35:49Z", + "tcbStatus":"OutOfDateConfigurationNeeded", + "AdvisoryIDs": + [ + "INTEL-SA-00079", + "INTEL-SA-00076" + ] + }, + { + "tcb": + { + "sgxtcbcomponents": + [ + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"BIOS", + "type":"Patch@Reset" + } + ], + "pcesvn":1, + "tdxtcbcomponents": + [ + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"ucode", + "type":"Late Patch" + }, + { + "svn":0, + "category":"BIOS", + "type":"Patch@Reset" + } + ] + }, + "tcbDate":"2020-02-05T14:35:49Z", + "tcbStatus":"Revoked", + "AdvisoryIDs": + [ + "INTEL-SA-00079", + "INTEL-SA-00076" + ] + } + ] + }, + "signature":"43cc4895a9b1035ef4c5aa0290913a31c1825d192ecbe0ef4854c603f2dede023665cd622f25825bbae1f8f8dc6e1286cdee499c8a40fc76d689dd2a3329a1c1" +} diff --git a/tools/PCKRetrievalTool/App/linux/network_wrapper.cpp b/tools/PCKRetrievalTool/App/linux/network_wrapper.cpp index 226d4762..c730a795 100644 --- a/tools/PCKRetrievalTool/App/linux/network_wrapper.cpp +++ b/tools/PCKRetrievalTool/App/linux/network_wrapper.cpp @@ -205,7 +205,7 @@ static bool process_configuration_setting(const char *config_file_name, string& url = value; } else { - url = server_url_string + "/sgx/certification/v3/platforms"; + url = server_url_string + "/sgx/certification/v4/platforms"; } } else if (name.compare("USE_SECURE_CERT") == 0) { diff --git a/tools/PCKRetrievalTool/App/utility.cpp b/tools/PCKRetrievalTool/App/utility.cpp index 0704b92c..a4033263 100644 --- a/tools/PCKRetrievalTool/App/utility.cpp +++ b/tools/PCKRetrievalTool/App/utility.cpp @@ -273,7 +273,7 @@ bool load_enclave(const char* enclave_name, sgx_enclave_id_t* p_eid) p_eid, NULL); if (SGX_SUCCESS != sgx_status) { - printf("Error, call sgx_create_enclave: fail [%s], SGXError:%04x.\n", __FUNCTION__, sgx_status); + printf("Error, call sgx_create_enclave: fail [%s], SGXError:%04x.\n",__FUNCTION__, sgx_status); ret = false; } @@ -629,47 +629,47 @@ int collect_data(uint8_t **pp_data_buffer) bool load_flag = get_urts_library_handle(); if(false == load_flag) {// can't find urts shared library to load enclave ret = -1; - goto CLEANUP; + goto CLEANUP; } load_flag = load_enclave(ID_ENCLAVE_NAME, &id_enclave_eid); if(false == load_flag) { // can't load id_enclave. ret = -1; - goto CLEANUP; + goto CLEANUP; } sgx_status = ide_get_id(id_enclave_eid, &ecall_ret, &platform_id); if (SGX_SUCCESS != sgx_status) { fprintf(stderr, "Failed to call into the ID_ENCLAVE:get_qe_id. 0x%04x.\n", sgx_status); ret = -1; - goto CLEANUP; + goto CLEANUP; } if (SGX_SUCCESS != ecall_ret) { fprintf(stderr, "Failed to get QE_ID. 0x%04x.\n", ecall_ret); ret = -1; - goto CLEANUP; + goto CLEANUP; } load_flag = load_enclave(PCE_ENCLAVE_NAME, &pce_enclave_eid); if(false == load_flag) { // can't load pce enclave. ret = -1; - goto CLEANUP; + goto CLEANUP; } p_sgx_get_target_info = (sgx_get_target_info_func_t)FINDFUNCTIONSYM(sgx_urts_handle, "sgx_get_target_info"); if (p_sgx_get_target_info == NULL) { printf("ERROR: Can't find the function sgx_get_target_info in sgx_urts library.\n"); ret = -1; - goto CLEANUP; + goto CLEANUP; } sgx_status = p_sgx_get_target_info(pce_enclave_eid, &pce_target_info); if (SGX_SUCCESS != sgx_status) { fprintf(stderr, "Failed to get pce target info. The error code is: 0x%04x.\n", sgx_status); ret = -1; - goto CLEANUP; + goto CLEANUP; } sgx_status = ide_get_pce_encrypt_key(id_enclave_eid, @@ -683,13 +683,13 @@ int collect_data(uint8_t **pp_data_buffer) if (SGX_SUCCESS != sgx_status) { fprintf(stderr, "Failed to call into the ID_ENCLAVE: get_report_and_pce_encrypt_key. The error code is: 0x%04x.\n", sgx_status); ret = -1; - goto CLEANUP; + goto CLEANUP; } if (SGX_SUCCESS != ecall_ret) { fprintf(stderr, "Failed to generate PCE encryption key. The error code is: 0x%04x.\n", ecall_ret); ret = -1; - goto CLEANUP; + goto CLEANUP; } sgx_status = get_pc_info(pce_enclave_eid, @@ -706,24 +706,24 @@ int collect_data(uint8_t **pp_data_buffer) if (SGX_SUCCESS != sgx_status) { fprintf(stderr, "Failed to call into PCE enclave: get_pc_info. The error code is: 0x%04x.\n", sgx_status); ret = -1; - goto CLEANUP; + goto CLEANUP; } if (SGX_SUCCESS != ecall_ret) { fprintf(stderr, "Failed to get PCE info. The error code is: 0x%04x.\n", ecall_ret); ret = -1; - goto CLEANUP; + goto CLEANUP; } if (signature_scheme != PCE_NIST_P256_ECDSA_SHA256) { fprintf(stderr, "PCE returned incorrect signature scheme.\n"); ret = -1; - goto CLEANUP; + goto CLEANUP; } if (encrypted_ppid_ret_size != ENCRYPTED_PPID_LENGTH) { fprintf(stderr, "PCE returned unexpected returned encrypted PPID size.\n"); ret = -1; - goto CLEANUP; + goto CLEANUP; } buffer_size = ENCRYPTED_PPID_LENGTH + CPU_SVN_LENGTH + ISV_SVN_LENGTH + PCE_ID_LENGTH + DEFAULT_PLATFORM_ID_LENGTH; @@ -732,7 +732,7 @@ int collect_data(uint8_t **pp_data_buffer) if (NULL == *pp_data_buffer) { fprintf(stderr,"Couldn't allocate data buffer\n"); ret = -1; - goto CLEANUP; + goto CLEANUP; } memset(*pp_data_buffer, 0, buffer_size); p_temp = *pp_data_buffer; diff --git a/tools/PCKRetrievalTool/App/win/network_wrapper.cpp b/tools/PCKRetrievalTool/App/win/network_wrapper.cpp index b77483b9..4bea6c42 100644 --- a/tools/PCKRetrievalTool/App/win/network_wrapper.cpp +++ b/tools/PCKRetrievalTool/App/win/network_wrapper.cpp @@ -118,7 +118,7 @@ static bool process_configuration_setting(const char *config_file_name, string& url = value; } else { - url = server_url_string + "/sgx/certification/v3/platforms"; + url = server_url_string + "/sgx/certification/v4/platforms"; } } else if (name.compare("USE_SECURE_CERT") == 0) { diff --git a/tools/PCKRetrievalTool/README.build b/tools/PCKRetrievalTool/README.build index 34bbec18..9cb7722e 100644 --- a/tools/PCKRetrievalTool/README.build +++ b/tools/PCKRetrievalTool/README.build @@ -8,8 +8,6 @@ Intel(R) Software Guard Extensions Data Center Attestation Primitives (Intel(R) For Linux version: - Install prebuilt Intel(R) SGX SDK and urts Installer, you can download it from [01.org](https://01.org/intel-software-guard-extensions/downloads) a. sgx_linux_x64_sdk_${version}.bin -- Build QuoteGeneration - a. please refer "How to build" section in the QuoteGeneration's README - Just run the command: make diff --git a/tools/PCKRetrievalTool/ThirdPartyLicenseIndex.txt b/tools/PCKRetrievalTool/ThirdPartyLicenseIndex.txt new file mode 100644 index 00000000..312890ab --- /dev/null +++ b/tools/PCKRetrievalTool/ThirdPartyLicenseIndex.txt @@ -0,0 +1,971 @@ +Intel® Software Guard Extensions PCKID Retrieval Tool +Third Party Components Attributions + + +The following are licenses for third party software that was used to develop the Intel product, Intel® Software Guard Extensions PCKID Retrieval Tool. These licenses are listed due to attribution requirements in these license agreements. For the avoidance of doubt, Intel® Software Guard Extensions is solely governed by the terms and conditions of the End User License Agreement that accompanies Intel® Software Guard Extensions PCKID Retrieval Tool and the third party licenses identified in the ThirdPartyLicenseIndex.txt that accompanies Intel® Software Guard Extensions PCKID Retrieval Tool. + + +OpenBSD* +http://openbsd.org/ + +OpenBSD* Copyright Policy + +• Goal + Copyright law is complex, OpenBSD* policy is simple - OpenBSD strives to maintain the spirit of the original Berkeley Unix copyrights. + OpenBSD can exist as it does today because of the example set by the Computer Systems Research Group at Berkeley and the battles which they and others fought to create a relatively un-encumbered Unix source distribution. + The ability of a freely redistributable "Berkeley" Unix to move forward on a competitive basis with other operating systems depends on the willingness of the various development groups to exchange code amongst themselves and with other projects. Understanding the legal issues surrounding copyright is fundamental to the ability to exchange and re-distribute code, while honoring the spirit of the copyright and concept of attribution is fundamental to promoting the cooperation of the people involved. +• The Berkeley* Copyright + The Berkeley* copyright poses no restrictions on private or commercial use of the software and imposes only simple and uniform requirements for maintaining copyright notices in redistributed versions and crediting the originator of the material only in advertising. + For instance: + * Copyright (c) 1982, 1986, 1990, 1991, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + Berkeley rescinded the 3rd term (the advertising term) on 22 July 1999. Verbatim copies of the Berkeley license in the OpenBSD tree have that term removed. In addition, many 3rd-party BSD-style licenses consist solely of the first two terms. + Because the OpenBSD copyright imposes no conditions beyond those imposed by the Berkeley copyright, OpenBSD can hope to share the same wide distribution and applicability as the Berkeley distributions. It follows however, that OpenBSD cannot include material which includes copyrights which are more restrictive than the Berkeley copyright, or must relegate this material to a secondary status, i.e. OpenBSD as a whole is freely redistributable, but some optional components may not be. +• Copyright Law + While the overall subject of copyright law is far beyond the scope of this document, some basics are in order. Under the current copyright law, copyrights are implicit in the creation of a new work and reside with the creator, unless otherwise assigned. In general the copyright applies only to the new work, not the material the work was derived from, nor those portions of the derivative material included in the new work. + Copyright law admits to three general categories of works: + Original Work + A new work that is not derived from an existing work. + Derivative Work + Work that is derived from, includes or amends existing works. + Compilations + A work that is a compilation of existing new and derivative works. + The fundamental concept is that there is primacy of the copyright, that is a copyright of a derivative work does not affect the rights held by the owner of the copyright of the original work, rather only the part added. Likewise the copyright of a compilation does not affect the rights of the owner of the included works, only the compilation as an entity. + It is vitally important to understand that copyrights are broad protections as defined by national and international copyright law. The "copyright notices" usually included in source files are not copyrights, but rather notices that a party asserts that they hold copyright to the material or to part of the material. Typically these notices are associated with license terms which grant permissions subject to copyright law and with disclaimers that state the position of the copyright holder/distributor with respect to liability surrounding use of the material. +• Permissions - the flip side + Because copyrights arise from the creation of a work, rather than through a registration process, there needs to be a practical way to extend permission to use a work beyond what might be allowed by "fair use" provisions of the copyright laws. + This permission typically takes the form of a "release" or "license" included in the work, which grants the additional uses beyond those granted by copyright law, usually subject to a variety of conditions. At one extreme sits "public domain" where the originator asserts that he imposes no restrictions on use of the material, at the other restrictive clauses that actually grant no additional rights or impose restrictive, discriminatory or impractical conditions on use of the work. + Again, an important point to note is that the release and conditions can only apply to the portion of the work that was originated by the copyright holder - the holder of a copyright on a derivative work can neither grant additional permissions for use of the original work, nor impose more restrictive conditions for use of that work. + Because copyright arises from the creation of a work and not the text or a registration process, removing or altering a copyright notice or associated release terms has no bearing on the existence of the copyright, rather all that is accomplished is to cast doubt upon whatever rights the person making the modifications had to use the material in the first place. Likewise, adding terms and conditions in conflict with the original terms and conditions does not supersede them, rather it casts doubts on the rights of the person making the amendments to use the material and creates confusion as to whether anyone can use the amended version or derivatives thereof. + Finally, releases are generally binding on the material that they are distributed with. This means that if the originator of a work distributes that work with a release granting certain permissions, those permissions apply as stated, without discrimination, to all persons legitimately possessing a copy of the work. That means that having granted a permission, the copyright holder can not retroactively say that an individual or class of individuals are no longer granted those permissions. Likewise should the copyright holder decide to "go commercial" he can not revoke permissions already granted for the use of the work as distributed, though he may impose more restrictive permissions in his future distributions of that work. +• Specific Cases +This section attempts to summarize the position of OpenBSD relative to some commonly encountered copyrights. +Berkeley* +The Berkeley copyright is the model for the OpenBSD copyright. It retains the rights of the copyright holder, while imposing minimal conditions on the use of the copyrighted material. Material with Berkeley copyrights, or copyrights closely adhering to the Berkeley model can generally be included in OpenBSD. +AT&T* +As part of its settlement with AT&T*, Berkeley included an AT&T copyright notice on some of the files in 4.4BSD lite and lite2. The terms of this license are identical to the standard Berkeley license. +Additionally, OpenBSD includes some other AT&T code with non-restrictive copyrights, such as the reference implementation of awk. +Caldera* +Caldera* (now known as the SCO group) is the current owner of the Unix code copyrights. On 23 January 2002, the original Unix code (versions 1 through seven, including 32V) was freed by Caldera. This code is now available under a 4-term BSD-style license. As a result, it is now possible to incorporate real Unix code into OpenBSD (though this code is quite old and generally requires significant changes to bring it up to date). +DEC*, Sun*, other manufacturers/software houses. +In general OpenBSD does not include material copyrighted by manufacturers or software houses. Material may be included where the copyright owner has granted general permission for reuse without conditions, with terms similar to the Berkeley copyright, or where the material is the product of an employee and the employer's copyright notice effectively releases any rights they might have to the work. +Carnegie-Mellon* (CMU, Mach) +The Carnegie-Mellon copyright is similar to the Berkeley copyright, except that it requests that derivative works be made available to Carnegie-Mellon. Because this is only a request and not a condition, such material can still be included in OpenBSD. It should be noted that existing versions of Mach are still subject to AT&T copyrights, which prevents the general distribution of Mach sources. +Apache* +The original Apache* copyright is similar to the Berkeley copyright, except that it stipulates that products derived from the code may not have "Apache" in their name. The purpose of this clause is to avoid a situation in which another party releases a modified version of the code named in such a way to make users think that it is the "official" version. This is not an issue with OpenBSD because OpenBSD is a Compilation, and not a Derived Work. Source code published under version 2 of the Apache license cannot be included into OpenBSD. As a consequence, OpenBSD now maintains its own version of Apache based on version 1.3.29. The OpenBSD version includes many enhancements and bugfixes. +ISC* +The ISC* copyright is functionally equivalent to a two-term BSD copyright with language removed that is made unnecessary by the Berne convention. This is the preferred license for new code incorporated into OpenBSD. A sample license is included in the source tree as /usr/src/share/misc/license.template. +GNU* General Public License, GPL, LGPL, copyleft, etc. +The GNU* Public License and licenses modeled on it impose the restriction that source code must be distributed or made available for all works that are derivatives of the GNU copyrighted code. +While this may be a noble strategy in terms of software sharing, it is a condition that is typically unacceptable for commercial use of software. As a consequence, software bound by the GPL terms can not be included in the kernel or "runtime" of OpenBSD, though software subject to GPL terms may be included as development tools or as part of the system that are "optional" as long as such use does not result in OpenBSD as a whole becoming subject to the GPL terms. +As an example, GCC and other GNU tools are included in the OpenBSD tool chain. However, it is quite possible to distribute a system for many applications without a tool chain, or the distributor can choose to include a tool chain as an optional bundle which conforms to the GPL terms. +NetBSD* +Much of OpenBSD is originally based on and evolved from NetBSD*, since some of the OpenBSD developers were involved in the NetBSD project. The general NetBSD license terms are compatible with the Berkeley license and permit such use. Material subject only to the general NetBSD license can generally be included in OpenBSD. +In the past, NetBSD has included material copyrighted by individuals who have imposed license conditions beyond that of the general NetBSD license, but granted the NetBSD Foundation license to distribute the material. Such material can not be included in OpenBSD as long as the conditions imposed are at odds with the OpenBSD license terms or releases from those terms are offered on a discriminatory basis. +FreeBSD* +Most of FreeBSD* is also based on Berkeley licensed material or includes copyright notices based on the Berkeley model. Such material can be included in OpenBSD, while those parts that are subject to GPL or various individual copyright terms that are at odds with the OpenBSD license can not be included in OpenBSD. +Linux* +Most of Linux* is subject to GPL style licensing terms and therefore can not be included in OpenBSD. Individual components may be eligible, subject to the terms of the originator's copyright notices. Note that Linux "distributions" may also be subject to additional copyright claims of the distributing organization, either as a compilation or on material included that is not part of the Linux core. +X*, XFree86*, X.Org* +X*, X.Org* or XFree86* are not parts of OpenBSD, rather X.Org and parts of XFree86 3.3.6 are distributed with many OpenBSD ports as a convenience to the user, subject to applicable license terms. +Shareware, Charityware, Freeware, etc. +Most "shareware" copyright notices impose conditions for redistribution, use or visibility that are at conflict with the OpenBSD project goals. Review on a case-by-case basis is required as to whether the wording of the conditions is acceptable in terms of conditions being requested vs. demanded and whether the spirit of the conditions is compatible with goals of the OpenBSD project. +Public Domain +While material that is truly entered into the "Public Domain" can be included in OpenBSD, review is required on a case by case basis. Frequently the "public domain" assertion is made by someone who does not really hold all rights under Copyright law to grant that status or there are a variety of conditions imposed on use. For a work to be truly in the "Public Domain" all rights are abandoned and the material is offered without restrictions. + + +FreeBSD* +http://www.freebsd.org/ + +The FreeBSD* Copyright +Copyright 1992-2013 The FreeBSD Project. All rights reserved. +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE FREEBSD PROJECT ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of the FreeBSD Project. + + +NetBSD* +http://www.netbsd.org/ + +/*- + * Copyright (c) 2008 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +________________________________________ +For complete copyright and licensing terms, see: http://www.netbsd.org/about/redistribution.html + + +SQLite* + +http://sqlite.org/ + +SQLite* Copyright + +All of the code and documentation in SQLite has been dedicated to the public domain by the authors. All code authors, and representatives of the companies they work for, have signed affidavits dedicating their contributions to the public domain and originals of those signed affidavits are stored in a firesafe at the main offices of Hwaci. Anyone is free to copy, modify, publish, use, compile, sell, or distribute the original SQLite code, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means. +The previous paragraph applies to the deliverable code and documentation in SQLite - those parts of the SQLite library that you actually bundle and ship with a larger application. Some scripts used as part of the build process (for example the "configure" scripts generated by autoconf) might fall under other open-source licenses. Nothing from these build scripts ever reaches the final deliverable SQLite library, however, and so the licenses associated with those scripts should not be a factor in assessing your rights to copy and use the SQLite library. +All of the deliverable code in SQLite has been written from scratch. No code has been taken from other projects or from the open internet. Every line of code can be traced back to its original author, and all of those authors have public domain dedications on file. So the SQLite code base is clean and is uncontaminated with licensed code from other projects. + + + +Dlmalloc* +Public domain +http://g.oswego.edu/dl/html/malloc.html + +CC0 1.0 Universal + +CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER. +Statement of Purpose +The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work"). +Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. +For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. +1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: +i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; +ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; +iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; +v. rights protecting the extraction, dissemination, use and reuse of data in a Work; +vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and +vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. +2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. +3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. +4. Limitations and Disclaimers. +a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. +b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. +c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. +d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. + + + +STLPort* +http://stlport.org/ + +License Agreement +Boris Fomitchev grants Licensee a non-exclusive, non-transferable, royalty-free license to use STLport* and its documentation without fee. + +By downloading, using, or copying STLport or any portion thereof, Licensee agrees to abide by the intellectual property laws and all other applicable laws of the United States of America, and to all of the terms and conditions of this Agreement. + +Licensee shall maintain the following copyright and permission notices on STLport sources and its documentation unchanged : +Copyright 1999,2000 Boris Fomitchev + +This material is provided "as is", with absolutely no warranty expressed or implied. Any use is at your own risk. +Permission to use or copy this software for any purpose is hereby granted without fee, provided the above notices are retained on all copies. Permission to modify the code and to distribute modified code is granted, provided the above notices are retained, and a notice that the code was modified is included with the above copyright notice. +The Licensee may distribute binaries compiled with STLport (whether original or modified) without any royalties or restrictions. +The Licensee may distribute original or modified STLport sources, provided that: +• The conditions indicated in the above permission notice are met; +• The following copyright notices are retained when present, and conditions provided in accompanying permission notices are met : +Copyright 1994 Hewlett-Packard Company +Copyright 1996,97 Silicon Graphics Computer Systems, Inc. +Copyright 1997 Moscow Center for SPARC Technology. +Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Hewlett-Packard Company makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. +Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Silicon Graphics makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. +Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Moscow Center for SPARC Technology makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. + + + +TinyXML* 2 +https://github.com/leethomason/tinyxml2 + + +The zlib/libpng License +This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + + +OpenSSL* + +http://www.openssl.org/ + + LICENSE ISSUES + ============== + + The OpenSSL* toolkit stays under a dual license, i.e. both the conditions of + the OpenSSL License and the original SSLeay license apply to the toolkit. + See below for the actual license texts. Actually both licenses are BSD-style + Open Source licenses. In case of any license issues related to OpenSSL + please contact openssl-core@openssl.org. + + OpenSSL License + --------------- + +/* ==================================================================== + * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + + Original SSLeay* License + ----------------------- + +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +Pintool* +http://software.intel.com/sites/landingpage/pintool/downloads/pin-2.11-49306-msvc10-ia32_intel64-windows.zip +Intel Pre-Release License Agreement for Pre-Release Software + +IMPORTANT - READ BEFORE COPYING, INSTALLING OR USING. + +Do not copy, install, or use the "Materials" provided under this +license agreement ("Agreement"), until you have carefully read the +following terms and conditions. By copying, installing, or otherwise +using the Materials, you agree to be bound by the terms of this +Agreement. If you do not agree to the terms of this Agreement, do not +copy, install, or use the Materials. + +Pre-Release License Agreement for Pre-Release Software + +1. PRE-RELEASE: The Materials are pre-release code, which may not be +fully functional and which Intel may substantially modify in producing +any final version. Intel can provide no assurance that it will ever +produce or make generally available a final version. + +2. LICENSE DEFINITIONS: + +A. "Materials" are defined as the software, documentation, license key +codes and other materials, including any updates and upgrade thereto, +for the applicable pre-release software (which may be found at +http://whatif.intel.com/), that are provided to you under this +Agreement. + +3. LICENSE GRANT: + +A. Subject to all of the terms and conditions of this Agreement, Intel +Corporation ("Intel") grants to you a non-exclusive, non-assignable +copyright license to make only the minimum number of copies of the +Materials reasonably necessary for your internal testing and +development of your products. + +B. Subject to all of the terms and conditions of this Agreement, Intel +grants to you a non-exclusive, non-assignable copyright license to +modify the Materials that are provided in source code (human readable) +form. + +C. If the Materials include the file named “redist.txt”, then subject to +all of the terms and conditions of this Agreement and any specific +restrictions which may appear in the “redist.txt” file, Intel grants to +you a non-exclusive, non-assignable copyright license to redistribute +the files (unmodified or modified by you) listed in the “redist.txt” +file only as part of the application you develop with the Materials. + +4. LICENSE RESTRICTIONS: + +A. You may not reverse-assemble, reverse-compile, or otherwise reverse-engineer any software provided solely in binary form. + +B. You may not distribute any portion of Materials, whether in source or binary form, to any third party, except as specified in this Agreement. + +5. COPYRIGHT: Title to the Materials and all copies thereof remain +with Intel or its suppliers. The Materials are copyrighted and are +protected by United States copyright laws and international treaty +provisions. You will not remove any copyright notice from the +Materials. You agree to prevent any unauthorized copying of the +Materials. Except as expressly provided herein, Intel does not grant +any express or implied right to you under Intel patents, copyrights, +trademarks, or trade secret information. Subject to Intel’s ownership +of the Materials, all right, title and interest in and to your +modifications shall belong to you. + +6. REPLACEMENTS: The Materials are provided "AS IS" without warranty +of any kind. If the media on which the Materials are furnished are +found to be defective in material or workmanship under normal use for +a period of ninety (90) days from the date of receipt, Intel's entire +liability and your exclusive remedy shall be the replacement of the +media. This offer is void if the media defect results from accident, +abuse, or misapplication. + +7. LIMITATION OF LIABILITY: THE ABOVE REPLACEMENT PROVISION IS THE +ONLY WARRANTY OF ANY KIND. INTEL OFFERS NO OTHER WARRANTY EITHER +EXPRESS OR IMPLIED INCLUDING THOSE OF MERCHANTABILITY, NONINFRINGEMENT +OF THIRD- PARTY INTELLECTUAL PROPERTY OR FITNESS FOR A PARTICULAR +PURPOSE. NEITHER INTEL NOR ITS SUPPLIERS SHALL BE LIABLE FOR ANY +DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF +BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, +OR OTHER LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE +SOFTWARE, EVEN IF INTEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. BECAUSE SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR +LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES, THE +ABOVE LIMITATION MAY NOT APPLY TO YOU. + +8. UNAUTHORIZED USE: THE MATERIALS ARE NOT DESIGNED, INTENDED, OR +AUTHORIZED FOR USE IN ANY TYPE OF SYSTEM OR APPLICATION IN WHICH THE +FAILURE OF THE MATERIALS COULD CREATE A SITUATION WHERE PERSONAL +INJURY OR DEATH MAY OCCUR (E.G MEDICAL SYSTEMS, LIFE SUSTAINING OR +LIFE SAVING SYSTEMS). Should the buyer purchase or use the Materials +for any such unintended or unauthorized use, the buyer shall indemnify +and hold Intel and its officers, subsidiaries and affiliates harmless +against all claims, costs, damages, and expenses, and reasonable +attorney fees arising out of, directly or indirectly, any claim of +product liability, personal injury or death associated with such +unintended or unauthorized use, even if such claim alleges that Intel +was negligent regarding the design or manufacture of the part. + +9. USER SUBMISSIONS: You agree that any material, information or other +communication, including all data, images, sounds, text, and other +things embodied therein, you transmit or post to an Intel website or +provide to Intel under this Agreement will be considered +non-confidential ("Communications"). Intel will have no +confidentiality obligations with respect to the Communications. You +agree that Intel and its designees will be free to copy, modify, +create derivative works, publicly display, disclose, distribute, +license and sublicense through multiple tiers of distribution and +licensees, incorporate and otherwise use the Communications, including +derivative works thereto, for any and all commercial or non-commercial +purposes. + +10. TERMINATION OF THIS LICENSE: The term of this Agreement will +commence on the date this Agreement is accepted by You and will +continue until terminated. This Agreement will terminate without +notice on the last day of the pre-release period, which is specified +elsewhere in the Materials, or upon the commercial release of the +Materials. Intel may terminate this Agreement at any time, with or +without cause, with written notice to you. Upon termination, you will +immediately destroy the Materials or return all copies of the +Materials to Intel along with any copies you have made. + +11. U.S. GOVERNMENT RESTRICTED RIGHTS: The Materials are provided with +"RESTRICTED RIGHTS". Use, duplication or disclosure by the Government +is subject to restrictions set forth in FAR52.227-14 and +DFAR252.227-7013 et seq. or its successor. Use of the Materials by +the Government constitutes acknowledgment of Intel's rights in them. + +12. EXPORT RESTRICTED RIGHTS: This software is subject to the U.S. +Export Administration Regulations and other U.S. law, and may not be +exported or re-exported to certain countries (Burma, Cuba, Iran, North +Korea, Sudan, and Syria) or to persons or entities prohibited from +receiving U.S. exports (including Denied Parties, Specially Designated +Nationals, and entities on the Bureau of Export Administration Entity +List or involved with missile technology or nuclear, chemical or +biological weapons). + +13. APPLICABLE LAWS: Any claim arising under or relating to this +Agreement shall be governed by the internal substantive laws of the +State of Delaware or federal courts located in Delaware, without +regard to principles of conflict of laws. You may not export the +Materials in violation of applicable export laws. + +* Other names and brands may be claimed as the property of others + + +DRNG* +https://software.intel.com/en-us/articles/the-drng-library-and-manual + +Intel Sample Source Code License + +This license governs use of the accompanying software. By installing or +copying all or any part of the software components in this package, you +(“you” or “Licensee”) agree to the terms of this agreement. Do +not install or copy the software until you have carefully read and +agreed to the following terms and conditions. If you do not agree to the +terms of this agreement, promptly return the software to Intel +Corporation (“Intel”). + +1. Definitions: + +A. “Materials" are defined as the software (including the +Redistributables and Sample Source as defined herein), documentation, +and other materials, including any updates and upgrade thereto, that are +provided to you under this Agreement. + +B. "Redistributables" are the files listed in the "redist.txt" file that +is included in the Materials or are otherwise clearly identified as +redistributable files by Intel. + +C. “Sample Source” is the source code file(s) that: (i) +demonstrate(s) certain functions for particular purposes; (ii) are +identified as sample source code; and (iii) are provided hereunder in +source code form. + +D. “Intel’s Licensed Patent Claims” means those claims of +Intel’s patents that (a) are infringed by the Sample Source or +Redistributables, alone and not in combination, in their unmodified +form, as furnished by Intel to Licensee and (b) Intel has the right to +license. + +2. License Grant: Subject to all of the terms and conditions of this +Agreement: + +A. Intel grants to you a non-exclusive, non-assignable, copyright +license to use the Material for your internal development purposes only. + +B. Intel grants to you a non-exclusive, non-assignable copyright license +to reproduce the Sample Source, prepare derivative works of the Sample +Source and distribute the Sample Source or any derivative works thereof +that you create, as part of the product or application you develop using +the Materials. + +C. Intel grants to you a non-exclusive, non-assignable copyright license +to distribute the Redistributables, or any portions thereof, as part of +the product or application you develop using the Materials. + +D. Intel grants Licensee a non-transferable, non-exclusive, worldwide, +non-sublicenseable license under Intel’s Licensed Patent Claims to +make, use, sell, and import the Sample Source and the Redistributables. + +3. Conditions and Limitations: + +A. This license does not grant you any rights to use Intel’s name, +logo or trademarks. + +B. Title to the Materials and all copies thereof remain with Intel. The +Materials are copyrighted and are protected by United States copyright +laws. You will not remove any copyright notice from the Materials. You +agree to prevent any unauthorized copying of the Materials. Except as +expressly provided herein, Intel does not grant any express or implied +right to you under Intel patents, copyrights, trademarks, or trade +secret information. + +C. You may NOT: (i) use or copy the Materials except as provided in this +Agreement; (ii) rent or lease the Materials to any third party; (iii) +assign this Agreement or transfer the Materials without the express +written consent of Intel; (iv) modify, adapt, or translate the Materials +in whole or in part except as provided in this Agreement; (v) reverse +engineer, decompile, or disassemble the Materials not provided to you in +source code form; or (vii) distribute, sublicense or transfer the source +code form of any components of the Materials and derivatives thereof to +any third party except as provided in this Agreement. + +D. Platform Limitation - The licenses granted in section 2 extend only +to the software or derivative works that you create that run directly on +a Microsoft Windows operating system product, Microsoft run-time +technology (such as the .NET Framework or Silverlight), or Microsoft +application platform (such as Microsoft Office or Microsoft Dynamics). + +4. No Warranty: + +THE MATERIALS ARE PROVIDED “AS IS”. INTEL DISCLAIMS ALL EXPRESS OR +IMPLIED WARRANTIES WITH RESPECT TO THEM, INCLUDING ANY IMPLIED +WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, AND FITNESS FOR ANY +PARTICULAR PURPOSE. + +5. LIMITATION OF LIABILITY: NEITHER INTEL NOR ITS SUPPLIERS SHALL BE +LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, +DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF +BUSINESS INFORMATION, OR OTHER LOSS) ARISING OUT OF THE USE OF OR +INABILITY TO USE THE SOFTWARE, EVEN IF INTEL HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. BECAUSE SOME JURISDICTIONS PROHIBIT THE +EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL +DAMAGES, THE ABOVE LIMITATION MAY NOT APPLY TO YOU. + +6. USER SUBMISSIONS: You agree that any material, information or other +communication, including all data, images, sounds, text, and other +things embodied therein, you transmit or post to an Intel website or +provide to Intel under this Agreement will be considered +non-confidential ("Communications"). Intel will have no confidentiality +obligations with respect to the Communications. You agree that Intel and +its designees will be free to copy, modify, create derivative works, +publicly display, disclose, distribute, license and sublicense through +multiple tiers of distribution and licensees, incorporate and otherwise +use the Communications, including derivative works thereto, for any and +all commercial or non-commercial purposes + +7. TERMINATION OF THIS LICENSE: This Agreement becomes effective on the +date you accept this Agreement and will continue until terminated as +provided for in this Agreement. Intel may terminate this license at any +time if you are in breach of any of its terms and conditions. Upon +termination, you will immediately return to Intel or destroy the +Materials and all copies thereof. + +8. U.S. GOVERNMENT RESTRICTED RIGHTS: The Materials are provided with +"RESTRICTED RIGHTS". Use, duplication or disclosure by the Government is +subject to restrictions set forth in FAR52.227-14 and DFAR252.227-7013 +et seq. or its successor. Use of the Materials by the Government +constitutes acknowledgment of Intel's rights in them. + +9. APPLICABLE LAWS: Any claim arising under or relating to this +Agreement shall be governed by the internal substantive laws of the +State of Delaware, without regard to principles of conflict of laws. You +may not export the Materials in violation of applicable export laws. + + + + + + + + + + + +LLVM* + +http://llvm.org/ + +============================================================================== +LLVM Release License +============================================================================== +University of Illinois/NCSA +Open Source License + +Copyright (c) 2003-2016 University of Illinois at Urbana-Champaign. +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +============================================================================== +Copyrights and Licenses for Third Party Software Distributed with LLVM: +============================================================================== +The LLVM software contains code written by third parties. Such software will +have its own individual LICENSE.TXT file in the directory in which it appears. +This file will describe the copyrights, license, and restrictions which apply +to that code. + +The disclaimer of warranty in the University of Illinois Open Source License +applies to all code in the LLVM Distribution, and nothing in any of the +other licenses gives permission to use the names of the LLVM Team or the +University of Illinois to endorse or promote products derived from this +Software. + +The following pieces of software have additional or alternate copyrights, +licenses, and/or restrictions: + +Program Directory +------- --------- +Autoconf llvm/autoconf + llvm/projects/ModuleMaker/autoconf +Google Test llvm/utils/unittest/googletest +OpenBSD regex llvm/lib/Support/{reg*, COPYRIGHT.regex} +pyyaml tests llvm/test/YAMLParser/{*.data, LICENSE.TXT} +ARM contributions llvm/lib/Target/ARM/LICENSE.TXT +md5 contributions llvm/lib/Support/MD5.cpp llvm/include/llvm/Support/MD5.h + + + + + + +ITTNotify* + +Dual BSD/GPLv2 license + + GPL LICENSE SUMMARY + + Copyright (c) 2005-2014 Intel Corporation. All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of version 2 of the GNU General Public License as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. + The full GNU General Public License is included in this distribution + in the file called LICENSE.GPL. + + Contact Information: + http://software.intel.com/en-us/articles/intel-vtune-amplifier-xe/ + + BSD LICENSE + + Copyright (c) 2005-2014 Intel Corporation. All rights reserved. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Intel Corporation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + + +WiX Toolset* + +http://wixtoolset.org/ + +WiX Toolset License +The WiX toolset is released under the Microsoft Reciprocal License (MS-RL). A reciprocal license is used to ensure that others who build on the effort of the WiX community give back to the WiX community. Specifically the license requires that fixes and improvements to the WiX toolset must be published using the same license. +Sometimes the reciprocal license is incorrectly interpreted to also apply to bundles, packages, and custom actions built using the WiX toolset. The Outercurve Foundation has previously provided this statement below to clarify which now the .NET Foundation reaffirms: +The WiX toolset (WiX) is licensed under the Microsoft Reciprocal License (MS-RL). The MS-RL governs the distribution of the software licensed under it, as well as derivative works, and incorporates the definition of a derivative work provided in U.S. copyright law. OuterCurve Foundation (and the .NET Foundation) does not view the installer packages generated by WiX as falling within the definition of a derivative work, merely because they are produced using WiX. Thus, the installer packages generated by WiX will normally fall outside the scope of the MS-RL, and any of your source code, binaries, libraries, routines or other software components that are incorporated in installer packages generated by WiX can be governed by other licensing terms. +The full text of the MS-RL license is reproduced below. It can also be found in the LICENSE.TXT file included with the source code. +Microsoft Reciprocal License (MS-RL) +This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software. +1. Definitions +The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law. +A "contribution" is the original software, or any additions or changes to the software. +A "contributor" is any person that distributes its contribution under this license. +"Licensed patents" are a contributor's patent claims that read directly on its contribution. +2. Grant of Rights +(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create. +(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software. +3. Conditions and Limitations +(A) Reciprocal Grants- For any file you distribute that contains code from the software (in source code or binary format), you must provide recipients the source code to that file along with a copy of this license, which license will govern that file. You may license other files that are entirely your own work and do not contain code from the software under any terms you choose. +(B) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks. +(C) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically. +(D) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software. +(E) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license. +(F) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement. + + + +Microsoft/Windows-universal-samples +https://github.com/Microsoft/Windows-universal-samples +Microsoft/Windows-universal-samples is licensed under the MIT License +https://opensource.org/licenses/MIT +A short and simple permissive license with conditions only requiring preservation of copyright and license notices. Licensed works, modifications, and larger works may be distributed under different terms and without source code. + +The MIT License (MIT) + +Copyright (c) Microsoft Corporation + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +ChakraCore + +https://github.com/Microsoft/ChakraCore + +The MIT License (MIT) + +Copyright (c) Microsoft Corporation +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +FsLexYacc + +https://fsprojects.github.io/FsLexYacc/ + +Apache License + +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + + 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and + + 2. You must cause any modified files to carry prominent notices stating that You changed the files; and + + 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + + 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + +You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +See FAQ for answers to frequently asked questions about this license. + + +The "inih" library is distributed under the New BSD license: + +Copyright (c) 2009, Ben Hoyt +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Ben Hoyt nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY BEN HOYT ''AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL BEN HOYT BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +Legal Information + +No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document. +Intel disclaims all express and implied warranties, including without limitation, the +implied warranties of merchantability, fitness for a particular purpose, and noninfringement, as well as any warranty arising from course of performance, course of dealing, or usage in trade. +This document contains information on products, services and/or processes in +development. All information provided here is subject to change without notice. +Contact your Intel representative to obtain the latest forecast, schedule, specifications and roadmaps. +The products and services described may contain defects or errors known as errata +which may cause deviations from published specifications. Current characterized +errata are available on request. +Intel technologies features and benefits depend on system configuration and may +require enabled hardware, software or service activation. Learn more at Intel.com, or +from the OEM or retailer. +Copies of documents which have an order number and are referenced in this document may be obtained by calling 1-800-548-4725 or by visiting www.intel.com/design/literature.htm. +Intel, the Intel logo, Xeon, and Xeon Phi are trademarks of Intel Corporation in the +U.S. and/or other countries. + +Optimization Notice +Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice. + +Notice revision #20110804 +* Other names and brands may be claimed as the property of others. + Copyright 2014-2019 Intel Corporation. +This software and the related documents are Intel copyrighted materials, and your use of them is governed by the express license under which they were provided to you (License). Unless the License provides otherwise, you may not use, modify, copy, publish, distribute, disclose or transmit this software or the related documents without Intel's prior written permission. This software and the related documents are provided as is, with no express or implied warranties, other than those that are expressly stated in the License. + + diff --git a/tools/PCKRetrievalTool/installer/deb/sgx-pck-id-retrieval-tool/sgx-pck-id-retrieval-tool-1.0/debian/control b/tools/PCKRetrievalTool/installer/deb/sgx-pck-id-retrieval-tool/sgx-pck-id-retrieval-tool-1.0/debian/control index 39395d44..b3e2fe86 100644 --- a/tools/PCKRetrievalTool/installer/deb/sgx-pck-id-retrieval-tool/sgx-pck-id-retrieval-tool-1.0/debian/control +++ b/tools/PCKRetrievalTool/installer/deb/sgx-pck-id-retrieval-tool/sgx-pck-id-retrieval-tool-1.0/debian/control @@ -9,6 +9,6 @@ Homepage: https://github.com/intel/SGXDataCenterAttestationPrimitives Package: sgx-pck-id-retrieval-tool Architecture: amd64 Depends: ${shlibs:Depends}, ${misc:Depends} -Recommends: libsgx-urts (>= 2.13), libsgx-ae-pce (>= @dep_version@),libsgx-ae-id-enclave (>=@dep_version@), libsgx-ra-uefi (>= @dep_version@) +Recommends: libsgx-urts (>= 2.17), libsgx-ae-pce (>= @dep_version@),libsgx-ae-id-enclave (>=@dep_version@), libsgx-ra-uefi (>= @dep_version@) Description: Intel(R) Software Guard Extensions: this tool is used to collect the platform information to retrieve the PCK certs from PCS(Provisioning Certification Server) diff --git a/tools/PCKRetrievalTool/installer/rpm/sgx-pck-id-retrieval-tool/sgx-pck-id-retrieval-tool.spec b/tools/PCKRetrievalTool/installer/rpm/sgx-pck-id-retrieval-tool/sgx-pck-id-retrieval-tool.spec index a5bf45d8..53bf720a 100644 --- a/tools/PCKRetrievalTool/installer/rpm/sgx-pck-id-retrieval-tool/sgx-pck-id-retrieval-tool.spec +++ b/tools/PCKRetrievalTool/installer/rpm/sgx-pck-id-retrieval-tool/sgx-pck-id-retrieval-tool.spec @@ -37,7 +37,7 @@ Version: @version@ Release: 1%{?dist} Summary: Intel(R) Software Guard Extensions:this tool is used to collect the platform information to retrieve the PCK certs from PCS(Provisioning Certification Server) Group: Development/System -Recommends: libsgx-urts >= 2.13, libsgx-ae-pce >= %{version}-%{release}, libsgx-ae-id-enclave >= %{version}-%{release},libsgx-ra-uefi >= %{version}-%{release} +Recommends: libsgx-urts >= 2.17, libsgx-ae-pce >= %{version}-%{release}, libsgx-ae-id-enclave >= %{version}-%{release},libsgx-ra-uefi >= %{version}-%{release} License: BSD License URL: https://github.com/intel/SGXDataCenterAttestationPrimitives diff --git a/tools/PCKRetrievalTool/network_setting.conf b/tools/PCKRetrievalTool/network_setting.conf index afa2f732..cb3e52b7 100644 --- a/tools/PCKRetrievalTool/network_setting.conf +++ b/tools/PCKRetrievalTool/network_setting.conf @@ -1,9 +1,9 @@ # ############################################################# # PCCS server address -# support V2 version PCCS -#PCCS_URL=https://localhost:8081/sgx/certification/v2/platforms # support V3 version PCCS #PCCS_URL=https://localhost:8081/sgx/certification/v3/platforms +# support V4 version PCCS +#PCCS_URL=https://localhost:8081/sgx/certification/v4/platforms # To accept insecure HTTPS cert, set this option to FALSE #USE_SECURE_CERT=TRUE ############################################################### diff --git a/tools/PccsAdminTool/License.txt b/tools/PccsAdminTool/License.txt new file mode 100644 index 00000000..49fbc89b --- /dev/null +++ b/tools/PccsAdminTool/License.txt @@ -0,0 +1,77 @@ +BSD License + +Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Intel Corporation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +============================================================== + +pce.signed.dll, qve.signed.dll and qe3.signed.dll, libsgx_pce.signed.so, +libsgx_qve.signed.so and libsgx_qe3.signed.so are licensed as Intel +redistributable binary firmware and other blobs. + + +Copyright (c) Intel Corporation. + +Redistribution. Redistribution and use in binary form, without +modification, are permitted provided that the following conditions are +met: + +* Redistributions must reproduce the above copyright notice and the + following disclaimer in the documentation and/or other materials + provided with the distribution. +* Neither the name of Intel Corporation nor the names of its suppliers + may be used to endorse or promote products derived from this software + without specific prior written permission. +* No reverse engineering, decompilation, or disassembly of this software + is permitted. + +Limited patent license. Intel Corporation grants a world-wide, +royalty-free, non-exclusive license under patents it now or hereafter +owns or controls to make, have made, use, import, offer to sell and +sell ("Utilize") this software, but solely to the extent that any +such patent is necessary to Utilize the software alone, or in +combination with an operating system licensed under an approved Open +Source license as listed by the Open Source Initiative at +http://opensource.org/licenses. The patent license shall not apply to +any other combinations which include this software. No hardware per +se is licensed hereunder. + +DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + diff --git a/tools/PccsAdminTool/lib/intelsgx/pcs.py b/tools/PccsAdminTool/lib/intelsgx/pcs.py index ef7dbf3c..cb9e65f9 100644 --- a/tools/PccsAdminTool/lib/intelsgx/pcs.py +++ b/tools/PccsAdminTool/lib/intelsgx/pcs.py @@ -40,6 +40,8 @@ def api_version(self): def _geturl(self, func, type='sgx'): if type == 'sgx': return urllib.parse.urljoin(self.BaseUrl, func) + elif type == 'tdx': + return urllib.parse.urljoin(self.BaseUrl.replace('/sgx/', '/tdx/'), func) else: raise Exception('Internal error!') @@ -596,7 +598,10 @@ def get_tcb_info(self, fmspc, type, dec=None): def get_enclave_identity(self, name, dec=None): self.clear_errors() - url= self._geturl(name + '/identity', 'sgx') + if name == 'tdqe': + url= self._geturl('qe/identity', 'tdx') + else: + url= self._geturl(name + '/identity', 'sgx') response= self._get_request(url, False) if response.status_code != 200: diff --git a/tools/PccsAdminTool/pccsadmin.py b/tools/PccsAdminTool/pccsadmin.py index 2bcfee0e..d31b5afc 100755 --- a/tools/PccsAdminTool/pccsadmin.py +++ b/tools/PccsAdminTool/pccsadmin.py @@ -21,7 +21,7 @@ def main(): # subparser for get parser_get = subparsers.add_parser('get', formatter_class=argparse.RawTextHelpFormatter) # add optional arguments for get - parser_get.add_argument("-u", "--url", help="The URL of the PCCS's GET platforms API; default: https://localhost:8081/sgx/certification/v3/platforms") + parser_get.add_argument("-u", "--url", help="The URL of the PCCS's GET platforms API; default: https://localhost:8081/sgx/certification/v4/platforms") parser_get.add_argument("-o", "--output_file", help="The output file name for platform list; default: platform_list.json") parser_get.add_argument("-s", "--source", help= "reg - Get platforms from registration table.(default)\n" @@ -32,14 +32,14 @@ def main(): # subparser for put parser_put = subparsers.add_parser('put') # add optional arguments for put - parser_put.add_argument("-u", "--url", help="The URL of the PCCS's PUT collateral API; default: https://localhost:8081/sgx/certification/v3/platformcollateral") + parser_put.add_argument("-u", "--url", help="The URL of the PCCS's PUT collateral API; default: https://localhost:8081/sgx/certification/v4/platformcollateral") parser_put.add_argument("-i", "--input_file", help="The input file name for platform collaterals; default: platform_collaterals.json") parser_put.set_defaults(func=pccs_put) # subparser for fetch parser_fetch = subparsers.add_parser('fetch') # add optional arguments for fetch - parser_fetch.add_argument("-u", "--url", help="The URL of the Intel PCS service; default: https://api.trustedservices.intel.com/sgx/certification/v3/") + parser_fetch.add_argument("-u", "--url", help="The URL of the Intel PCS service; default: https://api.trustedservices.intel.com/sgx/certification/v4/") parser_fetch.add_argument("-i", "--input_file", help="The input file name for platform list; default: platform_list.json") parser_fetch.add_argument("-o", "--output_file", help="The output file name for platform collaterals; default: platform_collaterals.json") parser_fetch.set_defaults(func=pcs_fetch) @@ -54,7 +54,7 @@ def main(): # subparser for refresh parser_refresh = subparsers.add_parser('refresh') # add optional arguments for refresh - parser_refresh.add_argument("-u", "--url", help="The URL of the PCCS's refresh API; default: https://localhost:8081/sgx/certification/v3/refresh") + parser_refresh.add_argument("-u", "--url", help="The URL of the PCCS's refresh API; default: https://localhost:8081/sgx/certification/v4/refresh") parser_refresh.add_argument("-f", "--fmspc", help="Only refresh certificates for specified FMSPCs. Format: [FMSPC1, FMSPC2, ..., FMSPCn]") parser_refresh.set_defaults(func=pccs_refresh) @@ -80,7 +80,7 @@ def is_file_writable(filename): def pccs_get(args): try : - url = "https://localhost:8081/sgx/certification/v3/platforms" + url = "https://localhost:8081/sgx/certification/v4/platforms" if args.url: url = args.url output_file = "platform_list.json" @@ -115,7 +115,7 @@ def pccs_get(args): def pccs_put(args): try : - url = "https://localhost:8081/sgx/certification/v3/platformcollateral" + url = "https://localhost:8081/sgx/certification/v4/platformcollateral" if args.url: url = args.url input_file = "platform_collaterals.json" @@ -148,7 +148,7 @@ def pccs_put(args): print(e) def get_api_version_from_url(url): - version = 3 + version = 4 regex = re.compile('/v[1-9][0-9]*/') match = regex.search(url) if match is not None: @@ -159,8 +159,8 @@ def get_api_version_from_url(url): def pcs_fetch(args): try : - url = 'https://api.trustedservices.intel.com/sgx/certification/v3/' - ApiVersion = 3 + url = 'https://api.trustedservices.intel.com/sgx/certification/v4/' + ApiVersion = 4 if args.url: url = args.url @@ -192,11 +192,13 @@ def pcs_fetch(args): output_json={} output_json["platforms"] = plaformlist output_json["collaterals"] = { + "version" : ApiVersion, "pck_certs" : [], "tcbinfos" : [], "pckcacrl" : { }, "qeidentity" : "", + "tdqeidentity" : "", "qveidentity" : "", "certificates" : { PCS.HDR_PCK_Certificate_Issuer_Chain: {}, @@ -235,7 +237,7 @@ def pcs_fetch(args): # set pck-certificate-issuer-chain ca = sgxext.get_ca() if ca is None: - print("Wrong certificate format!") + print("Wrong PCK certificate format!") return pckchain = output_json["collaterals"]["certificates"][PCS.HDR_PCK_Certificate_Issuer_Chain] @@ -277,10 +279,18 @@ def pcs_fetch(args): sgx_tcbinfo = pcsclient.get_tcb_info(fmspc, 'sgx', 'ascii') tcbinfoJson = {"fmspc" : fmspc} if sgx_tcbinfo != None: - tcbinfoJson['tcbinfo'] = json.loads(sgx_tcbinfo[0]) + if ApiVersion >= 4: + tcbinfoJson['sgx_tcbinfo'] = json.loads(sgx_tcbinfo[0]) + else: + tcbinfoJson['tcbinfo'] = json.loads(sgx_tcbinfo[0]) else: print("Failed to get SGXtcbinfo for FMSPC:%s" %(fmspc)) return + # TDX tcbinfo is optional + if ApiVersion >= 4: + tdx_tcbinfo = pcsclient.get_tcb_info(fmspc, 'tdx', 'ascii') + if tdx_tcbinfo != None: + tcbinfoJson['tdx_tcbinfo'] = json.loads(tdx_tcbinfo[0]) output_json["collaterals"]["tcbinfos"].append(tcbinfoJson) if output_json["collaterals"]["certificates"][PCS.HDR_TCB_INFO_ISSUER_CHAIN] == '': output_json["collaterals"]["certificates"][PCS.HDR_TCB_INFO_ISSUER_CHAIN] = sgx_tcbinfo[1] @@ -307,6 +317,14 @@ def pcs_fetch(args): output_json["collaterals"]["qeidentity"] = qe_identity[0] output_json["collaterals"]["certificates"][PCS.HDR_Enclave_Identity_Issuer_Chain] = qe_identity[1] + # output.collaterals.tdqeidentity (Api Version >= 4) + if ApiVersion >= 4: + tdqe_identity = pcsclient.get_enclave_identity('tdqe', 'ascii') + if tdqe_identity == None: + print("Failed to get TDQE identity") + return + output_json["collaterals"]["tdqeidentity"] = tdqe_identity[0] + # output.collaterals.qveidentity qve_identity = pcsclient.get_enclave_identity('qve', 'ascii') if qve_identity == None: @@ -363,7 +381,7 @@ def pcs_collect(args): def pccs_refresh(args): try : - url = "https://localhost:8081/sgx/certification/v3/refresh" + url = "https://localhost:8081/sgx/certification/v4/refresh" if args.url: url = args.url fmspc = None diff --git a/tools/SGXPlatformRegistration/inf/inf_build.cmd b/tools/SGXPlatformRegistration/inf/inf_build.cmd index 9a448d07..bcb0abfe 100644 --- a/tools/SGXPlatformRegistration/inf/inf_build.cmd +++ b/tools/SGXPlatformRegistration/inf/inf_build.cmd @@ -62,7 +62,7 @@ IF /I "%ERRORLEVEL%" NEQ "0" ( ) echo: echo ========= Creating The Catalog File ============== -%INF2CAT% /driver:%DST_DIR% /os:10_x64 /VERBOSE +%INF2CAT% /driver:%DST_DIR% /os:10_x64 /uselocaltime /VERBOSE IF /I "%ERRORLEVEL%" NEQ "0" ( goto exit )

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%0DXZbZ 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�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