[
  {
    "cmd": [
      "python",
      "-u",
      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
      "--json-output",
      "/path/to/tmp/json",
      "ensure-directory",
      "--mode",
      "0777",
      "[START_DIR]/cache/work"
    ],
    "infra_step": true,
    "name": "makedirs checkout_path"
  },
  {
    "cmd": [
      "python",
      "-u",
      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
      "--json-output",
      "/path/to/tmp/json",
      "remove",
      "[START_DIR]/cache/work/.gclient_entries"
    ],
    "infra_step": true,
    "name": "remove [START_DIR]/cache/work/.gclient_entries"
  },
  {
    "cmd": [
      "python",
      "-u",
      "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
      "--spec-path",
      "cache_dir = '[START_DIR]/cache/git'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': False, 'name': 'skia', 'url': 'https://skia.googlesource.com/skia.git'}]",
      "--patch_root",
      "skia",
      "--revision_mapping_file",
      "{\"got_revision\": \"skia\"}",
      "--git-cache-dir",
      "[START_DIR]/cache/git",
      "--cleanup-dir",
      "[CLEANUP]/bot_update",
      "--output_json",
      "/path/to/tmp/json",
      "--revision",
      "skia@abc123"
    ],
    "cwd": "[START_DIR]/cache/work",
    "env_prefixes": {
      "PATH": [
        "RECIPE_REPO[depot_tools]"
      ]
    },
    "infra_step": true,
    "name": "bot_update",
    "~followup_annotations": [
      "@@@STEP_TEXT@Some step text@@@",
      "@@@STEP_LOG_LINE@json.output@{@@@",
      "@@@STEP_LOG_LINE@json.output@  \"did_run\": true, @@@",
      "@@@STEP_LOG_LINE@json.output@  \"fixed_revisions\": {@@@",
      "@@@STEP_LOG_LINE@json.output@    \"skia\": \"abc123\"@@@",
      "@@@STEP_LOG_LINE@json.output@  }, @@@",
      "@@@STEP_LOG_LINE@json.output@  \"manifest\": {@@@",
      "@@@STEP_LOG_LINE@json.output@    \"skia\": {@@@",
      "@@@STEP_LOG_LINE@json.output@      \"repository\": \"https://fake.org/skia.git\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"revision\": \"9046e2e693bb92a76e972b694580e5d17ad10748\"@@@",
      "@@@STEP_LOG_LINE@json.output@    }@@@",
      "@@@STEP_LOG_LINE@json.output@  }, @@@",
      "@@@STEP_LOG_LINE@json.output@  \"patch_failure\": false, @@@",
      "@@@STEP_LOG_LINE@json.output@  \"patch_root\": \"skia\", @@@",
      "@@@STEP_LOG_LINE@json.output@  \"properties\": {@@@",
      "@@@STEP_LOG_LINE@json.output@    \"got_revision\": \"9046e2e693bb92a76e972b694580e5d17ad10748\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"got_revision_cp\": \"refs/heads/master@{#164710}\"@@@",
      "@@@STEP_LOG_LINE@json.output@  }, @@@",
      "@@@STEP_LOG_LINE@json.output@  \"root\": \"skia\", @@@",
      "@@@STEP_LOG_LINE@json.output@  \"source_manifest\": {@@@",
      "@@@STEP_LOG_LINE@json.output@    \"directories\": {@@@",
      "@@@STEP_LOG_LINE@json.output@      \"skia\": {@@@",
      "@@@STEP_LOG_LINE@json.output@        \"git_checkout\": {@@@",
      "@@@STEP_LOG_LINE@json.output@          \"repo_url\": \"https://fake.org/skia.git\", @@@",
      "@@@STEP_LOG_LINE@json.output@          \"revision\": \"9046e2e693bb92a76e972b694580e5d17ad10748\"@@@",
      "@@@STEP_LOG_LINE@json.output@        }@@@",
      "@@@STEP_LOG_LINE@json.output@      }@@@",
      "@@@STEP_LOG_LINE@json.output@    }, @@@",
      "@@@STEP_LOG_LINE@json.output@    \"version\": 0@@@",
      "@@@STEP_LOG_LINE@json.output@  }, @@@",
      "@@@STEP_LOG_LINE@json.output@  \"step_text\": \"Some step text\"@@@",
      "@@@STEP_LOG_LINE@json.output@}@@@",
      "@@@STEP_LOG_END@json.output@@@",
      "@@@SET_BUILD_PROPERTY@got_revision@\"9046e2e693bb92a76e972b694580e5d17ad10748\"@@@",
      "@@@SET_BUILD_PROPERTY@got_revision_cp@\"refs/heads/master@{#164710}\"@@@"
    ]
  },
  {
    "cmd": [
      "python",
      "-u",
      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
      "--json-output",
      "/path/to/tmp/json",
      "listdir",
      "[START_DIR]/lottie-samples"
    ],
    "infra_step": true,
    "name": "list lottie files",
    "~followup_annotations": [
      "@@@STEP_LOG_LINE@listdir@[START_DIR]/lottie-samples/LICENSE@@@",
      "@@@STEP_LOG_LINE@listdir@[START_DIR]/lottie-samples/lottie1.json@@@",
      "@@@STEP_LOG_LINE@listdir@[START_DIR]/lottie-samples/lottie2.json@@@",
      "@@@STEP_LOG_LINE@listdir@[START_DIR]/lottie-samples/lottie3.json@@@",
      "@@@STEP_LOG_END@listdir@@@"
    ]
  },
  {
    "cmd": [
      "npm",
      "install"
    ],
    "cwd": "[START_DIR]/cache/work/skia/tools/lottie-web-perf",
    "env_prefixes": {
      "PATH": [
        "[START_DIR]/node/node/bin"
      ]
    },
    "name": "npm install"
  },
  {
    "cmd": [
      "[START_DIR]/node/node/bin/node",
      "[START_DIR]/cache/work/skia/tools/lottie-web-perf/lottie-web-perf.js",
      "--input",
      "[START_DIR]/lottie-samples/lottie1.json",
      "--output",
      "[CLEANUP]/g3_try_tmp_1/lottie1.json"
    ],
    "cwd": "[START_DIR]/cache/work/skia/tools/lottie-web-perf",
    "env": {
      "CHROME_HEADLESS": "1",
      "DISPLAY": ":0",
      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
    },
    "infra_step": true,
    "name": "Run perf cmd line app"
  },
  {
    "cmd": [
      "python",
      "-u",
      "\nimport json\nimport sys\n\ntrace_output = sys.argv[1]\nwith open(trace_output, 'r') as f:\n  trace_json = json.load(f)\noutput_json_file = sys.argv[2]\nrenderer = sys.argv[3]  # Unused for now but might be useful in the future.\n\n# Output data about the GPU that was used.\nprint 'GPU data:'\nprint trace_json['metadata'].get('gpu-gl-renderer')\nprint trace_json['metadata'].get('gpu-driver')\nprint trace_json['metadata'].get('gpu-gl-vendor')\n\nerroneous_termination_statuses = [\n    'replaced_by_new_reporter_at_same_stage',\n    'did_not_produce_frame',\n]\naccepted_termination_statuses = [\n    'missed_frame',\n    'submitted_frame',\n    'main_frame_aborted'\n]\n\ncurrent_frame_duration = 0\ntotal_frames = 0\nframe_id_to_start_ts = {}\n# Will contain tuples of frame_ids and their duration.\ncompleted_frame_id_and_duration = []\nfor trace in trace_json['traceEvents']:\n  if 'PipelineReporter' in trace['name']:\n    frame_id = trace['id']\n    args = trace.get('args')\n    if args and args.get('step') == 'BeginImplFrameToSendBeginMainFrame':\n      frame_id_to_start_ts[frame_id] = trace['ts']\n    elif args and (args.get('termination_status') in\n                   accepted_termination_statuses):\n      if not frame_id_to_start_ts.get(frame_id):\n        print '[No start ts found for %s]' % frame_id\n        continue\n      current_frame_duration = trace['ts'] - frame_id_to_start_ts[frame_id]\n      total_frames += 1\n      completed_frame_id_and_duration.append(\n          (frame_id, current_frame_duration))\n      # We are done with this frame_id so remove it from the dict.\n      frame_id_to_start_ts.pop(frame_id)\n      print '%d (%s with %s): %d' % (\n          total_frames, frame_id, args['termination_status'],\n          current_frame_duration)\n    elif args and (args.get('termination_status') in\n                   erroneous_termination_statuses):\n      # Invalidate previously collected results for this frame_id.\n      if frame_id_to_start_ts.get(frame_id):\n        print '[Invalidating %s due to %s]' % (\n            frame_id, args['termination_status'])\n        frame_id_to_start_ts.pop(frame_id)\n\ntotal_completed_frames = len(completed_frame_id_and_duration)\nif total_completed_frames < 25:\n  raise Exception('Even with 2 loops found only %d frames' %\n                  total_completed_frames)\n\n# Get frame avg/min/max for the middle 25 frames.\nstart = (total_completed_frames - 25)/2\nprint 'Got %d total completed frames. Using start_index of %d.' % (\n    total_completed_frames, start)\nframe_max = 0\nframe_min = 0\nframe_cumulative = 0\nfor frame_id, duration in completed_frame_id_and_duration[start:start+25]:\n  frame_max = max(frame_max, duration)\n  frame_min = min(frame_min, duration) if frame_min else duration\n  frame_cumulative += duration\n\nperf_results = {}\nperf_results['frame_max_us'] = frame_max\nperf_results['frame_min_us'] = frame_min\nperf_results['frame_avg_us'] = frame_cumulative/25\nprint 'For 25 frames got: %s' % perf_results\n\n# Write perf_results to the output json.\nwith open(output_json_file, 'w') as f:\n  f.write(json.dumps(perf_results))\n",
      "[CLEANUP]/g3_try_tmp_1/lottie1.json",
      "/path/to/tmp/json",
      "lottie-web"
    ],
    "env": {
      "CHROME_HEADLESS": "1",
      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
    },
    "name": "parse lottie1.json trace",
    "~followup_annotations": [
      "@@@STEP_LOG_LINE@json.output@{@@@",
      "@@@STEP_LOG_LINE@json.output@  \"frame_avg_us\": 179.71, @@@",
      "@@@STEP_LOG_LINE@json.output@  \"frame_max_us\": 218.25, @@@",
      "@@@STEP_LOG_LINE@json.output@  \"frame_min_us\": 141.17@@@",
      "@@@STEP_LOG_LINE@json.output@}@@@",
      "@@@STEP_LOG_END@json.output@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@import json@@@",
      "@@@STEP_LOG_LINE@python.inline@import sys@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@trace_output = sys.argv[1]@@@",
      "@@@STEP_LOG_LINE@python.inline@with open(trace_output, 'r') as f:@@@",
      "@@@STEP_LOG_LINE@python.inline@  trace_json = json.load(f)@@@",
      "@@@STEP_LOG_LINE@python.inline@output_json_file = sys.argv[2]@@@",
      "@@@STEP_LOG_LINE@python.inline@renderer = sys.argv[3]  # Unused for now but might be useful in the future.@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@# Output data about the GPU that was used.@@@",
      "@@@STEP_LOG_LINE@python.inline@print 'GPU data:'@@@",
      "@@@STEP_LOG_LINE@python.inline@print trace_json['metadata'].get('gpu-gl-renderer')@@@",
      "@@@STEP_LOG_LINE@python.inline@print trace_json['metadata'].get('gpu-driver')@@@",
      "@@@STEP_LOG_LINE@python.inline@print trace_json['metadata'].get('gpu-gl-vendor')@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@erroneous_termination_statuses = [@@@",
      "@@@STEP_LOG_LINE@python.inline@    'replaced_by_new_reporter_at_same_stage',@@@",
      "@@@STEP_LOG_LINE@python.inline@    'did_not_produce_frame',@@@",
      "@@@STEP_LOG_LINE@python.inline@]@@@",
      "@@@STEP_LOG_LINE@python.inline@accepted_termination_statuses = [@@@",
      "@@@STEP_LOG_LINE@python.inline@    'missed_frame',@@@",
      "@@@STEP_LOG_LINE@python.inline@    'submitted_frame',@@@",
      "@@@STEP_LOG_LINE@python.inline@    'main_frame_aborted'@@@",
      "@@@STEP_LOG_LINE@python.inline@]@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@current_frame_duration = 0@@@",
      "@@@STEP_LOG_LINE@python.inline@total_frames = 0@@@",
      "@@@STEP_LOG_LINE@python.inline@frame_id_to_start_ts = {}@@@",
      "@@@STEP_LOG_LINE@python.inline@# Will contain tuples of frame_ids and their duration.@@@",
      "@@@STEP_LOG_LINE@python.inline@completed_frame_id_and_duration = []@@@",
      "@@@STEP_LOG_LINE@python.inline@for trace in trace_json['traceEvents']:@@@",
      "@@@STEP_LOG_LINE@python.inline@  if 'PipelineReporter' in trace['name']:@@@",
      "@@@STEP_LOG_LINE@python.inline@    frame_id = trace['id']@@@",
      "@@@STEP_LOG_LINE@python.inline@    args = trace.get('args')@@@",
      "@@@STEP_LOG_LINE@python.inline@    if args and args.get('step') == 'BeginImplFrameToSendBeginMainFrame':@@@",
      "@@@STEP_LOG_LINE@python.inline@      frame_id_to_start_ts[frame_id] = trace['ts']@@@",
      "@@@STEP_LOG_LINE@python.inline@    elif args and (args.get('termination_status') in@@@",
      "@@@STEP_LOG_LINE@python.inline@                   accepted_termination_statuses):@@@",
      "@@@STEP_LOG_LINE@python.inline@      if not frame_id_to_start_ts.get(frame_id):@@@",
      "@@@STEP_LOG_LINE@python.inline@        print '[No start ts found for %s]' % frame_id@@@",
      "@@@STEP_LOG_LINE@python.inline@        continue@@@",
      "@@@STEP_LOG_LINE@python.inline@      current_frame_duration = trace['ts'] - frame_id_to_start_ts[frame_id]@@@",
      "@@@STEP_LOG_LINE@python.inline@      total_frames += 1@@@",
      "@@@STEP_LOG_LINE@python.inline@      completed_frame_id_and_duration.append(@@@",
      "@@@STEP_LOG_LINE@python.inline@          (frame_id, current_frame_duration))@@@",
      "@@@STEP_LOG_LINE@python.inline@      # We are done with this frame_id so remove it from the dict.@@@",
      "@@@STEP_LOG_LINE@python.inline@      frame_id_to_start_ts.pop(frame_id)@@@",
      "@@@STEP_LOG_LINE@python.inline@      print '%d (%s with %s): %d' % (@@@",
      "@@@STEP_LOG_LINE@python.inline@          total_frames, frame_id, args['termination_status'],@@@",
      "@@@STEP_LOG_LINE@python.inline@          current_frame_duration)@@@",
      "@@@STEP_LOG_LINE@python.inline@    elif args and (args.get('termination_status') in@@@",
      "@@@STEP_LOG_LINE@python.inline@                   erroneous_termination_statuses):@@@",
      "@@@STEP_LOG_LINE@python.inline@      # Invalidate previously collected results for this frame_id.@@@",
      "@@@STEP_LOG_LINE@python.inline@      if frame_id_to_start_ts.get(frame_id):@@@",
      "@@@STEP_LOG_LINE@python.inline@        print '[Invalidating %s due to %s]' % (@@@",
      "@@@STEP_LOG_LINE@python.inline@            frame_id, args['termination_status'])@@@",
      "@@@STEP_LOG_LINE@python.inline@        frame_id_to_start_ts.pop(frame_id)@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@total_completed_frames = len(completed_frame_id_and_duration)@@@",
      "@@@STEP_LOG_LINE@python.inline@if total_completed_frames < 25:@@@",
      "@@@STEP_LOG_LINE@python.inline@  raise Exception('Even with 2 loops found only %d frames' %@@@",
      "@@@STEP_LOG_LINE@python.inline@                  total_completed_frames)@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@# Get frame avg/min/max for the middle 25 frames.@@@",
      "@@@STEP_LOG_LINE@python.inline@start = (total_completed_frames - 25)/2@@@",
      "@@@STEP_LOG_LINE@python.inline@print 'Got %d total completed frames. Using start_index of %d.' % (@@@",
      "@@@STEP_LOG_LINE@python.inline@    total_completed_frames, start)@@@",
      "@@@STEP_LOG_LINE@python.inline@frame_max = 0@@@",
      "@@@STEP_LOG_LINE@python.inline@frame_min = 0@@@",
      "@@@STEP_LOG_LINE@python.inline@frame_cumulative = 0@@@",
      "@@@STEP_LOG_LINE@python.inline@for frame_id, duration in completed_frame_id_and_duration[start:start+25]:@@@",
      "@@@STEP_LOG_LINE@python.inline@  frame_max = max(frame_max, duration)@@@",
      "@@@STEP_LOG_LINE@python.inline@  frame_min = min(frame_min, duration) if frame_min else duration@@@",
      "@@@STEP_LOG_LINE@python.inline@  frame_cumulative += duration@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@perf_results = {}@@@",
      "@@@STEP_LOG_LINE@python.inline@perf_results['frame_max_us'] = frame_max@@@",
      "@@@STEP_LOG_LINE@python.inline@perf_results['frame_min_us'] = frame_min@@@",
      "@@@STEP_LOG_LINE@python.inline@perf_results['frame_avg_us'] = frame_cumulative/25@@@",
      "@@@STEP_LOG_LINE@python.inline@print 'For 25 frames got: %s' % perf_results@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@# Write perf_results to the output json.@@@",
      "@@@STEP_LOG_LINE@python.inline@with open(output_json_file, 'w') as f:@@@",
      "@@@STEP_LOG_LINE@python.inline@  f.write(json.dumps(perf_results))@@@",
      "@@@STEP_LOG_END@python.inline@@@"
    ]
  },
  {
    "cmd": [
      "[START_DIR]/node/node/bin/node",
      "[START_DIR]/cache/work/skia/tools/lottie-web-perf/lottie-web-perf.js",
      "--input",
      "[START_DIR]/lottie-samples/lottie2.json",
      "--output",
      "[CLEANUP]/g3_try_tmp_1/lottie2.json"
    ],
    "cwd": "[START_DIR]/cache/work/skia/tools/lottie-web-perf",
    "env": {
      "CHROME_HEADLESS": "1",
      "DISPLAY": ":0",
      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
    },
    "infra_step": true,
    "name": "Run perf cmd line app (2)"
  },
  {
    "cmd": [
      "python",
      "-u",
      "\nimport json\nimport sys\n\ntrace_output = sys.argv[1]\nwith open(trace_output, 'r') as f:\n  trace_json = json.load(f)\noutput_json_file = sys.argv[2]\nrenderer = sys.argv[3]  # Unused for now but might be useful in the future.\n\n# Output data about the GPU that was used.\nprint 'GPU data:'\nprint trace_json['metadata'].get('gpu-gl-renderer')\nprint trace_json['metadata'].get('gpu-driver')\nprint trace_json['metadata'].get('gpu-gl-vendor')\n\nerroneous_termination_statuses = [\n    'replaced_by_new_reporter_at_same_stage',\n    'did_not_produce_frame',\n]\naccepted_termination_statuses = [\n    'missed_frame',\n    'submitted_frame',\n    'main_frame_aborted'\n]\n\ncurrent_frame_duration = 0\ntotal_frames = 0\nframe_id_to_start_ts = {}\n# Will contain tuples of frame_ids and their duration.\ncompleted_frame_id_and_duration = []\nfor trace in trace_json['traceEvents']:\n  if 'PipelineReporter' in trace['name']:\n    frame_id = trace['id']\n    args = trace.get('args')\n    if args and args.get('step') == 'BeginImplFrameToSendBeginMainFrame':\n      frame_id_to_start_ts[frame_id] = trace['ts']\n    elif args and (args.get('termination_status') in\n                   accepted_termination_statuses):\n      if not frame_id_to_start_ts.get(frame_id):\n        print '[No start ts found for %s]' % frame_id\n        continue\n      current_frame_duration = trace['ts'] - frame_id_to_start_ts[frame_id]\n      total_frames += 1\n      completed_frame_id_and_duration.append(\n          (frame_id, current_frame_duration))\n      # We are done with this frame_id so remove it from the dict.\n      frame_id_to_start_ts.pop(frame_id)\n      print '%d (%s with %s): %d' % (\n          total_frames, frame_id, args['termination_status'],\n          current_frame_duration)\n    elif args and (args.get('termination_status') in\n                   erroneous_termination_statuses):\n      # Invalidate previously collected results for this frame_id.\n      if frame_id_to_start_ts.get(frame_id):\n        print '[Invalidating %s due to %s]' % (\n            frame_id, args['termination_status'])\n        frame_id_to_start_ts.pop(frame_id)\n\ntotal_completed_frames = len(completed_frame_id_and_duration)\nif total_completed_frames < 25:\n  raise Exception('Even with 2 loops found only %d frames' %\n                  total_completed_frames)\n\n# Get frame avg/min/max for the middle 25 frames.\nstart = (total_completed_frames - 25)/2\nprint 'Got %d total completed frames. Using start_index of %d.' % (\n    total_completed_frames, start)\nframe_max = 0\nframe_min = 0\nframe_cumulative = 0\nfor frame_id, duration in completed_frame_id_and_duration[start:start+25]:\n  frame_max = max(frame_max, duration)\n  frame_min = min(frame_min, duration) if frame_min else duration\n  frame_cumulative += duration\n\nperf_results = {}\nperf_results['frame_max_us'] = frame_max\nperf_results['frame_min_us'] = frame_min\nperf_results['frame_avg_us'] = frame_cumulative/25\nprint 'For 25 frames got: %s' % perf_results\n\n# Write perf_results to the output json.\nwith open(output_json_file, 'w') as f:\n  f.write(json.dumps(perf_results))\n",
      "[CLEANUP]/g3_try_tmp_1/lottie2.json",
      "/path/to/tmp/json",
      "lottie-web"
    ],
    "env": {
      "CHROME_HEADLESS": "1",
      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
    },
    "name": "parse lottie2.json trace",
    "~followup_annotations": [
      "@@@STEP_LOG_LINE@json.output@{@@@",
      "@@@STEP_LOG_LINE@json.output@  \"frame_avg_us\": 179.71, @@@",
      "@@@STEP_LOG_LINE@json.output@  \"frame_max_us\": 218.25, @@@",
      "@@@STEP_LOG_LINE@json.output@  \"frame_min_us\": 141.17@@@",
      "@@@STEP_LOG_LINE@json.output@}@@@",
      "@@@STEP_LOG_END@json.output@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@import json@@@",
      "@@@STEP_LOG_LINE@python.inline@import sys@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@trace_output = sys.argv[1]@@@",
      "@@@STEP_LOG_LINE@python.inline@with open(trace_output, 'r') as f:@@@",
      "@@@STEP_LOG_LINE@python.inline@  trace_json = json.load(f)@@@",
      "@@@STEP_LOG_LINE@python.inline@output_json_file = sys.argv[2]@@@",
      "@@@STEP_LOG_LINE@python.inline@renderer = sys.argv[3]  # Unused for now but might be useful in the future.@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@# Output data about the GPU that was used.@@@",
      "@@@STEP_LOG_LINE@python.inline@print 'GPU data:'@@@",
      "@@@STEP_LOG_LINE@python.inline@print trace_json['metadata'].get('gpu-gl-renderer')@@@",
      "@@@STEP_LOG_LINE@python.inline@print trace_json['metadata'].get('gpu-driver')@@@",
      "@@@STEP_LOG_LINE@python.inline@print trace_json['metadata'].get('gpu-gl-vendor')@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@erroneous_termination_statuses = [@@@",
      "@@@STEP_LOG_LINE@python.inline@    'replaced_by_new_reporter_at_same_stage',@@@",
      "@@@STEP_LOG_LINE@python.inline@    'did_not_produce_frame',@@@",
      "@@@STEP_LOG_LINE@python.inline@]@@@",
      "@@@STEP_LOG_LINE@python.inline@accepted_termination_statuses = [@@@",
      "@@@STEP_LOG_LINE@python.inline@    'missed_frame',@@@",
      "@@@STEP_LOG_LINE@python.inline@    'submitted_frame',@@@",
      "@@@STEP_LOG_LINE@python.inline@    'main_frame_aborted'@@@",
      "@@@STEP_LOG_LINE@python.inline@]@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@current_frame_duration = 0@@@",
      "@@@STEP_LOG_LINE@python.inline@total_frames = 0@@@",
      "@@@STEP_LOG_LINE@python.inline@frame_id_to_start_ts = {}@@@",
      "@@@STEP_LOG_LINE@python.inline@# Will contain tuples of frame_ids and their duration.@@@",
      "@@@STEP_LOG_LINE@python.inline@completed_frame_id_and_duration = []@@@",
      "@@@STEP_LOG_LINE@python.inline@for trace in trace_json['traceEvents']:@@@",
      "@@@STEP_LOG_LINE@python.inline@  if 'PipelineReporter' in trace['name']:@@@",
      "@@@STEP_LOG_LINE@python.inline@    frame_id = trace['id']@@@",
      "@@@STEP_LOG_LINE@python.inline@    args = trace.get('args')@@@",
      "@@@STEP_LOG_LINE@python.inline@    if args and args.get('step') == 'BeginImplFrameToSendBeginMainFrame':@@@",
      "@@@STEP_LOG_LINE@python.inline@      frame_id_to_start_ts[frame_id] = trace['ts']@@@",
      "@@@STEP_LOG_LINE@python.inline@    elif args and (args.get('termination_status') in@@@",
      "@@@STEP_LOG_LINE@python.inline@                   accepted_termination_statuses):@@@",
      "@@@STEP_LOG_LINE@python.inline@      if not frame_id_to_start_ts.get(frame_id):@@@",
      "@@@STEP_LOG_LINE@python.inline@        print '[No start ts found for %s]' % frame_id@@@",
      "@@@STEP_LOG_LINE@python.inline@        continue@@@",
      "@@@STEP_LOG_LINE@python.inline@      current_frame_duration = trace['ts'] - frame_id_to_start_ts[frame_id]@@@",
      "@@@STEP_LOG_LINE@python.inline@      total_frames += 1@@@",
      "@@@STEP_LOG_LINE@python.inline@      completed_frame_id_and_duration.append(@@@",
      "@@@STEP_LOG_LINE@python.inline@          (frame_id, current_frame_duration))@@@",
      "@@@STEP_LOG_LINE@python.inline@      # We are done with this frame_id so remove it from the dict.@@@",
      "@@@STEP_LOG_LINE@python.inline@      frame_id_to_start_ts.pop(frame_id)@@@",
      "@@@STEP_LOG_LINE@python.inline@      print '%d (%s with %s): %d' % (@@@",
      "@@@STEP_LOG_LINE@python.inline@          total_frames, frame_id, args['termination_status'],@@@",
      "@@@STEP_LOG_LINE@python.inline@          current_frame_duration)@@@",
      "@@@STEP_LOG_LINE@python.inline@    elif args and (args.get('termination_status') in@@@",
      "@@@STEP_LOG_LINE@python.inline@                   erroneous_termination_statuses):@@@",
      "@@@STEP_LOG_LINE@python.inline@      # Invalidate previously collected results for this frame_id.@@@",
      "@@@STEP_LOG_LINE@python.inline@      if frame_id_to_start_ts.get(frame_id):@@@",
      "@@@STEP_LOG_LINE@python.inline@        print '[Invalidating %s due to %s]' % (@@@",
      "@@@STEP_LOG_LINE@python.inline@            frame_id, args['termination_status'])@@@",
      "@@@STEP_LOG_LINE@python.inline@        frame_id_to_start_ts.pop(frame_id)@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@total_completed_frames = len(completed_frame_id_and_duration)@@@",
      "@@@STEP_LOG_LINE@python.inline@if total_completed_frames < 25:@@@",
      "@@@STEP_LOG_LINE@python.inline@  raise Exception('Even with 2 loops found only %d frames' %@@@",
      "@@@STEP_LOG_LINE@python.inline@                  total_completed_frames)@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@# Get frame avg/min/max for the middle 25 frames.@@@",
      "@@@STEP_LOG_LINE@python.inline@start = (total_completed_frames - 25)/2@@@",
      "@@@STEP_LOG_LINE@python.inline@print 'Got %d total completed frames. Using start_index of %d.' % (@@@",
      "@@@STEP_LOG_LINE@python.inline@    total_completed_frames, start)@@@",
      "@@@STEP_LOG_LINE@python.inline@frame_max = 0@@@",
      "@@@STEP_LOG_LINE@python.inline@frame_min = 0@@@",
      "@@@STEP_LOG_LINE@python.inline@frame_cumulative = 0@@@",
      "@@@STEP_LOG_LINE@python.inline@for frame_id, duration in completed_frame_id_and_duration[start:start+25]:@@@",
      "@@@STEP_LOG_LINE@python.inline@  frame_max = max(frame_max, duration)@@@",
      "@@@STEP_LOG_LINE@python.inline@  frame_min = min(frame_min, duration) if frame_min else duration@@@",
      "@@@STEP_LOG_LINE@python.inline@  frame_cumulative += duration@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@perf_results = {}@@@",
      "@@@STEP_LOG_LINE@python.inline@perf_results['frame_max_us'] = frame_max@@@",
      "@@@STEP_LOG_LINE@python.inline@perf_results['frame_min_us'] = frame_min@@@",
      "@@@STEP_LOG_LINE@python.inline@perf_results['frame_avg_us'] = frame_cumulative/25@@@",
      "@@@STEP_LOG_LINE@python.inline@print 'For 25 frames got: %s' % perf_results@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@# Write perf_results to the output json.@@@",
      "@@@STEP_LOG_LINE@python.inline@with open(output_json_file, 'w') as f:@@@",
      "@@@STEP_LOG_LINE@python.inline@  f.write(json.dumps(perf_results))@@@",
      "@@@STEP_LOG_END@python.inline@@@"
    ]
  },
  {
    "cmd": [
      "[START_DIR]/node/node/bin/node",
      "[START_DIR]/cache/work/skia/tools/lottie-web-perf/lottie-web-perf.js",
      "--input",
      "[START_DIR]/lottie-samples/lottie3.json",
      "--output",
      "[CLEANUP]/g3_try_tmp_1/lottie3.json"
    ],
    "cwd": "[START_DIR]/cache/work/skia/tools/lottie-web-perf",
    "env": {
      "CHROME_HEADLESS": "1",
      "DISPLAY": ":0",
      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
    },
    "infra_step": true,
    "name": "Run perf cmd line app (3)"
  },
  {
    "cmd": [
      "python",
      "-u",
      "\nimport json\nimport sys\n\ntrace_output = sys.argv[1]\nwith open(trace_output, 'r') as f:\n  trace_json = json.load(f)\noutput_json_file = sys.argv[2]\nrenderer = sys.argv[3]  # Unused for now but might be useful in the future.\n\n# Output data about the GPU that was used.\nprint 'GPU data:'\nprint trace_json['metadata'].get('gpu-gl-renderer')\nprint trace_json['metadata'].get('gpu-driver')\nprint trace_json['metadata'].get('gpu-gl-vendor')\n\nerroneous_termination_statuses = [\n    'replaced_by_new_reporter_at_same_stage',\n    'did_not_produce_frame',\n]\naccepted_termination_statuses = [\n    'missed_frame',\n    'submitted_frame',\n    'main_frame_aborted'\n]\n\ncurrent_frame_duration = 0\ntotal_frames = 0\nframe_id_to_start_ts = {}\n# Will contain tuples of frame_ids and their duration.\ncompleted_frame_id_and_duration = []\nfor trace in trace_json['traceEvents']:\n  if 'PipelineReporter' in trace['name']:\n    frame_id = trace['id']\n    args = trace.get('args')\n    if args and args.get('step') == 'BeginImplFrameToSendBeginMainFrame':\n      frame_id_to_start_ts[frame_id] = trace['ts']\n    elif args and (args.get('termination_status') in\n                   accepted_termination_statuses):\n      if not frame_id_to_start_ts.get(frame_id):\n        print '[No start ts found for %s]' % frame_id\n        continue\n      current_frame_duration = trace['ts'] - frame_id_to_start_ts[frame_id]\n      total_frames += 1\n      completed_frame_id_and_duration.append(\n          (frame_id, current_frame_duration))\n      # We are done with this frame_id so remove it from the dict.\n      frame_id_to_start_ts.pop(frame_id)\n      print '%d (%s with %s): %d' % (\n          total_frames, frame_id, args['termination_status'],\n          current_frame_duration)\n    elif args and (args.get('termination_status') in\n                   erroneous_termination_statuses):\n      # Invalidate previously collected results for this frame_id.\n      if frame_id_to_start_ts.get(frame_id):\n        print '[Invalidating %s due to %s]' % (\n            frame_id, args['termination_status'])\n        frame_id_to_start_ts.pop(frame_id)\n\ntotal_completed_frames = len(completed_frame_id_and_duration)\nif total_completed_frames < 25:\n  raise Exception('Even with 2 loops found only %d frames' %\n                  total_completed_frames)\n\n# Get frame avg/min/max for the middle 25 frames.\nstart = (total_completed_frames - 25)/2\nprint 'Got %d total completed frames. Using start_index of %d.' % (\n    total_completed_frames, start)\nframe_max = 0\nframe_min = 0\nframe_cumulative = 0\nfor frame_id, duration in completed_frame_id_and_duration[start:start+25]:\n  frame_max = max(frame_max, duration)\n  frame_min = min(frame_min, duration) if frame_min else duration\n  frame_cumulative += duration\n\nperf_results = {}\nperf_results['frame_max_us'] = frame_max\nperf_results['frame_min_us'] = frame_min\nperf_results['frame_avg_us'] = frame_cumulative/25\nprint 'For 25 frames got: %s' % perf_results\n\n# Write perf_results to the output json.\nwith open(output_json_file, 'w') as f:\n  f.write(json.dumps(perf_results))\n",
      "[CLEANUP]/g3_try_tmp_1/lottie3.json",
      "/path/to/tmp/json",
      "lottie-web"
    ],
    "env": {
      "CHROME_HEADLESS": "1",
      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
    },
    "name": "parse lottie3.json trace",
    "~followup_annotations": [
      "@@@STEP_LOG_LINE@json.output@{@@@",
      "@@@STEP_LOG_LINE@json.output@  \"frame_avg_us\": 179.71, @@@",
      "@@@STEP_LOG_LINE@json.output@  \"frame_max_us\": 218.25, @@@",
      "@@@STEP_LOG_LINE@json.output@  \"frame_min_us\": 141.17@@@",
      "@@@STEP_LOG_LINE@json.output@}@@@",
      "@@@STEP_LOG_END@json.output@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@import json@@@",
      "@@@STEP_LOG_LINE@python.inline@import sys@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@trace_output = sys.argv[1]@@@",
      "@@@STEP_LOG_LINE@python.inline@with open(trace_output, 'r') as f:@@@",
      "@@@STEP_LOG_LINE@python.inline@  trace_json = json.load(f)@@@",
      "@@@STEP_LOG_LINE@python.inline@output_json_file = sys.argv[2]@@@",
      "@@@STEP_LOG_LINE@python.inline@renderer = sys.argv[3]  # Unused for now but might be useful in the future.@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@# Output data about the GPU that was used.@@@",
      "@@@STEP_LOG_LINE@python.inline@print 'GPU data:'@@@",
      "@@@STEP_LOG_LINE@python.inline@print trace_json['metadata'].get('gpu-gl-renderer')@@@",
      "@@@STEP_LOG_LINE@python.inline@print trace_json['metadata'].get('gpu-driver')@@@",
      "@@@STEP_LOG_LINE@python.inline@print trace_json['metadata'].get('gpu-gl-vendor')@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@erroneous_termination_statuses = [@@@",
      "@@@STEP_LOG_LINE@python.inline@    'replaced_by_new_reporter_at_same_stage',@@@",
      "@@@STEP_LOG_LINE@python.inline@    'did_not_produce_frame',@@@",
      "@@@STEP_LOG_LINE@python.inline@]@@@",
      "@@@STEP_LOG_LINE@python.inline@accepted_termination_statuses = [@@@",
      "@@@STEP_LOG_LINE@python.inline@    'missed_frame',@@@",
      "@@@STEP_LOG_LINE@python.inline@    'submitted_frame',@@@",
      "@@@STEP_LOG_LINE@python.inline@    'main_frame_aborted'@@@",
      "@@@STEP_LOG_LINE@python.inline@]@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@current_frame_duration = 0@@@",
      "@@@STEP_LOG_LINE@python.inline@total_frames = 0@@@",
      "@@@STEP_LOG_LINE@python.inline@frame_id_to_start_ts = {}@@@",
      "@@@STEP_LOG_LINE@python.inline@# Will contain tuples of frame_ids and their duration.@@@",
      "@@@STEP_LOG_LINE@python.inline@completed_frame_id_and_duration = []@@@",
      "@@@STEP_LOG_LINE@python.inline@for trace in trace_json['traceEvents']:@@@",
      "@@@STEP_LOG_LINE@python.inline@  if 'PipelineReporter' in trace['name']:@@@",
      "@@@STEP_LOG_LINE@python.inline@    frame_id = trace['id']@@@",
      "@@@STEP_LOG_LINE@python.inline@    args = trace.get('args')@@@",
      "@@@STEP_LOG_LINE@python.inline@    if args and args.get('step') == 'BeginImplFrameToSendBeginMainFrame':@@@",
      "@@@STEP_LOG_LINE@python.inline@      frame_id_to_start_ts[frame_id] = trace['ts']@@@",
      "@@@STEP_LOG_LINE@python.inline@    elif args and (args.get('termination_status') in@@@",
      "@@@STEP_LOG_LINE@python.inline@                   accepted_termination_statuses):@@@",
      "@@@STEP_LOG_LINE@python.inline@      if not frame_id_to_start_ts.get(frame_id):@@@",
      "@@@STEP_LOG_LINE@python.inline@        print '[No start ts found for %s]' % frame_id@@@",
      "@@@STEP_LOG_LINE@python.inline@        continue@@@",
      "@@@STEP_LOG_LINE@python.inline@      current_frame_duration = trace['ts'] - frame_id_to_start_ts[frame_id]@@@",
      "@@@STEP_LOG_LINE@python.inline@      total_frames += 1@@@",
      "@@@STEP_LOG_LINE@python.inline@      completed_frame_id_and_duration.append(@@@",
      "@@@STEP_LOG_LINE@python.inline@          (frame_id, current_frame_duration))@@@",
      "@@@STEP_LOG_LINE@python.inline@      # We are done with this frame_id so remove it from the dict.@@@",
      "@@@STEP_LOG_LINE@python.inline@      frame_id_to_start_ts.pop(frame_id)@@@",
      "@@@STEP_LOG_LINE@python.inline@      print '%d (%s with %s): %d' % (@@@",
      "@@@STEP_LOG_LINE@python.inline@          total_frames, frame_id, args['termination_status'],@@@",
      "@@@STEP_LOG_LINE@python.inline@          current_frame_duration)@@@",
      "@@@STEP_LOG_LINE@python.inline@    elif args and (args.get('termination_status') in@@@",
      "@@@STEP_LOG_LINE@python.inline@                   erroneous_termination_statuses):@@@",
      "@@@STEP_LOG_LINE@python.inline@      # Invalidate previously collected results for this frame_id.@@@",
      "@@@STEP_LOG_LINE@python.inline@      if frame_id_to_start_ts.get(frame_id):@@@",
      "@@@STEP_LOG_LINE@python.inline@        print '[Invalidating %s due to %s]' % (@@@",
      "@@@STEP_LOG_LINE@python.inline@            frame_id, args['termination_status'])@@@",
      "@@@STEP_LOG_LINE@python.inline@        frame_id_to_start_ts.pop(frame_id)@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@total_completed_frames = len(completed_frame_id_and_duration)@@@",
      "@@@STEP_LOG_LINE@python.inline@if total_completed_frames < 25:@@@",
      "@@@STEP_LOG_LINE@python.inline@  raise Exception('Even with 2 loops found only %d frames' %@@@",
      "@@@STEP_LOG_LINE@python.inline@                  total_completed_frames)@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@# Get frame avg/min/max for the middle 25 frames.@@@",
      "@@@STEP_LOG_LINE@python.inline@start = (total_completed_frames - 25)/2@@@",
      "@@@STEP_LOG_LINE@python.inline@print 'Got %d total completed frames. Using start_index of %d.' % (@@@",
      "@@@STEP_LOG_LINE@python.inline@    total_completed_frames, start)@@@",
      "@@@STEP_LOG_LINE@python.inline@frame_max = 0@@@",
      "@@@STEP_LOG_LINE@python.inline@frame_min = 0@@@",
      "@@@STEP_LOG_LINE@python.inline@frame_cumulative = 0@@@",
      "@@@STEP_LOG_LINE@python.inline@for frame_id, duration in completed_frame_id_and_duration[start:start+25]:@@@",
      "@@@STEP_LOG_LINE@python.inline@  frame_max = max(frame_max, duration)@@@",
      "@@@STEP_LOG_LINE@python.inline@  frame_min = min(frame_min, duration) if frame_min else duration@@@",
      "@@@STEP_LOG_LINE@python.inline@  frame_cumulative += duration@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@perf_results = {}@@@",
      "@@@STEP_LOG_LINE@python.inline@perf_results['frame_max_us'] = frame_max@@@",
      "@@@STEP_LOG_LINE@python.inline@perf_results['frame_min_us'] = frame_min@@@",
      "@@@STEP_LOG_LINE@python.inline@perf_results['frame_avg_us'] = frame_cumulative/25@@@",
      "@@@STEP_LOG_LINE@python.inline@print 'For 25 frames got: %s' % perf_results@@@",
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@# Write perf_results to the output json.@@@",
      "@@@STEP_LOG_LINE@python.inline@with open(output_json_file, 'w') as f:@@@",
      "@@@STEP_LOG_LINE@python.inline@  f.write(json.dumps(perf_results))@@@",
      "@@@STEP_LOG_END@python.inline@@@"
    ]
  },
  {
    "cmd": [
      "python",
      "-u",
      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
      "--json-output",
      "/path/to/tmp/json",
      "rmtree",
      "[CLEANUP]/g3_try_tmp_1"
    ],
    "infra_step": true,
    "name": "rmtree [CLEANUP]/g3_try_tmp_1"
  },
  {
    "cmd": [
      "python",
      "-u",
      "import os\nprint os.environ.get('SWARMING_BOT_ID', '')\n"
    ],
    "name": "get swarming bot id",
    "~followup_annotations": [
      "@@@STEP_LOG_LINE@python.inline@import os@@@",
      "@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_BOT_ID', '')@@@",
      "@@@STEP_LOG_END@python.inline@@@"
    ]
  },
  {
    "cmd": [
      "python",
      "-u",
      "import os\nprint os.environ.get('SWARMING_TASK_ID', '')\n"
    ],
    "name": "get swarming task id",
    "~followup_annotations": [
      "@@@STEP_LOG_LINE@python.inline@import os@@@",
      "@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_TASK_ID', '')@@@",
      "@@@STEP_LOG_END@python.inline@@@"
    ]
  },
  {
    "cmd": [
      "python",
      "-u",
      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
      "--json-output",
      "/path/to/tmp/json",
      "ensure-directory",
      "--mode",
      "0777",
      "[START_DIR]/[SWARM_OUT_DIR]"
    ],
    "infra_step": true,
    "name": "makedirs perf_dir"
  },
  {
    "cmd": [
      "python",
      "-u",
      "import json\nwith open('[START_DIR]/[SWARM_OUT_DIR]/perf_abc123_1337000001.json', 'w') as outfile:\n  json.dump(obj={'gitHash': 'abc123', 'results': {'lottie3.json': {'gl': {'frame_avg_us': 179.71, 'frame_max_us': 218.25, 'frame_min_us': 141.17}}, 'lottie1.json': {'gl': {'frame_avg_us': 179.71, 'frame_max_us': 218.25, 'frame_min_us': 141.17}}, 'lottie2.json': {'gl': {'frame_avg_us': 179.71, 'frame_max_us': 218.25, 'frame_min_us': 141.17}}}, 'swarming_task_id': '', 'renderer': 'lottie-web', 'key': {'extra_config': 'LottieWeb', 'bench_type': 'tracing', 'cpu_or_gpu_value': 'AVX2', 'arch': 'x86_64', 'source_type': 'lottie-web', 'cpu_or_gpu': 'CPU', 'model': 'GCE', 'configuration': 'Release', 'os': 'Debian9', 'compiler': 'none'}, 'swarming_bot_id': ''}, fp=outfile, indent=4)\n"
    ],
    "env": {
      "CHROME_HEADLESS": "1",
      "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
    },
    "name": "write output JSON",
    "~followup_annotations": [
      "@@@STEP_LOG_LINE@python.inline@import json@@@",
      "@@@STEP_LOG_LINE@python.inline@with open('[START_DIR]/[SWARM_OUT_DIR]/perf_abc123_1337000001.json', 'w') as outfile:@@@",
      "@@@STEP_LOG_LINE@python.inline@  json.dump(obj={'gitHash': 'abc123', 'results': {'lottie3.json': {'gl': {'frame_avg_us': 179.71, 'frame_max_us': 218.25, 'frame_min_us': 141.17}}, 'lottie1.json': {'gl': {'frame_avg_us': 179.71, 'frame_max_us': 218.25, 'frame_min_us': 141.17}}, 'lottie2.json': {'gl': {'frame_avg_us': 179.71, 'frame_max_us': 218.25, 'frame_min_us': 141.17}}}, 'swarming_task_id': '', 'renderer': 'lottie-web', 'key': {'extra_config': 'LottieWeb', 'bench_type': 'tracing', 'cpu_or_gpu_value': 'AVX2', 'arch': 'x86_64', 'source_type': 'lottie-web', 'cpu_or_gpu': 'CPU', 'model': 'GCE', 'configuration': 'Release', 'os': 'Debian9', 'compiler': 'none'}, 'swarming_bot_id': ''}, fp=outfile, indent=4)@@@",
      "@@@STEP_LOG_END@python.inline@@@"
    ]
  },
  {
    "name": "$result"
  }
]