<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/62226>62226</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Undefined behavior (signed-overflow) in ConstraintElimination
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          meheff
      </td>
    </tr>
</table>

<pre>
    Error message:

```
llvm-project/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp:490:35: runtime error: signed integer overflow: 0 - -9223372036854775808 cannot be represented in type 'long'
```

Repro: build LLVM with ubsan:

```
cmake ../llvm -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CXX_COMPILER=$TOOLBIN/clang++ -DCMAKE_C_COMPILER=$TOOLBIN/clang -DLLVM_USE_SANITIZER=Undefined -DLLVM_UBSAN_FLAGS='-fsanitize=signed-integer-overflow -fsanitize-undefined-trap-on-error'   -DLLVM_ENABLE_LLD=On -DLLVM_TARGETS_TO_BUILD=X86
```

Run on sample below:

```
opt -O2 sample.ll
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: bin/opt -O2 /tmp/minimized.ll -o /dev/null
 #0 0x000056520a9dc5ae llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /usr/local/google/home/meheff/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:602:13
 #1 0x000056520a9daa35 llvm::sys::RunSignalHandlers() /usr/local/google/home/meheff/src/llvm-project/llvm/lib/Support/Signals.cpp:105:18
 #2 0x000056520a9dcd6c SignalHandler(int) /usr/local/google/home/meheff/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1
 #3 0x00007f4e2625af90 (/lib/x86_64-linux-gnu/libc.so.6+0x3bf90)
 #4 0x000056520aeaeae2 (anonymous namespace)::ConstraintInfo::getConstraint(llvm::CmpInst::Predicate, llvm::Value*, llvm::Value*, llvm::SmallVectorImpl<llvm::Value*>&) const /usr/local/google/home/meheff/src/llvm-project/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp:490:35
 #5 0x000056520aead849 (anonymous namespace)::ConstraintInfo::getConstraintForSolving(llvm::CmpInst::Predicate, llvm::Value*, llvm::Value*) const /usr/local/google/home/meheff/src/llvm-project/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp:0:0
 #6 0x000056520aeaa6ac llvm::SmallVectorBase<unsigned int>::empty() const /usr/local/google/home/meheff/src/llvm-project/llvm/include/llvm/ADT/SmallVector.h:94:46
 #7 0x000056520aeaa6ac (anonymous namespace)::ConstraintTy::empty() const /usr/local/google/home/meheff/src/llvm-project/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp:121:48
 #8 0x000056520aeaa6ac checkAndReplaceCondition(llvm::CmpInst*, (anonymous namespace)::ConstraintInfo&, llvm::Module*, llvm::ArrayRef<(anonymous namespace)::ReproducerEntry>, llvm::DominatorTree&) /usr/local/google/home/meheff/src/llvm-project/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp:924:9
 #9 0x000056520aeaa6ac eliminateConstraints(llvm::Function&, llvm::DominatorTree&, llvm::OptimizationRemarkEmitter&) /usr/local/google/home/meheff/src/llvm-project/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp:1190:20
#10 0x000056520aeaa6ac llvm::ConstraintEliminationPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /usr/local/google/home/meheff/src/llvm-project/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp:1257:8
#11 0x000056520ab70f62 llvm::detail::PassModel<llvm::Function, llvm::ConstraintEliminationPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /usr/local/google/home/meheff/src/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:89:5
#12 0x000056520a5b7c25 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /usr/local/google/home/meheff/src/llvm-project/llvm/include/llvm/IR/PassManager.h:521:10
#13 0x000056520ab5e9d2 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /usr/local/google/home/meheff/src/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:89:5
#14 0x0000565209ddefe4 llvm::CGSCCToFunctionPassAdaptor::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) /usr/local/google/home/meheff/src/llvm-project/llvm/lib/Analysis/CGSCCPassManager.cpp:540:23
#15 0x000056520ab863f2 llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::CGSCCToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) /usr/local/google/home/meheff/src/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:89:5
#16 0x0000565209ddbf19 llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) /usr/local/google/home/meheff/src/llvm-project/llvm/lib/Analysis/CGSCCPassManager.cpp:90:12
#17 0x000056520ab5e562 llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) /usr/local/google/home/meheff/src/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:89:5
#18 0x0000565209dddbc7 llvm::DevirtSCCRepeatedPass::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) /usr/local/google/home/meheff/src/llvm-project/llvm/lib/Analysis/CGSCCPassManager.cpp:0:38
#19 0x000056520ab86eb2 llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::DevirtSCCRepeatedPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) /usr/local/google/home/meheff/src/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:89:5
#20 0x0000565209ddd1f9 llvm::ModuleToPostOrderCGSCCPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /usr/local/google/home/meheff/src/llvm-project/llvm/lib/Analysis/CGSCCPassManager.cpp:278:18
#21 0x000056520ab5e762 llvm::detail::PassModel<llvm::Module, llvm::ModuleToPostOrderCGSCCPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /usr/local/google/home/meheff/src/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:89:5
#22 0x000056520a5b6f05 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /usr/local/google/home/meheff/src/llvm-project/llvm/include/llvm/IR/PassManager.h:521:10
#23 0x000056520ac30393 llvm::SmallPtrSetImplBase::isSmall() const /usr/local/google/home/meheff/src/llvm-project/llvm/include/llvm/ADT/SmallPtrSet.h:195:33
#24 0x000056520ac30393 llvm::SmallPtrSetImplBase::~SmallPtrSetImplBase() /usr/local/google/home/meheff/src/llvm-project/llvm/include/llvm/ADT/SmallPtrSet.h:83:10
#25 0x000056520ac30393 llvm::PreservedAnalyses::~PreservedAnalyses() /usr/local/google/home/meheff/src/llvm-project/llvm/include/llvm/IR/PassManager.h:152:7
#26 0x000056520ac30393 llvm::ModuleInlinerWrapperPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /usr/local/google/home/meheff/src/llvm-project/llvm/lib/Transforms/IPO/Inliner.cpp:630:3
#27 0x000056520ab661b2 llvm::detail::PassModel<llvm::Module, llvm::ModuleInlinerWrapperPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /usr/local/google/home/meheff/src/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:89:5
#28 0x000056520a5b6f05 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /usr/local/google/home/meheff/src/llvm-project/llvm/include/llvm/IR/PassManager.h:521:10
#29 0x0000565209ac2406 llvm::SmallPtrSetImplBase::isSmall() const /usr/local/google/home/meheff/src/llvm-project/llvm/include/llvm/ADT/SmallPtrSet.h:195:33
#30 0x0000565209ac2406 llvm::SmallPtrSetImplBase::~SmallPtrSetImplBase() /usr/local/google/home/meheff/src/llvm-project/llvm/include/llvm/ADT/SmallPtrSet.h:83:10
#31 0x0000565209ac2406 llvm::PreservedAnalyses::~PreservedAnalyses() /usr/local/google/home/meheff/src/llvm-project/llvm/include/llvm/IR/PassManager.h:152:7
#32 0x0000565209ac2406 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool) /usr/local/google/home/meheff/src/llvm-project/llvm/tools/opt/NewPMDriver.cpp:522:3
#33 0x0000565209ad0605 main /usr/local/google/home/meheff/src/llvm-project/llvm/tools/opt/opt.cpp:701:12
#34 0x00007f4e2624618a __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#35 0x00007f4e26246245 call_init ./csu/../csu/libc-start.c:128:20
#36 0x00007f4e26246245 __libc_start_main ./csu/../csu/libc-start.c:368:5
#37 0x0000565209abc1e1 _start (bin/opt+0xc8f1e1)
Illegal instruction
```

