const __vite_ssr_import_0__ = await __vite_ssr_import__("/@fs/home/ella/.npm/_npx/69c381f8ad94b576/node_modules/vitest/dist/index.js", {"importedNames":["describe","expect","it"]});
const __vite_ssr_import_1__ = await __vite_ssr_import__("/src/pixel_patrol_base/viewer/plugin_color.js", {"importedNames":["default","colorAssessment","groupCenter","hsvSaturation","hsvToRgb","hueDegrees","hueName","imageFromRow","imageTable","overviewSummary","quantile","wheelPoint","wheelRadius"]});



const [widget] = __vite_ssr_import_1__.default;
const luma = ([r, g, b]) => 0.299 * r + 0.587 * g + 0.114 * b;
const image = (rgb, extra = {}) => ({ group: 'g', key: 'k', rgb, brightness: luma(rgb), contrast: 10, saturation: (0,__vite_ssr_import_1__.hsvSaturation)(rgb), coherence: null, ...extra });
const images = (rgb, n = 5, extra = {}) => Array.from({ length: n }, () => image(rgb, extra));
const angle = (degrees) => [Math.cos((degrees * Math.PI) / 180), Math.sin((degrees * Math.PI) / 180)];

(0,__vite_ssr_import_0__.describe)('color maths', () => {
  (0,__vite_ssr_import_0__.it)('finds hues, names them, and takes quantiles', () => {
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.hueDegrees)([200, 100, 50])).toBeCloseTo(19.1, 1);
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.hueDegrees)([0, 0, 0])).toBeNull();
    (0,__vite_ssr_import_0__.expect)([0, 60, 120, 180, 240, 300, 359].map((0,__vite_ssr_import_1__.hueName))).toEqual(['red', 'yellow', 'green', 'cyan', 'blue', 'magenta', 'red']);
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.quantile)([1, 2, 3, 4, 5], 0.5)).toBe(3);
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.quantile)([], 0.5)).toBeNull();
  });

  (0,__vite_ssr_import_0__.it)('reads saturation and converts hues to colors', () => {
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.hsvSaturation)([200, 100, 50])).toBeCloseTo(0.75);
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.hsvSaturation)([0, 0, 0])).toBe(0);
    (0,__vite_ssr_import_0__.expect)([0, 120, 240].map(hue => (0,__vite_ssr_import_1__.hsvToRgb)(hue, 1, 1))).toEqual([[1, 0, 0], [0, 1, 0], [0, 0, 1]]);
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.hsvToRgb)(60, 0, 0.5)).toEqual([0.5, 0.5, 0.5]);
  });
});

(0,__vite_ssr_import_0__.describe)('hue/saturation wheel', () => {
  __vite_ssr_import_0__.it.each([[[1, 0, 0], 0], [[1, 1, 0], 60], [[0, 1, 0], 120], [[0, 1, 1], 180], [[0, 0, 1], 240], [[1, 0, 1], 300]])(
    'puts %j on the rim at %i degrees', (rgb, degrees) => {
      const { x, y, saturation } = (0,__vite_ssr_import_1__.wheelPoint)(rgb);
      (0,__vite_ssr_import_0__.expect)(saturation).toBe(1);
      [x, y].forEach((value, i) => (0,__vite_ssr_import_0__.expect)(value).toBeCloseTo(angle(degrees)[i], 6));
    });

  (0,__vite_ssr_import_0__.it)('puts gray in the center, ignores a missing color, and grows with the square root of saturation whatever the brightness', () => {
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.wheelPoint)([120, 120, 120])).toMatchObject({ x: 0, y: 0 });
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.wheelPoint)([0, 0, 0])).toMatchObject({ x: 0, y: 0 });
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.wheelPoint)(null)).toBeNull();
    (0,__vite_ssr_import_0__.expect)([(0,__vite_ssr_import_1__.wheelRadius)(0.25), (0,__vite_ssr_import_1__.wheelRadius)(2)]).toEqual([0.5, 1]);
    const [dim, bright] = [(0,__vite_ssr_import_1__.wheelPoint)([20, 10, 10]), (0,__vite_ssr_import_1__.wheelPoint)([200, 100, 100])];
    (0,__vite_ssr_import_0__.expect)(dim.x).toBeCloseTo(bright.x, 6);
    (0,__vite_ssr_import_0__.expect)(dim.y).toBeCloseTo(bright.y, 6);
  });
});

(0,__vite_ssr_import_0__.describe)('assessment', () => {
  __vite_ssr_import_0__.it.each([
    ['a neutral group', images([100, 100, 100]), 'neutral'],
    ['just under the neutral limit', images([104, 100, 100]), 'neutral'],
    ['a slight cast', images([110, 100, 100]), 'slight red cast'],
    ['a strong cast', images([200, 100, 50]), 'strong orange cast'],
    ['a single-hue tint', images([200, 100, 50], 5, { coherence: 0.95 }), 'strong orange cast'],
    ['colorful pixels whose hues disagree', images([150, 137, 189], 5, { saturation: 0.72, coherence: 0.1 }), 'mixed hues, average leans blue'],
    ['hues that cancel to gray', images([120, 120, 120], 5, { saturation: 0.72, coherence: 0.1 }), 'mixed hues, average is neutral'],
    ['no hue measurement', images([150, 137, 189]), 'strong blue cast'],
  ])('reads the average color of %s', (_, group, text) => {
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.colorAssessment)(group).balance.text).toBe(text);
  });

  (0,__vite_ssr_import_0__.it)('reads the verdict from the point the group is drawn at, further out for a stronger cast', () => {
    const [near, far] = [(0,__vite_ssr_import_1__.groupCenter)(images([104, 100, 100])), (0,__vite_ssr_import_1__.groupCenter)(images([112, 100, 100]))];
    (0,__vite_ssr_import_0__.expect)(Math.hypot(far.x, far.y)).toBeGreaterThan(Math.hypot(near.x, near.y));
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.groupCenter)(images([110, 100, 100])).saturation).toBeCloseTo(0.0909, 3);
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.groupCenter)(images([200, 100, 50])).hue).toBeCloseTo(19.1, 1);
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.groupCenter)([])).toBeNull();
  });

  __vite_ssr_import_0__.it.each([[0, 'gray'], [0.05, 'gray'], [0.2, 'muted'], [0.4, 'moderate'], [0.75, 'vivid']])(
    'calls saturation %f %s', (saturation, word) => {
      (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.colorAssessment)(images([200, 100, 50], 5, { saturation })).saturation.text).toBe(word);
    });

  (0,__vite_ssr_import_0__.describe)('a group that mixes gray and vivid images', () => {
    const gray = { saturation: 0.002, coherence: 0.002 };
    const vivid = { saturation: 0.73, coherence: 0.74 };
    const mixed = [
      ...images([100, 100, 100], 4, gray), image([105, 100, 112], { saturation: 0.12, coherence: 0.49 }),
      image([60, 120, 190], vivid), image([110, 60, 40], { saturation: 0.54, coherence: 0.75 }),
    ];

    (0,__vite_ssr_import_0__.it)('lists the classes instead of a median that hides them', () => {
      const found = (0,__vite_ssr_import_1__.colorAssessment)(mixed);
      (0,__vite_ssr_import_0__.expect)(found.saturation).toMatchObject({ varied: true, text: 'varies: 4 gray, 1 muted, 1 moderate, 1 vivid' });
      (0,__vite_ssr_import_0__.expect)(found.saturation.parts).toEqual([['gray', 4], ['muted', 1], ['moderate', 1], ['vivid', 1]]);
      (0,__vite_ssr_import_0__.expect)(found.balance).toMatchObject({ varied: true });
      (0,__vite_ssr_import_0__.expect)(found.balance.parts[0]).toEqual(['neutral', 4]);
      (0,__vite_ssr_import_0__.expect)(found.balance.text).toContain('strong cast');
      (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.overviewSummary)(new Map([['day', mixed]]))).toBe('7 RGB images, average color <strong>varies between images</strong> in every group.');
    });

    (0,__vite_ssr_import_0__.it)('says mostly when a large majority agrees, and nothing extra when all do', () => {
      const mostly = [...images([100, 100, 100], 7, gray), image([60, 120, 190], vivid)];
      (0,__vite_ssr_import_0__.expect)([(0,__vite_ssr_import_1__.colorAssessment)(mostly).saturation.text, (0,__vite_ssr_import_1__.colorAssessment)(mostly).balance.text]).toEqual(['mostly gray', 'mostly neutral']);
      (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.colorAssessment)(images([100, 100, 100], 5, gray)).saturation.text).toBe('gray');
    });
  });
});

