(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:PERL) op:Equal rhs:{(SQ <"@@PERL@@">)} spids:[13])]
      spids: [13]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:OPTIONS_KEEPDASHDASH) op:Equal rhs:{(SQ )} spids:[18])]
      spids: [18]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:OPTIONS_STUCKLONG) op:Equal rhs:{(SQ )} spids:[20])]
      spids: [20]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:OPTIONS_SPEC)
          op: Equal
          rhs: 
            {
              (DQ ("git instaweb [options] (--start | --stop | --restart)\n") ("--\n") 
                ("l,local        only bind on 127.0.0.1\n") ("p,port=        the port to bind to\n") ("d,httpd=       the command to launch\n") 
                ("b,browser=     the browser to launch\n") ("m,module-path= the module path (only needed for apache2)\n") (" Action\n") 
                ("stop           stop the web server\n") ("start          start the web server\n") ("restart        restart the web server\n")
              )
            }
          spids: [22]
        )
      ]
      spids: [22]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:SUBDIRECTORY_OK) op:Equal rhs:{(Yes)} spids:[39])]
      spids: [39]
    )
    (C {(.)} {(git-sh-setup)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:fqgitdir)
          op: Equal
          rhs: {(DQ ($ VSub_Name "$GIT_DIR"))}
          spids: [47]
        )
      ]
      spids: [47]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:local)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [(C {(git)} {(config)} {(--bool)} {(--get)} {(instaweb.local)})]
                    )
                  left_token: <Left_CommandSub "$(">
                  spids: [54 64]
                )
              )
            }
          spids: [52]
        )
      ]
      spids: [52]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:httpd)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [(C {(git)} {(config)} {(--get)} {(instaweb.httpd)})]
                    )
                  left_token: <Left_CommandSub "$(">
                  spids: [69 77]
                )
              )
            }
          spids: [67]
        )
      ]
      spids: [67]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:root)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [(C {(git)} {(config)} {(--get)} {(instaweb.gitwebdir)})]
                    )
                  left_token: <Left_CommandSub "$(">
                  spids: [82 90]
                )
              )
            }
          spids: [80]
        )
      ]
      spids: [80]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:port)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(git)} {(config)} {(--get)} {(instaweb.port)})]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [94 102]
              )
            }
          spids: [93]
        )
      ]
      spids: [93]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:module_path)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [(C {(git)} {(config)} {(--get)} {(instaweb.modulepath)})]
                    )
                  left_token: <Left_CommandSub "$(">
                  spids: [106 114]
                )
              )
            }
          spids: [104]
        )
      ]
      spids: [104]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:action) op:Equal rhs:{(DQ (browse))} spids:[117])]
      spids: [117]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:conf)
          op: Equal
          rhs: {(DQ ($ VSub_Name "$GIT_DIR") (/gitweb/httpd.conf))}
          spids: [123]
        )
      ]
      spids: [123]
    )
    (AndOr
      children: [
        (C {(test)} {(-z)} {(DQ ($ VSub_Name "$httpd"))})
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:httpd)
              op: Equal
              rhs: {(SQ <"lighttpd -f">)}
              spids: [147]
            )
          ]
          spids: [147]
        )
      ]
      op_id: Op_DAmp
    )
    (AndOr
      children: [
        (C {(test)} {(-z)} {(DQ ($ VSub_Name "$root"))})
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:root)
              op: Equal
              rhs: {(SQ <"@@GITWEBDIR@@">)}
              spids: [166]
            )
          ]
          spids: [166]
        )
      ]
      op_id: Op_DAmp
    )
    (AndOr
      children: [
        (C {(test)} {(-z)} {(DQ ($ VSub_Name "$port"))})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:port) op:Equal rhs:{(1234)} spids:[185])]
          spids: [185]
        )
      ]
      op_id: Op_DAmp
    )
    (FuncDef
      name: resolve_full_httpd
      body: 
        (BraceGroup
          children: [
            (Case
              to_match: {(DQ ($ VSub_Name "$httpd"))}
              arms: [
                (case_arm
                  pat_list: [
                    {(Lit_Other "*") (apache2) (Lit_Other "*")}
                    {(Lit_Other "*") (lighttpd) (Lit_Other "*")}
                    {(Lit_Other "*") (httpd) (Lit_Other "*")}
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ VSub_Name "$httpd"))})
                                (SimpleCommand
                                  words: [{(sane_grep)} {(--)} {(SQ <"-f *$">)}]
                                  redirects: [
                                    (Redir
                                      op_id: Redir_Great
                                      fd: -1
                                      arg_word: {(/dev/null)}
                                      spids: [248]
                                    )
                                    (Redir
                                      op_id: Redir_GreatAnd
                                      fd: 2
                                      arg_word: {(1)}
                                      spids: [251]
                                    )
                                  ]
                                )
                              ]
                              negated: True
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:httpd)
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Name "$httpd") (" -f"))}
                                  spids: [258]
                                )
                              ]
                              spids: [258]
                            )
                          ]
                          spids: [-1 255]
                        )
                      ]
                      spids: [-1 265]
                    )
                  ]
                  spids: [206 217 268 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*") (plackup) (Lit_Other "*")}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:full_httpd)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name "$fqgitdir") (/gitweb/gitweb.psgi))}
                          spids: [281]
                        )
                      ]
                      spids: [281]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:httpd_only)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name httpd>
                                  suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{(" *")})
                                  spids: [290 294]
                                )
                              )
                            }
                          spids: [288]
                        )
                      ]
                      spids: [288]
                    )
                    (ControlFlow token:<ControlFlow_Return return>)
                  ]
                  spids: [271 274 304 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*") (webrick) (Lit_Other "*")}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:full_httpd)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name "$fqgitdir") (/gitweb/webrick.rb))}
                          spids: [321]
                        )
                      ]
                      spids: [321]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:httpd_only)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name httpd>
                                  suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{(" *")})
                                  spids: [330 334]
                                )
                              )
                            }
                          spids: [328]
                        )
                      ]
                      spids: [328]
                    )
                    (ControlFlow token:<ControlFlow_Return return>)
                  ]
                  spids: [307 310 344 -1]
                )
              ]
              spids: [197 203 347]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:httpd_only)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (Pipeline
                                  children: [
                                    (C {(echo)} {($ VSub_Name "$httpd")})
                                    (C {(cut)} {(-f1)} {(-d) (SQ <" ">)})
                                  ]
                                  negated: False
                                )
                              ]
                            )
                          left_token: <Left_CommandSub "$(">
                          spids: [353 368]
                        )
                      )
                    }
                  spids: [351]
                )
              ]
              spids: [351]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Case
                      to_match: {(DQ ($ VSub_Name "$httpd_only"))}
                      arms: [
                        (case_arm
                          pat_list: [{(/) (Lit_Other "*")}]
                          action: [(C {(Lit_Other ":")})]
                          spids: [382 384 388 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other "*")}]
                          action: [
                            (SimpleCommand
                              words: [{(which)} {($ VSub_Name "$httpd_only")}]
                              redirects: [
                                (Redir
                                  op_id: Redir_Great
                                  fd: -1
                                  arg_word: {(/dev/null)}
                                  spids: [397]
                                )
                                (Redir
                                  op_id: Redir_GreatAnd
                                  fd: 2
                                  arg_word: {(1)}
                                  spids: [400]
                                )
                              ]
                            )
                          ]
                          spids: [390 391 402 -1]
                        )
                      ]
                      spids: [374 380 404]
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:full_httpd)
                          op: Equal
                          rhs: {($ VSub_Name "$httpd")}
                          spids: [410]
                        )
                      ]
                      spids: [410]
                    )
                  ]
                  spids: [-1 407]
                )
              ]
              else_action: [
                (ForEach
                  iter_name: i
                  iter_words: [
                    {(/usr/local/sbin)}
                    {(/usr/sbin)}
                    {(DQ ($ VSub_Name "$root"))}
                    {(DQ ($ VSub_Name "$fqgitdir") (/gitweb))}
                  ]
                  do_arg_iter: False
                  body: 
                    (DoGroup
                      children: [
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (C {(test)} {(-x)} 
                                  {(DQ ($ VSub_Name "$i") (/) ($ VSub_Name "$httpd_only"))}
                                )
                              ]
                              action: [
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:full_httpd)
                                      op: Equal
                                      rhs: {($ VSub_Name "$i") (/) ($ VSub_Name "$httpd")}
                                      spids: [472]
                                    )
                                  ]
                                  spids: [472]
                                )
                                (ControlFlow
                                  token: <ControlFlow_Return return>
                                )
                              ]
                              spids: [-1 469]
                            )
                          ]
                          spids: [-1 481]
                        )
                      ]
                      spids: [453 484]
                    )
                  spids: [438 -1]
                )
                (SimpleCommand
                  words: [
                    {(echo)}
                    {
                      (DQ ($ VSub_Name "$httpd_only") (" not found. Install ") 
                        ($ VSub_Name "$httpd_only") (" or use")
                      )
                    }
                    {(DQ ("--httpd to specify another httpd daemon."))}
                  ]
                  redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[490])]
                )
                (C {(exit)} {(1)})
              ]
              spids: [414 512]
            )
          ]
          spids: [194]
        )
      spids: [189 193]
    )
    (FuncDef
      name: start_httpd
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(test)} {(-f)} {(DQ ($ VSub_Name "$fqgitdir") (/pid))})
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (C {(say)} {(DQ ("Instance already running. Restarting..."))})
                    (C {(stop_httpd)})
                  ]
                  spids: [-1 537]
                )
              ]
              spids: [-1 550]
            )
            (C {(resolve_full_httpd)})
            (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name "$fqgitdir") (/gitweb/) ($ VSub_Name "$httpd_only"))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:conf)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name "$fqgitdir") (/gitweb/) ($ VSub_Name "$httpd_only") (.conf))}
                  spids: [572]
                )
              ]
              spids: [572]
            )
            (AndOr
              children: [(C {(test)} {(-f)} {(DQ ($ VSub_Name "$conf"))}) (C {(configure_httpd)})]
              op_id: Op_DPipe
            )
            (AndOr
              children: [
                (C {(test)} {(-f)} {(DQ ($ VSub_Name "$fqgitdir") (/gitweb/gitweb_config.perl))})
                (C {(gitweb_conf)})
              ]
              op_id: Op_DPipe
            )
            (Case
              to_match: {(DQ ($ VSub_Name "$httpd"))}
              arms: [
                (case_arm
                  pat_list: [
                    {(Lit_Other "*") (mongoose) (Lit_Other "*")}
                    {(Lit_Other "*") (plackup) (Lit_Other "*")}
                  ]
                  action: [
                    (Sentence
                      child: (C {($ VSub_Name "$full_httpd")} {(DQ ($ VSub_Name "$conf"))})
                      terminator: <Op_Amp "&">
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:pid)
                          op: Equal
                          rhs: {($ VSub_Bang "$!")}
                          spids: [654]
                        )
                      ]
                      spids: [654]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(test)} {($ VSub_QMark "$?")} {(KW_Bang "!") (Lit_Other "=")} {(0)})
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {(DQ ("Could not execute http daemon ") ($ VSub_Name "$httpd") (.))}
                            )
                            (C {(exit)} {(1)})
                          ]
                          spids: [-1 671]
                        )
                      ]
                      spids: [-1 688]
                    )
                    (SimpleCommand
                      words: [{(cat)}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: {(DQ ($ VSub_Name "$fqgitdir") (/pid))}
                          spids: [694]
                        )
                        (HereDoc
                          op_id: Redir_DLess
                          fd: -1
                          body: {(DQ ($ VSub_Name "$pid") ("\n"))}
                          do_expansion: True
                          here_end: EOF
                          was_filled: True
                          spids: [701]
                        )
                      ]
                    )
                  ]
                  spids: [627 634 707 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [
                    (C {($ VSub_Name "$full_httpd")} {(DQ ($ VSub_Name "$conf"))})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(test)} {($ VSub_QMark "$?")} {(KW_Bang "!") (Lit_Other "=")} {(0)})
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {(DQ ("Could not execute http daemon ") ($ VSub_Name "$httpd") (.))}
                            )
                            (C {(exit)} {(1)})
                          ]
                          spids: [-1 733]
                        )
                      ]
                      spids: [-1 750]
                    )
                  ]
                  spids: [710 711 753 -1]
                )
              ]
              spids: [618 624 756]
            )
          ]
          spids: [522]
        )
      spids: [517 521]
    )
    (FuncDef
      name: stop_httpd
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(test)} {(-f)} {(DQ ($ VSub_Name "$fqgitdir") (/pid))})
                (C {(kill)} 
                  {
                    (CommandSubPart
                      command_list: 
                        (CommandList
                          children: [(C {(cat)} {(DQ ($ VSub_Name "$fqgitdir") (/pid))})]
                        )
                      left_token: <Left_CommandSub "$(">
                      spids: [782 789]
                    )
                  }
                )
              ]
              op_id: Op_DAmp
            )
            (C {(rm)} {(-f)} {(DQ ($ VSub_Name "$fqgitdir") (/pid))})
          ]
          spids: [766]
        )
      spids: [761 765]
    )
    (FuncDef
      name: httpd_is_ready
      body: 
        (BraceGroup
          children: [
            (C {(DQ ($ VSub_Name "$PERL"))} 
              {(-MIO) (Lit_Other ":") (Lit_Other ":") (Socket) (Lit_Other ":") (Lit_Other ":") (INET)} {(-e)} 
              {
                (DQ ("\n") ("local ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) 
                  ("| = 1; # turn on autoflush\n") ("exit if (IO::Socket::INET->new('127.0.0.1:") ($ VSub_Name "$port") ("'));\n") ("print 'Waiting for ") 
                  (EscapedLiteralPart token:<Lit_EscapedChar "\\'">) ($ VSub_Name "$httpd") (EscapedLiteralPart token:<Lit_EscapedChar "\\'">) (" to start ..';\n") 
                  ("do {\n") ("\tprint '.';\n") ("\tsleep(1);\n") ("} until (IO::Socket::INET->new('127.0.0.1:") 
                  ($ VSub_Name "$port") ("'));\n") ("print qq! (done)") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">) ("!;\n")
                )
              }
            )
          ]
          spids: [809]
        )
      spids: [804 808]
    )
    (While
      cond: [(C {(test)} {($ VSub_Pound "$#")} {(KW_Bang "!") (Lit_Other "=")} {(0)})]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {(DQ ($ VSub_Number "$1"))}
              arms: [
                (case_arm
                  pat_list: [{(--stop)} {(stop)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:action)
                          op: Equal
                          rhs: {(DQ (stop))}
                          spids: [882]
                        )
                      ]
                      spids: [882]
                    )
                  ]
                  spids: [876 879 888 -1]
                )
                (case_arm
                  pat_list: [{(--start)} {(start)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:action)
                          op: Equal
                          rhs: {(DQ (start))}
                          spids: [897]
                        )
                      ]
                      spids: [897]
                    )
                  ]
                  spids: [891 894 903 -1]
                )
                (case_arm
                  pat_list: [{(--restart)} {(restart)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:action)
                          op: Equal
                          rhs: {(DQ (restart))}
                          spids: [912]
                        )
                      ]
                      spids: [912]
                    )
                  ]
                  spids: [906 909 918 -1]
                )
                (case_arm
                  pat_list: [{(-l)} {(--local)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:local)
                          op: Equal
                          rhs: {(true)}
                          spids: [927]
                        )
                      ]
                      spids: [927]
                    )
                  ]
                  spids: [921 924 931 -1]
                )
                (case_arm
                  pat_list: [{(-d)} {(--httpd)}]
                  action: [
                    (C {(shift)})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:httpd)
                          op: Equal
                          rhs: {(DQ ($ VSub_Number "$1"))}
                          spids: [943]
                        )
                      ]
                      spids: [943]
                    )
                  ]
                  spids: [934 937 949 -1]
                )
                (case_arm
                  pat_list: [{(-b)} {(--browser)}]
                  action: [
                    (C {(shift)})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:browser)
                          op: Equal
                          rhs: {(DQ ($ VSub_Number "$1"))}
                          spids: [961]
                        )
                      ]
                      spids: [961]
                    )
                  ]
                  spids: [952 955 967 -1]
                )
                (case_arm
                  pat_list: [{(-p)} {(--port)}]
                  action: [
                    (C {(shift)})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:port)
                          op: Equal
                          rhs: {(DQ ($ VSub_Number "$1"))}
                          spids: [979]
                        )
                      ]
                      spids: [979]
                    )
                  ]
                  spids: [970 973 985 -1]
                )
                (case_arm
                  pat_list: [{(-m)} {(--module-path)}]
                  action: [
                    (C {(shift)})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:module_path)
                          op: Equal
                          rhs: {(DQ ($ VSub_Number "$1"))}
                          spids: [997]
                        )
                      ]
                      spids: [997]
                    )
                  ]
                  spids: [988 991 1003 -1]
                )
                (case_arm pat_list:[{(--)}] spids:[100610071010-1])
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [(C {(usage)})]
                  spids: [1013 1014 1020 -1]
                )
              ]
              spids: [867 873 1023]
            )
            (C {(shift)})
          ]
          spids: [864 1028]
        )
    )
    (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name "$GIT_DIR") (/gitweb/tmp))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_EXEC_PATH)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(git)} {(--exec-path)})])
                  left_token: <Left_CommandSub "$(">
                  spids: [1042 1046]
                )
              )
            }
          spids: [1040]
        )
      ]
      spids: [1040]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_DIR)
          op: Equal
          rhs: {(DQ ($ VSub_Name "$fqgitdir"))}
          spids: [1049]
        )
      ]
      spids: [1049]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GITWEB_CONFIG)
          op: Equal
          rhs: {(DQ ($ VSub_Name "$fqgitdir") (/gitweb/gitweb_config.perl))}
          spids: [1054]
        )
      ]
      spids: [1054]
    )
    (C {(export)} {(GIT_EXEC_PATH)} {(GIT_DIR)} {(GITWEB_CONFIG)})
    (FuncDef
      name: webrick_conf
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:wrapper)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name "$fqgitdir") (/gitweb/) ($ VSub_Name "$httpd") (/wrapper.sh))}
                  spids: [1089]
                )
              ]
              spids: [1089]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(DQ ($ VSub_Name "$wrapper"))}
                  spids: [1100]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {
                      (DQ ("#!@SHELL_PATH@\n") 
                        ("# we use this shell script wrapper around the real gitweb.cgi since\n") ("# there appears to be no other way to pass arbitrary environment variables\n") 
                        ("# into the CGI process\n") ("GIT_EXEC_PATH=") ($ VSub_Name "$GIT_EXEC_PATH") (" GIT_DIR=") ($ VSub_Name "$GIT_DIR") 
                        (" GITWEB_CONFIG=") ($ VSub_Name "$GITWEB_CONFIG") ("\n") ("export GIT_EXEC_PATH GIT_DIR GITWEB_CONFIG\n") ("exec ") 
                        ($ VSub_Name "$root") ("/gitweb.cgi\n")
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [1106]
                )
              ]
            )
            (C {(chmod)} {(Lit_Other "+") (x)} {(DQ ($ VSub_Name "$wrapper"))})
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(DQ ($ VSub_Name "$fqgitdir") (/gitweb/) ($ VSub_Name "$httpd") (.rb))}
                  spids: [1150]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {
                      (DQ ("#!/usr/bin/env ruby\n") ("require 'webrick'\n") ("require 'logger'\n") 
                        ("options = {\n") ("  :Port => ") ($ VSub_Name "$port") (",\n") ("  :DocumentRoot => ") (Right_DoubleQuote "\"") 
                        ($ VSub_Name "$root") (Right_DoubleQuote "\"") (",\n") ("  :Logger => Logger.new('") ($ VSub_Name "$fqgitdir") 
                        ("/gitweb/error.log'),\n") ("  :AccessLog => [\n") ("    [ Logger.new('") ($ VSub_Name "$fqgitdir") ("/gitweb/access.log'),\n") 
                        ("      WEBrick::AccessLog::COMBINED_LOG_FORMAT ]\n") ("  ],\n") ("  :DirectoryIndex => [") (Right_DoubleQuote "\"") (gitweb.cgi) (Right_DoubleQuote "\"") 
                        ("],\n") ("  :CGIInterpreter => ") (Right_DoubleQuote "\"") ($ VSub_Name "$wrapper") (Right_DoubleQuote "\"") 
                        (",\n") ("  :StartCallback => lambda do\n") ("    File.open(") (Right_DoubleQuote "\"") 
                        ($ VSub_Name "$fqgitdir") (/pid) (Right_DoubleQuote "\"") (", ") (Right_DoubleQuote "\"") (w) (Right_DoubleQuote "\"") 
                        (") { |f| f.puts Process.pid }\n") ("  end,\n") ("  :ServerType => WEBrick::Daemon,\n") ("}\n") ("options[:BindAddress] = '127.0.0.1' if ") 
                        (Right_DoubleQuote "\"") ($ VSub_Name "$local") (Right_DoubleQuote "\"") (" == ") (Right_DoubleQuote "\"") (true) 
                        (Right_DoubleQuote "\"") ("\n") ("server = WEBrick::HTTPServer.new(options)\n") ("['INT', 'TERM'].each do |signal|\n") 
                        ("  trap(signal) {server.shutdown}\n") ("end\n") ("server.start\n")
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [1158]
                )
              ]
            )
            (C {(chmod)} {(Lit_Other "+") (x)} 
              {(DQ ($ VSub_Name "$fqgitdir") (/gitweb/) ($ VSub_Name "$httpd") (.rb))}
            )
            (C {(rm)} {(-f)} {(DQ ($ VSub_Name "$conf"))})
          ]
          spids: [1074]
        )
      spids: [1069 1073]
    )
    (FuncDef
      name: lighttpd_conf
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(DQ ($ VSub_Name "$conf"))}
                  spids: [1259]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {
                      (DQ ("server.document-root = ") (Right_DoubleQuote "\"") ($ VSub_Name "$root") 
                        (Right_DoubleQuote "\"") ("\n") ("server.port = ") ($ VSub_Name "$port") ("\n") ("server.modules = ( ") (Right_DoubleQuote "\"") 
                        (mod_setenv) (Right_DoubleQuote "\"") (", ") (Right_DoubleQuote "\"") (mod_cgi) (Right_DoubleQuote "\"") (" )\n") 
                        ("server.indexfiles = ( ") (Right_DoubleQuote "\"") (gitweb.cgi) (Right_DoubleQuote "\"") (" )\n") ("server.pid-file = ") 
                        (Right_DoubleQuote "\"") ($ VSub_Name "$fqgitdir") (/pid) (Right_DoubleQuote "\"") ("\n") ("server.errorlog = ") 
                        (Right_DoubleQuote "\"") ($ VSub_Name "$fqgitdir") (/gitweb/) ($ VSub_Name "$httpd_only") (/error.log) (Right_DoubleQuote "\"") 
                        ("\n") ("\n") ("# to enable, add ") (Right_DoubleQuote "\"") (mod_access) (Right_DoubleQuote "\"") (", ") 
                        (Right_DoubleQuote "\"") (mod_accesslog) (Right_DoubleQuote "\"") (" to server.modules\n") 
                        ("# variable above and uncomment this\n") ("#accesslog.filename = ") (Right_DoubleQuote "\"") ($ VSub_Name "$fqgitdir") (/gitweb/) 
                        ($ VSub_Name "$httpd_only") (/access.log) (Right_DoubleQuote "\"") ("\n") ("\n") ("setenv.add-environment = ( ") 
                        (Right_DoubleQuote "\"") (PATH) (Right_DoubleQuote "\"") (" => env.PATH, ") (Right_DoubleQuote "\"") (GITWEB_CONFIG) 
                        (Right_DoubleQuote "\"") (" => env.GITWEB_CONFIG )\n") ("\n") ("cgi.assign = ( ") (Right_DoubleQuote "\"") (.cgi) 
                        (Right_DoubleQuote "\"") (" => ") (Right_DoubleQuote "\"") (Right_DoubleQuote "\"") (" )\n") ("\n") ("# mimetype mapping\n") 
                        ("mimetype.assign             = (\n") ("  ") (Right_DoubleQuote "\"") (.pdf) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (application/pdf) (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.sig) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (application/pgp-signature) (Right_DoubleQuote "\"") 
                        (",\n") ("  ") (Right_DoubleQuote "\"") (.spl) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (application/futuresplash) (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.class) 
                        (Right_DoubleQuote "\"") ("        =>      ") (Right_DoubleQuote "\"") (application/octet-stream) (Right_DoubleQuote "\"") (",\n") 
                        ("  ") (Right_DoubleQuote "\"") (.ps) (Right_DoubleQuote "\"") ("           =>      ") (Right_DoubleQuote "\"") 
                        (application/postscript) (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.torrent) (Right_DoubleQuote "\"") 
                        ("      =>      ") (Right_DoubleQuote "\"") (application/x-bittorrent) (Right_DoubleQuote "\"") (",\n") ("  ") 
                        (Right_DoubleQuote "\"") (.dvi) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (application/x-dvi) 
                        (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.gz) (Right_DoubleQuote "\"") ("           =>      ") 
                        (Right_DoubleQuote "\"") (application/x-gzip) (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.pac) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (application/x-ns-proxy-autoconfig) 
                        (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.swf) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (application/x-shockwave-flash) (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.tar.gz) 
                        (Right_DoubleQuote "\"") ("       =>      ") (Right_DoubleQuote "\"") (application/x-tgz) (Right_DoubleQuote "\"") (",\n") ("  ") 
                        (Right_DoubleQuote "\"") (.tgz) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (application/x-tgz) 
                        (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.tar) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (application/x-tar) (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.zip) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (application/zip) (Right_DoubleQuote "\"") (",\n") ("  ") 
                        (Right_DoubleQuote "\"") (.mp3) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (audio/mpeg) 
                        (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.m3u) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (audio/x-mpegurl) (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.wma) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (audio/x-ms-wma) (Right_DoubleQuote "\"") (",\n") ("  ") 
                        (Right_DoubleQuote "\"") (.wax) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (audio/x-ms-wax) 
                        (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.ogg) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (application/ogg) (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.wav) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (audio/x-wav) (Right_DoubleQuote "\"") (",\n") ("  ") 
                        (Right_DoubleQuote "\"") (.gif) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (image/gif) 
                        (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.jpg) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (image/jpeg) (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.jpeg) 
                        (Right_DoubleQuote "\"") ("         =>      ") (Right_DoubleQuote "\"") (image/jpeg) (Right_DoubleQuote "\"") (",\n") ("  ") 
                        (Right_DoubleQuote "\"") (.png) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (image/png) 
                        (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.xbm) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (image/x-xbitmap) (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.xpm) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (image/x-xpixmap) (Right_DoubleQuote "\"") (",\n") ("  ") 
                        (Right_DoubleQuote "\"") (.xwd) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (image/x-xwindowdump) 
                        (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.css) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (text/css) (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.html) 
                        (Right_DoubleQuote "\"") ("         =>      ") (Right_DoubleQuote "\"") (text/html) (Right_DoubleQuote "\"") (",\n") ("  ") 
                        (Right_DoubleQuote "\"") (.htm) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (text/html) 
                        (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.js) (Right_DoubleQuote "\"") ("           =>      ") 
                        (Right_DoubleQuote "\"") (text/javascript) (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.asc) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (text/plain) (Right_DoubleQuote "\"") (",\n") ("  ") 
                        (Right_DoubleQuote "\"") (.c) (Right_DoubleQuote "\"") ("            =>      ") (Right_DoubleQuote "\"") (text/plain) 
                        (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.cpp) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (text/plain) (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.log) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (text/plain) (Right_DoubleQuote "\"") (",\n") ("  ") 
                        (Right_DoubleQuote "\"") (.conf) (Right_DoubleQuote "\"") ("         =>      ") (Right_DoubleQuote "\"") (text/plain) 
                        (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.text) (Right_DoubleQuote "\"") ("         =>      ") 
                        (Right_DoubleQuote "\"") (text/plain) (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.txt) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (text/plain) (Right_DoubleQuote "\"") (",\n") ("  ") 
                        (Right_DoubleQuote "\"") (.dtd) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (text/xml) 
                        (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.xml) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (text/xml) (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.mpeg) 
                        (Right_DoubleQuote "\"") ("         =>      ") (Right_DoubleQuote "\"") (video/mpeg) (Right_DoubleQuote "\"") (",\n") ("  ") 
                        (Right_DoubleQuote "\"") (.mpg) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (video/mpeg) 
                        (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.mov) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (video/quicktime) (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.qt) 
                        (Right_DoubleQuote "\"") ("           =>      ") (Right_DoubleQuote "\"") (video/quicktime) (Right_DoubleQuote "\"") (",\n") ("  ") 
                        (Right_DoubleQuote "\"") (.avi) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (video/x-msvideo) 
                        (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.asf) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (video/x-ms-asf) (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.asx) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (video/x-ms-asf) (Right_DoubleQuote "\"") (",\n") ("  ") 
                        (Right_DoubleQuote "\"") (.wmv) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (video/x-ms-wmv) 
                        (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.bz2) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (application/x-bzip) (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.tbz) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (application/x-bzip-compressed-tar) 
                        (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") (.tar.bz2) (Right_DoubleQuote "\"") ("      =>      ") 
                        (Right_DoubleQuote "\"") (application/x-bzip-compressed-tar) (Right_DoubleQuote "\"") (",\n") ("  ") (Right_DoubleQuote "\"") 
                        (Right_DoubleQuote "\"") ("              =>      ") (Right_DoubleQuote "\"") (text/plain) (Right_DoubleQuote "\"") ("\n") (" )\n")
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [1265]
                )
              ]
            )
            (AndOr
              children: [
                (C {(test)} {(x) (DQ ($ VSub_Name "$local"))} {(Lit_Other "=")} {(xtrue)})
                (SimpleCommand
                  words: [{(echo)} {(SQ <"server.bind = \"127.0.0.1\"">)}]
                  redirects: [
                    (Redir
                      op_id: Redir_DGreat
                      fd: -1
                      arg_word: {(DQ ($ VSub_Name "$conf"))}
                      spids: [1833]
                    )
                  ]
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [1254]
        )
      spids: [1249 1253]
    )
    (FuncDef
      name: apache2_conf
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name "$module_path"))})]
                  action: [
                    (AndOr
                      children: [
                        (C {(test)} {(-d)} {(DQ (/usr/lib/httpd/modules))})
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:module_path)
                              op: Equal
                              rhs: {(DQ (/usr/lib/httpd/modules))}
                              spids: [1875]
                            )
                          ]
                          spids: [1875]
                        )
                      ]
                      op_id: Op_DAmp
                    )
                    (AndOr
                      children: [
                        (C {(test)} {(-d)} {(DQ (/usr/lib/apache2/modules))})
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:module_path)
                              op: Equal
                              rhs: {(DQ (/usr/lib/apache2/modules))}
                              spids: [1892]
                            )
                          ]
                          spids: [1892]
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  spids: [-1 1861]
                )
              ]
              spids: [-1 1898]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:bind) op:Equal rhs:{(SQ )} spids:[1901])]
              spids: [1901]
            )
            (AndOr
              children: [
                (C {(test)} {(x) (DQ ($ VSub_Name "$local"))} {(Lit_Other "=")} {(xtrue)})
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:bind)
                      op: Equal
                      rhs: {(SQ <"127.0.0.1:">)}
                      spids: [1917]
                    )
                  ]
                  spids: [1917]
                )
              ]
              op_id: Op_DAmp
            )
            (SimpleCommand
              words: [{(echo)} {(SQ <"text/css css">)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(DQ ($ VSub_Name "$fqgitdir") (/mime.types))}
                  spids: [1929]
                )
              ]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(DQ ($ VSub_Name "$conf"))}
                  spids: [1939]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {
                      (DQ ("ServerName ") (Right_DoubleQuote "\"") (git-instaweb) 
                        (Right_DoubleQuote "\"") ("\n") ("ServerRoot ") (Right_DoubleQuote "\"") ($ VSub_Name "$root") (Right_DoubleQuote "\"") ("\n") 
                        ("DocumentRoot ") (Right_DoubleQuote "\"") ($ VSub_Name "$root") (Right_DoubleQuote "\"") ("\n") ("ErrorLog ") 
                        (Right_DoubleQuote "\"") ($ VSub_Name "$fqgitdir") (/gitweb/) ($ VSub_Name "$httpd_only") (/error.log) (Right_DoubleQuote "\"") 
                        ("\n") ("CustomLog ") (Right_DoubleQuote "\"") ($ VSub_Name "$fqgitdir") (/gitweb/) ($ VSub_Name "$httpd_only") 
                        (/access.log) (Right_DoubleQuote "\"") (" combined\n") ("PidFile ") (Right_DoubleQuote "\"") ($ VSub_Name "$fqgitdir") 
                        (/pid) (Right_DoubleQuote "\"") ("\n") ("Listen ") ($ VSub_Name "$bind") ($ VSub_Name "$port") ("\n")
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [1945]
                )
              ]
            )
            (ForEach
              iter_name: mod
              iter_words: [{(mpm_event)} {(mpm_prefork)} {(mpm_worker)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(test)} {(-e)} 
                              {($ VSub_Name "$module_path") (/mod_) (${ VSub_Name mod) (.so)}
                            )
                          ]
                          action: [
                            (SimpleCommand
                              words: [
                                {(echo)}
                                {(DQ ("LoadModule ") (${ VSub_Name mod) ("_module "))}
                                {(DQ ($ VSub_Name "$module_path") (/mod_) (${ VSub_Name mod) (.so))}
                              ]
                              redirects: [
                                (Redir
                                  op_id: Redir_DGreat
                                  fd: -1
                                  arg_word: {(DQ ($ VSub_Name "$conf"))}
                                  spids: [2045]
                                )
                              ]
                            )
                            (ControlFlow token:<ControlFlow_Break break>)
                          ]
                          spids: [-1 2021]
                        )
                      ]
                      spids: [-1 2059]
                    )
                  ]
                  spids: [2004 2062]
                )
              spids: [1996 -1]
            )
            (ForEach
              iter_name: mod
              iter_words: [{(mime)} {(dir)} {(env)} {(log_config)} {(authz_core)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(test)} {(-e)} 
                              {($ VSub_Name "$module_path") (/mod_) (${ VSub_Name mod) (.so)}
                            )
                          ]
                          action: [
                            (SimpleCommand
                              words: [
                                {(echo)}
                                {(DQ ("LoadModule ") (${ VSub_Name mod) ("_module "))}
                                {(DQ ($ VSub_Name "$module_path") (/mod_) (${ VSub_Name mod) (.so))}
                              ]
                              redirects: [
                                (Redir
                                  op_id: Redir_DGreat
                                  fd: -1
                                  arg_word: {(DQ ($ VSub_Name "$conf"))}
                                  spids: [2123]
                                )
                              ]
                            )
                          ]
                          spids: [-1 2099]
                        )
                      ]
                      spids: [-1 2130]
                    )
                  ]
                  spids: [2082 2133]
                )
              spids: [2070 -1]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_DGreat
                  fd: -1
                  arg_word: {(DQ ($ VSub_Name "$conf"))}
                  spids: [2138]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {
                      (DQ ("TypesConfig ") (Right_DoubleQuote "\"") ($ VSub_Name "$fqgitdir") 
                        (/mime.types) (Right_DoubleQuote "\"") ("\n") ("DirectoryIndex gitweb.cgi\n")
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [2144]
                )
              ]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (AndOr
                      children: [
                        (C {(test)} {(-f)} {(DQ ($ VSub_Name "$module_path") (/mod_perl.so))})
                        (SimpleCommand
                          words: [
                            {(sane_grep)}
                            {(SQ <MOD_PERL>)}
                            {(DQ ($ VSub_Name "$root") (/gitweb.cgi))}
                          ]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: -1
                              arg_word: {(/dev/null)}
                              spids: [2189]
                            )
                          ]
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(cat)}]
                      redirects: [
                        (Redir
                          op_id: Redir_DGreat
                          fd: -1
                          arg_word: {(DQ ($ VSub_Name "$conf"))}
                          spids: [2202]
                        )
                        (HereDoc
                          op_id: Redir_DLess
                          fd: -1
                          body: 
                            {
                              (DQ ("LoadModule perl_module ") ($ VSub_Name "$module_path") 
                                ("/mod_perl.so\n") ("PerlPassEnv GIT_DIR\n") ("PerlPassEnv GIT_EXEC_PATH\n") ("PerlPassEnv GITWEB_CONFIG\n") 
                                ("<Location /gitweb.cgi>\n") ("\tSetHandler perl-script\n") ("\tPerlResponseHandler ModPerl::Registry\n") 
                                ("\tPerlOptions +ParseHeaders\n") ("\tOptions +ExecCGI\n") ("</Location>\n")
                              )
                            }
                          do_expansion: True
                          here_end: EOF
                          was_filled: True
                          spids: [2208]
                        )
                      ]
                    )
                  ]
                  spids: [-1 2193]
                )
              ]
              else_action: [
                (C {(resolve_full_httpd)})
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:list_mods)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Pipeline
                                    children: [
                                      (C {(echo)} {(DQ ($ VSub_Name "$full_httpd"))})
                                      (C {(sed)} {(SQ <"s/-f$/-l/">)})
                                    ]
                                    negated: False
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [2235 2249]
                          )
                        }
                      spids: [2234]
                    )
                  ]
                  spids: [2234]
                )
                (AndOr
                  children: [
                    (Pipeline
                      children: [
                        (C {($ VSub_Name "$list_mods")})
                        (SimpleCommand
                          words: [{(sane_grep)} {(SQ <"mod_cgi\\.c">)}]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: -1
                              arg_word: {(/dev/null)}
                              spids: [2262]
                            )
                            (Redir
                              op_id: Redir_GreatAnd
                              fd: 2
                              arg_word: {(1)}
                              spids: [2265]
                            )
                          ]
                        )
                      ]
                      negated: False
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [(C {(test)} {(-f)} {(DQ ($ VSub_Name "$module_path") (/mod_cgi.so))})]
                          action: [
                            (SimpleCommand
                              words: [
                                {(echo)}
                                {
                                  (DQ ("LoadModule cgi_module ") ($ VSub_Name "$module_path") 
                                    (/mod_cgi.so)
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op_id: Redir_DGreat
                                  fd: -1
                                  arg_word: {(DQ ($ VSub_Name "$conf"))}
                                  spids: [2295]
                                )
                              ]
                            )
                          ]
                          spids: [-1 2284]
                        )
                      ]
                      else_action: [
                        (AndOr
                          children: [
                            (Pipeline
                              children: [
                                (C {($ VSub_Name "$list_mods")})
                                (SimpleCommand
                                  words: [{(grep)} {(SQ <"mod_cgid\\.c">)}]
                                  redirects: [
                                    (Redir
                                      op_id: Redir_Great
                                      fd: -1
                                      arg_word: {(/dev/null)}
                                      spids: [2315]
                                    )
                                    (Redir
                                      op_id: Redir_GreatAnd
                                      fd: 2
                                      arg_word: {(1)}
                                      spids: [2318]
                                    )
                                  ]
                                )
                              ]
                              negated: False
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (C {(test)} {(-f)} {(DQ ($ VSub_Name "$module_path") (/mod_cgid.so))})
                                  ]
                                  action: [
                                    (SimpleCommand
                                      words: [
                                        {(echo)}
                                        {
                                          (DQ ("LoadModule cgid_module ") ($ VSub_Name "$module_path") 
                                            (/mod_cgid.so)
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (Redir
                                          op_id: Redir_DGreat
                                          fd: -1
                                          arg_word: {(DQ ($ VSub_Name "$conf"))}
                                          spids: [2350]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [-1 2337]
                                )
                              ]
                              else_action: [
                                (C {(echo)} {(DQ ("You have no CGI support!"))})
                                (C {(exit)} {(2)})
                              ]
                              spids: [2357 2372]
                            )
                          ]
                          op_id: Op_DPipe
                        )
                        (SimpleCommand
                          words: [{(echo)} {(DQ ("ScriptSock logs/gitweb.sock"))}]
                          redirects: [
                            (Redir
                              op_id: Redir_DGreat
                              fd: -1
                              arg_word: {(DQ ($ VSub_Name "$conf"))}
                              spids: [2381]
                            )
                          ]
                        )
                      ]
                      spids: [2302 2388]
                    )
                  ]
                  op_id: Op_DPipe
                )
                (SimpleCommand
                  words: [{(cat)}]
                  redirects: [
                    (Redir
                      op_id: Redir_DGreat
                      fd: -1
                      arg_word: {(DQ ($ VSub_Name "$conf"))}
                      spids: [2393]
                    )
                    (HereDoc
                      op_id: Redir_DLess
                      fd: -1
                      body: 
                        {
                          (DQ ("PassEnv GIT_DIR\n") ("PassEnv GIT_EXEC_PATH\n") 
                            ("PassEnv GITWEB_CONFIG\n") ("AddHandler cgi-script .cgi\n") ("<Location /gitweb.cgi>\n") ("\tOptions +ExecCGI\n") ("</Location>\n")
                          )
                        }
                      do_expansion: True
                      here_end: EOF
                      was_filled: True
                      spids: [2399]
                    )
                  ]
                )
              ]
              spids: [2224 2410]
            )
          ]
          spids: [1847]
        )
      spids: [1842 1846]
    )
    (FuncDef
      name: mongoose_conf
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(DQ ($ VSub_Name "$conf"))}
                  spids: [2424]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {
                      (DQ ("# Mongoose web server configuration file.\n") 
                        ("# Lines starting with '#' and empty lines are ignored.\n") ("# For detailed description of every option, visit\n") 
                        ("# http://code.google.com/p/mongoose/wiki/MongooseManual\n") ("\n") ("root\t\t") ($ VSub_Name "$root") ("\n") ("ports\t\t") ($ VSub_Name "$port") ("\n") 
                        ("index_files\tgitweb.cgi\n") ("#ssl_cert\t") ($ VSub_Name "$fqgitdir") ("/gitweb/ssl_cert.pem\n") ("error_log\t") 
                        ($ VSub_Name "$fqgitdir") (/gitweb/) ($ VSub_Name "$httpd_only") ("/error.log\n") ("access_log\t") ($ VSub_Name "$fqgitdir") 
                        (/gitweb/) ($ VSub_Name "$httpd_only") ("/access.log\n") ("\n") ("#cgi setup\n") ("cgi_env\t\tPATH=") 
                        ($ VSub_Name "$PATH") (",GIT_DIR=") ($ VSub_Name "$GIT_DIR") (",GIT_EXEC_PATH=") ($ VSub_Name "$GIT_EXEC_PATH") 
                        (",GITWEB_CONFIG=") ($ VSub_Name "$GITWEB_CONFIG") ("\n") ("cgi_interp\t") ($ VSub_Name "$PERL") ("\n") 
                        ("cgi_ext\t\tcgi,pl\n") ("\n") ("# mimetype mapping\n") 
                        (
"mime_types\t.gz=application/x-gzip,.tar.gz=application/x-tgz,.tgz=application/x-tgz,.tar=application/x-tar,.zip=application/zip,.gif=image/gif,.jpg=image/jpeg,.jpeg=image/jpeg,.png=image/png,.css=text/css,.html=text/html,.htm=text/html,.js=text/javascript,.c=text/plain,.cpp=text/plain,.log=text/plain,.conf=text/plain,.text=text/plain,.txt=text/plain,.dtd=text/xml,.bz2=application/x-bzip,.tbz=application/x-bzip-compressed-tar,.tar.bz2=application/x-bzip-compressed-tar\n"
                        )
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [2430]
                )
              ]
            )
          ]
          spids: [2419]
        )
      spids: [2415 2418]
    )
    (FuncDef
      name: plackup_conf
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(DQ ($ VSub_Name "$fqgitdir") (/gitweb/gitweb.psgi))}
                  spids: [2497]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {
                      (DQ ("#!") ($ VSub_Name "$PERL") ("\n") ("\n") 
                        ("# gitweb - simple web interface to track changes in git repositories\n") ("#          PSGI wrapper and server starter (see http://plackperl.org)\n") ("\n") ("use strict;\n") 
                        ("\n") ("use IO::Handle;\n") ("use Plack::MIME;\n") ("use Plack::Builder;\n") ("use Plack::App::WrapCGI;\n") 
                        (
"use CGI::Emulate::PSGI 0.07; # minimum version required to work with gitweb\n"
                        ) ("\n") ("# mimetype mapping (from lighttpd_conf)\n") ("Plack::MIME->add_type(\n") ("\t") 
                        (Right_DoubleQuote "\"") (.pdf) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (application/pdf) 
                        (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.sig) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (application/pgp-signature) (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.spl) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (application/futuresplash) (Right_DoubleQuote "\"") 
                        (",\n") ("\t") (Right_DoubleQuote "\"") (.class) (Right_DoubleQuote "\"") ("        =>      ") 
                        (Right_DoubleQuote "\"") (application/octet-stream) (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.ps) 
                        (Right_DoubleQuote "\"") ("           =>      ") (Right_DoubleQuote "\"") (application/postscript) (Right_DoubleQuote "\"") 
                        (",\n") ("\t") (Right_DoubleQuote "\"") (.torrent) (Right_DoubleQuote "\"") ("      =>      ") 
                        (Right_DoubleQuote "\"") (application/x-bittorrent) (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.dvi) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (application/x-dvi) (Right_DoubleQuote "\"") (",\n") 
                        ("\t") (Right_DoubleQuote "\"") (.gz) (Right_DoubleQuote "\"") ("           =>      ") (Right_DoubleQuote "\"") 
                        (application/x-gzip) (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.pac) (Right_DoubleQuote "\"") 
                        ("          =>      ") (Right_DoubleQuote "\"") (application/x-ns-proxy-autoconfig) (Right_DoubleQuote "\"") (",\n") ("\t") 
                        (Right_DoubleQuote "\"") (.swf) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") 
                        (application/x-shockwave-flash) (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.tar.gz) (Right_DoubleQuote "\"") 
                        ("       =>      ") (Right_DoubleQuote "\"") (application/x-tgz) (Right_DoubleQuote "\"") (",\n") ("\t") 
                        (Right_DoubleQuote "\"") (.tgz) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (application/x-tgz) 
                        (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.tar) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (application/x-tar) (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.zip) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (application/zip) (Right_DoubleQuote "\"") (",\n") ("\t") 
                        (Right_DoubleQuote "\"") (.mp3) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (audio/mpeg) 
                        (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.m3u) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (audio/x-mpegurl) (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.wma) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (audio/x-ms-wma) (Right_DoubleQuote "\"") (",\n") ("\t") 
                        (Right_DoubleQuote "\"") (.wax) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (audio/x-ms-wax) 
                        (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.ogg) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (application/ogg) (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.wav) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (audio/x-wav) (Right_DoubleQuote "\"") (",\n") ("\t") 
                        (Right_DoubleQuote "\"") (.gif) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (image/gif) 
                        (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.jpg) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (image/jpeg) (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.jpeg) 
                        (Right_DoubleQuote "\"") ("         =>      ") (Right_DoubleQuote "\"") (image/jpeg) (Right_DoubleQuote "\"") (",\n") ("\t") 
                        (Right_DoubleQuote "\"") (.png) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (image/png) 
                        (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.xbm) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (image/x-xbitmap) (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.xpm) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (image/x-xpixmap) (Right_DoubleQuote "\"") (",\n") ("\t") 
                        (Right_DoubleQuote "\"") (.xwd) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (image/x-xwindowdump) 
                        (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.css) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (text/css) (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.html) 
                        (Right_DoubleQuote "\"") ("         =>      ") (Right_DoubleQuote "\"") (text/html) (Right_DoubleQuote "\"") (",\n") ("\t") 
                        (Right_DoubleQuote "\"") (.htm) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (text/html) 
                        (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.js) (Right_DoubleQuote "\"") ("           =>      ") 
                        (Right_DoubleQuote "\"") (text/javascript) (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.asc) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (text/plain) (Right_DoubleQuote "\"") (",\n") ("\t") 
                        (Right_DoubleQuote "\"") (.c) (Right_DoubleQuote "\"") ("            =>      ") (Right_DoubleQuote "\"") (text/plain) 
                        (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.cpp) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (text/plain) (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.log) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (text/plain) (Right_DoubleQuote "\"") (",\n") ("\t") 
                        (Right_DoubleQuote "\"") (.conf) (Right_DoubleQuote "\"") ("         =>      ") (Right_DoubleQuote "\"") (text/plain) 
                        (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.text) (Right_DoubleQuote "\"") ("         =>      ") 
                        (Right_DoubleQuote "\"") (text/plain) (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.txt) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (text/plain) (Right_DoubleQuote "\"") (",\n") ("\t") 
                        (Right_DoubleQuote "\"") (.dtd) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (text/xml) 
                        (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.xml) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (text/xml) (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.mpeg) 
                        (Right_DoubleQuote "\"") ("         =>      ") (Right_DoubleQuote "\"") (video/mpeg) (Right_DoubleQuote "\"") (",\n") ("\t") 
                        (Right_DoubleQuote "\"") (.mpg) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (video/mpeg) 
                        (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.mov) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (video/quicktime) (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.qt) 
                        (Right_DoubleQuote "\"") ("           =>      ") (Right_DoubleQuote "\"") (video/quicktime) (Right_DoubleQuote "\"") (",\n") ("\t") 
                        (Right_DoubleQuote "\"") (.avi) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (video/x-msvideo) 
                        (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.asf) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (video/x-ms-asf) (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.asx) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (video/x-ms-asf) (Right_DoubleQuote "\"") (",\n") ("\t") 
                        (Right_DoubleQuote "\"") (.wmv) (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (video/x-ms-wmv) 
                        (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.bz2) (Right_DoubleQuote "\"") ("          =>      ") 
                        (Right_DoubleQuote "\"") (application/x-bzip) (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.tbz) 
                        (Right_DoubleQuote "\"") ("          =>      ") (Right_DoubleQuote "\"") (application/x-bzip-compressed-tar) 
                        (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") (.tar.bz2) (Right_DoubleQuote "\"") ("      =>      ") 
                        (Right_DoubleQuote "\"") (application/x-bzip-compressed-tar) (Right_DoubleQuote "\"") (",\n") ("\t") (Right_DoubleQuote "\"") 
                        (Right_DoubleQuote "\"") ("              =>      ") (Right_DoubleQuote "\"") (text/plain) (Right_DoubleQuote "\"") ("\n") (");\n") 
                        ("\n") ("my ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("app = builder {\n") 
                        ("\t# to be able to override ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("SIG{__WARN__} to log build time warnings\n") 
                        ("\tuse CGI::Carp; # it sets ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("SIG{__WARN__} itself\n") ("\n") ("\tmy ") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("logdir = ") (Right_DoubleQuote "\"") ($ VSub_Name "$fqgitdir") (/gitweb/) ($ VSub_Name "$httpd_only") 
                        (Right_DoubleQuote "\"") (";\n") ("\topen my ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("access_log_fh, '>>', ") 
                        (Right_DoubleQuote "\"") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) (logdir/access.log) (Right_DoubleQuote "\"") ("\n") 
                        ("\t\tor die ") (Right_DoubleQuote "\"") ("Couldn't open access log '") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("logdir/access.log': ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("!") 
                        (Right_DoubleQuote "\"") (";\n") ("\topen my ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("error_log_fh,  '>>', ") 
                        (Right_DoubleQuote "\"") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) (logdir/error.log) (Right_DoubleQuote "\"") ("\n") 
                        ("\t\tor die ") (Right_DoubleQuote "\"") ("Couldn't open error log '") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("logdir/error.log': ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("!") 
                        (Right_DoubleQuote "\"") (";\n") ("\n") ("\t") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) 
                        ("access_log_fh->autoflush(1);\n") ("\t") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("error_log_fh->autoflush(1);\n") ("\n") 
                        ("\t# redirect build time warnings to error.log\n") ("\t") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("SIG{'__WARN__'} = sub {\n") ("\t\tmy ") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("msg = shift;\n") ("\t\t# timestamp warning like in CGI::Carp::warn\n") ("\t\tmy ") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("stamp = CGI::Carp::stamp();\n") ("\t\t") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) 
                        ("msg =~ s/^/") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("stamp/gm;\n") ("\t\tprint ") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("error_log_fh ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("msg;\n") ("\t};\n") ("\n") 
                        ("\t# write errors to error.log, access to access.log\n") ("\tenable 'AccessLog',\n") ("\t\tformat => ") (Right_DoubleQuote "\"") (combined) 
                        (Right_DoubleQuote "\"") (",\n") ("\t\tlogger => sub { print ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) 
                        ("access_log_fh @_; };\n") ("\tenable sub {\n") ("\t\tmy ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("app = shift;\n") 
                        ("\t\tsub {\n") ("\t\t\tmy ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("env = shift;\n") ("\t\t\t") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("env->{'psgi.errors'} = ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("error_log_fh;\n") 
                        ("\t\t\t") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("app->(") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("env);\n") ("\t\t}\n") ("\t};\n") ("\t# gitweb currently doesn't work with ") ($ VSub_Name "$SIG") 
                        ("{CHLD} set to 'IGNORE',\n") ("\t# because it uses 'close ") ($ VSub_Name "$fd") (" or die...' on piped filehandle ") 
                        ($ VSub_Name "$fh") ("\n") ("\t# (which causes the parent process to wait for child to finish).\n") ("\tenable_if { ") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("SIG{'CHLD'} eq 'IGNORE' } sub {\n") ("\t\tmy ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) 
                        ("app = shift;\n") ("\t\tsub {\n") ("\t\t\tmy ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("env = shift;\n") 
                        ("\t\t\tlocal ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("SIG{'CHLD'} = 'DEFAULT';\n") ("\t\t\tlocal ") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("SIG{'CLD'}  = 'DEFAULT';\n") ("\t\t\t") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("app->(") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("env);\n") ("\t\t}\n") ("\t};\n") ("\t# serve static files, i.e. stylesheet, images, script\n") 
                        ("\tenable 'Static',\n") ("\t\tpath => sub { m!") (EscapedLiteralPart token:<Lit_EscapedChar "\\.">) ("(js|css|png)") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("! && s!^/gitweb/!! },\n") ("\t\troot => ") (Right_DoubleQuote "\"") ($ VSub_Name "$root") (/) 
                        (Right_DoubleQuote "\"") (",\n") ("\t\tencoding => 'utf-8'; # encoding for 'text/plain' files\n") 
                        ("\t# convert CGI application to PSGI app\n") ("\tPlack::App::WrapCGI->new(script => ") (Right_DoubleQuote "\"") ($ VSub_Name "$root") (/gitweb.cgi) 
                        (Right_DoubleQuote "\"") (")->to_app;\n") ("};\n") ("\n") ("# make it runnable as standalone app,\n") 
                        ("# like it would be run via 'plackup' utility\n") ("if (caller) {\n") ("\treturn ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("app;\n") 
                        ("} else {\n") ("\trequire Plack::Runner;\n") ("\n") ("\tmy ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) 
                        ("runner = Plack::Runner->new();\n") ("\t") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) 
                        ("runner->parse_options(qw(--env deployment --port ") ($ VSub_Name "$port") ("),\n") ("\t\t\t\t") (Right_DoubleQuote "\"") ($ VSub_Name "$local") 
                        (Right_DoubleQuote "\"") (" ? qw(--host 127.0.0.1) : ());\n") ("\t") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) 
                        ("runner->run(") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("app);\n") ("}\n") ("__END__\n")
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [2504]
                )
              ]
            )
            (C {(chmod)} {(a) (Lit_Other "+") (x)} {(DQ ($ VSub_Name "$fqgitdir") (/gitweb/gitweb.psgi))})
            (C {(rm)} {(-f)} {(DQ ($ VSub_Name "$conf"))})
          ]
          spids: [2484]
        )
      spids: [2479 2483]
    )
    (FuncDef
      name: gitweb_conf
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(DQ ($ VSub_Name "$fqgitdir") (/gitweb/gitweb_config.perl))}
                  spids: [3229]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {
                      (DQ ("#!@@PERL@@\n") ("our ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) 
                        ("projectroot = ") (Right_DoubleQuote "\"") 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [(C {(dirname)} {(DQ ($ VSub_Name "$fqgitdir"))})]
                            )
                          left_token: <Left_CommandSub "$(">
                          spids: [3244 3250]
                        ) (Right_DoubleQuote "\"") (";\n") ("our ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) 
                        ("git_temp = ") (Right_DoubleQuote "\"") ($ VSub_Name "$fqgitdir") (/gitweb/tmp) (Right_DoubleQuote "\"") (";\n") ("our ") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("projects_list = ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("projectroot;\n") ("\n") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("feature{'remote_heads'}{'default'} = [1];\n")
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [3236]
                )
              ]
            )
          ]
          spids: [3224]
        )
      spids: [3220 3223]
    )
    (FuncDef
      name: configure_httpd
      body: 
        (BraceGroup
          children: [
            (Case
              to_match: {(DQ ($ VSub_Name "$httpd"))}
              arms: [
                (case_arm
                  pat_list: [{(Lit_Other "*") (lighttpd) (Lit_Other "*")}]
                  action: [(C {(lighttpd_conf)})]
                  spids: [3288 3291 3297 -1]
                )
                (case_arm
                  pat_list: [
                    {(Lit_Other "*") (apache2) (Lit_Other "*")}
                    {(Lit_Other "*") (httpd) (Lit_Other "*")}
                  ]
                  action: [(C {(apache2_conf)})]
                  spids: [3300 3307 3313 -1]
                )
                (case_arm
                  pat_list: [{(webrick)}]
                  action: [(C {(webrick_conf)})]
                  spids: [3316 3317 3323 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*") (mongoose) (Lit_Other "*")}]
                  action: [(C {(mongoose_conf)})]
                  spids: [3326 3329 3335 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*") (plackup) (Lit_Other "*")}]
                  action: [(C {(plackup_conf)})]
                  spids: [3338 3341 3347 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [
                    (C {(echo)} {(DQ ("Unknown httpd specified: ") ($ VSub_Name "$httpd"))})
                    (C {(exit)} {(1)})
                  ]
                  spids: [3350 3351 3367 -1]
                )
              ]
              spids: [3279 3285 3370]
            )
          ]
          spids: [3276]
        )
      spids: [3272 3275]
    )
    (Case
      to_match: {(DQ ($ VSub_Name "$action"))}
      arms: [
        (case_arm
          pat_list: [{(stop)}]
          action: [(C {(stop_httpd)}) (C {(exit)} {(0)})]
          spids: [3383 3384 3395 -1]
        )
        (case_arm
          pat_list: [{(start)}]
          action: [(C {(start_httpd)}) (C {(exit)} {(0)})]
          spids: [3397 3398 3409 -1]
        )
        (case_arm
          pat_list: [{(restart)}]
          action: [(C {(stop_httpd)}) (C {(start_httpd)}) (C {(exit)} {(0)})]
          spids: [3411 3412 3426 -1]
        )
      ]
      spids: [3375 3381 3428]
    )
    (C {(gitweb_conf)})
    (C {(resolve_full_httpd)})
    (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name "$fqgitdir") (/gitweb/) ($ VSub_Name "$httpd_only"))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:conf)
          op: Equal
          rhs: {(DQ ($ VSub_Name "$fqgitdir") (/gitweb/) ($ VSub_Name "$httpd_only") (.conf))}
          spids: [3446]
        )
      ]
      spids: [3446]
    )
    (C {(configure_httpd)})
    (C {(start_httpd)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:url)
          op: Equal
          rhs: {(http) (Lit_Other ":") (//127.0.0.1) (Lit_Other ":") ($ VSub_Name "$port")}
          spids: [3460]
        )
      ]
      spids: [3460]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(test)} {(-n)} {(DQ ($ VSub_Name "$browser"))})
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (AndOr
              children: [
                (C {(httpd_is_ready)})
                (AndOr
                  children: [
                    (C {(git)} {(web--browse)} {(-b)} {(DQ ($ VSub_Name "$browser"))} 
                      {($ VSub_Name "$url")}
                    )
                    (C {(echo)} {($ VSub_Name "$url")})
                  ]
                  op_id: Op_DPipe
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [-1 3479]
        )
      ]
      else_action: [
        (AndOr
          children: [
            (C {(httpd_is_ready)})
            (AndOr
              children: [
                (C {(git)} {(web--browse)} {(-c)} {(DQ (instaweb.browser))} {($ VSub_Name "$url")})
                (C {(echo)} {($ VSub_Name "$url")})
              ]
              op_id: Op_DPipe
            )
          ]
          op_id: Op_DAmp
        )
      ]
      spids: [3504 3529]
    )
  ]
)