ca-components 1.1.97 → 1.1.99

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (13) hide show
  1. package/assets/scss/input-dropdown.scss +73 -72
  2. package/esm2022/lib/components/ca-chart/ca-chart.component.mjs +1 -4
  3. package/esm2022/lib/components/ca-chart/utils/helpers/chart.helper.mjs +1 -6
  4. package/esm2022/lib/components/ca-input-dropdown/ca-input-dropdown.component.mjs +8 -8
  5. package/esm2022/lib/components/ca-input-dropdown/components/ca-input-dropdown-load-broker-shipper/ca-input-dropdown-load-broker-shipper-item/ca-input-dropdown-load-broker-shipper-item.component.mjs +34 -0
  6. package/esm2022/lib/components/ca-input-dropdown/components/ca-input-dropdown-load-broker-shipper/ca-input-dropdown-load-broker-shipper.component.mjs +9 -7
  7. package/esm2022/lib/components/ca-input-dropdown/components/ca-input-dropdown-load-dispatcher/ca-input-dropdown-load-dispatcher-item/ca-input-dropdown-load-dispatcher-item.component.mjs +38 -0
  8. package/esm2022/lib/components/ca-input-dropdown/components/ca-input-dropdown-load-dispatcher/ca-input-dropdown-load-dispatcher.component.mjs +6 -13
  9. package/fesm2022/ca-components.mjs +73 -27
  10. package/fesm2022/ca-components.mjs.map +1 -1
  11. package/lib/components/ca-input-dropdown/components/ca-input-dropdown-load-broker-shipper/ca-input-dropdown-load-broker-shipper-item/ca-input-dropdown-load-broker-shipper-item.component.d.ts +11 -0
  12. package/lib/components/ca-input-dropdown/components/ca-input-dropdown-load-dispatcher/ca-input-dropdown-load-dispatcher-item/ca-input-dropdown-load-dispatcher-item.component.d.ts +11 -0
  13. package/package.json +1 -1
@@ -119,25 +119,20 @@ export class ChartHelper {
119
119
  ctx.restore();
120
120
  }
