(command.CommandList
  children: [
    (C {<set>} {<-o>} {<errexit>})
    (C {<set>} {<-o>} {<nounset>})
    (C {<set>} {<-o>} {<pipefail>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:KUBE_ROOT)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: (C {<dirname>} {(DQ (${ Id.VSub_Name BASH_SOURCE))})
              ) <'/..'>
            }
          spids: [70]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OPENAPI_ROOT_DIR)
          op: assign_op.Equal
          rhs: {(DQ (${ Id.VSub_Name KUBE_ROOT) <'/federation/apis/openapi-spec'>)}
          spids: [82]
        )
      ]
    )
    (C {<source>} {(DQ (${ Id.VSub_Name KUBE_ROOT) <'/hack/lib/init.sh'>)})
    (C 
      {<kube> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <golang> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> 
        <setup_env>
      }
    )
    (C {<make>} {<-C>} {(DQ (${ Id.VSub_Name KUBE_ROOT))} 
      {<Id.Lit_VarLike 'WHAT='> (DQ <'cmd/hyperkube'>)}
    )
    (command.ShFunction
      name: cleanup
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DBracket
                  expr: 
                    (bool_expr.Unary
                      op_id: Id.BoolUnary_n
                      child: 
                        {
                          (DQ 
                            (braced_var_sub
                              token: <Id.VSub_Name APISERVER_PID>
                              suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:(word.Empty))
                            )
                          )
                        }
                    )
                )
                (command.Simple
                  words: [{<kill>} {(${ Id.VSub_Name APISERVER_PID)}]
                  redirects: [
                    (redir
                      op: <Id.Redir_GreatAnd '1>&'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<2>}
                    )
                    (redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
              ]
            )
            (C 
              {<kube> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <etcd> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> 
                <cleanup>
              }
            )
            (C 
              {<kube> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <log> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> 
                <status>
              } {(DQ <'Clean up complete'>)}
            )
          ]
        )
    )
    (C {<trap>} {<cleanup>} {<EXIT>} {<SIGINT>})
    (C 
      {<kube> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <golang> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> 
        <setup_env>
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TMP_DIR)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: (C {<mktemp>} {<-d>} {<'/tmp/update-federation-openapi-spec.XXXX'>})
              )
            }
          spids: [206]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ETCD_HOST)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name ETCD_HOST>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<127.0.0.1>})
              )
            }
          spids: [215]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ETCD_PORT)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name ETCD_PORT>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<2379>})
              )
            }
          spids: [222]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:API_PORT)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name API_PORT>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<8050>})
              )
            }
          spids: [229]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:API_HOST)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name API_HOST>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<127.0.0.1>})
              )
            }
          spids: [236]
        )
      ]
    )
    (C 
      {<kube> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <etcd> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <start>}
    )
    (command.Simple
      words: [{<echo>} {(DQ <'dummy_token,admin,admin'>)}]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$TMP_DIR') <'/tokenauth.csv'>}
        )
      ]
      do_fork: T
    )
    (C 
      {<kube> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <log> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <status>} {(DQ <'Starting federation-apiserver'>)}
    )
    (command.Sentence
      child: 
        (command.Simple
          words: [
            {(DQ (${ Id.VSub_Name KUBE_OUTPUT_HOSTBIN) <'/hyperkube'>)}
            {<federation-apiserver>}
            {<--insecure-bind-address> <Id.Lit_Equals '='> (DQ (${ Id.VSub_Name API_HOST))}
            {<--bind-address> <Id.Lit_Equals '='> (DQ (${ Id.VSub_Name API_HOST))}
            {<--insecure-port> <Id.Lit_Equals '='> (DQ (${ Id.VSub_Name API_PORT))}
            {<--etcd-servers> <Id.Lit_Equals '='> 
              (DQ <'http://'> (${ Id.VSub_Name ETCD_HOST) <':'> (${ Id.VSub_Name ETCD_PORT))
            }
            {<--advertise-address> <Id.Lit_Equals '='> (DQ <10.10.10.10>)}
            {<--cert-dir> <Id.Lit_Equals '='> (DQ (${ Id.VSub_Name TMP_DIR) <'/certs'>)}
            {<--token-auth-file> <Id.Lit_Equals '='> ($ Id.VSub_DollarName '$TMP_DIR') 
              <'/tokenauth.csv'>
            }
          ]
          redirects: [
            (redir
              op: <Id.Redir_Great '>'>
              loc: (redir_loc.Fd fd:1)
              arg: {<'/tmp/openapi-federation-api-server.log'>}
            )
            (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
          ]
          do_fork: T
        )
      terminator: <Id.Op_Amp _>
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:APISERVER_PID)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Bang '$!')}
          spids: [368]
        )
      ]
    )
    (C 
      {<kube> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <util> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> 
        <wait_for_url>
      } {(DQ (${ Id.VSub_Name API_HOST) <':'> (${ Id.VSub_Name API_PORT) <'/healthz'>)} {(DQ <'apiserver: '>)}
    )
    (C 
      {<kube> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <log> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <status>} {(DQ <'Updating '>)} {(${ Id.VSub_Name OPENAPI_ROOT_DIR)}
    )
    (command.Simple
      words: [
        {<curl>}
        {<-w>}
        {(DQ <Id.Lit_BadBackslash '\\'> <n>)}
        {<-fs>}
        {(DQ (${ Id.VSub_Name API_HOST) <':'> (${ Id.VSub_Name API_PORT) <'/swagger.json'>)}
      ]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {(DQ (${ Id.VSub_Name OPENAPI_ROOT_DIR) <'/swagger.json'>)}
        )
      ]
      do_fork: T
    )
    (C 
      {<kube> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <log> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <status>} {(DQ <SUCCESS>)}
    )
  ]
)