__vite_ssr_exportName__("default", () => { try { return __vite_ssr_export_default__ } catch {} });
const MAX_FILES_FOR_SUNBURST = 500;
const MIXED_COLOR = '#aaaaaa';

// Slice size metric. Image count is what reveals container files: they are the
// slices worth more than one file.
const MODES = [
  { id: 'files',  label: 'File count',  pick: s => s.files  },
  { id: 'images', label: 'Image count', pick: s => s.images },
  { id: 'size',   label: 'File size',   pick: s => s.bytes  },
];

const HOVER = '<b>%{label}</b><br>Files: %{customdata[0]:,}<br>' +
              'Images: %{customdata[1]:,}<br>Size: %{customdata[2]:.3s}B<extra></extra>';

const __vite_ssr_export_default__ = {
  id: 'sunburst',
  required_inputs: ['path', 'size_bytes'],
  inputs: [],
  group: 'Summary',
  scope: 'file',
  info: 'Sunburst view of the **file and folder hierarchy**.\n\nClick a slice to zoom in; click the center to zoom out.',
  label: 'File Structure Sunburst',
  shortLabel: 'Folder Structure',

  requires(schema) {
    return schema.allCols.includes('path') && schema.allCols.includes('size_bytes');
  },

  // A single file is not a hierarchy.
  async requiresData(ctx) {
    return await countFiles(ctx) > 1;
  },

  async overviewMessage(ctx) {
    try {
      const count = await countFiles(ctx);
      return `Folder structure of <strong>${count.toLocaleString()} files</strong>.`;
    } catch { return null; }
  },

  async overviewPlot(container, ctx) {
    const pathWhere = ctx.sql.andWhere(ctx.where, '"path" IS NOT NULL');

    // Match the full view's depth: show individual files for small datasets,
    // roll up to folders only when there are too many to draw individually.
    const foldersOnly = await countFiles(ctx) > MAX_FILES_FOR_SUNBURST;
    const rows = await fetchSunburstRows(ctx, { foldersOnly, pathWhere });
    if (!rows.length) return false;

    const { ids, labels, parents, values, colors } =
      buildHierarchy(rows, ctx.colorMap, { foldersOnly, mode: 'files' });
    if (!ids.length) return false;

    ctx.plot.appendMini(container, [{
      type: 'sunburst', ids, labels, parents, values,
      marker: { colors }, branchvalues: 'total', hoverinfo: 'skip',
    }], { margin: { l: 0, r: 0, t: 0, b: 0 } });
    return true;
  },

  async render(container, ctx) {
    try {
      const mode = MODES.some(m => m.id === container.dataset.mode) ? container.dataset.mode : 'files';
      const { andWhere } = ctx.sql;
      const pathWhere = andWhere(ctx.where, '"path" IS NOT NULL');

      // Above the threshold, roll files up to their folders so the chart stays legible.
      const foldersOnly = await countFiles(ctx) > MAX_FILES_FOR_SUNBURST;
      const rows = await fetchSunburstRows(ctx, { foldersOnly, pathWhere });

      if (!rows.length) {
        container.innerHTML = '<div class="no-data">No path data available.</div>';
        return;
      };

      const { ids, labels, parents, values, colors, customdata } =
        buildHierarchy(rows, ctx.colorMap, { foldersOnly, mode });

      if (!ids.length) {
        container.innerHTML = '<div class="no-data">Could not build file hierarchy.</div>';
        return;
      };

      const buttons = MODES.map(m =>
        `<button type="button" class="btn btn-sm sunburst-mode-btn ${m.id === mode ? 'btn-secondary' : 'btn-outline-secondary'}" data-mode="${m.id}">${m.label}</button>`).join('');
      container.innerHTML = `
        <div class="d-flex justify-content-end mb-2">
          <div class="btn-group btn-group-sm" role="group">${buttons}</div>
        </div>
        <div class="sunburst-plot-area"></div>
      `;

      for (const btn of container.querySelectorAll('.sunburst-mode-btn')) {
        btn.onclick = () => {
          container.dataset.mode = btn.dataset.mode;
          this.render(container, ctx);
        };
      };

      // Sizing slices by image count makes each datapoint an image, not a file.
      ctx.plot.setScopeBadge?.(
        container.closest('.widget-card')?.querySelector('.widget-scope-badge'),
        mode === 'images' ? 'image' : 'file');

      ctx.plot.append(container.querySelector('.sunburst-plot-area'), [{
        type:          'sunburst',
        ids,
        labels,
        parents,
        values,
        customdata,
        marker:        { colors },
        branchvalues:  'total',
        hovertemplate: HOVER,
      }], {
        margin: { l: 0, r: 0, t: 30, b: 0 },
        height: 550,
      });
      ctx.plot.renderDomGroupLegend?.(container);

    } catch {
      container.innerHTML = '<div class="no-data">Failed to load data.</div>';
    }
  },
};

async function countFiles(ctx) {
  const [{ n }] = await ctx.queryRows(
    `SELECT COUNT(DISTINCT "path")::BIGINT AS n
     FROM pp_data ${ctx.sql.andWhere(ctx.where, '"path" IS NOT NULL')}`);
  return Number(n ?? 0);
}

