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

    <tr>
        <th>Summary</th>
        <td>
            Flang crash compiling array value copy of record types containing assumed shape arrays
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            flang
      </td>
    </tr>

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

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

<pre>
    ```
module stuff
  type DerivedWithAllocatable
    integer, dimension(:), allocatable :: dat
  end type

  contains
  subroutine sb(x)
 type(DerivedWithAllocatable), dimension(:), intent(inout) :: x
 x(3:4) = x(1:2)
  end subroutine
end module
```

Building with `flang-new -fc1 -emit-obj -o /dev/null example.f90` leads to
```
error: loc("/home/user/allocmem-example2.f90":9:5): unhandled type in fir.box code generation
LLVM ERROR: aborting
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: ./flang-new -fc1 -emit-obj -o /dev/null /home/user/allocmem-example2.f90
 #0 0x0000aaaae13a21e4 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/user/llvm-project/llvm/lib/Support/Unix/Signals.inc:571:7
 #1 0x0000aaaae13a0800 std::atomic<CallbackAndCookie::Status>::store(CallbackAndCookie::Status, std::memory_order) /usr/lib/gcc/aarch64-linux-gnu/11/../../../../include/c++/11/atomic:271:2
 #2 0x0000aaaae13a0800 llvm::sys::RunSignalHandlers() /home/user/llvm-project/llvm/lib/Support/Signals.cpp:106:16
 #3 0x0000aaaae13a28c4 SignalHandler(int) /home/user/llvm-project/llvm/lib/Support/Unix/Signals.inc:412:1
 #4 0x0000ffff90d8e7dc (linux-vdso.so.1+0x7dc)
 #5 0x0000ffff908ef200 __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #6 0x0000ffff908aa67c gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #7 0x0000ffff90897130 abort ./stdlib/abort.c:81:7
 #8 0x0000aaaae132d6f8 llvm::report_fatal_error(llvm::Twine const&, bool) /home/user/llvm-project/llvm/lib/Support/ErrorHandling.cpp:125:5
 #9 0x0000aaaae132d534 (./flang-new+0x2a5d534)
#10 0x0000aaaae192f99c (./flang-new+0x305f99c)
#11 0x0000aaaae27bfc60 decltype(auto) llvm::cast<mlir::FloatType, mlir::Type>(mlir::Type const&) /home/user/llvm-project/llvm/include/llvm/Support/Casting.h:566:3
#12 0x0000aaaae27bfc60 mlir::FloatType mlir::Type::cast<mlir::FloatType>() const /home/user/llvm-project/llvm/../mlir/include/mlir/IR/Types.h:281:10
#13 0x0000aaaae27bfc60 EmboxCommonConversion<fir::cg::XEmboxOp>::getSizeAndTypeCode(mlir::Location, mlir::ConversionPatternRewriter&, mlir::Type, mlir::ValueRange) const /home/user/llvm-project/flang/lib/Optimizer/CodeGen/CodeGen.cpp:1379:37
#14 0x0000aaaae27be168 mlir::OpState::operator->() const /home/user/llvm-project/llvm/../mlir/include/mlir/IR/OpDefinition.h:88:42
#15 0x0000aaaae27be168 std::tuple<fir::BaseBoxType, mlir::Value, mlir::Value> EmboxCommonConversion<fir::cg::XEmboxOp>::consDescriptorPrefix<fir::cg::XEmboxOp>(fir::cg::XEmboxOp, mlir::Type, mlir::ConversionPatternRewriter&, unsigned int, mlir::ValueRange, mlir::Value) const /home/user/llvm-project/flang/lib/Optimizer/CodeGen/CodeGen.cpp:1569:16
#16 0x0000aaaae27bd3dc mlir::OpState::getOperation() /home/user/llvm-project/llvm/../mlir/include/mlir/IR/OpDefinition.h:91:38
#17 0x0000aaaae27bd3dc mlir::OpState::getContext() /home/user/llvm-project/llvm/../mlir/include/mlir/IR/OpDefinition.h:94:38
#18 0x0000aaaae27bd3dc XEmboxOpConversion::matchAndRewrite(fir::cg::XEmboxOp, fir::cg::XEmboxOpAdaptor, mlir::ConversionPatternRewriter&) const /home/user/llvm-project/flang/lib/Optimizer/CodeGen/CodeGen.cpp:1764:46
#19 0x0000aaaae27bd1cc mlir::ConvertOpToLLVMPattern<fir::cg::XEmboxOp>::matchAndRewrite(mlir::Operation*, llvm::ArrayRef<mlir::Value>, mlir::ConversionPatternRewriter&) const /home/user/llvm-project/llvm/../mlir/include/mlir/Conversion/LLVMCommon/Pattern.h:157:5
#20 0x0000aaaae34c3008 mlir::ConversionPattern::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const /home/user/llvm-project/mlir/lib/Transforms/Utils/DialectConversion.cpp:1702:10
#21 0x0000aaaae350fdd8 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/user/llvm-project/mlir/lib/Rewrite/PatternApplicator.cpp:202:7
#22 0x0000aaaae34cde04 (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) /home/user/llvm-project/mlir/lib/Transforms/Utils/DialectConversion.cpp:0:0
#23 0x0000aaaae34c65e0 (anonymous namespace)::OperationConverter::convert(mlir::ConversionPatternRewriter&, mlir::Operation*) /home/user/llvm-project/mlir/lib/Transforms/Utils/DialectConversion.cpp:0:0
#24 0x0000aaaae34c65e0 (anonymous namespace)::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>, llvm::function_ref<void (mlir::Diagnostic&)>) /home/user/llvm-project/mlir/lib/Transforms/Utils/DialectConversion.cpp:2454:16
#25 0x0000aaaae34c88bc mlir::applyFullConversion(llvm::ArrayRef<mlir::Operation*>, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&) /home/user/llvm-project/mlir/lib/Transforms/Utils/DialectConversion.cpp:3376:22
#26 0x0000aaaae34c88bc mlir::applyFullConversion(mlir::Operation*, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&) /home/user/llvm-project/mlir/lib/Transforms/Utils/DialectConversion.cpp:3381:10
#27 0x0000aaaae27805a0 (anonymous namespace)::FIRToLLVMLowering::runOnOperation() /home/user/llvm-project/flang/lib/Optimizer/CodeGen/CodeGen.cpp:3720:22
#28 0x0000aaaae4789ea0 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /home/user/llvm-project/mlir/lib/Pass/Pass.cpp:0:11
#29 0x0000aaaae478c7b8 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /home/user/llvm-project/mlir/lib/Pass/Pass.cpp:529:16
#30 0x0000aaaae478c7b8 mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) /home/user/llvm-project/mlir/lib/Pass/Pass.cpp:834:10
#31 0x0000aaaae478c7b8 mlir::PassManager::run(mlir::Operation*) /home/user/llvm-project/mlir/lib/Pass/Pass.cpp:814:60
#32 0x0000aaaae13b70c4 Fortran::frontend::CodeGenAction::generateLLVMIR() /home/user/llvm-project/flang/lib/Frontend/FrontendActions.cpp:548:27
#33 0x0000aaaae13b9350 Fortran::frontend::CodeGenAction::executeAction() /home/user/llvm-project/flang/lib/Frontend/FrontendActions.cpp:781:3
#34 0x0000aaaae13af48c Fortran::frontend::FrontendAction::execute() /home/user/llvm-project/flang/lib/Frontend/FrontendAction.cpp:0:3
#35 0x0000aaaae13a4a14 llvm::Error::getPtr() const /home/user/llvm-project/llvm/include/llvm/Support/Error.h:271:42
#36 0x0000aaaae13a4a14 llvm::Error::operator bool() /home/user/llvm-project/llvm/include/llvm/Support/Error.h:234:16
#37 0x0000aaaae13a4a14 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) /home/user/llvm-project/flang/lib/Frontend/CompilerInstance.cpp:167:23
#38 0x0000aaaae13b2614 std::default_delete<Fortran::frontend::FrontendAction>::operator()(Fortran::frontend::FrontendAction*) const /usr/lib/gcc/aarch64-linux-gnu/11/../../../../include/c++/11/bits/unique_ptr.h:85:2
#39 0x0000aaaae13b2614 std::unique_ptr<Fortran::frontend::FrontendAction, std::default_delete<Fortran::frontend::FrontendAction>>::~unique_ptr() /usr/lib/gcc/aarch64-linux-gnu/11/../../../../include/c++/11/bits/unique_ptr.h:361:4
#40 0x0000aaaae13b2614 Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) /home/user/llvm-project/flang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:174:1
#41 0x0000aaaae10bc4a4 fc1_main(llvm::ArrayRef<char const*>, char const*) /home/user/llvm-project/flang/tools/flang-driver/fc1_main.cpp:67:13
#42 0x0000aaaae10ba5c0 executeFC1Tool(llvm::SmallVectorImpl<char const*>&) /home/user/llvm-project/flang/tools/flang-driver/driver.cpp:66:12
#43 0x0000aaaae10ba5c0 main /home/user/llvm-project/flang/tools/flang-driver/driver.cpp:109:14
#44 0x0000ffff908973fc __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#45 0x0000ffff908974cc call_init ./csu/../csu/libc-start.c:128:20
#46 0x0000ffff908974cc __libc_start_main ./csu/../csu/libc-start.c:379:5
#47 0x0000aaaae10b9ab0 _start (./flang-new+0x27e9ab0)
```

