function getExecutionTimingsByURL(tasks, networkRecords) {
  const jsURLs = getJavaScriptURLs(networkRecords);

  /** @type {Map<string, Record<string, number>>} */
  const result = new Map();

  for (const task of tasks) {
    const attributableURL = getAttributableURLForTask(task, jsURLs);
    const timingByGroupId = result.get(attributableURL) || {};
    const originalTime = timingByGroupId[task.group.id] || 0;
    timingByGroupId[task.group.id] = originalTime + task.selfTime;
    result.set(attributableURL, timingByGroupId);
  }

  return result;
}
@param {LH.Artifacts.TaskNode[]} tasks
@param {Array<LH.Artifacts.NetworkRequest>} networkRecords
@return {Map<string, Record<string, number>>}