Bugpoint-reduced input:

```
; ModuleID = 'bugpoint-reduced-simplified.bc'
source_filename = "__module"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

declare i64 @__sample__main(ptr, ptr, ptr, ptr, ptr, ptr, i64)

declare i1 @____sample__main_partition_0(ptr, ptr, ptr, ptr, ptr, ptr)

declare dso_local i1 @____sample__main_eq.37_37(ptr)

declare dso_local i1 @____sample__main_eq.105_105(ptr)

declare dso_local i1 @____sample__main_eq.122_122(ptr)

declare dso_local i1 @____sample__main_eq.54_54(ptr)

declare dso_local i1 @____sample__main_and.38_38(ptr, ptr)

declare dso_local i1 @____sample__main_eq.41_41(ptr)

declare dso_local i1 @____sample__main_and.106_106(ptr, ptr)

declare dso_local i1 @____sample__main_eq.109_109(ptr)

declare dso_local i1 @____sample__main_and.123_123(ptr, ptr)

declare dso_local i1 @____sample__main_eq.126_126(ptr)

declare dso_local i1 @____sample__main_eq.87_87(ptr)

declare dso_local i1 @____sample__main_and.55_55(ptr, ptr)

declare dso_local i1 @____sample__main_eq.58_58(ptr)

declare dso_local i1 @____sample__main_and.42_42(ptr, ptr, ptr)

declare dso_local i1 @____sample__main_and.110_110(ptr, ptr, ptr)

declare dso_local i1 @____sample__main_and.127_127(ptr, ptr, ptr)

declare dso_local i1 @____sample__main_eq.130_130(ptr)

declare dso_local i1 @____sample__main_and.88_88(ptr, ptr)

declare dso_local i1 @____sample__main_eq.91_91(ptr)

declare dso_local i1 @____sample__main_x4_5(ptr)

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #0

declare dso_local i1 @____sample__main_and.59_59(ptr, ptr, ptr)

declare dso_local i1 @____sample__main_eq.62_62(ptr)

declare dso_local i1 @____sample__main_and.45_45(ptr, ptr)

declare dso_local i1 @____sample__main_eq.48_48(ptr)

declare dso_local i1 @____sample__main_and.114_114(ptr, ptr)

declare dso_local i1 @____sample__main_eq.117_117(ptr)

declare dso_local i1 @____sample__main_and.131_131(ptr, ptr, ptr)

declare dso_local i1 @____sample__main_bit_slice.1361_1361(ptr)

declare dso_local i1 @____sample__main_and.92_92(ptr, ptr, ptr)

declare dso_local i1 @____sample__main_eq.95_95(ptr)

declare dso_local i1 @____sample__main_tuple_index.97_97(ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr)

declare dso_local i1 @____sample__main_and.63_63(ptr, ptr, ptr)

declare dso_local i1 @____sample__main_and.49_49(ptr, ptr, ptr)

declare dso_local i1 @____sample__main_and.118_118(ptr, ptr, ptr)

declare dso_local i1 @____sample__main_and.135_135(ptr, ptr, ptr)

declare dso_local i1 @____sample__main_and.96_96(ptr, ptr, ptr)

declare dso_local i1 @____sample__main_eq.99_99(ptr, ptr)

declare dso_local i1 @____sample__main_one_hot.21_21(ptr)

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i8 @llvm.cttz.i8(i8, i1 immarg) #1

declare dso_local i1 @____sample__main_concat.71_71(ptr, ptr, ptr)

declare dso_local i1 @____sample__main_or.136_136(ptr, ptr, ptr)

declare dso_local i1 @____sample__main_and.100_100(ptr, ptr, ptr)

declare dso_local i1 @____sample__main_x16_22(ptr, ptr)

declare dso_local i1 @____sample__main_one_hot.72_72(ptr, ptr)

declare dso_local i1 @____sample__main_concat.140_140(ptr, ptr, ptr)

declare dso_local i1 @____sample__main_zero_ext.76_76(ptr, ptr)

declare dso_local i1 @____sample__main_x23_73(ptr, ptr)

declare dso_local i1 @____sample__main_zero_ext.4111_4111(ptr, ptr)

declare dso_local i1 @____sample__main_x26_77(ptr, ptr, ptr)

define i1 @____sample__main_partition_1(ptr %input_ptrs, ptr %output_ptrs, ptr %tmp_buffer, ptr %events, ptr %user_data, ptr %runtime) {
entry:
  %0 = alloca i128, align 8
  %1 = ptrtoint ptr %tmp_buffer to i64
  %2 = add i64 %1, 0
  %3 = inttoptr i64 %2 to ptr
  %4 = call i1 @____sample__main_x30_142(ptr %3, ptr %0)
  %5 = alloca i128, align 8
 %6 = call i1 @____sample__main_zero_ext.143_143(ptr poison, ptr %5)
  %7 = getelementptr [0 x ptr], ptr %output_ptrs, i32 0, i32 0
  %8 = load ptr, ptr %7, align 8
  %9 = call i1 @____sample__main_x31_144(ptr %0, ptr %5, ptr %8)
  ret i1 false
}

define private i1 @____sample__main_x30_142(ptr %selector_ptr, ptr %output_0_ptr) {
entry:
  %zero_ext.4111 = load i8, ptr %selector_ptr, align 1
 store i128 0, ptr %output_0_ptr, align 8
  %0 = lshr i8 %zero_ext.4111, 1
  %1 = trunc i8 %0 to i1
  br i1 %1, label %case_1_then, label %case_1_join

case_1_then:                                      ; preds = %entry
  %2 = alloca i128, align 8
  store i128 18446744073709551616, ptr %2, align 8
  %3 = load i128, ptr %2, align 8
  %4 = or i128 %3, 0
  store i128 %4, ptr %output_0_ptr, align 8
  br label %case_1_join

case_1_join:                                      ; preds = %case_1_then, %entry
  ret i1 false
}

declare dso_local i1 @____sample__main_zero_ext.143_143(ptr, ptr)

define private i1 @____sample__main_x31_144(ptr %lhs_ptr, ptr %rhs_ptr, ptr %output_0_ptr) {
entry:
  %x30 = load i128, ptr %lhs_ptr, align 8
  %zero_ext.143 = load i128, ptr %rhs_ptr, align 8
  %0 = icmp uge i128 %x30, %zero_ext.143
  %1 = and i1 %0, true
  store i1 %1, ptr %output_0_ptr, align 1
  ret i1 false
}

declare i64 @__sample__main_packed(ptr, ptr, ptr, ptr, ptr, ptr, i64)

attributes #0 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsXFt34riW_jXOixYsS_L1IQ8EQk_WSVWyklSfnnnRErYAddmSR5ZzqYf57bMkG4zBUCRQ51T3qe4UF3t7a-9vXyUL07LkC8HYpeNfOf7kglZ6KdVlzpZsPr-YyfTt8lopqUDOypIumINHjjtx3NVr4DZ_9muWPeeDQsk_WaIdNDVfzRufOWj6pKgo51LlpYOmjwnNqHLQdCxFqRXlQl9nPOeCai7FMCkKB4-82HXwCPsOHgFVCc1zBpgRxhywYqeAC80WTAH5zNQ8ky_mlAsGYBAjhHGIXBxEvheGfuRGIKFCSA1mDChWKFYyoS0LoN8KBhwUZlIsHBT26la_PrBCSTPIrOJZCm5vf_8EXrhegmpWUnEYnSSnXxkYDhtkwOC3z1z8ScFgMv40-sc1ufpyczshT_99f-3gyQPL_sn1csJmN2Iu1zTjP_4g47tP9ze31w8OnjjIe7q7u726-eygaZJRI_6Vg65a-sPUYDAxKpAvj9fkcfT55unmfyzlF5GyOTcArwiuHkefyfR29NujZRQO5iUVXPNvzMGT2hiDxhiDlTFASzSoVhwHWtFiIMWgNiUKAVgNcv15dHV7TW5vJw6e3InV4afRw2_XT4_k6a6GyMGTP6LgkJEqAaQAJc2LjIEZq_3igGVkocHgDjVXDLOsPnx_ez16vAZlNcu5BhTMqoXxHKk00BIstS5KwxdNHTRdcL2sZsNE5huO3w0HXpYVM94PqDBul2RVyoBeMpAoWi7BjCZftaIJG9bDP2qafAVplRdr6d2h48b3Si4UzQFViypnQpfWH7lw0HSliIOmOi8cNM254Dn_xtJhloGBNCdS9uygqahWWgIHYRe4r67run7gI5fGaeJTBqwWeOTgUflW1h_uFRfayvVkBHVQ1BIp-kJkqRWjuYMCB41NcDooNmNWpQn2TCY0M1hJuciYg6ZLmZu3Ots4aFqqZBe2ThZ5rAqDv4OmXwR_NQf4QtCsHHKROHgUuMjBI4hbzeCWZpRiv0-zh0rUrP6LijRjqnRQ9OOEX0ldJzromhwHo1ZqtG2PNEhARz4HRf96eD2IjaCtnLiRM5x7DAXIp_PYBRa5huFrFJDAG2RcVK-DhajqE8mwlMPAQVfuK57NY9dBccvT6-jOzP_GoSMqpHjLZVUCQXNWFtb_4tp6bRkx2bI-tmC6Pdzx1HFe3IhSr1yapTyhmhmPbWl-p1nFHDQ65uhjTrPsd5ZoqW7yInPwuOcKfG2jIgaJEeqsVjuhtK5R97dQTyMvPhn1qVSPMnvmpiydGf-fA0fX_luDGGyBSAOa9PvJFS2Zg8eVaPsY4yGWjOWFfmvSzzmVbCpOe2A0eTKKtlINlw4exZ5xkKDVKuzT6mjXeHr7sVp91HQQQaPnRtKN-vRMliz5OhLpAysymrCxFCk3XHodunbX90VNXSpbXp9kWmW7nj9Sir49sLmDx9_hb1vUtEqYuhZavdnEs8lpIi0SUj0pxpqc9O81RYyMy22UgLjPEqy5jrWsyo4VppVIatME39N48-xdoU2LZAV6YDlVX69zrrUpsT8BNhDaVI1WDS7C0D2cZXq53dOyaXRUJY5DbSRo9lby8hMVdMFUp6qtL1pXtX93MPuhg0dRC1K375uF7jxAG8qlTFOeNRWIluUnmbKsX8UOKPvB7ZDdm9mlemZpDSIrPwbtqiL81DbbKSs3Dw6aWlBrKW6EZkrQzFaXyGQpv7VTt9P1Z2GCNvvzDTZHWOc_C1eLp2_LGNxID7jr-T6L03N4_g-zxK_A-VDgdKZJcZqyOfM2E9Vvj-Pxk1zJbriOUlpou3rWg8wt_fY2pln2m6LFsmlXx-N34bSPxeb1XRoUrDA9SNPNwEaxL0VKNXtgZZXpH1CAVlqaqmOG2wy6uuD4nq3KuLVHdwI1iwI8f1_YHQPfAaueK4w-bMUTTbgvZH855hmSRbCVLGZzGB-R248B7pcv_eV86dgkZ2ceELVuFG63Fv47m-pj0PsbOuOv3Py3jqfTcnO0lZvTWRJuLl6wZ67043j8wApGNUv3T-V_meNd6c0ugW8sGcTbHRybnT-79ZvzV4L4W3vkSQkCudsJAs7jnQXjJ3kvS32nUqbW7n5wwrdaZ36HKZpLfsia3_fDFYXRxl1SAwzcbkfCd7YjKwx2198PwXmuYG3h3Bc-P42NTnPg7TW-YO4es8bXZ53_FDz71_ZQd20vwS6O8fYNxnutHpm-yYusvsloTvDSnvoX31SsJbGqwNg31bZdL0HeB1X5v74z59yrcaRGEd6yjX9Yod1EUavTk0B-pDK9jgZ95OBR2OoSHNalDoobkXHB1D8VLQqm9relP03U9dxdurm_M6-1Jk2hCbDtDFs0tqa9QQDf2RjurzM9GP4qL-8sL9Gv8nKm8tKZAcU0QZ4b_DXLS3dH4ztU-VnLS3cj465Cf6Xy0t3euKuLquydjXteMJMdOzH2qBUXiwc27981sxV6T1QtmP5Ek6XlM-o7e8tniqq3GzGXdvfeDpWU2V2li0pPec_GnNNO71FnY7dPN5HdZ9WCi50puyw00VI2Rage7x9cpIeofmeKzzlTK7qZOXP0-7k8yMhT1juXHTT9zF7uP00Uf25vtCHUKcYYd30ndQPXBznl4ocIJAvdCBK6sLsavt6o2mx-9QIYUUBIxmcJKTVVmiQ0y4iVbeigaVJWDpra_f_lW5mywgwjCp01m2K3L7KxE3pd9f3tQZHnA3sJF1xvj1N_NMwHlvkwsTpE3R1F632LHaYdTfqU6GWOg6hTnbu7B2M6SyCDoOYKHBSt963b3cBJNIcMrrcD32QZW9AMcFFqVdU34fdv-7-qFoXkQg8US6vEbqosKrvLdP_OfwdfgaYTmwAHT4CDwtkWn0HJ8yIzsZIOZ8n69yGlrFTCyJxnTNCcNVcjQvImFzWuom2WASnVNKNvstIrSjYwcckGBQptw2kdHZmvsPvVfAo8-zLgqw_zqL47Ew2EXRcJVtcE3uDRmHhrfK14ka2lbPZlV-KrkC9ic3822kQrZUlGFQM88IDjuYTUv5Ag1h8cFBXaLocc8WbkXpl1izesWXeZk4IqbXdaEvcdA_WOkJaS2Jywbyz2v0McEhyuBvowF-j6BLr-6XwQIhChk_n4HvG907hQkQ5xRHC0ZYUPy-RB4sHTZYJuQKAbnEsq6MYEuvEZ5EKYQITPJhcKCETByZ4QhSQ60b-Ndr5PfP9cuvkR8aPTZfIQ8VB_jjjBjNAlEO5JPad4R0ggCs_J1jgJdgnE7ulQRhGJzhboMSTxiYH-6pH-ZGrq9moXFBhpreyP4IThlc1o8hUIOVeMASEr8cJFCl54limmKyVAznKp3hwUUbXIWW5_Xspo-qK4ZuthViI-S54a0Ux3OMxZnhRvw8I1f7aiGdGAkDTjtLTDF7pSDFheUmRvDYo9JGbIFYVlNTYg8DynalG319j9eJjGxI_P7GQBIsGJFclGq0-8s2UQLyLeGTIIhB6B0DtbzoYhgfAM2RZiSCCG5zTkjGtSZjxhQ4gDwz04Qy2OEYnPmoFN9vBJfGIjpSvzmYuUvQ7jkMR70u4PaysNNAEmwXYzcDJTLybeWcO7DoKIQLid_U9ni30C8XbEn8w2Dki83fyd7HIxibdh_RgzKRhZSj1EkKD--Dq-gJVvImnrWFmwpMqoprOM9RY1IcVuFePRuoYlWn8bcmNm87JbdOCHFE6kSKgehpCEZ01XUpk8ZdLU2f3SdQl0z9rgvcKAoO08eJoDhYiE5-HYWAh6LoHeWdX-xpQk7FUPw4CE55mQvSJMwvPModbSeRCamSfc9s-PShiQ8Lg-fs7FEascjVjAQb5dtyKFyQlN--ggX9pF3e2jOi_IrJrPmdo4yJ7tUyHaA1XJFEmpphvHmieq2KgPr2pZWf2D0UZyYMhcu2JEMwMG4HZdaQxoxhcCRBtk0JIVWmnJhd6VDmhpu9z2ClQzTtN6cQn50HB2NyiwpeBCa2n4NWTIsDIwt4SeJTSZc6-1zARpNUm0vDeQ2Hj8gPnqf19jB_nBd8dcOx70MIFe482gkLysfy3VDO93hw8t4wXTLGM5E9pS-VcueLVa-5P9PsExAm77oeUZWZ6ZpOmGn9rB-q0ZHwEoJNDzWkDdrkbrz9GGdoppw29Os5I1IRJOemKlUPyZ6r0xs2PMkmX25-ukq1yDjlsfPuzmnSzRolWXyD3D1LitnoZRamkXM1EE3L1C9IFdR1hWLpUt01uymGvgTqBpVYmkIXdtbK1pZsri1sRTRmcsM98SWjICiV4y0Xf8T8nFpiU2yfEIHPWfaWkKxdKyWWT2a5x3Qv5gLtmAEUaeF4Se54Y4dGPfhwEMNpBF_XDiDes1Qxy-oM4eUtWDrnKD2yOQIT7etDN1LMr28IdR3rLsNu5HBN17K2knoR2set-N5K0ski3LrSBWO0feE9av2N3rDhtj7TrFpq57OahDHOqBeZIXoFq0DvSK3cZKm0PsBLh9QhRcJ1atKrbtkOsYP-iO8N1-0HuvhxQ0-crSE2_5UK0Vn1WalfVDp6wHh1fnWbcDa326w8CDw3xsdtWOtb6feJFe4jTGMb1glzCIYBTE0A0ulpcMJfMIBoEXuDBMWMK8wEtnQcCShFLkphf8ErkIux6MXehDLxh6HgxwEKdwFsYuhonjuSynPBvaCZxUiwv7KLHLACEUXNgkU9oH-CEk2AuwJx2EHH9yoS7tXe5ZtSjNBJCXumy5aK4zdtk-623GlvSZS-NNUfNIt_Vz9VAMuAC9jz-4qFR2-fGnoVkt_j8AAP__75LOUg">