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

    <tr>
        <th>Summary</th>
        <td>
            [Mlir] --linalg-specialize-generic-ops crashes in Casting.h:566
        </td>
    </tr>

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

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

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

<pre>
    git version: e4372c4454c9

system: `Ubuntu 18.04.6 LTS`

reproduce with: `mlir-opt a.mlir  --linalg-specialize-generic-ops`

a.mlir: 
``` 
#map = affine_map<(d0, d1, d2) -> (0, d1, 0)>
#map1 = affine_map<(d0, d1, d2) -> (d0, d1, d2)>
#map2 = affine_map<(d0, d1) -> (d0)>
#map3 = affine_map<(d0, d1) -> (d1)>
#map4 = affine_map<(d0, d1) -> ()>
#map5 = affine_map<(d0, d1) -> (d0, d1)>
#map6 = affine_map<(d0, d1, d2) -> (0, d1, d2)>
#map7 = affine_map<(d0, d1, d2) -> (0, 0, 0)>
#map8 = affine_map<(d0, d1, d2) -> (d0, d2)>
#map9 = affine_map<(d0, d1, d2) -> (d2, d1)>
#map10 = affine_map<(d0, d1, d2) -> (d0, d1)>
module {
  func.func private @printMemrefI32(tensor<*xi32>)
  func.func private @printMemrefF32(tensor<*xf32>)
  func.func private @func1(%arg0: index, %arg1: tensor<1x4x26xi32>, %arg2: tensor<1x4x26xi32>) -> ( tensor<1x4x4xi32>) {
    %true = index.bool.constant true
    %cst = arith.constant dense<1> : tensor<1x4x1xi32>
    %cst_0 = arith.constant dense<0> : tensor<1x4x1xi32>
 %cst_1 = arith.constant dense<1> : tensor<1x4x4xi32>
    %cst_2 = arith.constant dense<6> : tensor<1x4x4xi32>
    %cst_3 = arith.constant dense<0> : tensor<1x4x4xi32>
    %c0_i32 = arith.constant 0 : i32
 %cst_4 = arith.constant dense<1.000000e+00> : tensor<1x4x1xf32>
    %cst_5 = arith.constant dense<0.000000e+00> : tensor<1x4x1xf32>
    %cst_6 = arith.constant dense<9968> : tensor<1x4x26xi32>
    %0 = tensor.empty() : tensor<1x4xi32>
    %c2147483647_i32 = arith.constant 2147483647 : i32
 %1 = linalg.fill ins(%c2147483647_i32 : i32) outs(%0 : tensor<1x4xi32>) -> tensor<1x4xi32>
    %reduced = linalg.reduce ins(%cst_6 : tensor<1x4x26xi32>) outs(%1 : tensor<1x4xi32>) dimensions = [2] 
      (%in: i32, %init: i32) {
        %51 = arith.minsi %in, %init : i32
 linalg.yield %51 : i32
      }
    %expanded = tensor.expand_shape %reduced [[0], [1, 2]] output_shape [1, 4, 1] : tensor<1x4xi32> into tensor<1x4x1xi32>
    %collapsed = tensor.collapse_shape %expanded [[0, 1, 2]] : tensor<1x4x1xi32> into tensor<4xi32>
    %collapsed_7 = tensor.collapse_shape %expanded [[0, 1, 2]] : tensor<1x4x1xi32> into tensor<4xi32>
    %12 = tensor.empty() : tensor<4x4xi32>
    %13 = linalg.generic {indexing_maps = [#map2, #map3, #map4, #map5], iterator_types = ["parallel", "parallel"]} ins(%collapsed_7, %collapsed, %c0_i32 : tensor<4xi32>, tensor<4xi32>, i32) outs(%12 : tensor<4x4xi32>) {
 ^bb0(%in: i32, %in_11: i32, %in_12: i32, %out: i32):
      %51 = arith.muli %in, %in_11 : i32
      %52 = arith.addi %in_12, %51 : i32
 linalg.yield %52 : i32
    } -> tensor<4x4xi32>
    %expanded_8 = tensor.expand_shape %13 [[0, 1], [2]] output_shape [1, 4, 4] : tensor<4x4xi32> into tensor<1x4x4xi32>
    %14 = scf.while (%arg3 = %cst_3) : (tensor<1x4x4xi32>) -> tensor<1x4x4xi32> {
      %51 = tensor.empty() : tensor<1x4x4xi1>
      %52 = linalg.generic {indexing_maps = [#map6, #map6, #map1], iterator_types = ["parallel", "parallel", "parallel"]} ins(%cst_2, %arg3 : tensor<1x4x4xi32>, tensor<1x4x4xi32>) outs(%51 : tensor<1x4x4xi1>) {
      ^bb0(%in: i32, %in_11: i32, %out: i1):
 %53 = arith.cmpi sgt, %in, %in_11 : i32
        linalg.yield %53 : i1
 } -> tensor<1x4x4xi1>
      %extracted = tensor.extract %52[%arg0, %arg0, %arg0] : tensor<1x4x4xi1>
      %from_elements = tensor.from_elements %extracted : tensor<i1>
      scf.condition(%extracted) %arg3 : tensor<1x4x4xi32>
    } do {
    ^bb0(%arg3: tensor<1x4x4xi32>):
      %51 = tensor.empty() : tensor<1x4x4xi32>
      %52 = linalg.generic {indexing_maps = [#map6, #map6, #map1], iterator_types = ["parallel", "parallel", "parallel"]} ins(%arg3, %cst_1 : tensor<1x4x4xi32>, tensor<1x4x4xi32>) outs(%51 : tensor<1x4x4xi32>) {
      ^bb0(%in: i32, %in_11: i32, %out: i32):
        %53 = arith.addi %in, %in_11 : i32
 linalg.yield %53 : i32
      } -> tensor<1x4x4xi32>
      scf.yield %52 : tensor<1x4x4xi32>
    }
    %45 = tensor.empty() : tensor<1x4x4xi32>
 %46 = linalg.generic {indexing_maps = [#map6, #map1], iterator_types = ["parallel", "parallel", "parallel"]} ins(%14 : tensor<1x4x4xi32>) outs(%45 : tensor<1x4x4xi32>) {
    ^bb0(%in: i32, %out: i32):
 %c0_i32_11 = arith.constant 0 : i32
      %51 = arith.subi %c0_i32_11, %in : i32
      %52 = arith.maxsi %in, %51 : i32
      linalg.yield %52 : i32
 } -> tensor<1x4x4xi32>
    %47 = tensor.empty() : tensor<1x4x4xi32>
 %48 = linalg.generic {indexing_maps = [#map6, #map1], iterator_types = ["parallel", "parallel", "parallel"]} ins(%46 : tensor<1x4x4xi32>) outs(%47 : tensor<1x4x4xi32>) {
    ^bb0(%in: i32, %out: i32):
 %c0_i32_11 = arith.constant 0 : i32
      %c16_i32 = arith.constant 16 : i32
      %51 = arith.maxsi %c0_i32_11, %in : i32
      %52 = arith.minsi %c16_i32, %51 : i32
      linalg.yield %52 : i32
    } -> tensor<1x4x4xi32>
    %49 = tensor.empty() : tensor<1x4x4xi32>
    %50 = linalg.generic {indexing_maps = [#map6, #map6, #map1], iterator_types = ["parallel", "parallel", "parallel"]} ins(%expanded_8, %48 : tensor<1x4x4xi32>, tensor<1x4x4xi32>) outs(%49 : tensor<1x4x4xi32>) {
 ^bb0(%in: i32, %in_11: i32, %out: i32):
      %51 = arith.shrui %in, %in_11 : i32
      linalg.yield %51 : i32
    } -> tensor<1x4x4xi32>
    return %50 :  tensor<1x4x4xi32>
  }
}


``` 
stack trace:

