(command.CommandList
  children: [
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.Simple
                  words: [{(grep)} {(DQ ('CONFIG_PLATFORM_WIN32=y'))} {(DQ (../config/.config))}]
                  redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:JAVA_EXE)
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$JAVA_HOME') (/bin/java.exe))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PERL_BIN)
                  op: Equal
                  rhs: {(DQ (/cygdrive/c/Perl/bin/perl))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:KILL_AXSSL)
                  op: Equal
                  rhs: {(DQ ('kill %1'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:KILL_CSHARP)
                  op: Equal
                  rhs: {(DQ ('kill %1'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:KILL_PERL)
                  op: Equal
                  rhs: {(DQ ('kill %1'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:KILL_JAVA)
                  op: Equal
                  rhs: {(DQ ('kill %1'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:KILL_LUA) op:Equal rhs:{(DQ ('kill %1'))})]
            )
          ]
        )
      ]
      else_action: [
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: 
                    (command.Simple
                      words: [{(grep)} {(DQ ('CONFIG_PLATFORM_CYGWIN=y'))} {(DQ (../config/.config))}]
                      redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})]
                    )
                  terminator: <Op_Semi ';'>
                )
              ]
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:PERL_BIN)
                      op: Equal
                      rhs: {(/usr/bin/perl)}
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:KILL_AXSSL)
                      op: Equal
                      rhs: {(DQ ('killall axssl'))}
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:KILL_PERL)
                      op: Equal
                      rhs: {(DQ ('killall /usr/bin/perl'))}
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:KILL_LUA)
                      op: Equal
                      rhs: {(DQ ('killall /usr/local/bin/lua'))}
                    )
                  ]
                )
              ]
            )
          ]
          else_action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:JAVA_EXE)
                  op: Equal
                  rhs: {(/usr/java/default/bin/java)}
                )
              ]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:PERL_BIN) op:Equal rhs:{(/usr/bin/perl)})]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:KILL_AXSSL)
                  op: Equal
                  rhs: {(DQ ('killall axssl'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:KILL_CSHARP)
                  op: Equal
                  rhs: {(DQ ('killall mono'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:KILL_PERL)
                  op: Equal
                  rhs: {(DQ ('killall /usr/bin/perl'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:RUN_CSHARP) op:Equal rhs:{(DQ (mono))})]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:KILL_JAVA)
                  op: Equal
                  rhs: {(DQ ('killall ') ($ VSub_DollarName '$JAVA_EXE'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:KILL_LUA)
                  op: Equal
                  rhs: {(DQ ('killall /usr/local/bin/lua'))}
                )
              ]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:BASE) op:Equal rhs:{(..)})]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SERVER_ARGS)
          op: Equal
          rhs: 
            {
              (DQ ('s_server -accept 15001 -verify -CAfile ') ($ VSub_DollarName '$BASE') 
                (/ssl/test/axTLS.ca_x509.cer)
              )
            }
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CLIENT_ARGS)
          op: Equal
          rhs: 
            {
              (DQ ('s_client -reconnect -connect localhost:15001 -verify -CAfile ') 
                ($ VSub_DollarName '$BASE') ('/ssl/test/axTLS.ca_x509.cer -key ') ($ VSub_DollarName '$BASE') ('/ssl/test/axTLS.key_1024 -cert ') 
                ($ VSub_DollarName '$BASE') (/ssl/test/axTLS.x509_1024.cer)
              )
            }
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SERVER_PEM_ARGS)
          op: Equal
          rhs: 
            {
              (DQ ('s_server -accept 15001 -pass abcd -key ') ($ VSub_DollarName '$BASE') 
                ('/ssl/test/axTLS.key_aes128.pem -cert ') ($ VSub_DollarName '$BASE') (/ssl/test/axTLS.x509_aes128.pem)
              )
            }
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CLIENT_PEM_ARGS)
          op: Equal
          rhs: 
            {
              (DQ ('s_client -connect localhost:15001 -CAfile ') ($ VSub_DollarName '$BASE') 
                ('/ssl/test/axTLS.ca_x509.pem -key ') ($ VSub_DollarName '$BASE') ('/ssl/test/axTLS.key_1024.pem -cert ') ($ VSub_DollarName '$BASE') 
                (/ssl/test/axTLS.x509_1024.pem)
              )
            }
        )
      ]
    )
    (C {(export)} 
      {(Lit_VarLike 'LD_LIBRARY_PATH=') (.) (Lit_Other ':') 
        (command_sub
          left_token: <Left_Backtick '`'>
          command_list: 
            (command.CommandList
              children: [(C {(perl)} {(-e)} {(SQ <'use Config; print $Config{archlib};'>)})]
            )
        ) (/CORE)
      }
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(Lit_LBracket '[')} {(-x)} {(./axssl)} {(Lit_RBracket ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('############################# C SAMPLE ###########################'))})
            (command.Sentence
              child: (C {(./axssl)} {($ VSub_DollarName '$SERVER_ARGS')})
              terminator: <Op_Amp '&'>
            )
            (command.Pipeline
              children: [
                (C {(echo)} {(DQ ('C Test passed'))})
                (C {(./axssl)} {($ VSub_DollarName '$CLIENT_ARGS')})
              ]
              negated: F
            )
            (C {($ VSub_DollarName '$KILL_AXSSL')})
            (C {(sleep)} {(1)})
            (command.Sentence
              child: (C {(./axssl)} {($ VSub_DollarName '$SERVER_PEM_ARGS')})
              terminator: <Op_Amp '&'>
            )
            (command.Pipeline
              children: [
                (C {(echo)} {(DQ ('C Test passed'))})
                (C {(./axssl)} {($ VSub_DollarName '$CLIENT_PEM_ARGS')})
              ]
              negated: F
            )
            (C {($ VSub_DollarName '$KILL_AXSSL')})
            (C {(sleep)} {(1)})
            (C {(echo)} {(DQ ('### C tests complete'))})
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(Lit_LBracket '[')} {(-f)} {(./axtls.jar)} {(Lit_RBracket ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('########################## JAVA SAMPLE ###########################'))})
            (command.Sentence
              child: 
                (C {(DQ ($ VSub_DollarName '$JAVA_EXE'))} {(-jar)} {(./axtls.jar)} 
                  {($ VSub_DollarName '$SERVER_ARGS')}
                )
              terminator: <Op_Amp '&'>
            )
            (command.Pipeline
              children: [
                (C {(echo)} {(DQ ('Java Test passed'))})
                (C {(DQ ($ VSub_DollarName '$JAVA_EXE'))} {(-jar)} {(./axtls.jar)} 
                  {($ VSub_DollarName '$CLIENT_ARGS')}
                )
              ]
              negated: F
            )
            (C {($ VSub_DollarName '$KILL_JAVA')})
            (C {(sleep)} {(1)})
            (command.Sentence
              child: 
                (C {(DQ ($ VSub_DollarName '$JAVA_EXE'))} {(-jar)} {(./axtls.jar)} 
                  {($ VSub_DollarName '$SERVER_PEM_ARGS')}
                )
              terminator: <Op_Amp '&'>
            )
            (command.Pipeline
              children: [
                (C {(echo)} {(DQ ('Java Test passed'))})
                (C {(DQ ($ VSub_DollarName '$JAVA_EXE'))} {(-jar)} {(./axtls.jar)} 
                  {($ VSub_DollarName '$CLIENT_PEM_ARGS')}
                )
              ]
              negated: F
            )
            (C {($ VSub_DollarName '$KILL_JAVA')})
            (C {(sleep)} {(1)})
            (C {(echo)} {(DQ ('### Java tests complete'))})
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(Lit_LBracket '[')} {(-x)} {(./axssl.csharp.exe)} {(Lit_RBracket ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('############################ C# SAMPLE ###########################'))})
            (command.Sentence
              child: 
                (C {($ VSub_DollarName '$RUN_CSHARP')} {(./axssl.csharp.exe)} 
                  {($ VSub_DollarName '$SERVER_ARGS')}
                )
              terminator: <Op_Amp '&'>
            )
            (command.Pipeline
              children: [
                (C {(echo)} {(DQ ('C# Test passed'))})
                (C {($ VSub_DollarName '$RUN_CSHARP')} {(./axssl.csharp.exe)} 
                  {($ VSub_DollarName '$CLIENT_ARGS')}
                )
              ]
              negated: F
            )
            (C {($ VSub_DollarName '$KILL_CSHARP')})
            (C {(sleep)} {(1)})
            (command.Sentence
              child: 
                (C {($ VSub_DollarName '$RUN_CSHARP')} {(./axssl.csharp.exe)} 
                  {($ VSub_DollarName '$SERVER_PEM_ARGS')}
                )
              terminator: <Op_Amp '&'>
            )
            (command.Pipeline
              children: [
                (C {(echo)} {(DQ ('C# Test passed'))})
                (C {($ VSub_DollarName '$RUN_CSHARP')} {(./axssl.csharp.exe)} 
                  {($ VSub_DollarName '$CLIENT_PEM_ARGS')}
                )
              ]
              negated: F
            )
            (C {($ VSub_DollarName '$KILL_CSHARP')})
            (C {(sleep)} {(1)})
            (C {(echo)} {(DQ ('### C# tests complete'))})
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(Lit_LBracket '[')} {(-x)} {(./axssl.vbnet.exe)} {(Lit_RBracket ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('######################## VB.NET SAMPLE ###########################'))})
            (C {(echo)} {($ VSub_DollarName '$SERVER_ARGS')})
            (C {(echo)} {($ VSub_DollarName '$CLIENT_ARGS')})
            (command.Sentence
              child: (C {(./axssl.vbnet)} {($ VSub_DollarName '$SERVER_ARGS')})
              terminator: <Op_Amp '&'>
            )
            (command.Pipeline
              children: [
                (C {(echo)} {(DQ ('VB.NET Test passed'))})
                (C {(./axssl.vbnet.exe)} {($ VSub_DollarName '$CLIENT_ARGS')})
              ]
              negated: F
            )
            (C {(kill)} {(Lit_Other '%') (1)})
            (C {(sleep)} {(1)})
            (command.Sentence
              child: (C {(./axssl.vbnet)} {($ VSub_DollarName '$SERVER_PEM_ARGS')})
              terminator: <Op_Amp '&'>
            )
            (command.Pipeline
              children: [
                (C {(echo)} {(DQ ('VB.NET Test passed'))})
                (C {(./axssl.vbnet.exe)} {($ VSub_DollarName '$CLIENT_PEM_ARGS')})
              ]
              negated: F
            )
            (C {(kill)} {(Lit_Other '%') (1)})
            (C {(sleep)} {(1)})
            (C {(echo)} {(DQ ('### VB.NET tests complete'))})
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(Lit_LBracket '[')} {(-f)} {(./axssl.pl)} {(Lit_RBracket ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('########################## PERL SAMPLE ###########################'))})
            (command.Sentence
              child: 
                (C {(DQ ($ VSub_DollarName '$PERL_BIN'))} {(./axssl.pl)} 
                  {($ VSub_DollarName '$SERVER_ARGS')}
                )
              terminator: <Op_Amp '&'>
            )
            (command.Pipeline
              children: [
                (C {(echo)} {(DQ ('Perl Test passed'))})
                (C {(DQ ($ VSub_DollarName '$PERL_BIN'))} {(./axssl.pl)} 
                  {($ VSub_DollarName '$CLIENT_ARGS')}
                )
              ]
              negated: F
            )
            (C {($ VSub_DollarName '$KILL_PERL')})
            (C {(sleep)} {(1)})
            (command.Sentence
              child: 
                (C {(DQ ($ VSub_DollarName '$PERL_BIN'))} {(./axssl.pl)} 
                  {($ VSub_DollarName '$SERVER_PEM_ARGS')}
                )
              terminator: <Op_Amp '&'>
            )
            (command.Pipeline
              children: [
                (C {(echo)} {(DQ ('Perl Test passed'))})
                (C {(DQ ($ VSub_DollarName '$PERL_BIN'))} {(./axssl.pl)} 
                  {($ VSub_DollarName '$CLIENT_PEM_ARGS')}
                )
              ]
              negated: F
            )
            (C {($ VSub_DollarName '$KILL_PERL')})
            (C {(sleep)} {(1)})
            (C {(echo)} {(DQ ('### Perl tests complete'))})
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(Lit_LBracket '[')} {(-f)} {(./axssl.lua)} {(Lit_RBracket ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('########################## LUA SAMPLE ###########################'))})
            (command.Sentence
              child: (C {(./axssl.lua)} {($ VSub_DollarName '$SERVER_ARGS')})
              terminator: <Op_Amp '&'>
            )
            (command.Pipeline
              children: [
                (C {(echo)} {(DQ ('Lua Test passed'))})
                (C {(./axssl.lua)} {($ VSub_DollarName '$CLIENT_ARGS')})
              ]
              negated: F
            )
            (C {($ VSub_DollarName '$KILL_LUA')})
            (C {(sleep)} {(1)})
            (command.Sentence
              child: (C {(./axssl.lua)} {($ VSub_DollarName '$SERVER_PEM_ARGS')})
              terminator: <Op_Amp '&'>
            )
            (command.Pipeline
              children: [
                (C {(echo)} {(DQ ('Lua Test passed'))})
                (C {(./axssl.lua)} {($ VSub_DollarName '$CLIENT_PEM_ARGS')})
              ]
              negated: F
            )
            (C {($ VSub_DollarName '$KILL_LUA')})
            (C {(sleep)} {(1)})
            (C {(echo)} {(DQ ('### Lua tests complete'))})
          ]
        )
      ]
    )
    (C {(echo)} {(DQ ('########################## ALL TESTS COMPLETE ###########################'))})
  ]
)