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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR] `convert-linalg-to-affine-loops` pass triggers Assertion Failure `isValid'
        </td>
    </tr>

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

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

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

<pre>
    The bug was tested on llvm 15, and has been fixed.

Steps to reprodcue:
```
mlir-opt test.mlir -pass-pipeline="func.func(tosa-to-linalg)" -func-bufferize -linalg-bufferize  -convert-linalg-to-affine-loops
```


Test case:
```
func.func @add_zo(%arg0: tensor<2x9xi1>) -> tensor<2x9xi1> {
  %zeros = "tosa.const"() {value = dense<true> : tensor<1x9xi1>} : () -> tensor<1x9xi1>
  %1 = "tosa.add"(%arg0, %zeros) : (tensor<2x9xi1>, tensor<1x9xi1>) -> tensor<2x9xi1>
  return %1 : tensor<2x9xi1>
}
```
Crash trace:
```
mlir-opt: /home/llvm15/mlir/lib/IR/BuiltinAttributes.cpp:1392: static mlir::DenseElementsAttr mlir::DenseIntOrFPElementsAttr::gettest(mlir::ShapedType, ArrayRef<char>): Assertion `isValid' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: mlir-opt /home/verify/202303/test.mlir -pass-pipeline=func.func(tosa-to-linalg) -func-bufferize -linalg-bufferize -convert-linalg-to-affine-loops
 #0 0x000000000047f3aa llvm::sys::PrintStackTrace(llvm::test_ostream&, int) /home/llvm15/llvm/lib/Support/Unix/Signals.inc:569:11
 #1 0x000000000047f55b PrintStackTraceSignalHandler(void*) /home/llvm15/llvm/lib/Support/Unix/Signals.inc:636:1
 #2 0x000000000047dbd6 llvm::sys::RunSignalHandlers() /home/llvm15/llvm/lib/Support/Signals.cpp:103:5
 #3 0x000000000047fc85 SignalHandler(int) /home/llvm15/llvm/lib/Support/Unix/Signals.inc:407:1
 #4 0x00007fddcc649980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #5 0x00007fddcb539e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #6 0x00007fddcb53b7f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #7 0x00007fddcb52b3fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #8 0x00007fddcb52b472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #9 0x0000000002b742e3 mlir::DenseIntOrFPElementsAttr::gettest(mlir::ShapedType, llvm::ArrayRef<char>) /home/llvm15/mlir/lib/IR/BuiltinAttributes.cpp:1394:20
#10 0x0000000002b762f7 mlir::DenseElementsAttr::reshape(mlir::ShapedType) /home/llvm15/mlir/lib/IR/BuiltinAttributes.cpp:1285:10
#11 0x000000000202d6a4 mlir::OpFoldResult mlir::foldReshapeOp<mlir::tensor::CollapseShapeOp, mlir::tensor::ExpandShapeOp>(mlir::tensor::CollapseShapeOp, llvm::ArrayRef<mlir::Attribute>) /home/llvm15/mlir/include/mlir/Dialect/Utils/ReshapeOpsUtils.h:94:21
#12 0x000000000202d560 mlir::tensor::CollapseShapeOp::fold(llvm::ArrayRef<mlir::Attribute>) /home/llvm15/mlir/lib/Dialect/Tensor/IR/TensorOps.cpp:953:10
#13 0x000000000200eee9 mlir::LogicalResult mlir::Op<mlir::tensor::CollapseShapeOp, mlir::OpTrait::ZeroRegions, mlir::OpTrait::OneResult, mlir::OpTrait::OneTypedResult<mlir::TensorType>::Impl, mlir::OpTrait::ZeroSuccessors, mlir::OpTrait::OneOperand, mlir::OpTrait::OpInvariants, mlir::MemoryEffectOpInterface::Trait>::foldSingleResultHook<mlir::tensor::CollapseShapeOp>(mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) /home/llvm15/mlir/include/mlir/IR/OpDefinition.h:1808:49
#14 0x000000000200ee91 std::enable_if<llvm::is_one_of<mlir::OpTrait::OneResult<mlir::tensor::CollapseShapeOp>, mlir::OpTrait::ZeroRegions<mlir::tensor::CollapseShapeOp>, mlir::OpTrait::OneResult<mlir::tensor::CollapseShapeOp>, mlir::OpTrait::OneTypedResult<mlir::TensorType>::Impl<mlir::tensor::CollapseShapeOp>, mlir::OpTrait::ZeroSuccessors<mlir::tensor::CollapseShapeOp>, mlir::OpTrait::OneOperand<mlir::tensor::CollapseShapeOp>, mlir::OpTrait::OpInvariants<mlir::tensor::CollapseShapeOp>, mlir::MemoryEffectOpInterface::Trait<mlir::tensor::CollapseShapeOp>>::value && detect_has_single_result_fold<mlir::tensor::CollapseShapeOp>::value, llvm::unique_function<mlir::LogicalResult (mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) const>>::type mlir::Op<mlir::tensor::CollapseShapeOp, mlir::OpTrait::ZeroRegions, mlir::OpTrait::OneResult, mlir::OpTrait::OneTypedResult<mlir::TensorType>::Impl, mlir::OpTrait::ZeroSuccessors, mlir::OpTrait::OneOperand, mlir::OpTrait::OpInvariants, mlir::MemoryEffectOpInterface::Trait>::getFoldHookFnImpl<mlir::tensor::CollapseShapeOp>()::'lambda'(mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&)::operator()(mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) const /home/llvm15/mlir/include/mlir/IR/OpDefinition.h:1772:14
#15 0x000000000200ee35 mlir::LogicalResult llvm::detail::UniqueFunctionBase<mlir::LogicalResult, mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&>::CallImpl<std::enable_if<llvm::is_one_of<mlir::OpTrait::OneResult<mlir::tensor::CollapseShapeOp>, mlir::OpTrait::ZeroRegions<mlir::tensor::CollapseShapeOp>, mlir::OpTrait::OneResult<mlir::tensor::CollapseShapeOp>, mlir::OpTrait::OneTypedResult<mlir::TensorType>::Impl<mlir::tensor::CollapseShapeOp>, mlir::OpTrait::ZeroSuccessors<mlir::tensor::CollapseShapeOp>, mlir::OpTrait::OneOperand<mlir::tensor::CollapseShapeOp>, mlir::OpTrait::OpInvariants<mlir::tensor::CollapseShapeOp>, mlir::MemoryEffectOpInterface::Trait<mlir::tensor::CollapseShapeOp>>::value && detect_has_single_result_fold<mlir::tensor::CollapseShapeOp>::value, llvm::unique_function<mlir::LogicalResult (mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) const>>::type mlir::Op<mlir::tensor::CollapseShapeOp, mlir::OpTrait::ZeroRegions, mlir::OpTrait::OneResult, mlir::OpTrait::OneTypedResult<mlir::TensorType>::Impl, mlir::OpTrait::ZeroSuccessors, mlir::OpTrait::OneOperand, mlir::OpTrait::OpInvariants, mlir::MemoryEffectOpInterface::Trait>::getFoldHookFnImpl<mlir::tensor::CollapseShapeOp>()::'lambda'(mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) const>(void*, mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) /home/llvm15/llvm/include/llvm/ADT/FunctionExtras.h:222:12
#16 0x0000000002c8351f llvm::unique_function<mlir::LogicalResult (mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) const>::operator()(mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) const /home/llvm15/llvm/include/llvm/ADT/FunctionExtras.h:410:12
#17 0x0000000002c82a9c mlir::RegisteredOperationName::foldHook(mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) const /home/llvm15/mlir/include/mlir/IR/OperationSupport.h:334:12
#18 0x0000000002c7b1ee mlir::Operation::fold(llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) /home/llvm15/mlir/lib/IR/Operation.cpp:491:31
#19 0x0000000002abd36f mlir::OperationFolder::tryToFold(mlir::OpBuilder&, mlir::Operation*, llvm::SmallVectorImpl<mlir::Value>&, llvm::function_ref<void (mlir::Operation*)>) /home/llvm15/mlir/lib/Transforms/Utils/FoldUtils.cpp:254:18
#20 0x0000000002abcfa8 mlir::OperationFolder::tryToFold(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, llvm::function_ref<void (mlir::Operation*)>, bool*) /home/llvm15/mlir/lib/Transforms/Utils/FoldUtils.cpp:90:14
#21 0x0000000002ac5922 (anonymous namespace)::GreedyPatternRewriteDriver::simplify(llvm::MutableArrayRef<mlir::Region>) /home/llvm15/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:237:29
#22 0x0000000002ac5108 mlir::applyPatternsAndFoldGreedily(llvm::MutableArrayRef<mlir::Region>, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig) /home/llvm15/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:404:8
#23 0x00000000006eb442 mlir::applyPatternsAndFoldGreedily(mlir::Operation*, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig) /home/llvm15/mlir/include/mlir/Transforms/GreedyPatternRewriteDriver.h:71:10
#24 0x0000000000fa9782 void (anonymous namespace)::lowerLinalgToLoopsImpl<mlir::AffineForOp>(mlir::func::FuncOp) /home/llvm15/mlir/lib/Dialect/Linalg/Transforms/Loops.cpp:310:9
#25 0x0000000000fa9512 (anonymous namespace)::LowerToAffineLoops::runOnOperation() /home/llvm15/mlir/lib/Dialect/Linalg/Transforms/Loops.cpp:320:3
#26 0x00000000029e4e5a mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /home/llvm15/mlir/lib/Pass/Pass.cpp:471:21
#27 0x00000000029e5454 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /home/llvm15/mlir/lib/Pass/Pass.cpp:534:16
#28 0x00000000029ea868 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_12::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const /home/llvm15/mlir/lib/Pass/Pass.cpp:754:36
#29 0x00000000029ea4d9 mlir::LogicalResult mlir::failableParallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_12&>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_12&) /home/llvm15/mlir/include/mlir/IR/Threading.h:46:18
#30 0x00000000029e6733 mlir::LogicalResult mlir::failableParallelForEach<std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>&, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_12&>(mlir::MLIRContext*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>&, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_12&) /home/llvm15/mlir/include/mlir/IR/Threading.h:92:10
#31 0x00000000029e5fed mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) /home/llvm15/mlir/lib/Pass/Pass.cpp:764:14
#32 0x00000000029e5107 mlir::detail::OpToOpPassAdaptor::runOnOperation(bool) /home/llvm15/mlir/lib/Pass/Pass.cpp:655:5
#33 0x00000000029e4e4b mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /home/llvm15/mlir/lib/Pass/Pass.cpp:468:5
#34 0x00000000029e5454 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /home/llvm15/mlir/lib/Pass/Pass.cpp:534:16
#35 0x00000000029e6d1c mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) /home/llvm15/mlir/lib/Pass/Pass.cpp:837:10
#36 0x00000000029e6c3c mlir::PassManager::run(mlir::Operation*) /home/llvm15/mlir/lib/Pass/Pass.cpp:817:60
#37 0x00000000029de27c performActions(llvm::test_ostream&, bool, bool, llvm::SourceMgr&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>) /home/llvm15/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:84:17
#38 0x00000000029ddfa3 processBuffer(llvm::test_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, bool, bool, bool, bool, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, llvm::ThreadPool*) /home/llvm15/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:124:12
#39 0x00000000029dddaf mlir::MlirOptMain(llvm::test_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool)::$_0::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::test_ostream&) const /home/llvm15/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:164:12
#40 0x00000000029ddccd mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::test_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::test_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool)::$_0>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::test_ostream&) /home/llvm15/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#41 0x0000000002b0ad09 llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::test_ostream&)>::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::test_ostream&) const /home/llvm15/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
#42 0x0000000002b0a2e5 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::test_ostream&)>, llvm::test_ostream&, bool, bool) /home/llvm15/mlir/lib/Support/ToolUtilities.cpp:28:12
#43 0x00000000029dd039 mlir::MlirOptMain(llvm::test_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool) /home/llvm15/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:169:10
#44 0x00000000029dd17a mlir::MlirOptMain(llvm::test_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::PassPipelineCLParser const&, mlir::DialectRegistry&, bool, bool, bool, bool, bool) /home/llvm15/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:187:10
#45 0x00000000029ddae6 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) /home/llvm15/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:269:14
#46 0x0000000000411f4e main /home/llvm15/mlir/tools/mlir-opt/mlir-opt.cpp:247:7
#47 0x00007fddcb51cc87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#48 0x0000000000411dda _start (/home/llvm15/mlir/build/bin/mlir-opt+0x411dda)
Aborted (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsXFtT47qW_jXmxUXKlu8PPIRA5jAFAwXsfjgvKdleDppWJI8k09C_fkqyHV9CSID0bnYfurpIYsvSt7510dLFwlKSJQM4sYJTKzg7wpV64OJE_gDA-VHK8-eT-wew02pp_8DSViAV5DZnNqWPK9sNLDSzMcvtByztFIDZBXmCfGI5Z5Yzrf_eKSilrbgtoBQ8zyqwvOaWFTrNf_NzRYk45qUyzUz0L_u4xFIel6QEShhY3pmFUFGxbKL_WChWXOJjxY8pYZguLZRYCNnH-uZxWhUFCPIT7OZu74p9nHH2CEK1txQ_xkVBGBxTzkv5Irz-33uQys6w3CrLGqRt-Q7O88VPbqHYQgEWS8fyprYCJrmwvBl6Sp6Ia3nnFkrsY8s7f-GWbUWndb22baHgJwgubcs7sy2ENAWTjDOpLIRMG4ku_ohpBaZMDkzjnCmhqT-3B62769ajM3OnqWEIpCvVgXAHAHCet83XIqLZGqlBVFf9ktSzl9rZzkULQYCqBGuRvEhorZjo7EUNzQSWD7YSONtpkDX4-QNfgYXm2vS15c_1bf2bpBaaX9xaaH5aEaoImyolSFopkJOsLC1v6noJ0pVIhRXJbPOgN7W86ZnWzTmFFTAl9WPjexdMXYv5Tb9IfXcJSruJheLuibsHXEJ-_1yCZnUqBH6-hcLyZtkDFjWrGsVUShCKcGZboUPkN0xJbqHILjCha-e9uTyf3p3bskpXRNnYhAABJRdK-_KDUqXUjaK5heZLoh6qdJLxVUNP83FcCv6_kCkLzYmUFUgLzU24ICyjVQ62egA7M3pIcfbd6GLSRg2cfbfzalWuleNMbPPvRvClwCsbi2VlSNEyrWNHp6dHEKR4ttAcOchzPAvNX4krrwaVPSLKXgHFtpDn2M6Ts_7nR4WHsYmmtQrls6y_3AjClGHh3pgoirtCWo4Fl0oAXlko1MomTBk327TSVh_GSu-qUqvQQvO_GHnSF8iSYSonhGWWNw1CbSCu28F1x3CDILVH2Oo6_oVZTkFYKH7k2p6mB8ATeqHG08FBIzh5mocvsXdbsQEq2QbGvfG0QBoHdjxNTwfEG_OSxYE9JuIwSvGdaEiC37QdFXmeZaGfJLFjLxYCpOICFkLVQbyp_SkOF6Gv7bJ6Ol6yqr5RqgcBOJ9IPnEsdOo8uSiJHR0g1s0E_WbSwEsgjmyBiQQtUVoRmmvfpyTNjmff_vvHv9P1TzRBkYXm0shhoflkon89yxxKHQOqWkz5LB8NGlbpn6bqiTFD1_KmTockHCFJo8K1ccqNpPshUXnNhnnKNBKPGomGjaDUK7C9WGATLBc6Ni5SvL_s9XPrL3WTybDJeNykH6E9dJdprYVGa57jR2igtaRvmCiNfATeATuVztde7F4-3E36ljdFbcKFPNcZiROiInqt_6wvC5Aa9VY5PooTxYEJCh3OQZxEDspD7PdwXpdzTvNbkBVVvctFfVEjuy4tb9bdabMZ_X3GKcWlhLumHJrZLxc8fyoxy9tiWiHx3jW-qNju6TUHO_Xc9O3dhTOCaZ0E_KUI1f6_FlmaK5MHy5vWmnc7RtGY0SB0tsg9FmfN7aDX_KBctV10wtzXABpTqX9dl62JJIE3shBvKI8DAElPnku-JBmmGybyXru4Lu8FJqr-8W8Q_BaWhDP5SqlrBnXzr5fRLtSY8gBaTYFxMO-8vnSxKukOWHdVloGUXOxAdl2CwCx_rVB5wR6xIFinhINiV7Di4vm8KCBTupQCUTRpvzdtajjvrOaOsCVtqPgX59_3VsDI4wxknWebZOiNLtYvfrfClH6DTHFhGO0_1Y8s5sHwje5pzPe6PIOCMKLRGnd0YyfWuUfSGbC_YcCJa0uV1ziA4ZTCgmiZOuRELjiDBS9GmF-0urfQvJepH6TCA-N7hwMdjJeerx1KltYtD1Nf34PfW-M-zr5_1a0imukU7V2hnYOCTC0esFxIEyt07l1RtTB9zltqX1c9dPiKkf-rYKFHnSZ-9KscdhSfJeDUE1A9wtRzCV_d2O_qxpagtJZ07zVnbw4icT1RZOZ3IopXaY4tPaj5FKZW3-KmfZ1_GbCfA1rtBQfofKMI6Q-_63yDjc7XC7Zmj50IOShMaP39LxNU5k1MOTWT19viytg-fw-jrTXPMKVN-a984yvf-Mo3vvKNr3zjK9_4u02tt7LxGXrHV1cWukyjuTA9u7fQvO39z5-UwPXEG0Im10BdrhEOco0s9gK3-EOCxT8wdXyzQn3XGSk0GikU4aS_CK1DnFQgIF_L_z941fh50bj1p-dpR4rdAG7W2gxRnuePiIqHREWpC_Cip6-peesM86-a1uutWqxRNlPRfuJqYXtT68M1IpzmXli8JKaGAG0MF8_3fF5L3C96WhFTqF6G3sdEXhP7m8lNGnn7D7XRZiEMvToQvxZekj2n8-8FZrLgYiV7yxNaynphoiYQBcZO4jWByBkRmBU4fi-B22h6l8QHqCDlnG5fvX87e4kzHMqi4VIZzoIEmVVPzDh7XvFK2gyvQJZm10OTF_yXAMifb7BSINgt_BBEwZkgjy25kqxKanZ79NzxqlJ6jPiiV9Zp3UesZDuk1my8SP_tZtARGkvuOn2zwWVJ2wrllOWaSdMKoe8SrO-Oc8F_QguzaeMOVNM1jp23lq0pPeOsIMtfx5PvaPfqeddwb0UIqe-j_Wna7lt_GxsbfdCAmFcI0b1S5A4XDtFg3cUpcBLFyG69-TWnofwHiEuzH-meX3Jeyo14OzV7lOZcbK5emc1QNVsVy_Q46S2ro5fN3qmh6AZEo3bPpCk97wjGcgbuzrhwqUW857UYpvb6uqjYNevpf9vmn_ejRxq916EfJs0J-BDgng31J-Kuy3t-Xd5gKac5LlU7MhIVGyhAF9g52OipkmH6LIm8wgwvdYfchvKZXTGzyzd_ZZfYgIi6ZfPR-qixyt7yPIpG8gZ-4L9Z3pt2A97QbXXRtRg78op3ENB_SDd1waQSZiuhHhRMXyvQy_5a7DdYAFMXrOBt-Nir79zkOKjT0bDjOB5xjOMwfjPHPT-YymeW1ZMLcU3NetjtL1y0c3h0uAavy5srTdmeSf02yiKTmXk9ypIxZX6-zy6LAhOqu9QbLDClQOdcnOPswfJmi8WSVYvs6akuuFgwLlaYLohqaOqH019BkLHH9bT3o8mbf3mjvRYxpTz7OyRtJvNGicvBjbxeV-ib9dXlxe2MMwVPqqH7S-m_Q-lfrP95rvaOvUj3ZmcyYct6Niscjr2HG-hRAmHkeR-K8P85Ch_nUr8ltn7R_an8y7yY1BtuDt_40Il9AfmBhXhPphf6w2mk4asgGqfrRB_B-SF4YRB074dodN7GcNBP_6DhYBgPxfW_RoO_ejToBeOOL3ezEbRW2DWjWEqQe06KbTD2HtixmfTsx5PxxEiYebtgvzZL_R5MrsYU9jCNJi9yQFFmlyAKLlZTM2kud71w1xpT-9lb3-CVyOBquWmtm53h1tn6vZZUx56x96oH52ZqdtW-34rmV5SI61JdYdIuG8XG_qKOtNFsRJ4X2LNLwTOQ8tS8CLmLs3VH3Cwhl0oMdm_VGw7aunrlcyhwRdUiBwoKtj-zTmrH2tmurcPx3td0M5VYr6yK543lrLoPvnnDUss-KnPRaEFz9DZYkuc57q_09ar4PLr7PbrZZTEb-ZdTf92YLvsdRG3oa98ptf3MKhyZle-MzSrL8j12o-6vz89B4nrLSIYpTXH2fVEMt7t8-c-H_EcPFSlny9_Fzwtu8-YNOHf3l-0eHEz7u3CCkc8Mx1Wpg3Mn-RN84x8XAN-nTzPi6esTjfWJoL8jX5aUqCnLb0YJ0ueOA59Dd7uLbMSVnT1dd8iC7vP-UoQSRdZvdKOxdr1xD-d4yVfi9IHAf6hUJBkOL31_rCg3wp9dUUPS26mD2eUNFhLEll0on4H9eDS494Mx-xjCrew30y3mtAg96hnvC1SCsOUtFPvLfSC5UG1V3eSiHw6Pd3Hdwgd7hQl7pUG12VT7tW3H1_x1Q2p_dOaIm2VxZC8WlKTZQios1KJtc58jRzJZtWet1F_NTVOPOX7E8_3u_BHdfDyWMs-xXTfcHEOyRdQWTar12hP41Hmqa1kfSTJNuVBgtiplXIA50Qny9e31gVtH-YmXJ16Cj-DEDaMoDlHsJUcPJ34WO5CHTpGFDvie67kBSnNUeFEAgevFR-SkPt_J8dzIcbxkguLYdwrI_MzHfoEyy3dghQmdaCkmXCyPzGFUJ6Hrht4RxSlQac6_Q4jBD9vctBCygrMjcaKfOU6rpbR8hxKpZFeLIoqag_OuLi9ureDMtkJnxylQoWOXWEpbCbJcgpC9o7jmmNBKwPBIrqNK0JP3n7VlJPz_AAAA___2RNQe">