(0,__vite_ssr_import_0__.describe)('SQL', () => {
  (0,__vite_ssr_import_0__.it)('turns a slice row into an image', () => {
    const row = { __group__: 'a', __key__: '/d/x.png', __name__: 'x.png', __frn__: '7', r: 200, g: '100', b: 50, brightness: 124.2, contrast: 12, saturation: 0.75, coherence: null };
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.imageFromRow)(row)).toEqual({ group: 'a', key: '/d/x.png', name: 'x.png', frn: 7, rgb: [200, 100, 50], brightness: 124.2, contrast: 12, saturation: 0.75, coherence: null });
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.imageFromRow)({ ...row, __name__: undefined, __frn__: null })).toMatchObject({ name: '/d/x.png', frn: null });
  });

  (0,__vite_ssr_import_0__.it)('builds one row per complete image from the channel means and the processor columns, under the current filter', () => {
    const ctx = {
      schema: { allCols: [] }, state: { dimensions: {} }, where: 'WHERE "day" = 1',
      sql: { dimSubsetWhere: () => ['"obs_level" = 0'], andWhere: (w, c) => (w ? `${w} AND ${c}` : `WHERE ${c}`) },
    };
    const sql = (0,__vite_ssr_import_1__.imageTable)(ctx);
    ['r', 'g', 'b'].forEach(name => (0,__vite_ssr_import_0__.expect)(sql).toContain(`"ch_${name}_mean"`));
    (0,__vite_ssr_import_0__.expect)(sql).toContain('"dim_s" = 2');
    (0,__vite_ssr_import_0__.expect)(sql).toContain('"obs_level" = 0');
    (0,__vite_ssr_import_0__.expect)(sql).toContain('GROUP BY "path"');
    (0,__vite_ssr_import_0__.expect)(sql).toContain('WHERE "day" = 1 AND "ch_r_mean" IS NOT NULL');
    (0,__vite_ssr_import_0__.expect)(sql).toContain('ROUND("rgb_saturation_mean"');
    (0,__vite_ssr_import_0__.expect)(sql).not.toMatch(/COALESCE|std_intensity/);
  });
});

const rows = (group, key, r, g, b, extra = {}) => ({ __group__: group, __key__: key, __name__: `${key}.png`, __frn__: key.charCodeAt(0), r, g, b, brightness: luma([r, g, b]), contrast: 10, saturation: (0,__vite_ssr_import_1__.hsvSaturation)([r, g, b]), coherence: null, ...extra });
const DATA = [rows('warm', 'a', 200, 100, 50), rows('warm', 'b', 190, 100, 55), rows('gray', 'c', 100, 100, 100)];

const makeContext = (data, groups = ['warm', 'gray']) => {
  const calls = { distributions: [], plots: [], minis: [], grids: [], registered: [], queries: [] };
  return {
    calls, groups, schema: { allCols: [] }, state: { dimensions: {}, showSignificance: false }, where: '',
    sql: { groupCol: () => '"g"', groupExpr: () => '"g" AS __group__', dimSubsetWhere: () => ['"obs_level" = 0'], andWhere: (w, c) => (w ? `${w} AND ${c}` : `WHERE ${c}`) },
    queryRows: async (sql) => { calls.queries.push(sql); return data; },
    groupLabel: (g) => g.toUpperCase(), color: { group: () => '#4c78a8' },
    plot: {
      LAYOUT: {}, escapeHtml: String, groupingLabel: () => 'Group',
      append: (host, traces, layout) => { const div = document.createElement('div'); host.appendChild(div); calls.plots.push({ traces, layout, div }); return div; },
      registerPointPlot: (div, c, metric) => calls.registered.push({ div, metric }),
      appendMini: (host, traces, layout) => calls.minis.push({ traces, layout }),
      flexGrid: (parent, perRow) => { const wrap = document.createElement('div'); parent.appendChild(wrap); calls.grids.push(perRow); return { wrap, flexBasisPct: 48 }; },
      engine: { CONSTANTS: { MAX_VIOLIN_POINTS: 5000 }, renderDistribution: async (host, c, spec) => { calls.distributions.push(spec); return true; } },
    },
  };
};

(0,__vite_ssr_import_0__.describe)('widget', () => {
  (0,__vite_ssr_import_0__.it)('needs the channel means and the processor columns along S', () => {
    const base = { allCols: ['mean_intensity', 'rgb_luma_std', 'rgb_saturation_mean'], dimCols: ['dim_s'] };
    (0,__vite_ssr_import_0__.expect)(widget.requires(base)).toBe(true);
    (0,__vite_ssr_import_0__.expect)(widget.requires({ ...base, dimCols: ['dim_t'] })).toBe(false);
    (0,__vite_ssr_import_0__.expect)(widget.requires({ ...base, allCols: ['mean_intensity'] })).toBe(false);
  });

  (0,__vite_ssr_import_0__.it)('puts the wheel without a legend next to the table, and the shared plots below', async () => {
    const ctx = makeContext(DATA);
    const container = document.createElement('div');
    await widget.render(container, ctx);

    const [top] = container.children;
    (0,__vite_ssr_import_0__.expect)(top.style.display).toBe('flex');
    (0,__vite_ssr_import_0__.expect)(top.style.alignItems).toBe('center');
    const table = top.querySelector('table');
    (0,__vite_ssr_import_0__.expect)(table.textContent).toContain('WARM');
    (0,__vite_ssr_import_0__.expect)(table.textContent).not.toContain('image');
    (0,__vite_ssr_import_0__.expect)([...table.querySelectorAll('th')].map(th => th.textContent)).toEqual(['Group', 'Average color', 'Saturation']);
    (0,__vite_ssr_import_0__.expect)(ctx.calls.plots[0].layout.showlegend).toBe(false);

    const [brightness, contrast, , cast] = ctx.calls.distributions;
    (0,__vite_ssr_import_0__.expect)(ctx.calls.distributions.map(spec => spec.numCol)).toEqual(['color_brightness', 'rgb_luma_std', 'color_saturation', 'color_cast']);
    (0,__vite_ssr_import_0__.expect)(brightness).toMatchObject({ series: { isCategory: true }, categoriesOrder: ['warm', 'gray'], yLabel: 'Brightness (luma)' });
    (0,__vite_ssr_import_0__.expect)(brightness.source.table).toContain('pp_all');
    (0,__vite_ssr_import_0__.expect)(contrast.title).toContain('Distribution of Contrast<br>');
    (0,__vite_ssr_import_0__.expect)(cast.title).toContain('Distribution of Color cast<br>');
    (0,__vite_ssr_import_0__.expect)(cast.title).toContain('n=3');
    (0,__vite_ssr_import_0__.expect)(cast.yLabel).toBe('Color cast (saturation of the average color)');
    (0,__vite_ssr_import_0__.expect)(cast.layout.yaxis).toEqual({ title: cast.yLabel, rangemode: 'nonnegative' });
    (0,__vite_ssr_import_0__.expect)(ctx.calls.grids).toEqual([3]);
  });

  (0,__vite_ssr_import_0__.it)('gives many groups one plot per row, like the other widgets', async () => {
    const groups = ['a', 'b', 'c', 'd'];
    const ctx = makeContext(groups.map(g => rows(g, g, 100, 100, 100)), groups);
    await widget.render(document.createElement('div'), ctx);
    (0,__vite_ssr_import_0__.expect)(ctx.calls.grids).toEqual([1]);
  });

  (0,__vite_ssr_import_0__.it)('makes the wheel dots clickable, named on hover, and keeps the group medians out of the selection', async () => {
    const ctx = makeContext(DATA);
    await widget.render(document.createElement('div'), ctx);
    const [{ traces, div }] = ctx.calls.plots;
    const warm = traces.find(trace => trace.name === 'WARM' && trace.customdata);
    (0,__vite_ssr_import_0__.expect)(warm.text[0]).toContain('<b>a.png</b>');
    (0,__vite_ssr_import_0__.expect)(warm.customdata).toEqual(['a'.charCodeAt(0), 'b'.charCodeAt(0)]);
    (0,__vite_ssr_import_0__.expect)(warm.hovertemplate).toContain('%{text}');
    (0,__vite_ssr_import_0__.expect)(ctx.calls.registered).toEqual([{ div, metric: 'color_cast' }]);
    const median = traces.find(trace => trace.marker?.symbol === 'diamond');
    (0,__vite_ssr_import_0__.expect)(median.customdata).toBeUndefined();
    (0,__vite_ssr_import_0__.expect)(median.text[0]).toContain('median of the group');
    (0,__vite_ssr_import_0__.expect)(ctx.calls.queries[0]).toContain('"file_row_number" AS __frn__');

    delete ctx.plot.registerPointPlot;
    await widget.render(document.createElement('div'), ctx);
  });

  (0,__vite_ssr_import_0__.it)('shows a group that differs as "varies" with the classes listed under it, and says so when there are no RGB images', async () => {
    const mixed = [rows('a', 'x', 100, 100, 100, { saturation: 0.001 }), rows('a', 'y', 100, 100, 100, { saturation: 0.001 }), rows('a', 'z', 60, 120, 190, { saturation: 0.7, coherence: 0.7 })];
    const container = document.createElement('div');
    await widget.render(container, makeContext(mixed, ['a']));
    const cell = container.querySelectorAll('tbody td')[2];
    (0,__vite_ssr_import_0__.expect)(cell.textContent.startsWith('varies')).toBe(true);
    (0,__vite_ssr_import_0__.expect)(cell.querySelector('div').textContent).toBe('2 gray · 1 vivid');

    const empty = document.createElement('div');
    await widget.render(empty, makeContext([]));
    (0,__vite_ssr_import_0__.expect)(empty.textContent).toContain('No RGB images found');
  });
});

