(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:dst_dir)
          op: assign_op.Equal
          rhs: {(DQ <'/etc/opt/csw/unbound'>)}
          spids: [23]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:work_dir)
          op: assign_op.Equal
          rhs: {(DQ <'/tmp'>)}
          spids: [28]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:list_addr)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                <
'http://pgl.yoyo.org/adservers/serverlist.php?hostformat=nohtml&showintro=1&startdate%5Bday%5D=&startdate%5Bmonth%5D=&startdate%5Byear%5D='
                >
              )
            }
          spids: [33]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CAT)
          op: assign_op.Equal
          rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<which>} {<cat>}))}
          spids: [42]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ECHO)
          op: assign_op.Equal
          rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<which>} {<echo>}))}
          spids: [51]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WGET)
          op: assign_op.Equal
          rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<which>} {<wget>}))}
          spids: [60]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {($ Id.VSub_DollarName '$WGET')} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} {(DQ <'Wget not found. Exiting...'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [73 86]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {($ Id.VSub_DollarName '$WGET')} {<-O>} 
          {($ Id.VSub_DollarName '$work_dir') <'/yoyo_ad_servers'>} {(DQ ($ Id.VSub_DollarName '$list_addr'))}
        )
        (command.Pipeline
          children: [
            (C {($ Id.VSub_DollarName '$CAT')} 
              {($ Id.VSub_DollarName '$work_dir') <'/yoyo_ad_servers'>}
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [(command.Sentence child:(C {<read>} {<line>}) terminator:<Id.Op_Semi _>)]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Sentence
                      child: 
                        (C {($ Id.VSub_DollarName '$ECHO')} 
                          {
                            (DQ <'local-zone: '> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\"'>
                              ) ($ Id.VSub_DollarName '$line') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                              <' redirect'>
                            )
                          }
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (C {($ Id.VSub_DollarName '$ECHO')} 
                          {
                            (DQ <'local-data: '> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\"'>
                              ) ($ Id.VSub_DollarName '$line') <' A 127.0.0.1'> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\"'>
                              )
                            )
                          }
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$dst_dir') <'/unbound_ad_servers'>}
                )
              ]
            )
          ]
          negated: F
        )
      ]
    )
    (C {<echo>} {(DQ <Done.>)})
  ]
)