(command.CommandList
  children: [
    (C {<set>} {<-o>} {<nounset>})
    (C {<set>} {<-o>} {<pipefail>})
    (C {<set>} {<-o>} {<errexit>})
    (C {<source>} {<'benchmarks/common.sh'>})
    (C {<source>} {<'build/common.sh'>})
    (C {<readonly>} {<Id.Lit_VarLike 'BASE_DIR='> <'_tmp/ovm-build'>})
    (C {<readonly>} {<Id.Lit_VarLike 'TAR_DIR='> ($ Id.VSub_DollarName '$PWD') <'/_deps/ovm-build'>})
    (C {<readonly>} 
      {<Id.Lit_VarLike 'OIL_VERSION='> 
        (command_sub
          left_token: <Id.Left_DollarParen '$('>
          child: (C {<head>} {<-n>} {<1>} {<oil-version.txt>})
        )
      }
    )
    (C {<readonly>} {<-a>} 
      {<Id.Lit_VarLike 'TAR_SUBDIRS='> 
        (sh_array_literal left:<Id.Op_LParen _> words:[{<bash-4.4>} {<dash-0.5.9.1>}])
      }
    )
    (command.ShFunction
      name: tarballs
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_span_id: 192
                      stdin_parts: [<'bash-4.4.tar.gz\n'> <'dash-0.5.9.1.tar.gz\n'> <'mksh-R56c.tgz\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: download
      body: 
        (BraceGroup
          children: [
            (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$TAR_DIR')})
            (command.Pipeline
              children: [
                (C {<tarballs>})
                (C {<xargs>} {<-n>} {<1>} {<-I>} {<Id.Lit_LBrace '{'> <Id.Lit_RBrace '}'>} {<--verbose>} 
                  {<-->} {<wget>} {<--directory>} {($ Id.VSub_DollarName '$TAR_DIR')} 
                  {(SQ <'https://www.oilshell.org/blob/ovm-build/{}'>)}
                )
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: extract-other
      body: 
        (BraceGroup
          children: [
            (command.TimeBlock
              pipeline: 
                (command.ForEach
                  iter_names: [f]
                  iterable: 
                    (for_iter.Words
                      words: [{($ Id.VSub_DollarName '$TAR_DIR') <'/'> <Id.Lit_Star '*'> <gz>}]
                    )
                  body: 
                    (command.DoGroup
                      children: [
                        (C {<tar>} {<-x>} {<--directory>} {($ Id.VSub_DollarName '$TAR_DIR')} {<--file>} 
                          {($ Id.VSub_DollarName '$f')}
                        )
                      ]
                    )
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: extract-oil
      body: 
        (BraceGroup
          children: [
            (C {<rm>} {<-r>} {<-f>} {<-v>} {($ Id.VSub_DollarName '$TAR_DIR') <'/oil-'> <Id.Lit_Star '*'>})
            (C {<tar>} {<-x>} {<--directory>} {($ Id.VSub_DollarName '$TAR_DIR')} {<--file>} 
              {<'_release/oil.tar'>}
            )
          ]
        )
    )
    (command.ShFunction
      name: sizes-tsv
      body: 
        (BraceGroup
          children: [
            (C {<echo>} 
              {
                (single_quoted
                  left: <Id.Left_DollarSingleQuote '$\''>
                  tokens: [
                    <Id.Char_Literals host_label>
                    <Id.Char_OneChar '\\t'>
                    <Id.Char_Literals num_bytes>
                    <Id.Char_OneChar '\\t'>
                    <Id.Char_Literals path>
                  ]
                  multiline: F
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'host='> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<hostname>})
                )
              }
            )
            (C {<find>} {(DQ ($ Id.VSub_At '$@'))} {<-maxdepth>} {<0>} {<-printf>} 
              {
                (DQ ($ Id.VSub_DollarName '$host') <Id.Lit_BadBackslash '\\'> <'t%s'> 
                  <Id.Lit_BadBackslash '\\'> <'t%p'> <Id.Lit_BadBackslash '\\'> <n>
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: measure-sizes
      body: 
        (BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'prefix='> 
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_ColonHyphen ':-'>
                      arg_word: 
                        {($ Id.VSub_DollarName '$BASE_DIR') <Id.Lit_Slash '/'> <raw> <Id.Lit_Slash '/'> 
                          <demo>
                        }
                    )
                )
              }
            )
            (command.Simple
              words: [
                {<sizes-tsv>}
                {($ Id.VSub_DollarName '$TAR_DIR') <'/oil-'> ($ Id.VSub_DollarName '$OIL_VERSION') 
                  <'/_build/oil/bytecode-opy.zip'>
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(${ Id.VSub_Name prefix) <.bytecode-size.tsv>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [
                {<sizes-tsv>}
                {($ Id.VSub_DollarName '$BASE_DIR') <'/bin/'> <Id.Lit_Star '*'> <'/oil.'> 
                  <Id.Lit_Star '*'>
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(${ Id.VSub_Name prefix) <.bin-sizes.tsv>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [
                {<sizes-tsv>}
                {($ Id.VSub_DollarName '$BASE_DIR') <'/bin/'> <Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'> 
                  <sh>
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(${ Id.VSub_Name prefix) <.other-shell-sizes.tsv>}
                )
              ]
              do_fork: T
            )
            (C {<log>} {(DQ <'Wrote '> (${ Id.VSub_Name prefix) <'.*.tsv'>)})
          ]
        )
    )
    (command.ShFunction
      name: bytecode-size
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'zip='> <'_build/oil/bytecode.zip'>})
            (command.Pipeline
              children: [(C {<unzip>} {<-l>} {($ Id.VSub_DollarName '$zip')}) (C {<tail>} {<-n>} {<1>})]
              negated: F
            )
            (C {<ls>} {<-l>} {($ Id.VSub_DollarName '$zip')})
          ]
        )
    )
    (command.ShFunction
      name: clang-oil-dbg
      body: 
        (BraceGroup
          children: [
            (C {<make>} {<clean>})
            (command.Simple
              words: [{<make>} {<'_build/oil/ovm-dbg'>}]
              more_env: [(env_pair name:CC val:{($ Id.VSub_DollarName '$CLANG')} spids:[612])]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: build-task
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'raw_dir='> ($ Id.VSub_Number '$1')})
            (C {<local>} {<Id.Lit_VarLike 'job_id='> ($ Id.VSub_Number '$2')})
            (C {<local>} {<Id.Lit_VarLike 'host='> ($ Id.VSub_Number '$3')})
            (C {<local>} {<Id.Lit_VarLike 'host_hash='> ($ Id.VSub_Number '$4')})
            (C {<local>} {<Id.Lit_VarLike 'compiler_path='> ($ Id.VSub_Number '$5')})
            (C {<local>} {<Id.Lit_VarLike 'compiler_hash='> ($ Id.VSub_Number '$6')})
            (C {<local>} {<Id.Lit_VarLike 'src_dir='> ($ Id.VSub_Number '$7')})
            (C {<local>} {<Id.Lit_VarLike 'action='> ($ Id.VSub_Number '$8')})
            (C {<local>} 
              {<Id.Lit_VarLike 'times_out='> 
                (DQ ($ Id.VSub_DollarName '$PWD') <'/'> ($ Id.VSub_DollarName '$raw_dir') <'/'> 
                  ($ Id.VSub_DollarName '$host') <.> ($ Id.VSub_DollarName '$job_id') <.times.tsv>
                )
              }
            )
            (C {<local>} {<-a>} 
              {<Id.Lit_VarLike 'TIME_PREFIX='> 
                (sh_array_literal
                  left: <Id.Op_LParen _>
                  words: [
                    {<time-tsv>}
                    {<--output>}
                    {($ Id.VSub_DollarName '$times_out')}
                    {<--field>}
                    {(DQ ($ Id.VSub_DollarName '$host'))}
                    {<--field>}
                    {(DQ ($ Id.VSub_DollarName '$host_hash'))}
                    {<--field>}
                    {(DQ ($ Id.VSub_DollarName '$compiler_path'))}
                    {<--field>}
                    {(DQ ($ Id.VSub_DollarName '$compiler_hash'))}
                    {<--field>}
                    {(DQ ($ Id.VSub_DollarName '$src_dir'))}
                    {<--field>}
                    {(DQ ($ Id.VSub_DollarName '$action'))}
                  ]
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'bin_base_dir='> ($ Id.VSub_DollarName '$PWD') <'/'> 
                ($ Id.VSub_DollarName '$BASE_DIR') <'/bin'>
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'bin_dir='> 
                (DQ ($ Id.VSub_DollarName '$bin_base_dir') <'/'> 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<basename>} {($ Id.VSub_DollarName '$compiler_path')})
                  )
                )
              }
            )
            (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$bin_dir')})
            (command.Simple
              words: [{<pushd>} {($ Id.VSub_DollarName '$src_dir')}]
              redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
              do_fork: T
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$action')}
              arms: [
                (case_arm
                  pat_list: [{<configure>}]
                  action: [
                    (C 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Name TIME_PREFIX>
                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                          )
                        )
                      } {<-->} {<'./configure'>}
                    )
                    (C {<make>} {<clean>})
                  ]
                  spids: [851 852 887 -1]
                )
                (case_arm
                  pat_list: [{<make>}]
                  action: [
                    (C 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Name TIME_PREFIX>
                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                          )
                        )
                      } {<-->} {<make>} {<Id.Lit_VarLike 'CC='> ($ Id.VSub_DollarName '$compiler_path')}
                    )
                    (C {<local>} {<target>})
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$src_dir')}
                      arms: [
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'> <'/bash'> <Id.Lit_Star '*'>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:target)
                                  op: assign_op.Equal
                                  rhs: {<bash>}
                                  spids: [931]
                                )
                              ]
                            )
                          ]
                          spids: [925 928 935 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'> <'/dash'> <Id.Lit_Star '*'>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:target)
                                  op: assign_op.Equal
                                  rhs: {<'src/dash'>}
                                  spids: [944]
                                )
                              ]
                            )
                          ]
                          spids: [938 941 948 -1]
                        )
                      ]
                    )
                    (C {<strip>} {($ Id.VSub_DollarName '$target')})
                    (C {<cp>} {<-v>} {($ Id.VSub_DollarName '$target')} 
                      {($ Id.VSub_DollarName '$bin_dir')}
                    )
                  ]
                  spids: [891 892 969 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (C {<local>} {<Id.Lit_VarLike 'target='> ($ Id.VSub_DollarName '$action')})
                    (C 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Name TIME_PREFIX>
                            bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                          )
                        )
                      } {<-->} {<make>} {<Id.Lit_VarLike 'CC='> ($ Id.VSub_DollarName '$compiler_path')} 
                      {($ Id.VSub_DollarName '$target')}
                    )
                    (C {<cp>} {<-v>} {($ Id.VSub_DollarName '$target')} 
                      {($ Id.VSub_DollarName '$bin_dir')}
                    )
                  ]
                  spids: [973 974 1016 -1]
                )
              ]
            )
            (command.Simple
              words: [{<popd>}]
              redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: oil-tasks
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'provenance='> ($ Id.VSub_Number '$1')})
            (C {<local>} 
              {<Id.Lit_VarLike 'dir='> 
                (DQ ($ Id.VSub_DollarName '$TAR_DIR') <'/oil-'> ($ Id.VSub_DollarName '$OIL_VERSION'))
              }
            )
            (command.Pipeline
              children: [
                (C {<cat>} {($ Id.VSub_DollarName '$provenance')})
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<read>} {<line>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      children: [
                        (C {<echo>} {(DQ ($ Id.VSub_DollarName '$line'))} 
                          {($ Id.VSub_DollarName '$dir')} {<configure>}
                        )
                        (C {<echo>} {(DQ ($ Id.VSub_DollarName '$line'))} 
                          {($ Id.VSub_DollarName '$dir')} {<'_bin/oil.ovm'>}
                        )
                        (C {<echo>} {(DQ ($ Id.VSub_DollarName '$line'))} 
                          {($ Id.VSub_DollarName '$dir')} {<'_bin/oil.ovm-dbg'>}
                        )
                      ]
                    )
                )
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: other-shell-tasks
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'provenance='> ($ Id.VSub_Number '$1')})
            (C {<local>} {<Id.Lit_VarLike 'tarball='> (SQ <'_release/oil.0.5.alpha1.gz'>)})
            (command.Pipeline
              children: [
                (C {<cat>} {($ Id.VSub_DollarName '$provenance')})
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<read>} {<line>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      children: [
                        (command.Case
                          to_match: {($ Id.VSub_DollarName '$line')}
                          arms: [
                            (case_arm
                              pat_list: [{<Id.Lit_Star '*'> <clang> <Id.Lit_Star '*'>}]
                              action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)]
                              spids: [1188 1191 1197 -1]
                            )
                          ]
                        )
                        (command.ForEach
                          iter_names: [dir]
                          iterable: 
                            (for_iter.Words
                              words: [
                                {
                                  (DQ 
                                    (braced_var_sub
                                      token: <Id.VSub_Name TAR_SUBDIRS>
                                      bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                    )
                                  )
                                }
                              ]
                            )
                          body: 
                            (command.DoGroup
                              children: [
                                (C {<echo>} {(DQ ($ Id.VSub_DollarName '$line'))} 
                                  {($ Id.VSub_DollarName '$TAR_DIR') <'/'> 
                                    ($ Id.VSub_DollarName '$dir')
                                  } {<configure>}
                                )
                                (C {<echo>} {(DQ ($ Id.VSub_DollarName '$line'))} 
                                  {($ Id.VSub_DollarName '$TAR_DIR') <'/'> 
                                    ($ Id.VSub_DollarName '$dir')
                                  } {<make>}
                                )
                              ]
                            )
                        )
                      ]
                    )
                )
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction name:oil-historical-tasks body:(BraceGroup children:[(C {<echo>})]))
    (C {<readonly>} 
      {<Id.Lit_VarLike 'HEADER='> 
        (single_quoted
          left: <Id.Left_DollarSingleQuote '$\''>
          tokens: [
            <Id.Char_Literals status>
            <Id.Char_OneChar '\\t'>
            <Id.Char_Literals elapsed_secs>
            <Id.Char_OneChar '\\t'>
            <Id.Char_Literals host_name>
            <Id.Char_OneChar '\\t'>
            <Id.Char_Literals host_hash>
            <Id.Char_OneChar '\\t'>
            <Id.Char_Literals compiler_path>
            <Id.Char_OneChar '\\t'>
            <Id.Char_Literals compiler_hash>
            <Id.Char_OneChar '\\t'>
            <Id.Char_Literals src_dir>
            <Id.Char_OneChar '\\t'>
            <Id.Char_Literals action>
          ]
          multiline: F
        )
      }
    )
    (C {<readonly>} {<Id.Lit_VarLike 'NUM_COLUMNS='> <7>})
    (command.ShFunction
      name: measure
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'provenance='> ($ Id.VSub_Number '$1')})
            (C {<local>} 
              {<Id.Lit_VarLike 'raw_dir='> 
                (braced_var_sub
                  token: <Id.VSub_Number 2>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_ColonHyphen ':-'>
                      arg_word: {($ Id.VSub_DollarName '$BASE_DIR') <Id.Lit_Slash '/'> <raw>}
                    )
                )
              }
            )
            (C {<extract-oil>})
            (C {<local>} 
              {<Id.Lit_VarLike 'name='> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<basename>} {($ Id.VSub_DollarName '$provenance')})
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'prefix='> 
                (braced_var_sub
                  token: <Id.VSub_Name name>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VOp1_Percent '%'>
                      arg_word: {<.compiler-provenance.txt>}
                    )
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'times_out='> 
                (DQ ($ Id.VSub_DollarName '$raw_dir') <'/'> ($ Id.VSub_DollarName '$prefix') 
                  <.times.tsv>
                )
              }
            )
            (C {<mkdir>} {<-p>} 
              (word.BracedTree
                parts: [
                  ($ Id.VSub_DollarName '$BASE_DIR')
                  <'/'>
                  (word_part.BracedTuple words:[{<raw>} {<stage1>} {<bin>}])
                ]
              ) {($ Id.VSub_DollarName '$raw_dir')}
            )
            (command.Simple
              words: [{<echo>} {(DQ ($ Id.VSub_DollarName '$HEADER'))}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$times_out')}
                )
              ]
              do_fork: T
            )
            (C {<local>} {<Id.Lit_VarLike 't1='> ($ Id.VSub_DollarName '$BASE_DIR') <'/oil-tasks.txt'>})
            (C {<local>} 
              {<Id.Lit_VarLike 't2='> ($ Id.VSub_DollarName '$BASE_DIR') <'/other-shell-tasks.txt'>}
            )
            (command.Simple
              words: [{<oil-tasks>} {($ Id.VSub_DollarName '$provenance')}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$t1')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<other-shell-tasks>} {($ Id.VSub_DollarName '$provenance')}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$t2')}
                )
              ]
              do_fork: T
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.TimeBlock
                  pipeline: 
                    (command.Pipeline
                      children: [
                        (C {<cat>} {($ Id.VSub_DollarName '$t1')} {($ Id.VSub_DollarName '$t2')})
                        (C {<xargs>} {<-n>} {($ Id.VSub_DollarName '$NUM_COLUMNS')} {<-->} 
                          {($ Id.VSub_Number '$0')} {<build-task>} {($ Id.VSub_DollarName '$raw_dir')}
                        )
                      ]
                      negated: F
                    )
                )
                (C {<die>} {(DQ <'*** Some tasks failed. ***'>)})
              ]
            )
            (C {<measure-sizes>} 
              {($ Id.VSub_DollarName '$raw_dir') <'/'> ($ Id.VSub_DollarName '$prefix')}
            )
            (C {<cp>} {<-v>} {($ Id.VSub_DollarName '$provenance')} {($ Id.VSub_DollarName '$raw_dir')})
          ]
        )
    )
    (command.ShFunction
      name: stage1
      body: 
        (BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'raw_dir='> 
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_ColonHyphen ':-'>
                      arg_word: {($ Id.VSub_DollarName '$BASE_DIR') <Id.Lit_Slash '/'> <raw>}
                    )
                )
              }
            )
            (C {<local>} {<Id.Lit_VarLike 'out='> ($ Id.VSub_DollarName '$BASE_DIR') <'/stage1'>})
            (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$out')})
            (C {<local>} {<x>})
            (C {<local>} {<-a>} {<a>} {<b>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:x)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$out') <'/times.tsv'>}
                  spids: [1581]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:a)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (sh_array_literal
                        left: <Id.Op_LParen _>
                        words: [
                          {($ Id.VSub_DollarName '$raw_dir') <'/flanders.'> <Id.Lit_Star '*'> 
                            <.times.tsv>
                          }
                        ]
                      )
                    }
                  spids: [1586]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:b)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (sh_array_literal
                        left: <Id.Op_LParen _>
                        words: [
                          {($ Id.VSub_DollarName '$raw_dir') <'/lisa.'> <Id.Lit_Star '*'> <.times.tsv>}
                        ]
                      )
                    }
                  spids: [1595]
                )
              ]
            )
            (command.Simple
              words: [
                {<tsv-concat>}
                {
                  (braced_var_sub
                    token: <Id.VSub_Name a>
                    bracket_op: 
                      (bracket_op.ArrayIndex
                        expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>})
                      )
                  )
                }
                {
                  (braced_var_sub
                    token: <Id.VSub_Name b>
                    bracket_op: 
                      (bracket_op.ArrayIndex
                        expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>})
                      )
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$x')}
                )
              ]
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:x)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$out') <'/bytecode-size.tsv'>}
                  spids: [1628]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:a)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (sh_array_literal
                        left: <Id.Op_LParen _>
                        words: [
                          {($ Id.VSub_DollarName '$raw_dir') <'/flanders.'> <Id.Lit_Star '*'> 
                            <.bytecode-size.tsv>
                          }
                        ]
                      )
                    }
                  spids: [1633]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:b)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (sh_array_literal
                        left: <Id.Op_LParen _>
                        words: [
                          {($ Id.VSub_DollarName '$raw_dir') <'/lisa.'> <Id.Lit_Star '*'> 
                            <.bytecode-size.tsv>
                          }
                        ]
                      )
                    }
                  spids: [1642]
                )
              ]
            )
            (command.Simple
              words: [
                {<tsv-concat>}
                {
                  (braced_var_sub
                    token: <Id.VSub_Name a>
                    bracket_op: 
                      (bracket_op.ArrayIndex
                        expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>})
                      )
                  )
                }
                {
                  (braced_var_sub
                    token: <Id.VSub_Name b>
                    bracket_op: 
                      (bracket_op.ArrayIndex
                        expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>})
                      )
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$x')}
                )
              ]
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:x)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$out') <'/bin-sizes.tsv'>}
                  spids: [1675]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:a)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (sh_array_literal
                        left: <Id.Op_LParen _>
                        words: [
                          {($ Id.VSub_DollarName '$raw_dir') <'/flanders.'> <Id.Lit_Star '*'> 
                            <.bin-sizes.tsv>
                          }
                        ]
                      )
                    }
                  spids: [1680]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:b)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (sh_array_literal
                        left: <Id.Op_LParen _>
                        words: [
                          {($ Id.VSub_DollarName '$raw_dir') <'/lisa.'> <Id.Lit_Star '*'> 
                            <.bin-sizes.tsv>
                          }
                        ]
                      )
                    }
                  spids: [1689]
                )
              ]
            )
            (command.Simple
              words: [
                {<tsv-concat>}
                {
                  (braced_var_sub
                    token: <Id.VSub_Name a>
                    bracket_op: 
                      (bracket_op.ArrayIndex
                        expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>})
                      )
                  )
                }
                {
                  (braced_var_sub
                    token: <Id.VSub_Name b>
                    bracket_op: 
                      (bracket_op.ArrayIndex
                        expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>})
                      )
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$x')}
                )
              ]
              do_fork: T
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'raw_data_tsv='> ($ Id.VSub_DollarName '$out') <'/raw-data.tsv'>}
            )
            (BraceGroup
              children: [
                (C {<echo>} {(SQ <path>)})
                (C {<echo>} 
                  {
                    (braced_var_sub
                      token: <Id.VSub_Name a>
                      bracket_op: 
                        (bracket_op.ArrayIndex
                          expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>})
                        )
                    )
                  }
                )
                (C {<echo>} 
                  {
                    (braced_var_sub
                      token: <Id.VSub_Name b>
                      bracket_op: 
                        (bracket_op.ArrayIndex
                          expr: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>})
                        )
                    )
                  }
                )
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$raw_data_tsv')}
                )
              ]
            )
            (C {<head>} {($ Id.VSub_DollarName '$out') <'/'> <Id.Lit_Star '*'>})
            (C {<wc>} {<-l>} {($ Id.VSub_DollarName '$out') <'/'> <Id.Lit_Star '*'>})
          ]
        )
    )
    (command.ShFunction
      name: print-report
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'in_dir='> ($ Id.VSub_Number '$1')})
            (C {<local>} {<Id.Lit_VarLike 'base_url='> (SQ <'../../web'>)})
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_span_id: 1881
                      stdin_parts: [
                        <'<!DOCTYPE html>\n'>
                        <'<html>\n'>
                        <'  <head>\n'>
                        <'    <title>OVM Build Performance</title>\n'>
                        <'    <script type='>
                        <Id.Right_DoubleQuote '"'>
                        <'text/javascript'>
                        <Id.Right_DoubleQuote '"'>
                        <' src='>
                        <Id.Right_DoubleQuote '"'>
                        ($ Id.VSub_DollarName '$base_url')
                        <'/table/table-sort.js'>
                        <Id.Right_DoubleQuote '"'>
                        <'></script>\n'>
                        <'    <link rel='>
                        <Id.Right_DoubleQuote '"'>
                        <stylesheet>
                        <Id.Right_DoubleQuote '"'>
                        <' type='>
                        <Id.Right_DoubleQuote '"'>
                        <'text/css'>
                        <Id.Right_DoubleQuote '"'>
                        <' href='>
                        <Id.Right_DoubleQuote '"'>
                        ($ Id.VSub_DollarName '$base_url')
                        <'/table/table-sort.css'>
                        <Id.Right_DoubleQuote '"'>
                        <' />\n'>
                        <'    <link rel='>
                        <Id.Right_DoubleQuote '"'>
                        <stylesheet>
                        <Id.Right_DoubleQuote '"'>
                        <' type='>
                        <Id.Right_DoubleQuote '"'>
                        <'text/css'>
                        <Id.Right_DoubleQuote '"'>
                        <' href='>
                        <Id.Right_DoubleQuote '"'>
                        ($ Id.VSub_DollarName '$base_url')
                        <'/benchmarks.css'>
                        <Id.Right_DoubleQuote '"'>
                        <' />\n'>
                        <'\n'>
                        <'  </head>\n'>
                        <'  <body>\n'>
                        <'    <p id='>
                        <Id.Right_DoubleQuote '"'>
                        <home-link>
                        <Id.Right_DoubleQuote '"'>
                        <'>\n'>
                        <'      <a href='>
                        <Id.Right_DoubleQuote '"'>
                        <'/'>
                        <Id.Right_DoubleQuote '"'>
                        <'>oilshell.org</a>\n'>
                        <'    </p>\n'>
                        <'    <h2>OVM Build Performance</h2>\n'>
                        <'\n'>
                        <'    <h3>Elapsed Time by Host and Compiler</h3>\n'>
                        <'\n'>
                        <
'    <p>We measure the build speed of <code>bash</code> and <code>dash</code>\n'
                        >
                        <'    for comparison.\n'>
                        <'    </p>\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (C {<tsv2html>} {<--css-class-pattern>} {(SQ <'special ^oil'>)} 
              {($ Id.VSub_DollarName '$in_dir') <'/times.tsv'>}
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_span_id: 1913
                      stdin_parts: [
                        <'    <h3>Binary Size</h3>\n'>
                        <'\n'>
                        <'    <p>The oil binary has two portions:\n'>
                        <'      <ol>\n'>
                        <'        <li>Architecture-independent <code>bytecode.zip</code></li>\n'>
                        <'        <li>Architecture- and compiler- dependent native code\n'>
                        <'            (<code>_build/oil/ovm*</code>)\n'>
                        <'        </li>\n'>
                        <'      </ol>\n'>
                        <'    </p>\n'>
                        <'\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (C {<tsv2html>} {<--css-class-pattern>} {(SQ <'special /gcc/oil.ovm$'>)} 
              {($ Id.VSub_DollarName '$in_dir') <'/sizes.tsv'>}
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_span_id: 1940
                      stdin_parts: [<'\n'> <'    <h3>Host and Compiler Details</h3>\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (C {<tsv2html>} {($ Id.VSub_DollarName '$in_dir') <'/hosts.tsv'>})
            (C {<tsv2html>} {($ Id.VSub_DollarName '$in_dir') <'/compilers.tsv'>})
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_span_id: 1963
                      stdin_parts: [<'  </body>\n'> <'</html>\n'>]
                    )
                )
              ]
              do_fork: T
            )
          ]
        )
    )
    (C {(DQ ($ Id.VSub_At '$@'))})
  ]
)