(List (= scope= flags=0 words=[] bindings=[('BALLS_LIB', {[ComSub (Com {[LIT_CHARS readlink]} {[LIT_CHARS -f]} {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub 0]})] [LIT_CHARS /../lib]})]})]) (Com {[LIT_CHARS shopt]} {[LIT_CHARS -s]} {[LIT_CHARS extglob]}) (Com {[LIT_CHARS .]} {[VarSub BALLS_LIB] [LIT_CHARS /balls.sh]}) (FunctionDef dash_trim_r [] (List (= scope= flags=0 words=[] bindings=[('str', {[DQ [VarSub 1 transform_ops=[(!ref)]]]})]) (= scope= flags=0 words=[] bindings=[('str', {[DQ [VarSub str transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS "*( )"]}]]]})]) (= scope= flags=1 words=[{[DQ [VarSub 1]] [LIT_OTHER "="] [DQ [VarSub str]]}] bindings=[]) ) ) (FunctionDef compile [] (List (= scope= flags=0 words=[{[LIT_CHARS code]}] bindings=[]) (= scope= flags=0 words=[{[LIT_CHARS chunk]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('trim_next', {[LIT_CHARS 0]})]) (While (Com {[LIT_CHARS read_until]} {[SQ ]} {[LIT_CHARS chunk]}) (List (If (Com {[LIT_OTHER "["]} {[DQ [VarSub FOUND]]} {[LIT_OTHER "="]} {[LIT_CHARS 1]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS read_until]} {[SQ ">]} {[LIT_CHARS code]}) (Com {[LIT_CHARS trim]} {[LIT_CHARS code]}) (Case to_match={[DQ [VarSub code transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}]]]}, pat_word_list=[[{[LIT_OTHER "="]}], [{[LIT_CHARS -]}]] (List (= scope= flags=0 words=[] bindings=[('code', {[DQ [VarSub code transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}} None]]]})]) (Com {[LIT_CHARS trim]} {[LIT_CHARS code]}) (= scope= flags=0 words=[] bindings=[('code', {[DQ [LIT_CHARS "echo -n "][VarSub code]]})]) ) (List (= scope= flags=0 words=[] bindings=[('code', {[DQ [VarSub code transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}} None]]]})]) (Com {[LIT_CHARS dash_trim_r]} {[LIT_CHARS chunk]}) (Com {[LIT_CHARS trim]} {[LIT_CHARS code]}) ) ) (Case to_match={[DQ [VarSub code transform_ops=[Slice {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub code transform_ops=[(#len)]]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}} None]]]}, pat_word_list=[[{[LIT_CHARS -]}]] (List (Com {[LIT_CHARS read]}) (= scope= flags=0 words=[] bindings=[('code', {[DQ [VarSub code transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}} {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub code transform_ops=[(#len)]]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]]]})]) (Com {[LIT_CHARS trim]} {[LIT_CHARS code]}) ) ) ) ) (Com {[LIT_CHARS bash_safe]} {[LIT_CHARS chunk]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "echo -n "][VarSub chunk]]}) (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub FOUND]]} {[LIT_OTHER "="]} {[LIT_CHARS 1]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS echo]} {[DQ [VarSub code]]}) ) ) ) (Com {[LIT_CHARS true]}) ) ) (= scope= flags=0 words=[] bindings=[('fname', {[VarSub 1]})]) (Com {[LIT_CHARS shift]}) (= scope= flags=1 words=[] bindings=[('eof', {[DQ [ComSub (Com {[LIT_CHARS echo]} {[LIT_CHARS -e]} {[SQ ]})]]})]) (Pipeline (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub fname]]} {[LIT_OTHER "]"]}) (AndOr OP_OR_IF (Com {[LIT_CHARS cat]} {[VarSub fname]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (ElseTrue) (Com {[LIT_CHARS cat]} {[LIT_CHARS -]}) ) (Com {[LIT_CHARS compile]}) ) )