(BraceGroup
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:AVAILABLE_OPTIONS)
          op: assign_op.Equal
          rhs: 
            {
              (SQ <'\n'> <' - start/stop/restart/status (all services, known to DietPi)\n'> 
                <' - start/stop/restart servicename (single service, SystemD)\n'> <' - systemd_controlled/dietpi_controlled (all services, known to DietPi)\n'> 
                <' - enable/disable servicename (single service, SystemD)\n'> <' - enable/disable all (all services, known to DietPi)\n'> 
                <' - mask/unmask servicename (single service, SystemD)'>
              )
            }
          spids: [58]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:INPUT_MODE)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_Number '$1'))}
          spids: [75]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:INPUT_S2)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_Number '$2'))}
          spids: [81]
        )
      ]
    )
    (C {<.>} {<'/DietPi/dietpi/func/dietpi-globals'>})
    (C {<G_CHECK_ROOT_USER>})
    (C {<export>} {<Id.Lit_VarLike 'G_PROGRAM_NAME='> (SQ <DietPi-Services>)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:aSERVICE_NAME)
          op: assign_op.Equal
          rhs: 
            {
              (sh_array_literal
                left: <Id.Op_LParen _>
                words: [
                  {(SQ <cron>)}
                  {(SQ <transmission-daemon>)}
                  {(SQ <proftpd>)}
                  {(SQ <smbd>)}
                  {(SQ <nmbd>)}
                  {(SQ <nfs-kernel-server>)}
                  {(SQ <vsftpd>)}
                  {(SQ <apache2>)}
                  {(SQ <nginx>)}
                  {(SQ <lighttpd>)}
                  {(SQ <php5-fpm>)}
                  {(SQ <php7.0-fpm>)}
                  {(SQ <mysql>)}
                  {(SQ <mpd>)}
                  {(SQ <ympd>)}
                  {(SQ <minidlna>)}
                  {(SQ <noip2>)}
                  {(SQ <grasshopper>)}
                  {(SQ <dnsmasq>)}
                  {(SQ <pihole-FTL>)}
                  {(SQ <subsonic>)}
                  {(SQ <webiopi>)}
                  {(SQ <haproxy>)}
                  {(SQ <fail2ban>)}
                  {(SQ <openvpn>)}
                  {(SQ <isc-dhcp-server>)}
                  {(SQ <hostapd>)}
                  {(SQ <avahi-daemon>)}
                  {(SQ <shairport-sync>)}
                  {(SQ <squeezelite>)}
                  {(SQ <mopidy>)}
                  {(SQ <redis-server>)}
                  {(SQ <emonhub>)}
                  {(SQ <netdata>)}
                  {(SQ <mumble-server>)}
                  {(SQ <emby-server>)}
                  {(SQ <plexmediaserver>)}
                  {(SQ <cuberite>)}
                  {(SQ <supervisor>)}
                  {(SQ <gogs>)}
                  {(SQ <qbittorrent>)}
                  {(SQ <syncthing>)}
                  {(SQ <syncthing-inotify>)}
                  {(SQ <rtorrent>)}
                  {(SQ <urbackupsrv>)}
                  {(SQ <sickrage>)}
                  {(SQ <roonbridge>)}
                  {(SQ <mosquitto>)}
                  {(SQ <networkaudiod>)}
                  {(SQ <node-red>)}
                  {(SQ <tomcat8>)}
                  {(SQ <rpimonitor>)}
                  {(SQ <openmediavault-engined>)}
                  {(SQ <blynkserver>)}
                  {(SQ <aria2>)}
                  {(SQ <yacy>)}
                  {(SQ <tonido>)}
                  {(SQ <icecast2>)}
                  {(SQ <darkice>)}
                  {(SQ <motioneye>)}
                  {(SQ <cups>)}
                  {(SQ <cloudprintd>)}
                  {(SQ <virtualhere>)}
                  {(SQ <sabnzbd>)}
                  {(SQ <spotify-connect-web>)}
                  {(SQ <couchpotato>)}
                  {(SQ <koel>)}
                  {(SQ <sonarr>)}
                  {(SQ <radarr>)}
                  {(SQ <plexpy>)}
                  {(SQ <jackett>)}
                  {(SQ <nzbget>)}
                  {(SQ <octoprint>)}
                  {(SQ <roonserver>)}
                  {(SQ <htpc-manager>)}
                  {(SQ <home-assistant>)}
                  {(SQ <openbazaar>)}
                  {(SQ <docker>)}
                  {(SQ <bdd>)}
                  {(SQ <minio>)}
                  {(SQ <gmrender>)}
                  {(SQ <nukkit>)}
                  {(SQ <gitea>)}
                  {(SQ <pi-spc>)}
                  {(SQ <raspotify>)}
                  {(SQ <voice-recognizer>)}
                  {(SQ <alsa-init>)}
                ]
              )
            }
          spids: [113]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_INCLUDE_SERVICES)
          op: assign_op.Equal
          rhs: {(SQ <'/DietPi/dietpi/.dietpi-services_include'>)}
          spids: [572]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-f>} 
                      {(DQ ($ Id.VSub_DollarName '$FP_INCLUDE_SERVICES'))} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<read>} {<line>})])
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:index)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name aSERVICE_NAME>
                                prefix_op: (Id.VSub_Pound)
                                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                              )
                            }
                          spids: [606]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              name: aSERVICE_NAME
                              index: {($ Id.VSub_DollarName '$index')}
                            )
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$line'))}
                          spids: [616]
                        )
                      ]
                    )
                  ]
                )
              redirects: [
                (redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {(DQ ($ Id.VSub_DollarName '$FP_INCLUDE_SERVICES'))}
                )
              ]
            )
          ]
          spids: [578 591]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:aSERVICE_AVAILABLE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [645]
        )
      ]
    )
    (command.ForExpr
      init: 
        (arith_expr.BinaryAssign
          op_id: Id.Arith_Equal
          left: <Id.Lit_ArithVarLike i>
          right: {<Id.Lit_Digits 0>}
        )
      cond: 
        (arith_expr.Binary
          op_id: Id.Arith_Less
          left: <Id.Lit_ArithVarLike i>
          right: 
            {
              (braced_var_sub
                token: <Id.VSub_Name aSERVICE_NAME>
                prefix_op: (Id.VSub_Pound)
                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
              )
            }
        )
      update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>)
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: aSERVICE_AVAILABLE
                      index: {($ Id.VSub_DollarName '$i')}
                    )
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [677]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Populate_Available_Array
      body: 
        (BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {<dpkg>} {<--get-selections>})
                (command.Simple
                  words: [{<awk>} {(SQ <'{print $1}'>)}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName '$FP_TEMP'))}
                    )
                  ]
                  do_fork: T
                )
              ]
              negated: F
            )
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: <Id.Lit_ArithVarLike i>
                  right: {<Id.Lit_Digits 0>}
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_Less
                  left: <Id.Lit_ArithVarLike i>
                  right: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name aSERVICE_NAME>
                        prefix_op: (Id.VSub_Pound)
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      )
                    }
                )
              update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>)
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {<-f>} 
                                          {<'/etc/systemd/system/'> 
                                            (braced_var_sub
                                              token: <Id.VSub_Name aSERVICE_NAME>
                                              bracket_op: 
                                                (bracket_op.ArrayIndex
                                                  expr: {($ Id.VSub_DollarName '$i')}
                                                )
                                            ) <.service>
                                          } {<Id.Lit_RBracket ']'>}
                                        )
                                        (C {<Id.Lit_LBracket '['>} {<-f>} 
                                          {<'/lib/systemd/system/'> 
                                            (braced_var_sub
                                              token: <Id.VSub_Name aSERVICE_NAME>
                                              bracket_op: 
                                                (bracket_op.ArrayIndex
                                                  expr: {($ Id.VSub_DollarName '$i')}
                                                )
                                            ) <.service>
                                          } {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: aSERVICE_AVAILABLE
                                      index: {($ Id.VSub_DollarName '$i')}
                                    )
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                  spids: [796]
                                )
                              ]
                            )
                          ]
                          spids: [756 792]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-f>} 
                                      {<'/etc/init.d/'> 
                                        (braced_var_sub
                                          token: <Id.VSub_Name aSERVICE_NAME>
                                          bracket_op: 
                                            (bracket_op.ArrayIndex
                                              expr: {($ Id.VSub_DollarName '$i')}
                                            )
                                        )
                                      } {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: aSERVICE_AVAILABLE
                                      index: {($ Id.VSub_DollarName '$i')}
                                    )
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                  spids: [826]
                                )
                              ]
                            )
                          ]
                          spids: [805 822]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        {
                                          (command_sub
                                            left_token: <Id.Left_DollarParen '$('>
                                            child: 
                                              (C {<grep>} {<-ci>} {<-m1>} 
                                                {
                                                  (DQ <'^'> 
                                                    (braced_var_sub
                                                      token: <Id.VSub_Name aSERVICE_NAME>
                                                      bracket_op: 
                                                        (bracket_op.ArrayIndex
                                                          expr: {($ Id.VSub_DollarName '$i')}
                                                        )
                                                    ) <Id.Lit_Dollar '$'>
                                                  )
                                                } {(DQ ($ Id.VSub_DollarName '$FP_TEMP'))}
                                              )
                                          )
                                        }
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: aSERVICE_AVAILABLE
                                      index: {($ Id.VSub_DollarName '$i')}
                                    )
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                  spids: [874]
                                )
                              ]
                            )
                          ]
                          spids: [839 870]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: Print_Status
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DPipe
                                  left: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_DEqual
                                      left: {($ Id.VSub_Number '$3')}
                                      right: {<Id.Lit_Digits 0>}
                                    )
                                  right: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_DEqual
                                      left: {($ Id.VSub_Number '$3')}
                                      right: {<Id.Lit_Digits 5>}
                                    )
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<G_DIETPI-NOTIFY>} {<0>} 
                      {(DQ ($ Id.VSub_Number '$1') <' : '> ($ Id.VSub_Number '$2'))}
                    )
                  ]
                  spids: [926 948]
                )
              ]
              else_action: [
                (C {<G_DIETPI-NOTIFY>} {<1>} 
                  {(DQ ($ Id.VSub_Number '$1') <' : '> ($ Id.VSub_Number '$2'))}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: Set_Running_State
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'target_state='> (DQ ($ Id.VSub_Number '$1'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:index)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [1028]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aDIETPISERVICE_FP)
                  op: assign_op.Equal
                  rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
                  spids: [1032]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aDIETPISERVICE_NAME)
                  op: assign_op.Equal
                  rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
                  spids: [1037]
                )
              ]
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          name: aDIETPISERVICE_NAME
                          index: {($ Id.VSub_DollarName '$index')}
                        )
                      op: assign_op.Equal
                      rhs: {(SQ <BruteFIR>)}
                      spids: [1042]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          name: aDIETPISERVICE_FP
                          index: {($ Id.VSub_DollarName '$index')}
                        )
                      op: assign_op.Equal
                      rhs: {(SQ <'/var/lib/dietpi/dietpi-software/services/brutefir.service'>)}
                      spids: [1051]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.UnaryAssign
                      op_id: Id.Node_PostDPlus
                      child: <Id.Lit_ArithVarLike index>
                    )
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          name: aDIETPISERVICE_NAME
                          index: {($ Id.VSub_DollarName '$index')}
                        )
                      op: assign_op.Equal
                      rhs: {(SQ <JackD>)}
                      spids: [1068]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          name: aDIETPISERVICE_FP
                          index: {($ Id.VSub_DollarName '$index')}
                        )
                      op: assign_op.Equal
                      rhs: {(SQ <'/var/lib/dietpi/dietpi-software/services/jackd.service'>)}
                      spids: [1077]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.UnaryAssign
                      op_id: Id.Node_PostDPlus
                      child: <Id.Lit_ArithVarLike index>
                    )
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          name: aDIETPISERVICE_NAME
                          index: {($ Id.VSub_DollarName '$index')}
                        )
                      op: assign_op.Equal
                      rhs: {(SQ <Jconvolver>)}
                      spids: [1094]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          name: aDIETPISERVICE_FP
                          index: {($ Id.VSub_DollarName '$index')}
                        )
                      op: assign_op.Equal
                      rhs: {(SQ <'/var/lib/dietpi/dietpi-software/services/jconvolver.service'>)}
                      spids: [1103]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.UnaryAssign
                      op_id: Id.Node_PostDPlus
                      child: <Id.Lit_ArithVarLike index>
                    )
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: <Id.Lit_ArithVarLike i>
                  right: {<Id.Lit_Digits 0>}
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_Less
                  left: <Id.Lit_ArithVarLike i>
                  right: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name aDIETPISERVICE_NAME>
                        prefix_op: (Id.VSub_Pound)
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      )
                    }
                )
              update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>)
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-f>} 
                                      {
                                        (braced_var_sub
                                          token: <Id.VSub_Name aDIETPISERVICE_FP>
                                          bracket_op: 
                                            (bracket_op.ArrayIndex
                                              expr: {($ Id.VSub_DollarName '$i')}
                                            )
                                        )
                                      } {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<G_DIETPI-NOTIFY>} {<-2>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name aDIETPISERVICE_NAME>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: {($ Id.VSub_DollarName '$i')}
                                      )
                                  )
                                )
                              }
                            )
                            (command.Simple
                              words: [
                                {
                                  (braced_var_sub
                                    token: <Id.VSub_Name aDIETPISERVICE_FP>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: {($ Id.VSub_DollarName '$i')}
                                      )
                                  )
                                }
                                {($ Id.VSub_DollarName '$target_state')}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_AndGreat '&>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                            (C {<Print_Status>} {($ Id.VSub_DollarName '$target_state')} 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Name aDIETPISERVICE_NAME>
                                  bracket_op: 
                                    (bracket_op.ArrayIndex
                                      expr: {($ Id.VSub_DollarName '$i')}
                                    )
                                )
                              } {($ Id.VSub_QMark '$?')}
                            )
                          ]
                          spids: [1150 1166]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<unset>} {<aDIETPISERVICE_NAME>})
            (C {<unset>} {<aDIETPISERVICE_FP>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aALLO_EXCLUDED_SERVICES_DURING_STOP)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (sh_array_literal
                        left: <Id.Op_LParen _>
                        words: [
                          {(SQ <apache2>)}
                          {(SQ <nginx>)}
                          {(SQ <lighttpd>)}
                          {(SQ <php5-fpm>)}
                          {(SQ <php7.0-fpm>)}
                          {(SQ <mysql>)}
                          {(SQ <avahi-daemon>)}
                        ]
                      )
                    }
                  spids: [1241]
                )
              ]
            )
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: <Id.Lit_ArithVarLike i>
                  right: {<Id.Lit_Digits 0>}
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_Less
                  left: <Id.Lit_ArithVarLike i>
                  right: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name aSERVICE_NAME>
                        prefix_op: (Id.VSub_Pound)
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      )
                    }
                )
              update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>)
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {<-d>} {<'/var/www/allo'>} 
                                          {<Id.Lit_RBracket ']'>}
                                        )
                                        (C {<Id.Lit_LBracket '['>} 
                                          {(DQ ($ Id.VSub_DollarName '$target_state'))} {<Id.Lit_Equals '='>} {(DQ <stop>)} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ForExpr
                              init: 
                                (arith_expr.BinaryAssign
                                  op_id: Id.Arith_Equal
                                  left: <Id.Lit_ArithVarLike j>
                                  right: {<Id.Lit_Digits 0>}
                                )
                              cond: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_Less
                                  left: <Id.Lit_ArithVarLike j>
                                  right: 
                                    {
                                      (braced_var_sub
                                        token: <Id.VSub_Name aALLO_EXCLUDED_SERVICES_DURING_STOP>
                                        prefix_op: (Id.VSub_Pound)
                                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                      )
                                    }
                                )
                              update: 
                                (arith_expr.UnaryAssign
                                  op_id: Id.Node_PostDPlus
                                  child: <Id.Lit_ArithVarLike j>
                                )
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<Id.Lit_LBracket '['>} 
                                                      {
                                                        (DQ 
                                                          (braced_var_sub
                                                            token: <Id.VSub_Name aSERVICE_NAME>
                                                            bracket_op: 
                                                              (bracket_op.ArrayIndex
                                                                expr: {($ Id.VSub_DollarName '$i')}
                                                              )
                                                          )
                                                        )
                                                      } {<Id.Lit_Equals '='>} 
                                                      {
                                                        (DQ 
                                                          (braced_var_sub
                                                            token: 
                                                              <Id.VSub_Name 
aALLO_EXCLUDED_SERVICES_DURING_STOP
                                                              >
                                                            bracket_op: 
                                                              (bracket_op.ArrayIndex
                                                                expr: {($ Id.VSub_DollarName '$j')}
                                                              )
                                                          )
                                                        )
                                                      } {<Id.Lit_RBracket ']'>}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.IndexedName
                                                      name: aSERVICE_AVAILABLE
                                                      index: {($ Id.VSub_DollarName '$i')}
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {<0>}
                                                  spids: [1420]
                                                )
                                              ]
                                            )
                                            (command.ControlFlow
                                              token: <Id.ControlFlow_Break break>
                                            )
                                          ]
                                          spids: [1389 1416]
                                        )
                                      ]
                                    )
                                  ]
                                )
                            )
                          ]
                          spids: [1329 1356]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_DEqual
                                          left: 
                                            {
                                              (braced_var_sub
                                                token: <Id.VSub_Name aSERVICE_AVAILABLE>
                                                bracket_op: 
                                                  (bracket_op.ArrayIndex
                                                    expr: {($ Id.VSub_DollarName '$i')}
                                                  )
                                              )
                                            }
                                          right: {<Id.Lit_Digits 1>}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<G_DIETPI-NOTIFY>} {<-2>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name aSERVICE_NAME>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: {($ Id.VSub_DollarName '$i')}
                                      )
                                  )
                                )
                              }
                            )
                            (command.Simple
                              words: [
                                {<systemctl>}
                                {($ Id.VSub_DollarName '$target_state')}
                                {
                                  (braced_var_sub
                                    token: <Id.VSub_Name aSERVICE_NAME>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: {($ Id.VSub_DollarName '$i')}
                                      )
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_AndGreat '&>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                            (C {<Print_Status>} {($ Id.VSub_DollarName '$target_state')} 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Name aSERVICE_NAME>
                                  bracket_op: 
                                    (bracket_op.ArrayIndex
                                      expr: {($ Id.VSub_DollarName '$i')}
                                    )
                                )
                              } {($ Id.VSub_QMark '$?')}
                            )
                          ]
                          spids: [1452 1471]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<unset>} {<aALLO_EXCLUDED_SERVICES_DURING_STOP>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:index)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [1552]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aDIETPISERVICE_FP)
                  op: assign_op.Equal
                  rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
                  spids: [1556]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aDIETPISERVICE_NAME)
                  op: assign_op.Equal
                  rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
                  spids: [1561]
                )
              ]
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          name: aDIETPISERVICE_NAME
                          index: {($ Id.VSub_DollarName '$index')}
                        )
                      op: assign_op.Equal
                      rhs: {(SQ <RaspimJpeg>)}
                      spids: [1566]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          name: aDIETPISERVICE_FP
                          index: {($ Id.VSub_DollarName '$index')}
                        )
                      op: assign_op.Equal
                      rhs: {(SQ <'/var/lib/dietpi/dietpi-software/services/raspimjpeg.service'>)}
                      spids: [1575]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.UnaryAssign
                      op_id: Id.Node_PostDPlus
                      child: <Id.Lit_ArithVarLike index>
                    )
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          name: aDIETPISERVICE_NAME
                          index: {($ Id.VSub_DollarName '$index')}
                        )
                      op: assign_op.Equal
                      rhs: {(SQ <Deluge>)}
                      spids: [1592]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          name: aDIETPISERVICE_FP
                          index: {($ Id.VSub_DollarName '$index')}
                        )
                      op: assign_op.Equal
                      rhs: {(SQ <'/var/lib/dietpi/dietpi-software/services/deluge.service'>)}
                      spids: [1601]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.UnaryAssign
                      op_id: Id.Node_PostDPlus
                      child: <Id.Lit_ArithVarLike index>
                    )
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          name: aDIETPISERVICE_NAME
                          index: {($ Id.VSub_DollarName '$index')}
                        )
                      op: assign_op.Equal
                      rhs: {(SQ <'SqueezeBox Server'>)}
                      spids: [1618]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          name: aDIETPISERVICE_FP
                          index: {($ Id.VSub_DollarName '$index')}
                        )
                      op: assign_op.Equal
                      rhs: {(SQ <'/var/lib/dietpi/dietpi-software/services/squeezeboxserver.service'>)}
                      spids: [1627]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.DParen
                  child: 
                    (arith_expr.UnaryAssign
                      op_id: Id.Node_PostDPlus
                      child: <Id.Lit_ArithVarLike index>
                    )
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: <Id.Lit_ArithVarLike i>
                  right: {<Id.Lit_Digits 0>}
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_Less
                  left: <Id.Lit_ArithVarLike i>
                  right: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name aDIETPISERVICE_NAME>
                        prefix_op: (Id.VSub_Pound)
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      )
                    }
                )
              update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>)
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-f>} 
                                      {
                                        (braced_var_sub
                                          token: <Id.VSub_Name aDIETPISERVICE_FP>
                                          bracket_op: 
                                            (bracket_op.ArrayIndex
                                              expr: {($ Id.VSub_DollarName '$i')}
                                            )
                                        )
                                      } {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<G_DIETPI-NOTIFY>} {<-2>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name aDIETPISERVICE_NAME>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: {($ Id.VSub_DollarName '$i')}
                                      )
                                  )
                                )
                              }
                            )
                            (command.Simple
                              words: [
                                {
                                  (braced_var_sub
                                    token: <Id.VSub_Name aDIETPISERVICE_FP>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: {($ Id.VSub_DollarName '$i')}
                                      )
                                  )
                                }
                                {($ Id.VSub_DollarName '$target_state')}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_AndGreat '&>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                            (C {<Print_Status>} {($ Id.VSub_DollarName '$target_state')} 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Name aDIETPISERVICE_NAME>
                                  bracket_op: 
                                    (bracket_op.ArrayIndex
                                      expr: {($ Id.VSub_DollarName '$i')}
                                    )
                                )
                              } {($ Id.VSub_QMark '$?')}
                            )
                          ]
                          spids: [1674 1690]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<unset>} {<aDIETPISERVICE_NAME>})
            (C {<unset>} {<aDIETPISERVICE_FP>})
            (C {<echo>} {<-e>} {(DQ )})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$target_state'))} 
                                  {<Id.Lit_Equals '='>} {(DQ <start>)} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$target_state'))} 
                                  {<Id.Lit_Equals '='>} {(DQ <restart>)} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<'/DietPi/dietpi/dietpi-process_tool'>} {<1>})]
                  spids: [1774 1808]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FP_TEMP)
          op: assign_op.Equal
          rhs: {(DQ <'/tmp/.dietpi-services_installed'>)}
          spids: [1826]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<3>} {<DietPi-Services>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))})
    (C {<Populate_Available_Array>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} 
                          {<Id.Lit_Equals '='>} {(SQ <dietpi_controlled>)} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} 
                          {<Id.Lit_Equals '='>} {(SQ <systemd_controlled>)} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SYSTEMD_CMD)
                  op: assign_op.Equal
                  rhs: {(SQ <disable>)}
                  spids: [1915]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} 
                              {<Id.Lit_Equals '='>} {(DQ <systemd_controlled>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SYSTEMD_CMD)
                          op: assign_op.Equal
                          rhs: {(SQ <enable>)}
                          spids: [1943]
                        )
                      ]
                    )
                  ]
                  spids: [1922 1939]
                )
              ]
            )
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: <Id.Lit_ArithVarLike i>
                  right: {<Id.Lit_Digits 0>}
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_Less
                  left: <Id.Lit_ArithVarLike i>
                  right: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name aSERVICE_NAME>
                        prefix_op: (Id.VSub_Pound)
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      )
                    }
                )
              update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>)
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_DEqual
                                          left: 
                                            {
                                              (braced_var_sub
                                                token: <Id.VSub_Name aSERVICE_AVAILABLE>
                                                bracket_op: 
                                                  (bracket_op.ArrayIndex
                                                    expr: {($ Id.VSub_DollarName '$i')}
                                                  )
                                              )
                                            }
                                          right: {<Id.Lit_Digits 1>}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<G_DIETPI-NOTIFY>} {<-2>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name aSERVICE_NAME>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: {($ Id.VSub_DollarName '$i')}
                                      )
                                  )
                                )
                              }
                            )
                            (command.Simple
                              words: [
                                {<systemctl>}
                                {($ Id.VSub_DollarName '$SYSTEMD_CMD')}
                                {
                                  (braced_var_sub
                                    token: <Id.VSub_Name aSERVICE_NAME>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: {($ Id.VSub_DollarName '$i')}
                                      )
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_AndGreat '&>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                            (C {<Print_Status>} {($ Id.VSub_DollarName '$INPUT_MODE')} 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Name aSERVICE_NAME>
                                  bracket_op: 
                                    (bracket_op.ArrayIndex
                                      expr: {($ Id.VSub_DollarName '$i')}
                                    )
                                )
                              } {($ Id.VSub_QMark '$?')}
                            )
                          ]
                          spids: [1987 2006]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.Simple
              words: [{<systemctl>} {<daemon-reload>}]
              redirects: [
                (redir
                  op: <Id.Redir_AndGreat '&>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
              ]
              do_fork: T
            )
            (C {<echo>} {<-e>} {(DQ )})
          ]
          spids: [1877 1911]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.AndOr
                      ops: [Id.Op_DPipe Id.Op_DPipe Id.Op_DPipe]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} 
                          {<Id.Lit_Equals '='>} {(DQ <enable>)} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} 
                          {<Id.Lit_Equals '='>} {(DQ <disable>)} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} 
                          {<Id.Lit_Equals '='>} {(DQ <unmask>)} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} 
                          {<Id.Lit_Equals '='>} {(DQ <mask>)} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SYSTEMD_CMD)
                  op: assign_op.Equal
                  rhs: {(SQ <mask>)}
                  spids: [2168]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} 
                                  {<Id.Lit_Equals '='>} {(DQ <enable>)} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} 
                                  {<Id.Lit_Equals '='>} {(DQ <unmask>)} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SYSTEMD_CMD)
                          op: assign_op.Equal
                          rhs: {(SQ <unmask>)}
                          spids: [2212]
                        )
                      ]
                    )
                  ]
                  spids: [2174 2208]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_S2'))} 
                              {<Id.Lit_Equals '='>} {(SQ <all>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} 
                                          {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <disable>)} {<Id.Lit_RBracket ']'>}
                                        )
                                        (C {<Id.Lit_LBracket '['>} 
                                          {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <mask>)} {<Id.Lit_RBracket ']'>}
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {<echo>} {<-e>} {(DQ )}) (C {<Set_Running_State>} {<stop>})]
                          spids: [2248 2282]
                        )
                      ]
                    )
                    (command.ForExpr
                      init: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: <Id.Lit_ArithVarLike i>
                          right: {<Id.Lit_Digits 0>}
                        )
                      cond: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Less
                          left: <Id.Lit_ArithVarLike i>
                          right: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name aSERVICE_NAME>
                                prefix_op: (Id.VSub_Pound)
                                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                              )
                            }
                        )
                      update: 
                        (arith_expr.UnaryAssign
                          op_id: Id.Node_PostDPlus
                          child: <Id.Lit_ArithVarLike i>
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DParen
                                              child: 
                                                {
                                                  (braced_var_sub
                                                    token: <Id.VSub_Name aSERVICE_AVAILABLE>
                                                    bracket_op: 
                                                      (bracket_op.ArrayIndex
                                                        expr: {($ Id.VSub_DollarName '$i')}
                                                      )
                                                  )
                                                }
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<G_DIETPI-NOTIFY>} {<0>} 
                                      {
                                        (DQ ($ Id.VSub_DollarName '$INPUT_MODE') <' '> 
                                          ($ Id.VSub_DollarName '$INPUT_S2') <': '> 
                                          (braced_var_sub
                                            token: <Id.VSub_Name aSERVICE_NAME>
                                            bracket_op: 
                                              (bracket_op.ArrayIndex
                                                expr: {($ Id.VSub_DollarName '$i')}
                                              )
                                          )
                                        )
                                      }
                                    )
                                    (C {<systemctl>} {($ Id.VSub_DollarName '$SYSTEMD_CMD')} 
                                      {
                                        (braced_var_sub
                                          token: <Id.VSub_Name aSERVICE_NAME>
                                          bracket_op: 
                                            (bracket_op.ArrayIndex
                                              expr: {($ Id.VSub_DollarName '$i')}
                                            )
                                        )
                                      }
                                    )
                                  ]
                                  spids: [2333 2348]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [2227 2244]
                )
              ]
              else_action: [
                (C {<systemctl>} {<stop>} {($ Id.VSub_DollarName '$INPUT_S2')})
                (C {<systemctl>} {($ Id.VSub_DollarName '$SYSTEMD_CMD')} 
                  {($ Id.VSub_DollarName '$INPUT_S2')}
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_DEqual
                                      left: {($ Id.VSub_QMark '$?')}
                                      right: {<Id.Lit_Digits 0>}
                                    )
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (C {<G_DIETPI-NOTIFY>} {<0>} 
                          {
                            (DQ ($ Id.VSub_DollarName '$INPUT_MODE') <' '> 
                              ($ Id.VSub_DollarName '$INPUT_S2')
                            )
                          }
                        )
                      ]
                      spids: [2416 2430]
                    )
                  ]
                  else_action: [
                    (C {<G_DIETPI-NOTIFY>} {<1>} 
                      {
                        (DQ ($ Id.VSub_DollarName '$INPUT_MODE') <' '> 
                          ($ Id.VSub_DollarName '$INPUT_S2')
                        )
                      }
                    )
                  ]
                )
              ]
            )
            (command.Simple
              words: [{<systemctl>} {<daemon-reload>}]
              redirects: [
                (redir
                  op: <Id.Redir_AndGreat '&>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
              ]
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} 
                                  {<Id.Lit_Equals '='>} {(DQ <unmask>)} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} 
                                  {<Id.Lit_Equals '='>} {(DQ <enable>)} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {<-e>} {(DQ )}) (C {<Set_Running_State>} {<start>})]
                  spids: [2480 2514]
                )
              ]
            )
            (C {<echo>} {<-e>} {(DQ )})
          ]
          spids: [2092 2160]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} 
                      {<Id.Lit_Equals '='>} {(DQ <status>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: <Id.Lit_ArithVarLike i>
                  right: {<Id.Lit_Digits 0>}
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_Less
                  left: <Id.Lit_ArithVarLike i>
                  right: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name aSERVICE_NAME>
                        prefix_op: (Id.VSub_Pound)
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      )
                    }
                )
              update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>)
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_DEqual
                                          left: 
                                            {
                                              (braced_var_sub
                                                token: <Id.VSub_Name aSERVICE_AVAILABLE>
                                                bracket_op: 
                                                  (bracket_op.ArrayIndex
                                                    expr: {($ Id.VSub_DollarName '$i')}
                                                  )
                                              )
                                            }
                                          right: {<Id.Lit_Digits 1>}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:STATUS)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          token: <Id.VSub_Name aSERVICE_NAME>
                                          bracket_op: 
                                            (bracket_op.ArrayIndex
                                              expr: {($ Id.VSub_DollarName '$i')}
                                            )
                                        ) <Id.Lit_BadBackslash '\\'> <t> 
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Pipeline
                                              children: [
                                                (C {<systemctl>} {<status>} 
                                                  {
                                                    (braced_var_sub
                                                      token: <Id.VSub_Name aSERVICE_NAME>
                                                      bracket_op: 
                                                        (bracket_op.ArrayIndex
                                                          expr: {($ Id.VSub_DollarName '$i')}
                                                        )
                                                    )
                                                  }
                                                )
                                                (C {<grep>} {<-m1>} {(SQ <Active>)})
                                                (C {<cut>} {<-c12->})
                                              ]
                                              negated: F
                                            )
                                        )
                                      )
                                    }
                                  spids: [2630]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DBracket
                                              expr: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_EqualTilde
                                                  left: {(DQ ($ Id.VSub_DollarName '$STATUS'))}
                                                  right: 
                                                    {<Id.Lit_Other .> <Id.Lit_Other '*'> (SQ <failed>) 
                                                      <Id.Lit_Other .> <Id.Lit_Other '*'>
                                                    }
                                                )
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<G_DIETPI-NOTIFY>} {<1>} {(DQ ($ Id.VSub_DollarName '$STATUS'))})
                                    (C {<systemctl>} {<status>} 
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            token: <Id.VSub_Name aSERVICE_NAME>
                                            bracket_op: 
                                              (bracket_op.ArrayIndex
                                                expr: {($ Id.VSub_DollarName '$i')}
                                              )
                                          )
                                        )
                                      } {<-l>} {<--no-pager>}
                                    )
                                  ]
                                  spids: [2672 2693]
                                )
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DBracket
                                              expr: 
                                                (bool_expr.Binary
                                                  op_id: Id.BoolBinary_EqualTilde
                                                  left: {(DQ ($ Id.VSub_DollarName '$STATUS'))}
                                                  right: 
                                                    {<Id.Lit_Other .> <Id.Lit_Other '*'> 
                                                      (SQ <inactive>) <Id.Lit_Other .> <Id.Lit_Other '*'>
                                                    }
                                                )
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ ($ Id.VSub_DollarName '$STATUS'))})
                                  ]
                                  spids: [2725 2746]
                                )
                              ]
                              else_action: [
                                (C {<G_DIETPI-NOTIFY>} {<0>} {(DQ ($ Id.VSub_DollarName '$STATUS'))})
                              ]
                            )
                          ]
                          spids: [2607 2626]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<echo>} {<-e>} {(DQ )})
          ]
          spids: [2553 2570]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.AndOr
                      ops: [Id.Op_DPipe Id.Op_DPipe]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} 
                          {<Id.Lit_Equals '='>} {(DQ <start>)} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} 
                          {<Id.Lit_Equals '='>} {(DQ <stop>)} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} 
                          {<Id.Lit_Equals '='>} {(DQ <restart>)} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$INPUT_S2'))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<systemctl>}
                        {($ Id.VSub_DollarName '$INPUT_MODE')}
                        {($ Id.VSub_DollarName '$INPUT_S2')}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_AndGreat '&>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_DEqual
                                          left: {($ Id.VSub_QMark '$?')}
                                          right: {<Id.Lit_Digits 0>}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<G_DIETPI-NOTIFY>} {<0>} 
                              {
                                (DQ ($ Id.VSub_DollarName '$INPUT_MODE') <' '> 
                                  ($ Id.VSub_DollarName '$INPUT_S2')
                                )
                              }
                            )
                          ]
                          spids: [2890 2904]
                        )
                      ]
                      else_action: [
                        (C {<G_DIETPI-NOTIFY>} {<1>} 
                          {
                            (DQ ($ Id.VSub_DollarName '$INPUT_MODE') <' '> 
                              ($ Id.VSub_DollarName '$INPUT_S2')
                            )
                          }
                        )
                      ]
                    )
                    (C {<echo>} {<-e>} {(DQ )})
                  ]
                  spids: [2862 2875]
                )
              ]
              else_action: [
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Id.Op_DPipe]
                                  children: [
                                    (C {<Id.Lit_LBracket '['>} 
                                      {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <stop>)} {<Id.Lit_RBracket ']'>}
                                    )
                                    (C {<Id.Lit_LBracket '['>} 
                                      {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <restart>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (command.Simple
                              words: [
                                {<grep>}
                                {<-q>}
                                {(DQ <'\'maintenance\' => false,'>)}
                                {<'/var/www/owncloud/config/config.php'>}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_AndGreat '&>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                            (C {<G_RUN_CMD>} {<occ>} {<maintenance> <Id.Lit_Colon ':'> <mode>} {<--on>})
                          ]
                        )
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (command.Simple
                              words: [
                                {<grep>}
                                {<-q>}
                                {(DQ <'\'maintenance\' => false,'>)}
                                {<'/var/www/nextcloud/config/config.php'>}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_AndGreat '&>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                            (C {<G_RUN_CMD>} {<ncc>} {<maintenance> <Id.Lit_Colon ':'> <mode>} {<--on>})
                          ]
                        )
                      ]
                      spids: [2961 2994]
                    )
                  ]
                )
                (C {<Set_Running_State>} {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Id.Op_DPipe]
                                  children: [
                                    (C {<Id.Lit_LBracket '['>} 
                                      {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <restart>)} {<Id.Lit_RBracket ']'>}
                                    )
                                    (C {<Id.Lit_LBracket '['>} 
                                      {(DQ ($ Id.VSub_DollarName '$INPUT_MODE'))} {<Id.Lit_Equals '='>} {(DQ <start>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (command.Simple
                              words: [
                                {<grep>}
                                {<-q>}
                                {(DQ <'\'maintenance\' => true,'>)}
                                {<'/var/www/owncloud/config/config.php'>}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_AndGreat '&>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                            (C {<G_RUN_CMD>} {<occ>} {<maintenance> <Id.Lit_Colon ':'> <mode>} {<--off>})
                          ]
                        )
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (command.Simple
                              words: [
                                {<grep>}
                                {<-q>}
                                {(DQ <'\'maintenance\' => true,'>)}
                                {<'/var/www/nextcloud/config/config.php'>}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_AndGreat '&>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                            (C {<G_RUN_CMD>} {<ncc>} {<maintenance> <Id.Lit_Colon ':'> <mode>} {<--off>})
                          ]
                        )
                      ]
                      spids: [3069 3102]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [2803 2854]
        )
      ]
      else_action: [
        (C {<G_DIETPI-NOTIFY>} {<2>} 
          {
            (DQ <'Invalid command'> <Id.Lit_BadBackslash '\\'> <'e[0m'> <Id.Lit_BadBackslash '\\'> 
              <'nAvailable commands:'> <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName '$AVAILABLE_OPTIONS') <Id.Lit_BadBackslash '\\'> <n>
            )
          }
        )
      ]
    )
    (C {<rm>} {(DQ ($ Id.VSub_DollarName '$FP_TEMP'))})
    (C {<unset>} {<aSERVICE_NAME>})
    (C {<unset>} {<aSERVICE_AVAILABLE>})
    (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
  ]
)