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

    <tr>
        <th>Summary</th>
        <td>
            [clang][OpenMP] Clang codegen error
        </td>
    </tr>

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

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

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

<pre>
    Consider the following testcase:

```
template <typename, typename> class a {
public:
  int operator*();
  void operator++();
};
template <typename c, typename d> bool operator!=(a<c, d>, a<c, d>);
class e {
public:
  e(long);
  a<int, int> begin();
  a<int, int> end();
};
template <typename> class h { void i() const; };
template <typename f> void h<f>::i() const {
#pragma omp task untied
  {
 e g(0);
    for (auto b : g)
      ;
  }
}
template class h<int>;
```
when compiled with `-fopenmp`, there is a crash
```
clang:/llvm-project/clang/lib/CodeGen/Address.h:87: clang::CodeGen::Address::Address(llvm::Value *, llvm::Type *, CharUnits): Assertion `llvm::cast<llvm::PointerType>(Pointer->getType()) ->isOpaqueOrPointeeTypeMatches(ElementType) && "Incorrect pointer element type"' 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: ./install/bin/clang -c -fopenmp test.cpp
1.      <eof> parser at end of file
2.      Per-file LLVM IR generation
3. test.cpp:13:36: Generating code for declaration 'h<int>::i'
 #0 0x0000000009a7ca5a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /llvm-project/llvm/lib/Support/Unix/Signals.inc:565:11
 #1 0x0000000009a7cc0b PrintStackTraceSignalHandler(void*) /llvm-project/llvm/lib/Support/Unix/Signals.inc:632:1
 #2 0x0000000009a7b2d6 llvm::sys::RunSignalHandlers() /llvm-project/llvm/lib/Support/Signals.cpp:103:5
 #3 0x0000000009a7c34e llvm::sys::CleanupOnSignal(unsigned long) /llvm-project/llvm/lib/Support/Unix/Signals.inc:362:1
 #4 0x000000000998878e (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) /llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:0:7
 #5 0x0000000009988b23 CrashRecoverySignalHandler(int) /llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:390:1
 #6 0x00007f3cc8b228c0 __restore_rt (/lib64/libpthread.so.0+0x168c0)
 #7 0x00007f3cc8956c6b raise (/lib64/libc.so.6+0x4ac6b)
 #8 0x00007f3cc8958305 abort (/lib64/libc.so.6+0x4c305)
 #9 0x00007f3cc894ec6a __assert_fail_base (/lib64/libc.so.6+0x42c6a)
