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

    <tr>
        <th>Summary</th>
        <td>
            MLIR tools fail to build due to `LLVMStructType`
        </td>
    </tr>

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

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

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

<pre>
    Hey,

I am facing some issues with building MLIR tools, e.g., `mlir-query` or `mlir-translate`, as I'm getting the following error at the linking stage (full text at the end of the issue):

```
/usr/bin/ld: lib/libMLIRLLVMDialect.a(LLVMTypes.cpp.o): in function `generatedTypeParser(mlir::AsmParser&, llvm::StringRef*, mlir::Type&)::{lambda(llvm::StringRef, llvm::SMLoc)#3}::operator()(llvm::StringRef, llvm::SMLoc) const':
/home/igor/build-linux/tools/mlir/include/mlir/Dialect/LLVMIR/LLVMTypes.cpp.inc:37: undefined reference to `mlir::LLVM::LLVMStructType::parse(mlir::AsmParser&)'
/usr/bin/ld: lib/libMLIRLLVMDialect.a(LLVMTypes.cpp.o): in function `auto generatedTypePrinter(mlir::Type, mlir::AsmPrinter&)::{lambda(auto:1)#3}::operator()<mlir::LLVM::LLVMStructType>(mlir::LLVM::LLVMStructType) const':
/home/igor/build-linux/tools/mlir/include/mlir/Dialect/LLVMIR/LLVMTypes.cpp.inc:79: undefined reference to `mlir::LLVM::LLVMStructType::print(mlir::AsmPrinter&) const'
```

I am trying to build the fairly recent main (969b7658fe34cf7638e1385d813e765a4c61dfc7), only enabling the MLIR project:

```
cmake ./llvm-linux/llvm -G="Ninja" -DLLVM_ENABLE_PROJECTS=mlir -DLLVM_TARGETS_TO_BUILD="Native" -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_INSTALL_PREFIX="./install-linux" -DLLVM_PARALLEL_LINK_JOBS=1 -DLLVM_PARALLEL_COMPILE_JOBS=12 -B build-linux -DCMAKE_BUILD_TYPE=Debug -DLLVM_CCACHE_BUILD=ON
```

I am building it on Ubuntu 22.04.3 inside WSL with gcc 11.4.0. I tried disabling ccache and recreating the whole build directory, but no success. My colleague also managed to recreate the same issue independently on his machine. I had no issues few days ago, so the problem seems to be recent. In fact, I tracked the potential problem to this PR: https://github.com/llvm/llvm-project/pull/117485, as it involves changes to `LLVMStructType`. To verify whether this could be causing an issue I reverted the commit (d35098bfa8e1e213f85a6b5035a5a7102f5da315) locally and everything works again.

At this point, I am not sure whether there is a bug or there is something wrong with my setup, so some external input would be appreciated.

Mentioning @zero9178 and @gysit as they may be the relevant people to help me with the issue.

Full error message:

```
[41/41] Linking CXX executable bin/mlir-translate
FAILED: bin/mlir-translate
: && /usr/bin/c++ -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -Wundef -Wno-unused-but-set-parameter -Wno-deprecated-copy -g -Wl,-rpath-link,/home/igor/build-linux/./lib tools/mlir/tools/mlir-translate/CMakeFiles/mlir-translate.dir/mlir-translate.cpp.o -o bin/mlir-translate  -Wl,-rpath,"\$ORIGIN/../lib:"  lib/libLLVMSupport.a lib/libMLIRAffineAnalysis.a  lib/libMLIRAffineDialect.a lib/libMLIRAffineTransforms.a  lib/libMLIRAffineTransformOps.a lib/libMLIRAffineUtils.a  lib/libMLIRAMDGPUDialect.a lib/libMLIRAMDGPUTransforms.a  lib/libMLIRAMDGPUUtils.a lib/libMLIRAMXDialect.a  lib/libMLIRAMXTransforms.a lib/libMLIRArithDialect.a  lib/libMLIRArithValueBoundsOpInterfaceImpl.a lib/libMLIRArithTransforms.a  lib/libMLIRArithUtils.a lib/libMLIRArmNeonDialect.a  lib/libMLIRArmNeonTransforms.a lib/libMLIRArmSMEDialect.a  lib/libMLIRArmSMETransforms.a lib/libMLIRArmSVEDialect.a  lib/libMLIRArmSVETransforms.a lib/libMLIRAsyncDialect.a  lib/libMLIRAsyncTransforms.a lib/libMLIRBufferizationDialect.a  lib/libMLIRBufferizationPipelines.a lib/libMLIRBufferizationTransformOps.a  lib/libMLIRBufferizationTransforms.a lib/libMLIRComplexDialect.a  lib/libMLIRControlFlowDialect.a lib/libMLIRControlFlowTransforms.a  lib/libMLIRDLTITransformOps.a lib/libMLIRDLTIDialect.a  lib/libMLIREmitCDialect.a lib/libMLIREmitCTransforms.a  lib/libMLIRFuncDialect.a lib/libMLIRFuncTransforms.a  lib/libMLIRFuncTransformOps.a lib/libMLIRGPUDialect.a  lib/libMLIRGPUTransforms.a lib/libMLIRGPUTransformOps.a  lib/libMLIRGPUPipelines.a lib/libMLIRIndexDialect.a  lib/libMLIRIRDL.a  lib/libMLIRLinalgDialect.a lib/libMLIRLinalgTransformOps.a  lib/libMLIRLinalgTransforms.a lib/libMLIRLinalgUtils.a  lib/libMLIRLLVMIRTransforms.a lib/libMLIRLLVMDialect.a  lib/libMLIRNVVMDialect.a  lib/libMLIRROCDLDialect.a lib/libMLIRVCIXDialect.a  lib/libMLIRMathDialect.a lib/libMLIRMathTransforms.a  lib/libMLIRMemRefDialect.a lib/libMLIRMemRefTransformOps.a  lib/libMLIRMemRefTransforms.a lib/libMLIRMemRefUtils.a  lib/libMLIRMeshDialect.a lib/libMLIRMeshTransforms.a  lib/libMLIRMLProgramDialect.a lib/libMLIRMLProgramTransforms.a  lib/libMLIRMPIDialect.a lib/libMLIRNVGPUDialect.a  lib/libMLIRNVGPUUtils.a lib/libMLIRNVGPUTransformOps.a  lib/libMLIRNVGPUTransforms.a lib/libMLIROpenACCDialect.a  lib/libMLIROpenACCTransforms.a lib/libMLIROpenMPDialect.a  lib/libMLIRPDLDialect.a lib/libMLIRPDLInterpDialect.a  lib/libMLIRPolynomialDialect.a lib/libMLIRPtrDialect.a  lib/libMLIRQuantDialect.a lib/libMLIRQuantTransforms.a  lib/libMLIRQuantUtils.a lib/libMLIRSCFDialect.a  lib/libMLIRSCFTransformOps.a lib/libMLIRSCFTransforms.a  lib/libMLIRSCFUtils.a  lib/libMLIRShapeDialect.a lib/libMLIRShapeOpsTransforms.a  lib/libMLIRSparseTensorDialect.a lib/libMLIRSparseTensorPipelines.a  lib/libMLIRSparseTensorTransformOps.a lib/libMLIRSparseTensorTransforms.a  lib/libMLIRSparseTensorUtils.a lib/libMLIRSPIRVDialect.a  lib/libMLIRSPIRVModuleCombiner.a lib/libMLIRSPIRVConversion.a  lib/libMLIRSPIRVTransforms.a lib/libMLIRSPIRVUtils.a  lib/libMLIRTensorDialect.a lib/libMLIRTensorInferTypeOpInterfaceImpl.a lib/libMLIRTensorTilingInterfaceImpl.a  lib/libMLIRTensorTransforms.a lib/libMLIRTensorTransformOps.a  lib/libMLIRTensorUtils.a lib/libMLIRTosaDialect.a  lib/libMLIRTosaShardingInterfaceImpl.a lib/libMLIRTosaTransforms.a  lib/libMLIRTransformDebugExtension.a lib/libMLIRTransformDialect.a  lib/libMLIRTransformDialectIRDLExtension.a lib/libMLIRTransformLoopExtension.a  lib/libMLIRTransformPDLExtension.a lib/libMLIRTransformDialectTransforms.a  lib/libMLIRTransformDialectUtils.a lib/libMLIRUBDialect.a  lib/libMLIRVectorDialect.a lib/libMLIRVectorTransforms.a  lib/libMLIRVectorTransformOps.a lib/libMLIRVectorUtils.a  lib/libMLIRX86VectorDialect.a lib/libMLIRX86VectorTransforms.a  lib/libMLIRXeGPUDialect.a lib/libMLIRXeGPUTransforms.a  lib/libMLIRSPIRVTarget.a lib/libMLIRNVVMTarget.a  lib/libMLIRROCDLTarget.a lib/libMLIRTestDynDialect.a  lib/libMLIRTosaTestPasses.a lib/libMLIRTargetCpp.a  lib/libMLIRSPIRVDeserialization.a lib/libMLIRSPIRVSerialization.a  lib/libMLIRSPIRVBinaryUtils.a lib/libMLIRSPIRVTranslateRegistration.a lib/libMLIRArmNeonToLLVMIRTranslation.a lib/libMLIRArmSMEToLLVMIRTranslation.a lib/libMLIRArmSVEToLLVMIRTranslation.a  lib/libMLIRAMXToLLVMIRTranslation.a lib/libMLIRBuiltinToLLVMIRTranslation.a  lib/libMLIRGPUToLLVMIRTranslation.a lib/libMLIRLLVMIRToLLVMTranslation.a  lib/libMLIRLLVMToLLVMIRTranslation.a lib/libMLIRLLVMIRToNVVMTranslation.a  lib/libMLIRNVVMToLLVMIRTranslation.a lib/libMLIROpenACCToLLVMIRTranslation.a lib/libMLIROpenMPToLLVMIRTranslation.a  lib/libMLIRROCDLToLLVMIRTranslation.a lib/libMLIRSPIRVToLLVMIRTranslation.a  lib/libMLIRVCIXToLLVMIRTranslation.a lib/libMLIRX86VectorToLLVMIRTranslation.a  lib/libMLIRTargetLLVMIRExport.a lib/libMLIRToLLVMIRTranslationRegistration.a  lib/libMLIRTargetLLVMIRImport.a lib/libMLIRFromLLVMIRTranslationRegistration.a lib/libMLIRTestFromLLVMIRTranslation.a  lib/libMLIRTestToLLVMIRTranslation.a lib/libMLIRIR.a  lib/libMLIRParser.a  lib/libMLIRPass.a lib/libMLIRSPIRVDialect.a  lib/libMLIRTranslateLib.a  lib/libMLIRSupport.a lib/libMLIRAMDGPUDialect.a  lib/libMLIRIndexToLLVM.a  lib/libMLIRNVVMToLLVM.a lib/libMLIRMLProgramDialect.a  lib/libMLIRNVGPUToNVVM.a lib/libMLIRShapeDialect.a  lib/libMLIRSCFToControlFlow.a lib/libMLIRGPUToNVVMTransforms.a  lib/libMLIRGPUToGPURuntimeTransforms.a lib/libMLIRGPUTransforms.a  lib/libMLIRSPIRVTarget.a  lib/libMLIRNVVMTarget.a lib/libMLIRROCDLTarget.a  lib/libMLIRTargetLLVM.a lib/libMLIRExecutionEngineUtils.a  lib/libLLVMPasses.a lib/libLLVMCoroutines.a  lib/libLLVMipo.a  lib/libLLVMVectorize.a lib/libLLVMSandboxIR.a  lib/libLLVMLinker.a  lib/libLLVMInstrumentation.a lib/libLLVMCFGuard.a  lib/libLLVMCodeGen.a  lib/libLLVMTarget.a lib/libLLVMCGData.a  lib/libLLVMCodeGenTypes.a  lib/libLLVMHipStdPar.a lib/libLLVMIRPrinter.a  lib/libLLVMObjCARCOpts.a  lib/libMLIRAsyncToLLVM.a lib/libMLIRAsyncDialect.a  lib/libMLIRFuncToLLVM.a  lib/libMLIRArithToLLVM.a lib/libMLIRControlFlowToLLVM.a  lib/libMLIRConvertToLLVMPass.a lib/libMLIRConvertToLLVMInterface.a  lib/libMLIRAffineToStandard.a lib/libMLIRMathToLLVM.a  lib/libMLIRReconcileUnrealizedCasts.a lib/libMLIRComplexToLLVM.a  lib/libMLIRComplexToLibm.a lib/libMLIRComplexToStandard.a  lib/libMLIRMathToLibm.a lib/libMLIRMemRefToLLVM.a  lib/libMLIRVectorToLLVMPass.a lib/libMLIRAMXTransforms.a  lib/libMLIRArmSVETransforms.a lib/libMLIRLinalgTransformOps.a  lib/libMLIRSPIRVConversion.a lib/libMLIRIRDL.a  lib/libMLIRTransformDialect.a lib/libMLIRTransformDialectInterfaces.a  lib/libMLIRTransformDialectUtils.a lib/libMLIRX86VectorTransforms.a  lib/libMLIRVectorToLLVM.a lib/libMLIRLLVMCommonConversion.a  lib/libMLIRArithAttrToLLVMConversion.a lib/libMLIRXeGPUDialect.a  lib/libMLIREmitCDialect.a lib/libMLIRSPIRVDeserialization.a  lib/libMLIRSPIRVSerialization.a lib/libMLIRSPIRVBinaryUtils.a  lib/libMLIRArmNeonToLLVMIRTranslation.a lib/libMLIRArmNeonDialect.a  lib/libMLIRArmSMEToLLVMIRTranslation.a lib/libMLIRArmSMEDialect.a  lib/libMLIRArmSVEToLLVMIRTranslation.a lib/libMLIRArmSVEDialect.a  lib/libMLIRAMXToLLVMIRTranslation.a lib/libMLIRAMXDialect.a  lib/libMLIRGPUToLLVMIRTranslation.a lib/libMLIRNVVMToLLVMIRTranslation.a  lib/libMLIROpenACCToLLVMIRTranslation.a lib/libMLIROpenACCDialect.a  lib/libMLIROpenMPToLLVMIRTranslation.a lib/libMLIROpenMPDialect.a  lib/libMLIROpenACCMPCommon.a lib/libMLIRROCDLToLLVMIRTranslation.a  lib/libMLIRROCDLDialect.a lib/libMLIRSPIRVToLLVMIRTranslation.a  lib/libMLIRSPIRVDialect.a lib/libMLIRVCIXToLLVMIRTranslation.a  lib/libMLIRVCIXDialect.a lib/libMLIRX86VectorToLLVMIRTranslation.a  lib/libMLIRX86VectorDialect.a lib/libMLIRLLVMIRToNVVMTranslation.a  lib/libMLIRLLVMIRToLLVMTranslation.a lib/libMLIRTargetLLVMIRImport.a  lib/libMLIRBuiltinToLLVMIRTranslation.a lib/libMLIRLLVMToLLVMIRTranslation.a  lib/libMLIRTargetLLVMIRExport.a lib/libMLIRLLVMIRTransforms.a  lib/libMLIRNVVMDialect.a lib/libMLIRTranslateLib.a  lib/libLLVMFrontendOpenMP.a lib/libLLVMFrontendOffloading.a  lib/libLLVMScalarOpts.a lib/libLLVMAggressiveInstCombine.a  lib/libLLVMInstCombine.a lib/libLLVMTransformUtils.a  lib/libMLIRTestDialect.a lib/libMLIRLinalgTransforms.a  lib/libMLIRIndexDialect.a lib/libMLIRMemRefTransforms.a  lib/libMLIRArithTransforms.a lib/libMLIRFuncTransforms.a  lib/libMLIRNVGPUDialect.a lib/libMLIRMeshTransforms.a  lib/libMLIRTosaShardingInterfaceImpl.a lib/libMLIRTosaDialect.a  lib/libMLIRQuantUtils.a  lib/libMLIRQuantDialect.a lib/libMLIRShardingInterface.a  lib/libMLIRMeshDialect.a lib/libMLIRSCFTransforms.a  lib/libMLIRBufferizationTransforms.a lib/libMLIRTensorTransforms.a  lib/libMLIRAffineTransforms.a lib/libMLIRSCFUtils.a  lib/libMLIRTensorTilingInterfaceImpl.a lib/libMLIRLinalgUtils.a  lib/libMLIRTensorUtils.a lib/libMLIRTilingInterface.a  lib/libMLIRVectorToSCF.a lib/libMLIRVectorTransforms.a  lib/libMLIRAffineUtils.a lib/libMLIRGPUDialect.a  lib/libMLIRDLTIDialect.a  lib/libMLIRLinalgDialect.a lib/libMLIRBufferizationDialect.a  lib/libMLIRMathDialect.a lib/libMLIRSparseTensorDialect.a  lib/libMLIRParser.a lib/libMLIRBytecodeReader.a  lib/libMLIRAsmParser.a  lib/libMLIRMemRefUtils.a lib/libMLIRVectorUtils.a  lib/libMLIRAffineAnalysis.a lib/libMLIRSCFDialect.a  lib/libMLIRControlFlowDialect.a lib/libMLIRFuncDialect.a  lib/libMLIRVectorDialect.a lib/libMLIRMaskableOpInterface.a  lib/libMLIRMaskingOpInterface.a lib/libMLIRVectorInterfaces.a  lib/libMLIRLLVMDialect.a lib/libLLVMBitWriter.a  lib/libLLVMAnalysis.a  lib/libLLVMProfileData.a lib/libLLVMSymbolize.a  lib/libLLVMDebugInfoPDB.a lib/libLLVMDebugInfoCodeView.a  lib/libLLVMDebugInfoMSF.a lib/libLLVMDebugInfoBTF.a  lib/libLLVMDebugInfoDWARF.a  lib/libLLVMObject.a lib/libLLVMMCParser.a  lib/libLLVMIRReader.a  lib/libLLVMAsmParser.a lib/libLLVMBitReader.a  lib/libLLVMMC.a  lib/libLLVMTextAPI.a lib/libLLVMCore.a  lib/libLLVMBinaryFormat.a  lib/libLLVMTargetParser.a lib/libLLVMRemarks.a  lib/libLLVMBitstreamReader.a lib/libMLIRPolynomialDialect.a  lib/libMLIRTensorDialect.a lib/libMLIRAffineDialect.a  lib/libMLIRMemRefDialect.a lib/libMLIRArithUtils.a  lib/libMLIRComplexDialect.a lib/libMLIRArithDialect.a  lib/libMLIRUBDialect.a lib/libMLIRInferIntRangeCommon.a  lib/libMLIRDialectUtils.a lib/libMLIRShapedOpInterfaces.a  lib/libMLIRCastInterfaces.a lib/libMLIRParallelCombiningOpInterface.a  lib/libMLIRTransforms.a lib/libMLIRMemorySlotInterfaces.a  lib/libMLIRRuntimeVerifiableOpInterface.a lib/libMLIRDialect.a  lib/libMLIRDerivedAttributeOpInterface.a lib/libMLIRReduce.a  lib/libMLIRTransformUtils.a lib/libMLIRSubsetOpInterface.a  lib/libMLIRValueBoundsOpInterface.a lib/libMLIRDestinationStyleOpInterface.a  lib/libMLIRRewrite.a lib/libMLIRRewritePDL.a  lib/libMLIRPDLToPDLInterp.a lib/libMLIRPDLInterpDialect.a  lib/libMLIRPDLDialect.a  lib/libMLIRPass.a lib/libMLIRAnalysis.a  lib/libMLIRCallInterfaces.a lib/libMLIRControlFlowInterfaces.a  lib/libMLIRSideEffectInterfaces.a lib/libMLIRPresburger.a  lib/libMLIRLoopLikeInterface.a lib/libMLIRViewLikeInterface.a  lib/libMLIRInferIntRangeInterface.a lib/libMLIRFunctionInterfaces.a  lib/libMLIRDataLayoutInterfaces.a lib/libMLIRInferTypeOpInterface.a  lib/libMLIRIR.a  lib/libMLIRSupport.a lib/libLLVMSupport.a  -lrt  -ldl  -lm  /usr/lib/x86_64-linux-gnu/libz.so lib/libLLVMDemangle.a && :
/usr/bin/ld: lib/libMLIRLLVMDialect.a(LLVMTypes.cpp.o): in function `generatedTypeParser(mlir::AsmParser&, llvm::StringRef*, mlir::Type&)::{lambda(llvm::StringRef, llvm::SMLoc)#3}::operator()(llvm::StringRef, llvm::SMLoc) const':
/home/igor/build-linux/tools/mlir/include/mlir/Dialect/LLVMIR/LLVMTypes.cpp.inc:37: undefined reference to `mlir::LLVM::LLVMStructType::parse(mlir::AsmParser&)'
/usr/bin/ld: lib/libMLIRLLVMDialect.a(LLVMTypes.cpp.o): in function `auto generatedTypePrinter(mlir::Type, mlir::AsmPrinter&)::{lambda(auto:1)#3}::operator()<mlir::LLVM::LLVMStructType>(mlir::LLVM::LLVMStructType) const':
/home/igor/build-linux/tools/mlir/include/mlir/Dialect/LLVMIR/LLVMTypes.cpp.inc:79: undefined reference to `mlir::LLVM::LLVMStructType::print(mlir::AsmPrinter&) const'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsPF1z4rqSv8Z5UZkCE0LykAfCxxzuhYSFTHL2KSXbbaMTWfKV5CTMr9-SbAjYkmHu3a19OVVTDKg_1Gq1Wt0tKVhKkjKAe2_w4A0mV7hQWy7u5-krj69CHu_u_4CdF4y97sjrjuYIZyjBEWEpkjwDRKQsQKJPorYoLAiNNWS5mK-R4pxKLxgj6KQd_b93080oEf6_ChA776aLuDi0KYGZpFiBd9PVuFiiuRcMM5SCUpql2gJKOKX8U_8CIbhAWJlmSti7kUfhFJAX3CYFpUjBl9pjAIsRT8xXI68X3Hn9UTki3WH5rzvyglkhhRfMQsK8YEZjrz9ClIT6Own1qBaLl-WEYAqR6mAvuNW_n3c5yE6U5x1eMkaEoaRgkSKc6RGmwEBgBbHGXGEhQXjBrR63lqI_Gsls33qjB0_pR1ZCNkoQlq4h8YKRhnzTaFYG_a787Q0fKM7CWAtlpT9hu1zwSJMG_b43nJSNPNdCci2aAV3OBkWcSeUFw0qpwWzLM_CCGUm50aa2C58SVnx5wayyi5kZSzAjLKJFDN8NlXq9YKaVO19XX761TFjk9Ud93RsqWAwJYRAjAQkIYBEgxfdmVYqpqb-_bZQoImXUZ9pyrfmW6bjT4_o_Mw1cKI5O7UMQpmoGUk728fRrGfeIdiPQnL3-qHdmmvvjSxQ1PRHHiff_ZArDu_8lU9AabZjCsZq_h1dzHJVnVGJnnBUvfWHptTARdIcERMAUyjBh2kfd3dyFw5vBbQL96ygZ3vRvode_HcS3vT4Mbwb4OrrpxUk0NNM3RpzRHQKGQ7p3hsbH5oL_pRVkc2ZRht8BdbSB0o_soHP9A_k_vP7EC4JHwv7CXhAgf6IV8jZ9HD0spm-r9dM_puPnjdefaF3soc-j9Y_p8-bt-ent4ed8Mal4YEU-oMlktNlM18_zp0fN5ukR-ZPxcvTP6dv8cfM8WizeVuvpbP5nyaNjZl8qTOle0AO71Wg9Wiymi7fF_PGfb_94etD8eg3o-Gm5mi-mB4QA-Q_oyNwO_RvR357_ezX1-pMJhEW65zUej8Z_TA9je3p0zPJhnyMKcYZ-hgVTBQqCTve600eESRIDet0syl0xjSLU63WuO90OmiMlCMQoJrKayijC0RYQZtpsIwH4sNt9bjmFyo5iIiBSXOiNGIWFQowjWUQRSNlByx2KOKWA0wIQppKjDDOcQqztsGIKhqXE-x0bERZDDiwGpuhOj2JLJMpwtCUMtJxbHOtOqu09gU8U451EOOVaBMkNv1zwkEKGJEAmjdVDZecdNGc6TlAaW48aR-9QroecK2CKYHogV5obkWi11ut4q1QutUUHMy-YpURti7AT8ayy3b09700_mOUFpV4w6_WG17eDKnggChH2wekHSBRtMUtBVs6gtvBvuh30zNEHCJLs0OcW1BZEKU7ECxrrIUW4kHpWMKuUN0cCPkCoakQRzzKi9KqO-4Pu3W2Y4FvoQdDrJ7cDfBMOuv0BHuBhrxskgxj3ewPtSiiPMKU7M_Wa205tdSefXLxrPWPCOqXNjVQpT86Ne9L6xBliXCFZCDiSGYSeXYSRtml-1KIjtYq74PpT22W2QxJUkVfzaaI5-FIgGKaIsLxQ6HOvAZznAiKi96hKqKWeQ840T--6-wsEv-sNb81gvOtuupNE6XlQW9ihDO80E60qARQ-MFMoB55T46C3QHOUQSnUIUSrupnpUK6M9jKQEqdgD9wGD9c9L5hd97zBBC2qgHD8558IviAqFA71UjI7dy3c7I5mo_liqjdHF4IGGfd_g2pRQOQFD17wgPxkNR8jP2Hcl5Bhpkjkm10j55KYrd5PPogkIaFE7XzCKGEg_S2JY2DIfzUD9PqTGCvwFcmg5EVJAvqXH0tA_iumVON-KYGR_8q4X7BCQuznWOAMFAjkv34KosCXJl6TyH-NsFT-vwpMS4qMSG3JfkKAxj5hRK9D8guERH4OsZG8xKScpeYD-a8kyymJiPITTKnaCl6k270E3zzisolxxgpa9RdRLKWfQYaNryobBcQF0335Gf-Asi0HKUlGfmnhvlsZh68IcuWrXa6bYqCgQHfhfxChCkz9WHE9blmkKUjl8w8QQrvfsnueZXrT3Y-dAtZ-2yfG7-FyZl4jhWM_w7sQ_ILJIs-5Wdl-EhOcMi4ViaQfcWo6MlHGifrDQvkS1Mk0MO7HoJeMXjF-xPMd8rUmqReMfZFjtdWb0rtOq9ojpE4ZX6JapHT888hWg9l4id9hRig0oZ3YkNYaTWyKfG41fnQispE28AZjL7h-Ws9_zB-1gJWExmEH6DskNn62VGYHn0bKo0THaSOG6U4S2cHIBj6E0jbgs5Yw4SJzUR8QnnJpZ_FTEWqhXk5-rH66-jbAtr4Nwp5zDfTnN9cG6ITnKVAQtXVSauALpgU88ILF8imfa6-T4AjmWU6tvNrE13C79CJ7BM7cchhw2yiyzXLaQr5ZTtupX1qpX9qo5Y5FTmINdNM-FEkCgvwyrsLF4wRpRXIw3r2VVc08L8FsMBzzLKfw5ZJqzJkSnM4o_3SY8xFGi1FMFs_zttWk4S4ZphlRY0fvBtbS76w4nrUG6Axlm8QnC7wBciv8GGibtx-rn87Zn7PYPVVaiY3GBWGYpg4NlMBWaWooDYlKuN0Lltl2C-1xqaNG-_jihq2fxpOFY0gv47nTQy7xsQ9sgFpsYQnZGhIXrQG2arGG0tBECbdrcQnSKTXIVqkXK8FTgTMX-R7exmM1d1A_vrSsAAO07gEG0qqsU4wGg6cc2Gg8dvVcgdvplysX-cppWavJwmyLuZOU0x3jGcHUxUEJF-1_FZgpB5mBtUyRgVt1vRnPXB1uxrM253YMbva4Gc_strrZ4twVchnYUy7b-Joq6jMwyYWLyxHKsZt0Y7UO04bXzs6u6NV8_eJUtQYueVxQGPMsJAyElX7M2QcISTizs3CbtAHbZ6RVmSVwzhIQzzs9Oa1xX6UmQglL64hWTKe81omxoViV_cwldulawzZbLGKLjA3Elhk_gExlb_qlgFUT40BzyVND0Hv0eW4LzvNjLAfa6hJeVccXjbVEtSr954NriC-mpOjajg2wpfMagmWNlhh26_7z9qa1-wO8RYI_wZ2qGVibYzDrEosULNvjy_IAscQvdqpnkGqyc-YIxmpBqhWWshkdlizHeW6XcwIShCmymJTA6kQ2NQwLygNhWOzcbvB5n_avISVSCWtn-1SPH8WI1IWps7rLEF8ciM1M-Ty_h4JQRRwiNkP68wwrBIPYxs3AL2dnDK2FnYGfZ7ePmy7DXK4u0Utp6Oc5lnZzAUMd3V_A73vZX8CzXDUl3vTLVmiycKnZtpvjPLNxnAmenePZ8AtWIsvGKdUFKpqvm_GrOa22NMvfi3cODmBBwqYLcdTyagUzS9pbDqrFvJ3pTWuSUi4ga7DaFjvzo7KHLcP_Xpb2ncPg_Fj9XBdMkQwuKxec24BadqCWDchlvI1SizkDIZxNWWqtfGqi5s6kW8dc8EI1QnUNIjlvtJWLl_yCOp8NZnHIv2rGqyELwt5rxmvWAJNKFNm-TN-Qa_ajwCJukI15DD-ANdqb6jTYPyZYYReT8ppBHfgHyTcqXmFRZzZfV1cFGiRP4V_j0Xr8lCtLzdUUIK3LoLVwaYpc9oVVlnmtLI9LfnbiMpepHJHNg5wgHCJ1VxmebxRmcTlTp2scH8lYM3KIOIsIhZ9MQHm0NMZSuQqgzoHsoSTMnKRH4lnls9BWJSF7r8e7l0179Vq_NRI6U7NrTb-aCWlt97CUGi3JUHsutJ_1fzMluSS4P1akLYAa8yzjrCXzNqtgpFTFw62SWhpRc50tFWxHbH5BcH4uNv8PQu4zxzSXR-TtxzWueN2C2HbsdQEP97nZZcG7O4r-T8LoM3VMV5RtQTxTDl2uSku3RwKXhvJtFnwJk1rYeGFo38Q7m-1fwOdc6eDS9Mqd1Z3PCX4j4bwwQ_zd1MZyRNO0-zZ_bovzNdOZ4EwBi0vrrAc5B2iSUG4uUzQYbCJMsaiCnRPIKE0FSEk-QEd3VUnVGvl9w06juP1wXSVT6SrFW07DLJnKZedEjoNz97Z95ryydh5T67r1oOi3qqatRxh2jbadbjT6_Z0DsPZjigtPwM-W_y2XRepStBXf7RVzi121MbFXwk85O6OfzXj224XZ0-st9R3TZQRtx_itR9EXXZFoOcC1Hx2d4hwKHKc97xREPIY14NhS_jhc43cc6lo11FazblxbqtvSv38V4_Syg00k5_G3fMchPT4BsihfvhOWnqJYumgJ608P_E988gNRr4LY0l7rBS-TGAmeEApV7n26eeyykNOygHAKMec5c5bw1eShTnWA6cz9hcCnm3q5mTmpH55nbsLJ62jdBD-Ff1l0shxbLK_csS3GanR1ZKx19TpIluNmlQO-1Gg1txRxmvosM44ZFxlWjnKJXaI1ZFi8N2f1gSipBODsIO_pGrYcstv8Zeu9P6d_abvmcXKtrb4ya3eomoSuLo_P1WqRRAJ6La0xS-EQvNe8bUt2bCqY8dFqtYiN5WkSXveWmFKgZRDVWPmOhN12tYWL3Ybytny_qoK-gCAJaToi26CbygBBPiDWuToJC9XGYg1x0TYIu0KLUIJqU4L9CmVDfpCKMLPPbdSu3eeuwdzEbspvmleWIsxKp3OHqyqNOT17h-U4yavbg6UO5bp8O8aUuk3raCdrMYoNiWGaJPVK0alQAmRYiNSyPS84zxfkHdzbFYHPOkLLGnTymVUP8VqGoveoBd7xomUotmsYTYmaxzaWE5XTS9PIp0Lpz5jqzwx9vz8oKb5ub95ursvL4n7KihLwqyN5fRPLMEuplmr_kGH_PO_v965_v3f9-71rXVF_v3dtvnc1bwwjFei-qwdLI0R176oQWowegi-ikFRYFdLrjph5XNofVW8YpeJ5DsaOZBFGPMswi1GCCa0ele3fc13F9_34rn-Hr-C-N-wHw-tgGAyvtvfD3gB3r6_vwiSA_jCJokHc7wGEIQRRP0q6V-Q-6AbXvV4wDHrBIBh2khvA-AYGd7fXYTdMsHfdhQwT2tGLusNFemUem933esO7YHhFcQhUmr-EEATlnATeYHIl7s2Tw7BIpXfdpUQq-c1BEUXhfnn4kwdmSN9PgOMCXC8PrwpB73_7uWP5JLN88KiF_rgP_icAAP__UtUvbw">