(command.CommandList
  children: [
    (C {<Id.KW_Set set>} {<-e>})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<Id.Lit_LBracket '['>} 
          {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<id>} {<-u>}))} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>}
        )
        (BraceGroup
          children: [
            (command.Simple
              words: [{<printf>} {(SQ <'%s requires root\\n'>)} {(DQ ($ Id.VSub_Number '$0'))}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
        )
      ]
    )
    (command.ShFunction
      name: usage
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [
                {<printf>}
                {(SQ <'%s: [-r release] [-m mirror] [-s] [-c additional repository] [-a arch]\\n'>)}
                {(DQ ($ Id.VSub_Number '$0'))}
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
        )
    )
    (command.ShFunction
      name: tmp
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:TMP)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<mktemp>} {<-d>} 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name TMPDIR>
                                suffix_op: 
                                  (suffix_op.Unary
                                    op_id: Id.VTest_ColonHyphen
                                    arg_word: {<Id.Lit_Slash '/'> <var> <Id.Lit_Slash '/'> <tmp>}
                                  )
                              ) <'/alpine-docker-XXXXXXXXXX'>
                            }
                          )
                      )
                    }
                  spids: [84]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ROOTFS)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<mktemp>} {<-d>} 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name TMPDIR>
                                suffix_op: 
                                  (suffix_op.Unary
                                    op_id: Id.VTest_ColonHyphen
                                    arg_word: {<Id.Lit_Slash '/'> <var> <Id.Lit_Slash '/'> <tmp>}
                                  )
                              ) <'/alpine-docker-rootfs-XXXXXXXXXX'>
                            }
                          )
                      )
                    }
                  spids: [102]
                )
              ]
            )
            (C {<trap>} 
              {(DQ <'rm -rf '> ($ Id.VSub_DollarName '$TMP') <' '> ($ Id.VSub_DollarName '$ROOTFS'))} {<EXIT>} {<TERM>} {<INT>}
            )
          ]
        )
    )
    (command.ShFunction
      name: apkv
      body: 
        (BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {<curl>} {<-sSL>} 
                  {($ Id.VSub_DollarName '$MAINREPO') <'/'> ($ Id.VSub_DollarName '$ARCH') 
                    <'/APKINDEX.tar.gz'>
                  }
                )
                (C {<tar>} {<-Oxz>})
                (C {<grep>} {<--text>} {(SQ <'^P:apk-tools-static$'>)} {<-A1>})
                (C {<tail>} {<-n1>})
                (C {<cut>} {<-d> <Id.Lit_Colon ':'>} {<-f2>})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: getapk
      body: 
        (BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {<curl>} {<-sSL>} 
                  {($ Id.VSub_DollarName '$MAINREPO') <'/'> ($ Id.VSub_DollarName '$ARCH') 
                    <'/apk-tools-static-'> (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<apkv>})) <.apk>
                  }
                )
                (C {<tar>} {<-xz>} {<-C>} {($ Id.VSub_DollarName '$TMP')} {<'sbin/apk.static'>})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: mkbase
      body: 
        (BraceGroup
          children: [
            (C {($ Id.VSub_DollarName '$TMP') <'/sbin/apk.static'>} {<--repository>} 
              {($ Id.VSub_DollarName '$MAINREPO')} {<--update-cache>} {<--allow-untrusted>} {<--root>} {($ Id.VSub_DollarName '$ROOTFS')} {<--initdb>} {<add>} 
              {<alpine-base>}
            )
          ]
        )
    )
    (command.ShFunction
      name: conf
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<printf>} {(SQ <'%s\\n'>)} {($ Id.VSub_DollarName '$MAINREPO')}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$ROOTFS') <'/etc/apk/repositories'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<printf>} {(SQ <'%s\\n'>)} {($ Id.VSub_DollarName '$ADDITIONALREPO')}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$ROOTFS') <'/etc/apk/repositories'>}
                )
              ]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: pack
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<id>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:id)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<tar>} {<--numeric-owner>} {<-C>} {($ Id.VSub_DollarName '$ROOTFS')} 
                                {<-c>} {<.>}
                              )
                              (C {<docker>} {<import>} {<->} 
                                {<alpine> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$REL')}
                              )
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [309]
                )
              ]
            )
            (C {<docker>} {<tag>} {($ Id.VSub_DollarName '$id')} {<alpine> <Id.Lit_Colon ':'> <latest>})
            (C {<docker>} {<run>} {<-i>} {<-t>} {<--rm>} {<alpine>} {<printf>} 
              {(SQ <'alpine:%s with id=%s created!\\n'>)} {($ Id.VSub_DollarName '$REL')} {($ Id.VSub_DollarName '$id')}
            )
          ]
        )
    )
    (command.ShFunction
      name: save
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$SAVE')} {<-eq>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {<tar>} {<--numeric-owner>} {<-C>} {($ Id.VSub_DollarName '$ROOTFS')} {<-c>} {<.>})
                (command.Simple
                  words: [{<xz>}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<rootfs.tar.xz>}
                    )
                  ]
                  do_fork: T
                )
              ]
              negated: F
            )
          ]
        )
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: [
        (command.Sentence
          child: (C {<getopts>} {(DQ <'hr:m:sc:a:'>)} {<opt>})
          terminator: <Id.Op_Semi _>
        )
      ]
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {($ Id.VSub_DollarName '$opt')}
              arms: [
                (case_arm
                  pat_list: [{<r>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:REL)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$OPTARG')}
                          spids: [447]
                        )
                      ]
                    )
                  ]
                  spids: [443 444 451 -1]
                )
                (case_arm
                  pat_list: [{<m>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:MIRROR)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$OPTARG')}
                          spids: [458]
                        )
                      ]
                    )
                  ]
                  spids: [454 455 462 -1]
                )
                (case_arm
                  pat_list: [{<s>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SAVE)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [469]
                        )
                      ]
                    )
                  ]
                  spids: [465 466 473 -1]
                )
                (case_arm
                  pat_list: [{<c>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ADDITIONALREPO)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$OPTARG')}
                          spids: [480]
                        )
                      ]
                    )
                  ]
                  spids: [476 477 484 -1]
                )
                (case_arm
                  pat_list: [{<a>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ARCH)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$OPTARG')}
                          spids: [491]
                        )
                      ]
                    )
                  ]
                  spids: [487 488 495 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<usage>})]
                  spids: [498 499 505 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:REL)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name REL>
                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{<edge>})
              )
            }
          spids: [513]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MIRROR)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name MIRROR>
                suffix_op: 
                  (suffix_op.Unary
                    op_id: Id.VTest_ColonHyphen
                    arg_word: 
                      {<'http:'> <Id.Lit_Slash '/'> <Id.Lit_Slash '/'> <nl.alpinelinux.org> 
                        <Id.Lit_Slash '/'> <alpine>
                      }
                  )
              )
            }
          spids: [520]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SAVE)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name SAVE>
                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{<0>})
              )
            }
          spids: [532]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MAINREPO)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$MIRROR') <'/'> ($ Id.VSub_DollarName '$REL') <'/main'>}
          spids: [539]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ADDITIONALREPO)
          op: assign_op.Equal
          rhs: 
            {($ Id.VSub_DollarName '$MIRROR') <'/'> ($ Id.VSub_DollarName '$REL') <'/'> 
              (braced_var_sub
                token: <Id.VSub_Name ADDITIONALREPO>
                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{<community>})
              )
            }
          spids: [545]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ARCH)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name ARCH>
                suffix_op: 
                  (suffix_op.Unary
                    op_id: Id.VTest_ColonHyphen
                    arg_word: 
                      {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<uname>} {<-m>}))}
                  )
              )
            }
          spids: [556]
        )
      ]
    )
    (C {<tmp>})
    (C {<getapk>})
    (C {<mkbase>})
    (C {<conf>})
    (C {<pack>})
    (C {<save>})
  ]
)