(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:KUBE_ROOT)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:55)
                command_list: 
                  (command.CommandList
                    children: [(C {(dirname)} {(DQ (${ Id.VSub_Name BASH_SOURCE))})]
                  )
              ) (/..)
            }
          spids: [54]
        )
      ]
    )
    (C {(source)} {(DQ (${ Id.VSub_Name KUBE_ROOT) (/cluster/skeleton/util.sh))})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.Unary
                      op_id: Id.BoolUnary_n
                      child: 
                        {
                          (DQ 
                            (braced_var_sub
                              token: 
                                (Token
                                  id: Id.VSub_Name
                                  val: KUBERNETES_CONFORMANCE_TEST
                                  span_id: 85
                                )
                              suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                            )
                          )
                        }
                    )
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:91)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:KUBERNETES_PROVIDER)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [96]
                )
              ]
            )
          ]
          spids: [77 93]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:KUBERNETES_PROVIDER)
              op: assign_op.Equal
              rhs: 
                {
                  (DQ 
                    (braced_var_sub
                      token: (Token id:Id.VSub_Name val:KUBERNETES_PROVIDER span_id:106)
                      suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(gce)})
                    )
                  )
                }
              spids: [103]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PROVIDER_VARS)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [127]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PROVIDER_UTILS)
          op: assign_op.Equal
          rhs: 
            {
              (DQ (${ Id.VSub_Name KUBE_ROOT) (/cluster/) (${ Id.VSub_Name KUBERNETES_PROVIDER) 
                (/util.sh)
              )
            }
          spids: [132]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-f)} {(${ Id.VSub_Name PROVIDER_UTILS)} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:155)
            )
          ]
          action: [(C {(source)} {(DQ (${ Id.VSub_Name PROVIDER_UTILS))})]
          spids: [144 157]
        )
      ]
    )
    (command.ShFunction
      name: kubeconfig-federation-context
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: Id.BoolUnary_z
                              child: 
                                {
                                  (DQ 
                                    (braced_var_sub
                                      token: (Token id:Id.VSub_Number val:1 span_id:210)
                                      suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty))
                                    )
                                  )
                                }
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:216)
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('zone parameter is required'))})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:228)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [202 218]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CLUSTER_CONTEXT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ (federation-e2e-) (${ Id.VSub_Name KUBERNETES_PROVIDER) (-) 
                        (${ Id.VSub_Number 1)
                      )
                    }
                  spids: [236]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: set-federation-zone-vars
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:zone)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [264]
                )
              ]
            )
            (C {(kubeconfig-federation-context)} {(DQ (${ Id.VSub_Name zone))})
            (C {(export)} {(Id.Lit_VarLike 'OVERRIDE_CONTEXT=') (DQ (${ Id.VSub_Name CLUSTER_CONTEXT))})
            (C {(echo)} {(DQ ('Setting zone vars to: ') ($ Id.VSub_DollarName '$OVERRIDE_CONTEXT'))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {(DQ ($ Id.VSub_DollarName '$KUBERNETES_PROVIDER'))}
                              right: {(DQ (gce))}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:312)
                    )
                  ]
                  action: [
                    (C {(export)} {(Id.Lit_VarLike 'CLUSTER_NAME=') (DQ (${ Id.VSub_Name zone))})
                    (C {(export)} {(Id.Lit_VarLike 'KUBE_GCE_ZONE=') (DQ (${ Id.VSub_Name zone))})
                    (C {(export)} 
                      {(Id.Lit_VarLike 'KUBE_GCE_INSTANCE_PREFIX=') 
                        (DQ (${ Id.VSub_Name USER) (-) (${ Id.VSub_Name zone))
                      }
                    )
                  ]
                  spids: [297 313]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {(DQ ($ Id.VSub_DollarName '$KUBERNETES_PROVIDER'))}
                              right: {(DQ (gke))}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:391)
                    )
                  ]
                  action: [
                    (C {(export)} 
                      {(Id.Lit_VarLike 'CLUSTER_NAME=') 
                        (DQ (${ Id.VSub_Name USER) (-) (${ Id.VSub_Name zone))
                      }
                    )
                  ]
                  spids: [376 392]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {(DQ ($ Id.VSub_DollarName '$KUBERNETES_PROVIDER'))}
                              right: {(DQ (aws))}
                            )
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:426)
                    )
                  ]
                  action: [
                    (C {(export)} 
                      {(Id.Lit_VarLike 'KUBE_AWS_ZONE=') (DQ ($ Id.VSub_DollarName '$zone'))}
                    )
                    (C {(export)} 
                      {(Id.Lit_VarLike 'KUBE_AWS_INSTANCE_PREFIX=') 
                        (DQ (${ Id.VSub_Name USER) (-) (${ Id.VSub_Name zone))
                      }
                    )
                    (C {(source)} {(DQ (${ Id.VSub_Name KUBE_ROOT) (/cluster/aws/util.sh))})
                  ]
                  spids: [411 427]
                )
              ]
              else_action: [
                (C {(echo)} 
                  {
                    (DQ ('Provider ') 
                      (word_part.EscapedLiteral
                        token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:491)
                      ) (${ Id.VSub_Name KUBERNETES_PROVIDER) 
                      (word_part.EscapedLiteral
                        token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:495)
                      ) (' is not supported')
                    )
                  }
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Exit val:exit span_id:500)
                  arg_word: {(1)}
                )
              ]
            )
          ]
        )
    )
  ]
)