(CommandList
  children: [
    (Sentence child:(C {(set)} {(-eo)} {(pipefail)}) terminator:<Op_Semi ';'>)
    (AndOr
      children: [(DBracket expr:(WordTest w:{($ VSub_Name '$DOKKU_TRACE')})) (C {(set)} {(-x)})]
      op_id: Op_DAmp
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:MOVES)
          op: Equal
          rhs: 
            {
              (ArrayLiteralPart
                words: [
                  {(ABLE)}
                  {(ABNORMA)}
                  {(AGAIN)}
                  {(AIREXPL)}
                  {(ANG)}
                  {(ANGER)}
                  {(ASAIL)}
                  {(ATTACK)}
                  {(AURORA)}
                  {(AWL)}
                  {(BAN)}
                  {(BAND)}
                  {(BARE)}
                  {(BEAT)}
                  {(BEATED)}
                  {(BELLY)}
                  {(BIND)}
                  {(BITE)}
                  {(BLOC)}
                  {(BLOOD)}
                  {(BODY)}
                  {(BOOK)}
                  {(BREATH)}
                  {(BUMP)}
                  {(CAST)}
                  {(CHAM)}
                  {(CLAMP)}
                  {(CLAP)}
                  {(CLAW)}
                  {(CLEAR)}
                  {(CLI)}
                  {(CLIP)}
                  {(CLOUD)}
                  {(CONTRO)}
                  {(CONVY)}
                  {(COOLHIT)}
                  {(CRASH)}
                  {(CRY)}
                  {(CUT)}
                  {(DESCRI)}
                  {(D-FIGHT)}
                  {(DIG)}
                  {(DITCH)}
                  {(DIV)}
                  {(DOZ)}
                  {(DRE)}
                  {(DUL)}
                  {(DU-PIN)}
                  {(DYE)}
                  {(EARTH)}
                  {(EDU)}
                  {(EG-BOMB)}
                  {(EGG)}
                  {(ELEGY)}
                  {(ELE-HIT)}
                  {(EMBODY)}
                  {(EMPLI)}
                  {(ENGL)}
                  {(ERUPT)}
                  {(EVENS)}
                  {(EXPLOR)}
                  {(EYES)}
                  {(FALL)}
                  {(FAST)}
                  {(F-CAR)}
                  {(F-DANCE)}
                  {(FEARS)}
                  {(F-FIGHT)}
                  {(FIGHT)}
                  {(FIR)}
                  {(FIRE)}
                  {(FIREHIT)}
                  {(FLAME)}
                  {(FLAP)}
                  {(FLASH)}
                  {(FLEW)}
                  {(FORCE)}
                  {(FRA)}
                  {(FREEZE)}
                  {(FROG)}
                  {(G-BIRD)}
                  {(GENKISS)}
                  {(GIFT)}
                  {(G-KISS)}
                  {(G-MOUSE)}
                  {(GRADE)}
                  {(GROW)}
                  {(HAMMER)}
                  {(HARD)}
                  {(HAT)}
                  {(HATE)}
                  {(H-BOMB)}
                  {(HELL-R)}
                  {(HEMP)}
                  {(HINT)}
                  {(HIT)}
                  {(HU)}
                  {(HUNT)}
                  {(HYPNOSI)}
                  {(INHA)}
                  {(IRO)}
                  {(IRONBAR)}
                  {(IR-WING)}
                  {(J-GUN)}
                  {(KEE)}
                  {(KICK)}
                  {(KNIF)}
                  {(KNIFE)}
                  {(KNOCK)}
                  {(LEVEL)}
                  {(LIGH)}
                  {(LIGHHIT)}
                  {(LIGHT)}
                  {(LIVE)}
                  {(L-WALL)}
                  {(MAD)}
                  {(MAJUS)}
                  {(MEL)}
                  {(MELO)}
                  {(MESS)}
                  {(MILK)}
                  {(MIMI)}
                  {(MISS)}
                  {(MIXING)}
                  {(MOVE)}
                  {(MUD)}
                  {(NI-BED)}
                  {(NOISY)}
                  {(NOONLI)}
                  {(NULL)}
                  {(N-WAVE)}
                  {(PAT)}
                  {(PEACE)}
                  {(PIN)}
                  {(PLAN)}
                  {(PLANE)}
                  {(POIS)}
                  {(POL)}
                  {(POWDE)}
                  {(POWE)}
                  {(POWER)}
                  {(PRIZE)}
                  {(PROTECT)}
                  {(PROUD)}
                  {(RAGE)}
                  {(RECOR)}
                  {(REFLAC)}
                  {(REFREC)}
                  {(REGR)}
                  {(RELIV)}
                  {(RENEW)}
                  {(R-FIGHT)}
                  {(RING)}
                  {(RKICK)}
                  {(ROCK)}
                  {(ROUND)}
                  {(RUS)}
                  {(RUSH)}
                  {(SAND)}
                  {(SAW)}
                  {(SCISSOR)}
                  {(SCRA)}
                  {(SCRIPT)}
                  {(SEEN)}
                  {(SERVER)}
                  {(SHADOW)}
                  {(SHELL)}
                  {(SHINE)}
                  {(SHO)}
                  {(SIGHT)}
                  {(SIN)}
                  {(SMALL)}
                  {(SMELT)}
                  {(SMOK)}
                  {(SNAKE)}
                  {(SNO)}
                  {(SNOW)}
                  {(SOU)}
                  {(SO-WAVE)}
                  {(SPAR)}
                  {(SPEC)}
                  {(SPID)}
                  {(S-PIN)}
                  {(SPRA)}
                  {(STAM)}
                  {(STARE)}
                  {(STEA)}
                  {(STONE)}
                  {(STORM)}
                  {(STRU)}
                  {(STRUG)}
                  {(STUDEN)}
                  {(SUBS)}
                  {(SUCID)}
                  {(SUN-LIG)}
                  {(SUNRIS)}
                  {(SUPLY)}
                  {(S-WAVE)}
                  {(TAILS)}
                  {(TANGL)}
                  {(TASTE)}
                  {(TELLI)}
                  {(THANK)}
                  {(TONKICK)}
                  {(TOOTH)}
                  {(TORL)}
                  {(TRAIN)}
                  {(TRIKICK)}
                  {(TUNGE)}
                  {(VOLT)}
                  {(WA-GUN)}
                  {(WATCH)}
                  {(WAVE)}
                  {(W-BOMB)}
                  {(WFALL)}
                  {(WFING)}
                  {(WHIP)}
                  {(WHIRL)}
                  {(WIND)}
                  {(WOLF)}
                  {(WOOD)}
                  {(WOR)}
                  {(YUJA)}
                ]
              )
            }
          spids: [23]
        )
      ]
      spids: [23]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:NAMES)
          op: Equal
          rhs: 
            {
              (ArrayLiteralPart
                words: [
                  {(SEED)}
                  {(GRASS)}
                  {(FLOWE)}
                  {(SHAD)}
                  {(CABR)}
                  {(SNAKE)}
                  {(GOLD)}
                  {(COW)}
                  {(GUIKI)}
                  {(PEDAL)}
                  {(DELAN)}
                  {(B-FLY)}
                  {(BIDE)}
                  {(KEYU)}
                  {(FORK)}
                  {(LAP)}
                  {(PIGE)}
                  {(PIJIA)}
                  {(CAML)}
                  {(LAT)}
                  {(BIRD)}
                  {(BABOO)}
                  {(VIV)}
                  {(ABOKE)}
                  {(PIKAQ)}
                  {(RYE)}
                  {(SAN)}
                  {(BREAD)}
                  {(LIDEL)}
                  {(LIDE)}
                  {(PIP)}
                  {(PIKEX)}
                  {(ROK)}
                  {(JUGEN)}
                  {(PUD)}
                  {(BUDE)}
                  {(ZHIB)}
                  {(GELU)}
                  {(GRAS)}
                  {(FLOW)}
                  {(LAFUL)}
                  {(ATH)}
                  {(BALA)}
                  {(CORN)}
                  {(MOLUF)}
                  {(DESP)}
                  {(DAKED)}
                  {(MIMI)}
                  {(BOLUX)}
                  {(KODA)}
                  {(GELUD)}
                  {(MONK)}
                  {(SUMOY)}
                  {(GEDI)}
                  {(WENDI)}
                  {(NILEM)}
                  {(NILE)}
                  {(NILEC)}
                  {(KEZI)}
                  {(YONGL)}
                  {(HUDE)}
                  {(WANLI)}
                  {(GELI)}
                  {(GUAIL)}
                  {(MADAQ)}
                  {(WUCI)}
                  {(WUCI)}
                  {(MUJEF)}
                  {(JELLY)}
                  {(SICIB)}
                  {(GELU)}
                  {(NELUO)}
                  {(BOLI)}
                  {(JIALE)}
                  {(YED)}
                  {(YEDE)}
                  {(CLO)}
                  {(SCARE)}
                  {(AOCO)}
                  {(DEDE)}
                  {(DEDEI)}
                  {(BAWU)}
                  {(JIUG)}
                  {(BADEB)}
                  {(BADEB)}
                  {(HOLE)}
                  {(BALUX)}
                  {(GES)}
                  {(FANT)}
                  {(QUAR)}
                  {(YIHE)}
                  {(SWAB)}
                  {(SLIPP)}
                  {(CLU)}
                  {(DEPOS)}
                  {(BILIY)}
                  {(YUANO)}
                  {(SOME)}
                  {(NO)}
                  {(YELA)}
                  {(EMPT)}
                  {(ZECUN)}
                  {(XIAHE)}
                  {(BOLEL)}
                  {(DEJI)}
                  {(MACID)}
                  {(XIHON)}
                  {(XITO)}
                  {(LUCK)}
                  {(MENJI)}
                  {(GELU)}
                  {(DECI)}
                  {(XIDE)}
                  {(DASAJ)}
                  {(DONGN)}
                  {(RICUL)}
                  {(MINXI)}
                  {(BALIY)}
                  {(ZENDA)}
                  {(LUZEL)}
                  {(HELE5)}
                  {(0FENB)}
                  {(KAIL)}
                  {(JIAND)}
                  {(CARP)}
                  {(JINDE)}
                  {(LAPU)}
                  {(MUDE)}
                  {(YIFU)}
                  {(LINLI)}
                  {(SANDI)}
                  {(HUSI)}
                  {(JINC)}
                  {(OUMU)}
                  {(OUMUX)}
                  {(CAP)}
                  {(KUIZA)}
                  {(PUD)}
                  {(TIAO)}
                  {(FRMAN)}
                  {(CLAU)}
                  {(SPARK)}
                  {(DRAGO)}
                  {(BOLIU)}
                  {(GUAIL)}
                  {(MIYOU)}
                  {(MIY)}
                  {(QIAOK)}
                  {(BEIL)}
                  {(MUKEI)}
                  {(RIDED)}
                  {(MADAM)}
                  {(BAGEP)}
                  {(CROC)}
                  {(ALIGE)}
                  {(OUDAL)}
                  {(OUD)}
                  {(DADA)}
                  {(HEHE)}
                  {(YEDEA)}
                  {(NUXI)}
                  {(NUXIN)}
                  {(ROUY)}
                  {(ALIAD)}
                  {(STICK)}
                  {(QIANG)}
                  {(LAAND)}
                  {(PIQI)}
                  {(PI)}
                  {(PUPI)}
                  {(DEKE)}
                  {(DEKEJ)}
                  {(NADI)}
                  {(NADIO)}
                  {(MALI)}
                  {(PEA)}
                  {(ELECT)}
                  {(FLOWE)}
                  {(MAL)}
                  {(MALI)}
                  {(HUSHU)}
                  {(NILEE)}
                  {(YUZI)}
                  {(POPOZ)}
                  {(DUZI)}
                  {(HEBA)}
                  {(XIAN)}
                  {(SHAN)}
                  {(YEYEA)}
                  {(WUY)}
                  {(LUO)}
                  {(KEFE)}
                  {(HULA)}
                  {(CROW)}
                  {(YADEH)}
                  {(MOW)}
                  {(ANNAN)}
                  {(SUONI)}
                  {(KYLI)}
                  {(HULU)}
                  {(HUDEL)}
                  {(YEHE)}
                  {(GULAE)}
                  {(YEHE)}
                  {(BLU)}
                  {(GELAN)}
                  {(BOAT)}
                  {(NIP)}
                  {(POIT)}
                  {(HELAK)}
                  {(XINL)}
                  {(BEAR)}
                  {(LINB)}
                  {(MAGEH)}
                  {(MAGEJ)}
                  {(WULI)}
                  {(YIDE)}
                  {(RIVE)}
                  {(FISH)}
                  {(AOGU)}
                  {(DELIE)}
                  {(MANTE)}
                  {(KONMU)}
                  {(DELU)}
                  {(HELU)}
                  {(HUAN)}
                  {(HUMA)}
                  {(DONGF)}
                  {(JINCA)}
                  {(HEDE)}
                  {(DEFU)}
                  {(LIBY)}
                  {(JIAPA)}
                  {(MEJI)}
                  {(HELE)}
                  {(BUHU)}
                  {(MILK)}
                  {(HABI)}
                  {(THUN)}
                  {(GARD)}
                  {(DON)}
                  {(YANGQ)}
                  {(SANAQ)}
                  {(BANQ)}
                  {(LUJ)}
                  {(PHIX)}
                  {(SIEI)}
                  {(EGG)}
                ]
              )
            }
          spids: [472]
        )
      ]
      spids: [472]
    )
    (FuncDef
      name: random_number
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_n child:{(DQ ($ VSub_Number '$1'))})
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:RANGE)
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$1'))}
                      spids: [991]
                    )
                  ]
                  spids: [991]
                )
              ]
              op_id: Op_DAmp
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_n child:{(DQ ($ VSub_Name '$RANGE'))})
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:number)
                          op: Equal
                          rhs: {($ VSub_Name '$RANDOM')}
                          spids: [1013]
                        )
                      ]
                      spids: [1013]
                    )
                    (C {(let)} {(DQ ('number %= ') ($ VSub_Name '$RANGE'))})
                  ]
                  spids: [16777215 1010]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:number)
                      op: Equal
                      rhs: {($ VSub_Name '$RANDOM')}
                      spids: [1028]
                    )
                  ]
                  spids: [1028]
                )
              ]
              spids: [1025 1032]
            )
            (C {(echo)} {($ VSub_Name '$number')})
          ]
          spids: [976]
        )
      spids: [972 975]
    )
    (FuncDef
      name: random_name
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:NUM1)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(random_number)} 
                                {
                                  (BracedVarSub
                                    token: <VSub_Name MOVES>
                                    prefix_op: VSub_Pound
                                    bracket_op: (WholeArray op_id:Lit_At)
                                    spids: [1053 1059]
                                  )
                                }
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [1050 1060]
                      )
                    }
                  spids: [1049]
                )
              ]
              spids: [1049]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:NUM2)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(random_number)} 
                                {
                                  (BracedVarSub
                                    token: <VSub_Name MOVES>
                                    prefix_op: VSub_Pound
                                    bracket_op: (WholeArray op_id:Lit_At)
                                    spids: [1067 1073]
                                  )
                                }
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [1064 1074]
                      )
                    }
                  spids: [1063]
                )
              ]
              spids: [1063]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:NUM3)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(random_number)} 
                                {
                                  (BracedVarSub
                                    token: <VSub_Name NAMES>
                                    prefix_op: VSub_Pound
                                    bracket_op: (WholeArray op_id:Lit_At)
                                    spids: [1081 1087]
                                  )
                                }
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [1078 1088]
                      )
                    }
                  spids: [1077]
                )
              ]
              spids: [1077]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:UPPER_APPNAME)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (BracedVarSub
                          token: <VSub_Name MOVES>
                          bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name NUM1)}))
                          spids: [1094 1101]
                        ) (-) 
                        (BracedVarSub
                          token: <VSub_Name MOVES>
                          bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name NUM2)}))
                          spids: [1103 1110]
                        ) (-) 
                        (BracedVarSub
                          token: <VSub_Name NAMES>
                          bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name NUM3)}))
                          spids: [1112 1119]
                        )
                      )
                    }
                  spids: [1092]
                )
              ]
              spids: [1092]
            )
            (AndOr
              children: [
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_EqualTilde
                      left: {(DQ ($ VSub_Name '$BASH_VERSION'))}
                      right: {(4.) (Lit_Other '*')}
                    )
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:lower_appname)
                      op: Equal
                      rhs: 
                        {
                          (BracedVarSub
                            token: <VSub_Name UPPER_APPNAME>
                            suffix_op: (StringUnary op_id:VOp1_DComma arg_word:{})
                            spids: [1140 1143]
                          )
                        }
                      spids: [1139]
                    )
                  ]
                  spids: [1139]
                )
              ]
              op_id: Op_DAmp
            )
            (AndOr
              children: [
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_z child:{(DQ ($ VSub_Name '$lower_appname'))})
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:lower_appname)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Pipeline
                                    children: [
                                      (C {(echo)} {(DQ ($ VSub_Name '$UPPER_APPNAME'))})
                                      (C {(tr)} {(SQ <'[:upper:]'>)} {(SQ <'[:lower:]'>)})
                                    ]
                                    negated: False
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [1159 1177]
                          )
                        }
                      spids: [1158]
                    )
                  ]
                  spids: [1158]
                )
              ]
              op_id: Op_DAmp
            )
            (C {(echo)} {(DQ ($ VSub_Name '$lower_appname'))})
          ]
          spids: [1046]
        )
      spids: [1042 1045]
    )
    (FuncDef
      name: client_help_msg
      body: 
        (BraceGroup
          children: [
            (C {(echo)} 
              {
                (DQ ('==> Configure the DOKKU_HOST environment variable or run ') ($ VSub_Number '$0') 
                  (' from a repository with a git remote named dokku')
                )
              }
            )
            (C {(echo)} {(DQ ('--> i.e. git remote add dokku dokku@<dokku-host>:<app-name>'))})
            (C {(exit)} {(20)})
          ]
          spids: [1193]
        )
      spids: [1189 1192]
    )
    (FuncDef
      name: is_git_repo
      body: 
        (BraceGroup
          children: [
            (Sentence child:(C {(git)} {(rev-parse)}) terminator:<Op_Amp '&'>)
            (SimpleCommand
              redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(/dev/null)} spids:[1234])]
            )
          ]
          spids: [1226]
        )
      spids: [1222 1225]
    )
    (FuncDef
      name: has_dokku_remote
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [(C {(git)} {(remote)} {(show)}) (C {(grep)} {(dokku)})]
              negated: False
            )
          ]
          spids: [1244]
        )
      spids: [1240 1243]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (DBracket expr:(BoolUnary op_id:BoolUnary_z child:{($ VSub_Name '$DOKKU_HOST')}))
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          children: [
                            (DBracket
                              expr: (BoolUnary op_id:BoolUnary_d child:{(.git)})
                            )
                            (SimpleCommand
                              words: [{(git)} {(rev-parse)} {(--git-dir)}]
                              redirects: [
                                (Redir
                                  op_id: Redir_Great
                                  fd: 16777215
                                  arg_word: {(/dev/null)}
                                  spids: [1294]
                                )
                                (Redir
                                  op_id: Redir_GreatAnd
                                  fd: 2
                                  arg_word: {(1)}
                                  spids: [1298]
                                )
                              ]
                            )
                          ]
                          op_id: Op_DPipe
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:DOKKU_HOST)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (AndOr
                                        children: [
                                          (Pipeline
                                            children: [
                                              (SimpleCommand
                                                words: [{(git)} {(remote)} {(-v)}]
                                                redirects: [
                                                  (Redir
                                                    op_id: Redir_Great
                                                    fd: 2
                                                    arg_word: {(/dev/null)}
                                                    spids: [1313]
                                                  )
                                                ]
                                              )
                                              (C {(grep)} {(-Ei)} {(DQ ('^dokku'))})
                                              (C {(head)} {(-n)} {(1)})
                                              (C {(cut)} {(-f1)} {(-d) (SQ <' '>)})
                                              (C {(cut)} {(-f2)} {(-d)} {(SQ <'@'>)})
                                              (SimpleCommand
                                                words: [{(cut)} {(-f1)} {(-d) (SQ <':'>)}]
                                                redirects: [
                                                  (Redir
                                                    op_id: Redir_Great
                                                    fd: 2
                                                    arg_word: {(/dev/null)}
                                                    spids: [1368]
                                                  )
                                                ]
                                              )
                                            ]
                                            negated: False
                                          )
                                          (C {(true)})
                                        ]
                                        op_id: Op_DPipe
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [1306 1374]
                              )
                            }
                          spids: [1305]
                        )
                      ]
                      spids: [1305]
                    )
                  ]
                  spids: [16777215 1302]
                )
              ]
              else_action: [(C {(client_help_msg)})]
              spids: [1377 1383]
            )
          ]
          spids: [16777215 1273]
        )
      ]
      spids: [16777215 1385]
    )
    (C {(export)} 
      {(Lit_VarLike 'DOKKU_PORT=') 
        (BracedVarSub
          token: <VSub_Name DOKKU_PORT>
          suffix_op: (StringUnary op_id:VTest_ColonEquals arg_word:{(22)})
          spids: [1391 1395]
        )
      }
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (LogicalNot
                      child: (BoolUnary op_id:BoolUnary_z child:{($ VSub_Name '$DOKKU_HOST')})
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (FuncDef
              name: _dokku
              body: 
                (BraceGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:appname)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [1421]
                        )
                      ]
                      spids: [1421]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (AndOr
                                  children: [
                                    (DBracket
                                      expr: (BoolUnary op_id:BoolUnary_d child:{(.git)})
                                    )
                                    (SimpleCommand
                                      words: [{(git)} {(rev-parse)} {(--git-dir)}]
                                      redirects: [
                                        (Redir
                                          op_id: Redir_Great
                                          fd: 16777215
                                          arg_word: {(/dev/null)}
                                          spids: [1444]
                                        )
                                        (Redir
                                          op_id: Redir_GreatAnd
                                          fd: 2
                                          arg_word: {(1)}
                                          spids: [1448]
                                        )
                                      ]
                                    )
                                  ]
                                  op_id: Op_DPipe
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(set)} {(Lit_Other '+') (e)})
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:appname)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (Pipeline
                                                children: [
                                                  (SimpleCommand
                                                    words: [{(git)} {(remote)} {(-v)}]
                                                    redirects: [
                                                      (Redir
                                                        op_id: Redir_Great
                                                        fd: 2
                                                        arg_word: {(/dev/null)}
                                                        spids: [1469]
                                                      )
                                                    ]
                                                  )
                                                  (C {(grep)} {(-Ei)} 
                                                    {(DQ ('dokku@') ($ VSub_Name '$DOKKU_HOST'))}
                                                  )
                                                  (C {(head)} {(-n)} {(1)})
                                                  (C {(cut)} {(-f2)} {(-d) (SQ <'@'>)})
                                                  (C {(cut)} {(-f1)} {(-d) (SQ <' '>)})
                                                  (SimpleCommand
                                                    words: [{(cut)} {(-f2)} {(-d) (SQ <':'>)}]
                                                    redirects: [
                                                      (Redir
                                                        op_id: Redir_Great
                                                        fd: 2
                                                        arg_word: {(/dev/null)}
                                                        spids: [1524]
                                                      )
                                                    ]
                                                  )
                                                ]
                                                negated: False
                                              )
                                            ]
                                          )
                                        left_token: <Left_CommandSub '$('>
                                        spids: [1462 1526]
                                      )
                                    }
                                  spids: [1461]
                                )
                              ]
                              spids: [1461]
                            )
                            (C {(set)} {(-e)})
                          ]
                          spids: [16777215 1452]
                        )
                      ]
                      else_action: [(C {(echo)} {(DQ ('This is not a git repository'))})]
                      spids: [1534 1544]
                    )
                    (Case
                      to_match: {(DQ ($ VSub_Number '$1'))}
                      arms: [
                        (case_arm
                          pat_list: [{(apps) (Lit_Other ':') (create)}]
                          action: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (DBracket
                                          expr: 
                                            (BoolUnary
                                              op_id: BoolUnary_z
                                              child: {(DQ ($ VSub_Number '$2'))}
                                            )
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:appname)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [(C {(random_name)})]
                                                  )
                                                left_token: <Left_CommandSub '$('>
                                                spids: [1580 1582]
                                              )
                                            }
                                          spids: [1579]
                                        )
                                      ]
                                      spids: [1579]
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:counter)
                                          op: Equal
                                          rhs: {(0)}
                                          spids: [1585]
                                        )
                                      ]
                                      spids: [1585]
                                    )
                                    (While
                                      cond: [
                                        (Sentence
                                          child: 
                                            (Pipeline
                                              children: [
                                                (SimpleCommand
                                                  words: [
                                                    {(ssh)}
                                                    {(-p)}
                                                    {(DQ ($ VSub_Name '$DOKKU_PORT'))}
                                                    {(DQ ('dokku@') ($ VSub_Name '$DOKKU_HOST'))}
                                                    {(apps)}
                                                  ]
                                                  redirects: [
                                                    (Redir
                                                      op_id: Redir_Great
                                                      fd: 2
                                                      arg_word: {(/dev/null)}
                                                      spids: [1606]
                                                    )
                                                  ]
                                                )
                                                (C {(grep)} {(-q)} {(DQ ($ VSub_Name '$appname'))})
                                              ]
                                              negated: False
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      body: 
                                        (DoGroup
                                          children: [
                                            (If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (Sentence
                                                      child: 
                                                        (DBracket
                                                          expr: 
                                                            (BoolBinary
                                                              op_id: BoolBinary_ge
                                                              left: {($ VSub_Name '$counter')}
                                                              right: {(100)}
                                                            )
                                                        )
                                                      terminator: <Op_Semi ';'>
                                                    )
                                                  ]
                                                  action: [
                                                    (C {(echo)} 
                                                      {
                                                        (DQ 
                                                          (
'Error: could not reasonably generate a new app name. try cleaning up some apps...'
                                                          )
                                                        )
                                                      }
                                                    )
                                                    (C {(ssh)} {(-p)} {(DQ ($ VSub_Name '$DOKKU_PORT'))} 
                                                      {(DQ ('dokku@') ($ VSub_Name '$DOKKU_HOST'))} {(apps)}
                                                    )
                                                    (C {(exit)} {(1)})
                                                  ]
                                                  spids: [16777215 1635]
                                                )
                                              ]
                                              else_action: [
                                                (Assignment
                                                  keyword: Assign_None
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (LhsName name:appname)
                                                      op: Equal
                                                      rhs: 
                                                        {
                                                          (CommandSubPart
                                                            command_list: 
                                                              (CommandList
                                                                children: [(C {(random_name)})]
                                                              )
                                                            left_token: <Left_CommandSub '$('>
                                                            spids: [1670 1672]
                                                          )
                                                        }
                                                      spids: [1669]
                                                    )
                                                  ]
                                                  spids: [1669]
                                                )
                                                (Assignment
                                                  keyword: Assign_None
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (LhsName name:counter)
                                                      op: Equal
                                                      rhs: 
                                                        {
                                                          (ArithSubPart
                                                            anode: 
                                                              (ArithBinary
                                                                op_id: Arith_Plus
                                                                left: (ArithVarRef name:counter)
                                                                right: (ArithWord w:{(Lit_Digits 1)})
                                                              )
                                                            spids: [1676 1681]
                                                          )
                                                        }
                                                      spids: [1675]
                                                    )
                                                  ]
                                                  spids: [1675]
                                                )
                                              ]
                                              spids: [1666 1684]
                                            )
                                          ]
                                          spids: [1619 1687]
                                        )
                                    )
                                  ]
                                  spids: [16777215 1576]
                                )
                              ]
                              else_action: [
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:appname)
                                      op: Equal
                                      rhs: {(DQ ($ VSub_Number '$2'))}
                                      spids: [1693]
                                    )
                                  ]
                                  spids: [1693]
                                )
                              ]
                              spids: [1690 1699]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(git)} {(remote)} {(add)} {(dokku)} 
                                          {
                                            (DQ ('dokku@') ($ VSub_Name '$DOKKU_HOST') (':') 
                                              ($ VSub_Name '$appname')
                                            )
                                          }
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} 
                                      {
                                        (DQ ('-----> Dokku remote added at ') 
                                          ($ VSub_Name '$DOKKU_HOST')
                                        )
                                      }
                                    )
                                    (C {(echo)} 
                                      {(DQ ('-----> Application name is ') ($ VSub_Name '$appname'))}
                                    )
                                  ]
                                  spids: [16777215 1720]
                                )
                              ]
                              else_action: [
                                (C {(echo)} 
                                  {
                                    (DQ 
                                      (
'!      Dokku remote not added! Do you already have a dokku remote?'
                                      )
                                    )
                                  }
                                )
                                (ControlFlow
                                  token: <ControlFlow_Return return>
                                )
                              ]
                              spids: [1739 1752]
                            )
                          ]
                          spids: [1557 1560 1755 16777215]
                        )
                        (case_arm
                          pat_list: [{(apps) (Lit_Other ':') (destroy)}]
                          action: [
                            (AndOr
                              children: [
                                (C {(is_git_repo)})
                                (AndOr
                                  children: [
                                    (C {(has_dokku_remote)})
                                    (C {(git)} {(remote)} {(remove)} {(dokku)})
                                  ]
                                  op_id: Op_DAmp
                                )
                              ]
                              op_id: Op_DAmp
                            )
                          ]
                          spids: [1758 1761 1781 16777215]
                        )
                      ]
                      spids: [1548 1554 1784]
                    )
                    (AndOr
                      children: [
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_n child:{(DQ ($ VSub_At '$@'))})
                        )
                        (AndOr
                          children: [
                            (DBracket
                              expr: (BoolUnary op_id:BoolUnary_n child:{(DQ ($ VSub_Name '$appname'))})
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:app_arg)
                                  op: Equal
                                  rhs: {(DQ ('--app ') ($ VSub_Name '$appname'))}
                                  spids: [1812]
                                )
                              ]
                              spids: [1812]
                            )
                          ]
                          op_id: Op_DAmp
                        )
                      ]
                      op_id: Op_DAmp
                    )
                    (C {(ssh)} {(-o)} {(Lit_VarLike 'LogLevel=') (QUIET)} {(-p)} 
                      {($ VSub_Name '$DOKKU_PORT')} {(-t)} {(dokku) (Lit_Other '@') ($ VSub_Name '$DOKKU_HOST')} {(--)} {($ VSub_Name '$app_arg')} 
                      {($ VSub_At '$@')}
                    )
                  ]
                  spids: [1418]
                )
              spids: [1414 1417]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          children: [
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {(DQ ($ VSub_Number '$0'))}
                                  right: {(DQ (dokku))}
                                )
                            )
                            (AndOr
                              children: [
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {(DQ ($ VSub_Number '$0'))}
                                      right: {(Lit_Other '*') (dokku_client.sh)}
                                    )
                                )
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {(DQ ($ VSub_Number '$0'))}
                                      right: 
                                        {
                                          (CommandSubPart
                                            command_list: 
                                              (CommandList
                                                children: [(C {(which)} {(dokku)})]
                                              )
                                            left_token: <Left_CommandSub '$('>
                                            spids: [1896 1900]
                                          )
                                        }
                                    )
                                )
                              ]
                              op_id: Op_DPipe
                            )
                          ]
                          op_id: Op_DPipe
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(_dokku)} {(DQ ($ VSub_At '$@'))}) (C {(exit)} {($ VSub_QMark '$?')})]
                  spids: [16777215 1905]
                )
              ]
              spids: [16777215 1920]
            )
          ]
          spids: [16777215 1411]
        )
      ]
      else_action: [(C {(client_help_msg)})]
      spids: [1922 1927]
    )
  ]
)