<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/113143>113143</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang crashes on valid code at -O2 on x86_64-linux-gnu: Assertion `TEPtr->UserTreeIndices.size() == 1 && "Expected only single user of a gather node."' failed
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
zhendongsu
</td>
</tr>
</table>
<pre>
It appears to be a recent regression as it doesn't reproduce with 19.1.0 and earlier.
Compiler Explorer: https://godbolt.org/z/a1W3c5ard
```
[523] % clangtk -v
clang version 20.0.0git (https://github.com/llvm/llvm-project.git df8b785838a2db01b4d056e603f7317209accefb)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/suz-local/software/local/clang-trunk/bin
Build config: +assertions
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/10
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11
Candidate multilib: .;@m64
Selected multilib: .;@m64
[524] %
[524] % clangtk -O2 small.c
clang-20: /local/suz-local/software/clangbuild/llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:12559: std::optional<llvm::TargetTransformInfo::ShuffleKind> llvm::slpvectorizer::BoUpSLP::isGatherShuffledSingleRegisterEntry(const llvm::slpvectorizer::BoUpSLP::TreeEntry*, llvm::ArrayRef<llvm::Value*>, llvm::MutableArrayRef<int>, llvm::SmallVectorImpl<const llvm::slpvectorizer::BoUpSLP::TreeEntry*>&, unsigned int, bool): Assertion `TEPtr->UserTreeIndices.size() == 1 && "Expected only single user of a gather node."' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: /local/suz-local/software/local/clang-trunk/bin/clang-20 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -dumpdir a- -disable-free -clear-ast-before-backend -main-file-name small.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/local/suz-local/software/emitesting/bugs/20241020-clangtk-m64-O2-build-231331/delta -fcoverage-compilation-dir=/local/suz-local/software/emitesting/bugs/20241020-clangtk-m64-O2-build-231331/delta -resource-dir /local/suz-local/software/local/clang-trunk/lib/clang/20 -I /usr/local/include -I /local/suz-local/software/local/include -internal-isystem /local/suz-local/software/local/clang-trunk/lib/clang/20/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcolor-diagnostics -vectorize-loops -vectorize-slp -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/small-572b89.o -x c small.c
1. <eof> parser at end of file
2. Optimizer
3. Running pass "function<eager-inv>(float2int,lower-constant-intrinsics,loop(loop-rotate<header-duplication;no-prepare-for-lto>,loop-deletion),loop-distribute,inject-tli-mappings,loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,infer-alignment,loop-load-elim,instcombine<max-iterations=1;no-verify-fixpoint>,simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,slp-vectorizer,vector-combine,instcombine<max-iterations=1;no-verify-fixpoint>,loop-unroll<O2>,transform-warning,sroa<preserve-cfg>,infer-alignment,instcombine<max-iterations=1;no-verify-fixpoint>,loop-mssa(licm<allowspeculation>),alignment-from-assumptions,loop-sink,instsimplify,div-rem-pairs,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;speculate-unpredictables>)" on module "small.c"
4. Running pass "slp-vectorizer" on function "main"
#0 0x0000560576c8b9af llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x43f29af)
#1 0x0000560576c89184 SignalHandler(int) Signals.cpp:0:0
#2 0x00007f4623c27420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#3 0x00007f462365e00b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#4 0x00007f462363d859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
#5 0x00007f462363d729 get_sysdep_segment_value /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:509:8
#6 0x00007f462363d729 _nl_load_domain /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:970:34
#7 0x00007f462364efd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#8 0x0000560578707edc llvm::slpvectorizer::BoUpSLP::isGatherShuffledSingleRegisterEntry(llvm::slpvectorizer::BoUpSLP::TreeEntry const*, llvm::ArrayRef<llvm::Value*>, llvm::MutableArrayRef<int>, llvm::SmallVectorImpl<llvm::slpvectorizer::BoUpSLP::TreeEntry const*>&, unsigned int, bool) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5e6eedc)
#9 0x0000560578708cd8 llvm::slpvectorizer::BoUpSLP::isGatherShuffledEntry(llvm::slpvectorizer::BoUpSLP::TreeEntry const*, llvm::ArrayRef<llvm::Value*>, llvm::SmallVectorImpl<int>&, llvm::SmallVectorImpl<llvm::SmallVector<llvm::slpvectorizer::BoUpSLP::TreeEntry const*, 6u>>&, unsigned int, bool) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5e6fcd8)
#10 0x000056057870a6f3 llvm::InstructionCost llvm::slpvectorizer::BoUpSLP::processBuildVector<llvm::slpvectorizer::BoUpSLP::ShuffleCostEstimator, llvm::InstructionCost, llvm::TargetTransformInfo, llvm::ArrayRef<llvm::Value*>, llvm::slpvectorizer::BoUpSLP, llvm::SmallPtrSetImpl<llvm::Value*>>(llvm::slpvectorizer::BoUpSLP::TreeEntry const*, llvm::Type*, llvm::TargetTransformInfo&, llvm::ArrayRef<llvm::Value*>&, llvm::slpvectorizer::BoUpSLP&, llvm::SmallPtrSetImpl<llvm::Value*>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5e716f3)
#11 0x000056057870cde7 llvm::slpvectorizer::BoUpSLP::getEntryCost(llvm::slpvectorizer::BoUpSLP::TreeEntry const*, llvm::ArrayRef<llvm::Value*>, llvm::SmallPtrSetImpl<llvm::Value*>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5e73de7)
#12 0x0000560578745f69 llvm::slpvectorizer::BoUpSLP::getTreeCost(llvm::ArrayRef<llvm::Value*>) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5eacf69)
#13 0x000056057874b57b (anonymous namespace)::HorizontalReduction::tryToReduce(llvm::slpvectorizer::BoUpSLP&, llvm::DataLayout const&, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo const&) SLPVectorizer.cpp:0:0
#14 0x000056057874eb79 llvm::SLPVectorizerPass::vectorizeHorReduction(llvm::PHINode*, llvm::Instruction*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&, llvm::SmallVectorImpl<llvm::WeakTrackingVH>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5eb5b79)
#15 0x000056057875349b llvm::SLPVectorizerPass::vectorizeRootInstruction(llvm::PHINode*, llvm::Instruction*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (.constprop.0) SLPVectorizer.cpp:0:0
#16 0x0000560578757d50 llvm::SLPVectorizerPass::vectorizeChainsInBlock(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5ebed50)
#17 0x000056057875e590 llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) (.part.0) SLPVectorizer.cpp:0:0
#18 0x000056057875f263 llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5ec6263)
#19 0x00005605781e0e66 llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5947e66)
#20 0x0000560576614891 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x3d7b891)
#21 0x000056057410e656 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x1875656)
#22 0x00005605766131fd llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x3d7a1fd)
#23 0x000056057410d196 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x1874196)
#24 0x0000560576612c31 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x3d79c31)
#25 0x0000560576f44dd3 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile>>&, clang::BackendConsumer*) BackendUtil.cpp:0:0
#26 0x0000560576f483a8 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x46af3a8)
#27 0x000056057764462c clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x4dab62c)
#28 0x000056057951629c clang::ParseAST(clang::Sema&, bool, bool) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x6c7d29c)
#29 0x0000560577644a48 clang::CodeGenAction::ExecuteAction() (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x4daba48)
#30 0x000056057790d3d9 clang::FrontendAction::Execute() (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x50743d9)
#31 0x00005605778895ce clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x4ff05ce)
#32 0x00005605779f9f26 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5160f26)
#33 0x0000560573cd1fe5 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x1438fe5)
#34 0x0000560573cc9afa ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#35 0x0000560573cce52e clang_main(int, char**, llvm::ToolContext const&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x143552e)
#36 0x0000560573bba67b main (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x132167b)
#37 0x00007f462363f083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#38 0x0000560573cc958e _start (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x143058e)
clangtk: error: unable to execute command: Aborted
clangtk: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 20.0.0git (https://github.com/llvm/llvm-project.git df8b785838a2db01b4d056e603f7317209accefb)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/suz-local/software/local/clang-trunk/bin
Build config: +assertions
clangtk: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clangtk: note: diagnostic msg: /tmp/small-d99d4e.c
clangtk: note: diagnostic msg: /tmp/small-d99d4e.sh
clangtk: note: diagnostic msg:
********************
[525] %
[525] % cat small.c
int a, b, c, d, e, f;
int main() {
for (f = 0; f < 4; f++) {
d &= (((a > 0) != b) != c) && b;
for (b = 0; b < 1; b++)
if (e)
break;
}
return 0;
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsXNtz4yiX_2vULxQuCV0sPeTBsePp1PZ8nUoyM48uBEc2XyTQAspl_votkOxYtrs76SRf705tVcYtcTnXH4cDgqHGiLUEOAvS8yBdfKKd3Sh99vcGJFdybbpPpeJPZ5cW0bYFqg2yCpWAKNLAQFqkYa3BGKEkogYJi7gCIwMydVWtVrxjgB6E3aComESTEFHJEVBdC9ATFISLIJz1v3PVtKIGjS4e21pp0EE8QxtrWxPEs4AsA7JcK16q2k6UXgdk-XdAljT6K2Yp1XyfUpCFw1__mp6nJA7SBQpIilhN5dreIXzf1_p3dA_a60DCSTgJ18KigOQHzIXddOWEqSYgy7q-3_6DW63-DcxOXC9e5eU0T_M4p4SXYVQmPEwzyMK4msbRlIQFZQyqMiBFz_6W6jVYp-pjnq2yBHfyTqoHiWshu0e8lt3QbqOBctQoDrVr3SojHvuqS2ksrWvgC-Ft5uRSjNYBWZrub7x7VpV9oBr2qr3u2OpO3gVkWQrZEzzvRM0RU7IS657gOTUGtBVKmr7JUnWSI0YlF5xaQL_N50j0clDXbJCjM9qxE6WzH2MBWQ5aPmtHllH4ATSj96c5eOwGamAW-LvIN99J1nS1Fa5XPEOTID4PkrDJkgOW32vkYZ5sYX6qbAf9rwSZhtb1hO2NAUzCl6HHty4dRg5GwN648NrfaipNpXRjArL8E5hVWvztKNx8udq96glr2yCeRSRNCyeAsdyNuXimWmdVWgfx3JP1hf142VG-lJXqK242XVXV8F9C8iC-QM89TN3e75j1Refqj_bmy1X_Isxv1G5ADwT4jZDrGq5hLYwFfSGtfgpIzpQ09hVUbzXA0HcWkPlez5nW9OkaqpFaf9K6A9c0vhi3_r2ztKxhr5OQ9qjVjfNmb9LLpnUWe5O8jnzmOHTSTw8cOaZkjkqlahe64hmabSMCCrLw9uLKahzEF38Y0I7UpeSCgZkY7_A8IAUK4kUQL1CEPO0MBYRcPLY9rpWsn5DxhkedAY1UhShae78gqThMAkICMkUVFTXwSQ_bqy8Xs5sLZLqyERZRVHZrN-kobd0s9broHZClMKYDB1U_RwnJ6o4DshtATFOzQSVld1ZTBs4SrZ_dGBgDHBnV6b7Y9aTGKCao00t3EhmmRWsHkW8sZXeId42DfF8UToKwuNJqrWmDqF53DUhr3hrIt2UkRJixCGGrRVvDN2cZhKERFqvy3wg78bjQiGKEuTAOf7jSAAizGqjG1FhcQqU0YGcTkBzhhgqJK1EDlrSBbXhBuNHghHRAwX7yQq1gCLeC4RruoUakfxEGtwIQbipNG8CtEtI6oC6kkoBw1VC7waC1VAhXVYuZks4XNogXSiJcSYW1i_VCrrFri3Djh4DuHOgxrQU1YBCuOvkgJMd-VJkgXhCErY8pmLWdMw_OEoRtJ8EXrEGCdhJzKLv1GrSrEnIdxIs1LxGufDlmPnnp1eRuGl782HnO4GCsI0aWZbd20CMhSaKQhHiI1bjJEvyVYB9uMYmjOI4CsuRQW4pwxdQ9aLqGX8RfQ498x_Kn0drPFb7MC4Dw5d40OnTZjsa-7oV8dp08liStsTBPxkLzbrL-iMk3lPhO0x-mDWQ5mRz_nGh7zA0e3QM75jo0PUHn-71fz8LnHrgCrZXGtXBxOyoQrtayY3hIwoN4kUzIJEK4MneixYprzDbA7rCQeN1UHve10pgLupbKWMEMwrvZDddKtaMCU7cIV5RzbcQa4cVq9dt8vvo8-_Nitfhrdr0kq_nycjW7-T2IFxHCykltm9YBwoUxnE5JmRcThfAjYuPMKXLBO4jnoCqXdbRUu9mLWuSCoqqQi4h9S-Jafm2taPwM7MtiV3bdSRdQUEuNcZNi1UnWp5NzoC7gCHnvZ-S8qhW1pJ-Ka_UAGvsQR6V1DtBCGsGMr1NtQHL3D9bKUgtBPN8A5aAx79pasCFfPZcKu4mMasCVc4hVfWrhu3Kowbcjxa5IGKtF2Vk32QnpJk5sa4Eb2rZCrrfMn20fxHOpenjUQO89GwYcuwm_5__spnFVL4iQFfjovZZuWtzSrxXlGGrR-CbGMtWUQjpuDX3EwoKm_WIlXkRbNlpUT7gSj35q6akb0bS1qJ5YtQ7iealkZ7Ajh-1Gg9momg8EKqUfqObYPAjLNs7sPIjPhzdN5RqwVVgwN61vi61ySLzr2l6AO4C2h2YQn2-UMNYF7UZJz9H0jfpyp53BxioNBru1s2eIK-qyfzf1nBsh7w67mxZYV1MLuKwVu_NFg359_1JTyTY9o-fGnWw1cMG2E6K3S73nQh2Qef-Ct2Z-k9G9AzupVe3y1K-kL7XbjB4_UO0nWDI3WtEgnrcaDOh7wN5Np1HxVnkaY6gbMoI1QTynda0etibyI-WiHwQ7lrjSqsHUmK5peyYDIeeZQZ6t9QMy5-Iea2hwS4V2TS0VNXNr9h7CL8ahVPhVUHSePkbjCIo71B3A6aVQdCzehMbvQrEICEFKokbxrgYXHrfhl5A-hianYughgD2NbWB1DVy6uiOBAhKHKHwMwzBMszCdZiwvC1rtL5-eTP9wpYW0Pou_7ZcC-XMjTR9WylgNtBnWTz5WF8ivgN4jlw_IefiYxBUpaLXbQnLiRwfiF1GeoBuxlrT-TCWvnRHyQZq-2Azr7tD_tyNEBkLTKslIzMg0ISFarTR4DKy03SrjE5UTaUctytb6zaqJUZNe4ihJnOx78sYjNlkKYVgiTYVxPl5uNxfWtSgZ_sIuSfi4eyUTn4Iar8U2_zFPhkPrMthOise-4N5LIzv36klPWBDP0iiIZ9GzJMlYkpjnaYFoqbymL5PE8t4avpdnkjsm02cm6SGTKSnQGuyql3tlYO2iyuqe1t2LLSCkrT1uKG_MmtGederykVn-zDs7xXsl65XruOLKDYW3sSymDkRx8sxzOuaZQMWzFwCHOchkHjJxXPFsBJl8H-L5NJwCZ---zfMTGybIJ2G_aJvnTfL-aJvnneNWChkAZyOnFgdOzRnP3-DUX-3GYwdt3Zi93JN7dW_1MJmjrHP8__OurhjPd652M1R44GqaVfGeRS6HzRqh5Fy9auty2IfzXy1-wmwDdhzTC2NFQx2BkbMORBtXntqQfgOCviPtMYCurL4BewSgfeJ-4fh-w-H2qYXjwlMmyF5rhezlhjg1mF5gC9fv_ZE-jbIqHiE9OkA64zB9BZ7XYL0Leqz92lj266wac5iOrErGVk3SKiteZ1VnnyOj_tgo768cZVVWjJSLD5Qr02np2FKp5FOjOoMkbcC0fslR9EJ-droqaWl9Dbwb9oxchdVPt8qXwUvxczikFtTSL_RJdXaLpewFY_5kXPgiSk31k2uxR6tApz4C7i1GnFWSA6tAOd13-YjCFTXDEm2n42elny2zb4irz5f_Uvw4kO0F-qO6c2oEO3dr2aOq14aqb8z7fwH1i8o7Idd_fv64oVWm5XSMvnRs5zROivIVdr5Wyo5M98tM7Y018ShrtWrd8vNFQMsODDDlafgKA8w3VEhzKQeZ83dT5X39DjwNR36fHqgNafECtXUnPXb39VxuN62PAM9oTfXFvaq7k77-qThyPLPNrsF0tTVHNV-Uak92WahGSJfruVnhmOBuZ29O2ea4fgENlRz4uTjBc9jl91uH19BQfXfRCGtB-5Y9Rluq7YvhebD0TSuSxS_y08t8NJO0fjLC_E4lXcM4e951-rBwxDKSjfOn8aIwghCybE9cDpaKeggv1Jjf-zNRp4QeQ_HITD9lBff3f8e8RTKFLNs3LxlvdWZRkhfRnrjepN8T9Z9vtZhPy7yIRlYbJfVJFEKWvgcoP8za_3wvRfk0zdIxtskBtuOo4vvbbP4zwq3aiuasP-O09XsGpxTvO7xK7aHLx0GTRhUfKR0fQJNHxeugudVy_kJT_YQtvoWs_3UGjvJpEhVjVCUHqCIsfknEPGXWf5i1Yj4tWDyOlKPVRFYlCefxj9ayLkGaGQNNWT99hrrdZsTXndzPpq5EC7X_Ap33h3CGJNsfQpvtAubuCGknxX93sGrt2CaaPqzaBy0srLaf6_Y6cfCfN1f-_AP8oOP-3uqP2N4qVX_tbNvZpehx8RKeB732GR7bYK6k6ZpdpjmU_mFFfTKzJNmBr_KY5vtknV8GIr0MY8svnk_gXMi1d8yhYJ_9uZMboJptvvbfykdbCntN54rDbyB_0KpfDfyg0Rcq16ea7GWDVgu5vobqVNgbUvrvYWx_KWt1Z8Q9XEM1l_bqwOv31ZCPO_fd-GNRw_z8n4fpCyDzzt-qM1rFdPQhgIxWndMsSTLCvidXDyP_FduvE_szGX9IcQDG2c3tXEkLj_ZDQl3CaZkRNlJltDAr0igjxUiVK6oNzG5ux4LeQEMHPPafXz7qM0zGppwUY5GLQ-vTJD8xCGd7-4kXj8A6C1vs5x9jW5qMYDI-kTEtQh7zYl_QpXbO3g3JfUk_RMY0nCYxH22cjY9dTPO8SBmMjdnfafJXdCSD0_b8tlIfguOqCtN-6t3pQca2roqKZKNpoJf4WZ374Uz3WPojdT8ipKRRFlZklKDFoww4ZjyqIEWMRav-nM_p7X62oXr8MXyOxmVkju6V4B-iRpTEeQXpSI1krAYraEXR1vbz6NYHifx7u8nHOh3u2ytVD1FytBvPtbj_xvZTnB6IBSkZUL617_Ax2XH3xjrcwPsG03e3aJqSMbBH-U1cljSblmg48fKuvGMSZdNyxPvgEExchXmMVqtalGxlLNV29ZqjN8x028NO_aOv9HT8IZw4Ie73mX1-CKY0B9Qzfn_Dh2n-bPjh7kAQz5A_6O0eOknLGpBVCHo8I6aahkru7xKVSlvg3-7dX9KshuC47TrcBkK884T7E2FOt84Awve-DACJvWhV_P-lz5-_9LnnGalcyjlDz0fwUWP6fgMA3_C3d5V3uOI1u72dzT-j288XaPn1y5evf13-6ze0vPxycYNuv_ri8z9-Q9cXV1-vb4PtxaqrU1e0cuMCzzevae0aaED-3hJwRO2O5MssML49wIuCJzC6avlzFMzm9W54L2ek5ylJT9wt3ZUxasc3I4S0iPrU1s8M7oe7H7_urYL4_LnZMIn4GWE6lCNUKe3GY4WCeIHCID5H7nGOEv8YkHP_N-qCEPe3C-NFH-HcH0VBfIHCfrqJXFW598z6Z38hsdwJ5SgN7Mtn9qVnH_nHHfvnDgiJyvV4joOo1EDv9qgG08X2UYPttPSEB3Nu6w5vr_vfT_ws5kVc0E9wFk1JkYZpSopPmzOa5GWVJlnIo-mURGxaZiXnBWNQQJzmySdxNtzpiqIwImExSYCQJA55FkWszDkNkhAaKuqJi2sTpdef_EXIsyiKoyT-VNMSauP__wCEDDefSJAuPukzHwj9xbEkrIWx5pmEFbaGsz7M-tuTYJCS6J7WwgUZDohafxdISXR0FvQX3y5Fnzpdn_389dHBcPdn5H8CAAD__-QBc8g">