(command.CommandList
  children: [
    (C {<.>} {(${ Id.VSub_Name BACKEND) <'/functions.sh'>})
    (C {<.>} {(${ Id.VSub_Name BACKEND) <'/functions-parse.sh'>})
    (command.Sentence
      child: 
        (command.ShFunction
          name: check_autologin
          body: 
            (BraceGroup
              children: [
                (C {<get_value_from_cfg>} {<autoLoginUser>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ (${ Id.VSub_Name VAL))} {<-a>} 
                              {(DQ (${ Id.VSub_Name INSTALLTYPE))} {<Id.Lit_Equals '='>} {(DQ <PCBSD>)} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:AUTOU)
                              op: assign_op.Equal
                              rhs: {(DQ (${ Id.VSub_Name VAL))}
                              spids: [146]
                            )
                          ]
                        )
                        (C {<sed>} {<-i.bak>} 
                          {(DQ <'s/AutoLoginUser=/AutoLoginUser='> (${ Id.VSub_Name AUTOU) <'/g'>)} {(${ Id.VSub_Name FSMNT) <'/usr/local/kde4/share/config/kdm/kdmrc'>}
                        )
                        (C {<sed>} {<-i.bak>} {(DQ <'s/AutoLoginEnable=false/AutoLoginEnable=true/g'>)} 
                          {(${ Id.VSub_Name FSMNT) <'/usr/local/kde4/share/config/kdm/kdmrc'>}
                        )
                      ]
                      spids: [114 143]
                    )
                  ]
                )
              ]
            )
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence
      child: 
        (command.ShFunction
          name: add_user
          body: 
            (BraceGroup
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:ARGS)
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Number 1))}
                      spids: [212]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {<-e>} 
                              {(DQ (${ Id.VSub_Name FSMNT) <'/.tmpPass'>)} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (C {<run_chroot_cmd>} 
                          {(DQ <'cat /.tmpPass | pw useradd '> (${ Id.VSub_Name ARGS))}
                        )
                        (C {<rc_halt>} {(DQ <'rm '> (${ Id.VSub_Name FSMNT) <'/.tmpPass'>)})
                      ]
                      spids: [221 237]
                    )
                  ]
                  else_action: [
                    (C {<run_chroot_cmd>} {(DQ <'cat /.tmpPass | pw useradd '> (${ Id.VSub_Name ARGS))})
                  ]
                )
              ]
            )
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence
      child: 
        (command.ShFunction
          name: setup_users
          body: 
            (BraceGroup
              children: [
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: (condition.Shell commands:[(C {<read>} {<line>})])
                  body: 
                    (command.DoGroup
                      children: [
                        (command.Pipeline
                          children: [
                            (C {<echo>} {($ Id.VSub_DollarName '$line')})
                            (command.Simple
                              words: [{<grep>} {<-q>} {(DQ <'^userName='>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '2>'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          negated: F
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<get_value_from_string>} {(DQ (${ Id.VSub_Name line))})
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:USERNAME)
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_DollarName '$VAL'))}
                                      spids: [358]
                                    )
                                  ]
                                )
                              ]
                              spids: [333 346]
                            )
                          ]
                        )
                        (command.Pipeline
                          children: [
                            (C {<echo>} {($ Id.VSub_DollarName '$line')})
                            (command.Simple
                              words: [{<grep>} {<-q>} {(DQ <'^userComment='>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '2>'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          negated: F
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<get_value_from_string>} {(DQ (${ Id.VSub_Name line))})
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:USERCOMMENT)
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_DollarName '$VAL'))}
                                      spids: [411]
                                    )
                                  ]
                                )
                              ]
                              spids: [386 399]
                            )
                          ]
                        )
                        (command.Pipeline
                          children: [
                            (C {<echo>} {($ Id.VSub_DollarName '$line')})
                            (command.Simple
                              words: [{<grep>} {<-q>} {(DQ <'^userPass='>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '2>'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          negated: F
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<get_value_from_string>} {(DQ (${ Id.VSub_Name line))})
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:USERPASS)
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_DollarName '$VAL'))}
                                      spids: [464]
                                    )
                                  ]
                                )
                              ]
                              spids: [439 452]
                            )
                          ]
                        )
                        (command.Pipeline
                          children: [
                            (C {<echo>} {($ Id.VSub_DollarName '$line')})
                            (command.Simple
                              words: [{<grep>} {<-q>} {(DQ <'^userEncPass='>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '2>'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          negated: F
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<get_value_from_string>} {(DQ (${ Id.VSub_Name line))})
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:USERENCPASS)
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_DollarName '$VAL'))}
                                      spids: [517]
                                    )
                                  ]
                                )
                              ]
                              spids: [492 505]
                            )
                          ]
                        )
                        (command.Pipeline
                          children: [
                            (C {<echo>} {($ Id.VSub_DollarName '$line')})
                            (command.Simple
                              words: [{<grep>} {<-q>} {(DQ <'^userShell='>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '2>'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          negated: F
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<get_value_from_string>} {(DQ (${ Id.VSub_Name line))})
                                (C {<strip_white_space>} {(DQ ($ Id.VSub_DollarName '$VAL'))})
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:USERSHELL)
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_DollarName '$VAL'))}
                                      spids: [577]
                                    )
                                  ]
                                )
                              ]
                              spids: [545 558]
                            )
                          ]
                        )
                        (command.Pipeline
                          children: [
                            (C {<echo>} {($ Id.VSub_DollarName '$line')})
                            (command.Simple
                              words: [{<grep>} {<-q>} {(DQ <'^userHome='>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '2>'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          negated: F
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<get_value_from_string>} {(DQ (${ Id.VSub_Name line))})
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:USERHOME)
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_DollarName '$VAL'))}
                                      spids: [630]
                                    )
                                  ]
                                )
                              ]
                              spids: [605 618]
                            )
                          ]
                        )
                        (command.Pipeline
                          children: [
                            (C {<echo>} {($ Id.VSub_DollarName '$line')})
                            (command.Simple
                              words: [{<grep>} {<-q>} {(DQ <'^userGroups='>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '2>'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          negated: F
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<get_value_from_string>} {(DQ (${ Id.VSub_Name line))})
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:USERGROUPS)
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_DollarName '$VAL'))}
                                      spids: [683]
                                    )
                                  ]
                                )
                              ]
                              spids: [658 671]
                            )
                          ]
                        )
                        (command.Pipeline
                          children: [
                            (C {<echo>} {($ Id.VSub_DollarName '$line')})
                            (command.Simple
                              words: [{<grep>} {<-q>} {(DQ <'^commitUser'>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '2>'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          negated: F
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                                              {(DQ (${ Id.VSub_Name USERNAME))} {<Id.Lit_RBracket ']'>}
                                            )
                                          ]
                                        )
                                      action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:ARGS)
                                              op: assign_op.Equal
                                              rhs: {(DQ <'-n '> (${ Id.VSub_Name USERNAME))}
                                              spids: [755]
                                            )
                                          ]
                                        )
                                        (command.If
                                          arms: [
                                            (if_arm
                                              cond: 
                                                (condition.Shell
                                                  commands: [
                                                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                                                      {(DQ (${ Id.VSub_Name USERCOMMENT))} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  ]
                                                )
                                              action: [
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:ARGS)
                                                      op: assign_op.Equal
                                                      rhs: 
                                                        {
                                                          (DQ (${ Id.VSub_Name ARGS) <' -c '> 
                                                            (word_part.EscapedLiteral
                                                              token: <Id.Lit_EscapedChar '\\"'>
                                                            ) (${ Id.VSub_Name USERCOMMENT) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                                                          )
                                                        }
                                                      spids: [783]
                                                    )
                                                  ]
                                                )
                                              ]
                                              spids: [765 780]
                                            )
                                          ]
                                        )
                                        (command.If
                                          arms: [
                                            (if_arm
                                              cond: 
                                                (condition.Shell
                                                  commands: [
                                                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                                                      {(DQ (${ Id.VSub_Name USERPASS))} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  ]
                                                )
                                              action: [
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:ARGS)
                                                      op: assign_op.Equal
                                                      rhs: {(DQ (${ Id.VSub_Name ARGS) <' -h 0'>)}
                                                      spids: [820]
                                                    )
                                                  ]
                                                )
                                                (command.Simple
                                                  words: [{<echo>} {(DQ (${ Id.VSub_Name USERPASS))}]
                                                  redirects: [
                                                    (redir
                                                      op: <Id.Redir_Great '>'>
                                                      loc: (redir_loc.Fd fd:1)
                                                      arg: {(${ Id.VSub_Name FSMNT) <'/.tmpPass'>}
                                                    )
                                                  ]
                                                  do_fork: T
                                                )
                                              ]
                                              spids: [802 817]
                                            )
                                            (if_arm
                                              cond: 
                                                (condition.Shell
                                                  commands: [
                                                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                                                      {(DQ (${ Id.VSub_Name USERENCPASS))} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  ]
                                                )
                                              action: [
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:ARGS)
                                                      op: assign_op.Equal
                                                      rhs: {(DQ (${ Id.VSub_Name ARGS) <' -H 0'>)}
                                                      spids: [863]
                                                    )
                                                  ]
                                                )
                                                (command.Simple
                                                  words: [{<echo>} {(DQ (${ Id.VSub_Name USERENCPASS))}]
                                                  redirects: [
                                                    (redir
                                                      op: <Id.Redir_Great '>'>
                                                      loc: (redir_loc.Fd fd:1)
                                                      arg: {(${ Id.VSub_Name FSMNT) <'/.tmpPass'>}
                                                    )
                                                  ]
                                                  do_fork: T
                                                )
                                              ]
                                              spids: [844 860]
                                            )
                                          ]
                                          else_action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:ARGS)
                                                  op: assign_op.Equal
                                                  rhs: {(DQ (${ Id.VSub_Name ARGS) <' -h -'>)}
                                                  spids: [890]
                                                )
                                              ]
                                            )
                                            (command.Simple
                                              words: [{<rm>} {(${ Id.VSub_Name FSMNT) <'/.tmpPass'>}]
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_Great '2>'>
                                                  loc: (redir_loc.Fd fd:2)
                                                  arg: {<'/dev/null'>}
                                                )
                                                (redir
                                                  op: <Id.Redir_Great '2>'>
                                                  loc: (redir_loc.Fd fd:2)
                                                  arg: {<'/dev/null'>}
                                                )
                                              ]
                                              do_fork: T
                                            )
                                          ]
                                        )
                                        (command.If
                                          arms: [
                                            (if_arm
                                              cond: 
                                                (condition.Shell
                                                  commands: [
                                                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                                                      {(DQ (${ Id.VSub_Name USERSHELL))} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  ]
                                                )
                                              action: [
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:ARGS)
                                                      op: assign_op.Equal
                                                      rhs: 
                                                        {
                                                          (DQ (${ Id.VSub_Name ARGS) <' -s '> 
                                                            (word_part.EscapedLiteral
                                                              token: <Id.Lit_EscapedChar '\\"'>
                                                            ) (${ Id.VSub_Name USERSHELL) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                                                          )
                                                        }
                                                      spids: [935]
                                                    )
                                                  ]
                                                )
                                              ]
                                              spids: [917 932]
                                            )
                                          ]
                                          else_action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:ARGS)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ (${ Id.VSub_Name ARGS) <' -s '> 
                                                        (word_part.EscapedLiteral
                                                          token: <Id.Lit_EscapedChar '\\"'>
                                                        ) <'/nonexistant'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                                                      )
                                                    }
                                                  spids: [952]
                                                )
                                              ]
                                            )
                                          ]
                                        )
                                        (command.If
                                          arms: [
                                            (if_arm
                                              cond: 
                                                (condition.Shell
                                                  commands: [
                                                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                                                      {(DQ (${ Id.VSub_Name USERHOME))} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  ]
                                                )
                                              action: [
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:ARGS)
                                                      op: assign_op.Equal
                                                      rhs: 
                                                        {
                                                          (DQ (${ Id.VSub_Name ARGS) <' -m -d '> 
                                                            (word_part.EscapedLiteral
                                                              token: <Id.Lit_EscapedChar '\\"'>
                                                            ) (${ Id.VSub_Name USERHOME) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                                                          )
                                                        }
                                                      spids: [987]
                                                    )
                                                  ]
                                                )
                                              ]
                                              spids: [969 984]
                                            )
                                          ]
                                        )
                                        (command.If
                                          arms: [
                                            (if_arm
                                              cond: 
                                                (condition.Shell
                                                  commands: [
                                                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                                                      {(DQ (${ Id.VSub_Name USERGROUPS))} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  ]
                                                )
                                              action: [
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:ARGS)
                                                      op: assign_op.Equal
                                                      rhs: 
                                                        {
                                                          (DQ (${ Id.VSub_Name ARGS) <' -G '> 
                                                            (word_part.EscapedLiteral
                                                              token: <Id.Lit_EscapedChar '\\"'>
                                                            ) (${ Id.VSub_Name USERGROUPS) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                                                          )
                                                        }
                                                      spids: [1023]
                                                    )
                                                  ]
                                                )
                                              ]
                                              spids: [1005 1020]
                                            )
                                          ]
                                        )
                                        (C {<add_user>} {(DQ (${ Id.VSub_Name ARGS))})
                                        (C {<unset>} {<USERNAME>} {<USERCOMMENT>} {<USERPASS>} 
                                          {<USERENCPASS>} {<USERSHELL>} {<USERHOME>} {<USERGROUPS>}
                                        )
                                      ]
                                      spids: [732 747]
                                    )
                                  ]
                                  else_action: [
                                    (C {<exit_err>} 
                                      {
                                        (DQ 
                                          <
'ERROR: commitUser was called without any userName= entry!!!'
                                          >
                                        )
                                      }
                                    )
                                  ]
                                )
                              ]
                              spids: [712 725]
                            )
                          ]
                        )
                      ]
                    )
                  redirects: [
                    (redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {(${ Id.VSub_Name CFGF)}
                    )
                  ]
                )
                (C {<check_autologin>})
              ]
            )
        )
      terminator: <Id.Op_Semi _>
    )
  ]
)