The type causing that error is a `!fir.box<!fir.array<?x!fir.type<_QMstuffTderivedwithallocatable{dat:!fir.box<!fir.heap<!fir.array<?xi32>>>}>>>` so I think the problem comes from having a fir.box containing a fir.box, which cannot be lowered.

The `!fir.box<!fir.box<...>` is added to FIR by the ArrayValueCopy pass which transforms
```
  %10 = fir.array_load %arg0 [%9] : (!fir.box<!fir.array<?x!fir.type<_QMstuffTderivedwithallocatable{dat:!fir.box<!fir.heap<!fir.array<?xi32>>>}>>>, !fir.slice<1>) -> !fir.array<?x!fir.type<_QMstuffTderivedwithallocatable{dat:!fir.box<!fir.heap<!fir.array<?xi32>>>}>>
 %c2_i64 = arith.constant 2 : i64
  %11 = fir.convert %c2_i64 : (i64) -> index
  %12 = fir.slice %2, %11, %2 : (index, index, index) -> !fir.slice<1>
  %13 = fir.array_load %arg0 [%12] : (!fir.box<!fir.array<?x!fir.type<_QMstuffTderivedwithallocatable{dat:!fir.box<!fir.heap<!fir.array<?xi32>>>}>>>, !fir.slice<1>) -> !fir.array<?x!fir.type<_QMstuffTderivedwithallocatable{dat:!fir.box<!fir.heap<!fir.array<?xi32>>>}>>
```
to
```
 %c0_0 = arith.constant 0 : index
  %12:3 = fir.box_dims %arg0, %c0_0 : (!fir.box<!fir.array<?x!fir.type<_QMstuffTderivedwithallocatable{dat:!fir.box<!fir.heap<!fir.array<?xi32>>>}>>>, index) -> (index, index, index)
  %13 = fir.shape %12#1 : (index) -> !fir.shape<1>
  %14 = fir.allocmem !fir.array<?x!fir.type<_QMstuffTderivedwithallocatable{dat:!fir.box<!fir.heap<!fir.array<?xi32>>>}>>, %12#1
  %15 = fir.embox %14(%13) : (!fir.heap<!fir.array<?x!fir.type<_QMstuffTderivedwithallocatable{dat:!fir.box<!fir.heap<!fir.array<?xi32>>>}>>>, !fir.shape<1>) -> !fir.box<!fir.box<!fir.array<?x!fir.type<_QMstuffTderivedwithallocatable{dat:!fir.box<!fir.heap<!fir.array<?xi32>>>}>>>> 
%16 = fir.address_of(@_QQcl.d96d31b77781b8d8c498b4487dc800c4) : !fir.ref<!fir.char<1,37>>
  %c37 = arith.constant 37 : index
  %c11_i32 = arith.constant 11 : i32
  %17 = fir.convert %15 : (!fir.box<!fir.box<!fir.array<?x!fir.type<_QMstuffTderivedwithallocatable{dat:!fir.box<!fir.heap<!fir.array<?xi32>>>}>>>>) -> !fir.box<none>
  %18 = fir.convert %16 : (!fir.ref<!fir.char<1,37>>) -> !fir.ref<i8>
  %19 = fir.call @_FortranAInitialize(%17, %18, %c11_i32) : (!fir.box<none>, !fir.ref<i8>, i32) -> none
```