```
 mlir-opt: /data/szy/MLIR/llvm-release/llvm-project/llvm/include/llvm/Support/Casting.h:566: decltype(auto) llvm::cast(const From &) [To = mlir::RankedTensorType, From = mlir::Type]: Assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt --linalg-specialize-generic-ops a.mlir
 #0 0x0000564311abfce8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11f2ce8)
 #1 0x0000564311abd7fe llvm::sys::RunSignalHandlers() (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11f07fe)
 #2 0x0000564311ac067d SignalHandler(int) Signals.cpp:0:0
 #3 0x00007fd71bc7e420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x00007fd71b2bb00b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #5 0x00007fd71b29a859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
 #6 0x00007fd71b29a729 get_sysdep_segment_value /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:509:8
 #7 0x00007fd71b29a729 _nl_load_domain /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:970:34
 #8 0x00007fd71b2abfd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #9 0x0000564312cb67f5 (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x23e97f5)
#10 0x0000564312cb5120 (anonymous namespace)::DecomposeProjectedPermutation::matchAndRewrite(mlir::linalg::GenericOp, mlir::PatternRewriter&) const DecomposeGenericByUnfoldingPermutation.cpp:0:0
#11 0x0000564317b39d31 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<llvm::LogicalResult (mlir::Pattern const&)>)::$_0>(long) PatternApplicator.cpp:0:0
#12 0x0000564317b36a51 mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<llvm::LogicalResult (mlir::Pattern const&)>) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x7269a51)
#13 0x0000564314a92feb (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() GreedyPatternRewriteDriver.cpp:0:0
#14 0x0000564314a8f9af mlir::applyPatternsGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41c29af)
#15 0x0000564312a9de28 (anonymous namespace)::LinalgSpecializeGenericOpsPass::runOnOperation() Specialize.cpp:0:0
#16 0x0000564314a1a496 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x414d496)
#17 0x0000564314a1adc0 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x414ddc0)
#18 0x0000564314a1d6c2 mlir::PassManager::run(mlir::Operation*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41506c2)
#19 0x0000564314a15aea performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#20 0x0000564314a1573d llvm::LogicalResult llvm::function_ref<llvm::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&)::$_0>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#21 0x0000564314abc785 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::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41ef785)
#22 0x0000564314a0f755 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4142755)
#23 0x0000564314a0f9ff mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41429ff)
#24 0x0000564314a0fd2e mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4142d2e)
#25 0x0000564311a9ea67 main (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11d1a67)
#26 0x00007fd71b29c083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#27 0x0000564311a9e5de _start (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11d15de)

``` 
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsW9ly27iafhr6BmUVCO4XvpDtuCdVScUVu2cuVSABSpiQIAcAHamffgoAxU3UYqd1uvvUSTmKiOVfv38B4WAp2ZpTeucE907weIMbtanE3aeSFTu8pTdpRXZ3a6bAGxWSVdzxloD6XoQy3w_8LHHg0oFLuZOKlnrOCeHvacNVA9x4Af1FCL68vjghtOsErUVFmoyCn0xt2vVlwcRtVSuAF_orALe3BeO4WN_KmmYMF-wPerumnAqW3Va17KjZ9YYKXOpR82MekFfiGjjeI8B5zjhdlbh2vAcHxQQ66AEQ13wiByXg1vE-AQfFgwnooMTxPnWU3HeSOpgZEkNniI3JjLZ6l291J1v9i7dONgbvErcdGxIIP-6HA9tFH6EF51waf8ylU4GS95JBszZy4YcR1tIpK9IUFDjRvQOXAOQNzxb6A9SCvWFFgePDWjCuvtJS0PyzhxwUK8plJQyv5ZZ5SJNCyUUEng4J5OcJ6GfXYCzAYg117DJO6FYrY8dcPdaRdbf-FoWdaPtF6NSi3kjjJf5gxd5MQBNUoqHG_EaURVpVxSKruFSYK6An-6WZVNZRgqlNv4hQLqlmYxhPZXP3jIdkVvAUIXiWUEvFfb84_qw46BSh8B2EvPfrNUMIrpg3KxI02_X63gj-SSMsoPlDHXQPj9k1n1EkOKnIR6mGp6gmSRjP0urh3RGz-LGrFrSs1c7m7sPNB8ZFrh_5sRf60TEr9ysm5rZ4s_V5kbOiAIxLG9CHZO1GlICqUe0ieFS8fdyeFF1Q3T2QoRB2aCBGa-RTCaKXxz0lD2El5brrkYahE9wjJ3gErTjAFsuA8U5Tk58YZ2qge59qWh2CYcyWjEtmdw22D43eqrljtCDd9m7WEo0eexPRbY05aW20h4cZW8kNrunIjLrpu4dO8GiYB_em0mgltZ5Vo-pG7Xe1k77-cI0Z5g0HGFfV2QRYFQWu5VjK_WAvZ69LK6jhPRDxaIqcSDETBHsJVtFfJoOLLorhuQTpesMYaLtjjTVTwxhf6yaig23beFqEmUay_-r3X4MWCExRgVUlVmpX0wERVGOBi4IWDmppjUaCRyd6HARib-EW2t3I_hl2ieLQSuhhfvAgpbgHFGYqvRN8SlN4LGBXrns4hMZDVTOIasdbDrLAJKSbYhrRK3cmaFEQDHMvJoT1rO3OcawfZAI0IarNP86hc9DZA3oVn0oRGmBDwHcp4nx28A-iwj-VHWbAbQu6zPLFzw3TXe2-Y7So33ca-0gZNqLTTu-wpnSiDDNz78RLKqq_ZW4v8dCX7wrIsA-9wVf316LwfFzqbq_vpb0T_dgwBqeG7QNwrojuLTQpgO8Mw33MuX3IaX6jFrOsGZBr1RE5GXTgMIis_sw1xA8C6Ii36VYJnKlplTWDFg3GVfaQ05l69HWucsxwykVVrmhBS8qVHHKbTIxlGtAdU9QxlVWcMMUqbv3Q7TPOOouJPtWQaniOGnhWUzgBqiPZ88LAG0rxD4s8Y5e29LVnt6tE3swx98Ohd1DuwEEI9pXrWOwdC7pxD3siV4_wOy2AZ3Da1xU_-BDQ9M7wlzB2bWCZgnkCBz1ijAkuQswpvMyBo-vnrO9PH9xnGyfZpGxEpoPT2eapxNvJMWrmmHS6f7oIgNqC0YdBFP-tQeTPnJqPgCj6W4Eoc8Nj7zHc8CzqOuh8BHb703srwkexd2n-07ZPPlosNVf4TymV_SGltakJnl-rlv4pG334qHjxuVBuRHPJwfDsC5-LoCKoagTvnL4EJ1bbItl-2p_hbZpUOPsBdJNIrX7DBZrA_gbPnsWeCFbYQU_yj52Dnr5--fzdQU9F8VbeClpQLOn-sRbV_9JMtY8OemI8KxpC-4GXpq4roVc8YKkYXy82jrcMwlBzIjQrNOocFONGVdqDZpu3dLxlhqVyUGwSAXgSVQkcFBonB_evlfFKe3noeMvvmP-g5NXY59VQfGj3jJaZqeBR815KSYVuoYETQiax4z28VgZG8X_jwjbSoYNCjXIjivfwurPzehKLdaP7dlDlgPGsKmusWFpQYPVxTYhEIMesoGThwOXzl0_Ll09ANmnJFMAgbdZAUG0boCqwUaqWWkb05KCnNVObJl1kVdkbcmJvJmVDpYOeAOYEtGYHakNBJrDcgBRnP4y_Ne8X437SlLX1PlxYnD6Lai1w2SkjP-z-tGEF0f_qyHjq7oPP3AO398W2bHgQwC2EEAah77kuTvOMxgM8yJ20X54F48qo9GoAjeJ-kcA_V5VUguLSuO8BMK6sM-M_UTEH3cOt6-Yoo3F7W-Ygz50oQKKczinwveEvbM1x8V-Yk4IKuU__V5ERRjntZURjGTMYRgSMpHFQ3NrMDstFVmvcQPPXUvFaKlFOIjfNIuojCFYrQaWqBF0J1epSsNRBT9s4XIW-hkKzvV3zxk7UaiMoJgtZLaCV1fcR7CX1RzxQmkKYAoGZpGCg87pgaXb7JfuM4LZ7RAvP1SY08jvoabHQTztJaK1DpuFsawfejCi80Y-G9CLT2UnXB7cVIxiLkeA4SABOK6PjZWIoYu1gdhkOseYQtRzCKYcIJWBN1cpKvJJ0rYNz9YaL5mLdGVda86LCpJTrDFu-AdT1LW4ZR3OMV7xY6V0rUpVYN1C_wi-JNGo8v2UYjxniNCfhBUjJNEZCgxHPy0nYYyQZohllaRjlwTXCCHk0ifLAMtaRDieMAxdBzRjziu_KqpGA45LK2uSnxIb9I9VlopL02bKk5JmKslFY2d_KcbxliVW2WXLynf4UTOnU1tcum0nt999sDv1W6wzXL3nGSlHB292irZe2gnbc2733u995XhWE8fVAjEmsa1VHWS1KvYR4LnirGBmktrzhmd6-EjR3vAcz2_8eSlvOi0IXpVXOHe_hQOZlXRcs033oeUt8q3XHat5-Lc8b4OG4nGlVFWBEuiVgbWbt13anZ5X9JSL9xJdqzTJcfKeyKdRldFt8OchfQduhFBVfa9cfGHfGv2ji3xAH7qFJ_-OfX_DPNVJShMIEB26fkryhH32coJym51LSb4JSsht75VGwN9pqVIsqo1L-TyV-FMy041qb47tm4OWPxYrzBOcDROC6LvakpCHMit3Iqt_p2kApHEPpSVR_0D33lsALVQPjD1dbkdvVDxXP2Vov0AAzIL2Ki3w3QwnOexcFo6qBE0JRfM5FX0zaf-n65y71y2cs24ZSNPwbH0Sd8VK_ZcYr4dgrLvaTcGAuQhVmxT6aX6tvtWa2JLjuEoBo-AT8Uh7E-_FMsOS42Ekmv2KO1zoT7J3xABpufqGVXLF1912f-EnYeyaa2oNk8N32eGY1LRifJkO9tFMz_NMNNM6vUn7mUglznKvETAIeLhh0HnvZn7GgXH3mebWPpOtFh09IBnsfxBMfkDBDE9H3xphF4NiWV5I5gGGGepmTicwBphjUVOSVKJemgMgz51OpSHs83GBByapWYlRvXqpGZPTrWjjepyPJTWv1UHFFt-rA4V8LJr7V6itm3Ka9YXUCg9nDJIHgVLnIGzZ940r4kdLZ6d5w9n8NPdD9Ky0rsbtv8twGQLee0Bw3hVoRWlBFj-_RzeeksE89cL5DHRjpUl9eXZ9eukeGC5opXSWlErtDcJwCwJHG8V-pyQnPnIGnO4ZnmkVxMFBc1gVTS06ebQ-zl_UvAd0_MCROrhjOvSjB-Po7zY8OXykV0zyK-yM5QmM4wDwKgvk4-HeL4itVZxQFA_N6U_MmeX7UvG1jkm2wbUGW74XMOdtcTeck7_t15E91Joj-KTr_RcoRRHvlgvGb4ITiMALtK78rvIcmLg6jnvv0pWcGYw-sVgVLs5VUWKjVe94-ZrLZv-a1X82koWPeQ3o-0p8t72iqeUAosFyvpXtA9pYf3szdkDuPJF6Cb-idG3mh54UBhDebOwRxFGZu6rlBHrkQoThx84S6GclRBGlyw-4QRAF0Yey6vuvDRZDHLooh9D2SJIkbOj6kJWbFQsu5qMT6xtwY3bkIwcS_KXBKC3lnL3oNGs0F7o24M3qlzVo6PtRnftlTUEwV5r8ZauA7wePZ6x1zFUUlYBxMbv9uGlHcffzSq9Xi7Q79fwAAAP__P2udww">