<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/74479>74479</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MLIR]mlir::AffineExpr::getKind() crashed with segmentation fault when using -tosa-to-linalg
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
BealZephyr
</td>
</tr>
</table>
<pre>
Test commit: https://github.com/llvm/llvm-project/commit/ecf881838045985f381003cc27569c73a207d0cc
steps to reproduce:
```
mlir-opt test.mlir -pass-pipeline="builtin.module(func.func(tosa-to-linalg))"
```
test case:
```
module {
func.func @main(%arg0: tensor<63x44xi1>){
%3 = "tosa.const"() {value = dense<[0, 1]> : tensor<2xi64>} : () -> tensor<2xi64>
%11 = "tosa.transpose"(%arg0, %3) : (tensor<63x44xi1>, tensor<2xi64>) -> tensor<63x44x44x63xi1>
return
}
}
```
The error message is as follows:
```
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /home/llvm-project/mlir/build/bin/mlir-opt test.mlir -pass-pipeline=builtin.module(func.func(tosa-to-linalg-named,tosa-to-linalg))
#0 0x0000000002722d6d llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:11
#1 0x000000000272325b PrintStackTraceSignalHandler(void*) /home/llvm-project/llvm/lib/Support/Unix/Signals.inc:798:1
#2 0x00000000027212e6 llvm::sys::RunSignalHandlers() /home/llvm-project/llvm/lib/Support/Signals.cpp:105:5
#3 0x0000000002723a35 SignalHandler(int) /home/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1
#4 0x00007fcb91167980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
#5 0x00000000077c4f6f mlir::AffineExpr::getKind() const /home/llvm-project/mlir/lib/IR/AffineExpr.cpp:27:59
#6 0x00000000077c505b mlir::AffineExprVisitor<mlir::AffineExpr::walk(std::function<void (mlir::AffineExpr)>) const::AffineExprWalker, void>::walkPostOrder(mlir::AffineExpr) /home/llvm-project/mlir/include/mlir/IR/AffineExprVisitor.h:150:5
#7 0x00000000077c4fd5 mlir::AffineExpr::walk(std::function<void (mlir::AffineExpr)>) const /home/llvm-project/mlir/lib/IR/AffineExpr.cpp:43:3
#8 0x00000000079951c8 void mlir::getMaxDimAndSymbol<llvm::ArrayRef<mlir::AffineExpr>>(llvm::ArrayRef<llvm::ArrayRef<mlir::AffineExpr>>, long&, long&) /home/llvm-project/mlir/include/mlir/IR/AffineMap.h:674:7
#9 0x0000000007994978 willBeValidAffineMap(unsigned int, unsigned int, llvm::ArrayRef<mlir::AffineExpr>) /home/llvm-project/mlir/lib/IR/MLIRContext.cpp:1184:8
#10 0x0000000007994a3d mlir::AffineMap::get(unsigned int, unsigned int, llvm::ArrayRef<mlir::AffineExpr>, mlir::MLIRContext*) /home/llvm-project/mlir/lib/IR/MLIRContext.cpp:1212:3
#11 0x0000000006ac4aad (anonymous namespace)::TransposeConverter::matchAndRewrite(mlir::tosa::TransposeOp, mlir::PatternRewriter&) const /home/llvm-project/mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp:1090:9
#12 0x0000000005fb3aab mlir::detail::OpOrInterfaceRewritePatternBase<mlir::tosa::TransposeOp>::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const /home/llvm-project/mlir/include/mlir/IR/PatternMatch.h:330:12
#13 0x000000000a74a1f6 mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>)::$_1::operator()() const /home/llvm-project/mlir/lib/Rewrite/PatternApplicator.cpp:206:31
#14 0x000000000a74a035 void llvm::function_ref<void ()>::callback_fn<mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>)::$_1>(long) /home/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:5
#15 0x0000000002748c19 llvm::function_ref<void ()>::operator()() const /home/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:5
#16 0x000000000a74baad void mlir::MLIRContext::executeAction<mlir::ApplyPatternAction, mlir::Pattern const&>(llvm::function_ref<void ()>, llvm::ArrayRef<mlir::IRUnit>, mlir::Pattern const&) /home/llvm-project/mlir/include/mlir/IR/MLIRContext.h:276:3
#17 0x000000000a748a05 mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>) /home/llvm-project/mlir/lib/Rewrite/PatternApplicator.cpp:227:9
#18 0x00000000077349c0 (anonymous namespace)::OperationLegalizer::legalizeWithPattern(mlir::Operation*, mlir::ConversionPatternRewriter&) /home/llvm-project/mlir/lib/Transforms/Utils/DialectConversion.cpp:1959:21
#19 0x00000000077340d9 (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) /home/llvm-project/mlir/lib/Transforms/Utils/DialectConversion.cpp:1867:17
#20 0x00000000077334df (anonymous namespace)::OperationConverter::convert(mlir::ConversionPatternRewriter&, mlir::Operation*) /home/llvm-project/mlir/lib/Transforms/Utils/DialectConversion.cpp:2378:26
#21 0x000000000772bb7e (anonymous namespace)::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>, llvm::function_ref<void (mlir::Diagnostic&)>) /home/llvm-project/mlir/lib/Transforms/Utils/DialectConversion.cpp:2432:16
#22 0x000000000772be47 mlir::applyFullConversion(llvm::ArrayRef<mlir::Operation*>, mlir::ConversionTarget const&, mlir::FrozenRewritePatternSet const&) /home/llvm-project/mlir/lib/Transforms/Utils/DialectConversion.cpp:3417:22
#23 0x000000000772bea6 mlir::applyFullConversion(mlir::Operation*, mlir::ConversionTarget const&, mlir::FrozenRewritePatternSet const&) /home/llvm-project/mlir/lib/Transforms/Utils/DialectConversion.cpp:3422:10
#24 0x0000000006a7b1d9 (anonymous namespace)::TosaToLinalg::runOnOperation() /home/llvm-project/mlir/lib/Conversion/TosaToLinalg/TosaToLinalgPass.cpp:67:16
#25 0x000000000764c5cb mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_7::operator()() const /home/llvm-project/mlir/lib/Pass/Pass.cpp:0:17
#26 0x000000000764c565 void llvm::function_ref<void ()>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_7>(long) /home/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:5
#27 0x0000000002748c19 llvm::function_ref<void ()>::operator()() const /home/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:5
#28 0x000000000764f71d void mlir::MLIRContext::executeAction<mlir::PassExecutionAction, mlir::Pass&>(llvm::function_ref<void ()>, llvm::ArrayRef<mlir::IRUnit>, mlir::Pass&) /home/llvm-project/mlir/include/mlir/IR/MLIRContext.h:276:3
#29 0x0000000007647c8a mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /home/llvm-project/mlir/lib/Pass/Pass.cpp:509:17
#30 0x000000000764823d mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /home/llvm-project/mlir/lib/Pass/Pass.cpp:569:16
#31 0x000000000764da08 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_15::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const /home/llvm-project/mlir/lib/Pass/Pass.cpp:789:36
#32 0x000000000764d679 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)::$_15&>(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)::$_15&) /home/llvm-project/mlir/include/mlir/IR/Threading.h:46:18
#33 0x0000000007649553 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)::$_15&>(mlir::MLIRContext*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>&, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_15&) /home/llvm-project/mlir/include/mlir/IR/Threading.h:92:10
#34 0x0000000007648df7 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) /home/llvm-project/mlir/lib/Pass/Pass.cpp:799:14
#35 0x0000000007648917 mlir::detail::OpToOpPassAdaptor::runOnOperation(bool) /home/llvm-project/mlir/lib/Pass/Pass.cpp:690:5
#36 0x000000000764c5b6 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_7::operator()() const /home/llvm-project/mlir/lib/Pass/Pass.cpp:501:11
#37 0x000000000764c565 void llvm::function_ref<void ()>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_7>(long) /home/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:5
#38 0x0000000002748c19 llvm::function_ref<void ()>::operator()() const /home/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:5
#39 0x000000000764f71d void mlir::MLIRContext::executeAction<mlir::PassExecutionAction, mlir::Pass&>(llvm::function_ref<void ()>, llvm::ArrayRef<mlir::IRUnit>, mlir::Pass&) /home/llvm-project/mlir/include/mlir/IR/MLIRContext.h:276:3
#40 0x0000000007647c8a mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /home/llvm-project/mlir/lib/Pass/Pass.cpp:509:17
#41 0x000000000764823d mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /home/llvm-project/mlir/lib/Pass/Pass.cpp:569:16
#42 0x0000000007649cbc mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) /home/llvm-project/mlir/lib/Pass/Pass.cpp:880:10
#43 0x0000000007649bde mlir::PassManager::run(mlir::Operation*) /home/llvm-project/mlir/lib/Pass/Pass.cpp:860:60
#44 0x000000000763ddf2 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) /home/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:384:17
#45 0x000000000763da29 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPool*) /home/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:441:12
#46 0x000000000763d81b mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_2::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const /home/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:512:12
#47 0x000000000763d79d mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, 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&)::$_2>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) /home/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#48 0x00000000077c2ef9 llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const /home/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
#49 0x00000000077c24d5 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::raw_ostream&)>, llvm::raw_ostream&, bool, bool) /home/llvm-project/mlir/lib/Support/ToolUtilities.cpp:28:12
#50 0x000000000763aa89 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) /home/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:515:10
#51 0x000000000763ad2d mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) /home/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:550:14
#52 0x000000000763af08 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) /home/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:566:10
#53 0x00000000026a4888 main /home/llvm-project/mlir/tools/mlir-opt/mlir-opt.cpp:284:33
#54 0x00007fcb8fbf3c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#55 0x00000000026a451a _start (/home/llvm-project/mlir/build/bin/mlir-opt+0x26a451a)
Segmentation fault (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsXFtP47r2_zTmJaJK7FwfeCiF6j__MwgEzN7SfqmcxGl9xnVybGco-9Mf2UmaS1tKS5nNnGGEpk3j2Gv91vK62TGWks45IRfAuwTe1Rku1SIXF5cEs79IsXgWZ3GePl88EqmsJF8uqQJobC2UKiRAYwCnAE7nVC3KeJTkSwCnjP1oPs4Lkf-bJArAaf0onJIkC0MnRKHtelHoZSh0bBslCQw8P0oChKEdpHaSAPsK2GOpSCEtlVuCFCJPy4ToQc0t4Nv1n7lcMirO80JZikg10lfWeYGlPC9oQRjlBKArAGFcUqYoHy3ztGQEwDAreTLS_wEYqlzic5WfM8oxmwMYmT-4dTxlAMFyN0FmBAsEl9W1Za2HsoBrLzHlAIYAeljMbY2pIlzmAqCJj1auu6IOQNeagHUHAHrIAujKAhBqUkdJzqXSBOp-Ij3UD8xKYtqkhGvaJsC7tAGcWA7wrgC6tnojwRX1XT1McGVu1B2d64abjWo2LE2I4_QoUQJzWeSSNNRUXMGJIdoQV3W_ncnJltE26KiecN2Vj-rn1gQJokrBG5iCq1og6y99yTwuiEWEyIW1JFLiObGotLC0spyx_EnuEujd1-vxw7Uly3hJlYWtuJxrtcyF0gp68IygUpZEAji1ME8tyhNWpsRSC2IlAsuFFePkuxI4IaNq-AeFk-9WWi6LNYH2yDL_7kQ-F3hpYTEvl4QrWYE9XeRLsjmwnhsATvVMSPWn1sPpa6bPAXPnnOMlSQGcbJ1SjToj27JXdvMPBhCmfmoZuNAYoLF8ltWXO0G5MgA8akQADNtGAj_NcqkEwUsAfa1LlCujcbsAaORBYwCnD2WhRQjg9BunK_0DnXPM5IjyBKBxABFAY8dpaXYGNCPoxdaAwKqP_8M8ZUQAGP7IaQrg-HRURaGmqiUKDohyIPG3AXlf8h5tsjEdB1LVkJMUWhsd2wNo7LXkoCFGGHnWEJRTisl1UB8Qt6YgyJI4chw_iELbms0EkSoXZCZUZevq3lehP_NdraTl6nzOy-pGoRaC4HQk85EN4KW9cmAU2j0F9rqMBkHiZn5mmQlm4B5nGeXkelXU13Oi_kV5WoNuzPfeeVpR-OUewGnbXQ08DDTuHXr8AT2e7cVb6fmDSqqMWd1N7RNm3wEMpUqraz3TFc05QBOt0BrBrQ_DqLbflX8a3P4Ts-9a_hPLzAp03Q52l0t1K1KjHTt63gtXbUjbHwbI1YyPFlpfPLuvt8GGOFPvBXGeBqA3aYCr9R61HIQ9DqLIc5LQAN1hY07UDV5d0eWYpw_PyzhnAE1aYzEWAj_fk2ynblwb6sOtTxzczcRiOZ_Xlnv99W1yvsGFka8fuNpYtuhEA3TcKAitJ8rYJfkDM5quHwcwLLkJjNPKnUys4fVBnL6CoY6Ub75-uZ_kXJGVaiysE2pWwjowgcixh6xglG6oquakEfnJWZp0hutQvM_PvYpd6MBWrzW7Pa_r48TF2MwvzHP-vMxLaemIQxYmOogqoh6boHSS8x9EKFITu8QqWYx5ek-eBFWkN0t1vDJ4-rbo83qHlSKC10-LWl8PmcoVPVJbCjh9zCV-zL_W8VHvcu1eI22nohaNnrv3shhh3DXzKVGYsur7bXErvnBFRIYTUtNcc3BpspfJPuYbC_0SbLcFEdiYPi39U6G1fY7XPd5ocsw0R8g2OtPi04s_cOBiJ_M3aRoXBaMJNm7wtAx2p1LjFGbCTKc4z1nfMdQd1N7S4NNYxl2dbHqXIzppH_6az2mC2T2RJVOv67eeYgC6M6f6mhuEclEFN0eEOGvYpxvyacId29fidlpBu0NB28ir3N1e7GpOTJMEM6bzrVnGe8B8KsqJFcXEDcbJ7w_829lf_zC-etSB_-PXaU0fZtcrJbA0VsDt5CBaNbx-DuKGiRMdphXHaPRxtPthn3Z_oNax9naDKK7rcs0PZEWSUpFxE4J2HHdRsOdGl6vb2zSzld0gvnsZq_2Bw5f7b5yqjaBhi8oc6RK6EcTC5EV-P3wIBoCG2PY-HcJJ5_nprLzJajvRTj-nCZAbJfa-2G8tnq9kjhn9u4n9WH35J1WLmoBXirUN2raHNK9j3wRWWS6WEsDpN0WZ_ryimJFEtSM0gV_kaXZgx-FFQyzsNHorFh8YgNDXuuAEawCgPQAAuWn2agAGiUBSXfb4f5nLLh59pN6Ff4gC7Rmg3_Lv9PmHcRyQN_K_vi13ZfU7mD7YKF1RPOe5VDQ5wnIchpyLdAbpdJCDQ-SIG3TEibWTnJaMdbOzI-DYpkqPWMyJ6tjMbrOpyP8mvJ-aPfRavwtCyHUCY21bhNAGQtjfi9BhpuNjIgGNrtgtEm6_3BDEzn4z20vkq6WJkt_yDiovl9qPKhHcYdlU4StT2VH4fnHadxMv2V0leMxvC93ZOMXFOgASJR84fyk3hLtb7GOO2bOk8gZzPK9qvjra2Sw9dZKE4ETZZEXqtIOPPfAk_gY8_ilzxw8L78_LwWDw6-ZgMByoRxY4b8nBtGyvzV2a70jCtPB_Xu5VjfZuKReMBvgFSYg_qPU52qR4dtQ3Kv0V7cB3Q9gry7-O67tmzb3vXXXTNTMvBqNHwTBUjy9cKmH2E-jpt5HkdhtUI1c3atrvsCBcfeFZ3rjvA4LkLUj7Ud-79dfhA99NsR0ejHTHPY_lM0--LAsGYFgB1C1deTvM0XsMeFvc3WjgjlhZ2AQuCHWvqAMcHALnB5G1K_dvf88wZThmWrCYMcKmubjGyQKgyWw25-UsWa2qhrMZz8USs5nOmvBwkfk9YDK6uV6F_UGSnzFoZ0TMWJ78DE6rNdOhLT-5qjdeaPf63sT6FPo_IfRP1P_3ptrRIdij2Z5E-byKvX1TMGvtPBrY-cjz0Jvs_O8j9mF09Y9Y2E-4P-AsiwaVIuQOA_40C07MyvGxX2SCZreldlgSCiPnTdSegEg_snuJN9qsy8T-B00cWyV7v7KVZzudHcgaoOCzcPXOhav-Nspfq3CFhoWXz8LVQYUrd1jC-S0KV-6wnPJZuHqnwpU7rL9ESZwMCGxYXuOKpSTylYttG7gdT3wY2v1wx91IKuKU7CH-BbLfQJmvKfM7lA0CMZSmGbQKIrJcLCuzJfe8N7QOf-UCC5LOCiV6O9of8lIk5GYuALresYK5GcV37jEqbgt1gymf5Dyj82PWNfPcLGUu69e1tD1ru23WM81e8e7k9obYYBhZhcgTIuVlmWXmjYtXQVNy-p-SbEBzQ5a5eG666rRPSYZLpmYpYUSR3c9sybVfwqvbrl7WvSdzKpV43thvVQXwd8Z0HLJR4zVQu67T33rs-kOoQyfeztQHhHw7lK9U4TZWgztCoJ_H0m5gDwvHX6UEnnlZoasEwVAJgijdWXo5Zj_eh0Bybybxuyh7m5j8TE5e0vH3SI-6Cj7YkplAkr2QH_0yivxrWqw3pI1dmUZDmbq9lx9lwaga8_RuEDb8ExD9gvr1Yos2szmsmta-Fa0d1TdFGVWUNDEyHEjYG2S2COMw-j1ik9O6e6-fFHnOENcUpjtxrVPWZIGr5HTcV40HJSif35PshZ9fBuW0zJpXpDslZA8Omc16-y6OZ_ZncuX7AxH2TyzwsRuGobXElO8dVm0O2Hxdz0PXvKXYjtY9nSDM4gwlYWDNZozGyUwqLNSsGbo5pWOu751P_vj_p7_i9SUcwQDAaSJLAKej0fqruWn6GSVmf6trtj-uh_eGzHoOtqqB62MRjjg5xJyQUHe2PiPhgczXZRbLTH09QJILYk4yIem65fqwlbP0AqURivAZuXAC2wlCP4Th2eIisbMI2U7ie5Hru8gLshj6ThKHfuojhJIzegFtiBxoe46LkBuOPMfRnyRI0zDOYAZcmywxZSPN1ygX8zNzCMtF4LpBdMZwTJg05yBBWLEKgXd1Ji4MDHE5l8C1GZVKth0oqpg5O0ln_sC76pRhXj77QWC5IKn1RNXCkpsoPS0It0pJ-dw675-hclYKdnH8aTOG1_8GAAD__9qD5kQ">