The `!fir.box<!fir.box<...>` comes from the `fir.embox` operation created by ArrayValueCopy to initialize the temporary array.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW0tv47iW_jXKhoghUU8vsnA50UwB1Ug6ldszO4OiKJu3KFJDUonTi_ntA1KS9bCc2KnKnRpggO6KTYnkd77z8fDwYaQU3XJCbpzwixPeXqFa74S80RlDu6tM5K83TuS2_7m3jrsqRV4zApSui6IpAUC_VgTcEkmfSf4fVO9WjAmMNMoY6V4BgHJNtkQ6cA1yWhKuqOAOTBx_5cClKUV9LWBK_RXIke4aIDy3_TTfu1IsuEaUq-67qjMpak05ASpzYLI3bTfPbGWYnIDZQJgHZpBz7cCEclFrBy47ePu26b0DE9_xV0Hz7NYWeI6_gn331oAeXlNqyhpCW7PGXDf_fqkpyynfgheqd8CJ3IIhvr3m5AVcF9gD16Sk-lpk_wTXAjgwzcmzA1NeMwbIHpUVI4tiaRoFjKBcAS1mOyNSCmmsYgIb8yF0YLoTJXFgWivjuNR6qCTlddsutA1D6PirpeOvQmOtvwI13yGeM9I4DFAOCioXmdgDLHICtoQTibRh2Xb87dtff4C7x8f7R1MZZUJqyrfNs4dvd6vvd4a3kmqAQFZvgSSVkBpoAXZaV8r6KXVguqV6V2cLLEoHpow9d3-uKyn-SbB2YEqVqolyYAoQzwHlmNU5AXpHAJZI7UCG8A8tESaLpvvvGuEfIK_LyvRii9yF4y4fpNhKVAIkt3VJuDYgwMKB6fmuOZPcRjwO9F3g7l3XdRFCiHg-gh4JgLXSalG9qubDg6RcW9xPxhAHJv1LEr1shNKSoNKBUSttq9kpmAlvHZs0c2D6va6MAxyY_oPTvSmgW46YWlCOjQpio_y4R-5NkLuJ6wKl8wYT0qKk2PHXa8SY4X_F87UQPyhpnn_XSNfK8e9aO7WQxqi334brvoOSlEK-boTMjWXW1lrJgzVbjA35SOJdFFwzyuv99ZbXDkw9z4HpYnH8T6sbB6bYgV_sf83LnS0rGDej_8ABnONgxnuPNW_Y_Hc7gqSyI_HDDuo8gysjYM-NzL9RD8ufiirBARgBsFHvl2sk8EzM8HogQQukKIpi6eYJiXMMjHatP55zJRZKLDwHfnH3cY77sOpAPxzVTUgBXRdsNpXeSYLyzQ_K2IaaEWVGqo07dqjySjMHpsPXFhZbYOQ7ICkat49QFGOwVdYg21LzsVOHelU5qUyQqYSytktEFVk0unD81aDpeNz0MvZ8t4mATcM6b-i0RbaFZDK4krEHYR4VyUBYTazcFEgjtmki_DAgPL2YmRILrnQbEDIh2E94-850YaVD-baTHQzt5HDAvJxiDv3AOHsUQK2rIQrNw4O7TTQZB8IlLJZLPF_bd0PzcFR7FIxgnBU4ckFOMGvTA1RrYezvOcJIacdfl4zKpiBlAukn-_oa9MW2xL9zYDIuG9B7Nq19hGkLeobXSJnpcbEznEZmQPu9dXDOuhnkR7DfMdSaZfBbW861wg4H29zQorbg66MDU9O4sqY0-ZLn9rb4c7bclZnYr0VZCr4W_JlIm6z566LDjLfN3_-0b95Xh4ljS_R3-jdZ8dx0uhYGy8BT30wmaBO_oU_7Ph6Q1kTyR_IiqTY2RzPeH5X8hVhNHhHfkvOJs_o9DKv7StOS_m1fNID_jfD-Uze4_NjkXH7cExdMiCNelAxw3Vdmkmx9LiqTigl5_Wkuvq9uSUE5NeRaTycmsw5gjzecw3uYvnVdMTL08BekyBexP0H4XJF_9xO6MXTcEoUlrbSQD5IUdP9eRZicfvyOat5TXM3tei1vMrdTepuh5RMlGEbLQV5hXBpNXJr7OT4lwS3R91W3ILgo2_mA-JYmyvhJjzS-DOlacE32-vNxBhOcyRzOTlRDSduUF2m8W_G81c57ejz5cJUjI_pLFPqJMosjQ0owkNlySoqH8RFSfV89CbPGbOGeNeqPGRxq4qDWlaGmTxVWUqLXR1KMZtEuBn0Gi-cIbCAOmBoemjDowLTt2QrOC-M-STMLllGa5QfYd93kLfyX89Y_-RkKWisbHT1JxFUhZGnS739oyszfW4oYwbpHfBCUC8c5Bxxlh37oFnmeHONcVRWj2Eybv9rooZiKmmNTcSOtoExiDkZNtw0M88tWZicbeRY0_-lGhknTlmLEHomqmT6v3feD5sihB0rTI-5bL0LrxD79gXAi3Jy4dnWBuOCvpagV4KgkqrKbI8uJl76RLWI2ENly1n4906XvDerP07Jr_z9w4E84iELins1BGzY7DnDzdUTB-XnxmKx_IQXBr6fg8FiNFtGzUX9k98Wj8paiLRdKU_zxoXMReTAIg3EOB8MJgUmSDSdXVFXsNa0ZG84vH2BlTlRPSG6JPtJSKsXfpJNaK7zvRF-0wP44Rb4fm9U27FcuMPoIRZcFkt-UiulqHU7y6MQN0bvDLf362GRm38QLkZS3yZis-T2_dElweT7px9Cd-HOUZAdxsiRouH2SE40o63z3JO6rB6RUlyR32CfToFJH3j3t9xVH7FVR9QfiqD0razbkpgu_C73bwLB_BtHS83rTlxPTcZwlF5v-QCvCKJ9Ol-bVg0Vvzg8f4mKcVCn1lSst7bGMWbocZV3DF5qemwct9gckCddfeSG6wXT5vHVMdwgnS-Txec4x4UPODvQipYg6M4Qc0ffTNiR-MB7045Od82x4A_3PA_QMwGgAcHLsksUuDkAqpJaodXshzYqe513ctRFihXtdtKeVxMQps1b_QDRKuz76j00PB3UESXM4cAA-OZjJln7oXgic7AmuNWmLPgV3bKeBfv_ZDybnSUWQ4Ldgj5sd4f61iAdRbwA3nMANkDc8U71rT8SbrZ8HLT-yQ_rGVr5tv9n9tueFg01RPzobWreF20bHSzamzsPmTzJDP57D9qY4y4oyIk3cRRyTeX2eL5Pz0puTypjC6bYDotha29s5OVvLYOQF_cZ0TgpUM73JCSOaOP76Ap3fjV3XeO0yDlYjJX7WiXZGtQmyNaf_VZNNpRtJJGF_um2IWr5JVF_5IpKGZ_g_yXVL938PkBzGyb-WOT-yA_1AXeDOUfeGde2o6TX8fDi4eks9R0PwvAl3fgw92UCT3p2CcthfC_pDfmPr-CKIm-EABaDA3qZE9OTiEe-Q7DOxZs04LrvADi2EXdg058S5pM_27Q5DC9wGAq8PBAGcAEchdkHriXTtNXwM4H8vEWN_EayF_FpWbNaKi2LYCdzNhw61vdzRj8rAn0NtzPyl3XquzWwHkg6mlxr8AoPNhtEMb5RGUm8wYswSbm85YFUf351ob2fMVbIDyWpr4KJw2mmAMbBVKKd62k_z0TR-bRu3Vys8e-cP9uljEM01OrJkzojZxptj2n5_PYgn3lmizAVNqyfuQsTEvNPfZpi7K_i0I82lO4xqRfkW6B3SwF78AFQBBMz70Gvv4zn-uv2CzIAzX_103xbZCxH-evPnH_au51PeXJx8oXo3uKnpxF9ypI3sZ1rdEVTN90F92EXmOye-7T9HLlACfAV6R_kPezOvkiJjpARYlESBQooS7NCzsQ0N7hXaa6CjQhMoXnYU7wBGnAsNMgKYeCGS5IspZSdYab4sFosWmWEwz0kOtADp10eQvVqENlrZY561qF5BhZRqe9b9rsqczwBwYOi59srogaENEyg3D5DcusAJvzgwXDrhLXD8FbDz1m_sPrgG7euKUZPprb127_La8e_AbwW3u48UYrihUWC9gCTVu4UN1IhrAC3pNAqG_vIO_mr3hUdtWB-ZGp3NlOdkP6wPD_UtR6YMNsSFJnOwH-ChJVvb3tQcfxgzOmJ70Jf_vrY8-P_i-iRxTYb7iYvXVj7uxp0ToNsI8EhCZkY5uDYT-01OS9U5ttVQ2-b_Cb9ORf2G7uflrXaoIi030Pcmw2cyWMy7M4Ml6AdLexf799JUGyOsgUPc4QE3Kc1saG2xTg89v_25wkAEp7v931bBnH8mvpuZn383QwzYNs0LvajXVJ5LotRGFMYVgbv580_MFvkyyn0vi-M48bIkT3CwTLIgSOIcJ66Lg959FkBzYNh-MYsKSxNc-_FoUrPD34_nIootPQ4p2PM21IdzNbxmNBl7B6KL52ZBK8WTAed3dde8xrjgZBIgklmbo4nN7_po0l3zPk0mnS37zhBjwCimXeCvvnKqaXcxwTqjiw1JF_sbdx4P_rFt_ZgbgjDBtqlrYdqX315ynJk_D1J43dQ6BC3zWHTHAQBLgjTJTYI9Sa61APRgvW1Fk7ISEslXYN29uMpv_HzpL9EVufGi2IVhFLrwaneDElKQAvrhMsNJgDJ3maA8gjhYRonre_EVvYEuhB50Qy9yEy9ZJNkyW3oExhHyiih3ncAlJaJsYdbLCyG3V_YHRTfh0g_gFUMZYcr-kA7CdgltcqsreWPX11m9VU7gMqq06lvQVDNyk5rX2x8hYbuhYtcyxiDwbIwH2FgvCiAJFrL5ZZUarXuUqkuSg2YitDXVVS3Zzcd_JGXN-p8AAAD__-85JQc">