(command.CommandList
  children: [
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Content-type: text/html'>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>} {(DQ )}] redirects:[] do_fork:T)
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'<html><title>Apache Password Manager Utility</title><body>'>)}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'basedir='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'basedir='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'basedir='> name:basedir)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <pwd>
                    more_env: []
                    words: [{<pwd>}]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'myname='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'myname='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'myname='> name:myname)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (CommandSub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Simple
                      blame_tok: <basename>
                      more_env: []
                      words: [{<basename>} {($ Id.VSub_Number 0)}]
                      redirects: []
                      do_fork: T
                    )
                  right: <Id.Eof_RParen _>
                )
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'footer='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'footer='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'footer='> name:footer)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName basedir) <'/apm-footer.html'>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'htaccess='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'htaccess='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'htaccess='> name:htaccess)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName basedir) <'/.htaccess'>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'htpasswd='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'htpasswd='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'htpasswd='> name:htpasswd)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (CommandSub
                  left_token: <Id.Left_Backtick '`'>
                  child: 
                    (command.Simple
                      blame_tok: <which>
                      more_env: []
                      words: [{<which>} {<htpasswd>}]
                      redirects: []
                      do_fork: T
                    )
                  right: <Id.Backtick_Right '`'>
                ) <' -b'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<Id.KW_Bang '!'>}
                        {<-r>}
                        {(DQ ($ Id.VSub_DollarName htaccess))}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Error: cannot read '> ($ Id.VSub_DollarName htaccess) <' file.'>)}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [98 114]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'passwdfile='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'passwdfile='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'passwdfile='> name:passwdfile)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (CommandSub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {(DQ <AuthUserFile>)} {($ Id.VSub_DollarName htaccess)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [
                            {<cut>}
                            {<-d> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '> ch:' ')}
                            {<-f2>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                  right: <Id.Eof_RParen _>
                )
              )
            }
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<Id.KW_Bang '!'>}
                        {<-r>}
                        {($ Id.VSub_DollarName passwdfile)}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Error: can\'t read password file: can\'t make updates.'>)}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [155 169]
        )
        (IfArm
          keyword: <Id.KW_Elif elif>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<Id.KW_Bang '!'>}
                        {<-w>}
                        {($ Id.VSub_DollarName passwdfile)}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Error: can\'t write to password file: can\'t update.'>)}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [183 197]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [
        {<echo>}
        {
          (DQ 
            <
'<center><h1 style=\'background:#ccf;border-radius:3px;border:1px solid #99c;padding:3px;\'>'
            >
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Apache Password Manager</h1>'>)}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'action='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'action='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'action='> name:action)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (CommandSub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {($ Id.VSub_DollarName QUERY_STRING)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [{<cut>} {<-c3>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                  right: <Id.Eof_RParen _>
                )
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'user='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'user='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'user='> name:user)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (CommandSub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {($ Id.VSub_DollarName QUERY_STRING)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [
                            {<cut>}
                            {<-d> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\&'> ch:'&')}
                            {<-f2>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [{<cut>} {<-d> <Id.Lit_Equals '='>} {<-f2>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <tr>
                          more_env: []
                          words: [{<tr>} {(SQ <'[:upper:]'>)} {(SQ <'[:lower:]'>)}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                  right: <Id.Eof_RParen _>
                )
              )
            }
        )
      ]
      redirects: []
    )
    (command.Case
      case_kw: <Id.KW_Case case>
      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName action))})
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <A>
          pattern: (pat.Words words:[{<A>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {(DQ <'<h3>Adding New User <u>'> ($ Id.VSub_DollarName user) <'</u></h3>'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<Id.KW_Bang '!'>}
                                {<-z>}
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <grep>
                                          more_env: []
                                          words: [
                                            {<grep>}
                                            {<-E>}
                                            {(DQ <'^'> (${ Id.VSub_Name user) <':'>)}
                                            {($ Id.VSub_DollarName passwdfile)}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'Error: user <b>'> ($ Id.VSub_DollarName user) 
                            <'</b> already appears in the file.'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [298 328]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'pass='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'pass='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pass='> name:pass)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Pipeline
                                  children: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {($ Id.VSub_DollarName QUERY_STRING)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <cut>
                                      more_env: []
                                      words: [
                                        {<cut>}
                                        {<-d> 
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\&'>
                                            ch: '&'
                                          )
                                        }
                                        {<-f3>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <cut>
                                      more_env: []
                                      words: [{<cut>} {<-d> <Id.Lit_Equals '='>} {<-f2>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<Id.KW_Bang '!'>}
                                    {<-z>}
                                    {
                                      (DQ 
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Pipeline
                                              children: [
                                                (command.Simple
                                                  blame_tok: <echo>
                                                  more_env: []
                                                  words: [{<echo>} {($ Id.VSub_DollarName pass)}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Simple
                                                  blame_tok: <tr>
                                                  more_env: []
                                                  words: [
                                                    {<tr>}
                                                    {<-d>}
                                                    {(SQ <'[[:upper:][:lower:][:digit:]]'>)}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: [<Id.Op_Pipe _>]
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [
                            {<echo>}
                            {
                              (DQ <'Error: passwords can only contain a-z A-Z 0-9 ('> 
                                ($ Id.VSub_DollarName pass) <')'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      spids: [367 395]
                    )
                  ]
                  else_kw: <Id.KW_Else else>
                  else_action: [
                    (command.Simple
                      blame_tok: <Id.VSub_DollarName '$htpasswd'>
                      more_env: []
                      words: [
                        {($ Id.VSub_DollarName htpasswd)}
                        {($ Id.VSub_DollarName passwdfile)}
                        {(DQ ($ Id.VSub_DollarName user))}
                        {(DQ ($ Id.VSub_DollarName pass))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Added!<br>'>)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <U>
          pattern: (pat.Words words:[{<U>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'<h3>Updating Password for user <u>'> ($ Id.VSub_DollarName user) <'</u></h3>'>)
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-z>}
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <grep>
                                          more_env: []
                                          words: [
                                            {<grep>}
                                            {<-E>}
                                            {(DQ <'^'> (${ Id.VSub_Name user) <':'>)}
                                            {($ Id.VSub_DollarName passwdfile)}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'Error: user <b>'> ($ Id.VSub_DollarName user) 
                            <'</b> isn\'t in the password file?'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'searched for &quot;^'> (${ Id.VSub_Name user) <':&quot; in '> 
                            ($ Id.VSub_DollarName passwdfile)
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [452 480]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'pass='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'pass='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pass='> name:pass)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Pipeline
                                  children: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {($ Id.VSub_DollarName QUERY_STRING)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <cut>
                                      more_env: []
                                      words: [
                                        {<cut>}
                                        {<-d> 
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\&'>
                                            ch: '&'
                                          )
                                        }
                                        {<-f3>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <cut>
                                      more_env: []
                                      words: [{<cut>} {<-d> <Id.Lit_Equals '='>} {<-f2>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<Id.KW_Bang '!'>}
                                    {<-z>}
                                    {
                                      (DQ 
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Pipeline
                                              children: [
                                                (command.Simple
                                                  blame_tok: <echo>
                                                  more_env: []
                                                  words: [{<echo>} {($ Id.VSub_DollarName pass)}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Simple
                                                  blame_tok: <tr>
                                                  more_env: []
                                                  words: [
                                                    {<tr>}
                                                    {<-d>}
                                                    {(SQ <'[[:upper:][:lower:][:digit:]]'>)}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: [<Id.Op_Pipe _>]
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [
                            {<echo>}
                            {
                              (DQ <'Error: passwords can only contain a-z A-Z 0-9 ('> 
                                ($ Id.VSub_DollarName pass) <')'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      spids: [531 559]
                    )
                  ]
                  else_kw: <Id.KW_Else else>
                  else_action: [
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [
                            {<grep>}
                            {<-vE>}
                            {(DQ <'^'> (${ Id.VSub_Name user) <':'>)}
                            {($ Id.VSub_DollarName passwdfile)}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <tee>
                          more_env: []
                          words: [{<tee>} {($ Id.VSub_DollarName passwdfile)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                    (command.Simple
                      blame_tok: <Id.VSub_DollarName '$htpasswd'>
                      more_env: []
                      words: [
                        {($ Id.VSub_DollarName htpasswd)}
                        {($ Id.VSub_DollarName passwdfile)}
                        {(DQ ($ Id.VSub_DollarName user))}
                        {(DQ ($ Id.VSub_DollarName pass))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Updated!<br>'>)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <D>
          pattern: (pat.Words words:[{<D>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {(DQ <'<h3>Deleting User <u>'> ($ Id.VSub_DollarName user) <'</u></h3>'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-z>}
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <grep>
                                          more_env: []
                                          words: [
                                            {<grep>}
                                            {<-E>}
                                            {(DQ <'^'> (${ Id.VSub_Name user) <':'>)}
                                            {($ Id.VSub_DollarName passwdfile)}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'Error: user <b>'> ($ Id.VSub_DollarName user) 
                            <'</b> isn\'t in the password file?'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [641 669]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(DQ ($ Id.VSub_DollarName user))}
                                {<Id.Lit_Equals '='>}
                                {(DQ <admin>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Error: you can\'t delete the \'admin\' account.'>)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [681 699]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Pipeline
                  children: [
                    (command.Simple
                      blame_tok: <grep>
                      more_env: []
                      words: [
                        {<grep>}
                        {<-vE>}
                        {(DQ <'^'> (${ Id.VSub_Name user) <':'>)}
                        {($ Id.VSub_DollarName passwdfile)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <tee>
                      more_env: []
                      words: [{<tee>} {($ Id.VSub_DollarName passwdfile)}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_Pipe _>]
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <'Deleted!<br>'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      redirects: []
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [
        {<echo>}
        {(DQ <'<br><br><table border=\'1\' cellspacing=\'0\' width=\'80%\' cellpadding=\'3\'>'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'<tr bgcolor=\'#cccccc\'><th colspan=\'3\'>List '>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'of all current users</td></tr>'>)}]
      redirects: []
      do_fork: T
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              left: <Id.Lit_VarLike 'oldIFS='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'oldIFS='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'oldIFS='> name:oldIFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName IFS)}
                )
              ]
              redirects: []
            )
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'IFS='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'IFS='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
              op: assign_op.Equal
              rhs: {(DQ <':'>)}
            )
          ]
          redirects: []
        )
      ]
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <read>
                  more_env: []
                  words: [{<read>} {<acct>} {<pw>}]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
          ]
        )
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'<tr><th>'> ($ Id.VSub_DollarName acct) <'</th><td align=center><a href='> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\"'>
                      ch: '"'
                    ) ($ Id.VSub_DollarName myname) <'?a=D&u='> ($ Id.VSub_DollarName acct) 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\"'>
                      ch: '"'
                    ) <'>'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'[delete]</a></td></tr>'>)}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: [
        (Redir
          op: <Id.Redir_Less '<'>
          loc: (redir_loc.Fd fd:0)
          arg: {($ Id.VSub_DollarName passwdfile)}
        )
      ]
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'</table>'>)}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'IFS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'IFS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName oldIFS)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'optionstring='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'optionstring='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'optionstring='> name:optionstring)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (CommandSub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [
                            {<cut>}
                            {<-d> <Id.Lit_Colon ':'>}
                            {<-f1>}
                            {($ Id.VSub_DollarName passwdfile)}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <sed>
                          more_env: []
                          words: [{<sed>} {(SQ <'s/^/<option>/'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <tr>
                          more_env: []
                          words: [{<tr>} {(SQ <'\\n'>)} {(SQ <' '>)}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                  right: <Id.Eof_RParen _>
                )
              )
            }
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<Id.KW_Bang '!'>}
                        {<-r>}
                        {($ Id.VSub_DollarName footer)}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Warning: can\'t read '> ($ Id.VSub_DollarName footer))}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [875 889]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <sed>
          more_env: []
          words: [
            {<sed>}
            {<-e>}
            {(DQ <'s/--myname--/'> ($ Id.VSub_DollarName myname) <'/g'>)}
            {<-e>}
            {(DQ <'s/--options--/'> ($ Id.VSub_DollarName optionstring) <'/g'>)}
          ]
          redirects: [
            (Redir
              op: <Id.Redir_Less '<'>
              loc: (redir_loc.Fd fd:0)
              arg: {($ Id.VSub_DollarName footer)}
            )
          ]
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)