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

    <tr>
        <th>Summary</th>
        <td>
            [Flang][OpenMP] Compilation abnormally terminates when end single copyprivate statement written within parallel construct after threadprivate directive
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            flang:openmp
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          ohno-fj
      </td>
    </tr>
</table>

<pre>
    ```
Version of flang : 21.0.0(74ca5799caea342ac1e8d34ab5be7f45875131b2)/AArch64
```

`end single copyprivate statement` written within `parallel construct` after `threadprivate directive` results in an abnormal compition termination. 
When `copyprivate directive` in `end single directive` is deleted, the compilation terminates normally.  
It seems to be similar to [past issue](https://github.com/llvm/llvm-project/issues/130533), but the occurrence condition and compilation result are different.  


The following are the test program, Flang, Gfortran and ifx compilation/execution result.

snefe049_2.f90:
```fortran
program main
  interface
 function sub1() bind(c) result(ret)
       use, intrinsic::iso_c_binding
 integer(c_int)::ret
     end function sub1
  end interface
 procedure(sub1),pointer,save,bind(c)::ffunptr
  save
!$omp threadprivate(ffunptr)
!$omp parallel
  ffunptr=>sub1
!$omp single
 ffunptr=>sub1
!$omp end single copyprivate(ffunptr)
  if (ffunptr() /= 1) print *,'err'
!$omp end parallel
  print *,'pass'
end program main

function sub1() bind(c) result(ret)
  use, intrinsic::iso_c_binding
  integer(c_int)::ret
  ret=1
end function sub1
```

```
$ flang -fopenmp snefe049_2.f90
flang-20: warning: OpenMP support in flang is still experimental [-Wexperimental-option]
./snefe049_2.f90:8:41: warning: Explicit SAVE of 'ffunptr' is redundant due to global SAVE statement
 procedure(sub1),pointer,save,bind(c)::ffunptr
 ^^^^^^^
./snefe049_2.f90:9:3: Global SAVE statement
    save
 ^^^^
flang: /work/groups/ssoft/compiler/llvm/src/llvm-main/flang/lib/Lower/OpenMP/ClauseProcessor.cpp:699: void Fortran::lower::omp::TypeInfo::typeScan(mlir::Type): Assertion `ty.isIntOrIndexOrFloat() || mlir::isa<mlir::ComplexType>(ty) || mlir::isa<fir::LogicalType>(ty) || mlir::isa<fir::RecordType>(ty)' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /work/groups/ssoft/compiler/llvm/aarch64/main-20250310-74ca5799caea/bin/flang -fc1 -triple aarch64-unknown-linux-gnu -emit-obj -mrelocation-model pic -pic-level 2 -pic-is-pie -target-cpu generic -target-feature +outline-atomics -target-feature +v8a -target-feature +fp-armv8 -target-feature
 +neon -fopenmp -resource-dir /work/groups/ssoft/compiler/llvm/aarch64/main-20250310-74ca5799caea/lib/clang/21 -mframe-pointer=non-leaf -o /tmp/snefe049_2-216730.o -x f95-cpp-input snefe049_2.f90
 #0 0x0000400035cf37f0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/work/groups/ssoft/compiler/llvm/aarch64/main-latest/lib/libLLVM.so.21.0git+0x5b937f0)
 #1 0x0000400035cf1838 llvm::sys::RunSignalHandlers() (/work/groups/ssoft/compiler/llvm/aarch64/main-latest/lib/libLLVM.so.21.0git+0x5b91838)
 #2 0x0000400035cf1994 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #3 0x0000400025dd07a0 (linux-vdso.so.1+0x7a0)
 #4 0x000040003adb6274 raise (/lib64/libc.so.6+0x36274)
 #5 0x000040003ada0a2c abort (/lib64/libc.so.6+0x20a2c)
 #6 0x000040003adafba0 __assert_fail_base (/lib64/libc.so.6+0x2fba0)
 #7 0x000040003adafc18 __assert_perror_fail (/lib64/libc.so.6+0x2fc18)
 #8 0x0000000005417b74 Fortran::lower::omp::TypeInfo::typeScan(mlir::Type) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250310-74ca5799caea/bin/flang+0x5417b74)
 #9 0x0000000005418cac Fortran::lower::omp::createCopyFunc(mlir::Location, Fortran::lower::AbstractConverter&, mlir::Type, fir::FortranVariableFlagsEnum) ClauseProcessor.cpp:0:0
#10 0x0000000005419a98 Fortran::lower::omp::ClauseProcessor::processCopyprivate(mlir::Location, mlir::omp::CopyprivateClauseOps&) const::'lambda'(Fortran::semantics::Symbol*)::operator()(Fortran::semantics::Symbol*) const ClauseProcessor.cpp:0:0
#11 0x0000000005419e60 std::_Function_handler<void (tomp::clause::CopyprivateT<Fortran::evaluate::DynamicType, Fortran::lower::omp::IdTyTemplate<Fortran::evaluate::Expr<Fortran::evaluate::SomeType>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeType>> const&, Fortran::parser::CharBlock const&), Fortran::lower::omp
::ClauseProcessor::processCopyprivate(mlir::Location, mlir::omp::CopyprivateClauseOps&) const::'lambda0'(tomp::clause::CopyprivateT<Fortran::evaluate::DynamicType, Fortran::lower::omp::IdTyTemplate<Fortran::evaluate::Expr<Fortran::evaluate::SomeType>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeType>> const&, Fo
rtran::parser::CharBlock const&)>::_M_invoke(std::_Any_data const&, tomp::clause::CopyprivateT<Fortran::evaluate::DynamicType, Fortran::lower::omp::IdTyTemplate<Fortran::evaluate::Expr<Fortran::evaluate::SomeType>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeType>> const&, Fortran::parser::CharBlock const&) Clau
seProcessor.cpp:0:0
#12 0x0000000005416954 bool Fortran::lower::omp::ClauseProcessor::findRepeatableClause<tomp::clause::CopyprivateT<Fortran::evaluate::DynamicType, Fortran::lower::omp::IdTyTemplate<Fortran::evaluate::Expr<Fortran::evaluate::SomeType>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeType>>>(std::function<void (tomp::c
lause::CopyprivateT<Fortran::evaluate::DynamicType, Fortran::lower::omp::IdTyTemplate<Fortran::evaluate::Expr<Fortran::evaluate::SomeType>>, Fortran::evaluate::Expr<Fortran::evaluate::SomeType>> const&, Fortran::parser::CharBlock const&)>) const (/work/groups/ssoft/compiler/llvm/aarch64/main-20250310-74ca5799caea/bi
n/flang+0x5416954)
#13 0x00000000054169c8 Fortran::lower::omp::ClauseProcessor::processCopyprivate(mlir::Location, mlir::omp::CopyprivateClauseOps&) const (/work/groups/ssoft/compiler/llvm/aarch64/main-20250310-74ca5799caea/bin/flang+0x54169c8)
#14 0x00000000053d5760 genSingleOp(Fortran::lower::AbstractConverter&, Fortran::lower::SymMap&, Fortran::semantics::SemanticsContext&, Fortran::lower::pft::Evaluation&, mlir::Location, llvm::SmallVector<tomp::DirectiveWithClauses<Fortran::lower::omp::Clause>, 0u> const&, tomp::DirectiveWithClauses<Fortran::lower::om
p::Clause> const*) OpenMP.cpp:0:0
#15 0x00000000053d741c genOMPDispatch(Fortran::lower::AbstractConverter&, Fortran::lower::SymMap&, Fortran::semantics::SemanticsContext&, Fortran::lower::pft::Evaluation&, mlir::Location, llvm::SmallVector<tomp::DirectiveWithClauses<Fortran::lower::omp::Clause>, 0u> const&, tomp::DirectiveWithClauses<Fortran::lower:
:omp::Clause> const*) OpenMP.cpp:0:0
#16 0x00000000053dc60c std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<void (*)(genOMP(Fortran::lower::AbstractConverter&, Fortran::lower::SymMap&, Fortran::semantics::SemanticsContext&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::'lambda'(auto&&)&&,
 std::variant<Fortran::parser::OpenMPStandaloneConstruct, Fortran::parser::OpenMPSectionsConstruct, Fortran::parser::OpenMPSectionConstruct, Fortran::parser::OpenMPLoopConstruct, Fortran::parser::OpenMPBlockConstruct, Fortran::parser::OpenMPAtomicConstruct, Fortran::parser::OpenMPDeclarativeAllocate, Fortran::parser