121
121
  static highlightPoint(ctx, chart, index, chartData) {
122
- console.log(ctx, chart, index, chartData, 'higlightPOint');
123
122
  chartData.datasets.forEach((dataset, datasetIndex) => {
124
- console.log('test 111');
125
123
  const meta = chart.getDatasetMeta(datasetIndex);
126
124
  if (!meta || !meta.data[index])
127
125
  return;
128
- console.log('test 222');
129
126
  const point = meta.data[index];
130
127
  const yScale = chart.scales[dataset.yAxisID || 'y-axis-0'];
131
128
  const xScale = chart.scales['x'];
132
129
  const value = dataset.data[index];
133
130
  if (value === undefined || value === null)
134
131
  return;
135
- console.log('test 333');
136
132
  const xPixel = xScale.getPixelForValue(index);
137
133
  const yPixel = Math.abs(yScale.getPixelForValue(value));
138
134
  if (!point)
139
135
  return;
140
- console.log('test 444');
141
136
  ctx.save();
142
137
  ctx.beginPath();
143
138
  ctx.arc(xPixel, yPixel, 4, 0, 2 * Math.PI);
@@ -178,4 +173,4 @@ export class ChartHelper {
178
173
  return Math.max(...datasets.flatMap((dataset) => dataset.data));
179
174
  }
180
175
  }
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY2hhcnQvdXRpbHMvaGVscGVycy9jaGFydC5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxPQUFPLFdBQVc7SUFDYixNQUFNLENBQUMsU0FBUyxDQUFDLFFBQWdCLEVBQUUsVUFBa0IsQ0FBQztRQUN6RCxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFdEMsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hCLFFBQVE7aUJBQ0gsS0FBSyxDQUFDLEVBQUUsQ0FBQztpQkFDVCxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7aUJBQzFCLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0QyxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDakMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ2xDLE1BQU0sSUFBSSxHQUFHLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFFMUIsT0FBTyxRQUFRLEdBQUcsS0FBSyxLQUFLLEtBQUssSUFBSSxLQUFLLE9BQU8sR0FBRyxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQWMsY0FBYyxFQUFFLE9BQWU7UUFDMUQsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FB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QUksU0FBUyxFQUFFLENBQUM7WUFDWixNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztZQUM5Qix5Q0FBeUM7WUFDekMsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssR0FBRyxDQUFDO1FBQzlDLENBQUM7UUFFRCxvREFBb0Q7UUFDcEQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxVQUFVLENBQUM7UUFFakMsaUNBQWlDO1FBQ2pDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBRTdCLHlCQUF5QjtRQUN6QixPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxHQUFHLENBQUM7SUFDOUMsQ0FBQztJQUVNLE1BQU0sQ0FBQyx3QkFBd0IsQ0FDbEMsUUFBOEI7UUFFOUIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IENoYXJ0LCB7IENhdGVnb3J5U2NhbGUsIENoYXJ0QXJlYSwgTGluZWFyU2NhbGUgfSBmcm9tICdjaGFydC5qcy9hdXRvJztcbmltcG9ydCB7IENoYXJ0Q29sb3JzU3RyaW5nRW51bSB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IElCYXNlRGF0YXNldCwgSUNoYXJ0RGF0YSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbmV4cG9ydCBjbGFzcyBDaGFydEhlbHBlciB7XG4gICAgcHVibGljIHN0YXRpYyBoZXhUb1JnYmEoY29sb3JIZXg6IHN0cmluZywgb3BhY2l0eTogbnVtYmVyID0gMSk6IHN0cmluZyB7XG4gICAgICAgIGNvbG9ySGV4ID0gY29sb3JIZXgucmVwbGFjZSgvXiMvLCAnJyk7XG5cbiAgICAgICAgaWYgKGNvbG9ySGV4Lmxlbmd0aCA9PT0gMykge1xuICAgICAgICAgICAgY29sb3JIZXhcbiAgICAgICAgICAgICAgICAuc3BsaXQoJycpXG4gICAgICAgICAgICAgICAgLm1hcCgoY2hhcikgPT4gY2hhciArIGNoYXIpXG4gICAgICAgICAgICAgICAgLmpvaW4oJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmlnaW50ID0gcGFyc2VJbnQoY29sb3JIZXgsIDE2KTtcbiAgICAgICAgY29uc3QgcmVkID0gKGJpZ2ludCA+PiAxNikgJiAyNTU7XG4gICAgICAgIGNvbnN0IGdyZWVuID0gKGJpZ2ludCA+PiA4KSAmIDI1NTtcbiAgICAgICAgY29uc3QgYmx1ZSA9IGJpZ2ludCAmIDI1NTtcblxuICAgICAgICByZXR1cm4gYHJnYmEoJHtyZWR9LCAke2dyZWVufSwgJHtibHVlfSwgJHtvcGFjaXR5fSlgO1xuICAgIH1cblxuICAgIHN0YXRpYyByZ2JUb1JnYmEocmdiOiBzdHJpbmcgPSAncmdiKDAsIDAsIDApJywgb3BhY2l0eTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcmdiVmFsdWVzID0gcmdiLm1hdGNoKC9cXGQrL2cpO1xuXG4gICAgICAgIGlmIChyZ2JWYWx1ZXMgJiYgcmdiVmFsdWVzLmxlbmd0aCA+PSAzKSB7XG4gICAgICAgICAgICBjb25zdCByZWQgPSByZ2JWYWx1ZXNbMF07XG4gICAgICAgICAgICBjb25zdCBncmVlbiA9IHJnYlZhbHVlc1sxXTtcbiAgICAgICAgICAgIGNvbnN0IGJsdWUgPSByZ2JWYWx1ZXNbMl07XG5cbiAgICAgICAgICAgIHJldHVybiBgcmdiYSgke3JlZH0sICR7Z3JlZW59LCAke2JsdWV9LCAke29wYWNpdHl9KWA7XG4gICAgICAgIH0gZWxzZSByZXR1cm4gcmdiO1xuICAgIH1cblxuICAgIHN0YXRpYyBjaGFuZ2VPcGFjaXR5T2ZSZ2JPclJnYmEoY29sb3I6IHN0cmluZywgb3BhY2l0eTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcmdiYVJlZ2V4ID1cbiAgICAgICAgICAgIC9ecmdiYT9cXCgoXFxkezEsM30pLFxccyooXFxkezEsM30pLFxccyooXFxkezEsM30pKD86LFxccyooXFxkP1xcLj9cXGQrKSk/XFwpJC87XG5cbiAgICAgICAgY29uc3QgbWF0Y2ggPSBjb2xvci5tYXRjaChyZ2JhUmVnZXgpO1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlZCA9IHBhcnNlSW50KG1hdGNoWzFdLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBncmVlbiA9IHBhcnNlSW50KG1hdGNoWzJdLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBibHVlID0gcGFyc2VJbnQobWF0Y2hbM10sIDEwKTtcblxuICAgICAgICAgICAgcmV0dXJuIGByZ2JhKCR7cmVkfSwgJHtncmVlbn0sICR7Ymx1ZX0sICR7b3BhY2l0eX0pYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29sb3I7XG4gICAgfVxuXG4gICAgc3RhdGljIGNhbGN1bGF0ZU1pblZhbHVlKGRhdGE6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWluKC4uLmRhdGEpO1xuICAgIH1cblxuICAgIHN0YXRpYyBjYWxjdWxhdGVNYXhWYWx1ZShkYXRhOiBudW1iZXJbXSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBNYXRoLm1heCguLi5kYXRhKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgY3JlYXRlR3JhZGllbnQoXG4gICAgICAgIGNoYXJ0Q29udGV4dDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELFxuICAgICAgICBjaGFydENhbnZhczogRWxlbWVudFJlZixcbiAgICAgICAgY29sb3I6IHN0cmluZyxcbiAgICAgICAgY29sb3IyOiBzdHJpbmcsXG4gICAgICAgIG9wYWNpdHlDb2xvcjE6IG51bWJlciA9IDEsXG4gICAgICAgIG9wYWNpdHlDb2xvcjI6IG51bWJlciA9IDEsXG4gICAgICAgIGFyZUNvbG9yc0luUmdiYUZvcm1hdDogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogQ2FudmFzR3JhZGllbnQge1xuICAgICAgICBjb25zdCBncmFkaWVudCA9IGNoYXJ0Q29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIGNoYXJ0Q2FudmFzLm5hdGl2ZUVsZW1lbnQuaGVpZ2h0XG4gICAgICAgICk7XG4gICAgICAgIGxldCBmaWxsQ29sb3JUb3AgPSAnJztcbiAgICAgICAgbGV0IGZpbGxDb2xvckJvdHRvbSA9ICcnO1xuICAgICAgICBpZiAoYXJlQ29sb3JzSW5SZ2JhRm9ybWF0KSB7XG4gICAgICAgICAgICBmaWxsQ29sb3JUb3AgPSB0aGlzLmNoYW5nZU9wYWNpdHlPZlJnYk9yUmdiYShjb2xvciwgb3BhY2l0eUNvbG9yMSk7XG4gICAgICAgICAgICBmaWxsQ29sb3JCb3R0b20gPSB0aGlzLmNoYW5nZU9wYWNpdHlPZlJnYk9yUmdiYShcbiAgICAgICAgICAgICAgICBjb2xvcjIsXG4gICAgICAgICAgICAgICAgb3BhY2l0eUNvbG9yMlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpbGxDb2xvclRvcCA9IHRoaXMuaGV4VG9SZ2JhKGNvbG9yLCBvcGFjaXR5Q29sb3IxKTtcbiAgICAgICAgICAgIGZpbGxDb2xvckJvdHRvbSA9IHRoaXMuaGV4VG9SZ2JhKGNvbG9yMiwgb3BhY2l0eUNvbG9yMik7XG4gICAgICAgIH1cbiAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsIGZpbGxDb2xvclRvcCk7XG4gICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgwLjgsIGZpbGxDb2xvckJvdHRvbSk7XG5cbiAgICAgICAgcmV0dXJuIGdyYWRpZW50O1xuICAgIH1cblxuICAgIHN0YXRpYyBjcmVhdGVHcmFkaWVudFdpdGhTaGlmdFZhbHVlKFxuICAgICAgICBjaGFydENvbnRleHQ6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCxcbiAgICAgICAgY2hhcnRIZWlnaHQ6IG51bWJlcixcbiAgICAgICAgY29sb3I6IHN0cmluZyxcbiAgICAgICAgY29sb3IyOiBzdHJpbmcsXG4gICAgICAgIHNoaWZ0VmFsdWU6IG51bWJlcixcbiAgICAgICAgaGFzRmFkZT86IGJvb2xlYW5cbiAgICApOiBDYW52YXNHcmFkaWVudCB7XG4gICAgICAgIGNvbnN0IGdyYWRpZW50ID0gY2hhcnRDb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgY2hhcnRIZWlnaHRcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBmaWxsQ29sb3JUb3AgPSB0aGlzLmhleFRvUmdiYShjb2xvciwgMC44KTtcbiAgICAgICAgY29uc3QgZmlsbENvbG9yQm90dG9tID0gdGhpcy5oZXhUb1JnYmEoY29sb3IyLCAwLjgpO1xuXG4gICAgICAgIGlmICghaGFzRmFkZSkge1xuICAgICAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsIGZpbGxDb2xvclRvcCk7XG4gICAgICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3Aoc2hpZnRWYWx1ZSwgZmlsbENvbG9yVG9wKTtcbiAgICAgICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcChzaGlmdFZhbHVlLCBmaWxsQ29sb3JCb3R0b20pO1xuICAgICAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDEsIGZpbGxDb2xvckJvdHRvbSk7XG4gICAgICAgICAgICByZXR1cm4gZ3JhZGllbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMCwgZmlsbENvbG9yVG9wKTtcbiAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKHNoaWZ0VmFsdWUsIENoYXJ0Q29sb3JzU3RyaW5nRW51bS5XSElURSk7XG4gICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcChzaGlmdFZhbHVlLCBmaWxsQ29sb3JCb3R0b20pO1xuICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMSwgQ2hhcnRDb2xvcnNTdHJpbmdFbnVtLldISVRFKTtcblxuICAgICAgICByZXR1cm4gZ3JhZGllbnQ7XG4gICAgfVxuXG4gICAgc3RhdGljIGNhbGN1bGF0ZVRpY2tQb3NpdGlvbnMoXG4gICAgICAgIHhTY2FsZTogQ2F0ZWdvcnlTY2FsZSB8IExpbmVhclNjYWxlXG4gICAgKTogbnVtYmVyW10ge1xuICAgICAgICByZXR1cm4geFNjYWxlLnRpY2tzLm1hcCgoXywgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgICAgIHhTY2FsZS5nZXRQaXhlbEZvclRpY2soaW5kZXgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc3RhdGljIGhpZ2hsaWdodFNlZ21lbnQoXG4gICAgICAgIGN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELFxuICAgICAgICB4U2NhbGU6IENhdGVnb3J5U2NhbGUgfCBMaW5lYXJTY2FsZSxcbiAgICAgICAgY2hhcnRBcmVhOiBDaGFydEFyZWEsXG4gICAgICAgIGNoYXJ0SGVpZ2h0OiBudW1iZXIsXG4gICAgICAgIGluZGV4OiBudW1iZXJcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBzZWdtZW50U3RhcnQsIHNlZ21lbnRXaWR0aCB9ID0gQ2hhcnRIZWxwZXIuZ2V0U2VnbWVudFBvc2l0aW9uKFxuICAgICAgICAgICAgeFNjYWxlLFxuICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYm9yZGVyUmFkaXVzID0gMjtcblxuICAgICAgICBjdHguc2F2ZSgpO1xuICAgICAgICBjdHguZmlsbFN0eWxlID0gQ2hhcnRDb2xvcnNTdHJpbmdFbnVtLkhPVkVSX1NFR01FTlQ7XG5cbiAgICAgICAgLy8gRHJhdyBzZWdtZW50IHdpdGggYm9yZGVyLXJhZGl1cyBhdCB0aGUgdG9wIGNvcm5lcnNcbiAgICAgICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgICAgICBjdHgubW92ZVRvKHNlZ21lbnRTdGFydCArIGJvcmRlclJhZGl1cywgY2hhcnRBcmVhLnRvcCk7XG4gICAgICAgIGN0eC5saW5lVG8oc2VnbWVudFN0YXJ0ICsgc2VnbWVudFdpZHRoIC0gYm9yZGVyUmFkaXVzLCBjaGFydEFyZWEudG9wKTtcbiAgICAgICAgY3R4LmFyY1RvKFxuICAgICAgICAgICAgc2VnbWVudFN0YXJ0ICsgc2VnbWVudFdpZHRoLFxuICAgICAgICAgICAgY2hhcnRBcmVhLnRvcCxcbiAgICAgICAgICAgIHNlZ21lbnRTdGFydCArIHNlZ21lbnRXaWR0aCxcbiAgICAgICAgICAgIGNoYXJ0QXJlYS50b3AgKyBib3JkZXJSYWRpdXMsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXNcbiAgICAgICAgKTtcbiAgICAgICAgY3R4LmxpbmVUbyhzZWdtZW50U3RhcnQgKyBzZWdtZW50V2lkdGgsIGNoYXJ0SGVpZ2h0KTtcbiAgICAgICAgY3R4LmxpbmVUbyhzZWdtZW50U3RhcnQsIGNoYXJ0SGVpZ2h0KTtcbiAgICAgICAgY3R4LmxpbmVUbyhzZWdtZW50U3RhcnQsIGNoYXJ0QXJlYS50b3AgKyBib3JkZXJSYWRpdXMpO1xuICAgICAgICBjdHguYXJjVG8oXG4gICAgICAgICAgICBzZWdtZW50U3RhcnQsXG4gICAgICAgICAgICBjaGFydEFyZWEudG9wLFxuICAgICAgICAgICAgc2VnbWVudFN0YXJ0ICsgYm9yZGVyUmFkaXVzLFxuICAgICAgICAgICAgY2hhcnRBcmVhLnRvcCxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1c1xuICAgICAgICApO1xuICAgICAgICBjdHguY2xvc2VQYXRoKCk7XG5cbiAgICAgICAgY3R4LmZpbGwoKTtcbiAgICAgICAgY3R4LnJlc3RvcmUoKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGlzIGEgZHVtYiBmdW5jdGlvbiB3aG9zZSBvbmx5IGZ1bmN0aW9uIGlzIG9ubHkgdG8gcG9zaXRpb24gbGVnZW5kIGVsZW1lbnRzIG9uZSBiZWxvdyB1bmRlclxuICAgIC8vIENhbGwgaXQgaW4gbmdGb3JcbiAgICBwdWJsaWMgc3RhdGljIGRyYXdEb3VnaG51dExlZ2VuZChcbiAgICAgICAgY2hhcnQ6IENoYXJ0LFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgaW5keDogbnVtYmVyO1xuICAgICAgICAgICAgLy8gVE9ETyBpZiBuZWVkZWQsIGNvbnZlcnQgdG8gb2JqZWN0XG4gICAgICAgICAgICBvZmZzZXRUb3A6IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgdGV4dDogc3RyaW5nLFxuICAgICAgICAvLyBJbml0aWFsIGlkZWFcbiAgICAgICAgZm9udFNpemU6IG51bWJlciA9IDE4LFxuICAgICAgICBjb2xvcjogc3RyaW5nID0gJyM0MjQyNDInXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgY3R4IH0gPSBjaGFydDtcblxuICAgICAgICBpZiAoIWN0eCkgcmV0dXJuO1xuXG4gICAgICAgIGN0eC5zYXZlKCk7XG5cbiAgICAgICAgY29uc3QgZGF0YXNldE1ldGEgPSBjaGFydC5nZXREYXRhc2V0TWV0YSgwKTtcbiAgICAgICAgY29uc3QgeENvb3JkID0gZGF0YXNldE1ldGE/LmRhdGFbMF0/Lng7XG4gICAgICAgIGNvbnN0IHlDb29yZCA9XG4gICAgICAgICAgICAoZGF0YXNldE1ldGE/LmRhdGFbMF0/LnkgLyAzKSAqIDIgK1xuICAgICAgICAgICAgcG9zaXRpb24uaW5keCAqIDIwICtcbiAgICAgICAgICAgIHBvc2l0aW9uLm9mZnNldFRvcDtcblxuICAgICAgICBpZiAoeENvb3JkID09PSB1bmRlZmluZWQgfHwgeUNvb3JkID09IHVuZGVmaW5lZCkgcmV0dXJuO1xuXG4gICAgICAgIGN0eC5mb250ID0gYGJvbGQgJHtmb250U2l6ZX1weCBzYW5zLXNlcmlmYDtcbiAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGNvbG9yO1xuICAgICAgICBjdHgudGV4dEFsaWduID0gJ2NlbnRlcic7XG4gICAgICAgIGN0eC50ZXh0QmFzZWxpbmUgPSAnbWlkZGxlJztcbiAgICAgICAgY3R4LmZpbGxUZXh0KHRleHQsIHhDb29yZCwgeUNvb3JkKTtcblxuICAgICAgICBjdHgucmVzdG9yZSgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBoaWdobGlnaHRQb2ludChcbiAgICAgICAgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXG4gICAgICAgIGNoYXJ0OiBDaGFydCxcbiAgICAgICAgaW5kZXg6IG51bWJlcixcbiAgICAgICAgY2hhcnREYXRhOiBJQ2hhcnREYXRhPElCYXNlRGF0YXNldD5cbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc29sZS5sb2coY3R4LCBjaGFydCwgaW5kZXgsIGNoYXJ0RGF0YSwgJ2hpZ2xpZ2h0UE9pbnQnKTtcbiAgICAgICAgY2hhcnREYXRhLmRhdGFzZXRzLmZvckVhY2goKGRhdGFzZXQsIGRhdGFzZXRJbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3Rlc3QgMTExJyk7XG4gICAgICAgICAgICBjb25zdCBtZXRhID0gY2hhcnQuZ2V0RGF0YXNldE1ldGEoZGF0YXNldEluZGV4KTtcblxuICAgICAgICAgICAgaWYgKCFtZXRhIHx8ICFtZXRhLmRhdGFbaW5kZXhdKSByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCd0ZXN0IDIyMicpO1xuXG4gICAgICAgICAgICBjb25zdCBwb2ludCA9IG1ldGEuZGF0YVtpbmRleF07XG4gICAgICAgICAgICBjb25zdCB5U2NhbGUgPSBjaGFydC5zY2FsZXNbZGF0YXNldC55QXhpc0lEIHx8ICd5LWF4aXMtMCddO1xuICAgICAgICAgICAgY29uc3QgeFNjYWxlID0gY2hhcnQuc2NhbGVzWyd4J107XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZGF0YXNldC5kYXRhW2luZGV4XTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCd0ZXN0IDMzMycpO1xuXG4gICAgICAgICAgICBjb25zdCB4UGl4ZWwgPSB4U2NhbGUuZ2V0UGl4ZWxGb3JWYWx1ZShpbmRleCk7XG4gICAgICAgICAgICBjb25zdCB5UGl4ZWwgPSBNYXRoLmFicyh5U2NhbGUuZ2V0UGl4ZWxGb3JWYWx1ZSh2YWx1ZSBhcyBudW1iZXIpKTtcblxuICAgICAgICAgICAgaWYgKCFwb2ludCkgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zb2xlLmxvZygndGVzdCA0NDQnKTtcblxuICAgICAgICAgICAgY3R4LnNhdmUoKTtcbiAgICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTtcbiAgICAgICAgICAgIGN0eC5hcmMoeFBpeGVsLCB5UGl4ZWwsIDQsIDAsIDIgKiBNYXRoLlBJKTtcbiAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBDaGFydENvbG9yc1N0cmluZ0VudW0uV0hJVEU7XG4gICAgICAgICAgICBjdHguZmlsbCgpO1xuICAgICAgICAgICAgY3R4LmxpbmVXaWR0aCA9IDI7XG4gICAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPVxuICAgICAgICAgICAgICAgIGRhdGFzZXQuYm9yZGVyQ29sb3IgfHwgQ2hhcnRDb2xvcnNTdHJpbmdFbnVtLlRSQU5TUEFSRU5UO1xuICAgICAgICAgICAgY3R4LnN0cm9rZSgpO1xuICAgICAgICAgICAgY3R4LnJlc3RvcmUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0U2VnbWVudFBvc2l0aW9uKFxuICAgICAgICB4U2NhbGU6IENhdGVnb3J5U2NhbGUgfCBMaW5lYXJTY2FsZSxcbiAgICAgICAgaW5kZXg6IG51bWJlclxuICAgICk6IHsgc2VnbWVudFN0YXJ0OiBudW1iZXI7IHNlZ21lbnRXaWR0aDogbnVtYmVyIH0ge1xuICAgICAgICBjb25zdCB0aWNrUG9zaXRpb25zID0gQ2hhcnRIZWxwZXIuY2FsY3VsYXRlVGlja1Bvc2l0aW9ucyh4U2NhbGUpO1xuICAgICAgICBjb25zdCBzZWdtZW50V2lkdGggPSB0aWNrUG9zaXRpb25zWzFdIC0gdGlja1Bvc2l0aW9uc1swXTtcbiAgICAgICAgY29uc3Qgc2VnbWVudFN0YXJ0ID0gdGlja1Bvc2l0aW9uc1tpbmRleF0gLSBzZWdtZW50V2lkdGggLyAyO1xuICAgICAgICByZXR1cm4geyBzZWdtZW50U3RhcnQsIHNlZ21lbnRXaWR0aCB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY29udmVydFJnYlRvUmdiYShcbiAgICAgICAgY29sb3JWYWx1ZTogc3RyaW5nLFxuICAgICAgICBhbHBoYTogbnVtYmVyID0gMVxuICAgICk6IHN0cmluZyB7XG4gICAgICAgIGlmIChhbHBoYSA8IDAgfHwgYWxwaGEgPiAxKSByZXR1cm4gY29sb3JWYWx1ZTtcblxuICAgICAgICBjb25zdCByZ2JhTWF0Y2ggPSBjb2xvclZhbHVlLm1hdGNoKFxuICAgICAgICAgICAgL3JnYmFcXCgoXFxkKyksXFxzKihcXGQrKSxcXHMqKFxcZCspLFxccyooXFxkKyhcXC5cXGQrKT8pXFwpL1xuICAgICAgICApO1xuXG4gICAgICAgIGlmIChyZ2JhTWF0Y2gpIHtcbiAgICAgICAgICAgIGNvbnN0IFssIHIsIGcsIGJdID0gcmdiYU1hdGNoO1xuICAgICAgICAgICAgLy8gUmV0dXJuIHVwZGF0ZWQgUkdCQSB3aXRoIHRoZSBuZXcgYWxwaGFcbiAgICAgICAgICAgIHJldHVybiBgcmdiYSgke3J9LCAke2d9LCAke2J9LCAke2FscGhhfSlgO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRXh0cmFjdCB0aGUgUkdCIHZhbHVlcyB1c2luZyBhIHJlZ3VsYXIgZXhwcmVzc2lvblxuICAgICAgICBjb25zdCByZ2JNYXRjaCA9IGNvbG9yVmFsdWUubWF0Y2goL3JnYlxcKChcXGQrKSxcXHMqKFxcZCspLFxccyooXFxkKylcXCkvKTtcbiAgICAgICAgaWYgKCFyZ2JNYXRjaCkgcmV0dXJuIGNvbG9yVmFsdWU7XG5cbiAgICAgICAgLy8gRGVzdHJ1Y3R1cmUgdGhlIG1hdGNoZWQgdmFsdWVzXG4gICAgICAgIGNvbnN0IFssIHIsIGcsIGJdID0gcmdiTWF0Y2g7XG5cbiAgICAgICAgLy8gUmV0dXJuIHRoZSBSR0JBIHN0cmluZ1xuICAgICAgICByZXR1cm4gYHJnYmEoJHtyfSwgJHtnfSwgJHtifSwgJHthbHBoYX0pYDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNhbGN1bGF0ZURhdGFzZXRNYXhWYWx1ZShcbiAgICAgICAgZGF0YXNldHM6IHsgZGF0YTogbnVtYmVyW10gfVtdXG4gICAgKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KC4uLmRhdGFzZXRzLmZsYXRNYXAoKGRhdGFzZXQpID0+IGRhdGFzZXQuZGF0YSkpO1xuICAgIH1cbn1cbiJdfQ==
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY2hhcnQvdXRpbHMvaGVscGVycy9jaGFydC5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxPQUFPLFdBQVc7SUFDYixNQUFNLENBQUMsU0FBUyxDQUFDLFFBQWdCLEVBQUUsVUFBa0IsQ0FBQztRQUN6RCxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFdEMsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hCLFFBQVE7aUJBQ0gsS0FBSyxDQUFDLEVBQUUsQ0FBQztpQkFDVCxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7aUJBQzFCLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0QyxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDakMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ2xDLE1BQU0sSUFBSSxHQUFHLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFFMUIsT0FBTyxRQUFRLEdBQUcsS0FBSyxLQUFLLEtBQUssSUFBSSxLQUFLLE9BQU8sR0FBRyxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQWMsY0FBYyxFQUFFLE9BQWU7UUFDMUQsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FB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QUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sVUFBVSxDQUFDO1FBRWpDLGlDQUFpQztRQUNqQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztRQUU3Qix5QkFBeUI7UUFDekIsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssR0FBRyxDQUFDO0lBQzlDLENBQUM7SUFFTSxNQUFNLENBQUMsd0JBQXdCLENBQ2xDLFFBQThCO1FBRTlCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBDaGFydCwgeyBDYXRlZ29yeVNjYWxlLCBDaGFydEFyZWEsIExpbmVhclNjYWxlIH0gZnJvbSAnY2hhcnQuanMvYXV0byc7XG5pbXBvcnQgeyBDaGFydENvbG9yc1N0cmluZ0VudW0gfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBJQmFzZURhdGFzZXQsIElDaGFydERhdGEgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5leHBvcnQgY2xhc3MgQ2hhcnRIZWxwZXIge1xuICAgIHB1YmxpYyBzdGF0aWMgaGV4VG9SZ2JhKGNvbG9ySGV4OiBzdHJpbmcsIG9wYWNpdHk6IG51bWJlciA9IDEpOiBzdHJpbmcge1xuICAgICAgICBjb2xvckhleCA9IGNvbG9ySGV4LnJlcGxhY2UoL14jLywgJycpO1xuXG4gICAgICAgIGlmIChjb2xvckhleC5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgICAgIGNvbG9ySGV4XG4gICAgICAgICAgICAgICAgLnNwbGl0KCcnKVxuICAgICAgICAgICAgICAgIC5tYXAoKGNoYXIpID0+IGNoYXIgKyBjaGFyKVxuICAgICAgICAgICAgICAgIC5qb2luKCcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJpZ2ludCA9IHBhcnNlSW50KGNvbG9ySGV4LCAxNik7XG4gICAgICAgIGNvbnN0IHJlZCA9IChiaWdpbnQgPj4gMTYpICYgMjU1O1xuICAgICAgICBjb25zdCBncmVlbiA9IChiaWdpbnQgPj4gOCkgJiAyNTU7XG4gICAgICAgIGNvbnN0IGJsdWUgPSBiaWdpbnQgJiAyNTU7XG5cbiAgICAgICAgcmV0dXJuIGByZ2JhKCR7cmVkfSwgJHtncmVlbn0sICR7Ymx1ZX0sICR7b3BhY2l0eX0pYDtcbiAgICB9XG5cbiAgICBzdGF0aWMgcmdiVG9SZ2JhKHJnYjogc3RyaW5nID0gJ3JnYigwLCAwLCAwKScsIG9wYWNpdHk6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHJnYlZhbHVlcyA9IHJnYi5tYXRjaCgvXFxkKy9nKTtcblxuICAgICAgICBpZiAocmdiVmFsdWVzICYmIHJnYlZhbHVlcy5sZW5ndGggPj0gMykge1xuICAgICAgICAgICAgY29uc3QgcmVkID0gcmdiVmFsdWVzWzBdO1xuICAgICAgICAgICAgY29uc3QgZ3JlZW4gPSByZ2JWYWx1ZXNbMV07XG4gICAgICAgICAgICBjb25zdCBibHVlID0gcmdiVmFsdWVzWzJdO1xuXG4gICAgICAgICAgICByZXR1cm4gYHJnYmEoJHtyZWR9LCAke2dyZWVufSwgJHtibHVlfSwgJHtvcGFjaXR5fSlgO1xuICAgICAgICB9IGVsc2UgcmV0dXJuIHJnYjtcbiAgICB9XG5cbiAgICBzdGF0aWMgY2hhbmdlT3BhY2l0eU9mUmdiT3JSZ2JhKGNvbG9yOiBzdHJpbmcsIG9wYWNpdHk6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHJnYmFSZWdleCA9XG4gICAgICAgICAgICAvXnJnYmE/XFwoKFxcZHsxLDN9KSxcXHMqKFxcZHsxLDN9KSxcXHMqKFxcZHsxLDN9KSg/OixcXHMqKFxcZD9cXC4/XFxkKykpP1xcKSQvO1xuXG4gICAgICAgIGNvbnN0IG1hdGNoID0gY29sb3IubWF0Y2gocmdiYVJlZ2V4KTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICBjb25zdCByZWQgPSBwYXJzZUludChtYXRjaFsxXSwgMTApO1xuICAgICAgICAgICAgY29uc3QgZ3JlZW4gPSBwYXJzZUludChtYXRjaFsyXSwgMTApO1xuICAgICAgICAgICAgY29uc3QgYmx1ZSA9IHBhcnNlSW50KG1hdGNoWzNdLCAxMCk7XG5cbiAgICAgICAgICAgIHJldHVybiBgcmdiYSgke3JlZH0sICR7Z3JlZW59LCAke2JsdWV9LCAke29wYWNpdHl9KWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbG9yO1xuICAgIH1cblxuICAgIHN0YXRpYyBjYWxjdWxhdGVNaW5WYWx1ZShkYXRhOiBudW1iZXJbXSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBNYXRoLm1pbiguLi5kYXRhKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgY2FsY3VsYXRlTWF4VmFsdWUoZGF0YTogbnVtYmVyW10pOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5tYXgoLi4uZGF0YSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGNyZWF0ZUdyYWRpZW50KFxuICAgICAgICBjaGFydENvbnRleHQ6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCxcbiAgICAgICAgY2hhcnRDYW52YXM6IEVsZW1lbnRSZWYsXG4gICAgICAgIGNvbG9yOiBzdHJpbmcsXG4gICAgICAgIGNvbG9yMjogc3RyaW5nLFxuICAgICAgICBvcGFjaXR5Q29sb3IxOiBudW1iZXIgPSAxLFxuICAgICAgICBvcGFjaXR5Q29sb3IyOiBudW1iZXIgPSAxLFxuICAgICAgICBhcmVDb2xvcnNJblJnYmFGb3JtYXQ6IGJvb2xlYW4gPSBmYWxzZVxuICAgICk6IENhbnZhc0dyYWRpZW50IHtcbiAgICAgICAgY29uc3QgZ3JhZGllbnQgPSBjaGFydENvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBjaGFydENhbnZhcy5uYXRpdmVFbGVtZW50LmhlaWdodFxuICAgICAgICApO1xuICAgICAgICBsZXQgZmlsbENvbG9yVG9wID0gJyc7XG4gICAgICAgIGxldCBmaWxsQ29sb3JCb3R0b20gPSAnJztcbiAgICAgICAgaWYgKGFyZUNvbG9yc0luUmdiYUZvcm1hdCkge1xuICAgICAgICAgICAgZmlsbENvbG9yVG9wID0gdGhpcy5jaGFuZ2VPcGFjaXR5T2ZSZ2JPclJnYmEoY29sb3IsIG9wYWNpdHlDb2xvcjEpO1xuICAgICAgICAgICAgZmlsbENvbG9yQm90dG9tID0gdGhpcy5jaGFuZ2VPcGFjaXR5T2ZSZ2JPclJnYmEoXG4gICAgICAgICAgICAgICAgY29sb3IyLFxuICAgICAgICAgICAgICAgIG9wYWNpdHlDb2xvcjJcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWxsQ29sb3JUb3AgPSB0aGlzLmhleFRvUmdiYShjb2xvciwgb3BhY2l0eUNvbG9yMSk7XG4gICAgICAgICAgICBmaWxsQ29sb3JCb3R0b20gPSB0aGlzLmhleFRvUmdiYShjb2xvcjIsIG9wYWNpdHlDb2xvcjIpO1xuICAgICAgICB9XG4gICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCBmaWxsQ29sb3JUb3ApO1xuICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMC44LCBmaWxsQ29sb3JCb3R0b20pO1xuXG4gICAgICAgIHJldHVybiBncmFkaWVudDtcbiAgICB9XG5cbiAgICBzdGF0aWMgY3JlYXRlR3JhZGllbnRXaXRoU2hpZnRWYWx1ZShcbiAgICAgICAgY2hhcnRDb250ZXh0OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXG4gICAgICAgIGNoYXJ0SGVpZ2h0OiBudW1iZXIsXG4gICAgICAgIGNvbG9yOiBzdHJpbmcsXG4gICAgICAgIGNvbG9yMjogc3RyaW5nLFxuICAgICAgICBzaGlmdFZhbHVlOiBudW1iZXIsXG4gICAgICAgIGhhc0ZhZGU/OiBib29sZWFuXG4gICAgKTogQ2FudmFzR3JhZGllbnQge1xuICAgICAgICBjb25zdCBncmFkaWVudCA9IGNoYXJ0Q29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIGNoYXJ0SGVpZ2h0XG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgZmlsbENvbG9yVG9wID0gdGhpcy5oZXhUb1JnYmEoY29sb3IsIDAuOCk7XG4gICAgICAgIGNvbnN0IGZpbGxDb2xvckJvdHRvbSA9IHRoaXMuaGV4VG9SZ2JhKGNvbG9yMiwgMC44KTtcblxuICAgICAgICBpZiAoIWhhc0ZhZGUpIHtcbiAgICAgICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCBmaWxsQ29sb3JUb3ApO1xuICAgICAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKHNoaWZ0VmFsdWUsIGZpbGxDb2xvclRvcCk7XG4gICAgICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3Aoc2hpZnRWYWx1ZSwgZmlsbENvbG9yQm90dG9tKTtcbiAgICAgICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgxLCBmaWxsQ29sb3JCb3R0b20pO1xuICAgICAgICAgICAgcmV0dXJuIGdyYWRpZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsIGZpbGxDb2xvclRvcCk7XG4gICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcChzaGlmdFZhbHVlLCBDaGFydENvbG9yc1N0cmluZ0VudW0uV0hJVEUpO1xuICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3Aoc2hpZnRWYWx1ZSwgZmlsbENvbG9yQm90dG9tKTtcbiAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDEsIENoYXJ0Q29sb3JzU3RyaW5nRW51bS5XSElURSk7XG5cbiAgICAgICAgcmV0dXJuIGdyYWRpZW50O1xuICAgIH1cblxuICAgIHN0YXRpYyBjYWxjdWxhdGVUaWNrUG9zaXRpb25zKFxuICAgICAgICB4U2NhbGU6IENhdGVnb3J5U2NhbGUgfCBMaW5lYXJTY2FsZVxuICAgICk6IG51bWJlcltdIHtcbiAgICAgICAgcmV0dXJuIHhTY2FsZS50aWNrcy5tYXAoKF8sIGluZGV4OiBudW1iZXIpID0+XG4gICAgICAgICAgICB4U2NhbGUuZ2V0UGl4ZWxGb3JUaWNrKGluZGV4KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHN0YXRpYyBoaWdobGlnaHRTZWdtZW50KFxuICAgICAgICBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCxcbiAgICAgICAgeFNjYWxlOiBDYXRlZ29yeVNjYWxlIHwgTGluZWFyU2NhbGUsXG4gICAgICAgIGNoYXJ0QXJlYTogQ2hhcnRBcmVhLFxuICAgICAgICBjaGFydEhlaWdodDogbnVtYmVyLFxuICAgICAgICBpbmRleDogbnVtYmVyXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgc2VnbWVudFN0YXJ0LCBzZWdtZW50V2lkdGggfSA9IENoYXJ0SGVscGVyLmdldFNlZ21lbnRQb3NpdGlvbihcbiAgICAgICAgICAgIHhTY2FsZSxcbiAgICAgICAgICAgIGluZGV4XG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGJvcmRlclJhZGl1cyA9IDI7XG5cbiAgICAgICAgY3R4LnNhdmUoKTtcbiAgICAgICAgY3R4LmZpbGxTdHlsZSA9IENoYXJ0Q29sb3JzU3RyaW5nRW51bS5IT1ZFUl9TRUdNRU5UO1xuXG4gICAgICAgIC8vIERyYXcgc2VnbWVudCB3aXRoIGJvcmRlci1yYWRpdXMgYXQgdGhlIHRvcCBjb3JuZXJzXG4gICAgICAgIGN0eC5iZWdpblBhdGgoKTtcbiAgICAgICAgY3R4Lm1vdmVUbyhzZWdtZW50U3RhcnQgKyBib3JkZXJSYWRpdXMsIGNoYXJ0QXJlYS50b3ApO1xuICAgICAgICBjdHgubGluZVRvKHNlZ21lbnRTdGFydCArIHNlZ21lbnRXaWR0aCAtIGJvcmRlclJhZGl1cywgY2hhcnRBcmVhLnRvcCk7XG4gICAgICAgIGN0eC5hcmNUbyhcbiAgICAgICAgICAgIHNlZ21lbnRTdGFydCArIHNlZ21lbnRXaWR0aCxcbiAgICAgICAgICAgIGNoYXJ0QXJlYS50b3AsXG4gICAgICAgICAgICBzZWdtZW50U3RhcnQgKyBzZWdtZW50V2lkdGgsXG4gICAgICAgICAgICBjaGFydEFyZWEudG9wICsgYm9yZGVyUmFkaXVzLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzXG4gICAgICAgICk7XG4gICAgICAgIGN0eC5saW5lVG8oc2VnbWVudFN0YXJ0ICsgc2VnbWVudFdpZHRoLCBjaGFydEhlaWdodCk7XG4gICAgICAgIGN0eC5saW5lVG8oc2VnbWVudFN0YXJ0LCBjaGFydEhlaWdodCk7XG4gICAgICAgIGN0eC5saW5lVG8oc2VnbWVudFN0YXJ0LCBjaGFydEFyZWEudG9wICsgYm9yZGVyUmFkaXVzKTtcbiAgICAgICAgY3R4LmFyY1RvKFxuICAgICAgICAgICAgc2VnbWVudFN0YXJ0LFxuICAgICAgICAgICAgY2hhcnRBcmVhLnRvcCxcbiAgICAgICAgICAgIHNlZ21lbnRTdGFydCArIGJvcmRlclJhZGl1cyxcbiAgICAgICAgICAgIGNoYXJ0QXJlYS50b3AsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXNcbiAgICAgICAgKTtcbiAgICAgICAgY3R4LmNsb3NlUGF0aCgpO1xuXG4gICAgICAgIGN0eC5maWxsKCk7XG4gICAgICAgIGN0eC5yZXN0b3JlKCk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBpcyBhIGR1bWIgZnVuY3Rpb24gd2hvc2Ugb25seSBmdW5jdGlvbiBpcyBvbmx5IHRvIHBvc2l0aW9uIGxlZ2VuZCBlbGVtZW50cyBvbmUgYmVsb3cgdW5kZXJcbiAgICAvLyBDYWxsIGl0IGluIG5nRm9yXG4gICAgcHVibGljIHN0YXRpYyBkcmF3RG91Z2hudXRMZWdlbmQoXG4gICAgICAgIGNoYXJ0OiBDaGFydCxcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgIGluZHg6IG51bWJlcjtcbiAgICAgICAgICAgIC8vIFRPRE8gaWYgbmVlZGVkLCBjb252ZXJ0IHRvIG9iamVjdFxuICAgICAgICAgICAgb2Zmc2V0VG9wOiBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHRleHQ6IHN0cmluZyxcbiAgICAgICAgLy8gSW5pdGlhbCBpZGVhXG4gICAgICAgIGZvbnRTaXplOiBudW1iZXIgPSAxOCxcbiAgICAgICAgY29sb3I6IHN0cmluZyA9ICcjNDI0MjQyJ1xuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGN0eCB9ID0gY2hhcnQ7XG5cbiAgICAgICAgaWYgKCFjdHgpIHJldHVybjtcblxuICAgICAgICBjdHguc2F2ZSgpO1xuXG4gICAgICAgIGNvbnN0IGRhdGFzZXRNZXRhID0gY2hhcnQuZ2V0RGF0YXNldE1ldGEoMCk7XG4gICAgICAgIGNvbnN0IHhDb29yZCA9IGRhdGFzZXRNZXRhPy5kYXRhWzBdPy54O1xuICAgICAgICBjb25zdCB5Q29vcmQgPVxuICAgICAgICAgICAgKGRhdGFzZXRNZXRhPy5kYXRhWzBdPy55IC8gMykgKiAyICtcbiAgICAgICAgICAgIHBvc2l0aW9uLmluZHggKiAyMCArXG4gICAgICAgICAgICBwb3NpdGlvbi5vZmZzZXRUb3A7XG5cbiAgICAgICAgaWYgKHhDb29yZCA9PT0gdW5kZWZpbmVkIHx8IHlDb29yZCA9PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgICAgICBjdHguZm9udCA9IGBib2xkICR7Zm9udFNpemV9cHggc2Fucy1zZXJpZmA7XG4gICAgICAgIGN0eC5maWxsU3R5bGUgPSBjb2xvcjtcbiAgICAgICAgY3R4LnRleHRBbGlnbiA9ICdjZW50ZXInO1xuICAgICAgICBjdHgudGV4dEJhc2VsaW5lID0gJ21pZGRsZSc7XG4gICAgICAgIGN0eC5maWxsVGV4dCh0ZXh0LCB4Q29vcmQsIHlDb29yZCk7XG5cbiAgICAgICAgY3R4LnJlc3RvcmUoKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgaGlnaGxpZ2h0UG9pbnQoXG4gICAgICAgIGN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELFxuICAgICAgICBjaGFydDogQ2hhcnQsXG4gICAgICAgIGluZGV4OiBudW1iZXIsXG4gICAgICAgIGNoYXJ0RGF0YTogSUNoYXJ0RGF0YTxJQmFzZURhdGFzZXQ+XG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0cy5mb3JFYWNoKChkYXRhc2V0LCBkYXRhc2V0SW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGEgPSBjaGFydC5nZXREYXRhc2V0TWV0YShkYXRhc2V0SW5kZXgpO1xuXG4gICAgICAgICAgICBpZiAoIW1ldGEgfHwgIW1ldGEuZGF0YVtpbmRleF0pIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3QgcG9pbnQgPSBtZXRhLmRhdGFbaW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgeVNjYWxlID0gY2hhcnQuc2NhbGVzW2RhdGFzZXQueUF4aXNJRCB8fCAneS1heGlzLTAnXTtcbiAgICAgICAgICAgIGNvbnN0IHhTY2FsZSA9IGNoYXJ0LnNjYWxlc1sneCddO1xuXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGRhdGFzZXQuZGF0YVtpbmRleF07XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCB4UGl4ZWwgPSB4U2NhbGUuZ2V0UGl4ZWxGb3JWYWx1ZShpbmRleCk7XG4gICAgICAgICAgICBjb25zdCB5UGl4ZWwgPSBNYXRoLmFicyh5U2NhbGUuZ2V0UGl4ZWxGb3JWYWx1ZSh2YWx1ZSBhcyBudW1iZXIpKTtcblxuICAgICAgICAgICAgaWYgKCFwb2ludCkgcmV0dXJuO1xuXG4gICAgICAgICAgICBjdHguc2F2ZSgpO1xuICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgICAgICAgICAgY3R4LmFyYyh4UGl4ZWwsIHlQaXhlbCwgNCwgMCwgMiAqIE1hdGguUEkpO1xuICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IENoYXJ0Q29sb3JzU3RyaW5nRW51bS5XSElURTtcbiAgICAgICAgICAgIGN0eC5maWxsKCk7XG4gICAgICAgICAgICBjdHgubGluZVdpZHRoID0gMjtcbiAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9XG4gICAgICAgICAgICAgICAgZGF0YXNldC5ib3JkZXJDb2xvciB8fCBDaGFydENvbG9yc1N0cmluZ0VudW0uVFJBTlNQQVJFTlQ7XG4gICAgICAgICAgICBjdHguc3Ryb2tlKCk7XG4gICAgICAgICAgICBjdHgucmVzdG9yZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBnZXRTZWdtZW50UG9zaXRpb24oXG4gICAgICAgIHhTY2FsZTogQ2F0ZWdvcnlTY2FsZSB8IExpbmVhclNjYWxlLFxuICAgICAgICBpbmRleDogbnVtYmVyXG4gICAgKTogeyBzZWdtZW50U3RhcnQ6IG51bWJlcjsgc2VnbWVudFdpZHRoOiBudW1iZXIgfSB7XG4gICAgICAgIGNvbnN0IHRpY2tQb3NpdGlvbnMgPSBDaGFydEhlbHBlci5jYWxjdWxhdGVUaWNrUG9zaXRpb25zKHhTY2FsZSk7XG4gICAgICAgIGNvbnN0IHNlZ21lbnRXaWR0aCA9IHRpY2tQb3NpdGlvbnNbMV0gLSB0aWNrUG9zaXRpb25zWzBdO1xuICAgICAgICBjb25zdCBzZWdtZW50U3RhcnQgPSB0aWNrUG9zaXRpb25zW2luZGV4XSAtIHNlZ21lbnRXaWR0aCAvIDI7XG4gICAgICAgIHJldHVybiB7IHNlZ21lbnRTdGFydCwgc2VnbWVudFdpZHRoIH07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjb252ZXJ0UmdiVG9SZ2JhKFxuICAgICAgICBjb2xvclZhbHVlOiBzdHJpbmcsXG4gICAgICAgIGFscGhhOiBudW1iZXIgPSAxXG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKGFscGhhIDwgMCB8fCBhbHBoYSA+IDEpIHJldHVybiBjb2xvclZhbHVlO1xuXG4gICAgICAgIGNvbnN0IHJnYmFNYXRjaCA9IGNvbG9yVmFsdWUubWF0Y2goXG4gICAgICAgICAgICAvcmdiYVxcKChcXGQrKSxcXHMqKFxcZCspLFxccyooXFxkKyksXFxzKihcXGQrKFxcLlxcZCspPylcXCkvXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHJnYmFNYXRjaCkge1xuICAgICAgICAgICAgY29uc3QgWywgciwgZywgYl0gPSByZ2JhTWF0Y2g7XG4gICAgICAgICAgICAvLyBSZXR1cm4gdXBkYXRlZCBSR0JBIHdpdGggdGhlIG5ldyBhbHBoYVxuICAgICAgICAgICAgcmV0dXJuIGByZ2JhKCR7cn0sICR7Z30sICR7Yn0sICR7YWxwaGF9KWA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFeHRyYWN0IHRoZSBSR0IgdmFsdWVzIHVzaW5nIGEgcmVndWxhciBleHByZXNzaW9uXG4gICAgICAgIGNvbnN0IHJnYk1hdGNoID0gY29sb3JWYWx1ZS5tYXRjaCgvcmdiXFwoKFxcZCspLFxccyooXFxkKyksXFxzKihcXGQrKVxcKS8pO1xuICAgICAgICBpZiAoIXJnYk1hdGNoKSByZXR1cm4gY29sb3JWYWx1ZTtcblxuICAgICAgICAvLyBEZXN0cnVjdHVyZSB0aGUgbWF0Y2hlZCB2YWx1ZXNcbiAgICAgICAgY29uc3QgWywgciwgZywgYl0gPSByZ2JNYXRjaDtcblxuICAgICAgICAvLyBSZXR1cm4gdGhlIFJHQkEgc3RyaW5nXG4gICAgICAgIHJldHVybiBgcmdiYSgke3J9LCAke2d9LCAke2J9LCAke2FscGhhfSlgO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY2FsY3VsYXRlRGF0YXNldE1heFZhbHVlKFxuICAgICAgICBkYXRhc2V0czogeyBkYXRhOiBudW1iZXJbXSB9W11cbiAgICApOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5tYXgoLi4uZGF0YXNldHMuZmxhdE1hcCgoZGF0YXNldCkgPT4gZGF0YXNldC5kYXRhKSk7XG4gICAgfVxufVxuIl19