#10 0x00007f3cc894ecf2 (/lib64/libc.so.6+0x42cf2)
#11 0x000000000a0052be clang::CodeGen::Address::Address(llvm::Value*, llvm::Type*, clang::CharUnits) /llvm-project/clang/lib/CodeGen/Address.h:88:3
#12 0x000000000a569a78 clang::CodeGen::CodeGenFunction::EmitOMPTaskBasedDirective(clang::OMPExecutableDirective const&, llvm::omp::Directive, clang::CodeGen::RegionCodeGenTy const&, llvm::function_ref<void (clang::CodeGen::CodeGenFunction&, llvm::Function*, clang::CodeGen::OMPTaskDataTy const&)> const&, clang::CodeGen::OMPTaskDataTy&)::$_0::operator()(clang::CodeGen::CodeGenFunction&, clang::CodeGen::PrePostActionTy&) const /llvm-project/clang/lib/CodeGen/CGStmtOpenMP.cpp:4669:11
#13 0x000000000a568465 void clang::CodeGen::RegionCodeGenTy::CallbackFn<clang::CodeGen::CodeGenFunction::EmitOMPTaskBasedDirective(clang::OMPExecutableDirective const&, llvm::omp::Directive, clang::CodeGen::RegionCodeGenTy const&, llvm::function_ref<void (clang::CodeGen::CodeGenFunction&, llvm::Function*, clang::CodeGen::OMPTaskDataTy const&)> const&, clang::CodeGen::OMPTaskDataTy&)::$_0>(long, clang::CodeGen::CodeGenFunction&, clang::CodeGen::PrePostActionTy&) /llvm-project/clang/lib/CodeGen/CGOpenMPRuntime.h:77:5
#14 0x000000000a2df676 clang::CodeGen::RegionCodeGenTy::operator()(clang::CodeGen::CodeGenFunction&) const /llvm-project/clang/lib/CodeGen/CGOpenMPRuntime.cpp:601:3
#15 0x000000000a31c6af (anonymous namespace)::CGOpenMPRegionInfo::EmitBody(clang::CodeGen::CodeGenFunction&, clang::Stmt const*) /llvm-project/clang/lib/CodeGen/CGOpenMPRuntime.cpp:1039:3
#16 0x000000000a0e565f clang::CodeGen::CodeGenFunction::GenerateCapturedStmtFunction(clang::CapturedStmt const&) /llvm-project/clang/lib/CodeGen/CGStmt.cpp:2857:18
#17 0x000000000a2e45cc clang::CodeGen::CGOpenMPRuntime::emitTaskOutlinedFunction(clang::OMPExecutableDirective const&, clang::VarDecl const*, clang::VarDecl const*, clang::VarDecl const*, llvm::omp::Directive, clang::CodeGen::RegionCodeGenTy const&, bool, unsigned int&) /llvm-project/clang/lib/CodeGen/CGOpenMPRuntime.cpp:1326:19
#18 0x000000000a54a9a2 clang::CodeGen::CodeGenFunction::EmitOMPTaskBasedDirective(clang::OMPExecutableDirective const&, llvm::omp::Directive, clang::CodeGen::RegionCodeGenTy const&, llvm::function_ref<void (clang::CodeGen::CodeGenFunction&, llvm::Function*, clang::CodeGen::OMPTaskDataTy const&)> const&, clang::CodeGen::OMPTaskDataTy&) /llvm-project/clang/lib/CodeGen/CGStmtOpenMP.cpp:4772:19
#19 0x000000000a54d1c6 clang::CodeGen::CodeGenFunction::EmitOMPTaskDirective(clang::OMPTaskDirective const&) /llvm-project/clang/lib/CodeGen/CGStmtOpenMP.cpp:4977:1
#20 0x000000000a0d8bdc clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*, llvm::ArrayRef<clang::Attr const*>) /llvm-project/clang/lib/CodeGen/CGStmt.cpp:253:5
#21 0x000000000a0e1ccf clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) /llvm-project/clang/lib/CodeGen/CGStmt.cpp:474:3
#22 0x000000000a0b4ccd clang::CodeGen::CodeGenFunction::EmitFunctionBody(clang::Stmt const*) /llvm-project/clang/lib/CodeGen/CodeGenFunction.cpp:1228:5
#23 0x000000000a0b5aa4 clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) /llvm-project/clang/lib/CodeGen/CodeGenFunction.cpp:1437:3
#24 0x0000000009f61fcf clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) /llvm-project/clang/lib/CodeGen/CodeGenModule.cpp:5084:3
#25 0x0000000009f59000 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) /llvm-project/clang/lib/CodeGen/CodeGenModule.cpp:0:9
#26 0x0000000009f4f969 clang::CodeGen::CodeGenModule::EmitDeferred() /llvm-project/clang/lib/CodeGen/CodeGenModule.cpp:2554:5
#27 0x0000000009f4d22f clang::CodeGen::CodeGenModule::Release() /llvm-project/clang/lib/CodeGen/CodeGenModule.cpp:506:3
#28 0x000000000ad4ce3e (anonymous namespace)::CodeGeneratorImpl::HandleTranslationUnit(clang::ASTContext&) /llvm-project/clang/lib/CodeGen/ModuleBuilder.cpp:0:18
#29 0x000000000ad4653c clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) /llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:304:14
#30 0x000000000d45c9ae clang::ParseAST(clang::Sema&, bool, bool) /llvm-project/clang/lib/Parse/ParseAST.cpp:182:12
#31 0x000000000ab727a6 clang::ASTFrontendAction::ExecuteAction() /llvm-project/clang/lib/Frontend/FrontendAction.cpp:1085:1
#32 0x000000000ad428d2 clang::CodeGenAction::ExecuteAction() /llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:1107:5
#33 0x000000000ab721cc clang::FrontendAction::Execute() /llvm-project/clang/lib/Frontend/FrontendAction.cpp:980:7
#34 0x000000000aaae5c9 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1036:23
#35 0x000000000ad2dc87 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:264:8
#36 0x000000000625161d cc1_main(llvm::ArrayRef<char const*>, char const*, void*)/llvm-project/clang/tools/driver/cc1_main.cpp:248:13
#37 0x000000000624525e ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) /llvm-project/clang/tools/driver/driver.cpp:317:5
#38 0x000000000a9856c5 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const::$_0::operator()() const /llvm-project/clang/lib/Driver/Job.cpp:407:34
#39 0x000000000a985695 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const::$_0>(long) /llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:5
#40 0x000000000997d279 llvm::function_ref<void ()>::operator()() const /llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:5
#41 0x000000000998858a llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) /llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:426:3
#42 0x000000000a984e7b clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const /llvm-project/clang/lib/Driver/Job.cpp:407:7
#43 0x000000000a92ddc2 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const /llvm-project/clang/lib/Driver/Compilation.cpp:196:15
#44 0x000000000a92dfb8 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const /llvm-project/clang/lib/Driver/Compilation.cpp:249:13
#45 0x000000000a943e05 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) /llvm-project/clang/lib/Driver/Driver.cpp:1617:7
#46 0x0000000006244c64 main /llvm-project/clang/tools/driver/driver.cpp:489:9
#47 0x00007f3cc894124d __libc_start_main (/lib64/libc.so.6+0x3524d)
#48 0x0000000006243bca _start /home/abuild/rpmbuild/BUILD/glibc-2.31/csu/../sysdeps/x86_64/start.S:122:0
clang-17: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 17.0.0 (https://github.com/llvm/llvm-project.git 51ba13b1aea3d6e04310b80b6bcfc641049b9890)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /llvm-project/./install/bin
clang-17: note: diagnostic msg:
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-17: note: diagnostic msg: /tmp/test-dc78e1.cpp
clang-17: note: diagnostic msg: /tmp/test-dc78e1.sh
```
I have isolated the commit which started causing this issue - https://reviews.llvm.org/rGc070d5ceff05c3459b9a9add6d18aae9a3fa5916 (51ba13b1aea3 - [CGStmtOpenMP] Remove uses of deprecated Address constructor). Basically `void h<f>::i()` causes the failure in Address.h as `isOpaqueOrPointeeTypeMatches`  returns false. There is a mismatch of `*Ty` (`llvm::Type::StructTyID`) and `*PointeeTy` (`llvm::Type::PointerTyID`) .

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW19zo7qS_zTkRRUXiD-Ghzw4djwnp2Y2qcTn3EeXEI2tHUCsJDLJt9-SAIOIncTJ7N3duncqNbZF0_y61f8kNURKtqsArpzw2glXF6RRey6uHpgi1Qu5vkh59nK15JVkGQik9oByXhT8F6t2SIFUlEhw_IXjrhy3_z9yuz_zU0FZF0QBcvyleqmhIiU4eIkO3_0bRAsiJSLImV-3N9VNWjB6YIwQqxTiNQiiuHDwwsGxgxPHv-6vP3GWjQiuzZ9F48xXh-_HMCE6RoUyjSvlvBhx9Rx_5eCYOP7SEGsa_TkZGJ7ZygVvyAUOjgte7WxpNENWKc1Sf2gksGPVK6lf00GVnSn3oP-9xtlqkrVMEOWVVI5_jd7VXq75mHv3jr_Uv7SU_sLiNCjCwX4tyK4kiJc1UkT-RE2lGGS9aAdKBGjn4Ni1JUco5wLpyWgURyly_AUySjxcR2hEruEftGEL0cneaVLDvj5qx7_2UCHKy5oVkKFfTO2RE7mXOa-hKmtNps1nDwIQ07ZMBZH7o5xoQaqd1g5eF8VTeVkL_p9AlYPX7RW8Lljq4PWSZ_ANKgevF1kmQMrZ3vEX8VzLeuDhL3oy86OjtH_gWD-nHfubFA0g40JLNAxvXurD6HJPxF8VU9KofIEWUoJQjFda4OEWSrRpLIeBe84qBUKzMn4QdwOXjn-zA2XGW9vECdKDTN7V5L8auBMtJWiSH0TRPWjQNwWUUHX3JcjBkYMj5GB8W1EuBFCF6vYJCFpS474Oxg6eo5zoiZq1Kr__frN4vEGySUumEEFps0MCai4UUhztlaplOyEOXu-Y2jfpjPKym6DX88SkbDTENSJVhlhFiyYDEx3NrKOU0J9KEGoCXS2gFpyClJAhyRvRDus7iZScMqIgQ6KpkKSC1aqD_KgI_YmypqwP4cKdoXvBd4KUiIhdoyXWsNFMQ6qkIkXh4HWqA0VrSuiSot5CTbie0bpueXmz3kmWwI3z1kRIEIgoHUQQz1HOCmiJcUd8D-JSj6Lv3__-gW4f0A4qHRwZr1pCfzY8xl94vuMv_EhD_NYRVjtEeQbGezOgBWnvRg6ej12wixzzzn8d7LvIfXb7fwmZUxKSkf3Kl87m7wWrlNHdpp2Ake0L8mvLpRJASmNMbdQ0pjWd4X7ejSM-NrU2FQev_6rYsx5gu4oUcsYqHcvDKNTCegNYbwqWuimaIGt5_EGqrADh4FjHTuOAX4UT-VjDGdDgCZoUZ9Ex1T00lQVKdqH7w3B6HN3su3r6wwGHP9WKH8AxHMsCSNXUdx0aB8dNZaqUDHWp8osa8qOJhgILWRLH8xhMcql49VLyRiKd42RtDCrpUGpPfwDKn0C8LHml4FndlnXRXm1VaGgcHHc5-vNiHHtYp2bX8RcjPwmnoqTYR9btU8M71wfewOInrq3YqEMzz31K4xTjmLpouxUgFRewFQoZG9PPiIL2s1Z7ASSbST5zHXztPntRTN0htTvYn1tckzCiUYoEYRJes6OaUWQYBYRGqcUonjCKfTdEJOXHcI0ZUd8NLUaJzSgAGhG03RKTObc6FW1T8h48TCNy4KqjiPuKa47fY5Fji4UViYjrhjiFLxYPR2uHbnDMeVRFHDGuD5U6sbapQRgrkJEwSsg8PilM92PdVNTkJzN4UzJ19-N-Q-TPayIhWzFdRrAnnSdGjO5-3N88A20USQs40HTVcJs5BvF5m6H9xYjZ8iSsB9gxXnVDm5cTPPMO9VZA7vhLU1fbEN-UdcpuuPBqlsZsOs2siCIWssSsEUZAP8Sgv3VhKqtg63bqOiyn2lLwTKFOUd8LuOdSLQxt__B-1fFh61t-e1Sluquh-nHfxbQgipJRetd26E_sMA6isF37fHDWOwpSFLpSXFd6_fhvM_5_Y8Y3h0X7aR6_w3rPsdvWZh_0IroEEz3n86H80lZrFTkEZ3k0j84z2C-57mec0Raq9cfI9eysYFU8xPdoRPJ3i7eetRHztsr54FjXPHv5SljSEaQ3sxPl_HkSe66f2CJHdlaHMArz8xJhtx6DJalVIyDToAeRLOFHFGNnOjuqdtLgONSG6cWDOHPbMiEIKT0tjq2jdhBKprTL3jWqYBVkx0X5QDwcUf9NxApoMZrKr17-nwi2KeeFtbYw5fwXw0e_fMd67e6NysnYznwBSQj-dwX2fzt1fbH8mc_xxAiSiRFkHj2dSN4zgtPzb139UuSxBUpMYhzKOeza0TSL0-yN8HNKHv0gW4ZJIhibw0II8vJgLGt0w0IpMdxgjhI-HWVD38r-eLIQBI_SM1OGFnLJy5o3lUkG_2Bqzxv1SHkNU88YqI4Gq5ML0N3OLDEfC35iT-JDwgfzwMqX2F44umlA6ela_aTw_cjrAuErKd9-Wh96MY7t-fMnIoSEBJ9M-TybzNe3gqek0OnqU0Fr-a0n1IXUZz31uB4Cf25Ppb1Vl0de_r4d_-BZU8Awka28_aNWkLOKva4WTmmlHR-2Qj4hZQuokzF044m52nt4eZi4rvs5Gf-3ZdNr_iFz4MgWLMiTKDlXsBXkIARkJzenz8GHwzCw_Ww-gZhhfJZ9PUABRMJvQRe6kW0YdvmVBRT89_epW8btym26Qb0RpJKFOYL5q2KT_LV43HTbu2d7cyvGdcOKDMTIFkZVP04mwkShb6Xda0J_QpUteSWbEsQ_A3b3bTEOQb4bmEB0AG4fRWVBSBNi7aneEyFh8biZ5AgoySQNtp_vAzQM-8_F46YPjrGpzPCAzE7y6RzPiVWZLR43a6F1U2WLcXIzlTYs-iXTRzD1fEZfLbV5bhxaZZZ9DEWyAMfZsbXDV4G9PZue59rbIvaplNaZZy8-31DYb1JVEo_OcDQke6eGEAjpJEyaLgRxW0lFKgrHlXVaho-5xQj29IHDxoQOUHiIUPbxE8lwRuP5GHoHcmD4xCk5sukwlfBjyaiHvDGOtT75sD76R9q1h5DkW_kpwqEXeRmi1NuWxHTfHC_g92RStS-RPYaXaDjdPS2D4ryQDl5ngj2B0Be6J_dwg7g9VD_gndt4gxCHgHqpl16rhhHqx5IUxd9AD5ngCPh3bOMVyPZLHyy9iXfZGSuJw4iGY3vo2LSTvvSWvCxJlU297Kjeh8G7Wk8qKazBRyVYtTOkN6ibFqk61tstfX72vPZHSiSjW2noO5VYxHpgqwRhSvaXJ-xIUWjL4mK43j5yMYT5xaifarSXfHRf9eO7pat-Gv7kab_6MRHOHyWs5NUkJN15xbv7He3WQ6eH7rxim08OLP7lJ3E4EHjjHL1rExoGFquNg9ePm-_9SoQUN89KkPbwMwgtTwrsBphknuF5ct78nWVmnwMd2avWwJt2I4TxuGvnWCtBV0Y31SPJoXixDOdtIX9TE0OA7ao7wBP3CWCe_qvHsM8HpqHOCezSK8FZRvFJxZokTl7VYL22rfJhcqMmOLV7-gbp4qxzq4PAI6R9nZSYffSRXwRTyfM0PlfyP3kqT4v9J0-_M6lO7G6_LgQOdlATJoa24o9qqjeW36MwHCR2pRPYdWUS-OCerCNWo-9WCXik0Dyl6H-uwj6sqtW42PIib-JQk_o1CGgUIF1BfrqgC-LE2sIJJr1XgYeDDG23BUt1-CFCbbvnne5S8kMcZOMupSCe4PZTSlDLTiPf81JnIJI2rNDLEVGX_dfrv26_rxy83ulHXOKZ72nRZOPg9Wzm4LV8kRnUWr7nONoaMIbt7LHdZTX7EkNX9qXRKAIhdBzs2qxR3i0rEO1mse0tbpvA4ZmptqfV8wMtdyMBXT4hxZEEQGy0wklGT0JPICTjFfLmM3fm6hvPa0Oe7ZhCoZcSz089AsTPInAD33PT2E2jlOY0Cjw3SNIkTob2uQ0RO9A5FrX6uGyqnxX_VV0WrGqeL3dV09GZJjxU8gwKTV1zyZ7bS7dtp7E5utOXXpvW637kVxquuNLLVpQxsqu4VIyiUhq_6YziC3-jd1G6vu_FZrNY_oE2f9yg9d3373f_uP2Pb2h9-_3mEW3uzPD1X9_Qw8393cPmgOH-WN92bNrZTvZuHwgEIJNOIUNEHVh-SANaoaqs9f8g1WVG5zF4Q-P2F3iceB_hFu3JEyAmeWEAmz52XpZMoV97RvfIeAxkiJJGmhd_9kwi0wOPLifN8wKeGPySM20RMy50gBHfqDt3s5BCnrsh9YMwSROSkCyLMi8mBBLi5yRMvEg7wdii0SVywuvxGZ4TrtADlPwJUCNBIp6jDGoBraa73sE2yIqGmlo3maFrXRyRonhBTuSefkfFiVwjIsj2RSfCikZoD0aHpkREpObx5osLkYuQANWISqKcFBJmaDO8FlIyWWpCDd28NLLYvOhbNITx2xXtWxRdEdhQtXm5XRn61vraWw9Pf5vD4cWMA4vuHYOL7MrPEj8hF3DlRXEyn-PYwxf7K5JkXjJP8NwjQUqSnGY5CdwsIhAQl1D3gl1hF_vu3Es8H7ueN8t9N3W9jMR5kobUi5zAhZKw4mAJF8ZgriI_Cf2LgqRQSPPSGcYV_GqtycHYCVcX4srEk7TZSSdwCybVYE8XiqnCvK3W5q9w5YTXg20sTWjV0XgHVRvGLxpRXH3-DQ-D978DAAD__49curI">