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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR] Crash During GPU Module Serialization with XeGPU pipeline
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            mlir
      </td>
    </tr>

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

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

<pre>
    Hi, I encountered a crash when lowering a gpu program using XeGPU pipeline, please review the following program for reproduction.

**Input Program**
```llvm
module attributes {gpu.container_module} {
  gpu.module @kernels {
    gpu.barrier
  }

  func.func @main() -> i32 {
    %mem = memref.alloca() : memref<10xf32>
    %c0_index = arith.constant 0 : index
 %cst = arith.constant 3.140000e+00 : f32
    memref.store %cst, %mem[%c0_index] : memref<10xf32>
    %loaded = memref.load %mem[%c0_index] : memref<10xf32>
    %cast = arith.fptosi %loaded : f32 to i32
 memref.dealloc %mem : memref<10xf32>
    return %cast : i32
 }
}
```

**Stack Trace**
```bash
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and instructions to reproduce the bug.
Stack dump:
0.      Program arguments: mlir-opt input.mlir --gpu-lower-to-xevm-pipeline
 #0 0x00005b55c2d45d32 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /llvm-project/llvm/lib/Support/Unix/Signals.inc:881:22
 #1 0x00005b55c2d461f6 PrintStackTraceSignalHandler(void*) /llvm-project/llvm/lib/Support/Unix/Signals.inc:963:1
 #2 0x00005b55c2d43568 llvm::sys::RunSignalHandlers() /llvm-project/llvm/lib/Support/Signals.cpp:108:20
 #3 0x00005b55c2d455e6 SignalHandler(int, siginfo_t*, void*) /llvm-project/llvm/lib/Support/Unix/Signals.inc:448:14
 #4 0x000072a336245cb0 (/usr/lib/x86_64-linux-gnu/libc.so.6+0x45cb0)
 #5 0x000072a3362a648c pthread_kill (/usr/lib/x86_64-linux-gnu/libc.so.6+0xa648c)
 #6 0x000072a336245b7e raise (/usr/lib/x86_64-linux-gnu/libc.so.6+0x45b7e)
 #7 0x000072a3362288ec abort (/usr/lib/x86_64-linux-gnu/libc.so.6+0x288ec)
 #8 0x00005b55c2d1dc98 bindingsErrorHandler(void*, char const*, bool) /llvm-project/llvm/lib/Support/ErrorHandling.cpp:253:55
 #9 0x00005b55d0eb1d92 llvm::Value::~Value() /llvm-project/llvm/lib/IR/Value.cpp:105:19
#10 0x00005b55d0eb0ae4 llvm::User::~User() /llvm-project/llvm/lib/IR/User.cpp:232:1
#11 0x00005b55c8f5629c llvm::Constant::~Constant() /llvm-project/llvm/include/llvm/IR/Constant.h:57:3
#12 0x00005b55c8f562c4 llvm::GlobalValue::~GlobalValue() /llvm-project/llvm/include/llvm/IR/GlobalValue.h:194:3
#13 0x00005b55d0d6b33d llvm::GlobalObject::~GlobalObject() /llvm-project/llvm/lib/IR/Globals.cpp:114:1
#14 0x00005b55d0d65685 llvm::Function::~Function() /llvm-project/llvm/lib/IR/Function.cpp:525:1
#15 0x00005b55c8d85b57 llvm::ilist_alloc_traits<llvm::Function>::deleteNode(llvm::Function*) /llvm-project/llvm/include/llvm/ADT/ilist.h:42:39
#16 0x00005b55c8d85151 llvm::iplist_impl<llvm::simple_ilist<llvm::Function>, llvm::SymbolTableListTraits<llvm::Function>>::erase(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Function, true, false, void, false, void>, false, false>) /llvm-project/llvm/include/llvm/ADT/ilist.h:206:12
#17 0x00005b55d0e4f3d9 llvm::iplist_impl<llvm::simple_ilist<llvm::Function>, llvm::SymbolTableListTraits<llvm::Function>>::erase(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Function, true, false, void, false, void>, false, false>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Function, true, false, void, false, void>, false, false>) /llvm-project/llvm/include/llvm/ADT/ilist.h:242:20
#18 0x00005b55d0e4e057 llvm::iplist_impl<llvm::simple_ilist<llvm::Function>, llvm::SymbolTableListTraits<llvm::Function>>::clear() /llvm-project/llvm/include/llvm/ADT/ilist.h:246:41
#19 0x00005b55d0e48210 llvm::Module::~Module() /llvm-project/llvm/lib/IR/Module.cpp:123:18
#20 0x00005b55c4f99f6a std::default_delete<llvm::Module>::operator()(llvm::Module*) const /mnt/raid/bin/anaconda3/envs/cuda-gcc14/lib/gcc/x86_64-conda-linux-gnu/14.3.0/include/c++/bits/unique_ptr.h:93:2
#21 0x00005b55c4f98f50 std::unique_ptr<llvm::Module, std::default_delete<llvm::Module>>::~unique_ptr() /mnt/raid/bin/anaconda3/envs/cuda-gcc14/lib/gcc/x86_64-conda-linux-gnu/14.3.0/include/c++/bits/unique_ptr.h:400:8
#22 0x00005b55cc4985b8 mlir::LLVM::ModuleTranslation::~ModuleTranslation() /llvm-project/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp:806:1
#23 0x00005b55cc4a42d1 mlir::translateModuleToLLVMIR(mlir::Operation*, llvm::LLVMContext&, llvm::StringRef, bool, llvm::vfs::FileSystem*) /llvm-project/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp:2614:1
#24 0x00005b55c8b86e5c mlir::LLVM::ModuleToObject::translateToLLVMIR(llvm::LLVMContext&) /llvm-project/mlir/lib/Target/LLVM/ModuleToObject.cpp:145:62
#25 0x00005b55c4f95669 (anonymous namespace)::SPIRVSerializer::run() /llvm-project/mlir/lib/Target/LLVM/XeVM/Target.cpp:563:8
#26 0x00005b55c4f95d5b (anonymous namespace)::XeVMTargetAttrImpl::serializeToObject(mlir::Attribute, mlir::Operation*, mlir::gpu::TargetOptions const&) const /llvm-project/mlir/lib/Target/LLVM/XeVM/Target.cpp:639:10
#27 0x00005b55c4f97321 mlir::gpu::detail::TargetAttrInterfaceInterfaceTraits::FallbackModel<(anonymous namespace)::XeVMTargetAttrImpl>::serializeToObject(mlir::gpu::detail::TargetAttrInterfaceInterfaceTraits::Concept const*, mlir::Attribute, mlir::Operation*, mlir::gpu::TargetOptions const&) /llvm-project/build_de045d/tools/mlir/include/mlir/Dialect/GPU/IR/CompilationAttrInterfaces.h.inc:250:1
#28 0x00005b55cfdf2532 mlir::gpu::TargetAttrInterface::serializeToObject(mlir::Operation*, mlir::gpu::TargetOptions const&) const /llvm-project/build_de045d/tools/mlir/include/mlir/Dialect/GPU/IR/CompilationAttrInterfaces.cpp.inc:20:3
#29 0x00005b55c5e392ac (anonymous namespace)::moduleSerializer(mlir::gpu::GPUModuleOp, mlir::gpu::OffloadingLLVMTranslationAttrInterface, mlir::gpu::TargetOptions const&) /llvm-project/mlir/lib/Dialect/GPU/Transforms/ModuleToBinary.cpp:97:10
#30 0x00005b55c5e396f5 mlir::gpu::transformGpuModulesToBinaries(mlir::Operation*, mlir::gpu::OffloadingLLVMTranslationAttrInterface, mlir::gpu::TargetOptions const&) /llvm-project/mlir/lib/Dialect/GPU/Transforms/ModuleToBinary.cpp:130:19
#31 0x00005b55c5e38fe4 (anonymous namespace)::GpuModuleToBinaryPass::runOnOperation() /llvm-project/mlir/lib/Dialect/GPU/Transforms/ModuleToBinary.cpp:74:13
#32 0x00005b55d18d2ff3 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::'lambda'()::operator()() const /llvm-project/mlir/lib/Pass/Pass.cpp:613:24
#33 0x00005b55d18dae96 void llvm::function_ref<void ()>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::'lambda'()>(long) /llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:47:40
#34 0x00005b55c2d67732 llvm::function_ref<void ()>::operator()() const /llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:62
#35 0x00005b55d18e0a2d void mlir::MLIRContext::executeAction<mlir::PassExecutionAction, mlir::Pass&>(llvm::function_ref<void ()>, llvm::ArrayRef<mlir::IRUnit>, mlir::Pass&) /llvm-project/mlir/include/mlir/IR/MLIRContext.h:297:3
#36 0x00005b55d18d367b mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /llvm-project/mlir/lib/Pass/Pass.cpp:619:23
#37 0x00005b55d18d3ce8 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /llvm-project/mlir/lib/Pass/Pass.cpp:688:15
#38 0x00005b55d18d9869 mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) /llvm-project/mlir/lib/Pass/Pass.cpp:1128:40
#39 0x00005b55d18d936f mlir::PassManager::run(mlir::Operation*) /llvm-project/mlir/lib/Pass/Pass.cpp:1102:69
#40 0x00005b55c2e4fe8c performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) /llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:596:13
#41 0x00005b55c2e506d2 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, mlir::SourceMgrDiagnosticVerifierHandler*, llvm::ThreadPoolInterface*) /llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:686:26
#42 0x00005b55c2e50ce1 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::'lambda'(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef, llvm::raw_ostream&)::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef, llvm::raw_ostream&) const /llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:784:25
#43 0x00005b55c2e51ea5 llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::'lambda'(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef, llvm::raw_ostream&)>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef const&, llvm::raw_ostream&) /llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:52
#44 0x00005b55d1e38d15 llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef const&, llvm::raw_ostream&) const /llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:12
#45 0x00005b55d1e383de mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) /llvm-project/mlir/lib/Support/ToolUtilities.cpp:30:30
#46 0x00005b55c2e50fab mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) /llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:789:47
#47 0x00005b55c2e512db mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) /llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:835:13
#48 0x00005b55c2e51499 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) /llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:851:21
#49 0x00005b55c2d19901 main /llvm-project/mlir/tools/mlir-opt/mlir-opt.cpp:347:32
#50 0x000072a33622a601 (/usr/lib/x86_64-linux-gnu/libc.so.6+0x2a601)
#51 0x000072a33622a718 __libc_start_main (/usr/lib/x86_64-linux-gnu/libc.so.6+0x2a718)
#52 0x00005b55c2d19435 _start (/mnt/raid/llvm-project/build_de045d/bin/mlir-opt+0x464c435)
Aborted mlir-opt input.mlir --gpu-lower-to-xevm-pipeline
```