// One row per folder (with file count + size) when rolled up, else one per file.
// For the file-level case, is_mixed flags files whose images span multiple groups.
function fetchSunburstRows(ctx, { foldersOnly, pathWhere }) {
  const gcExpr = ctx.sql.groupCol();
  const src    = ctx.sql.perFile(pathWhere);
  return foldersOnly
    ? ctx.queryRows(`
        SELECT regexp_extract("path"::VARCHAR, '^(.*)/[^/]+$', 1) AS path,
               ${gcExpr} AS __group__,
               COUNT(DISTINCT "path")::INTEGER AS __n__,
               SUM(__n_images__)::INTEGER AS __images__,
               SUM("size_bytes")::BIGINT AS __size__
        FROM ${src}
        GROUP BY 1, 2
      `)
    : ctx.queryRows(`
        WITH mixed AS (
          SELECT "path", COUNT(DISTINCT ${gcExpr}) > 1 AS is_mixed
          FROM pp_data ${pathWhere}
          GROUP BY "path"
        )
        SELECT pp_file."path", ${gcExpr} AS __group__,
               pp_file.__n_images__::INTEGER AS __images__,
               pp_file."size_bytes"::BIGINT AS __size__,
               COALESCE(m.is_mixed, false) AS is_mixed
        FROM ${src}
        LEFT JOIN mixed m ON pp_file."path" = m."path"
      `);
}

function buildHierarchy(rows, colorMap, { foldersOnly, mode }) {
  const groupColor  = (g) => colorMap[String(g)] ?? '#888';
  const allPaths    = rows.map(r => String(r.path ?? ''));
  const sep         = detectSeparator(allPaths);
  const commonRoot  = findCommonRoot(allPaths, sep);

  const normalised = rows.map(r => {
    let rel = String(r.path ?? '');
    if (commonRoot && rel.startsWith(commonRoot)) rel = rel.slice(commonRoot.length);
    rel = rel.replace(/^[/\\]+/, '');
    return {
      path:    rel,
      group:   String(r.__group__),
      files:   foldersOnly ? num(r.__n__) : 1,
      images:  num(r.__images__),
      bytes:   num(r.__size__),
      isMixed: !foldersOnly && Boolean(r.is_mixed),
    };
  });

  const rootName = commonRoot ? commonRoot.split(/[/\\]/).filter(Boolean).pop() ?? 'Root' : 'Root';

  const nodeStats  = { [rootName]: { files: 0, images: 0, bytes: 0 } };
  const nodeGroups = { [rootName]: new Set() };
  const nodeParent = { [rootName]: '' };
  const nodeLabel  = { [rootName]: rootName };

  for (const rec of normalised) {
    const { path, group } = rec;
    if (!rec.files && !rec.images && !rec.bytes) continue;
    const parts = path.split(/[/\\]/).filter(Boolean);

    let fileId;
    if (foldersOnly) {
      fileId = rootName
        ? (path ? `${rootName}${sep}${path}` : rootName)
        : (path || rootName || '');
    } else {
      fileId = rootName ? `${rootName}${sep}${path}` : path;
      const parentId = getParentId(fileId, sep, rootName);
      nodeStats[fileId]  = { files: rec.files, images: rec.images, bytes: rec.bytes };
      nodeGroups[fileId] = rec.isMixed ? new Set([group, '__mixed__']) : new Set([group]);
      nodeParent[fileId] = parentId;
      nodeLabel[fileId]  = parts[parts.length - 1] || fileId;
    };

    let cur = foldersOnly ? fileId : getParentId(fileId, sep, rootName);
    while (true) {
      if (cur in nodeStats) {
        let p = cur;
        while (true) {
          addStats(nodeStats[p], rec);
          nodeGroups[p].add(group);
          if (p === rootName) break;
          p = nodeParent[p];
        };
        break;
      } else {
        const parentId = getParentId(cur, sep, rootName);
        nodeStats[cur]  = { files: rec.files, images: rec.images, bytes: rec.bytes };
        nodeGroups[cur] = new Set([group]);
        nodeParent[cur] = parentId;
        const nameParts = cur.split(sep);
        nodeLabel[cur]  = nameParts[nameParts.length - 1] || cur;
        if (cur === rootName) break;
        cur = parentId;
      }
    }
  };

  const pick = (MODES.find(m => m.id === mode) ?? MODES[0]).pick;
  const ids = [], labels = [], parents = [], values = [], colors = [], customdata = [];
  for (const [id, s] of Object.entries(nodeStats)) {
    const value = pick(s);
    if (!value) continue;
    ids.push(id);
    labels.push(nodeLabel[id] ?? id);
    parents.push(nodeParent[id] ?? '');
    values.push(value);
    customdata.push([s.files, s.images, s.bytes]);
    const uniqueGroups = nodeGroups[id] ?? new Set();
    colors.push(uniqueGroups.size === 1 ? groupColor([...uniqueGroups][0]) : MIXED_COLOR);
  };
  return { ids, labels, parents, values, colors, customdata };
}

function num(v) {
  const n = Number(v ?? 0);
  return Number.isFinite(n) ? n : 0;
}

function addStats(target, rec) {
  target.files  += rec.files;
  target.images += rec.images;
  target.bytes  += rec.bytes;
}

function getParentId(id, sep, rootName) {
  const idx = id.lastIndexOf(sep);
  if (idx === -1) return rootName || '';
  return id.slice(0, idx) || rootName || '';
}

function detectSeparator(paths) {
  const hasForward  = paths.some(p => p.includes('/'));
  const hasBackward = paths.some(p => p.includes('\\'));
  return hasBackward && !hasForward ? '\\' : '/';
}

