(CommandList
  children: [
    (C {(set)} {(-eu)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:RELNOTES_TYPES)
          op: Equal
          rhs: {(ArrayLiteralPart words:[{(DQ (INC))}{(DQ (NEW))}{(DQ )}])}
          spids: [74]
        )
      ]
      spids: [74]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:RELNOTES_DESC)
          op: Equal
          rhs: 
            {
              (ArrayLiteralPart
                words: [
                  {(DQ ("Incompatible changes"))}
                  {(DQ ("New features"))}
                  {(DQ ("Important changes"))}
                ]
              )
            }
          spids: [88]
        )
      ]
      spids: [88]
    )
    (FuncDef
      name: get_last_release
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:changelog)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [133]
                )
              ]
              spids: [131]
            )
            (AndOr
              children: [
                (C {(Lit_Other "[")} {(-f)} {(DQ ($ VSub_Name "$changelog"))} {(Lit_Other "]")})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
              op_id: Op_DPipe
            )
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:BASELINE_LINE)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(grep)} {(-m)} {(1)} {(-n)} {(SQ <"^Baseline: ">)} 
                                    {(DQ ($ VSub_Name "$changelog"))}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [160 176]
                          )
                        }
                      spids: [159]
                    )
                  ]
                  spids: [157]
                )
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
              op_id: Op_DPipe
            )
            (AndOr
              children: [
                (C {(Lit_Other "[")} {(-n)} {(DQ (${ VSub_Name BASELINE_LINE))} {(Lit_Other "]")})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
              op_id: Op_DPipe
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:BASELINE_LINENB)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(echo)} {(DQ (${ VSub_Name BASELINE_LINE))})
                                  (C {(cut)} {(-d)} {(DQ (":"))} {(-f)} {(1)})
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [210 232]
                      )
                    }
                  spids: [209]
                )
              ]
              spids: [207]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:BASELINE)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(echo)} {(DQ (${ VSub_Name BASELINE_LINE))})
                                  (C {(cut)} {(-d)} {(DQ (" "))} {(-f)} {(2)})
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [236 258]
                      )
                    }
                  spids: [235]
                )
              ]
              spids: [235]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CHERRYPICK_LINE)
                  op: Equal
                  rhs: 
                    {
                      (ArithSubPart
                        anode: 
                          (ArithBinary
                            op_id: Arith_Plus
                            left: (ArithWord w:{($ VSub_Name "$BASELINE_LINENB")})
                            right: (ArithWord w:{(Lit_Digits 3)})
                          )
                        spids: [264 271]
                      )
                    }
                  spids: [263]
                )
              ]
              spids: [261]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CHERRY_PICKS)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(tail)} {(-n)} {(Lit_Other "+") (${ VSub_Name CHERRYPICK_LINE)} 
                                    {(DQ ($ VSub_Name "$changelog"))}
                                  )
                                  (C {(grep)} {(-m)} {(1)} {(DQ ("^") (Lit_Other "$"))} {(-B999)})
                                  (C {(grep)} {(-E)} {(SQ <"^   \\+ [a-z0-9]+:">)})
                                  (C {(cut)} {(-d)} {(DQ (":"))} {(-f)} {(1)})
                                  (C {(cut)} {(-d)} {(DQ ("+"))} {(-f)} {(2)})
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [289 361]
                      )
                    }
                  spids: [288]
                )
              ]
              spids: [286]
            )
            (C {(echo)} {($ VSub_Name "$BASELINE")} {($ VSub_Name "$CHERRY_PICKS")})
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [128]
        )
      spids: [122 127]
    )
    (FuncDef
      name: get_release_notes_commits
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:baseline)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [398]
                )
              ]
              spids: [396]
            )
            (C {(shift)})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cherry_picks)
                  op: Equal
                  rhs: {(DQ ($ VSub_At "$@"))}
                  spids: [407]
                )
              ]
              spids: [405]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:rollback_commits)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(git)} {(log)} {(--oneline)} {(-E)} 
                                    {(--grep) (Lit_Other "=") (SQ <"^Rollback of commit [a-z0-9]+.$">)} {(${ VSub_Name baseline) (..)}
                                  )
                                  (C {(grep)} {(-E)} {(SQ <"^[a-z0-9]+ Rollback of commit [a-z0-9]+.$">)})
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [416 447]
                      )
                    }
                  spids: [415]
                )
              ]
              spids: [413]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:rollback_hashes)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(echo)} {(DQ ($ VSub_Name "$rollback_commits"))})
                                  (C {(cut)} {(-d)} {(DQ (" "))} {(-f)} {(1)})
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [453 473]
                      )
                    }
                  spids: [452]
                )
              ]
              spids: [450]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:rolledback_hashes)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(echo)} {(DQ ($ VSub_Name "$rollback_commits"))})
                                  (C {(cut)} {(-d)} {(DQ (" "))} {(-f)} {(5)})
                                  (C {(sed)} {(-E)} {(SQ <"s/^(.......).*$/\\1/">)})
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [479 509]
                      )
                    }
                  spids: [478]
                )
              ]
              spids: [476]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:exclude_hashes)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(echo)} {($ VSub_Name "$cherry_picks")} 
                                    {($ VSub_Name "$rollback_hashes")} {($ VSub_Name "$rolledback_hashes")}
                                  )
                                  (C {(xargs)} {(echo)})
                                  (C {(sed)} {(SQ <"s/ /|/g">)})
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [515 537]
                      )
                    }
                  spids: [514]
                )
              ]
              spids: [512]
            )
            (Pipeline
              children: [
                (C {(git)} {(log)} {(--reverse)} 
                  {(--pretty) (Lit_Other "=") (format) (Lit_Other ":") (Lit_Other "%") (h)} {(${ VSub_Name baseline) (..)} {(-E)} {(--grep) (Lit_Other "=") (SQ <"^RELNOTES(\\[[^\\]+\\])?:">)}
                )
                (C {(grep)} {(-Ev)} {(DQ ("^(") (${ VSub_Name exclude_hashes) (")"))})
              ]
              negated: False
            )
          ]
          spids: [393]
        )
      spids: [387 392]
    )
    (FuncDef
      name: extract_release_note
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:relnote)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (Pipeline
                                  children: [
                                    (C {(git)} {(show)} {(-s)} {($ VSub_Number "$1")} 
                                      {(--pretty) (Lit_Other "=") (format) (Lit_Other ":") 
                                        (Lit_Other "%") (B)
                                      }
                                    )
                                    (C {(awk)} {(SQ <"/^RELNOTES(\\[[^\\]]+\\])?:/,/^$/">)})
                                  ]
                                  negated: False
                                )
                              ]
                            )
                          left_token: <Left_CommandSub "$(">
                          spids: [619 642]
                        )
                      )
                    }
                  spids: [617]
                )
              ]
              spids: [615]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:regex)
                  op: Equal
                  rhs: 
                    {
                      (DQ ("^RELNOTES(") (EscapedLiteralPart token:<Lit_EscapedChar "\\[">) 
                        ("([a-zA-Z]*)") (EscapedLiteralPart token:<Lit_EscapedChar "\\]">) 
                        (")?:[[:space:]]*([^[:space:]].*[^[:space:]])[[:space:]]*") (Lit_Other "$")
                      )
                    }
                  spids: [648]
                )
              ]
              spids: [646]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_EqualTilde
                              left: {(DQ ($ VSub_Name "$relnote"))}
                              right: {($ VSub_Name "$regex")}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:relnote_kind)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name BASH_REMATCH>
                                bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 2)}))
                                spids: [680 685]
                              )
                            }
                          spids: [679]
                        )
                      ]
                      spids: [677]
                    )
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:relnote_text)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name BASH_REMATCH>
                                  bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 3)}))
                                  spids: [692 697]
                                )
                              )
                            }
                          spids: [690]
                        )
                      ]
                      spids: [688]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (LogicalNot
                                      child: 
                                        (BoolBinary
                                          op_id: BoolBinary_EqualTilde
                                          left: 
                                            {
                                              (DQ 
                                                (CommandSubPart
                                                  command_list: 
                                                    (CommandList
                                                      children: [
                                                        (Pipeline
                                                          children: [
                                                            (C {(echo)} {($ VSub_Name "$relnote_text")})
                                                            (C {(awk)} {(SQ <"{print tolower($0)}">)})
                                                          ]
                                                          negated: False
                                                        )
                                                      ]
                                                    )
                                                  left_token: <Left_CommandSub "$(">
                                                  spids: [708 720]
                                                )
                                              )
                                            }
                                          right: 
                                            {(Lit_Other "^") ("(") (none) ("|") (n/a) (")") 
                                              (Lit_Other "?") (.) (Lit_Other "?") (Lit_Other "$")
                                            }
                                        )
                                    )
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(eval)} 
                              {
                                (DQ (RELNOTES_) (${ VSub_Name relnote_kind) ("+=(") 
                                  (EscapedLiteralPart
                                    token: <Lit_EscapedChar "\\\"">
                                  ) (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("{relnote_text}") 
                                  (EscapedLiteralPart
                                    token: <Lit_EscapedChar "\\\"">
                                  ) (")")
                                )
                              }
                            )
                          ]
                          spids: [-1 739]
                        )
                      ]
                      spids: [-1 758]
                    )
                  ]
                  spids: [-1 674]
                )
              ]
              spids: [-1 761]
            )
          ]
          spids: [612]
        )
      spids: [606 611]
    )
    (FuncDef
      name: get_release_notes
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: i
              iter_words: [
                {
                  (DQ 
                    (BracedVarSub
                      token: <VSub_Name RELNOTES_TYPES>
                      bracket_op: (WholeArray op_id:Lit_At)
                      spids: [788 793]
                    )
                  )
                }
              ]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [(C {(eval)} {(DQ (RELNOTES_) (${ VSub_Name i) ("=()"))})]
                  spids: [797 811]
                )
              spids: [786 795]
            )
            (ForEach
              iter_name: i
              iter_words: [{($ VSub_At "$@")}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [(C {(extract_release_note)} {($ VSub_Name "$i")})]
                  spids: [823 831]
                )
              spids: [819 821]
            )
          ]
          spids: [778]
        )
      spids: [772 777]
    )
    (FuncDef
      name: wrap_text
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [(C {(fold)} {(-s)} {(-w)} {($ VSub_Number "$1")}) (C {(sed)} {(SQ <"s/ *$//">)})]
              negated: False
            )
          ]
          spids: [845]
        )
      spids: [839 844]
    )
    (FuncDef
      name: format_release_notes
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:i) op:Equal spids:[887])]
              spids: [885]
            )
            (ForExpr
              init: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: (ArithWord w:{(Lit_Digits 1)})
                )
              cond: 
                (ArithBinary
                  op_id: Arith_LessEqual
                  left: (ArithWord w:{($ VSub_Name "$i")})
                  right: (ArithWord w:{($ VSub_Pound "$#")})
                )
              update: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: 
                    (ArithBinary
                      op_id: Arith_Plus
                      left: (ArithWord w:{($ VSub_Name "$i")})
                      right: (ArithWord w:{(Lit_Digits 1)})
                    )
                )
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:relnote)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name i>
                                  prefix_op: VSub_Bang
                                  spids: [923 926]
                                )
                              )
                            }
                          spids: [921]
                        )
                      ]
                      spids: [919]
                    )
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:lines)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(echo)} {(DQ ($ VSub_Name "$relnote"))})
                                          (C {(wrap_text)} {(66)})
                                        ]
                                        negated: False
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [933 945]
                              )
                            }
                          spids: [932]
                        )
                      ]
                      spids: [930]
                    )
                    (Pipeline
                      children: [(C {(echo)} {(DQ ("  - ") ($ VSub_Name "$lines"))}) (C {(head)} {(-1)})]
                      negated: False
                    )
                    (Pipeline
                      children: [
                        (C {(echo)} {(DQ ($ VSub_Name "$lines"))})
                        (C {(tail)} {(-n)} {(Lit_Other "+") (2)})
                        (C {(sed)} {(SQ <"s/^/    /">)})
                      ]
                      negated: False
                    )
                  ]
                  spids: [916 989]
                )
            )
          ]
          spids: [882]
        )
      spids: [876 881]
    )
    (FuncDef
      name: release_notes
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:i) op:Equal spids:[1011])]
              spids: [1009]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:commits)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(get_release_notes_commits)} {($ VSub_At "$@")})]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [1017 1021]
                      )
                    }
                  spids: [1016]
                )
              ]
              spids: [1014]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:length)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (BracedVarSub
                          token: <VSub_Name RELNOTES_TYPES>
                          prefix_op: VSub_Pound
                          bracket_op: (WholeArray op_id:Lit_At)
                          spids: [1028 1034]
                        )
                      )
                    }
                  spids: [1026]
                )
              ]
              spids: [1024]
            )
            (C {(get_release_notes)} {(DQ ($ VSub_Name "$commits"))})
            (ForExpr
              init: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: (ArithWord w:{(Lit_Digits 0)})
                )
              cond: 
                (ArithBinary
                  op_id: Arith_Less
                  left: (ArithWord w:{($ VSub_Name "$i")})
                  right: (ArithWord w:{($ VSub_Name "$length")})
                )
              update: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: 
                    (ArithBinary
                      op_id: Arith_Plus
                      left: (ArithWord w:{($ VSub_Name "$i")})
                      right: (ArithWord w:{(Lit_Digits 1)})
                    )
                )
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:relnotes_title)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name RELNOTES_DESC>
                                  bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name "$i")}))
                                  spids: [1078 1083]
                                )
                              )
                            }
                          spids: [1076]
                        )
                      ]
                      spids: [1074]
                    )
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:relnotes_type)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name RELNOTES_TYPES>
                                bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name "$i")}))
                                spids: [1090 1095]
                              )
                            }
                          spids: [1089]
                        )
                      ]
                      spids: [1087]
                    )
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:relnotes)
                          op: Equal
                          rhs: {(DQ (RELNOTES_) (${ VSub_Name relnotes_type) ("[@]"))}
                          spids: [1100]
                        )
                      ]
                      spids: [1098]
                    )
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:nb_relnotes)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(eval)} 
                                        {
                                          (DQ ("echo ") 
                                            (EscapedLiteralPart
                                              token: <Lit_EscapedChar "\\$">
                                            ) ("{#") ($ VSub_Name "$relnotes") ("}")
                                          )
                                        }
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [1113 1123]
                              )
                            }
                          spids: [1112]
                        )
                      ]
                      spids: [1110]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DParen
                                  child: 
                                    (ArithBinary
                                      op_id: Arith_Great
                                      left: (ArithWord w:{(DQ (${ VSub_Name nb_relnotes))})
                                      right: (ArithWord w:{(Lit_Digits 0)})
                                    )
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(echo)} {(DQ (${ VSub_Name relnotes_title) (":"))})
                            (C {(echo)})
                            (C {(format_release_notes)} 
                              {
                                (DQ 
                                  (BracedVarSub
                                    token: <VSub_Name relnotes>
                                    prefix_op: VSub_Bang
                                    spids: [1163 1166]
                                  )
                                )
                              }
                            )
                            (C {(echo)})
                          ]
                          spids: [-1 1144]
                        )
                      ]
                      spids: [-1 1173]
                    )
                  ]
                  spids: [1071 1176]
                )
            )
          ]
          spids: [1006]
        )
      spids: [1000 1005]
    )
    (FuncDef
      name: create_release_notes
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:last_release)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(get_last_release)} {(DQ ($ VSub_Number "$1"))})]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [1199 1205]
                          )
                        }
                      spids: [1198]
                    )
                  ]
                  spids: [1196]
                )
                (BraceGroup
                  children: [
                    (Sentence
                      child: (C {(echo)} {(DQ ("Initial release."))})
                      terminator: <Op_Semi ";">
                    )
                    (Sentence
                      child: (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
                      terminator: <Op_Semi ";">
                    )
                  ]
                  spids: [1211]
                )
              ]
              op_id: Op_DPipe
            )
            (AndOr
              children: [
                (C {(Lit_Other "[")} {(-n)} {(DQ (${ VSub_Name last_release))} {(Lit_Other "]")})
                (BraceGroup
                  children: [
                    (Sentence
                      child: (C {(echo)} {(DQ ("Initial release."))})
                      terminator: <Op_Semi ";">
                    )
                    (Sentence
                      child: (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
                      terminator: <Op_Semi ";">
                    )
                  ]
                  spids: [1242]
                )
              ]
              op_id: Op_DPipe
            )
            (C {(release_notes)} {(${ VSub_Name last_release)})
          ]
          spids: [1193]
        )
      spids: [1187 1192]
    )
    (FuncDef
      name: create_revision_information
      body: 
        (BraceGroup
          children: [
            (C {(echo)} 
              {
                (DQ ("Baseline: ") 
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [(C {(git)} {(rev-parse)} {(--short)} {(DQ (${ VSub_Number 1))})]
                      )
                    left_token: <Left_CommandSub "$(">
                    spids: [1308 1320]
                  )
                )
              }
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:first) op:Equal rhs:{(1)} spids:[1324])]
              spids: [1324]
            )
            (C {(shift)})
            (While
              cond: [
                (Sentence
                  child: 
                    (C {(Lit_Other "[")} {(-n)} 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Number 1>
                            suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ )})
                            spids: [1338 1341]
                          )
                        )
                      } {(Lit_Other "]")}
                    )
                  terminator: <Op_Semi ";">
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_eq
                                      left: {(DQ ($ VSub_Name "$first"))}
                                      right: {(1)}
                                    )
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(echo)} {(-e)} 
                              {
                                (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\n">) 
                                  ("Cherry picks:")
                                )
                              }
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:first)
                                  op: Equal
                                  rhs: {(0)}
                                  spids: [1378]
                                )
                              ]
                              spids: [1378]
                            )
                          ]
                          spids: [-1 1365]
                        )
                      ]
                      spids: [-1 1382]
                    )
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:hash)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [
                                        (C {(git)} {(rev-parse)} {(--short)} {(DQ (${ VSub_Number 1))})
                                      ]
                                    )
                                  left_token: <Left_CommandSub "$(">
                                  spids: [1390 1402]
                                )
                              )
                            }
                          spids: [1388]
                        )
                      ]
                      spids: [1386]
                    )
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:subject)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(git)} {(show)} {(-s)} 
                                        {(--pretty) (Lit_Other "=") (format) (Lit_Other ":") 
                                          (Lit_Other "%") (s)
                                        } {($ VSub_Name "$hash")}
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [1409 1424]
                              )
                            }
                          spids: [1408]
                        )
                      ]
                      spids: [1406]
                    )
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:lines)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(echo)} {(DQ ($ VSub_Name "$subject"))})
                                          (C {(wrap_text)} {(56)})
                                        ]
                                        negated: False
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [1430 1442]
                              )
                            }
                          spids: [1429]
                        )
                      ]
                      spids: [1427]
                    )
                    (Pipeline
                      children: [
                        (C {(echo)} {(DQ ("   + ") ($ VSub_Name "$hash") (": ") ($ VSub_Name "$lines"))})
                        (C {(head)} {(-1)})
                      ]
                      negated: False
                    )
                    (Pipeline
                      children: [
                        (C {(echo)} {(DQ ($ VSub_Name "$lines"))})
                        (C {(tail)} {(-n)} {(Lit_Other "+") (2)})
                        (C {(sed)} {(SQ <"s/^/              /">)})
                      ]
                      negated: False
                    )
                    (C {(shift)})
                  ]
                  spids: [1347 1491]
                )
            )
          ]
          spids: [1301]
        )
      spids: [1295 1300]
    )
  ]
)