(CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (C {(source)} {(test/common.sh)})
    (FuncDef
      name: _banner
      body: 
        (BraceGroup
          children: [(C {(echo)} {(-----)}) (C {(echo)} {(DQ ($ VSub_At '$@'))}) (C {(echo)} {(-----)})]
          spids: [80]
        )
      spids: [76 79]
    )
    (FuncDef
      name: prereq
      body: 
        (BraceGroup
          children: [(C {(test/unit.sh)} {(all)}) (C {(test/spec.sh)} {(all)})]
          spids: [109]
        )
      spids: [105 108]
    )
    (FuncDef
      name: measure-all
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:provenance)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [133]
                )
              ]
              spids: [131]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:base_dir)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {(..) (Lit_Slash /) (benchmark-data)}
                          )
                        spids: [140 146]
                      )
                    }
                  spids: [139]
                )
              ]
              spids: [137]
            )
            (C {(benchmarks/vm-baseline.sh)} {(measure)} {($ VSub_Name '$provenance')} 
              {($ VSub_Name '$base_dir') (/vm-baseline)}
            )
            (C {(benchmarks/osh-runtime.sh)} {(measure)} {($ VSub_Name '$provenance')} 
              {($ VSub_Name '$base_dir') (/osh-runtime)}
            )
            (C {(benchmarks/osh-parser.sh)} {(measure)} {($ VSub_Name '$provenance')} 
              {($ VSub_Name '$base_dir') (/osh-parser)}
            )
          ]
          spids: [128]
        )
      spids: [124 127]
    )
    (FuncDef
      name: all
      body: 
        (BraceGroup
          children: [
            (C {(test/spec.sh)} {(install-shells)})
            (C {(sudo)} {(apt)} {(install)} {(python-dev)})
            (C {(make)} {(clean)})
            (C {(build/dev.sh)} {(all)})
            (C {(_banner)} {(SQ <'OSH dev build'>)})
            (C {(bin/osh)} {(-c)} {(SQ <'echo OSH dev build'>)})
            (C {(build/prepare.sh)} {(configure)})
            (C {(build/prepare.sh)} {(build-python)})
            (C {(make)} {(_bin/oil.ovm)})
            (C {(scripts/run.sh)} {(make-bin-links)})
            (C {(_banner)} {(SQ <'OSH production build'>)})
            (C {(_bin/osh)} {(-c)} {(SQ <'echo OSH production build'>)})
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:provenance) op:Equal spids:[297])]
              spids: [295]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:provenance)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(benchmarks/id.sh)} {(shell-provenance)})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [301 305]
                      )
                    }
                  spids: [300]
                )
              ]
              spids: [300]
            )
            (C {(measure-all)} {($ VSub_Name '$provenance')})
          ]
          spids: [195]
        )
      spids: [191 194]
    )
    (FuncDef
      name: ovm-build
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:base_dir)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {(..) (Lit_Slash /) (benchmark-data)}
                          )
                        spids: [346 352]
                      )
                    }
                  spids: [345]
                )
              ]
              spids: [343]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:provenance) op:Equal spids:[358])]
              spids: [356]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:provenance)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(benchmarks/id.sh)} {(compiler-provenance)})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [362 366]
                      )
                    }
                  spids: [361]
                )
              ]
              spids: [361]
            )
            (C {(benchmarks/ovm-build.sh)} {(measure)} {($ VSub_Name '$provenance')} 
              {($ VSub_Name '$base_dir') (/ovm-build)}
            )
          ]
          spids: [340]
        )
      spids: [336 339]
    )
    (FuncDef
      name: demo-tasks
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:provenance)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [404]
                )
              ]
              spids: [402]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:name)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(basename)} {($ VSub_Name '$provenance')})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [416 420]
                      )
                    }
                  spids: [415]
                )
              ]
              spids: [413]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:job_id)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name name>
                        suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(.provenance.txt)})
                        spids: [426 430]
                      )
                    }
                  spids: [425]
                )
              ]
              spids: [423]
            )
            (C {(echo)} {(DQ ('JOB ID: ') ($ VSub_Name '$job_id'))})
            (Pipeline
              children: [
                (C {(cat)} {($ VSub_Name '$provenance')})
                (While
                  cond: [
                    (Sentence
                      child: (C {(read)} {(_)} {(_)} {(_)} {(sh_path)} {(_)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  body: 
                    (DoGroup
                      children: [
                        (ForEach
                          iter_name: i
                          iter_words: [{(1)} {(2)} {(3)}]
                          do_arg_iter: F
                          body: 
                            (DoGroup
                              children: [(C {(echo)} {($ VSub_Name '$i')} {($ VSub_Name '$sh_path')})]
                              spids: [484 494]
                            )
                          spids: [476 482]
                        )
                      ]
                      spids: [468 497]
                    )
                )
              ]
              negated: F
            )
          ]
          spids: [399]
        )
      spids: [395 398]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)