::OpenMPDispatchConstruct, Fortran::parser::OpenMPUtilityConstruct, Fortran::parser::OpenMPExecutableAllocate, Fortran::parser::OpenMPAllocatorsConstruct, Fortran::parser::OpenMPAssumeConstruct, Fortran::parser::OpenMPCriticalConstruct> const&)>, std::tuple<std::variant<Fortran::parser::OpenMPStandaloneConstruct, Fo
rtran::parser::OpenMPSectionsConstruct, Fortran::parser::OpenMPSectionConstruct, Fortran::parser::OpenMPLoopConstruct, Fortran::parser::OpenMPBlockConstruct, Fortran::parser::OpenMPAtomicConstruct, Fortran::parser::OpenMPDeclarativeAllocate, Fortran::parser::OpenMPDispatchConstruct, Fortran::parser::OpenMPUtilityCon
struct, Fortran::parser::OpenMPExecutableAllocate, Fortran::parser::OpenMPAllocatorsConstruct, Fortran::parser::OpenMPAssumeConstruct, Fortran::parser::OpenMPCriticalConstruct> const&>, std::integer_sequence<unsigned long, 4ul>>::__visit_invoke(genOMP(Fortran::lower::AbstractConverter&, Fortran::lower::SymMap&, Fort
ran::semantics::SemanticsContext&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&)::'lambda'(auto&&)&&, std::variant<Fortran::parser::OpenMPStandaloneConstruct, Fortran::parser::OpenMPSectionsConstruct, Fortran::parser::OpenMPSectionConstruct, Fortran::parser::OpenMPLoopConstruct, Fortran:
:parser::OpenMPBlockConstruct, Fortran::parser::OpenMPAtomicConstruct, Fortran::parser::OpenMPDeclarativeAllocate, Fortran::parser::OpenMPDispatchConstruct, Fortran::parser::OpenMPUtilityConstruct, Fortran::parser::OpenMPExecutableAllocate, Fortran::parser::OpenMPAllocatorsConstruct, Fortran::parser::OpenMPAssumeCon
struct, Fortran::parser::OpenMPCriticalConstruct> const&) OpenMP.cpp:0:0
#17 0x00000000053bedfc Fortran::lower::genOpenMPConstruct(Fortran::lower::AbstractConverter&, Fortran::lower::SymMap&, Fortran::semantics::SemanticsContext&, Fortran::lower::pft::Evaluation&, Fortran::parser::OpenMPConstruct const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250310-74ca5799caea/bin/flang+0x53b
edfc)