function findCommonRoot(paths, sep) {
  if (!paths.length) return '';
  const hasLeadingSlash = paths[0].startsWith('/') || paths[0].startsWith('\\');
  const parts = paths.map(p => p.split(/[/\\]/).filter(Boolean));
  const min   = Math.min(...parts.map(p => p.length));
  let common  = [];
  for (let i = 0; i < min; i++) {
    const val = parts[0][i];
    if (parts.every(p => p[i] === val)) common.push(val);
    else break;
  };
  if (!common.length) return '';
  return (hasLeadingSlash ? sep : '') + common.join(sep);
}
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsdWdpbl9zdW5idXJzdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBNQVhfRklMRVNfRk9SX1NVTkJVUlNUID0gNTAwO1xuY29uc3QgTUlYRURfQ09MT1IgPSAnI2FhYWFhYSc7XG5cbi8vIFNsaWNlIHNpemUgbWV0cmljLiBJbWFnZSBjb3VudCBpcyB3aGF0IHJldmVhbHMgY29udGFpbmVyIGZpbGVzOiB0aGV5IGFyZSB0aGVcbi8vIHNsaWNlcyB3b3J0aCBtb3JlIHRoYW4gb25lIGZpbGUuXG5jb25zdCBNT0RFUyA9IFtcbiAgeyBpZDogJ2ZpbGVzJywgIGxhYmVsOiAnRmlsZSBjb3VudCcsICBwaWNrOiBzID0+IHMuZmlsZXMgIH0sXG4gIHsgaWQ6ICdpbWFnZXMnLCBsYWJlbDogJ0ltYWdlIGNvdW50JywgcGljazogcyA9PiBzLmltYWdlcyB9LFxuICB7IGlkOiAnc2l6ZScsICAgbGFiZWw6ICdGaWxlIHNpemUnLCAgIHBpY2s6IHMgPT4gcy5ieXRlcyAgfSxcbl07XG5cbmNvbnN0IEhPVkVSID0gJzxiPiV7bGFiZWx9PC9iPjxicj5GaWxlczogJXtjdXN0b21kYXRhWzBdOix9PGJyPicgK1xuICAgICAgICAgICAgICAnSW1hZ2VzOiAle2N1c3RvbWRhdGFbMV06LH08YnI+U2l6ZTogJXtjdXN0b21kYXRhWzJdOi4zc31CPGV4dHJhPjwvZXh0cmE+JztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBpZDogJ3N1bmJ1cnN0JyxcbiAgcmVxdWlyZWRfaW5wdXRzOiBbJ3BhdGgnLCAnc2l6ZV9ieXRlcyddLFxuICBpbnB1dHM6IFtdLFxuICBncm91cDogJ1N1bW1hcnknLFxuICBzY29wZTogJ2ZpbGUnLFxuICBpbmZvOiAnU3VuYnVyc3QgdmlldyBvZiB0aGUgKipmaWxlIGFuZCBmb2xkZXIgaGllcmFyY2h5KiouXFxuXFxuQ2xpY2sgYSBzbGljZSB0byB6b29tIGluOyBjbGljayB0aGUgY2VudGVyIHRvIHpvb20gb3V0LicsXG4gIGxhYmVsOiAnRmlsZSBTdHJ1Y3R1cmUgU3VuYnVyc3QnLFxuICBzaG9ydExhYmVsOiAnRm9sZGVyIFN0cnVjdHVyZScsXG5cbiAgcmVxdWlyZXMoc2NoZW1hKSB7XG4gICAgcmV0dXJuIHNjaGVtYS5hbGxDb2xzLmluY2x1ZGVzKCdwYXRoJykgJiYgc2NoZW1hLmFsbENvbHMuaW5jbHVkZXMoJ3NpemVfYnl0ZXMnKTtcbiAgfSxcblxuICAvLyBBIHNpbmdsZSBmaWxlIGlzIG5vdCBhIGhpZXJhcmNoeS5cbiAgYXN5bmMgcmVxdWlyZXNEYXRhKGN0eCkge1xuICAgIHJldHVybiBhd2FpdCBjb3VudEZpbGVzKGN0eCkgPiAxO1xuICB9LFxuXG4gIGFzeW5jIG92ZXJ2aWV3TWVzc2FnZShjdHgpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY291bnQgPSBhd2FpdCBjb3VudEZpbGVzKGN0eCk7XG4gICAgICByZXR1cm4gYEZvbGRlciBzdHJ1Y3R1cmUgb2YgPHN0cm9uZz4ke2NvdW50LnRvTG9jYWxlU3RyaW5nKCl9IGZpbGVzPC9zdHJvbmc+LmA7XG4gICAgfSBjYXRjaCB7IHJldHVybiBudWxsOyB9XG4gIH0sXG5cbiAgYXN5bmMgb3ZlcnZpZXdQbG90KGNvbnRhaW5lciwgY3R4KSB7XG4gICAgY29uc3QgcGF0aFdoZXJlID0gY3R4LnNxbC5hbmRXaGVyZShjdHgud2hlcmUsICdcInBhdGhcIiBJUyBOT1QgTlVMTCcpO1xuXG4gICAgLy8gTWF0Y2ggdGhlIGZ1bGwgdmlldydzIGRlcHRoOiBzaG93IGluZGl2aWR1YWwgZmlsZXMgZm9yIHNtYWxsIGRhdGFzZXRzLFxuICAgIC8vIHJvbGwgdXAgdG8gZm9sZGVycyBvbmx5IHdoZW4gdGhlcmUgYXJlIHRvbyBtYW55IHRvIGRyYXcgaW5kaXZpZHVhbGx5LlxuICAgIGNvbnN0IGZvbGRlcnNPbmx5ID0gYXdhaXQgY291bnRGaWxlcyhjdHgpID4gTUFYX0ZJTEVTX0ZPUl9TVU5CVVJTVDtcbiAgICBjb25zdCByb3dzID0gYXdhaXQgZmV0Y2hTdW5idXJzdFJvd3MoY3R4LCB7IGZvbGRlcnNPbmx5LCBwYXRoV2hlcmUgfSk7XG4gICAgaWYgKCFyb3dzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3QgeyBpZHMsIGxhYmVscywgcGFyZW50cywgdmFsdWVzLCBjb2xvcnMgfSA9XG4gICAgICBidWlsZEhpZXJhcmNoeShyb3dzLCBjdHguY29sb3JNYXAsIHsgZm9sZGVyc09ubHksIG1vZGU6ICdmaWxlcycgfSk7XG4gICAgaWYgKCFpZHMubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjdHgucGxvdC5hcHBlbmRNaW5pKGNvbnRhaW5lciwgW3tcbiAgICAgIHR5cGU6ICdzdW5idXJzdCcsIGlkcywgbGFiZWxzLCBwYXJlbnRzLCB2YWx1ZXMsXG4gICAgICBtYXJrZXI6IHsgY29sb3JzIH0sIGJyYW5jaHZhbHVlczogJ3RvdGFsJywgaG92ZXJpbmZvOiAnc2tpcCcsXG4gICAgfV0sIHsgbWFyZ2luOiB7IGw6IDAsIHI6IDAsIHQ6IDAsIGI6IDAgfSB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcblxuICBhc3luYyByZW5kZXIoY29udGFpbmVyLCBjdHgpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbW9kZSA9IE1PREVTLnNvbWUobSA9PiBtLmlkID09PSBjb250YWluZXIuZGF0YXNldC5tb2RlKSA/IGNvbnRhaW5lci5kYXRhc2V0Lm1vZGUgOiAnZmlsZXMnO1xuICAgICAgY29uc3QgeyBhbmRXaGVyZSB9ID0gY3R4LnNxbDtcbiAgICAgIGNvbnN0IHBhdGhXaGVyZSA9IGFuZFdoZXJlKGN0eC53aGVyZSwgJ1wicGF0aFwiIElTIE5PVCBOVUxMJyk7XG5cbiAgICAgIC8vIEFib3ZlIHRoZSB0aHJlc2hvbGQsIHJvbGwgZmlsZXMgdXAgdG8gdGhlaXIgZm9sZGVycyBzbyB0aGUgY2hhcnQgc3RheXMgbGVnaWJsZS5cbiAgICAgIGNvbnN0IGZvbGRlcnNPbmx5ID0gYXdhaXQgY291bnRGaWxlcyhjdHgpID4gTUFYX0ZJTEVTX0ZPUl9TVU5CVVJTVDtcbiAgICAgIGNvbnN0IHJvd3MgPSBhd2FpdCBmZXRjaFN1bmJ1cnN0Um93cyhjdHgsIHsgZm9sZGVyc09ubHksIHBhdGhXaGVyZSB9KTtcblxuICAgICAgaWYgKCFyb3dzLmxlbmd0aCkge1xuICAgICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9XCJuby1kYXRhXCI+Tm8gcGF0aCBkYXRhIGF2YWlsYWJsZS48L2Rpdj4nO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgaWRzLCBsYWJlbHMsIHBhcmVudHMsIHZhbHVlcywgY29sb3JzLCBjdXN0b21kYXRhIH0gPVxuICAgICAgICBidWlsZEhpZXJhcmNoeShyb3dzLCBjdHguY29sb3JNYXAsIHsgZm9sZGVyc09ubHksIG1vZGUgfSk7XG5cbiAgICAgIGlmICghaWRzLmxlbmd0aCkge1xuICAgICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9XCJuby1kYXRhXCI+Q291bGQgbm90IGJ1aWxkIGZpbGUgaGllcmFyY2h5LjwvZGl2Pic7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYnV0dG9ucyA9IE1PREVTLm1hcChtID0+XG4gICAgICAgIGA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gc3VuYnVyc3QtbW9kZS1idG4gJHttLmlkID09PSBtb2RlID8gJ2J0bi1zZWNvbmRhcnknIDogJ2J0bi1vdXRsaW5lLXNlY29uZGFyeSd9XCIgZGF0YS1tb2RlPVwiJHttLmlkfVwiPiR7bS5sYWJlbH08L2J1dHRvbj5gKS5qb2luKCcnKTtcbiAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBtYi0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBidG4tZ3JvdXAtc21cIiByb2xlPVwiZ3JvdXBcIj4ke2J1dHRvbnN9PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3VuYnVyc3QtcGxvdC1hcmVhXCI+PC9kaXY+XG4gICAgICBgO1xuXG4gICAgICBmb3IgKGNvbnN0IGJ0biBvZiBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnLnN1bmJ1cnN0LW1vZGUtYnRuJykpIHtcbiAgICAgICAgYnRuLm9uY2xpY2sgPSAoKSA9PiB7XG4gICAgICAgICAgY29udGFpbmVyLmRhdGFzZXQubW9kZSA9IGJ0bi5kYXRhc2V0Lm1vZGU7XG4gICAgICAgICAgdGhpcy5yZW5kZXIoY29udGFpbmVyLCBjdHgpO1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyBTaXppbmcgc2xpY2VzIGJ5IGltYWdlIGNvdW50IG1ha2VzIGVhY2ggZGF0YXBvaW50IGFuIGltYWdlLCBub3QgYSBmaWxlLlxuICAgICAgY3R4LnBsb3Quc2V0U2NvcGVCYWRnZT8uKFxuICAgICAgICBjb250YWluZXIuY2xvc2VzdCgnLndpZGdldC1jYXJkJyk/LnF1ZXJ5U2VsZWN0b3IoJy53aWRnZXQtc2NvcGUtYmFkZ2UnKSxcbiAgICAgICAgbW9kZSA9PT0gJ2ltYWdlcycgPyAnaW1hZ2UnIDogJ2ZpbGUnKTtcblxuICAgICAgY3R4LnBsb3QuYXBwZW5kKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuc3VuYnVyc3QtcGxvdC1hcmVhJyksIFt7XG4gICAgICAgIHR5cGU6ICAgICAgICAgICdzdW5idXJzdCcsXG4gICAgICAgIGlkcyxcbiAgICAgICAgbGFiZWxzLFxuICAgICAgICBwYXJlbnRzLFxuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIGN1c3RvbWRhdGEsXG4gICAgICAgIG1hcmtlcjogICAgICAgIHsgY29sb3JzIH0sXG4gICAgICAgIGJyYW5jaHZhbHVlczogICd0b3RhbCcsXG4gICAgICAgIGhvdmVydGVtcGxhdGU6IEhPVkVSLFxuICAgICAgfV0sIHtcbiAgICAgICAgbWFyZ2luOiB7IGw6IDAsIHI6IDAsIHQ6IDMwLCBiOiAwIH0sXG4gICAgICAgIGhlaWdodDogNTUwLFxuICAgICAgfSk7XG4gICAgICBjdHgucGxvdC5yZW5kZXJEb21Hcm91cExlZ2VuZD8uKGNvbnRhaW5lcik7XG5cbiAgICB9IGNhdGNoIHtcbiAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz1cIm5vLWRhdGFcIj5GYWlsZWQgdG8gbG9hZCBkYXRhLjwvZGl2Pic7XG4gICAgfVxuICB9LFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY291bnRGaWxlcyhjdHgpIHtcbiAgY29uc3QgW3sgbiB9XSA9IGF3YWl0IGN0eC5xdWVyeVJvd3MoXG4gICAgYFNFTEVDVCBDT1VOVChESVNUSU5DVCBcInBhdGhcIik6OkJJR0lOVCBBUyBuXG4gICAgIEZST00gcHBfZGF0YSAke2N0eC5zcWwuYW5kV2hlcmUoY3R4LndoZXJlLCAnXCJwYXRoXCIgSVMgTk9UIE5VTEwnKX1gKTtcbiAgcmV0dXJuIE51bWJlcihuID8/IDApO1xufVxuXG4vLyBPbmUgcm93IHBlciBmb2xkZXIgKHdpdGggZmlsZSBjb3VudCArIHNpemUpIHdoZW4gcm9sbGVkIHVwLCBlbHNlIG9uZSBwZXIgZmlsZS5cbi8vIEZvciB0aGUgZmlsZS1sZXZlbCBjYXNlLCBpc19taXhlZCBmbGFncyBmaWxlcyB3aG9zZSBpbWFnZXMgc3BhbiBtdWx0aXBsZSBncm91cHMuXG5mdW5jdGlvbiBmZXRjaFN1bmJ1cnN0Um93cyhjdHgsIHsgZm9sZGVyc09ubHksIHBhdGhXaGVyZSB9KSB7XG4gIGNvbnN0IGdjRXhwciA9IGN0eC5zcWwuZ3JvdXBDb2woKTtcbiAgY29uc3Qgc3JjICAgID0gY3R4LnNxbC5wZXJGaWxlKHBhdGhXaGVyZSk7XG4gIHJldHVybiBmb2xkZXJzT25seVxuICAgID8gY3R4LnF1ZXJ5Um93cyhgXG4gICAgICAgIFNFTEVDVCByZWdleHBfZXh0cmFjdChcInBhdGhcIjo6VkFSQ0hBUiwgJ14oLiopL1teL10rJCcsIDEpIEFTIHBhdGgsXG4gICAgICAgICAgICAgICAke2djRXhwcn0gQVMgX19ncm91cF9fLFxuICAgICAgICAgICAgICAgQ09VTlQoRElTVElOQ1QgXCJwYXRoXCIpOjpJTlRFR0VSIEFTIF9fbl9fLFxuICAgICAgICAgICAgICAgU1VNKF9fbl9pbWFnZXNfXyk6OklOVEVHRVIgQVMgX19pbWFnZXNfXyxcbiAgICAgICAgICAgICAgIFNVTShcInNpemVfYnl0ZXNcIik6OkJJR0lOVCBBUyBfX3NpemVfX1xuICAgICAgICBGUk9NICR7c3JjfVxuICAgICAgICBHUk9VUCBCWSAxLCAyXG4gICAgICBgKVxuICAgIDogY3R4LnF1ZXJ5Um93cyhgXG4gICAgICAgIFdJVEggbWl4ZWQgQVMgKFxuICAgICAgICAgIFNFTEVDVCBcInBhdGhcIiwgQ09VTlQoRElTVElOQ1QgJHtnY0V4cHJ9KSA+IDEgQVMgaXNfbWl4ZWRcbiAgICAgICAgICBGUk9NIHBwX2RhdGEgJHtwYXRoV2hlcmV9XG4gICAgICAgICAgR1JPVVAgQlkgXCJwYXRoXCJcbiAgICAgICAgKVxuICAgICAgICBTRUxFQ1QgcHBfZmlsZS5cInBhdGhcIiwgJHtnY0V4cHJ9IEFTIF9fZ3JvdXBfXyxcbiAgICAgICAgICAgICAgIHBwX2ZpbGUuX19uX2ltYWdlc19fOjpJTlRFR0VSIEFTIF9faW1hZ2VzX18sXG4gICAgICAgICAgICAgICBwcF9maWxlLlwic2l6ZV9ieXRlc1wiOjpCSUdJTlQgQVMgX19zaXplX18sXG4gICAgICAgICAgICAgICBDT0FMRVNDRShtLmlzX21peGVkLCBmYWxzZSkgQVMgaXNfbWl4ZWRcbiAgICAgICAgRlJPTSAke3NyY31cbiAgICAgICAgTEVGVCBKT0lOIG1peGVkIG0gT04gcHBfZmlsZS5cInBhdGhcIiA9IG0uXCJwYXRoXCJcbiAgICAgIGApO1xufVxuXG5mdW5jdGlvbiBidWlsZEhpZXJhcmNoeShyb3dzLCBjb2xvck1hcCwgeyBmb2xkZXJzT25seSwgbW9kZSB9KSB7XG4gIGNvbnN0IGdyb3VwQ29sb3IgID0gKGcpID0+IGNvbG9yTWFwW1N0cmluZyhnKV0gPz8gJyM4ODgnO1xuICBjb25zdCBhbGxQYXRocyAgICA9IHJvd3MubWFwKHIgPT4gU3RyaW5nKHIucGF0aCA/PyAnJykpO1xuICBjb25zdCBzZXAgICAgICAgICA9IGRldGVjdFNlcGFyYXRvcihhbGxQYXRocyk7XG4gIGNvbnN0IGNvbW1vblJvb3QgID0gZmluZENvbW1vblJvb3QoYWxsUGF0aHMsIHNlcCk7XG5cbiAgY29uc3Qgbm9ybWFsaXNlZCA9IHJvd3MubWFwKHIgPT4ge1xuICAgIGxldCByZWwgPSBTdHJpbmcoci5wYXRoID8/ICcnKTtcbiAgICBpZiAoY29tbW9uUm9vdCAmJiByZWwuc3RhcnRzV2l0aChjb21tb25Sb290KSkgcmVsID0gcmVsLnNsaWNlKGNvbW1vblJvb3QubGVuZ3RoKTtcbiAgICByZWwgPSByZWwucmVwbGFjZSgvXlsvXFxcXF0rLywgJycpO1xuICAgIHJldHVybiB7XG4gICAgICBwYXRoOiAgICByZWwsXG4gICAgICBncm91cDogICBTdHJpbmcoci5fX2dyb3VwX18pLFxuICAgICAgZmlsZXM6ICAgZm9sZGVyc09ubHkgPyBudW0oci5fX25fXykgOiAxLFxuICAgICAgaW1hZ2VzOiAgbnVtKHIuX19pbWFnZXNfXyksXG4gICAgICBieXRlczogICBudW0oci5fX3NpemVfXyksXG4gICAgICBpc01peGVkOiAhZm9sZGVyc09ubHkgJiYgQm9vbGVhbihyLmlzX21peGVkKSxcbiAgICB9O1xuICB9KTtcblxuICBjb25zdCByb290TmFtZSA9IGNvbW1vblJvb3QgPyBjb21tb25Sb290LnNwbGl0KC9bL1xcXFxdLykuZmlsdGVyKEJvb2xlYW4pLnBvcCgpID8/ICdSb290JyA6ICdSb290JztcblxuICBjb25zdCBub2RlU3RhdHMgID0geyBbcm9vdE5hbWVdOiB7IGZpbGVzOiAwLCBpbWFnZXM6IDAsIGJ5dGVzOiAwIH0gfTtcbiAgY29uc3Qgbm9kZUdyb3VwcyA9IHsgW3Jvb3ROYW1lXTogbmV3IFNldCgpIH07XG4gIGNvbnN0IG5vZGVQYXJlbnQgPSB7IFtyb290TmFtZV06ICcnIH07XG4gIGNvbnN0IG5vZGVMYWJlbCAgPSB7IFtyb290TmFtZV06IHJvb3ROYW1lIH07XG5cbiAgZm9yIChjb25zdCByZWMgb2Ygbm9ybWFsaXNlZCkge1xuICAgIGNvbnN0IHsgcGF0aCwgZ3JvdXAgfSA9IHJlYztcbiAgICBpZiAoIXJlYy5maWxlcyAmJiAhcmVjLmltYWdlcyAmJiAhcmVjLmJ5dGVzKSBjb250aW51ZTtcbiAgICBjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoL1svXFxcXF0vKS5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICBsZXQgZmlsZUlkO1xuICAgIGlmIChmb2xkZXJzT25seSkge1xuICAgICAgZmlsZUlkID0gcm9vdE5hbWVcbiAgICAgICAgPyAocGF0aCA/IGAke3Jvb3ROYW1lfSR7c2VwfSR7cGF0aH1gIDogcm9vdE5hbWUpXG4gICAgICAgIDogKHBhdGggfHwgcm9vdE5hbWUgfHwgJycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWxlSWQgPSByb290TmFtZSA/IGAke3Jvb3ROYW1lfSR7c2VwfSR7cGF0aH1gIDogcGF0aDtcbiAgICAgIGNvbnN0IHBhcmVudElkID0gZ2V0UGFyZW50SWQoZmlsZUlkLCBzZXAsIHJvb3ROYW1lKTtcbiAgICAgIG5vZGVTdGF0c1tmaWxlSWRdICA9IHsgZmlsZXM6IHJlYy5maWxlcywgaW1hZ2VzOiByZWMuaW1hZ2VzLCBieXRlczogcmVjLmJ5dGVzIH07XG4gICAgICBub2RlR3JvdXBzW2ZpbGVJZF0gPSByZWMuaXNNaXhlZCA/IG5ldyBTZXQoW2dyb3VwLCAnX19taXhlZF9fJ10pIDogbmV3IFNldChbZ3JvdXBdKTtcbiAgICAgIG5vZGVQYXJlbnRbZmlsZUlkXSA9IHBhcmVudElkO1xuICAgICAgbm9kZUxhYmVsW2ZpbGVJZF0gID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV0gfHwgZmlsZUlkO1xuICAgIH1cblxuICAgIGxldCBjdXIgPSBmb2xkZXJzT25seSA/IGZpbGVJZCA6IGdldFBhcmVudElkKGZpbGVJZCwgc2VwLCByb290TmFtZSk7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGlmIChjdXIgaW4gbm9kZVN0YXRzKSB7XG4gICAgICAgIGxldCBwID0gY3VyO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgIGFkZFN0YXRzKG5vZGVTdGF0c1twXSwgcmVjKTtcbiAgICAgICAgICBub2RlR3JvdXBzW3BdLmFkZChncm91cCk7XG4gICAgICAgICAgaWYgKHAgPT09IHJvb3ROYW1lKSBicmVhaztcbiAgICAgICAgICBwID0gbm9kZVBhcmVudFtwXTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHBhcmVudElkID0gZ2V0UGFyZW50SWQoY3VyLCBzZXAsIHJvb3ROYW1lKTtcbiAgICAgICAgbm9kZVN0YXRzW2N1cl0gID0geyBmaWxlczogcmVjLmZpbGVzLCBpbWFnZXM6IHJlYy5pbWFnZXMsIGJ5dGVzOiByZWMuYnl0ZXMgfTtcbiAgICAgICAgbm9kZUdyb3Vwc1tjdXJdID0gbmV3IFNldChbZ3JvdXBdKTtcbiAgICAgICAgbm9kZVBhcmVudFtjdXJdID0gcGFyZW50SWQ7XG4gICAgICAgIGNvbnN0IG5hbWVQYXJ0cyA9IGN1ci5zcGxpdChzZXApO1xuICAgICAgICBub2RlTGFiZWxbY3VyXSAgPSBuYW1lUGFydHNbbmFtZVBhcnRzLmxlbmd0aCAtIDFdIHx8IGN1cjtcbiAgICAgICAgaWYgKGN1ciA9PT0gcm9vdE5hbWUpIGJyZWFrO1xuICAgICAgICBjdXIgPSBwYXJlbnRJZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBwaWNrID0gKE1PREVTLmZpbmQobSA9PiBtLmlkID09PSBtb2RlKSA/PyBNT0RFU1swXSkucGljaztcbiAgY29uc3QgaWRzID0gW10sIGxhYmVscyA9IFtdLCBwYXJlbnRzID0gW10sIHZhbHVlcyA9IFtdLCBjb2xvcnMgPSBbXSwgY3VzdG9tZGF0YSA9IFtdO1xuICBmb3IgKGNvbnN0IFtpZCwgc10gb2YgT2JqZWN0LmVudHJpZXMobm9kZVN0YXRzKSkge1xuICAgIGNvbnN0IHZhbHVlID0gcGljayhzKTtcbiAgICBpZiAoIXZhbHVlKSBjb250aW51ZTtcbiAgICBpZHMucHVzaChpZCk7XG4gICAgbGFiZWxzLnB1c2gobm9kZUxhYmVsW2lkXSA/PyBpZCk7XG4gICAgcGFyZW50cy5wdXNoKG5vZGVQYXJlbnRbaWRdID8/ICcnKTtcbiAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgY3VzdG9tZGF0YS5wdXNoKFtzLmZpbGVzLCBzLmltYWdlcywgcy5ieXRlc10pO1xuICAgIGNvbnN0IHVuaXF1ZUdyb3VwcyA9IG5vZGVHcm91cHNbaWRdID8/IG5ldyBTZXQoKTtcbiAgICBjb2xvcnMucHVzaCh1bmlxdWVHcm91cHMuc2l6ZSA9PT0gMSA/IGdyb3VwQ29sb3IoWy4uLnVuaXF1ZUdyb3Vwc11bMF0pIDogTUlYRURfQ09MT1IpO1xuICB9XG4gIHJldHVybiB7IGlkcywgbGFiZWxzLCBwYXJlbnRzLCB2YWx1ZXMsIGNvbG9ycywgY3VzdG9tZGF0YSB9O1xufVxuXG5mdW5jdGlvbiBudW0odikge1xuICBjb25zdCBuID0gTnVtYmVyKHYgPz8gMCk7XG4gIHJldHVybiBOdW1iZXIuaXNGaW5pdGUobikgPyBuIDogMDtcbn1cblxuZnVuY3Rpb24gYWRkU3RhdHModGFyZ2V0LCByZWMpIHtcbiAgdGFyZ2V0LmZpbGVzICArPSByZWMuZmlsZXM7XG4gIHRhcmdldC5pbWFnZXMgKz0gcmVjLmltYWdlcztcbiAgdGFyZ2V0LmJ5dGVzICArPSByZWMuYnl0ZXM7XG59XG5cbmZ1bmN0aW9uIGdldFBhcmVudElkKGlkLCBzZXAsIHJvb3ROYW1lKSB7XG4gIGNvbnN0IGlkeCA9IGlkLmxhc3RJbmRleE9mKHNlcCk7XG4gIGlmIChpZHggPT09IC0xKSByZXR1cm4gcm9vdE5hbWUgfHwgJyc7XG4gIHJldHVybiBpZC5zbGljZSgwLCBpZHgpIHx8IHJvb3ROYW1lIHx8ICcnO1xufVxuXG5mdW5jdGlvbiBkZXRlY3RTZXBhcmF0b3IocGF0aHMpIHtcbiAgY29uc3QgaGFzRm9yd2FyZCAgPSBwYXRocy5zb21lKHAgPT4gcC5pbmNsdWRlcygnLycpKTtcbiAgY29uc3QgaGFzQmFja3dhcmQgPSBwYXRocy5zb21lKHAgPT4gcC5pbmNsdWRlcygnXFxcXCcpKTtcbiAgcmV0dXJuIGhhc0JhY2t3YXJkICYmICFoYXNGb3J3YXJkID8gJ1xcXFwnIDogJy8nO1xufVxuXG5mdW5jdGlvbiBmaW5kQ29tbW9uUm9vdChwYXRocywgc2VwKSB7XG4gIGlmICghcGF0aHMubGVuZ3RoKSByZXR1cm4gJyc7XG4gIGNvbnN0IGhhc0xlYWRpbmdTbGFzaCA9IHBhdGhzWzBdLnN0YXJ0c1dpdGgoJy8nKSB8fCBwYXRoc1swXS5zdGFydHNXaXRoKCdcXFxcJyk7XG4gIGNvbnN0IHBhcnRzID0gcGF0aHMubWFwKHAgPT4gcC5zcGxpdCgvWy9cXFxcXS8pLmZpbHRlcihCb29sZWFuKSk7XG4gIGNvbnN0IG1pbiAgID0gTWF0aC5taW4oLi4ucGFydHMubWFwKHAgPT4gcC5sZW5ndGgpKTtcbiAgbGV0IGNvbW1vbiAgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaW47IGkrKykge1xuICAgIGNvbnN0IHZhbCA9IHBhcnRzWzBdW2ldO1xuICAgIGlmIChwYXJ0cy5ldmVyeShwID0+IHBbaV0gPT09IHZhbCkpIGNvbW1vbi5wdXNoKHZhbCk7XG4gICAgZWxzZSBicmVhaztcbiAgfVxuICBpZiAoIWNvbW1vbi5sZW5ndGgpIHJldHVybiAnJztcbiAgcmV0dXJuIChoYXNMZWFkaW5nU2xhc2ggPyBzZXAgOiAnJykgKyBjb21tb24uam9pbihzZXApO1xufSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFBO0FBQUEsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxHQUFHO0FBQ2xDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7O0FBRTdCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUM1RSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUk7QUFDbEMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDZCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzdELENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQzs7QUFFRCxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENB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QUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNwRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzQixDQUFDLENBQUMsQ0FBQzs7QUFFSCxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFdkUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUTtBQUM1RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVk7QUFDM0UsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0I7QUFDdEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDekUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSzs7QUFFbEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDbkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSzs7QUFFakMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNO0FBQ3BELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ2xFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUk7QUFDZixDQUFDLENBQUMsQ0FBQzs7QUFFSCxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNSLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDdEcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRztBQUNsQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDOztBQUVqRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPO0FBQ3ZGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLHNCQUFzQjtBQUN4RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7O0FBRTNFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO0FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRU4sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDOztBQUVqRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07QUFDZCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFTixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25MLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQzVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRztBQUMxRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7QUFDYixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRztBQUM3QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVQLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSTtBQUNuRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRU4sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJO0FBQy9FLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9FLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDOztBQUU3QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUNqQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRztBQUNYLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO0FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU87QUFDZixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUNkLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVO0FBQ2xCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSztBQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRztBQUNuQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDUixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7O0FBRWhELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNaLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0UsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0gsQ0FBQzs7QUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTO0FBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQzlDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2Qjs7QUFFQSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJO0FBQ2hGLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTTtBQUNsRixRQUFRLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RCxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO0FBQzNDLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDVCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO0FBQ3BCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ3pFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUztBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSztBQUN2RCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVU7QUFDdkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRztBQUNsQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztBQUNwQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDdEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDMUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTO0FBQ2xDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUk7QUFDeEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUztBQUNyRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVO0FBQzFELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRO0FBQ3ZELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzlDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUc7QUFDbEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7QUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1I7O0FBRUEsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9ELENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDMUQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDO0FBQy9DLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUM7O0FBRW5ELENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztBQUNwRixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDWCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHO0FBQ2xCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNsQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7QUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQ2xELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRUosQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzs7QUFFbEcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDOztBQUU3QyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7QUFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVE7QUFDekQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7O0FBRXJELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU07QUFDZCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3JCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDZixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUTtBQUN2RCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDWCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7QUFDM0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUN6RCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3JGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRO0FBQ25DLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUM1RCxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVKLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDdkUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHO0FBQ25CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztBQUNsQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUs7QUFDbkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDM0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUs7QUFDYixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ2IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVE7QUFDbEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO0FBQ3hDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7QUFDaEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUs7QUFDbkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUTtBQUN0QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDLENBQUM7O0FBRUYsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7QUFDaEUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RGLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ25ELENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUTtBQUN4QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3BDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUN0QixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztBQUN6RixDQUFDLENBQUM7QUFDRixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM3RDs7QUFFQSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQzs7QUFFQSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUs7QUFDNUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU07QUFDN0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSztBQUM1Qjs7QUFFQSxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztBQUNqQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQzs7QUFFQSxRQUFRLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RELENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hEOztBQUVBLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9FLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3JELENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUN4RCxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLO0FBQ2QsQ0FBQyxDQUFDO0FBQ0YsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDL0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUN4RCJ9

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJpbXBvcnRzIjoiMiIsIm1hcHBpbmdzIjpmYWxzZSwiZGVwcyI6IjMiLCJkeW5hbWljRGVwcyI6IjQiLCJzdGF0aWNNb2NrcyI6bnVsbCwiaGFzQ292ZXJhZ2VEYXRhIjpmYWxzZX0sIi9ob21lL2VsbGEvd29yay9waXhlbC1wYXRyb2wvcGFja2FnZXMvcGl4ZWwtcGF0cm9sLWJhc2Uvc3JjL3BpeGVsX3BhdHJvbF9iYXNlL3ZpZXdlci9wbHVnaW5fc3VuYnVyc3QuanMiLHsidXJscyI6IjUiLCJpZHMiOiI2In0sW10sW10sW10se31d