(command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-n>} { (DQ (braced_var_sub token: <Id.VSub_Name FLAGS_VERSION> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_VERSION) op: assign_op.Equal rhs: {(SQ <1.2.1>)} spids: [270] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_TRUE) op: assign_op.Equal rhs: {<0>} spids: [279] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_FALSE) op: assign_op.Equal rhs: {<1>} spids: [282] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_ERROR) op: assign_op.Equal rhs: {<2>} spids: [285] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_LEVEL_DEBUG) op: assign_op.Equal rhs: {<0>} spids: [292] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_LEVEL_INFO) op: assign_op.Equal rhs: {<1>} spids: [295] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_LEVEL_WARN) op: assign_op.Equal rhs: {<2>} spids: [298] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_LEVEL_ERROR) op: assign_op.Equal rhs: {<3>} spids: [301] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_LEVEL_FATAL) op: assign_op.Equal rhs: {<4>} spids: [304] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_LEVEL_DEFAULT) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_LEVEL_WARN)} spids: [307] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_EXPR_CMD) op: assign_op.Equal rhs: {(SQ <'expr --'>)} spids: [316] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_UNAME_S) op: assign_op.Equal rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<uname>} {<-s>}))} spids: [321] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name __FLAGS_UNAME_S))} {<Id.Lit_Equals '='>} {(SQ <BSD>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_EXPR_CMD) op: assign_op.Equal rhs: {(SQ <'gexpr --'>)} spids: [352] ) ] ) ] spids: [330 349] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_output_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [{(${ Id.VSub_Name __FLAGS_EXPR_CMD)}] redirects: [ (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ) } spids: [360] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {(${ Id.VSub_Name FLAGS_TRUE)} {<-a>} {(DQ (${ Id.VSub_Name _flags_output_))} {<Id.Lit_Equals '='>} {(SQ <-->)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_EXPR_CMD) op: assign_op.Equal rhs: {(SQ <expr>)} spids: [409] ) ] ) ] spids: [373 402] ) ] ) (C {<unset>} {<_flags_output_>}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_EXPR_CMD) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name FLAGS_EXPR_CMD> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {(${ Id.VSub_Name __FLAGS_EXPR_CMD)} ) ) } spids: [428] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_GETOPT_CMD) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name FLAGS_GETOPT_CMD> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<getopt>}) ) } spids: [437] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} { (DQ (braced_var_sub token: <Id.VSub_Name ZSH_VERSION> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Pipeline children: [ (C {<setopt>}) (command.Simple words: [{<grep>} {(DQ <'^shwordsplit'> <Id.Lit_Dollar '$'>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ] negated: F ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_flags_fatal>} {(SQ <'zsh shwordsplit option is required for proper zsh operation'>)} ) ] spids: [481 496] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} { (DQ (braced_var_sub token: <Id.VSub_Name FLAGS_PARENT> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_flags_fatal>} { (DQ <'zsh does not pass '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'0 through properly. please declare\' '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'FLAGS_PARENT='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <0> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) <' before calling shFlags'> ) } ) ] spids: [509 525] ) ] ) ] spids: [448 464] ) ] ) (command.Subshell child: (command.Sentence child: (C {<echo>} { (DQ (braced_var_sub token: <Id.VSub_Name FLAGS_TRUE> suffix_op: (suffix_op.Unary tok:<Id.VOp1_Pound '#'> arg_word:{<0>}) ) ) } ) terminator: <Id.Op_Semi _> ) redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>}) (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>}) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_USE_BUILTIN) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [591] ) ] ) ] spids: [573 588] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_USE_BUILTIN) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [599] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_RESERVED_LIST) op: assign_op.Equal rhs: {(SQ <' ARGC ARGV ERROR FALSE GETOPT_CMD HELP PARENT TRUE '>)} spids: [621] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_RESERVED_LIST) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name __FLAGS_RESERVED_LIST) <' VERSION '>)} spids: [626] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_GETOPT_VERS_STD) op: assign_op.Equal rhs: {<0>} spids: [638] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_GETOPT_VERS_ENH) op: assign_op.Equal rhs: {<1>} spids: [641] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_GETOPT_VERS_BSD) op: assign_op.Equal rhs: {<2>} spids: [644] ) ] ) (command.Simple words: [{(${ Id.VSub_Name FLAGS_GETOPT_CMD)}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>}) (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>}) ] do_fork: T ) (command.Case to_match: {($ Id.VSub_QMark '$?')} arms: [ (case_arm pat_list: [{<0>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_GETOPT_VERS) op: assign_op.Equal rhs: {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_STD)} spids: [668] ) ] ) ] spids: [665 666 673 -1] ) (case_arm pat_list: [{<1>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_GETOPT_VERS) op: assign_op.Equal rhs: {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH)} spids: [682] ) ] ) ] spids: [679 680 687 -1] ) (case_arm pat_list: [{<2>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {(${ Id.VSub_Name FLAGS_GETOPT_CMD)} {<--version>}) ) ) } {<Id.Lit_Equals '='>} {(SQ <'-- '>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_GETOPT_VERS) op: assign_op.Equal rhs: {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_STD)} spids: [729] ) ] ) ] spids: [701 726] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_GETOPT_VERS) op: assign_op.Equal rhs: {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH)} spids: [738] ) ] ) ] ) ] spids: [693 694 747 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<_flags_fatal>} {(SQ <'unable to determine getopt version'>)})] spids: [750 751 759 -1] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_OPTSTR_SHORT) op: assign_op.Equal rhs: {<0>} spids: [767] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_OPTSTR_LONG) op: assign_op.Equal rhs: {<1>} spids: [770] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_NULL) op: assign_op.Equal rhs: {(SQ <'~'>)} spids: [774] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_INFO_DEFAULT) op: assign_op.Equal rhs: {(SQ <default>)} spids: [783] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_INFO_HELP) op: assign_op.Equal rhs: {(SQ <help>)} spids: [788] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_INFO_SHORT) op: assign_op.Equal rhs: {(SQ <short>)} spids: [793] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_INFO_TYPE) op: assign_op.Equal rhs: {(SQ <type>)} spids: [798] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_LEN_SHORT) op: assign_op.Equal rhs: {<0>} spids: [807] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_LEN_LONG) op: assign_op.Equal rhs: {<1>} spids: [810] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_TYPE_NONE) op: assign_op.Equal rhs: {<0>} spids: [817] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_TYPE_BOOLEAN) op: assign_op.Equal rhs: {<1>} spids: [820] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_TYPE_FLOAT) op: assign_op.Equal rhs: {<2>} spids: [823] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_TYPE_INTEGER) op: assign_op.Equal rhs: {<3>} spids: [826] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__FLAGS_TYPE_STRING) op: assign_op.Equal rhs: {<4>} spids: [829] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_constants) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<set>}) (C {<awk>} {<-F> <Id.Lit_Equals '='>} {(SQ <'/^FLAGS_/ || /^__FLAGS_/ {print $1}'>)} ) ] negated: F ) ) } spids: [836] ) ] ) (command.ForEach iter_name: __flags_const iter_words: [{(${ Id.VSub_Name __flags_constants)}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {(${ Id.VSub_Name __flags_const)} arms: [ (case_arm pat_list: [{<FLAGS_HELP>}] action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)] spids: [880 881 885 -1] ) (case_arm pat_list: [{<FLAGS_PARENT>}] action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)] spids: [888 889 893 -1] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} { (DQ (braced_var_sub token: <Id.VSub_Name ZSH_VERSION> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<readonly>} {(${ Id.VSub_Name __flags_const)}) (command.ControlFlow token:<Id.ControlFlow_Continue continue>) ] spids: [903 919] ) ] ) (command.Case to_match: {(${ Id.VSub_Name ZSH_VERSION)} arms: [ (case_arm pat_list: [{<Id.Lit_LBracket '['> <123> <Id.Lit_RBracket ']'> <.> <Id.Lit_Star '*'>}] action: [(C {<readonly>} {(${ Id.VSub_Name __flags_const)})] spids: [944 949 957 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<readonly>} {<-g>} {(${ Id.VSub_Name __flags_const)})] spids: [960 961 971 -1] ) ] ) ] ) ) (C {<unset>} {<__flags_const>} {<__flags_constants>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_boolNames) op: assign_op.Equal rhs: {(SQ <' '>)} spids: [1001] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_longNames) op: assign_op.Equal rhs: {(SQ <' '>)} spids: [1009] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_shortNames) op: assign_op.Equal rhs: {(SQ <' '>)} spids: [1017] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_definedNames) op: assign_op.Equal rhs: {(SQ <' '>)} spids: [1025] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_columns) op: assign_op.Equal rhs: {(SQ )} spids: [1034] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_level) op: assign_op.Equal rhs: {<0>} spids: [1041] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_opts) op: assign_op.Equal rhs: {(SQ )} spids: [1047] ) ] ) (command.ShFunction name: _flags_debug body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name __flags_level)} {<-le>} {(${ Id.VSub_Name FLAGS_LEVEL_DEBUG)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.Simple words: [{<echo>} {(DQ <'flags:DEBUG '> ($ Id.VSub_At '$@'))}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) ] ) ) (command.ShFunction name: _flags_info body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name __flags_level)} {<-le>} {(${ Id.VSub_Name FLAGS_LEVEL_INFO)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.Simple words: [{<echo>} {(DQ <'flags:INFO '> ($ Id.VSub_At '$@'))}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) ] ) ) (command.ShFunction name: _flags_warn body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name __flags_level)} {<-le>} {(${ Id.VSub_Name FLAGS_LEVEL_WARN)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.Simple words: [{<echo>} {(DQ <'flags:WARN '> ($ Id.VSub_At '$@'))}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) ] ) ) (command.ShFunction name: _flags_error body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name __flags_level)} {<-le>} {(${ Id.VSub_Name FLAGS_LEVEL_ERROR)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.Simple words: [{<echo>} {(DQ <'flags:ERROR '> ($ Id.VSub_At '$@'))}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) ] ) ) (command.ShFunction name: _flags_fatal body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name __flags_level)} {<-le>} {(${ Id.VSub_Name FLAGS_LEVEL_FATAL)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.Simple words: [{<echo>} {(DQ <'flags:FATAL '> ($ Id.VSub_At '$@'))}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {(${ Id.VSub_Name FLAGS_ERROR)} ) ] ) ) (command.ShFunction name: flags_loggingLevel body: (BraceGroup children: [ (command.Sentence child: (C {<echo>} {(${ Id.VSub_Name __flags_level)}) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: flags_setLoggingLevel body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-ne>} {<1>} {<Id.Lit_RBracket ']'>}) (C {<_flags_fatal>} {(DQ <'flags_setLevel(): logging level missing'>)}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_level_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1329] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_level_)} {<-ge>} {(${ Id.VSub_Name FLAGS_LEVEL_DEBUG)} {<-a>} {(${ Id.VSub_Name _flags_level_)} {<-le>} {(${ Id.VSub_Name FLAGS_LEVEL_FATAL)} {<Id.Lit_RBracket ']'>} ) (C {<_flags_fatal>} { (DQ <'Invalid logging level \''> (${ Id.VSub_Name _flags_level_) <'\' specified.'>) } ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_level) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1376] ) ] ) (C {<unset>} {<_flags_level_>}) ] ) ) (command.ShFunction name: _flags_define body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-lt>} {<4>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: {(SQ <'DEFINE error: too few arguments'>)} spids: [1464] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [1470] ) ] ) (C {<_flags_error>} {(DQ (${ Id.VSub_Name flags_error))}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name flags_return)} ) ] spids: [1448 1461] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_type_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1496] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_name_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [1500] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_default_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$3')} spids: [1504] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_help_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$4')} spids: [1508] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_short_) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Number 5> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {(${ Id.VSub_Name __FLAGS_NULL)} ) ) } spids: [1512] ) ] ) (C {<_flags_debug>} { (DQ <'type:'> (${ Id.VSub_Name _flags_type_) <' name:'> (${ Id.VSub_Name _flags_name_)) } { (DQ <'default:\''> (${ Id.VSub_Name _flags_default_) <'\' help:\''> (${ Id.VSub_Name _flags_help_) <'\''> ) } {(DQ <'short:'> (${ Id.VSub_Name _flags_short_))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_return_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [1561] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_usName_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<_flags_underscoreName>} {(${ Id.VSub_Name _flags_name_)}) ) } spids: [1567] ) ] ) (C {<_flags_itemInList>} {(${ Id.VSub_Name _flags_usName_)} {(DQ (${ Id.VSub_Name __FLAGS_RESERVED_LIST))} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: {(DQ <'flag name ('> (${ Id.VSub_Name _flags_name_) <') is reserved'>)} spids: [1615] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_return_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [1625] ) ] ) ] spids: [1597 1612] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_return_)} {<-eq>} {(${ Id.VSub_Name FLAGS_TRUE)} {<-a>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS)} {<-ne>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH)} {<-a>} {(DQ (${ Id.VSub_Name _flags_short_))} {<Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ <'short flag required for ('> (${ Id.VSub_Name _flags_name_) <') on this platform'> ) } spids: [1691] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_return_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [1701] ) ] ) ] spids: [1639 1688] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_return_)} {<-eq>} {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<_flags_itemInList>} {(${ Id.VSub_Name _flags_usName_)} {(${ Id.VSub_Name __flags_definedNames)} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ <'definition for ([no]'> (${ Id.VSub_Name _flags_name_) <') already exists'> ) } spids: [1751] ) ] ) (C {<_flags_warn>} {(DQ (${ Id.VSub_Name flags_error))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_return_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [1770] ) ] ) ] spids: [1735 1748] ) ] ) ] spids: [1715 1732] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_return_)} {<-eq>} {(${ Id.VSub_Name FLAGS_TRUE)} {<-a>} {(DQ (${ Id.VSub_Name _flags_short_))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<_flags_itemInList>} {(DQ (${ Id.VSub_Name _flags_short_))} {(${ Id.VSub_Name __flags_shortNames)} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ <'flag short name ('> (${ Id.VSub_Name _flags_short_) <') already defined'> ) } spids: [1844] ) ] ) (C {<_flags_warn>} {(DQ (${ Id.VSub_Name flags_error))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_return_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [1863] ) ] ) ] spids: [1826 1841] ) ] ) ] spids: [1787 1823] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_return_)} {<-eq>} {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Case to_match: {(${ Id.VSub_Name _flags_type_)} arms: [ (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<_flags_validBool>} {(DQ (${ Id.VSub_Name _flags_default_))} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Case to_match: {(${ Id.VSub_Name _flags_default_)} arms: [ (case_arm pat_list: [{<true>} {<t>} {<0>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_default_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [1953] ) ] ) ] spids: [1946 1951 1958 -1] ) (case_arm pat_list: [{<false>} {<f>} {<1>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_default_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [1968] ) ] ) ] spids: [1961 1966 1973 -1] ) ] ) ] spids: [1923 1934] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ <'invalid default flag value \''> (${ Id.VSub_Name _flags_default_) <'\''> ) } spids: [1982] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_return_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [1992] ) ] ) ] ) ] spids: [1917 1920 2001 -1] ) (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_FLOAT)}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<_flags_validFloat>} {(DQ (${ Id.VSub_Name _flags_default_))} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Id.Lit_Colon ':'>})] spids: [2011 2022] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ <'invalid default flag value \''> (${ Id.VSub_Name _flags_default_) <'\''> ) } spids: [2031] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_return_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [2041] ) ] ) ] ) ] spids: [2005 2008 2050 -1] ) (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_INTEGER)}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<_flags_validInt>} {(DQ (${ Id.VSub_Name _flags_default_))} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Id.Lit_Colon ':'>})] spids: [2060 2071] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ <'invalid default flag value \''> (${ Id.VSub_Name _flags_default_) <'\''> ) } spids: [2080] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_return_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [2090] ) ] ) ] ) ] spids: [2054 2057 2099 -1] ) (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_STRING)}] spids: [2103 2106 2108 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ <'unrecognized flag type \''> (${ Id.VSub_Name _flags_type_) <'\''> ) } spids: [2119] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_return_) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [2129] ) ] ) ] spids: [2115 2116 2135 -1] ) ] ) ] spids: [1888 1905] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_return_)} {<-eq>} {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<eval>} { (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'=\''> (${ Id.VSub_Name _flags_default_) <'\''> ) } ) (C {<eval>} { (DQ <__flags_> (${ Id.VSub_Name _flags_usName_) <_> (${ Id.VSub_Name __FLAGS_INFO_TYPE) <'='> (${ Id.VSub_Name _flags_type_) ) } ) (C {<eval>} { (DQ <__flags_> (${ Id.VSub_Name _flags_usName_) <_> (${ Id.VSub_Name __FLAGS_INFO_DEFAULT) <'='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name _flags_default_) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) ) } ) (C {<eval>} { (DQ <__flags_> (${ Id.VSub_Name _flags_usName_) <_> (${ Id.VSub_Name __FLAGS_INFO_HELP) <'='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name _flags_help_) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) ) } ) (C {<eval>} { (DQ <__flags_> (${ Id.VSub_Name _flags_usName_) <_> (${ Id.VSub_Name __FLAGS_INFO_SHORT) <'=\''> (${ Id.VSub_Name _flags_short_) <'\''> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_shortNames) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name __flags_shortNames) (${ Id.VSub_Name _flags_short_) <' '> ) } spids: [2267] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_longNames) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name __flags_longNames) (${ Id.VSub_Name _flags_name_) <' '> ) } spids: [2279] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_type_)} {<-eq>} {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_boolNames) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name __flags_boolNames) <no> (${ Id.VSub_Name _flags_name_) <' '> ) } spids: [2309] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_definedNames) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name __flags_definedNames) (${ Id.VSub_Name _flags_usName_) <' '> ) } spids: [2327] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_type_)} {<-eq>} {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_definedNames) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name __flags_definedNames) <no> (${ Id.VSub_Name _flags_usName_) <' '> ) } spids: [2357] ) ] ) ] ) ] spids: [2145 2162] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name _flags_return_)} spids: [2374] ) ] ) (C {<unset>} {<_flags_default_>} {<_flags_help_>} {<_flags_name_>} {<_flags_return_>} {<_flags_short_>} {<_flags_type_>} {<_flags_usName_>} ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name flags_return)} {<-eq>} {(${ Id.VSub_Name FLAGS_ERROR)} {<Id.Lit_RBracket ']'>} ) (C {<_flags_error>} {(DQ (${ Id.VSub_Name flags_error))}) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_underscoreName body: (BraceGroup children: [ (command.Pipeline children: [(C {<echo>} {($ Id.VSub_Number '$1')}) (C {<tr>} {(SQ <->)} {(SQ <_>)})] negated: F ) ] ) ) (command.ShFunction name: _flags_genOptStr body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_optStrType_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [2516] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_opts_) op: assign_op.Equal rhs: {(SQ )} spids: [2521] ) ] ) (command.ForEach iter_name: _flags_name_ iter_words: [{(${ Id.VSub_Name __flags_longNames)}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_usName_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<_flags_underscoreName>} {(${ Id.VSub_Name _flags_name_)}) ) } spids: [2541] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_type_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<_flags_getFlagInfo>} {(${ Id.VSub_Name _flags_usName_)} {(${ Id.VSub_Name __FLAGS_INFO_TYPE)} ) ) } spids: [2553] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>} ) (C {<_flags_fatal>} {(SQ <'call to _flags_type_ failed'>)}) ] ) (command.Case to_match: {(${ Id.VSub_Name _flags_optStrType_)} arms: [ (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_OPTSTR_SHORT)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_shortName_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<_flags_getFlagInfo>} {(${ Id.VSub_Name _flags_usName_)} {(${ Id.VSub_Name __FLAGS_INFO_SHORT)} ) ) } spids: [2605] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _flags_shortName_))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_opts_) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name _flags_opts_) (${ Id.VSub_Name _flags_shortName_) ) } spids: [2651] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_type_)} {<-ne>} {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_opts_) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name _flags_opts_) <':'>)} spids: [2684] ) ] ) ] ) ] spids: [2626 2648] ) ] ) ] spids: [2599 2602 2696 -1] ) (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_OPTSTR_LONG)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_opts_) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name _flags_opts_> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: {(${ Id.VSub_Name _flags_opts_) <','>} ) ) (${ Id.VSub_Name _flags_name_) ) } spids: [2706] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_type_)} {<-ne>} {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_opts_) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name _flags_opts_) <':'>)} spids: [2744] ) ] ) ] ) ] spids: [2700 2703 2753 -1] ) ] ) ] ) ) (C {<echo>} {(DQ (${ Id.VSub_Name _flags_opts_))}) (C {<unset>} {<_flags_name_>} {<_flags_opts_>} {<_flags_optStrType_>} {<_flags_shortName_>} {<_flags_type_>} {<_flags_usName_>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name FLAGS_TRUE)} ) ] ) ) (command.ShFunction name: _flags_getFlagInfo body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_gFI_usName_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [2840] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_gFI_info_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [2844] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_infoVar_) op: assign_op.Equal rhs: { (DQ <__flags_> (${ Id.VSub_Name _flags_gFI_usName_) <_> (${ Id.VSub_Name _flags_gFI_info_) ) } spids: [2849] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_strToEval_) op: assign_op.Equal rhs: { (DQ <'_flags_infoValue_='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{'> (${ Id.VSub_Name _flags_infoVar_) <':-}'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ) } spids: [2862] ) ] ) (C {<eval>} {(DQ (${ Id.VSub_Name _flags_strToEval_))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} { (DQ (braced_var_sub token: <Id.VSub_Name _flags_infoValue_> suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{<x>}) ) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [2905] ) ] ) ] spids: [2885 2902] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_typeVar_) op: assign_op.Equal rhs: { (DQ <__flags_> (${ Id.VSub_Name _flags_gFI_usName_) <_> (${ Id.VSub_Name __FLAGS_INFO_TYPE) ) } spids: [2946] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_strToEval_) op: assign_op.Equal rhs: { (DQ <'_flags_typeValue_='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{'> (${ Id.VSub_Name _flags_typeVar_) <':-}'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ) } spids: [2959] ) ] ) (C {<eval>} {(DQ (${ Id.VSub_Name _flags_strToEval_))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _flags_typeValue_))} {<Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name __FLAGS_TYPE_STRING))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [3006] ) ] ) ] spids: [2982 3003] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [3015] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ <'missing flag info variable ('> (${ Id.VSub_Name _flags_infoVar_) <')'> ) } spids: [3021] ) ] ) ] ) ] ) (C {<echo>} {(DQ (${ Id.VSub_Name _flags_infoValue_))}) (C {<unset>} {<_flags_gFI_usName_>} {<_flags_gfI_info_>} {<_flags_infoValue_>} {<_flags_infoVar_>} {<_flags_strToEval_>} {<_flags_typeValue_>} {<_flags_typeVar_>} ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name flags_return)} {<-eq>} {(${ Id.VSub_Name FLAGS_ERROR)} {<Id.Lit_RBracket ']'>} ) (C {<_flags_error>} {(DQ (${ Id.VSub_Name flags_error))}) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_itemInList body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_str_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [3137] ) ] ) (C {<shift>}) (command.Case to_match: { (DQ <' '> (braced_var_sub token: <Id.VSub_Star '*'> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) <' '> ) } arms: [ (case_arm pat_list: [ {<Id.Lit_Star '*'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>) (${ Id.VSub_Name _flags_str_) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>) <Id.Lit_Star '*'> } ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [3168] ) ] ) ] spids: [3159 3166 3173 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [3179] ) ] ) ] spids: [3176 3177 3184 -1] ) ] ) (C {<unset>} {<_flags_str_>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_columns body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name __flags_columns))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple words: [{<eval>} {<stty>} {<size>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<set>} {<-->} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<stty>} {<size>}) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_columns) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [3281] ) ] ) ] spids: [3246 3261] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple words: [{<eval>} {<tput>} {<cols>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<set>} {<-->} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<tput>} {<cols>}) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_columns) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [3316] ) ] ) ] spids: [3285 3300] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_columns) op: assign_op.Equal rhs: {<80>} spids: [3323] ) ] ) ] ) ] spids: [3224 3239] ) ] ) (C {<echo>} {(${ Id.VSub_Name __flags_columns)}) ] ) ) (command.ShFunction name: _flags_validBool body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_bool_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [3370] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [3375] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name _flags_bool_))} arms: [ (case_arm pat_list:[{<true>} {<t>} {<0>}] spids:[3392 3397 3399 -1]) (case_arm pat_list:[{<false>} {<f>} {<1>}] spids:[3402 3407 3409 -1]) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [3415] ) ] ) ] spids: [3412 3413 3420 -1] ) ] ) (C {<unset>} {<_flags_bool_>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_validFloat body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [3466] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_RBracket ']'>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_float_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [3491] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<_flags_validInt>} {(${ Id.VSub_Name _flags_float_)}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [3508] ) ] ) ] spids: [3496 3505] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<_flags_useBuiltin>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_float_whole_) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name _flags_float_> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Percent '%'> arg_word: {<.> <Id.Lit_Other '*'>} ) ) } spids: [3522] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_float_fraction_) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name _flags_float_> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <.>} ) ) } spids: [3531] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<_flags_validInt>} { (braced_var_sub token: <Id.VSub_Name _flags_float_whole_> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {<0>} ) ) } {<-a>} {<_flags_validInt>} {(${ Id.VSub_Name _flags_float_fraction_)} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [3564] ) ] ) ] spids: [3540 3561] ) ] ) (C {<unset>} {<_flags_float_whole_>} {<_flags_float_fraction_>}) ] spids: [3514 3519] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [3583] ) ] ) (command.Case to_match: {(${ Id.VSub_Name _flags_float_)} arms: [ (case_arm pat_list: [{<-> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_test_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} {(DQ (${ Id.VSub_Name _flags_float_))} {<Id.Lit_Colon ':'>} {(SQ <'\\(-[0-9]*\\.[0-9]*\\)'>)} ) ) } spids: [3606] ) ] ) ] spids: [3598 3600 3638 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_test_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} {(DQ (${ Id.VSub_Name _flags_float_))} {<Id.Lit_Colon ':'>} {(SQ <'\\([0-9]*\\.[0-9]*\\)'>)} ) ) } spids: [3648] ) ] ) ] spids: [3641 3642 3680 -1] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _flags_test_))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name _flags_float_))} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [3707] ) ] ) ] ) (C {<unset>} {<_flags_test_>}) ] ) (C {<unset>} {<_flags_float_>} {<_flags_float_whole_>} {<_flags_float_fraction_>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_validInt body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [3765] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_RBracket ']'>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_int_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [3790] ) ] ) (command.Case to_match: {(${ Id.VSub_Name _flags_int_)} arms: [ (case_arm pat_list: [{<-> <Id.Lit_Star '*'> <.> <Id.Lit_Star '*'>}] spids: [3804 3808 3810 -1] ) (case_arm pat_list: [{<-> <Id.Lit_Star '*'>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<_flags_useBuiltin>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_int_) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name _flags_int_> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Pound '#'> arg_word: {<->} ) ) } spids: [3832] ) ] ) ] spids: [3824 3829] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_int_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} {(DQ (${ Id.VSub_Name _flags_int_))} {<Id.Lit_Colon ':'>} {(SQ <'-\\([0-9][0-9]*\\)'>)} ) ) } spids: [3843] ) ] ) ] ) ] spids: [3816 3818 3872 -1] ) ] ) (command.Case to_match: {(${ Id.VSub_Name _flags_int_)} arms: [ (case_arm pat_list: [ {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <Id.KW_Bang '!'> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [3896] ) ] ) ] spids: [3888 3894 3901 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [3907] ) ] ) ] spids: [3904 3905 3912 -1] ) ] ) (C {<unset>} {<_flags_int_>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_getoptStandard body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [3967] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_shortOpts_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<_flags_genOptStr>} {(${ Id.VSub_Name __FLAGS_OPTSTR_SHORT)}) ) } spids: [3973] ) ] ) (command.ForEach iter_name: _flags_opt_ iter_words: [{(DQ ($ Id.VSub_At '$@'))}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_match_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ <x> (${ Id.VSub_Name _flags_opt_) <x>)}) (C {<sed>} {(SQ <'s/ //g'>)}) ] negated: F ) ) } spids: [4008] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _flags_match_))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <x> (${ Id.VSub_Name _flags_opt_) <x>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: {(SQ <'the available getopt does not support spaces in options'>)} spids: [4058] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [4064] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [4031 4055] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name flags_return)} {<-eq>} {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_opts) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<getopt>} {(${ Id.VSub_Name _flags_shortOpts_)} {($ Id.VSub_At '$@')} ] redirects: [ (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ) } spids: [4100] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_rtrn_) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [4117] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_rtrn_)} {<-ne>} {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_flags_warn>} {(DQ (${ Id.VSub_Name __flags_opts))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: {(SQ <'unable to parse provided options with getopt.'>)} spids: [4150] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [4156] ) ] ) ] spids: [4121 4138] ) ] ) ] spids: [4080 4097] ) ] ) (C {<unset>} {<_flags_match_>} {<_flags_opt_>} {<_flags_rtrn_>} {<_flags_shortOpts_>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_getoptEnhanced body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [4223] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_shortOpts_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<_flags_genOptStr>} {(${ Id.VSub_Name __FLAGS_OPTSTR_SHORT)}) ) } spids: [4229] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_boolOpts_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ (${ Id.VSub_Name __flags_boolNames))}) (C {<sed>} {(SQ <'s/^ *//;s/ *$//;s/ /,/g'>)}) ] negated: F ) ) } spids: [4241] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_longOpts_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<_flags_genOptStr>} {(${ Id.VSub_Name __FLAGS_OPTSTR_LONG)}) ) } spids: [4267] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_opts) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {(${ Id.VSub_Name FLAGS_GETOPT_CMD)} {<-o>} {(${ Id.VSub_Name _flags_shortOpts_)} {<-l>} { (DQ (${ Id.VSub_Name _flags_longOpts_) <','> (${ Id.VSub_Name _flags_boolOpts_) ) } {<-->} {(DQ ($ Id.VSub_At '$@'))} ] redirects: [ (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ) } spids: [4280] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_rtrn_) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [4332] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_rtrn_)} {<-ne>} {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_flags_warn>} {(DQ (${ Id.VSub_Name __flags_opts))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: {(SQ <'unable to parse provided options with getopt.'>)} spids: [4365] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [4371] ) ] ) ] spids: [4336 4353] ) ] ) (C {<unset>} {<_flags_boolOpts_>} {<_flags_longOpts_>} {<_flags_rtrn_>} {<_flags_shortOpts_>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_parseGetopt body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_argc_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [4441] ) ] ) (C {<shift>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [4449] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS)} {<-ne>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<set>} {<-->} {($ Id.VSub_At '$@')})] spids: [4456 4473] ) ] else_action: [(C {<eval>} {<set>} {<-->} {(DQ ($ Id.VSub_At '$@'))})] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_ARGC) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<_flags_math>} {(DQ ($ Id.VSub_Pound '$#') <' - 1 - '> (${ Id.VSub_Name _flags_argc_))} ) ) } spids: [4525] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [(command.Sentence child:(C {<true>}) terminator:<Id.Op_Semi _>)] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_opt_) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [4554] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_arg_) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Number 2> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{}) ) } spids: [4558] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_type_) op: assign_op.Equal rhs: {(${ Id.VSub_Name __FLAGS_TYPE_NONE)} spids: [4565] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_name_) op: assign_op.Equal rhs: {(SQ )} spids: [4571] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name _flags_opt_))} arms: [ (case_arm pat_list: [{<-->}] action: [ (command.Sentence child: (C {<shift>}) terminator: <Id.Op_Semi _> ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [4592 4593 4600 -1] ) (case_arm pat_list: [{<--> <Id.Lit_Star '*'>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<_flags_useBuiltin>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_opt_) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name _flags_opt_> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <-->} ) ) } spids: [4623] ) ] ) ] spids: [4615 4620] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_opt_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} {(DQ (${ Id.VSub_Name _flags_opt_))} {<Id.Lit_Colon ':'>} {(SQ <'--\\(.*\\)'>)} ) ) } spids: [4635] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_len_) op: assign_op.Equal rhs: {(${ Id.VSub_Name __FLAGS_LEN_LONG)} spids: [4664] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<_flags_itemInList>} {(DQ (${ Id.VSub_Name _flags_opt_))} {(${ Id.VSub_Name __flags_longNames)} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_name_) op: assign_op.Equal rhs: {(${ Id.VSub_Name _flags_opt_)} spids: [4688] ) ] ) ] spids: [4670 4685] ) ] else_action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<_flags_itemInList>} {(DQ (${ Id.VSub_Name _flags_opt_))} {(${ Id.VSub_Name __flags_boolNames)} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<_flags_useBuiltin>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_name_) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name _flags_opt_> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <no>} ) ) } spids: [4727] ) ] ) ] spids: [4719 4724] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_name_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} {(DQ (${ Id.VSub_Name _flags_opt_))} {<Id.Lit_Colon ':'>} {(SQ <'no\\(.*\\)'>)} ) ) } spids: [4739] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_type_) op: assign_op.Equal rhs: {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} spids: [4768] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_arg_) op: assign_op.Equal rhs: {(${ Id.VSub_Name __FLAGS_NULL)} spids: [4774] ) ] ) ] spids: [4701 4716] ) ] ) ] ) ] spids: [4607 4609 4786 -1] ) (case_arm pat_list: [{<-> <Id.Lit_Star '*'>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<_flags_useBuiltin>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_opt_) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name _flags_opt_> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <->} ) ) } spids: [4806] ) ] ) ] spids: [4798 4803] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_opt_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} {(DQ (${ Id.VSub_Name _flags_opt_))} {<Id.Lit_Colon ':'>} {(SQ <'-\\(.*\\)'>)} ) ) } spids: [4818] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_len_) op: assign_op.Equal rhs: {(${ Id.VSub_Name __FLAGS_LEN_SHORT)} spids: [4847] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<_flags_itemInList>} {(DQ (${ Id.VSub_Name _flags_opt_))} {(${ Id.VSub_Name __flags_shortNames)} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_pos_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ (${ Id.VSub_Name __flags_shortNames))} ) (C {<awk>} { (SQ < 'BEGIN{RS=" ";rn=0}$0==e{rn=NR}END{print rn}' > ) } {<Id.Lit_VarLike 'e='> (${ Id.VSub_Name _flags_opt_)} ) ] negated: F ) ) } spids: [4879] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_name_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ (${ Id.VSub_Name __flags_longNames))} ) (C {<awk>} {(SQ <'BEGIN{RS=" "}rn==NR{print $0}'>)} {<Id.Lit_VarLike 'rn='> (DQ (${ Id.VSub_Name _flags_pos_))} ) ] negated: F ) ) } spids: [4915] ) ] ) ] spids: [4853 4868] ) ] ) ] spids: [4790 4792 4951 -1] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name _flags_name_))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ <'unrecognized option ('> (${ Id.VSub_Name _flags_opt_) <')'>) } spids: [4980] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [4990] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [4962 4977] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_usName_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<_flags_underscoreName>} {(${ Id.VSub_Name _flags_name_)}) ) } spids: [5007] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_type_)} {<-eq>} {(${ Id.VSub_Name __FLAGS_TYPE_NONE)} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_type_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<_flags_getFlagInfo>} {(DQ (${ Id.VSub_Name _flags_usName_))} {(${ Id.VSub_Name __FLAGS_INFO_TYPE)} ) ) } spids: [5037] ) ] ) ] ) (command.Case to_match: {(${ Id.VSub_Name _flags_type_)} arms: [ (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_len_)} {<-eq>} {(${ Id.VSub_Name __FLAGS_LEN_LONG)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _flags_arg_))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<eval>} { (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'='> (${ Id.VSub_Name FLAGS_TRUE) ) } ) ] spids: [5095 5117] ) ] else_action: [ (C {<eval>} { (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'='> (${ Id.VSub_Name FLAGS_FALSE) ) } ) ] ) ] spids: [5075 5092] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_strToEval_) op: assign_op.Equal rhs: { (DQ <'_flags_val_='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'{__flags_'> (${ Id.VSub_Name _flags_usName_) <_> (${ Id.VSub_Name __FLAGS_INFO_DEFAULT) <'}'> ) } spids: [5157] ) ] ) (C {<eval>} {(DQ (${ Id.VSub_Name _flags_strToEval_))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_val_)} {<-eq>} {(${ Id.VSub_Name FLAGS_FALSE)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<eval>} { (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'='> (${ Id.VSub_Name FLAGS_TRUE) ) } ) ] spids: [5183 5200] ) ] else_action: [ (C {<eval>} { (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'='> (${ Id.VSub_Name FLAGS_FALSE) ) } ) ] ) ] ) ] spids: [5069 5072 5240 -1] ) (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_FLOAT)}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<_flags_validFloat>} {(DQ (${ Id.VSub_Name _flags_arg_))} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<eval>} { (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'=\''> (${ Id.VSub_Name _flags_arg_) <'\''> ) } ) ] spids: [5250 5261] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ <'invalid float value ('> (${ Id.VSub_Name _flags_arg_) <')'> ) } spids: [5282] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [5292] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] ) ] spids: [5244 5247 5304 -1] ) (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_INTEGER)}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<_flags_validInt>} {(DQ (${ Id.VSub_Name _flags_arg_))}) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<eval>} { (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'=\''> (${ Id.VSub_Name _flags_arg_) <'\''> ) } ) ] spids: [5314 5325] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: { (DQ <'invalid integer value ('> (${ Id.VSub_Name _flags_arg_) <')'> ) } spids: [5346] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_ERROR)} spids: [5356] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] ) ] spids: [5308 5311 5368 -1] ) (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_STRING)}] action: [ (C {<eval>} { (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'=\''> (${ Id.VSub_Name _flags_arg_) <'\''> ) } ) ] spids: [5372 5375 5393 -1] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _flags_usName_))} {<Id.Lit_Equals '='>} {(SQ <help>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name FLAGS_help)} {<-eq>} {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<flags_help>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_error) op: assign_op.Equal rhs: {(SQ <'help requested'>)} spids: [5449] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [5455] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [5426 5443] ) ] ) ] spids: [5404 5423] ) ] ) (C {<shift>}) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_type_)} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} {<Id.Lit_RBracket ']'>} ) (C {<shift>}) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_ARGV) op: assign_op.Equal rhs: {(SQ )} spids: [5506] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-gt>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FLAGS_ARGV) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name FLAGS_ARGV> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: {(${ Id.VSub_Name FLAGS_ARGV) <' '>} ) ) <'\''> ($ Id.VSub_Number '$1') <'\''> ) } spids: [5527] ) ] ) (C {<shift>}) ] ) ) (C {<unset>} {<_flags_arg_>} {<_flags_len_>} {<_flags_name_>} {<_flags_opt_>} {<_flags_pos_>} {<_flags_strToEval_>} {<_flags_type_>} {<_flags_usName_>} {<_flags_val_>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_math body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_FALSE)} spids: [5629] ) ] ) ] spids: [5613 5626] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<_flags_useBuiltin>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_expr_) op: assign_op.Equal rhs: {(SQ <'$(($@))'>)} spids: [5651] ) ] ) (C {<eval>} {<echo>} {(${ Id.VSub_Name _flags_expr_)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [5666] ) ] ) (C {<unset>} {<_flags_expr_>}) ] spids: [5635 5640] ) ] else_action: [ (C {<eval>} {<expr>} {($ Id.VSub_At '$@')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [5685] ) ] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_strlen body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_str_) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Number 1> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{}) ) } spids: [5733] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name _flags_str_))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_output) op: assign_op.Equal rhs: {<0>} spids: [5759] ) ] ) ] spids: [5741 5756] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<_flags_useBuiltin>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_output) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name _flags_str_> prefix_op: (Id.VSub_Pound) ) } spids: [5771] ) ] ) ] spids: [5763 5768] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_output) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} {(DQ (${ Id.VSub_Name _flags_str_))} {<Id.Lit_Colon ':'>} {(SQ <'.*'>)} ) ) } spids: [5781] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [5806] ) ] ) (C {<unset>} {<_flags_str_>}) (C {<echo>} {(${ Id.VSub_Name flags_output)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: _flags_useBuiltin body: (BraceGroup children: [ (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name __FLAGS_USE_BUILTIN)} ) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: DEFINE_boolean body: (BraceGroup children: [ (command.Sentence child: (C {<_flags_define>} {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} {(DQ ($ Id.VSub_At '$@'))}) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: DEFINE_float body: (BraceGroup children: [ (command.Sentence child: (C {<_flags_define>} {(${ Id.VSub_Name __FLAGS_TYPE_FLOAT)} {(DQ ($ Id.VSub_At '$@'))}) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: DEFINE_integer body: (BraceGroup children: [ (command.Sentence child: (C {<_flags_define>} {(${ Id.VSub_Name __FLAGS_TYPE_INTEGER)} {(DQ ($ Id.VSub_At '$@'))}) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: DEFINE_string body: (BraceGroup children: [ (command.Sentence child: (C {<_flags_define>} {(${ Id.VSub_Name __FLAGS_TYPE_STRING)} {(DQ ($ Id.VSub_At '$@'))}) terminator: <Id.Op_Semi _> ) ] ) ) (command.ShFunction name: FLAGS body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} { (DQ (braced_var_sub token: <Id.VSub_Name __flags_help_type> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } {<Id.Lit_RBracket ']'>} ) (C {<DEFINE_boolean>} {(SQ <help>)} {<false>} {(SQ <'show this help'>)} {(SQ <h>)}) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-gt>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS)} {<-ne>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<_flags_getoptStandard>} {(DQ ($ Id.VSub_At '$@'))})] spids: [6079 6096] ) ] else_action: [(C {<_flags_getoptEnhanced>} {(DQ ($ Id.VSub_At '$@'))})] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [6119] ) ] ) ] spids: [6063 6076] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_opts) op: assign_op.Equal rhs: {(SQ <-->)} spids: [6130] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {(${ Id.VSub_Name FLAGS_TRUE)} spids: [6136] ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name flags_return)} {<-eq>} {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_flags_parseGetopt>} {($ Id.VSub_Pound '$#')} {(DQ (${ Id.VSub_Name __flags_opts))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_return) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [6177] ) ] ) ] spids: [6146 6163] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name flags_return)} {<-eq>} {(${ Id.VSub_Name FLAGS_ERROR)} {<Id.Lit_RBracket ']'>} ) (C {<_flags_fatal>} {(DQ (${ Id.VSub_Name flags_error))}) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name flags_return)} ) ] ) ) (command.ShFunction name: flags_getoptInfo body: (BraceGroup children: [ (C {<_flags_debug>} { (DQ <'uname -a: '> (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<uname>} {<-a>}) ) ) } ) (C {<_flags_debug>} {(DQ <'PATH: '> (${ Id.VSub_Name PATH))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} { (DQ (braced_var_sub token: <Id.VSub_Name BASH_VERSION> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_flags_debug>} {(SQ <'shell: bash'>)}) (C {<_flags_debug>} {(DQ <'BASH_VERSION: '> (${ Id.VSub_Name BASH_VERSION))}) ] spids: [6289 6305] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} { (DQ (braced_var_sub token: <Id.VSub_Name ZSH_VERSION> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<_flags_debug>} {(SQ <'shell: zsh'>)}) (C {<_flags_debug>} {(DQ <'ZSH_VERSION: '> (${ Id.VSub_Name ZSH_VERSION))}) ] spids: [6325 6341] ) ] ) (command.Simple words: [{(${ Id.VSub_Name FLAGS_GETOPT_CMD)}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:_flags_getoptReturn) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [6377] ) ] ) (C {<_flags_debug>} {(DQ <'getopt return: '> (${ Id.VSub_Name _flags_getoptReturn))}) (C {<_flags_debug>} { (DQ <'getopt --version: '> (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [{(${ Id.VSub_Name FLAGS_GETOPT_CMD)} {<--version>}] redirects: [ (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ) ) } ) (C {<unset>} {<_flags_getoptReturn>}) ] ) ) (command.ShFunction name: flags_getoptIsEnh body: (BraceGroup children: [ (C {<test>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS)} {<-eq>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH)} ) ] ) ) (command.ShFunction name: flags_getoptIsStd body: (BraceGroup children: [ (C {<test>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS)} {<-eq>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_STD)} ) ] ) ) (command.ShFunction name: flags_help body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} { (DQ (braced_var_sub token: <Id.VSub_Name FLAGS_HELP> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty)) ) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<echo>} {(DQ (${ Id.VSub_Name FLAGS_HELP))}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) ] spids: [6538 6554] ) ] else_action: [ (command.Simple words: [ {<echo>} { (DQ <'USAGE: '> (braced_var_sub token: <Id.VSub_Name FLAGS_PARENT> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {($ Id.VSub_Number '$0')} ) ) <' [flags] args'> ) } ] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ (${ Id.VSub_Name __flags_longNames))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<echo>} {(SQ <'flags:'>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ForEach iter_name: flags_name_ iter_words: [{(${ Id.VSub_Name __flags_longNames)}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_flagStr_) op: assign_op.Equal rhs: {(SQ )} spids: [6633] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_boolStr_) op: assign_op.Equal rhs: {(SQ )} spids: [6638] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_usName_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<_flags_underscoreName>} {(${ Id.VSub_Name flags_name_)}) ) } spids: [6643] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_default_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<_flags_getFlagInfo>} {(DQ (${ Id.VSub_Name flags_usName_))} {(${ Id.VSub_Name __FLAGS_INFO_DEFAULT)} ) ) } spids: [6656] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_help_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<_flags_getFlagInfo>} {(DQ (${ Id.VSub_Name flags_usName_))} {(${ Id.VSub_Name __FLAGS_INFO_HELP)} ) ) } spids: [6679] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_short_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<_flags_getFlagInfo>} {(DQ (${ Id.VSub_Name flags_usName_))} {(${ Id.VSub_Name __FLAGS_INFO_SHORT)} ) ) } spids: [6702] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_type_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<_flags_getFlagInfo>} {(DQ (${ Id.VSub_Name flags_usName_))} {(${ Id.VSub_Name __FLAGS_INFO_TYPE)} ) ) } spids: [6725] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name flags_short_))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_flagStr_) op: assign_op.Equal rhs: {(DQ <-> (${ Id.VSub_Name flags_short_))} spids: [6772] ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS)} {<-eq>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name flags_short_))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_flagStr_) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name flags_flagStr_) <','>)} spids: [6825] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name flags_type_)} {<-eq>} {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} {<-a>} {(DQ (${ Id.VSub_Name flags_usName_))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(SQ <help>)} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_boolStr_) op: assign_op.Equal rhs: {(SQ <'[no]'>)} spids: [6873] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_flagStr_) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name flags_flagStr_) <--> (${ Id.VSub_Name flags_boolStr_) (${ Id.VSub_Name flags_name_) <':'> ) } spids: [6879] ) ] ) ] spids: [6782 6799] ) ] ) (command.Case to_match: {(${ Id.VSub_Name flags_type_)} arms: [ (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name flags_default_)} {<-eq>} {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_defaultStr_) op: assign_op.Equal rhs: {(SQ <true>)} spids: [6934] ) ] ) ] spids: [6914 6931] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_defaultStr_) op: assign_op.Equal rhs: {(SQ <false>)} spids: [6943] ) ] ) ] ) ] spids: [6908 6911 6952 -1] ) (case_arm pat_list: [ {(${ Id.VSub_Name __FLAGS_TYPE_FLOAT)} {(${ Id.VSub_Name __FLAGS_TYPE_INTEGER)} ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_defaultStr_) op: assign_op.Equal rhs: {(${ Id.VSub_Name flags_default_)} spids: [6965] ) ] ) ] spids: [6955 6962 6970 -1] ) (case_arm pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_STRING)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_defaultStr_) op: assign_op.Equal rhs: {(DQ <'\''> (${ Id.VSub_Name flags_default_) <'\''>)} spids: [6978] ) ] ) ] spids: [6973 6976 6987 -1] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_defaultStr_) op: assign_op.Equal rhs: {(DQ <'(default: '> (${ Id.VSub_Name flags_defaultStr_) <')'>)} spids: [6993] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_helpStr_) op: assign_op.Equal rhs: { (DQ <' '> (${ Id.VSub_Name flags_flagStr_) <' '> (${ Id.VSub_Name flags_help_) <' '> (${ Id.VSub_Name flags_defaultStr_) ) } spids: [7004] ) ] ) (command.Simple words: [{<_flags_strlen>} {(DQ (${ Id.VSub_Name flags_helpStr_))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_helpStrLen_) op: assign_op.Equal rhs: {(${ Id.VSub_Name flags_output)} spids: [7033] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_columns_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<_flags_columns>}) ) } spids: [7039] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name flags_helpStrLen_)} {<-lt>} {(${ Id.VSub_Name flags_columns_)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<echo>} {(DQ (${ Id.VSub_Name flags_helpStr_))}] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] spids: [7048 7065] ) ] else_action: [ (command.Simple words: [ {<echo>} { (DQ <' '> (${ Id.VSub_Name flags_flagStr_) <' '> (${ Id.VSub_Name flags_help_) ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_emptyStr_) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ <x> (${ Id.VSub_Name flags_flagStr_) <x>)} ) (C {<awk>} {(SQ <'{printf "%"length($0)-2"s", ""}'>)} ) ] negated: F ) ) ) } spids: [7108] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_helpStr_) op: assign_op.Equal rhs: { (DQ <' '> (${ Id.VSub_Name flags_emptyStr_) <' '> (${ Id.VSub_Name flags_defaultStr_) ) } spids: [7142] ) ] ) (command.Simple words: [{<_flags_strlen>} {(DQ (${ Id.VSub_Name flags_helpStr_))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_helpStrLen_) op: assign_op.Equal rhs: {(${ Id.VSub_Name flags_output)} spids: [7167] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS)} {<-eq>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_STD)} {<-o>} {(${ Id.VSub_Name flags_helpStrLen_)} {<-lt>} {(${ Id.VSub_Name flags_columns_)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<echo>} {(DQ (${ Id.VSub_Name flags_helpStr_))}] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] spids: [7174 7205] ) ] else_action: [ (command.Simple words: [ {<echo>} {(DQ <' '> (${ Id.VSub_Name flags_defaultStr_))} ] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] ) ] ) ] ) ) ] spids: [6591 6606] ) ] ) (C {<unset>} {<flags_boolStr_>} {<flags_default_>} {<flags_defaultStr_>} {<flags_emptyStr_>} {<flags_flagStr_>} {<flags_help_>} {<flags_helpStr>} {<flags_helpStrLen>} {<flags_name_>} {<flags_columns_>} {<flags_short_>} {<flags_type_>} {<flags_usName_>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {(${ Id.VSub_Name FLAGS_TRUE)} ) ] ) ) (command.ShFunction name: flags_reset body: (BraceGroup children: [ (command.ForEach iter_name: flags_name_ iter_words: [{(${ Id.VSub_Name __flags_longNames)}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_usName_) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<_flags_underscoreName>} {(${ Id.VSub_Name flags_name_)}) ) } spids: [7342] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_strToEval_) op: assign_op.Equal rhs: {(DQ <'unset FLAGS_'> (${ Id.VSub_Name flags_usName_))} spids: [7354] ) ] ) (command.ForEach iter_name: flags_type_ iter_words: [ {(${ Id.VSub_Name __FLAGS_INFO_DEFAULT)} {(${ Id.VSub_Name __FLAGS_INFO_HELP)} {(${ Id.VSub_Name __FLAGS_INFO_SHORT)} {(${ Id.VSub_Name __FLAGS_INFO_TYPE)} ] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flags_strToEval_) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name flags_strToEval_) <' __flags_'> (${ Id.VSub_Name flags_usName_) <_> (${ Id.VSub_Name flags_type_) ) } spids: [7397] ) ] ) ] ) ) (C {<eval>} {(${ Id.VSub_Name flags_strToEval_)}) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_boolNames) op: assign_op.Equal rhs: {(SQ <' '>)} spids: [7432] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_longNames) op: assign_op.Equal rhs: {(SQ <' '>)} spids: [7438] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_shortNames) op: assign_op.Equal rhs: {(SQ <' '>)} spids: [7444] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:__flags_definedNames) op: assign_op.Equal rhs: {(SQ <' '>)} spids: [7450] ) ] ) (C {<flags_setLoggingLevel>} {(${ Id.VSub_Name __FLAGS_LEVEL_DEFAULT)}) (C {<unset>} {<flags_name_>} {<flags_type_>} {<flags_strToEval_>} {<flags_usName_>}) ] ) ) (C {<flags_setLoggingLevel>} {(${ Id.VSub_Name __FLAGS_LEVEL_DEFAULT)}) ] )