package Ġfl ank . core l li um . adapter Ċ Ċ import Ġfl ank . core l li um . api . Android Test Plan Ċ import Ġfl ank . core l li um . client . console . clear Ċ import Ġfl ank . core l li um . client . console . close Ċ import Ġfl ank . core l li um . client . console . flow Logs Ċ import Ġfl ank . core l li um . client . console . send Command Ċ import Ġfl ank . core l li um . client . console . waitFor Idle Ċ import Ġfl ank . core l li um . client . core . connect Console Ċ import Ġkotlinx . coroutines . channels . try Send Blocking Ċ import Ġkotlinx . coroutines . flow . channel Flow Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . launch Ċ Ċ fun Ġexecute Android Test Plan ( ĊĠĠĠ Ġcore l li um : ĠGet Core l li um Ċ ) Ġ= ĠAndroid Test Plan . Execute Ġ{ Ġconfig Ġ-> ĊĠĠĠ Ġconfig . instances . map Ġ{ Ġ( instanceId , Ġcommands : ĠList < String >) Ġ-> ĊĠĠĠĠĠĠĠ Ġinstance Id Ġto Ġchannel Flow < String > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcore l li um (). connect Console ( instanceId ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvoke On Close Ġ{ Ġlaunch Ġ{ Ġclose () Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Ġ{ Ġcommands . forEach Ġ{ Ġstring Ġ-> Ġsend Command ( string ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Ġ{ Ġflow Logs (). collect ( channel :: try Send Blocking ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠwaitFor Idle ( 1 0 _ 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