(0,__vite_ssr_import_0__.describe)('overview tile', () => {
  (0,__vite_ssr_import_0__.it)('summarizes whether the groups share an average color', async () => {
    (0,__vite_ssr_import_0__.expect)(await widget.overviewMessage(makeContext(DATA))).toBe('3 RGB images, average color <strong>differs between groups</strong>.');
    const same = new Map([['a', images([100, 100, 100], 1)], ['b', images([110, 110, 110], 1)]]);
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.overviewSummary)(same)).toBe('2 RGB images, average color <strong>neutral</strong> in every group.');
    (0,__vite_ssr_import_0__.expect)(await widget.overviewMessage(makeContext([]))).toBeNull();
  });

  (0,__vite_ssr_import_0__.it)('draws the wheel without legend or labels, and nothing without color data', async () => {
    const ctx = makeContext(DATA);
    (0,__vite_ssr_import_0__.expect)(await widget.overviewPlot(document.createElement('div'), ctx)).toBe(true);
    const [{ traces, layout }] = ctx.calls.minis;
    (0,__vite_ssr_import_0__.expect)(layout).toMatchObject({ showlegend: false, annotations: [] });
    (0,__vite_ssr_import_0__.expect)(traces.some(trace => trace.name === 'WARM')).toBe(true);
    (0,__vite_ssr_import_0__.expect)(await widget.overviewPlot(document.createElement('div'), makeContext([]))).toBe(false);
  });
});
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbG9yLnRlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tICd2aXRlc3QnO1xuaW1wb3J0IHdpZGdldHMsIHtcbiAgY29sb3JBc3Nlc3NtZW50LCBncm91cENlbnRlciwgaHN2U2F0dXJhdGlvbiwgaHN2VG9SZ2IsIGh1ZURlZ3JlZXMsIGh1ZU5hbWUsIGltYWdlRnJvbVJvdywgaW1hZ2VUYWJsZSwgb3ZlcnZpZXdTdW1tYXJ5LFxuICBxdWFudGlsZSwgd2hlZWxQb2ludCwgd2hlZWxSYWRpdXMsXG59IGZyb20gJy4uLy4uL3NyYy9waXhlbF9wYXRyb2xfYmFzZS92aWV3ZXIvcGx1Z2luX2NvbG9yLmpzJztcblxuY29uc3QgW3dpZGdldF0gPSB3aWRnZXRzO1xuY29uc3QgbHVtYSA9IChbciwgZywgYl0pID0+IDAuMjk5ICogciArIDAuNTg3ICogZyArIDAuMTE0ICogYjtcbmNvbnN0IGltYWdlID0gKHJnYiwgZXh0cmEgPSB7fSkgPT4gKHsgZ3JvdXA6ICdnJywga2V5OiAnaycsIHJnYiwgYnJpZ2h0bmVzczogbHVtYShyZ2IpLCBjb250cmFzdDogMTAsIHNhdHVyYXRpb246IGhzdlNhdHVyYXRpb24ocmdiKSwgY29oZXJlbmNlOiBudWxsLCAuLi5leHRyYSB9KTtcbmNvbnN0IGltYWdlcyA9IChyZ2IsIG4gPSA1LCBleHRyYSA9IHt9KSA9PiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBuIH0sICgpID0+IGltYWdlKHJnYiwgZXh0cmEpKTtcbmNvbnN0IGFuZ2xlID0gKGRlZ3JlZXMpID0+IFtNYXRoLmNvcygoZGVncmVlcyAqIE1hdGguUEkpIC8gMTgwKSwgTWF0aC5zaW4oKGRlZ3JlZXMgKiBNYXRoLlBJKSAvIDE4MCldO1xuXG5kZXNjcmliZSgnY29sb3IgbWF0aHMnLCAoKSA9PiB7XG4gIGl0KCdmaW5kcyBodWVzLCBuYW1lcyB0aGVtLCBhbmQgdGFrZXMgcXVhbnRpbGVzJywgKCkgPT4ge1xuICAgIGV4cGVjdChodWVEZWdyZWVzKFsyMDAsIDEwMCwgNTBdKSkudG9CZUNsb3NlVG8oMTkuMSwgMSk7XG4gICAgZXhwZWN0KGh1ZURlZ3JlZXMoWzAsIDAsIDBdKSkudG9CZU51bGwoKTtcbiAgICBleHBlY3QoWzAsIDYwLCAxMjAsIDE4MCwgMjQwLCAzMDAsIDM1OV0ubWFwKGh1ZU5hbWUpKS50b0VxdWFsKFsncmVkJywgJ3llbGxvdycsICdncmVlbicsICdjeWFuJywgJ2JsdWUnLCAnbWFnZW50YScsICdyZWQnXSk7XG4gICAgZXhwZWN0KHF1YW50aWxlKFsxLCAyLCAzLCA0LCA1XSwgMC41KSkudG9CZSgzKTtcbiAgICBleHBlY3QocXVhbnRpbGUoW10sIDAuNSkpLnRvQmVOdWxsKCk7XG4gIH0pO1xuXG4gIGl0KCdyZWFkcyBzYXR1cmF0aW9uIGFuZCBjb252ZXJ0cyBodWVzIHRvIGNvbG9ycycsICgpID0+IHtcbiAgICBleHBlY3QoaHN2U2F0dXJhdGlvbihbMjAwLCAxMDAsIDUwXSkpLnRvQmVDbG9zZVRvKDAuNzUpO1xuICAgIGV4cGVjdChoc3ZTYXR1cmF0aW9uKFswLCAwLCAwXSkpLnRvQmUoMCk7XG4gICAgZXhwZWN0KFswLCAxMjAsIDI0MF0ubWFwKGh1ZSA9PiBoc3ZUb1JnYihodWUsIDEsIDEpKSkudG9FcXVhbChbWzEsIDAsIDBdLCBbMCwgMSwgMF0sIFswLCAwLCAxXV0pO1xuICAgIGV4cGVjdChoc3ZUb1JnYig2MCwgMCwgMC41KSkudG9FcXVhbChbMC41LCAwLjUsIDAuNV0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnaHVlL3NhdHVyYXRpb24gd2hlZWwnLCAoKSA9PiB7XG4gIGl0LmVhY2goW1tbMSwgMCwgMF0sIDBdLCBbWzEsIDEsIDBdLCA2MF0sIFtbMCwgMSwgMF0sIDEyMF0sIFtbMCwgMSwgMV0sIDE4MF0sIFtbMCwgMCwgMV0sIDI0MF0sIFtbMSwgMCwgMV0sIDMwMF1dKShcbiAgICAncHV0cyAlaiBvbiB0aGUgcmltIGF0ICVpIGRlZ3JlZXMnLCAocmdiLCBkZWdyZWVzKSA9PiB7XG4gICAgICBjb25zdCB7IHgsIHksIHNhdHVyYXRpb24gfSA9IHdoZWVsUG9pbnQocmdiKTtcbiAgICAgIGV4cGVjdChzYXR1cmF0aW9uKS50b0JlKDEpO1xuICAgICAgW3gsIHldLmZvckVhY2goKHZhbHVlLCBpKSA9PiBleHBlY3QodmFsdWUpLnRvQmVDbG9zZVRvKGFuZ2xlKGRlZ3JlZXMpW2ldLCA2KSk7XG4gICAgfSk7XG5cbiAgaXQoJ3B1dHMgZ3JheSBpbiB0aGUgY2VudGVyLCBpZ25vcmVzIGEgbWlzc2luZyBjb2xvciwgYW5kIGdyb3dzIHdpdGggdGhlIHNxdWFyZSByb290IG9mIHNhdHVyYXRpb24gd2hhdGV2ZXIgdGhlIGJyaWdodG5lc3MnLCAoKSA9PiB7XG4gICAgZXhwZWN0KHdoZWVsUG9pbnQoWzEyMCwgMTIwLCAxMjBdKSkudG9NYXRjaE9iamVjdCh7IHg6IDAsIHk6IDAgfSk7XG4gICAgZXhwZWN0KHdoZWVsUG9pbnQoWzAsIDAsIDBdKSkudG9NYXRjaE9iamVjdCh7IHg6IDAsIHk6IDAgfSk7XG4gICAgZXhwZWN0KHdoZWVsUG9pbnQobnVsbCkpLnRvQmVOdWxsKCk7XG4gICAgZXhwZWN0KFt3aGVlbFJhZGl1cygwLjI1KSwgd2hlZWxSYWRpdXMoMildKS50b0VxdWFsKFswLjUsIDFdKTtcbiAgICBjb25zdCBbZGltLCBicmlnaHRdID0gW3doZWVsUG9pbnQoWzIwLCAxMCwgMTBdKSwgd2hlZWxQb2ludChbMjAwLCAxMDAsIDEwMF0pXTtcbiAgICBleHBlY3QoZGltLngpLnRvQmVDbG9zZVRvKGJyaWdodC54LCA2KTtcbiAgICBleHBlY3QoZGltLnkpLnRvQmVDbG9zZVRvKGJyaWdodC55LCA2KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2Fzc2Vzc21lbnQnLCAoKSA9PiB7XG4gIGl0LmVhY2goW1xuICAgIFsnYSBuZXV0cmFsIGdyb3VwJywgaW1hZ2VzKFsxMDAsIDEwMCwgMTAwXSksICduZXV0cmFsJ10sXG4gICAgWydqdXN0IHVuZGVyIHRoZSBuZXV0cmFsIGxpbWl0JywgaW1hZ2VzKFsxMDQsIDEwMCwgMTAwXSksICduZXV0cmFsJ10sXG4gICAgWydhIHNsaWdodCBjYXN0JywgaW1hZ2VzKFsxMTAsIDEwMCwgMTAwXSksICdzbGlnaHQgcmVkIGNhc3QnXSxcbiAgICBbJ2Egc3Ryb25nIGNhc3QnLCBpbWFnZXMoWzIwMCwgMTAwLCA1MF0pLCAnc3Ryb25nIG9yYW5nZSBjYXN0J10sXG4gICAgWydhIHNpbmdsZS1odWUgdGludCcsIGltYWdlcyhbMjAwLCAxMDAsIDUwXSwgNSwgeyBjb2hlcmVuY2U6IDAuOTUgfSksICdzdHJvbmcgb3JhbmdlIGNhc3QnXSxcbiAgICBbJ2NvbG9yZnVsIHBpeGVscyB3aG9zZSBodWVzIGRpc2FncmVlJywgaW1hZ2VzKFsxNTAsIDEzNywgMTg5XSwgNSwgeyBzYXR1cmF0aW9uOiAwLjcyLCBjb2hlcmVuY2U6IDAuMSB9KSwgJ21peGVkIGh1ZXMsIGF2ZXJhZ2UgbGVhbnMgYmx1ZSddLFxuICAgIFsnaHVlcyB0aGF0IGNhbmNlbCB0byBncmF5JywgaW1hZ2VzKFsxMjAsIDEyMCwgMTIwXSwgNSwgeyBzYXR1cmF0aW9uOiAwLjcyLCBjb2hlcmVuY2U6IDAuMSB9KSwgJ21peGVkIGh1ZXMsIGF2ZXJhZ2UgaXMgbmV1dHJhbCddLFxuICAgIFsnbm8gaHVlIG1lYXN1cmVtZW50JywgaW1hZ2VzKFsxNTAsIDEzNywgMTg5XSksICdzdHJvbmcgYmx1ZSBjYXN0J10sXG4gIF0pKCdyZWFkcyB0aGUgYXZlcmFnZSBjb2xvciBvZiAlcycsIChfLCBncm91cCwgdGV4dCkgPT4ge1xuICAgIGV4cGVjdChjb2xvckFzc2Vzc21lbnQoZ3JvdXApLmJhbGFuY2UudGV4dCkudG9CZSh0ZXh0KTtcbiAgfSk7XG5cbiAgaXQoJ3JlYWRzIHRoZSB2ZXJkaWN0IGZyb20gdGhlIHBvaW50IHRoZSBncm91cCBpcyBkcmF3biBhdCwgZnVydGhlciBvdXQgZm9yIGEgc3Ryb25nZXIgY2FzdCcsICgpID0+IHtcbiAgICBjb25zdCBbbmVhciwgZmFyXSA9IFtncm91cENlbnRlcihpbWFnZXMoWzEwNCwgMTAwLCAxMDBdKSksIGdyb3VwQ2VudGVyKGltYWdlcyhbMTEyLCAxMDAsIDEwMF0pKV07XG4gICAgZXhwZWN0KE1hdGguaHlwb3QoZmFyLngsIGZhci55KSkudG9CZUdyZWF0ZXJUaGFuKE1hdGguaHlwb3QobmVhci54LCBuZWFyLnkpKTtcbiAgICBleHBlY3QoZ3JvdXBDZW50ZXIoaW1hZ2VzKFsxMTAsIDEwMCwgMTAwXSkpLnNhdHVyYXRpb24pLnRvQmVDbG9zZVRvKDAuMDkwOSwgMyk7XG4gICAgZXhwZWN0KGdyb3VwQ2VudGVyKGltYWdlcyhbMjAwLCAxMDAsIDUwXSkpLmh1ZSkudG9CZUNsb3NlVG8oMTkuMSwgMSk7XG4gICAgZXhwZWN0KGdyb3VwQ2VudGVyKFtdKSkudG9CZU51bGwoKTtcbiAgfSk7XG5cbiAgaXQuZWFjaChbWzAsICdncmF5J10sIFswLjA1LCAnZ3JheSddLCBbMC4yLCAnbXV0ZWQnXSwgWzAuNCwgJ21vZGVyYXRlJ10sIFswLjc1LCAndml2aWQnXV0pKFxuICAgICdjYWxscyBzYXR1cmF0aW9uICVmICVzJywgKHNhdHVyYXRpb24sIHdvcmQpID0+IHtcbiAgICAgIGV4cGVjdChjb2xvckFzc2Vzc21lbnQoaW1hZ2VzKFsyMDAsIDEwMCwgNTBdLCA1LCB7IHNhdHVyYXRpb24gfSkpLnNhdHVyYXRpb24udGV4dCkudG9CZSh3b3JkKTtcbiAgICB9KTtcblxuICBkZXNjcmliZSgnYSBncm91cCB0aGF0IG1peGVzIGdyYXkgYW5kIHZpdmlkIGltYWdlcycsICgpID0+IHtcbiAgICBjb25zdCBncmF5ID0geyBzYXR1cmF0aW9uOiAwLjAwMiwgY29oZXJlbmNlOiAwLjAwMiB9O1xuICAgIGNvbnN0IHZpdmlkID0geyBzYXR1cmF0aW9uOiAwLjczLCBjb2hlcmVuY2U6IDAuNzQgfTtcbiAgICBjb25zdCBtaXhlZCA9IFtcbiAgICAgIC4uLmltYWdlcyhbMTAwLCAxMDAsIDEwMF0sIDQsIGdyYXkpLCBpbWFnZShbMTA1LCAxMDAsIDExMl0sIHsgc2F0dXJhdGlvbjogMC4xMiwgY29oZXJlbmNlOiAwLjQ5IH0pLFxuICAgICAgaW1hZ2UoWzYwLCAxMjAsIDE5MF0sIHZpdmlkKSwgaW1hZ2UoWzExMCwgNjAsIDQwXSwgeyBzYXR1cmF0aW9uOiAwLjU0LCBjb2hlcmVuY2U6IDAuNzUgfSksXG4gICAgXTtcblxuICAgIGl0KCdsaXN0cyB0aGUgY2xhc3NlcyBpbnN0ZWFkIG9mIGEgbWVkaWFuIHRoYXQgaGlkZXMgdGhlbScsICgpID0+IHtcbiAgICAgIGNvbnN0IGZvdW5kID0gY29sb3JBc3Nlc3NtZW50KG1peGVkKTtcbiAgICAgIGV4cGVjdChmb3VuZC5zYXR1cmF0aW9uKS50b01hdGNoT2JqZWN0KHsgdmFyaWVkOiB0cnVlLCB0ZXh0OiAndmFyaWVzOiA0IGdyYXksIDEgbXV0ZWQsIDEgbW9kZXJhdGUsIDEgdml2aWQnIH0pO1xuICAgICAgZXhwZWN0KGZvdW5kLnNhdHVyYXRpb24ucGFydHMpLnRvRXF1YWwoW1snZ3JheScsIDRdLCBbJ211dGVkJywgMV0sIFsnbW9kZXJhdGUnLCAxXSwgWyd2aXZpZCcsIDFdXSk7XG4gICAgICBleHBlY3QoZm91bmQuYmFsYW5jZSkudG9NYXRjaE9iamVjdCh7IHZhcmllZDogdHJ1ZSB9KTtcbiAgICAgIGV4cGVjdChmb3VuZC5iYWxhbmNlLnBhcnRzWzBdKS50b0VxdWFsKFsnbmV1dHJhbCcsIDRdKTtcbiAgICAgIGV4cGVjdChmb3VuZC5iYWxhbmNlLnRleHQpLnRvQ29udGFpbignc3Ryb25nIGNhc3QnKTtcbiAgICAgIGV4cGVjdChvdmVydmlld1N1bW1hcnkobmV3IE1hcChbWydkYXknLCBtaXhlZF1dKSkpLnRvQmUoJzcgUkdCIGltYWdlcywgYXZlcmFnZSBjb2xvciA8c3Ryb25nPnZhcmllcyBiZXR3ZWVuIGltYWdlczwvc3Ryb25nPiBpbiBldmVyeSBncm91cC4nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzYXlzIG1vc3RseSB3aGVuIGEgbGFyZ2UgbWFqb3JpdHkgYWdyZWVzLCBhbmQgbm90aGluZyBleHRyYSB3aGVuIGFsbCBkbycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1vc3RseSA9IFsuLi5pbWFnZXMoWzEwMCwgMTAwLCAxMDBdLCA3LCBncmF5KSwgaW1hZ2UoWzYwLCAxMjAsIDE5MF0sIHZpdmlkKV07XG4gICAgICBleHBlY3QoW2NvbG9yQXNzZXNzbWVudChtb3N0bHkpLnNhdHVyYXRpb24udGV4dCwgY29sb3JBc3Nlc3NtZW50KG1vc3RseSkuYmFsYW5jZS50ZXh0XSkudG9FcXVhbChbJ21vc3RseSBncmF5JywgJ21vc3RseSBuZXV0cmFsJ10pO1xuICAgICAgZXhwZWN0KGNvbG9yQXNzZXNzbWVudChpbWFnZXMoWzEwMCwgMTAwLCAxMDBdLCA1LCBncmF5KSkuc2F0dXJhdGlvbi50ZXh0KS50b0JlKCdncmF5Jyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdTUUwnLCAoKSA9PiB7XG4gIGl0KCd0dXJucyBhIHNsaWNlIHJvdyBpbnRvIGFuIGltYWdlJywgKCkgPT4ge1xuICAgIGNvbnN0IHJvdyA9IHsgX19ncm91cF9fOiAnYScsIF9fa2V5X186ICcvZC94LnBuZycsIF9fbmFtZV9fOiAneC5wbmcnLCBfX2Zybl9fOiAnNycsIHI6IDIwMCwgZzogJzEwMCcsIGI6IDUwLCBicmlnaHRuZXNzOiAxMjQuMiwgY29udHJhc3Q6IDEyLCBzYXR1cmF0aW9uOiAwLjc1LCBjb2hlcmVuY2U6IG51bGwgfTtcbiAgICBleHBlY3QoaW1hZ2VGcm9tUm93KHJvdykpLnRvRXF1YWwoeyBncm91cDogJ2EnLCBrZXk6ICcvZC94LnBuZycsIG5hbWU6ICd4LnBuZycsIGZybjogNywgcmdiOiBbMjAwLCAxMDAsIDUwXSwgYnJpZ2h0bmVzczogMTI0LjIsIGNvbnRyYXN0OiAxMiwgc2F0dXJhdGlvbjogMC43NSwgY29oZXJlbmNlOiBudWxsIH0pO1xuICAgIGV4cGVjdChpbWFnZUZyb21Sb3coeyAuLi5yb3csIF9fbmFtZV9fOiB1bmRlZmluZWQsIF9fZnJuX186IG51bGwgfSkpLnRvTWF0Y2hPYmplY3QoeyBuYW1lOiAnL2QveC5wbmcnLCBmcm46IG51bGwgfSk7XG4gIH0pO1xuXG4gIGl0KCdidWlsZHMgb25lIHJvdyBwZXIgY29tcGxldGUgaW1hZ2UgZnJvbSB0aGUgY2hhbm5lbCBtZWFucyBhbmQgdGhlIHByb2Nlc3NvciBjb2x1bW5zLCB1bmRlciB0aGUgY3VycmVudCBmaWx0ZXInLCAoKSA9PiB7XG4gICAgY29uc3QgY3R4ID0ge1xuICAgICAgc2NoZW1hOiB7IGFsbENvbHM6IFtdIH0sIHN0YXRlOiB7IGRpbWVuc2lvbnM6IHt9IH0sIHdoZXJlOiAnV0hFUkUgXCJkYXlcIiA9IDEnLFxuICAgICAgc3FsOiB7IGRpbVN1YnNldFdoZXJlOiAoKSA9PiBbJ1wib2JzX2xldmVsXCIgPSAwJ10sIGFuZFdoZXJlOiAodywgYykgPT4gKHcgPyBgJHt3fSBBTkQgJHtjfWAgOiBgV0hFUkUgJHtjfWApIH0sXG4gICAgfTtcbiAgICBjb25zdCBzcWwgPSBpbWFnZVRhYmxlKGN0eCk7XG4gICAgWydyJywgJ2cnLCAnYiddLmZvckVhY2gobmFtZSA9PiBleHBlY3Qoc3FsKS50b0NvbnRhaW4oYFwiY2hfJHtuYW1lfV9tZWFuXCJgKSk7XG4gICAgZXhwZWN0KHNxbCkudG9Db250YWluKCdcImRpbV9zXCIgPSAyJyk7XG4gICAgZXhwZWN0KHNxbCkudG9Db250YWluKCdcIm9ic19sZXZlbFwiID0gMCcpO1xuICAgIGV4cGVjdChzcWwpLnRvQ29udGFpbignR1JPVVAgQlkgXCJwYXRoXCInKTtcbiAgICBleHBlY3Qoc3FsKS50b0NvbnRhaW4oJ1dIRVJFIFwiZGF5XCIgPSAxIEFORCBcImNoX3JfbWVhblwiIElTIE5PVCBOVUxMJyk7XG4gICAgZXhwZWN0KHNxbCkudG9Db250YWluKCdST1VORChcInJnYl9zYXR1cmF0aW9uX21lYW5cIicpO1xuICAgIGV4cGVjdChzcWwpLm5vdC50b01hdGNoKC9DT0FMRVNDRXxzdGRfaW50ZW5zaXR5Lyk7XG4gIH0pO1xufSk7XG5cbmNvbnN0IHJvd3MgPSAoZ3JvdXAsIGtleSwgciwgZywgYiwgZXh0cmEgPSB7fSkgPT4gKHsgX19ncm91cF9fOiBncm91cCwgX19rZXlfXzoga2V5LCBfX25hbWVfXzogYCR7a2V5fS5wbmdgLCBfX2Zybl9fOiBrZXkuY2hhckNvZGVBdCgwKSwgciwgZywgYiwgYnJpZ2h0bmVzczogbHVtYShbciwgZywgYl0pLCBjb250cmFzdDogMTAsIHNhdHVyYXRpb246IGhzdlNhdHVyYXRpb24oW3IsIGcsIGJdKSwgY29oZXJlbmNlOiBudWxsLCAuLi5leHRyYSB9KTtcbmNvbnN0IERBVEEgPSBbcm93cygnd2FybScsICdhJywgMjAwLCAxMDAsIDUwKSwgcm93cygnd2FybScsICdiJywgMTkwLCAxMDAsIDU1KSwgcm93cygnZ3JheScsICdjJywgMTAwLCAxMDAsIDEwMCldO1xuXG5jb25zdCBtYWtlQ29udGV4dCA9IChkYXRhLCBncm91cHMgPSBbJ3dhcm0nLCAnZ3JheSddKSA9PiB7XG4gIGNvbnN0IGNhbGxzID0geyBkaXN0cmlidXRpb25zOiBbXSwgcGxvdHM6IFtdLCBtaW5pczogW10sIGdyaWRzOiBbXSwgcmVnaXN0ZXJlZDogW10sIHF1ZXJpZXM6IFtdIH07XG4gIHJldHVybiB7XG4gICAgY2FsbHMsIGdyb3Vwcywgc2NoZW1hOiB7IGFsbENvbHM6IFtdIH0sIHN0YXRlOiB7IGRpbWVuc2lvbnM6IHt9LCBzaG93U2lnbmlmaWNhbmNlOiBmYWxzZSB9LCB3aGVyZTogJycsXG4gICAgc3FsOiB7IGdyb3VwQ29sOiAoKSA9PiAnXCJnXCInLCBncm91cEV4cHI6ICgpID0+ICdcImdcIiBBUyBfX2dyb3VwX18nLCBkaW1TdWJzZXRXaGVyZTogKCkgPT4gWydcIm9ic19sZXZlbFwiID0gMCddLCBhbmRXaGVyZTogKHcsIGMpID0+ICh3ID8gYCR7d30gQU5EICR7Y31gIDogYFdIRVJFICR7Y31gKSB9LFxuICAgIHF1ZXJ5Um93czogYXN5bmMgKHNxbCkgPT4geyBjYWxscy5xdWVyaWVzLnB1c2goc3FsKTsgcmV0dXJuIGRhdGE7IH0sXG4gICAgZ3JvdXBMYWJlbDogKGcpID0+IGcudG9VcHBlckNhc2UoKSwgY29sb3I6IHsgZ3JvdXA6ICgpID0+ICcjNGM3OGE4JyB9LFxuICAgIHBsb3Q6IHtcbiAgICAgIExBWU9VVDoge30sIGVzY2FwZUh0bWw6IFN0cmluZywgZ3JvdXBpbmdMYWJlbDogKCkgPT4gJ0dyb3VwJyxcbiAgICAgIGFwcGVuZDogKGhvc3QsIHRyYWNlcywgbGF5b3V0KSA9PiB7IGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBob3N0LmFwcGVuZENoaWxkKGRpdik7IGNhbGxzLnBsb3RzLnB1c2goeyB0cmFjZXMsIGxheW91dCwgZGl2IH0pOyByZXR1cm4gZGl2OyB9LFxuICAgICAgcmVnaXN0ZXJQb2ludFBsb3Q6IChkaXYsIGMsIG1ldHJpYykgPT4gY2FsbHMucmVnaXN0ZXJlZC5wdXNoKHsgZGl2LCBtZXRyaWMgfSksXG4gICAgICBhcHBlbmRNaW5pOiAoaG9zdCwgdHJhY2VzLCBsYXlvdXQpID0+IGNhbGxzLm1pbmlzLnB1c2goeyB0cmFjZXMsIGxheW91dCB9KSxcbiAgICAgIGZsZXhHcmlkOiAocGFyZW50LCBwZXJSb3cpID0+IHsgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBwYXJlbnQuYXBwZW5kQ2hpbGQod3JhcCk7IGNhbGxzLmdyaWRzLnB1c2gocGVyUm93KTsgcmV0dXJuIHsgd3JhcCwgZmxleEJhc2lzUGN0OiA0OCB9OyB9LFxuICAgICAgZW5naW5lOiB7IENPTlNUQU5UUzogeyBNQVhfVklPTElOX1BPSU5UUzogNTAwMCB9LCByZW5kZXJEaXN0cmlidXRpb246IGFzeW5jIChob3N0LCBjLCBzcGVjKSA9PiB7IGNhbGxzLmRpc3RyaWJ1dGlvbnMucHVzaChzcGVjKTsgcmV0dXJuIHRydWU7IH0gfSxcbiAgICB9LFxuICB9O1xufTtcblxuZGVzY3JpYmUoJ3dpZGdldCcsICgpID0+IHtcbiAgaXQoJ25lZWRzIHRoZSBjaGFubmVsIG1lYW5zIGFuZCB0aGUgcHJvY2Vzc29yIGNvbHVtbnMgYWxvbmcgUycsICgpID0+IHtcbiAgICBjb25zdCBiYXNlID0geyBhbGxDb2xzOiBbJ21lYW5faW50ZW5zaXR5JywgJ3JnYl9sdW1hX3N0ZCcsICdyZ2Jfc2F0dXJhdGlvbl9tZWFuJ10sIGRpbUNvbHM6IFsnZGltX3MnXSB9O1xuICAgIGV4cGVjdCh3aWRnZXQucmVxdWlyZXMoYmFzZSkpLnRvQmUodHJ1ZSk7XG4gICAgZXhwZWN0KHdpZGdldC5yZXF1aXJlcyh7IC4uLmJhc2UsIGRpbUNvbHM6IFsnZGltX3QnXSB9KSkudG9CZShmYWxzZSk7XG4gICAgZXhwZWN0KHdpZGdldC5yZXF1aXJlcyh7IC4uLmJhc2UsIGFsbENvbHM6IFsnbWVhbl9pbnRlbnNpdHknXSB9KSkudG9CZShmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdwdXRzIHRoZSB3aGVlbCB3aXRob3V0IGEgbGVnZW5kIG5leHQgdG8gdGhlIHRhYmxlLCBhbmQgdGhlIHNoYXJlZCBwbG90cyBiZWxvdycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjdHggPSBtYWtlQ29udGV4dChEQVRBKTtcbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBhd2FpdCB3aWRnZXQucmVuZGVyKGNvbnRhaW5lciwgY3R4KTtcblxuICAgIGNvbnN0IFt0b3BdID0gY29udGFpbmVyLmNoaWxkcmVuO1xuICAgIGV4cGVjdCh0b3Auc3R5bGUuZGlzcGxheSkudG9CZSgnZmxleCcpO1xuICAgIGV4cGVjdCh0b3Auc3R5bGUuYWxpZ25JdGVtcykudG9CZSgnY2VudGVyJyk7XG4gICAgY29uc3QgdGFibGUgPSB0b3AucXVlcnlTZWxlY3RvcigndGFibGUnKTtcbiAgICBleHBlY3QodGFibGUudGV4dENvbnRlbnQpLnRvQ29udGFpbignV0FSTScpO1xuICAgIGV4cGVjdCh0YWJsZS50ZXh0Q29udGVudCkubm90LnRvQ29udGFpbignaW1hZ2UnKTtcbiAgICBleHBlY3QoWy4uLnRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RoJyldLm1hcCh0aCA9PiB0aC50ZXh0Q29udGVudCkpLnRvRXF1YWwoWydHcm91cCcsICdBdmVyYWdlIGNvbG9yJywgJ1NhdHVyYXRpb24nXSk7XG4gICAgZXhwZWN0KGN0eC5jYWxscy5wbG90c1swXS5sYXlvdXQuc2hvd2xlZ2VuZCkudG9CZShmYWxzZSk7XG5cbiAgICBjb25zdCBbYnJpZ2h0bmVzcywgY29udHJhc3QsICwgY2FzdF0gPSBjdHguY2FsbHMuZGlzdHJpYnV0aW9ucztcbiAgICBleHBlY3QoY3R4LmNhbGxzLmRpc3RyaWJ1dGlvbnMubWFwKHNwZWMgPT4gc3BlYy5udW1Db2wpKS50b0VxdWFsKFsnY29sb3JfYnJpZ2h0bmVzcycsICdyZ2JfbHVtYV9zdGQnLCAnY29sb3Jfc2F0dXJhdGlvbicsICdjb2xvcl9jYXN0J10pO1xuICAgIGV4cGVjdChicmlnaHRuZXNzKS50b01hdGNoT2JqZWN0KHsgc2VyaWVzOiB7IGlzQ2F0ZWdvcnk6IHRydWUgfSwgY2F0ZWdvcmllc09yZGVyOiBbJ3dhcm0nLCAnZ3JheSddLCB5TGFiZWw6ICdCcmlnaHRuZXNzIChsdW1hKScgfSk7XG4gICAgZXhwZWN0KGJyaWdodG5lc3Muc291cmNlLnRhYmxlKS50b0NvbnRhaW4oJ3BwX2FsbCcpO1xuICAgIGV4cGVjdChjb250cmFzdC50aXRsZSkudG9Db250YWluKCdEaXN0cmlidXRpb24gb2YgQ29udHJhc3Q8YnI+Jyk7XG4gICAgZXhwZWN0KGNhc3QudGl0bGUpLnRvQ29udGFpbignRGlzdHJpYnV0aW9uIG9mIENvbG9yIGNhc3Q8YnI+Jyk7XG4gICAgZXhwZWN0KGNhc3QudGl0bGUpLnRvQ29udGFpbignbj0zJyk7XG4gICAgZXhwZWN0KGNhc3QueUxhYmVsKS50b0JlKCdDb2xvciBjYXN0IChzYXR1cmF0aW9uIG9mIHRoZSBhdmVyYWdlIGNvbG9yKScpO1xuICAgIGV4cGVjdChjYXN0LmxheW91dC55YXhpcykudG9FcXVhbCh7IHRpdGxlOiBjYXN0LnlMYWJlbCwgcmFuZ2Vtb2RlOiAnbm9ubmVnYXRpdmUnIH0pO1xuICAgIGV4cGVjdChjdHguY2FsbHMuZ3JpZHMpLnRvRXF1YWwoWzNdKTtcbiAgfSk7XG5cbiAgaXQoJ2dpdmVzIG1hbnkgZ3JvdXBzIG9uZSBwbG90IHBlciByb3csIGxpa2UgdGhlIG90aGVyIHdpZGdldHMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZ3JvdXBzID0gWydhJywgJ2InLCAnYycsICdkJ107XG4gICAgY29uc3QgY3R4ID0gbWFrZUNvbnRleHQoZ3JvdXBzLm1hcChnID0+IHJvd3MoZywgZywgMTAwLCAxMDAsIDEwMCkpLCBncm91cHMpO1xuICAgIGF3YWl0IHdpZGdldC5yZW5kZXIoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksIGN0eCk7XG4gICAgZXhwZWN0KGN0eC5jYWxscy5ncmlkcykudG9FcXVhbChbMV0pO1xuICB9KTtcblxuICBpdCgnbWFrZXMgdGhlIHdoZWVsIGRvdHMgY2xpY2thYmxlLCBuYW1lZCBvbiBob3ZlciwgYW5kIGtlZXBzIHRoZSBncm91cCBtZWRpYW5zIG91dCBvZiB0aGUgc2VsZWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGN0eCA9IG1ha2VDb250ZXh0KERBVEEpO1xuICAgIGF3YWl0IHdpZGdldC5yZW5kZXIoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksIGN0eCk7XG4gICAgY29uc3QgW3sgdHJhY2VzLCBkaXYgfV0gPSBjdHguY2FsbHMucGxvdHM7XG4gICAgY29uc3Qgd2FybSA9IHRyYWNlcy5maW5kKHRyYWNlID0+IHRyYWNlLm5hbWUgPT09ICdXQVJNJyAmJiB0cmFjZS5jdXN0b21kYXRhKTtcbiAgICBleHBlY3Qod2FybS50ZXh0WzBdKS50b0NvbnRhaW4oJzxiPmEucG5nPC9iPicpO1xuICAgIGV4cGVjdCh3YXJtLmN1c3RvbWRhdGEpLnRvRXF1YWwoWydhJy5jaGFyQ29kZUF0KDApLCAnYicuY2hhckNvZGVBdCgwKV0pO1xuICAgIGV4cGVjdCh3YXJtLmhvdmVydGVtcGxhdGUpLnRvQ29udGFpbignJXt0ZXh0fScpO1xuICAgIGV4cGVjdChjdHguY2FsbHMucmVnaXN0ZXJlZCkudG9FcXVhbChbeyBkaXYsIG1ldHJpYzogJ2NvbG9yX2Nhc3QnIH1dKTtcbiAgICBjb25zdCBtZWRpYW4gPSB0cmFjZXMuZmluZCh0cmFjZSA9PiB0cmFjZS5tYXJrZXI/LnN5bWJvbCA9PT0gJ2RpYW1vbmQnKTtcbiAgICBleHBlY3QobWVkaWFuLmN1c3RvbWRhdGEpLnRvQmVVbmRlZmluZWQoKTtcbiAgICBleHBlY3QobWVkaWFuLnRleHRbMF0pLnRvQ29udGFpbignbWVkaWFuIG9mIHRoZSBncm91cCcpO1xuICAgIGV4cGVjdChjdHguY2FsbHMucXVlcmllc1swXSkudG9Db250YWluKCdcImZpbGVfcm93X251bWJlclwiIEFTIF9fZnJuX18nKTtcblxuICAgIGRlbGV0ZSBjdHgucGxvdC5yZWdpc3RlclBvaW50UGxvdDtcbiAgICBhd2FpdCB3aWRnZXQucmVuZGVyKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLCBjdHgpO1xuICB9KTtcblxuICBpdCgnc2hvd3MgYSBncm91cCB0aGF0IGRpZmZlcnMgYXMgXCJ2YXJpZXNcIiB3aXRoIHRoZSBjbGFzc2VzIGxpc3RlZCB1bmRlciBpdCwgYW5kIHNheXMgc28gd2hlbiB0aGVyZSBhcmUgbm8gUkdCIGltYWdlcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBtaXhlZCA9IFtyb3dzKCdhJywgJ3gnLCAxMDAsIDEwMCwgMTAwLCB7IHNhdHVyYXRpb246IDAuMDAxIH0pLCByb3dzKCdhJywgJ3knLCAxMDAsIDEwMCwgMTAwLCB7IHNhdHVyYXRpb246IDAuMDAxIH0pLCByb3dzKCdhJywgJ3onLCA2MCwgMTIwLCAxOTAsIHsgc2F0dXJhdGlvbjogMC43LCBjb2hlcmVuY2U6IDAuNyB9KV07XG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgYXdhaXQgd2lkZ2V0LnJlbmRlcihjb250YWluZXIsIG1ha2VDb250ZXh0KG1peGVkLCBbJ2EnXSkpO1xuICAgIGNvbnN0IGNlbGwgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgndGJvZHkgdGQnKVsyXTtcbiAgICBleHBlY3QoY2VsbC50ZXh0Q29udGVudC5zdGFydHNXaXRoKCd2YXJpZXMnKSkudG9CZSh0cnVlKTtcbiAgICBleHBlY3QoY2VsbC5xdWVyeVNlbGVjdG9yKCdkaXYnKS50ZXh0Q29udGVudCkudG9CZSgnMiBncmF5IMK3IDEgdml2aWQnKTtcblxuICAgIGNvbnN0IGVtcHR5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgYXdhaXQgd2lkZ2V0LnJlbmRlcihlbXB0eSwgbWFrZUNvbnRleHQoW10pKTtcbiAgICBleHBlY3QoZW1wdHkudGV4dENvbnRlbnQpLnRvQ29udGFpbignTm8gUkdCIGltYWdlcyBmb3VuZCcpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnb3ZlcnZpZXcgdGlsZScsICgpID0+IHtcbiAgaXQoJ3N1bW1hcml6ZXMgd2hldGhlciB0aGUgZ3JvdXBzIHNoYXJlIGFuIGF2ZXJhZ2UgY29sb3InLCBhc3luYyAoKSA9PiB7XG4gICAgZXhwZWN0KGF3YWl0IHdpZGdldC5vdmVydmlld01lc3NhZ2UobWFrZUNvbnRleHQoREFUQSkpKS50b0JlKCczIFJHQiBpbWFnZXMsIGF2ZXJhZ2UgY29sb3IgPHN0cm9uZz5kaWZmZXJzIGJldHdlZW4gZ3JvdXBzPC9zdHJvbmc+LicpO1xuICAgIGNvbnN0IHNhbWUgPSBuZXcgTWFwKFtbJ2EnLCBpbWFnZXMoWzEwMCwgMTAwLCAxMDBdLCAxKV0sIFsnYicsIGltYWdlcyhbMTEwLCAxMTAsIDExMF0sIDEpXV0pO1xuICAgIGV4cGVjdChvdmVydmlld1N1bW1hcnkoc2FtZSkpLnRvQmUoJzIgUkdCIGltYWdlcywgYXZlcmFnZSBjb2xvciA8c3Ryb25nPm5ldXRyYWw8L3N0cm9uZz4gaW4gZXZlcnkgZ3JvdXAuJyk7XG4gICAgZXhwZWN0KGF3YWl0IHdpZGdldC5vdmVydmlld01lc3NhZ2UobWFrZUNvbnRleHQoW10pKSkudG9CZU51bGwoKTtcbiAgfSk7XG5cbiAgaXQoJ2RyYXdzIHRoZSB3aGVlbCB3aXRob3V0IGxlZ2VuZCBvciBsYWJlbHMsIGFuZCBub3RoaW5nIHdpdGhvdXQgY29sb3IgZGF0YScsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjdHggPSBtYWtlQ29udGV4dChEQVRBKTtcbiAgICBleHBlY3QoYXdhaXQgd2lkZ2V0Lm92ZXJ2aWV3UGxvdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgY3R4KSkudG9CZSh0cnVlKTtcbiAgICBjb25zdCBbeyB0cmFjZXMsIGxheW91dCB9XSA9IGN0eC5jYWxscy5taW5pcztcbiAgICBleHBlY3QobGF5b3V0KS50b01hdGNoT2JqZWN0KHsgc2hvd2xlZ2VuZDogZmFsc2UsIGFubm90YXRpb25zOiBbXSB9KTtcbiAgICBleHBlY3QodHJhY2VzLnNvbWUodHJhY2UgPT4gdHJhY2UubmFtZSA9PT0gJ1dBUk0nKSkudG9CZSh0cnVlKTtcbiAgICBleHBlY3QoYXdhaXQgd2lkZ2V0Lm92ZXJ2aWV3UGxvdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgbWFrZUNvbnRleHQoW10pKSkudG9CZShmYWxzZSk7XG4gIH0pO1xufSk7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7OztBQUtBLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyw2QkFBTztBQUN4QixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RCxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLHdDQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNsSyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0YsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDOztBQUVyRyxtQ0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLENBQUMsQ0FBQyw2QkFBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FBQyxDQUFDLENBQUMsaUNBQU8scUNBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyxxQ0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM1QyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFDLDhCQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMvSCxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLG1DQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2xELENBQUMsQ0FBQyxDQUFDLENBQUMsaUNBQU8sbUNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4QyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVKLENBQUMsQ0FBQyw2QkFBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyx3Q0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUMzRCxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLHdDQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsbUNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BHLENBQUMsQ0FBQyxDQUFDLENBQUMsaUNBQU8sbUNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekQsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQzs7QUFFRixtQ0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QyxDQUFDLENBQUMsd0JBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNwSCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQ0FBVyxHQUFHLENBQUM7QUFDbEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUNBQU8sVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNoQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFTixDQUFDLENBQUMsNkJBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckksQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyxxQ0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyxxQ0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyxxQ0FBVyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUNBQU8sQ0FBQyxzQ0FBWSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxzQ0FBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUNBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMscUNBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2pGLENBQUMsQ0FBQyxDQUFDLENBQUMsaUNBQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUNBQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDLENBQUM7O0FBRUYsbUNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLENBQUMsQ0FBQyx3QkFBRSxDQUFDLElBQUksQ0FBQztBQUNWLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMzRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN4RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9JLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNwSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FBQyxDQUFDLENBQUMsaUNBQU8sMENBQWdCLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQzFELENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRUosQ0FBQyxDQUFDLDZCQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHNDQUFZLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHNDQUFZLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyxzQ0FBWSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyxzQ0FBWSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyxzQ0FBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdEMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFSixDQUFDLENBQUMsd0JBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLDBDQUFnQixNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUNuRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFTixDQUFDLENBQUMsbUNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RCxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hELENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVMLENBQUMsQ0FBQyxDQUFDLENBQUMsNkJBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLDBDQUFnQixLQUFLLENBQUM7QUFDMUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUNBQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BILENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzNELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLDBDQUFnQixHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDbkosQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRU4sQ0FBQyxDQUFDLENBQUMsQ0FBQyw2QkFBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLENBQUMsMENBQWdCLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQywwQ0FBZ0IsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3hJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLDBDQUFnQixNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQzs7QUFFRixtQ0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEIsQ0FBQyxDQUFDLDZCQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyTCxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLHVDQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDdEwsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyx1Q0FBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDdkgsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFSixDQUFDLENBQUMsNkJBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzSCxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xILENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMscUNBQVcsR0FBRyxDQUFDO0FBQy9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUNBQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM1QyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4RSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztBQUN4RCxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQzs7QUFFRixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsd0NBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMvUCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQzs7QUFFakgsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pELENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNULENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDdkUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDVixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FB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Q0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEksQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZELENBQUMsQ0FBQyxDQUFDLENBQUMsaUNBQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUNBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM1RSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRUosQ0FBQyxDQUFDLDZCQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0UsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDL0UsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUMzRCxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFSixDQUFDLENBQUMsNkJBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JILENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztBQUNqQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzNELENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLO0FBQzdDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztBQUNoRixDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0UsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDM0UsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDM0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDOztBQUUxRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzNELENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRUosQ0FBQyxDQUFDLDZCQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDak0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RCxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRCxDQUFDLENBQUMsQ0FBQyxDQUFDLGlDQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDNUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7O0FB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

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJpbXBvcnRzIjoiMiIsIm1hcHBpbmdzIjpmYWxzZSwiZGVwcyI6IjMiLCJkeW5hbWljRGVwcyI6IjQiLCJzdGF0aWNNb2NrcyI6bnVsbCwiaGFzQ292ZXJhZ2VEYXRhIjpmYWxzZX0sIi9ob21lL2VsbGEvd29yay9waXhlbC1wYXRyb2wvcGFja2FnZXMvcGl4ZWwtcGF0cm9sLWJhc2UvdGVzdHMvdmlld2VyL2NvbG9yLnRlc3QuanMiLHsidXJscyI6IjUiLCJpZHMiOiI2In0sWyI3IiwiOCJdLFtdLFsiNyIsIjgiXSx7fSwiL0Bmcy9ob21lL2VsbGEvLm5wbS9fbnB4LzY5YzM4MWY4YWQ5NGI1NzYvbm9kZV9tb2R1bGVzL3ZpdGVzdC9kaXN0L2luZGV4LmpzIiwiL3NyYy9waXhlbF9wYXRyb2xfYmFzZS92aWV3ZXIvcGx1Z2luX2NvbG9yLmpzIl0=