(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KOALEPHANT_LIB_VERSION)
          op: Equal
          rhs: {(DQ (2.0.0))}
          spids: [19]
        )
      ]
      spids: [19]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [(assign_pair lhs:(LhsName name:KOALEPHANT_LIB_VERSION) op:Equal spids:[26])]
      spids: [24]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KOALEPHANT_LIB_PATH)
          op: Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  token: <VSub_Name KOALEPHANT_LIB_PATH>
                  suffix_op: 
                    (StringUnary
                      op_id: VTest_ColonHyphen
                      arg_word: {(PREFIX) (Lit_Slash /) (LIBRARY_PATH)}
                    )
                  spids: [34 40]
                )
              )
            }
          spids: [32]
        )
      ]
      spids: [32]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [(assign_pair lhs:(LhsName name:KOALEPHANT_LIB_PATH) op:Equal spids:[45])]
      spids: [43]
    )
    (FuncDef
      name: k_tool_name
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} 
                          {
                            (DQ 
                              (BracedVarSub
                                token: <VSub_Name KOALEPHANT_TOOL_NAME>
                                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(EmptyPart)})
                                spids: [86 89]
                              )
                            )
                          } {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(printf)} {(DQ ('%s'))} {(DQ (${ VSub_Name KOALEPHANT_TOOL_NAME))})]
                  spids: [16777215 95]
                )
              ]
              else_action: [(C {(k_fs_basename)} {(DQ (${ VSub_Number 0))} {(DQ (.sh))})]
              spids: [111 127]
            )
          ]
          spids: [76]
        )
      spids: [72 75]
    )
    (FuncDef
      name: k_tool_version
      body: 
        (BraceGroup
          children: [
            (C {(printf)} {(DQ ('%s'))} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name KOALEPHANT_TOOL_VERSION>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(1.0.0)})
                    spids: [167 171]
                  )
                )
              }
            )
          ]
          spids: [157]
        )
      spids: [153 156]
    )
    (FuncDef
      name: k_tool_year
      body: 
        (BraceGroup
          children: [
            (C {(printf)} {(DQ ('%s'))} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name KOALEPHANT_TOOL_YEAR>
                    suffix_op: 
                      (StringUnary
                        op_id: VTest_ColonHyphen
                        arg_word: 
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [(C {(date)} {(Lit_Other '+') (Lit_Other '%') (Y)})]
                                )
                              left_token: <Left_CommandSub '$('>
                              spids: [215 221]
                            )
                          }
                      )
                    spids: [212 222]
                  )
                )
              }
            )
          ]
          spids: [202]
        )
      spids: [198 201]
    )
    (FuncDef
      name: k_tool_owner
      body: 
        (BraceGroup
          children: [
            (C {(printf)} {(DQ ('%s'))} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name KOALEPHANT_TOOL_OWNER>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{('Koalephant Co., Ltd')})
                    spids: [263 267]
                  )
                )
              }
            )
          ]
          spids: [253]
        )
      spids: [249 252]
    )
    (FuncDef
      name: k_tool_description
      body: 
        (BraceGroup
          children: [
            (C {(printf)} {(DQ ('%s'))} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name KOALEPHANT_TOOL_DESCRIPTION>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(EmptyPart)})
                    spids: [308 311]
                  )
                )
              }
            )
          ]
          spids: [298]
        )
      spids: [294 297]
    )
    (FuncDef
      name: k_tool_options
      body: 
        (BraceGroup
          children: [
            (C {(printf)} {(DQ ('%s'))} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name KOALEPHANT_TOOL_OPTIONS>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(EmptyPart)})
                    spids: [352 355]
                  )
                )
              }
            )
          ]
          spids: [342]
        )
      spids: [338 341]
    )
    (FuncDef
      name: k_tool_options_arguments
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-n)} 
                          {
                            (DQ 
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(k_tool_options)})])
                                left_token: <Left_CommandSub '$('>
                                spids: [400 402]
                              )
                            )
                          } {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(printf)} {(DQ (' %s'))} 
                      {
                        (DQ 
                          (BracedVarSub
                            token: <VSub_Name KOALEPHANT_TOOL_OPTIONS_ARGUMENTS>
                            suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{('[options]')})
                            spids: [418 422]
                          )
                        )
                      }
                    )
                  ]
                  spids: [16777215 408]
                )
              ]
              spids: [16777215 426]
            )
          ]
          spids: [390]
        )
      spids: [386 389]
    )
    (FuncDef
      name: k_tool_arguments
      body: 
        (BraceGroup
          children: [
            (C {(printf)} {(DQ (' %s'))} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name KOALEPHANT_TOOL_ARGUMENTS>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(EmptyPart)})
                    spids: [466 469]
                  )
                )
              }
            )
          ]
          spids: [456]
        )
      spids: [452 455]
    )
    (FuncDef
      name: k_tool_usage
      body: 
        (BraceGroup
          children: [
            (C {(printf)} {(DQ ('Usage: %s%s%s') (Lit_Other '\\') (n))} 
              {
                (DQ 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(k_tool_name)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [506 508]
                  )
                )
              } 
              {
                (DQ 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(k_tool_options_arguments)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [512 514]
                  )
                )
              } 
              {
                (DQ 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(k_tool_arguments)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [518 520]
                  )
                )
              }
            )
          ]
          spids: [494]
        )
      spids: [490 493]
    )
    (FuncDef
      name: k_version
      body: 
        (BraceGroup
          children: [
            (C {(printf)} 
              {
                (DQ ('%s version %s ') (Lit_Other '\\') ('nCopyright (c) %s, %s') (Lit_Other '\\') (n))
              } 
              {
                (DQ 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(k_tool_name)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [559 561]
                  )
                )
              } 
              {
                (DQ 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(k_tool_version)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [565 567]
                  )
                )
              } 
              {
                (DQ 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(k_tool_year)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [571 573]
                  )
                )
              } 
              {
                (DQ 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(k_tool_owner)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [577 579]
                  )
                )
              }
            )
          ]
          spids: [545]
        )
      spids: [541 544]
    )
    (FuncDef
      name: k_usage
      body: 
        (BraceGroup
          children: [
            (C {(printf)} {(DQ ('%s') (Lit_Other '\\') (n))} 
              {
                (DQ 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(k_tool_usage)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [616 618]
                  )
                )
              }
            )
            (C {(printf)} {(DQ ('%s') (Lit_Other '\\') (n) (Lit_Other '\\') (n))} 
              {
                (DQ 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(k_tool_description)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [633 635]
                  )
                )
              }
            )
            (C {(printf)} {(DQ ('%s') (Lit_Other '\\') (n))} 
              {
                (DQ 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(k_tool_options)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [648 650]
                  )
                )
              }
            )
          ]
          spids: [604]
        )
      spids: [600 603]
    )
    (FuncDef
      name: k_require_root
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} 
                          {
                            (DQ 
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(id)} {(-u)})])
                                left_token: <Left_CommandSub '$('>
                                spids: [698 702]
                              )
                            )
                          } {(-ne)} {(0)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Number 1))} {(Lit_Other ']')})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(k_log_err)} {(DQ (${ VSub_Number 1))})]
                          spids: [16777215 730]
                        )
                      ]
                      spids: [16777215 742]
                    )
                    (C {(k_log_err)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: (CommandList children:[(C {(k_tool_name)})])
                            left_token: <Left_CommandSub '$('>
                            spids: [748 750]
                          ) (' must be run as root')
                        )
                      }
                    )
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 712]
                )
              ]
              spids: [16777215 760]
            )
          ]
          spids: [690]
        )
      spids: [686 689]
    )
    (FuncDef
      name: k_option_requires_arg
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(Lit_Other '[')} {(-n)} 
                              {
                                (DQ 
                                  (BracedVarSub
                                    token: <VSub_Number 2>
                                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(EmptyPart)})
                                    spids: [812 815]
                                  )
                                )
                              } {(Lit_Other ']')}
                            )
                            (Pipeline
                              children: [
                                (C {(k_string_starts_with)} {(DQ (-))} {(DQ (${ VSub_Number 2))})
                              ]
                              negated: T
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(printf)} {(SQ <'%s'>)} {(DQ (${ VSub_Number 2))})]
                  spids: [16777215 837]
                )
              ]
              else_action: [
                (C {(k_log_err)} {(DQ ('Error, ') (${ VSub_Number 1) (' requires an argument'))})
                (C {(k_usage)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
              spids: [853 875]
            )
          ]
          spids: [802]
        )
      spids: [798 801]
    )
    (FuncDef
      name: k_option_optional_arg
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:tool)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [913]
                )
              ]
              spids: [911]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(Lit_Other '[')} {(-n)} 
                              {
                                (DQ 
                                  (BracedVarSub
                                    token: <VSub_Number 2>
                                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(EmptyPart)})
                                    spids: [926 929]
                                  )
                                )
                              } {(Lit_Other ']')}
                            )
                            (Pipeline
                              children: [
                                (C {(k_string_starts_with)} {(DQ (-))} {(DQ (${ VSub_Number 2))})
                              ]
                              negated: T
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(printf)} {(SQ <'%s'>)} {(DQ (${ VSub_Number 2))})]
                  spids: [16777215 951]
                )
              ]
              spids: [16777215 967]
            )
          ]
          spids: [908]
        )
      spids: [904 907]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KOALEPHANT_LOG_LEVEL_EMERG)
          op: Equal
          rhs: {(1)}
          spids: [975]
        )
      ]
      spids: [975]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [(assign_pair lhs:(LhsName name:KOALEPHANT_LOG_LEVEL_EMERG) op:Equal spids:[980])]
      spids: [978]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KOALEPHANT_LOG_LEVEL_ALERT)
          op: Equal
          rhs: {(2)}
          spids: [986]
        )
      ]
      spids: [986]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [(assign_pair lhs:(LhsName name:KOALEPHANT_LOG_LEVEL_ALERT) op:Equal spids:[991])]
      spids: [989]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KOALEPHANT_LOG_LEVEL_CRIT)
          op: Equal
          rhs: {(3)}
          spids: [997]
        )
      ]
      spids: [997]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [(assign_pair lhs:(LhsName name:KOALEPHANT_LOG_LEVEL_CRIT) op:Equal spids:[1002])]
      spids: [1000]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KOALEPHANT_LOG_LEVEL_ERR)
          op: Equal
          rhs: {(4)}
          spids: [1008]
        )
      ]
      spids: [1008]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [(assign_pair lhs:(LhsName name:KOALEPHANT_LOG_LEVEL_ERR) op:Equal spids:[1013])]
      spids: [1011]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KOALEPHANT_LOG_LEVEL_WARNING)
          op: Equal
          rhs: {(5)}
          spids: [1019]
        )
      ]
      spids: [1019]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [(assign_pair lhs:(LhsName name:KOALEPHANT_LOG_LEVEL_WARNING) op:Equal spids:[1024])]
      spids: [1022]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KOALEPHANT_LOG_LEVEL_NOTICE)
          op: Equal
          rhs: {(6)}
          spids: [1030]
        )
      ]
      spids: [1030]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [(assign_pair lhs:(LhsName name:KOALEPHANT_LOG_LEVEL_NOTICE) op:Equal spids:[1035])]
      spids: [1033]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KOALEPHANT_LOG_LEVEL_INFO)
          op: Equal
          rhs: {(7)}
          spids: [1041]
        )
      ]
      spids: [1041]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [(assign_pair lhs:(LhsName name:KOALEPHANT_LOG_LEVEL_INFO) op:Equal spids:[1046])]
      spids: [1044]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KOALEPHANT_LOG_LEVEL_DEBUG)
          op: Equal
          rhs: {(8)}
          spids: [1052]
        )
      ]
      spids: [1052]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [(assign_pair lhs:(LhsName name:KOALEPHANT_LOG_LEVEL_DEBUG) op:Equal spids:[1057])]
      spids: [1055]
    )
    (FuncDef
      name: k_log_level_valid
      body: 
        (BraceGroup
          children: [
            (AndOr
              ops: [Op_DAmp]
              children: [
                (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$1'))} {(-ge)} 
                  {(${ VSub_Name KOALEPHANT_LOG_LEVEL_EMERG)} {(Lit_Other ']')}
                )
                (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$1'))} {(-le)} 
                  {(${ VSub_Name KOALEPHANT_LOG_LEVEL_DEBUG)} {(Lit_Other ']')}
                )
              ]
            )
          ]
          spids: [1076]
        )
      spids: [1072 1075]
    )
    (FuncDef
      name: k_log_level
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-eq)} {(1)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (Pipeline
                                  children: [(C {(k_log_level_valid)} {(DQ ($ VSub_Number '$1'))})]
                                  negated: T
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (SimpleCommand
                              words: [{(printf)} {(DQ ('%s'))} {(DQ ('Invalid log level specified'))}]
                              redirects: [
                                (Redir
                                  op_id: Redir_GreatAnd
                                  fd: 16777215
                                  arg_word: {(2)}
                                  spids: [1183]
                                )
                              ]
                            )
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                          spids: [16777215 1170]
                        )
                      ]
                      else_action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:KOALEPHANT_LOG_LEVEL_ACTIVE)
                              op: Equal
                              rhs: {(DQ ($ VSub_Number '$1'))}
                              spids: [1195]
                            )
                          ]
                          spids: [1195]
                        )
                      ]
                      spids: [1192 1201]
                    )
                  ]
                  spids: [16777215 1156]
                )
              ]
              spids: [16777215 1204]
            )
            (C {(printf)} {(SQ <'%d'>)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name KOALEPHANT_LOG_LEVEL_ACTIVE>
                    suffix_op: 
                      (StringUnary
                        op_id: VTest_ColonHyphen
                        arg_word: {($ VSub_Name '$KOALEPHANT_LOG_LEVEL_ERR')}
                      )
                    spids: [1215 1219]
                  )
                )
              }
            )
          ]
          spids: [1140]
        )
      spids: [1136 1139]
    )
    (FuncDef
      name: k_log_level_name
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [(C {(k_log_level_valid)} {(DQ ($ VSub_Number '$1'))})]
                          negated: T
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(printf)} {(DQ ('%s'))} {(DQ ('Invalid log level specified'))}]
                      redirects: [
                        (Redir
                          op_id: Redir_GreatAnd
                          fd: 16777215
                          arg_word: {(2)}
                          spids: [1259]
                        )
                      ]
                    )
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [16777215 1246]
                )
              ]
              spids: [16777215 1268]
            )
            (Case
              to_match: {(DQ (${ VSub_Number 1))}
              arms: [
                (case_arm
                  pat_list: [{(${ VSub_Name KOALEPHANT_LOG_LEVEL_EMERG)}]
                  action: [(C {(printf)} {(DQ ('%s'))} {(DQ (emerg))})]
                  spids: [1282 1285 1299 16777215]
                )
                (case_arm
                  pat_list: [{(${ VSub_Name KOALEPHANT_LOG_LEVEL_ALERT)}]
                  action: [(C {(printf)} {(DQ ('%s'))} {(DQ (alert))})]
                  spids: [1303 1306 1320 16777215]
                )
                (case_arm
                  pat_list: [{(${ VSub_Name KOALEPHANT_LOG_LEVEL_CRIT)}]
                  action: [(C {(printf)} {(DQ ('%s'))} {(DQ (crit))})]
                  spids: [1324 1327 1341 16777215]
                )
                (case_arm
                  pat_list: [{(${ VSub_Name KOALEPHANT_LOG_LEVEL_ERR)}]
                  action: [(C {(printf)} {(DQ ('%s'))} {(DQ (err))})]
                  spids: [1345 1348 1362 16777215]
                )
                (case_arm
                  pat_list: [{(${ VSub_Name KOALEPHANT_LOG_LEVEL_WARNING)}]
                  action: [(C {(printf)} {(DQ ('%s'))} {(DQ (warning))})]
                  spids: [1366 1369 1383 16777215]
                )
                (case_arm
                  pat_list: [{(${ VSub_Name KOALEPHANT_LOG_LEVEL_NOTICE)}]
                  action: [(C {(printf)} {(DQ ('%s'))} {(DQ (notice))})]
                  spids: [1387 1390 1404 16777215]
                )
                (case_arm
                  pat_list: [{(${ VSub_Name KOALEPHANT_LOG_LEVEL_INFO)}]
                  action: [(C {(printf)} {(DQ ('%s'))} {(DQ (info))})]
                  spids: [1408 1411 1425 16777215]
                )
                (case_arm
                  pat_list: [{(${ VSub_Name KOALEPHANT_LOG_LEVEL_DEBUG)}]
                  action: [(C {(printf)} {(DQ ('%s'))} {(DQ (debug))})]
                  spids: [1429 1432 1446 16777215]
                )
              ]
              spids: [1271 1279 1449]
            )
          ]
          spids: [1232]
        )
      spids: [1228 1231]
    )
    (FuncDef
      name: k_log_syslog
      body: 
        (BraceGroup
          children: [
            (C {(k_bool_test)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name KOALEPHANT_LOG_SYSLOG>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(EmptyPart)})
                    spids: [1485 1488]
                  )
                )
              }
            )
          ]
          spids: [1479]
        )
      spids: [1475 1478]
    )
    (FuncDef
      name: k_log_message
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:level)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [1515]
                )
              ]
              spids: [1513]
            )
            (C {(shift)})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:message)
                  op: Equal
                  rhs: {(DQ ($ VSub_Star '$*'))}
                  spids: [1526]
                )
              ]
              spids: [1524]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(k_log_level_valid)} {(DQ ($ VSub_Name '$level'))})
                            (C {(Lit_Other '[')} 
                              {
                                (CommandSubPart
                                  command_list: (CommandList children:[(C {(k_log_level)})])
                                  left_token: <Left_CommandSub '$('>
                                  spids: [1545 1547]
                                )
                              } {(-ge)} {(DQ (${ VSub_Name level))} {(Lit_Other ']')}
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(printf)} {(DQ ('%s') (Lit_Other '\\') (n))} {(DQ ($ VSub_At '$@'))}]
                      redirects: [
                        (Redir
                          op_id: Redir_GreatAnd
                          fd: 16777215
                          arg_word: {(2)}
                          spids: [1575]
                        )
                      ]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [(Sentence child:(C {(k_log_syslog)}) terminator:<Op_Semi ';'>)]
                          action: [
                            (C {(/usr/bin/logger)} {(--tag)} 
                              {
                                (DQ 
                                  (CommandSubPart
                                    command_list: (CommandList children:[(C {(k_tool_name)})])
                                    left_token: <Left_CommandSub '$('>
                                    spids: [1592 1594]
                                  )
                                )
                              } {(--id)} {($ VSub_Dollar '$$')} {(--priority)} 
                              {
                                (DQ (user.) 
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [(C {(k_log_level_name)} {(DQ (${ VSub_Name level))})]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [1605 1613]
                                  )
                                )
                              } {(--)} {(DQ ($ VSub_At '$@'))}
                            )
                          ]
                          spids: [16777215 1584]
                        )
                      ]
                      spids: [16777215 1623]
                    )
                  ]
                  spids: [16777215 1560]
                )
              ]
              spids: [16777215 1626]
            )
          ]
          spids: [1510]
        )
      spids: [1506 1509]
    )
    (FuncDef
      name: k_log_emerg
      body: 
        (BraceGroup
          children: [
            (C {(k_log_message)} {(${ VSub_Name KOALEPHANT_LOG_LEVEL_EMERG)} {(DQ ($ VSub_At '$@'))})
          ]
          spids: [1647]
        )
      spids: [1643 1646]
    )
    (FuncDef
      name: k_log_alert
      body: 
        (BraceGroup
          children: [
            (C {(k_log_message)} {(${ VSub_Name KOALEPHANT_LOG_LEVEL_ALERT)} {(DQ ($ VSub_At '$@'))})
          ]
          spids: [1679]
        )
      spids: [1675 1678]
    )
    (FuncDef
      name: k_log_crit
      body: 
        (BraceGroup
          children: [
            (C {(k_log_message)} {(${ VSub_Name KOALEPHANT_LOG_LEVEL_CRIT)} {(DQ ($ VSub_At '$@'))})
          ]
          spids: [1711]
        )
      spids: [1707 1710]
    )
    (FuncDef
      name: k_log_err
      body: 
        (BraceGroup
          children: [
            (C {(k_log_message)} {(${ VSub_Name KOALEPHANT_LOG_LEVEL_ERR)} {(DQ ($ VSub_At '$@'))})
          ]
          spids: [1743]
        )
      spids: [1739 1742]
    )
    (FuncDef
      name: k_log_warning
      body: 
        (BraceGroup
          children: [
            (C {(k_log_message)} {(${ VSub_Name KOALEPHANT_LOG_LEVEL_WARNING)} {(DQ ($ VSub_At '$@'))})
          ]
          spids: [1775]
        )
      spids: [1771 1774]
    )
    (FuncDef
      name: k_log_notice
      body: 
        (BraceGroup
          children: [
            (C {(k_log_message)} {(${ VSub_Name KOALEPHANT_LOG_LEVEL_NOTICE)} {(DQ ($ VSub_At '$@'))})
          ]
          spids: [1807]
        )
      spids: [1803 1806]
    )
    (FuncDef
      name: k_log_info
      body: 
        (BraceGroup
          children: [
            (C {(k_log_message)} {(${ VSub_Name KOALEPHANT_LOG_LEVEL_INFO)} {(DQ ($ VSub_At '$@'))})
          ]
          spids: [1839]
        )
      spids: [1835 1838]
    )
    (FuncDef
      name: k_log_debug
      body: 
        (BraceGroup
          children: [
            (C {(k_log_message)} {(${ VSub_Name KOALEPHANT_LOG_LEVEL_DEBUG)} {(DQ ($ VSub_At '$@'))})
          ]
          spids: [1871]
        )
      spids: [1867 1870]
    )
  ]
)