- Omitted -

#27 0x0000000005059318 (anonymous namespace)::FirConverter::lowerFunc(Fortran::lower::pft::FunctionLikeUnit&) Bridge.cpp:0:0
#28 0x0000000005053160 Fortran::lower::LoweringBridge::lower(Fortran::parser::Program const&, Fortran::semantics::SemanticsContext const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250310-74ca5799caea/bin/flang+0x5053160)
#29 0x0000000005004908 Fortran::frontend::CodeGenAction::beginSourceFileAction() (/work/groups/ssoft/compiler/llvm/aarch64/main-20250310-74ca5799caea/bin/flang+0x5004908)
#30 0x0000000004f106a8 Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250310-74ca5799caea/bin/flang+0x4f106a8)
#31 0x0000000004effacc Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250310-74ca5799caea/bin/flang+0x4effacc)
#32 0x0000000004f150ac Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250310-74ca5799caea/bin/flang+0x4f150ac)
#33 0x0000000004ef82fc fc1_main(llvm::ArrayRef<char const*>, char const*) (/work/groups/ssoft/compiler/llvm/aarch64/main-20250310-74ca5799caea/bin/flang+0x4ef82fc)
#34 0x0000000004ef7d50 main (/work/groups/ssoft/compiler/llvm/aarch64/main-20250310-74ca5799caea/bin/flang+0x4ef7d50)
#35 0x000040003ada4384 __libc_start_main (/lib64/libc.so.6+0x24384)
#36 0x0000000004ef621c _start (/work/groups/ssoft/compiler/llvm/aarch64/main-20250310-74ca5799caea/bin/flang+0x4ef621c)
flang-20: error: unable to execute command: Aborted (core dumped)
flang-20: error: flang frontend command failed due to signal (use -v to see invocation)
flang version 21.0.0git (https://github.com/llvm/llvm-project.git 74ca5799caea342ac1e8d34ab5be7f45875131b2)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /work/groups/ssoft/compiler/llvm/aarch64/main-20250310-74ca5799caea/bin
Build config: +assertions
flang-20: warning: OpenMP support in flang is still experimental [-Wexperimental-option]
flang-20: note: diagnostic msg:
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
flang-20: note: diagnostic msg: /tmp/snefe049_2-f702d8
flang-20: note: diagnostic msg: /tmp/snefe049_2-f702d8.sh
flang-20: note: diagnostic msg:

********************
$
```

```
$ cat /tmp/snefe049_2-f702d8
#line "./snefe049_2.f90" 1
      program main
 interface
      function sub1() bind(c) result(ret)
       use, intrinsic::iso_c_binding
       integer(c_int)::ret
      end function sub1
      end interface
 procedure(sub1),pointer,save,bind(c)::ffunptr
      save
!$omp threadprivate(ffunptr)
!$omp parallel
      ffunptr=>sub1
!$omp single
 ffunptr=>sub1
!$omp end single copyprivate(ffunptr)
      if(ffunptr() /= 1) print *,'err'
!$omp end parallel
      print *,'pass'
      end program main

      function sub1() bind(c) result(ret)
      use, intrinsic::iso_c_binding
      integer(c_int)::ret
      ret=1
      end function sub1
$
```

```
$ cat /tmp/snefe049_2-f702d8.sh
# Crash reproducer for clang version 21.0.0git (https://github.com/llvm/llvm-project.git 74ca5799caea342ac1e8d34ab5be7f45875131b2)
# Driver args: "-fopenmp" "snefe049_2.f90"
# Original command: "/work/groups/ssoft/compiler/llvm/aarch64/main-20250310-74ca5799caea/bin/flang" "-fc1" "-triple" "aarch64-unknown-linux-gnu" "-emit-obj" "-mrelocation-model" "pic" "-pic-level" "2" "-pic-is-pie" "-target-cpu" "generic" "-target-feature" "+outline-atomics" "-target-feature" "+v8a" "-target-featur
e" "+fp-armv8" "-target-feature" "+neon" "-fopenmp" "-resource-dir" "/work/groups/ssoft/compiler/llvm/aarch64/main-20250310-74ca5799caea/lib/clang/21" "-mframe-pointer=non-leaf" "-o" "/tmp/snefe049_2-216730.o" "-x" "f95-cpp-input" "snefe049_2.f90"
 "/work/groups/ssoft/compiler/llvm/aarch64/main-20250310-74ca5799caea/bin/flang" "-fc1" "-triple" "aarch64-unknown-linux-gnu" "-emit-obj" "-mrelocation-model" "pic" "-pic-level" "2" "-pic-is-pie" "-target-cpu" "generic" "-target-feature" "+outline-atomics" "-target-feature" "+v8a" "-target-feature" "+fp-armv8" "-tar
get-feature" "+neon" "-fopenmp" "-mframe-pointer=non-leaf" "-x" "f95-cpp-input" "snefe049_2-f702d8"
$
```

```
$ export OMP_NUM_THREADS=2; gfortran -fopenmp snefe049_2.f90; ./a.out
 pass
$
```

```
$ export OMP_NUM_THREADS=2; ifx -qopenmp snefe049_2.f90; ./a.out
 pass
$
```

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsHFtz46b615AXRh6EfH3Ig-LE7c5kT3Y2afvoQQjZdBHoAPLG__4MIFm2Yidxk017ppvxzuoC3_2GxCdiDF9Jxi7B6AqMri9IbddKX6q1VFHx50Wm8u0lGKPmh9LfmTZcSagKWAgiVxAkKcTxAA0QwNPJkJLRZDajhJFkiAmN2TRPhiQbZWxSDEfTyShO4gwDPAN4kaaarsdDgNJ9DOGUyRwaLleCQaqqbaX5hlgGjSWWlUxaMEbwu-bWMgm_c7vmEoIxqogmQjABqZLG6pr6caSwTLvbdq0ZyVtYOdeMWr5hboxmphbWQC4hkZBkUumSODhlxa1j2DJdcknc8QAClP6xZh7lPnUHEANFe3wc3jUwZ4JZlgM8h3bNAipBDpAxAwMhYjuADusnCw1jpYFWwYxBw0suiHZnYHRVEWMhN6ZmYHQN8HRtbWVAkgK8AHix4nZdZwOqSoAXQmza_6JKqz8ZtQAv_FwD8CJO0ChJvJbmMKutJ1BRWmvNJHW0yjyIhcj8gPIgR0i047comGbSBtLD72HNYKGEUN-5XPlhDrRlxsJKq5UmpUO5cKblDn4plLaaBDy8eNzHBfCCPTJa7-EdBCRGsoKh4WyJB8UMOQnsmVgDEaC0QQhLwt0phFxapgtCmTsrakk9aFNnMcBTgGcw4zIHeErdccAI8FQz6yTlAPi_2jBHOpdWc2k4dfiTlBu1pEsHgMuVG-yQrZh24JZcehB-oAPXwHLGc0iGu-GuHlBaaUVZXmsG8DQQ6_RWKT8I4LkhG0fRHvEBU1HUsrLaA_VjUApwDPBQlRU88BWAp-1gz2k3rPU4D6Qdk1yD5Kahtxsa3MCL9tlxx12_TwKEvID7F72CnKkn19CJAFaaSwsBTgGeAzxhWgM8eYLpgIHelIoYE-b4kYfmAlD6V0zkldbxonm4_5PruKGtbyVPA2p3iodN6I4KVTHpNHPoLyj19yPsXAd-J1o6opIU3lVMfv4CTV1VSlsX4QIgbqCxXAjIHiumuYvPRLiIFP2xfyVSlffb0TVA6QDgxRM_nYIkHcY9rDePleCUW3if_n7jEg_Ak53WJw65ZnktcyItzGvmguFKqIyIMKFLGe_jKmB0c-R3giE3PXFM_HKKIrjzPdgD6GXr5gK8-K70NxfDtaorF6CNUYWL2CEcOtLbkG40bQO7N1S8CHDwQvAM4MWt-u6HB10CvJgLUhv2xQnGGKUHtKpAko5njnS4UTyHiyZiekkIP98fqrIKBw_bin2ShQpndluxe0okwNNScN0NCdKEqTFMe2N1KXk74OaTtHf6k8zZ451eCEVs682TOZjMYQeFGwKSeXc-V2Ul2KMHntwAPLXbZ-YV7emtWnFKxLnTvjKqdN6b5UywIFyw3CWfL7c36f2N88KSW0hgVq-gZt5brIJ_PSGH_CepqPOQMakmZg0zQr9ZTShzuO8tod9gXgetoBQNQj760sQtole1szpztk0REgo1vHAmFWGERyiJUbRf7gG8yDpzg1FBYxhZzSvBYDM_quU3qb7LSHBZP0YrWcOIldxGKvsTRqVmQlGf2aNS5UzAilMYVZxGgm2YgDiccBNVnMHIEr1iNqJVDVdMMu0GN9cKRmytGQT4StVWcMkiYlXJqTk2ZDMlxy4XVUR0uZn273lPxVeSKdlF0Egzo2pNWZRz_UOEG7yXNr6MYxiVhSYli9rglVxLJSPBSAEj5UiwZXUQkiIcjycJGigYPcJiNopoVUVcVrV9mgAgwAmC6BEhhIYIoWREi2RSIOiJ9t5gtiYcfHFJ0xvfgzNFgKfdIE2-L5Wxmrm6btwkvpCop2-RknC1sd2JRfDs9vb3zwOjBm4tsuIW4Cv0OMpmjugm9QKcxD2W4mkyPcbS11re85Uk4lcic8G02ZUXH0O1o6ujGvepns2G8IA-gKdernNo-IrLQi1tKGJ8APeHs2aGaQI88v8CgmQPAR7lOZoQ5HgNfrrJjXI0xp66CdmT53CfMpJnYzwZQk24YY2oBM88-4Jn1MEYexiJG9dBGR1CIYhgCknmguZzULAb10EZ96AUGUFwuSQ-2yxdiF5m5AXCsJvUgZz0QdJ42oGsmNZKe8gvAKXxnjanDVD_NxrGk2wyfM8U-1YjfUV0D2YaSO8Ym_UYm1JCX2aMakYsm6tqu6glPWDotkkHfkV4Ak6aGZcA7VzJDdO-iPNhpi-WOdyl8QbU70Rzkgm2EGRlbmRdOtkdL4ZaX3ERBPW4nJHZ9GUue3DDxSqczg8WOcfZ7652ILtpAfqd0_PYceGffoRRAE8EKbOcuHUMnh4QalhJpOW0CXr32zJTIgSLBlfFNLGqWVydMT1Q8Appxn1psjGCxuYB5HLRLGuW6ybOJXNfkbriq7Mgj-WJUB5AMj-gl22IqJ2Q_dn1VpKS09Y6XtTgp_xh-8DKSngIz0G-eaz08yPuVcnaMtJVkj30bwPXaD-4wcGsimjT8jVfE30lFP22N3z2kiBQ-k-xZhTM-acRvM4IAErPsgMHwzvg5yWXG_XNL5d3XpnK7TInlhwg-amK9_dHH0ABSp-PobgXQ8ez0RBmSom_mJYKLvOvrGLEuvQ4b7Q5_6ngU-D8w4Cde7SP4o7nKoDSn9J7r3TliGlrjR9W9QKUPil8nYu1T8KTOHnigPSfWRJ-4NLAyaCT0PBAQkk-mowRXDF57x_z31X90vIVBf6p8ffb8jOpjg3q16vt6VxJyx6PmuAe3KpoapCbYMxeC72lxr56uqcK9yUR4ndGXSG9H0av2_eBf3C7Dvoyfc85bTiNJ6K670NvQABQ2sfRgvZVfXhmfCQFjXr6nQxj6vR79_nLNTcVsXT9U8V_u4rRcRyvU_G4p2I6RnRvpbbMmSVctGcbt7iWtj1dMbnc-HJiyctKgGT-ypmfa2H5kmhNtnv5tFmj4mkwsf9r0zqZ8oIm5u1GhsPE5wb0lvaktsrfDiu5cDAHKO20tJPt_AWs95bInAgl2Q7_K2i9Z77wMX9hzjlTbpWqzhnv64ZzJqT-XcE5M64ZFUQT54ip8G8xnlZpzax2Dd1MbKLjOch-s1xwuz1nyo3fJ-H87yXy9sUQhip9lkJTY-ryLLOZa245JaKbcxDuZk0Y3FmxrSvB9kPI28369Pr4p2W_2rLfzazdivdfYNk9s242fCwN-2_NJHUWXku_OS-HQoXtUMNatGvOJltyw233jObH50PnKf_nKfHflA_Rvypw_KOjxjlR7aWUeLpMnxyW6RnLi9Mv4Vy4OHSpf10p_WGPRJIMoNRpo3kqgtII3pXcWpbDqNmlhxN8qD80miXx1NFIpJLbUtUGSlIyU_mNFk3UW3DdKaUTV_M-9UU5ti_Zbvk39pvkrWCuNM9X7KmJ4WmPxCQeo5Pa8tvNuFwFaPu3e5Tt66vdsXTy0eALFvS3KDgIYvfMCx--DkdoOEO9p4KFduTKJhnNVc5-YTJtHh67SxlbcXnv9xUtuGDNrXfZivJ6tjzhO7aSg_ffwyJGY_IsW4vm7Bm--qbQl0tg5ZM0lri66Ig9HEf5SVa1dQj-DntoRNMJ7uBV95AVBaH0eXvo8e2vhh3vnSm8XvIfy33gr-Me98xmhPqbQw6Jb_jshLDZPXg7z1jSj9W546vjOunpfIoLCgsaL8PW3L2NcqnWZPuVFSCZ0zXR3TO5sEo4vPahenQ0dxwNexxN8hHyO-I_kCKHs6Oov3tsmEyHcLkUPKNLY4m2yz3yTuzQcnM6iOMej2McUxhgfSCXDmugaX83vt9z5g5q6cpXaBVsXAVSVZbEOwJMM6VdYQHwlCrN_KZglj8DLWzabX2pBdVsbG531Ru_gdABrQ2D0cZfYwzyPefcYYCbplMsNIetuJfdeTugB27WOT1lKH3we3UdSyc3HfsuJM1IDv02Yze2UoY_ApT6sCEEy6_98_4ftksapVc1F07OsuDNHv8r0u6LNx_TgbGPQir_dhbmnKykMpZTWJpVs4LEb_j5wrbZFZ8-PKTzX-HDrzdwcXd7e_fHp__8Ahefbm_u4cOdv3z12y_w682Xu68PAfUXzZo3oiyHYYM1wFPjAqAzT2KMopw4S9e1hIZqXtndAM1gWNvlkNgA71UsH907XUwQzqfvAGJg1ufI_u3ix8cbLA_6gSixz3MNcCK4ZBBgfKTPBWMY7_rf-l11B61q_u9Hd9aFv1f0151osGvvvHuT3V6zz9sa7bwUP7TZzku0eO9-u2AvJ3ruOkU87bx7myGdY0evMaOuF--0Wb2DH4bQAXAC5777xwfHvKZMw0JpSP_GtOuIutZ8wzQketV0GOG2PcYFCIDxk6jRTLzTfMVl6LZuKxh390fXWTjQSOP2MLQrNWen64dmdNu61J4_aWBqblSctkN2zUzNBbx_IzQ27WjZtTc1V5omp979tikpXH3a8PTS8M2UHB0CULo3qu2FegmaZK4GxEd0f9AgtZvw49ukdso51SzVDlAdUScbp9qxj83BQRPVM0b-05r_Zmt-3pQBSs-15hfN6XUm0hZYTSh8RYZgj77wv_v8Zfmf3z4vH379epNe34PkGoPkCq7azyWcau1OrqCr38hA1aEf2mXbd0HNi0cY_feNWC_yyySfJTNywS7jyRDHk-EEjy_Wl-MEZRmakTyZTkZjhApEZ1PGppNsHOcTFl_wy8ZJJijGIzweTLIiH2UzzOIiZzljYIhYSbgYOBcbKL268M21l3ESj4azC0EyJoz_CgrGbef1TudgdH2hL32OzOqVAUMkuLGmg2W5Ff4bKuHLFaNrMLpqOqxH13C-94GM9tMiYrv_lY_vayZP1GJdu3j_gydPv3bSfOrkxHdOLmotLt_yURAvqc0l_l8AAAD__111w9w">