**Used Command**
```bash
mlir-opt input.mlir --gpu-lower-to-xevm-pipeline
```

Version: de045d579791d978cce109f9348d20560e112d74
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsW1tT476S_zTmRUXKlu8PPGQCmUMVLBSXqVP7kpJtOdGOI3kleQb24Xz2LV0cy4ZAyMzs4ez5V1FgZKv7179utVqyjIQga4rxmRd_8eLzE9TJDeNn_9kJSehJwarns78RDy7AJcC0ZB2VmOMKIFByJDbg5wZT0LCfmBO6Bgis2w60nK052oJOqLa_46-3j6AlLW4IxUpS22AkMOD4B8E_gdxgULOmYT_V033fmnHAcctZ1ZWSMDrz_Ln6gernkradBLfmUdOk7iW--WmaH1vPn29Z1TUYICk5KTqJBfDSL-u2m5WMSkQo5ivziJeeq1uePwcK_8x29CL_O-YUN2J319wvEOcEc93ipecGGQB1R8uZ-qV6bhGhHsw8mINTL7wAJISOFA_GW7wFXngOtnjLcT1DTcNKZHt44dy2e-Ei8J_qEHrhxdC39FeEVvhJC0CcyI2ySUhEJfB1b31bdVBPC_nag-EsiHzf97EHv_iml9JjlFhUQjKOrQzlOYNbRcoAwovP3wXcMFThyrVXtRwtrkQjk-pWMkFGerQtQDLFu-pntVZY8zzw_4YejmXHqaNu3guzPje_-6Bz4_NeovI7eOCoxC-js0Bi4_nz26uL-f0FEF2xJRIgUHRrFfCMSwV7I2UrvHDuwaUHl2siN10xK9nWg0sd3ebPacvZf-FSenBJhOiw8OASIFoBQsumq7AeW2acFqj8LhUge19IbgaWUOr6kWZ6FN1aDTdjRdVtWwXEn_szz8_toAOIr7stplJoDhvCT1krAVEDc6b-Baen67Y71ZnhVLLTJ6zg9klAB2boA_9JRWBcxHEJqyiuQgi0eeHcC-fiWZiLW06o1GgspdnwEEc_V0xIjlUiSFSMEir1GHpBUU8cKTy4vO9axbUHl4-UPKkGsqaoETNCSy-cZ1nghXMILdJggjQJ6gRMYBkBf0O0ajD3YPaDkUp7_1ex5EnohfPAQoETKGGcZK-RdtfRESLR55ZDsfQgylb5P_AzRYhvUYRT18U4AVMGtCcWQJA1oTVbSc3GAvw2YqJIYQoiiymymFKIwjCBUVwWPtBWLzvBd0KfsmSVRKcNod3T6Zp25kY5E2yWqFT4pDt6MLdi47FYlERZCVq54RhVq--kaY7RoaUMOpIp9CLFgCMi8HEGFCkehKdj4TDLcAlQoTLNEcJ190F4Ng6EoCrzDBSEVoSuxQXnjL8yIhag3CAO9FRkGwrGmg9FxCCb0LUNUhirkRLHFlvuYKt8XARV7uaXb6jpsLn8h7k-aIRc3nlwqZ_fDY1Y_c51-g8Df6LVRzhytD4KzK1SfXm4TvV4b6iaqHRKUBpH2Smr4wTmpaNxYWd8q3X37zua7RwyNGgQfe_ZRjGdeuE8tCjgCxSla_fXhhWocTl3W47C4gjQcII8cvCEIz9USRGG1Qs8N4VW5AKyTYf7xXTbJcogclwTTUDESRY7IJYd1ZOwBbD793DlfRerPYaxoz0euaTK4iJOHe2kIUKudEW0khwRNZkvXgN3YRoq3GCJ_4NV4yl4QP12Tn_hxPn5g2pWKLT_IhXUYT-Okin4IA5c8K1GT7ZtM0ItVAteaal7zYELR9L987ZgzQMqGnxFhHx4hwlLBuZIjHkwdBKJOZKMjwSYWxWWiDSmhbIKr1irK7DXdcEFkLzTC6YaNQIPU-e0wRi0azMXqvFXnAH9REUStN5Ix1ktqsMq_8sbH_LG4sXQ-0zofilW9MjVxaGKlWwSK9gfp51_cqyUDUbvzrsH2KzGR9Sn2kmtEWUw8B2k12ajwaR5-8_hSd506CcYqJcDmVEMR4uoqM7zOkFAyKpP2TXqGhVOKnWPqOkhWVZYa2NRwxoNpR6vTu-6aFOot6qEWHKkomxZEOrBJaKoZLRCoQeXmP5Qy9Gyq9DpuiyDaGfSuiyHQlM_Pyo3g2gWzvyRC0oPftE_y0I5GC47Sv67w6tWcu2LXDFiMxUMJoRkdewPhAw9XyNDrVY-Rp1l7x-O3J1fPxFDke-rVa2laFSqlVGexUWmF_HGmKurb9euoQ8cUdEgp1B52b4vmLXU3q4HxNdYtSoNTmQ7gmyQZ2b2sXjDMV4UwSpw8ErbHVtprBefDc_c6PDuqxQ3iaiHF4xK_CTtDoKTYCQndH2H62GJ4t7-UdvF9pI0-P5ZSLzdWwQdSQRM3HoSRqOiqMgSHJdveY65Be6OJ4eh_Tx8zIjBBKuyz1aRKkiTfnDGk8EZJ4nSkyHK6POWdQJQtMWi1ds8uXXC7eXdt3vMCWrI__SLJ94dE3MeXP4d6z-mua-a9Q5LPzqSKcYqLt7DqKQakXMp-aWe2vSc1sPeecINynm_Na3Can-sDnfWbWcujK4bUxP0C-lklJ9_lZQkzPXi1rKSTlhJVaZ9BZlbuDiMUIl5jUq8u-gnaz18UNMUqPx-zSqsaoIjyL44hO9fArlgtMStHO1a_FlXvnRi0ZGmWlXYj2I1p0jGGjH4dpgObMM5QY3p-PX2cVjBb1ticszIaDHb2H01GPtOyhnt8NRVDeMQ7rdjJPIQn_yRYP-zPJVt2zPlDxsO0C0ByxiHOUTle3nDvGpyktur4fr19tEk15t2D0U3dd0wVBG6ViPamUbG_vj1CBylkSlvWm_N-FY408EXQhF_tkklT52cMn4BoBhL6vg1gLKX-7XtjFhh5RIsPhpN_ypUBaHvbCuOX0HEOMxqHL0XXTu6etG3SIjd_HlDHbYOmUo_bkOqaxc7QEavLqogq2Bdhw7JblK-aR_YTavgzivU6iXyMOsPXbQ9U0_vj4E5Rc2zIOIaUbRWg20o6jqqX4NX9vWRed6DaYO2RYU8mNp10etrpYMnXgNY_-mn2UAvXiLLUTjhCOE80St3p-ys7aJ2ZV5c6rs9vH6Na2fUVU29cPGvxvGFKkwZXR-zQr9_uOoX_ai5eJIcCbMCSvUyyNIcjV9bJGk6evV4AMMfioHjICe5UzqH8TgysI9gZSJjIP_66vKur-HNvtgTLjuJ53YTZDF264W-q1Lfbhtp6vfEeuNAakbLoznn6PlOPzaIvbx7pETaZ19qeysLvZi3zcppsNlszOTOW4kwmYynMEmLT5pzjskduX4ZZG1Np7aWOPuwrbe7gzqjaVU9ujMh-e3GT0PhUh9Q2GKqR9j8rQecfYke-y3imMpLWjOnWj-G30y_YI4tv9mE3zxL8gms3tAdm0iIg0uUF2wdATkIYOYmunyKOUzqdzC_gfYoQD40uUwDisaHPnBU46wELeaqjjBpSLxzwGO3Qyc2iOPqxV7ePet4ia_X3AsvnBJtsSdPTr1w3RB-08prROiC0ZqsP1LmPTgrjVPWqvuOvH67IU-csigaHy7BsZ9UELSclViIL11d61XBQYTs29zEW8afe1EHbnG6fcxG5yi3u_ft_thhFLrP2YLyDq-JkPz5xf2dJ88JWlMmJCm_YU5qgodTBZPdvAd9LuOWscYp5Q_akjvEc0mW6D056zk49VyJg9dp-DQePJz8N8fBq7XbJ4nD_UTvK98_P_ADt_UOieE0i_Qej43hcBLDAUbuCYUrtiYlau6w6Bq5v0Le1-FzkDtKP2-GxzvLp79G9GcbGO5i8VPMhIfG2u9b2Cb63I8dzqMDRwEOsyqI_22G7WdM7AfHwx_YO-hP70TxNCrCCjuJQbQNkXNa3U6Kzn8Gff9vI_TNJ_a-dH61-d1idjgmq0qCR0kaIgnul2R6Yzm0K8QomRaxNSr-PYrY31RO5WZ30bCZTsspWO1n0259lBvE7XciHwyE96j4PSZmYeyuV7OpiVGe_xYT_09sifWHHfblZpRPjq_nuR-ALSJ0vzL5Uk1_2Y8vvdcc2uQb-5Pz9yjxg6NO3quO5uS9EhtMxaZBBlYr1WclJOJyZe04QlEaZIMiOOUoCmNgVFjpo4NOb7-KNcegBu6--E9REpVRGBuF84JxiatjPil69VOsR4ErsGDbLaLV3m-xfl3ZN8yF2YYExtQ4zdM8qPI0K0sc-Hmdh1FWQT9OfBwEsEqjk-osrPIwRyf4LEgzCHOY5v7J5qzGSZrWPvbrOKuyGoZhVRVBpuSlMILwhJxBHyZ-AiM_D_LYn9VhnUHfj-okzsoyyL3Ix1tEmpnyxYzx9Yn-POwM-nEc-CcNKnAj9AefEJqohl58fsLPtO-Kbi28yG-IkGKQIIls9Eei11eXd158Dhb6u7LzTn_4-fX2EZg3gKB_ma13DcFPIjeTT0BPOt6cHf-BmzXixxn83wAAAP__Feg4bA">