(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:tid)
          op: Equal
          rhs: {(DQ ('connect with ssh.com client'))}
          spids: [7]
        )
      ]
      spids: [7]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ (X) (${ VSub_Name TEST_COMBASE))} {(Lit_Other '=')} {(DQ (X))} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(fatal)} {(SQ <'$TEST_COMBASE is not set'>)})]
          spids: [-1 36]
        )
      ]
      spids: [-1 45]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:VERSIONS)
          op: Equal
          rhs: 
            {
              (DQ ('\n') ('\t2.1.0\n') ('\t2.2.0\n') ('\t2.3.0\n') ('\t2.3.1\n') ('\t2.4.0\n') 
                ('\t3.0.0\n') ('\t3.1.0\n') ('\t3.2.0\n') ('\t3.2.2\n') ('\t3.2.3\n') ('\t3.2.5\n') ('\t3.2.9\n') ('\t3.2.9.1\n') 
                ('\t3.3.0')
              )
            }
          spids: [48]
        )
      ]
      spids: [48]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SRC)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(dirname)} {(${ VSub_Name SCRIPT)})])
                left_token: <Left_Backtick '`'>
                spids: [76 82]
              )
            }
          spids: [75]
        )
      ]
      spids: [75]
    )
    (C {(cp)} {(${ VSub_Name SRC) (/dsa_ssh2.prv)} {(${ VSub_Name OBJ) (/id.com)})
    (C {(chmod)} {(600)} {(${ VSub_Name OBJ) (/id.com)})
    (SimpleCommand
      words: [{(${ VSub_Name SSHKEYGEN)} {(-i)} {(-f)} {(${ VSub_Name OBJ) (/id.com)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/id.openssh)}
          spids: [118]
        )
      ]
    )
    (C {(chmod)} {(600)} {(${ VSub_Name OBJ) (/id.openssh)})
    (SimpleCommand
      words: [{(${ VSub_Name SSHKEYGEN)} {(-y)} {(-f)} {(${ VSub_Name OBJ) (/id.openssh)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/authorized_keys_) ($ VSub_Name '$USER')}
          spids: [145]
        )
      ]
    )
    (SimpleCommand
      words: [{(${ VSub_Name SSHKEYGEN)} {(-e)} {(-f)} {(${ VSub_Name OBJ) (/id.openssh)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/id.com.pub)}
          spids: [164]
        )
      ]
    )
    (SimpleCommand
      words: [{(echo)} {(IdKey)} {(${ VSub_Name OBJ) (/id.com)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(${ VSub_Name OBJ) (/id.list)} spids:[178])
      ]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:t) op:Equal rhs:{(dsa)} spids:[189])]
      spids: [189]
    )
    (C {(rm)} {(-f)} {(${ VSub_Name OBJ) (/) ($ VSub_Name '$t')} 
      {(${ VSub_Name OBJ) (/) ($ VSub_Name '$t') (.pub)}
    )
    (C {(${ VSub_Name SSHKEYGEN)} {(-q)} {(-N)} {(SQ )} {(-t)} {($ VSub_Name '$t')} {(-f)} 
      {(${ VSub_Name OBJ) (/) ($ VSub_Name '$t')}
    )
    (C {($ VSub_Name '$SUDO')} {(cp)} {($ VSub_Name '$OBJ') (/) ($ VSub_Name '$t')} 
      {($ VSub_Name '$OBJ') (/host.) ($ VSub_Name '$t')}
    )
    (SimpleCommand
      words: [{(echo)} {(HostKey)} {($ VSub_Name '$OBJ') (/host.) ($ VSub_Name '$t')}]
      redirects: [
        (Redir
          op_id: Redir_DGreat
          fd: -1
          arg_word: {($ VSub_Name '$OBJ') (/sshd_config)}
          spids: [252]
        )
      ]
    )
    (C {(mkdir)} {(-p)} {(${ VSub_Name OBJ) (/) (${ VSub_Name USER) (/hostkeys)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:HK)
          op: Equal
          rhs: 
            {(${ VSub_Name OBJ) (/) (${ VSub_Name USER) (/hostkeys/key_) (${ VSub_Name PORT) 
              (_127.0.0.1)
            }
          spids: [274]
        )
      ]
      spids: [274]
    )
    (SimpleCommand
      words: [{(${ VSub_Name SSHKEYGEN)} {(-e)} {(-f)} {(${ VSub_Name OBJ) (/rsa.pub)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: {(${ VSub_Name HK) (.ssh-rsa.pub)}
          spids: [301]
        )
      ]
    )
    (SimpleCommand
      words: [{(${ VSub_Name SSHKEYGEN)} {(-e)} {(-f)} {(${ VSub_Name OBJ) (/dsa.pub)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: {(${ VSub_Name HK) (.ssh-dss.pub)}
          spids: [321]
        )
      ]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: {(${ VSub_Name OBJ) (/ssh2_config)}
          spids: [331]
        )
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ('*:\n') ('\tQuietMode\t\t\tyes\n') ('\tStrictHostKeyChecking\t\tyes\n') 
                ('\tPort\t\t\t\t') (${ VSub_Name PORT) ('\n') ('\tUser\t\t\t\t') (${ VSub_Name USER) ('\n') ('\tHost\t\t\t\t127.0.0.1\n') 
                ('\tIdentityFile\t\t\t') (${ VSub_Name OBJ) ('/id.list\n') ('\tRandomSeedFile\t\t\t') (${ VSub_Name OBJ) ('/random_seed\n') 
                ('        UserConfigDirectory             ') (${ VSub_Name OBJ) ('/%U\n') ('\tAuthenticationSuccessMsg\tno\n') ('\tBatchMode\t\t\tyes\n') 
                ('\tForwardX11\t\t\tno\n')
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [338]
        )
      ]
    )
    (C {(start_sshd)})
    (ForEach
      iter_name: v
      iter_words: [{(${ VSub_Name VERSIONS)}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ssh2)
                  op: Equal
                  rhs: {(${ VSub_Name TEST_COMBASE) (/) (${ VSub_Name v) (/ssh2)}
                  spids: [399]
                )
              ]
              spids: [399]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-x)} {(${ VSub_Name ssh2)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                  spids: [-1 425]
                )
              ]
              spids: [-1 431]
            )
            (C {(verbose)} {(DQ ('ssh2 ') (${ VSub_Name v))})
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:key) op:Equal rhs:{(ssh-dss)} spids:[444])]
              spids: [444]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:skipcat) op:Equal rhs:{(0)} spids:[448])]
              spids: [448]
            )
            (Case
              to_match: {($ VSub_Name '$v')}
              arms: [
                (case_arm
                  pat_list: [{(2.1.) (Lit_Other '*')} {(2.3.0)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:skipcat) op:Equal rhs:{(1)} spids:[466])]
                      spids: [466]
                    )
                  ]
                  spids: [459 463 470 -1]
                )
                (case_arm
                  pat_list: [{(3.0.) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:key)
                          op: Equal
                          rhs: {(ssh-rsa)}
                          spids: [478]
                        )
                      ]
                      spids: [478]
                    )
                  ]
                  spids: [473 475 482 -1]
                )
              ]
              spids: [452 456 485]
            )
            (C {(cp)} {(${ VSub_Name HK) (.) ($ VSub_Name '$key') (.pub)} {(${ VSub_Name HK) (.pub)})
            (C {(${ VSub_Name ssh2)} {(-q)} {(-F)} {(${ VSub_Name OBJ) (/ssh2_config)} {(somehost)} 
              {(exit)} {(42)}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:r)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [528]
                )
              ]
              spids: [528]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Name '$r')} {(-ne)} {(42)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(fail)} 
                      {
                        (DQ ('ssh2 ') (${ VSub_Name v) (' exit code test failed (got ') 
                          ($ VSub_Name '$r') (', expected 42)')
                        )
                      }
                    )
                  ]
                  spids: [-1 545]
                )
              ]
              spids: [-1 561]
            )
            (C {(rm)} {(-f)} {(${ VSub_Name COPY)})
            (SimpleCommand
              words: [
                {(${ VSub_Name ssh2)}
                {(-F)}
                {(${ VSub_Name OBJ) (/ssh2_config)}
                {(somehost)}
                {(cat)}
                {(${ VSub_Name DATA)}
              ]
              redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(${ VSub_Name COPY)} spids:[597])]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-ne)} {(0)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(fail)} {(DQ ('ssh2 ') (${ VSub_Name v) (' cat test (receive) failed'))})]
                  spids: [-1 617]
                )
              ]
              spids: [-1 631]
            )
            (AndOr
              children: [
                (C {(cmp)} {(${ VSub_Name DATA)} {(${ VSub_Name COPY)})
                (C {(fail)} {(DQ ('ssh2 ') (${ VSub_Name v) (' cat test (receive) data mismatch'))})
              ]
              op_id: Op_DPipe
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Name '$skipcat')} {(-eq)} {(0)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(rm)} {(-f)} {(${ VSub_Name COPY)})
                    (Pipeline
                      children: [
                        (C {(cat)} {(${ VSub_Name DATA)})
                        (C {(${ VSub_Name ssh2)} {(-F)} {(${ VSub_Name OBJ) (/ssh2_config)} {(host)} 
                          {(DQ ('cat > ') (${ VSub_Name COPY))}
                        )
                      ]
                      negated: False
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-ne)} {(0)} {(Lit_Other ']')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(fail)} {(DQ ('ssh2 ') (${ VSub_Name v) (' cat test (send) failed'))})
                          ]
                          spids: [-1 731]
                        )
                      ]
                      spids: [-1 745]
                    )
                    (AndOr
                      children: [
                        (C {(cmp)} {(${ VSub_Name DATA)} {(${ VSub_Name COPY)})
                        (C {(fail)} {(DQ ('ssh2 ') (${ VSub_Name v) (' cat test (send) data mismatch'))})
                      ]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [-1 675]
                )
              ]
              spids: [-1 773]
            )
            (C {(rm)} {(-f)} {(${ VSub_Name COPY)})
            (SimpleCommand
              words: [
                {(${ VSub_Name ssh2)}
                {(-F)}
                {(${ VSub_Name OBJ) (/ssh2_config)}
                {(somehost)}
                {(exec)}
                {(sh)}
                {(-c)}
                {(EscapedLiteralPart token:<Lit_EscapedChar "\\'">) 
                  (DQ ('exec > /dev/null; sleep 1; echo bla 1>&2; exit 0')) (EscapedLiteralPart token:<Lit_EscapedChar "\\'">)
                }
              ]
              redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[819])]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-ne)} {(0)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(fail)} {(DQ ('ssh2 ') (${ VSub_Name v) (' stderr test failed'))})]
                  spids: [-1 837]
                )
              ]
              spids: [-1 851]
            )
          ]
          spids: [396 853]
        )
      spids: [390 394]
    )
    (C {(rm)} {(-rf)} {(${ VSub_Name OBJ) (/) (${ VSub_Name USER)})
    (ForEach
      iter_name: i
      iter_words: [
        {(ssh2_config)}
        {(random_seed)}
        {(dsa.pub)}
        {(dsa)}
        {(host.dsa)}
        {(id.list)}
        {(id.com)}
        {(id.com.pub)}
        {(id.openssh)}
      ]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [(C {(rm)} {(-f)} {(${ VSub_Name OBJ) (/) ($ VSub_Name '$i')})]
          spids: [895 908]
        )
      spids: [873 893]
    )
  ]
)