@plait/draw 0.51.3 → 0.51.4
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.
- package/esm2022/engines/basic-shapes/polygon.mjs +1 -1
- package/esm2022/engines/basic-shapes/round-rectangle.mjs +1 -1
- package/esm2022/engines/flowchart/delay.mjs +1 -1
- package/esm2022/engines/flowchart/stored-data.mjs +1 -1
- package/esm2022/engines/flowchart/terminal.mjs +1 -1
- package/esm2022/generators/geometry-shape.generator.mjs +1 -1
- package/esm2022/generators/group.generator.mjs +1 -1
- package/esm2022/generators/line-active.generator.mjs +1 -1
- package/esm2022/generators/line-auto-complete.generator.mjs +1 -1
- package/esm2022/geometry.component.mjs +5 -5
- package/esm2022/group.component.mjs +4 -4
- package/esm2022/image.component.mjs +5 -5
- package/esm2022/interfaces/index.mjs +1 -1
- package/esm2022/interfaces/line.mjs +1 -1
- package/esm2022/line.component.mjs +5 -5
- package/esm2022/plugins/with-draw-fragment.mjs +1 -1
- package/esm2022/plugins/with-draw-hotkey.mjs +1 -1
- package/esm2022/plugins/with-draw-resize.mjs +9 -4
- package/esm2022/plugins/with-draw.mjs +1 -1
- package/esm2022/plugins/with-geometry-create.mjs +1 -1
- package/esm2022/plugins/with-geometry-resize.mjs +1 -1
- package/esm2022/plugins/with-line-auto-complete-reaction.mjs +1 -1
- package/esm2022/plugins/with-line-auto-complete.mjs +1 -1
- package/esm2022/plugins/with-line-bound-reaction.mjs +1 -1
- package/esm2022/plugins/with-line-create.mjs +1 -1
- package/esm2022/plugins/with-line-resize.mjs +1 -1
- package/esm2022/plugins/with-line-text-move.mjs +1 -1
- package/esm2022/plugins/with-line-text.mjs +1 -1
- package/esm2022/transforms/geometry-text.mjs +1 -1
- package/esm2022/transforms/geometry.mjs +3 -3
- package/esm2022/transforms/line.mjs +1 -1
- package/esm2022/utils/clipboard.mjs +1 -1
- package/esm2022/utils/geometry.mjs +1 -1
- package/esm2022/utils/hit.mjs +7 -5
- package/esm2022/utils/line/elbow.mjs +3 -3
- package/esm2022/utils/line/line-arrow.mjs +1 -1
- package/esm2022/utils/line/line-basic.mjs +6 -6
- package/esm2022/utils/line/line-common.mjs +1 -1
- package/esm2022/utils/line/line-resize.mjs +1 -1
- package/esm2022/utils/memorize.mjs +1 -1
- package/esm2022/utils/polygon.mjs +1 -1
- package/esm2022/utils/position/geometry.mjs +1 -1
- package/esm2022/utils/position/line.mjs +1 -1
- package/esm2022/utils/resize-align-reaction.mjs +1 -1
- package/esm2022/utils/resize-align.mjs +1 -1
- package/esm2022/utils/shape.mjs +1 -1
- package/esm2022/utils/style/stroke.mjs +1 -1
- package/fesm2022/plait-draw.mjs +35 -28
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Point, idCreator, PlaitBoard, createG, RectangleClient, findElements, drawLinearPath, createMask, createRect, distanceBetweenPointAndPoint, catmullRomFitting } from '@plait/core';
|
|
2
2
|
import { pointsOnBezierCurves } from 'points-on-curve';
|
|
3
|
-
import { getPointOnPolyline,
|
|
3
|
+
import { getPointOnPolyline, getPointByVectorComponent, removeDuplicatePoints, getExtendPoint, isSourceAndTargetIntersect } from '@plait/common';
|
|
4
4
|
import { LineMarkerType, LineShape, PlaitDrawElement, PlaitLine } from '../../interfaces';
|
|
5
5
|
import { getNearestPoint } from '../geometry';
|
|
6
6
|
import { getLineDashByElement, getStrokeColorByElement, getStrokeWidthByElement } from '../style/stroke';
|
|
@@ -55,10 +55,10 @@ export const getCurvePoints = (board, element) => {
|
|
|
55
55
|
const sumDistance = distanceBetweenPointAndPoint(...source.point, ...target.point);
|
|
56
56
|
const offset = 12 + sumDistance / 3;
|
|
57
57
|
if (sourceBoundElement) {
|
|
58
|
-
curvePoints.push(
|
|
58
|
+
curvePoints.push(getPointByVectorComponent(source.point, source.vector, offset));
|
|
59
59
|
}
|
|
60
60
|
if (targetBoundElement) {
|
|
61
|
-
curvePoints.push(
|
|
61
|
+
curvePoints.push(getPointByVectorComponent(target.point, target.vector, offset));
|
|
62
62
|
}
|
|
63
63
|
const isSingleBound = (sourceBoundElement && !targetBoundElement) || (!sourceBoundElement && targetBoundElement);
|
|
64
64
|
if (isSingleBound) {
|
|
@@ -67,8 +67,8 @@ export const getCurvePoints = (board, element) => {
|
|
|
67
67
|
return pointsOnBezierCurves(points);
|
|
68
68
|
}
|
|
69
69
|
if (!sourceBoundElement && !targetBoundElement) {
|
|
70
|
-
curvePoints.push(
|
|
71
|
-
curvePoints.push(
|
|
70
|
+
curvePoints.push(getPointByVectorComponent(source.point, source.vector, offset));
|
|
71
|
+
curvePoints.push(getPointByVectorComponent(target.point, target.vector, offset));
|
|
72
72
|
}
|
|
73
73
|
curvePoints.push(target.point);
|
|
74
74
|
return pointsOnBezierCurves(curvePoints);
|
|
@@ -255,4 +255,4 @@ function drawMask(board, element, id) {
|
|
|
255
255
|
maskTargetFillRect.setAttribute('fill', 'none');
|
|
256
256
|
return { mask, maskTargetFillRect };
|
|
257
257
|
}
|
|
258
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1iYXNpYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3V0aWxzL2xpbmUvbGluZS1iYXNpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsS0FBSyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsT0FBTyxFQUNQLGVBQWUsRUFDZixZQUFZLEVBRVosY0FBYyxFQUNkLFVBQVUsRUFDVixVQUFVLEVBQ1YsNEJBQTRCLEVBQzVCLGlCQUFpQixFQUNwQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hJLE9BQU8sRUFBYyxjQUFjLEVBQUUsU0FBUyxFQUFZLGdCQUFnQixFQUFFLFNBQVMsRUFBYyxNQUFNLGtCQUFrQixDQUFDO0FBQzVILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLHVCQUF1QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHNC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QixDQUFDLENBQUMsQ0FBQztJQUNILFlBQVk7SUFDWixNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRCxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELGtCQUFrQixDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEQsT0FBTyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFBvaW50LFxuICAgIGlkQ3JlYXRvcixcbiAgICBQbGFpdEJvYXJkLFxuICAgIGNyZWF0ZUcsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIGZpbmRFbGVtZW50cyxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgZHJhd0xpbmVhclBhdGgsXG4gICAgY3JlYXRlTWFzayxcbiAgICBjcmVhdGVSZWN0LFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQsXG4gICAgY2F0bXVsbFJvbUZpdHRpbmdcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgcG9pbnRzT25CZXppZXJDdXJ2ZXMgfSBmcm9tICdwb2ludHMtb24tY3VydmUnO1xuaW1wb3J0IHsgZ2V0UG9pbnRPblBvbHlsaW5lLCBnZXRQb2ludEJ5VmVjdG9yLCByZW1vdmVEdXBsaWNhdGVQb2ludHMsIGdldEV4dGVuZFBvaW50LCBpc1NvdXJjZUFuZFRhcmdldEludGVyc2VjdCB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgTGluZUhhbmRsZSwgTGluZU1hcmtlclR5cGUsIExpbmVTaGFwZSwgTGluZVRleHQsIFBsYWl0RHJhd0VsZW1lbnQsIFBsYWl0TGluZSwgUGxhaXRTaGFwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0TmVhcmVzdFBvaW50IH0gZnJvbSAnLi4vZ2VvbWV0cnknO1xuaW1wb3J0IHsgZ2V0TGluZURhc2hCeUVsZW1lbnQsIGdldFN0cm9rZUNvbG9yQnlFbGVtZW50LCBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCB9IGZyb20gJy4uL3N0eWxlL3N0cm9rZSc7XG5pbXBvcnQgeyBnZXRFbmdpbmUgfSBmcm9tICcuLi8uLi9lbmdpbmVzJztcbmltcG9ydCB7IGdldFNoYXBlIH0gZnJvbSAnLi4vc2hhcGUnO1xuaW1wb3J0IHsgRGVmYXVsdExpbmVTdHlsZSwgTElORV9URVhUX1NQQUNFIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2xpbmUnO1xuaW1wb3J0IHsgTGluZVNoYXBlR2VuZXJhdG9yIH0gZnJvbSAnLi4vLi4vZ2VuZXJhdG9ycy9saW5lLmdlbmVyYXRvcic7XG5pbXBvcnQgeyBSRUFDVElPTl9NQVJHSU4gfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0SGl0T3V0bGluZUdlb21ldHJ5IH0gZnJvbSAnLi4vcG9zaXRpb24vZ2VvbWV0cnknO1xuaW1wb3J0IHsgZ2V0TGluZU1lbW9yaXplZExhdGVzdCB9IGZyb20gJy4uL21lbW9yaXplJztcbmltcG9ydCB7IGFsaWduUG9pbnRzIH0gZnJvbSAnLi9saW5lLXJlc2l6ZSc7XG5pbXBvcnQgeyBnZXRFbGJvd0xpbmVSb3V0ZU9wdGlvbnMsIGdldExpbmVIYW5kbGVSZWZQYWlyIH0gZnJvbSAnLi9saW5lLWNvbW1vbic7XG5pbXBvcnQgeyBnZXRFbGJvd1BvaW50cywgZ2V0TmV4dFNvdXJjZUFuZFRhcmdldFBvaW50cyB9IGZyb20gJy4vZWxib3cnO1xuaW1wb3J0IHsgZHJhd0xpbmVBcnJvdyB9IGZyb20gJy4vbGluZS1hcnJvdyc7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVMaW5lRWxlbWVudCA9IChcbiAgICBzaGFwZTogTGluZVNoYXBlLFxuICAgIHBvaW50czogW1BvaW50LCBQb2ludF0sXG4gICAgc291cmNlOiBMaW5lSGFuZGxlLFxuICAgIHRhcmdldDogTGluZUhhbmRsZSxcbiAgICB0ZXh0cz86IExpbmVUZXh0W10sXG4gICAgb3B0aW9ucz86IFBpY2s8UGxhaXRMaW5lLCAnc3Ryb2tlQ29sb3InIHwgJ3N0cm9rZVdpZHRoJz5cbik6IFBsYWl0TGluZSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGlkQ3JlYXRvcigpLFxuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIHNoYXBlLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIHRleHRzOiB0ZXh0cyA/IHRleHRzIDogW10sXG4gICAgICAgIHRhcmdldCxcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgcG9pbnRzLFxuICAgICAgICAuLi5vcHRpb25zXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMaW5lUG9pbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUpID0+IHtcbiAgICBzd2l0Y2ggKGVsZW1lbnQuc2hhcGUpIHtcbiAgICAgICAgY2FzZSBMaW5lU2hhcGUuZWxib3c6IHtcbiAgICAgICAgICAgIHJldHVybiBnZXRFbGJvd1BvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBMaW5lU2hhcGUuY3VydmU6IHtcbiAgICAgICAgICAgIHJldHVybiBnZXRDdXJ2ZVBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gUGxhaXRMaW5lLmdldFBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVSZWZQYWlyID0gZ2V0TGluZUhhbmRsZVJlZlBhaXIoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICAgICAgcG9pbnRzWzBdID0gaGFuZGxlUmVmUGFpci5zb3VyY2UucG9pbnQ7XG4gICAgICAgICAgICBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdID0gaGFuZGxlUmVmUGFpci50YXJnZXQucG9pbnQ7XG4gICAgICAgICAgICByZXR1cm4gcG9pbnRzO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldEN1cnZlUG9pbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUpID0+IHtcbiAgICBpZiAoZWxlbWVudC5wb2ludHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGNvbnN0IGhhbmRsZVJlZlBhaXIgPSBnZXRMaW5lSGFuZGxlUmVmUGFpcihib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHsgc291cmNlLCB0YXJnZXQgfSA9IGhhbmRsZVJlZlBhaXI7XG4gICAgICAgIGNvbnN0IHNvdXJjZUJvdW5kRWxlbWVudCA9IGhhbmRsZVJlZlBhaXIuc291cmNlLmJvdW5kRWxlbWVudDtcbiAgICAgICAgY29uc3QgdGFyZ2V0Qm91bmRFbGVtZW50ID0gaGFuZGxlUmVmUGFpci50YXJnZXQuYm91bmRFbGVtZW50O1xuICAgICAgICBsZXQgY3VydmVQb2ludHM6IFBvaW50W10gPSBbc291cmNlLnBvaW50XTtcbiAgICAgICAgY29uc3Qgc3VtRGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnNvdXJjZS5wb2ludCwgLi4udGFyZ2V0LnBvaW50KTtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gMTIgKyBzdW1EaXN0YW5jZSAvIDM7XG4gICAgICAgIGlmIChzb3VyY2VCb3VuZEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGN1cnZlUG9pbnRzLnB1c2goZ2V0UG9pbnRCeVZlY3Rvcihzb3VyY2UucG9pbnQsIHNvdXJjZS52ZWN0b3IsIG9mZnNldCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YXJnZXRCb3VuZEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGN1cnZlUG9pbnRzLnB1c2goZ2V0UG9pbnRCeVZlY3Rvcih0YXJnZXQucG9pbnQsIHRhcmdldC52ZWN0b3IsIG9mZnNldCkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzU2luZ2xlQm91bmQgPSAoc291cmNlQm91bmRFbGVtZW50ICYmICF0YXJnZXRCb3VuZEVsZW1lbnQpIHx8ICghc291cmNlQm91bmRFbGVtZW50ICYmIHRhcmdldEJvdW5kRWxlbWVudCk7XG4gICAgICAgIGlmIChpc1NpbmdsZUJvdW5kKSB7XG4gICAgICAgICAgICBjdXJ2ZVBvaW50cy5wdXNoKHRhcmdldC5wb2ludCk7XG4gICAgICAgICAgICBjb25zdCBwb2ludHMgPSBRMkMoY3VydmVQb2ludHMpO1xuICAgICAgICAgICAgcmV0dXJuIHBvaW50c09uQmV6aWVyQ3VydmVzKHBvaW50cykgYXMgUG9pbnRbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNvdXJjZUJvdW5kRWxlbWVudCAmJiAhdGFyZ2V0Qm91bmRFbGVtZW50KSB7XG4gICAgICAgICAgICBjdXJ2ZVBvaW50cy5wdXNoKGdldFBvaW50QnlWZWN0b3Ioc291cmNlLnBvaW50LCBzb3VyY2UudmVjdG9yLCBvZmZzZXQpKTtcbiAgICAgICAgICAgIGN1cnZlUG9pbnRzLnB1c2goZ2V0UG9pbnRCeVZlY3Rvcih0YXJnZXQucG9pbnQsIHRhcmdldC52ZWN0b3IsIG9mZnNldCkpO1xuICAgICAgICB9XG4gICAgICAgIGN1cnZlUG9pbnRzLnB1c2godGFyZ2V0LnBvaW50KTtcbiAgICAgICAgcmV0dXJuIHBvaW50c09uQmV6aWVyQ3VydmVzKGN1cnZlUG9pbnRzKSBhcyBQb2ludFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBkYXRhUG9pbnRzID0gUGxhaXRMaW5lLmdldFBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGRhdGFQb2ludHMgPSByZW1vdmVEdXBsaWNhdGVQb2ludHMoZGF0YVBvaW50cyk7XG4gICAgICAgIGNvbnN0IHBvaW50cyA9IGNhdG11bGxSb21GaXR0aW5nKGRhdGFQb2ludHMpO1xuICAgICAgICByZXR1cm4gcG9pbnRzT25CZXppZXJDdXJ2ZXMocG9pbnRzKSBhcyBQb2ludFtdO1xuICAgIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNaWRkbGVQb2ludHMoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSkge1xuICAgIGNvbnN0IHJlc3VsdDogUG9pbnRbXSA9IFtdO1xuICAgIGNvbnN0IHNoYXBlID0gZWxlbWVudC5zaGFwZTtcbiAgICBjb25zdCBoaWRlQnVmZmVyID0gMTA7XG4gICAgaWYgKHNoYXBlID09PSBMaW5lU2hhcGUuc3RyYWlnaHQpIHtcbiAgICAgICAgY29uc3QgcG9pbnRzID0gUGxhaXRMaW5lLmdldFBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnBvaW50c1tpXSwgLi4ucG9pbnRzW2kgKyAxXSk7XG4gICAgICAgICAgICBpZiAoZGlzdGFuY2UgPCBoaWRlQnVmZmVyKSBjb250aW51ZTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFsocG9pbnRzW2ldWzBdICsgcG9pbnRzW2kgKyAxXVswXSkgLyAyLCAocG9pbnRzW2ldWzFdICsgcG9pbnRzW2kgKyAxXVsxXSkgLyAyXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNoYXBlID09PSBMaW5lU2hhcGUuY3VydmUpIHtcbiAgICAgICAgY29uc3QgcG9pbnRzID0gUGxhaXRMaW5lLmdldFBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHBvaW50c09uQmV6aWVyID0gZ2V0Q3VydmVQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBpZiAocG9pbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSAwO1xuICAgICAgICAgICAgY29uc3QgZW5kSW5kZXggPSBwb2ludHNPbkJlemllci5sZW5ndGggLSAxO1xuICAgICAgICAgICAgY29uc3QgbWlkZGxlSW5kZXggPSBNYXRoLnJvdW5kKChzdGFydCArIGVuZEluZGV4KSAvIDIpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2gocG9pbnRzT25CZXppZXJbbWlkZGxlSW5kZXhdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBwb2ludHNPbkJlemllci5maW5kSW5kZXgocG9pbnQgPT4gcG9pbnRbMF0gPT09IHBvaW50c1tpXVswXSAmJiBwb2ludFsxXSA9PT0gcG9pbnRzW2ldWzFdKTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmRJbmRleCA9IHBvaW50c09uQmV6aWVyLmZpbmRJbmRleChwb2ludCA9PiBwb2ludFswXSA9PT0gcG9pbnRzW2kgKyAxXVswXSAmJiBwb2ludFsxXSA9PT0gcG9pbnRzW2kgKyAxXVsxXSk7XG4gICAgICAgICAgICAgICAgY29uc3QgbWlkZGxlSW5kZXggPSBNYXRoLnJvdW5kKChzdGFydEluZGV4ICsgZW5kSW5kZXgpIC8gMik7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnBvaW50c1tpXSwgLi4ucG9pbnRzW2kgKyAxXSk7XG4gICAgICAgICAgICAgICAgaWYgKGRpc3RhbmNlIDwgaGlkZUJ1ZmZlcikgY29udGludWU7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocG9pbnRzT25CZXppZXJbbWlkZGxlSW5kZXhdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoc2hhcGUgPT09IExpbmVTaGFwZS5lbGJvdykge1xuICAgICAgICBjb25zdCByZW5kZXJQb2ludHMgPSBnZXRFbGJvd1BvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRFbGJvd0xpbmVSb3V0ZU9wdGlvbnMoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBpc0ludGVyc2VjdCA9IGlzU291cmNlQW5kVGFyZ2V0SW50ZXJzZWN0KG9wdGlvbnMpO1xuICAgICAgICBpZiAoIWlzSW50ZXJzZWN0KSB7XG4gICAgICAgICAgICBjb25zdCBbbmV4dFNvdXJjZVBvaW50LCBuZXh0VGFyZ2V0UG9pbnRdID0gZ2V0TmV4dFNvdXJjZUFuZFRhcmdldFBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlbmRlclBvaW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIChpID09IDAgJiYgUG9pbnQuaXNFcXVhbHMocmVuZGVyUG9pbnRzW2kgKyAxXSwgbmV4dFNvdXJjZVBvaW50KSkgfHxcbiAgICAgICAgICAgICAgICAgICAgKGkgPT09IHJlbmRlclBvaW50cy5sZW5ndGggLSAyICYmIFBvaW50LmlzRXF1YWxzKHJlbmRlclBvaW50c1tyZW5kZXJQb2ludHMubGVuZ3RoIC0gMl0sIG5leHRUYXJnZXRQb2ludCkpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBbY3VycmVudFgsIGN1cnJlbnRZXSA9IHJlbmRlclBvaW50c1tpXTtcbiAgICAgICAgICAgICAgICBjb25zdCBbbmV4dFgsIG5leHRZXSA9IHJlbmRlclBvaW50c1tpICsgMV07XG4gICAgICAgICAgICAgICAgY29uc3QgbWlkZGxlUG9pbnQgPSBbKGN1cnJlbnRYICsgbmV4dFgpIC8gMiwgKGN1cnJlbnRZICsgbmV4dFkpIC8gMl0gYXMgUG9pbnQ7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobWlkZGxlUG9pbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBjb25zdCBkcmF3TGluZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lKSA9PiB7XG4gICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICBjb25zdCBzdHJva2VDb2xvciA9IGdldFN0cm9rZUNvbG9yQnlFbGVtZW50KGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCBzdHJva2VMaW5lRGFzaCA9IGdldExpbmVEYXNoQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7IHN0cm9rZTogc3Ryb2tlQ29sb3IsIHN0cm9rZVdpZHRoLCBzdHJva2VMaW5lRGFzaCB9O1xuICAgIGNvbnN0IGxpbmVHID0gY3JlYXRlRygpO1xuICAgIGxldCBwb2ludHMgPSBnZXRMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICBsZXQgbGluZTtcbiAgICBpZiAoZWxlbWVudC5zaGFwZSA9PT0gTGluZVNoYXBlLmN1cnZlKSB7XG4gICAgICAgIGxpbmUgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKS5jdXJ2ZShwb2ludHMsIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxpbmUgPSBkcmF3TGluZWFyUGF0aChwb2ludHMsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBjb25zdCBpZCA9IGlkQ3JlYXRvcigpO1xuICAgIGxpbmUuc2V0QXR0cmlidXRlKCdtYXNrJywgYHVybCgjJHtpZH0pYCk7XG4gICAgbGluZUcuYXBwZW5kQ2hpbGQobGluZSk7XG4gICAgY29uc3QgeyBtYXNrLCBtYXNrVGFyZ2V0RmlsbFJlY3QgfSA9IGRyYXdNYXNrKGJvYXJkLCBlbGVtZW50LCBpZCk7XG4gICAgbGluZUcuYXBwZW5kQ2hpbGQobWFzayk7XG4gICAgbGluZS5hcHBlbmRDaGlsZChtYXNrVGFyZ2V0RmlsbFJlY3QpO1xuICAgIGNvbnN0IGFycm93ID0gZHJhd0xpbmVBcnJvdyhlbGVtZW50LCBwb2ludHMsIHsgc3Ryb2tlOiBzdHJva2VDb2xvciwgc3Ryb2tlV2lkdGggfSk7XG4gICAgYXJyb3cgJiYgbGluZUcuYXBwZW5kQ2hpbGQoYXJyb3cpO1xuICAgIHJldHVybiBsaW5lRztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb25uZWN0aW9uQnlOZWFyZXN0UG9pbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50OiBQb2ludCwgaGl0RWxlbWVudDogUGxhaXRTaGFwZSk6IFBvaW50ID0+IHtcbiAgICBsZXQgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGhpdEVsZW1lbnQucG9pbnRzKTtcbiAgICBsZXQgbmVhcmVzdFBvaW50ID0gZ2V0TmVhcmVzdFBvaW50KGhpdEVsZW1lbnQsIHBvaW50KTtcbiAgICBjb25zdCBoaXRDb25uZWN0b3IgPSBnZXRIaXRDb25uZWN0b3JQb2ludChuZWFyZXN0UG9pbnQsIGhpdEVsZW1lbnQsIHJlY3RhbmdsZSk7XG4gICAgbmVhcmVzdFBvaW50ID0gaGl0Q29ubmVjdG9yID8gaGl0Q29ubmVjdG9yIDogbmVhcmVzdFBvaW50O1xuICAgIHJldHVybiBbKG5lYXJlc3RQb2ludFswXSAtIHJlY3RhbmdsZS54KSAvIHJlY3RhbmdsZS53aWR0aCwgKG5lYXJlc3RQb2ludFsxXSAtIHJlY3RhbmdsZS55KSAvIHJlY3RhbmdsZS5oZWlnaHRdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpdENvbm5lY3RvclBvaW50ID0gKHBvaW50OiBQb2ludCwgaGl0RWxlbWVudDogUGxhaXRTaGFwZSwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpID0+IHtcbiAgICBjb25zdCBzaGFwZSA9IGdldFNoYXBlKGhpdEVsZW1lbnQpO1xuICAgIGNvbnN0IGNvbm5lY3RvciA9IGdldEVuZ2luZShzaGFwZSkuZ2V0Q29ubmVjdG9yUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgY29uc3QgcG9pbnRzID0gUmVjdGFuZ2xlQ2xpZW50LmdldFBvaW50cyhSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlDZW50ZXJQb2ludChwb2ludCwgMTAsIDEwKSk7XG4gICAgY29uc3QgcG9pbnRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKTtcbiAgICByZXR1cm4gY29ubmVjdG9yLmZpbmQocG9pbnQgPT4ge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHBvaW50UmVjdGFuZ2xlLCBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3BvaW50LCBwb2ludF0pKTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMaW5lVGV4dFJlY3RhbmdsZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lLCBpbmRleDogbnVtYmVyKTogUmVjdGFuZ2xlQ2xpZW50ID0+IHtcbiAgICBjb25zdCB0ZXh0ID0gZWxlbWVudC50ZXh0c1tpbmRleF07XG4gICAgY29uc3QgZWxib3dQb2ludHMgPSBnZXRMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCBwb2ludCA9IGdldFBvaW50T25Qb2x5bGluZShlbGJvd1BvaW50cywgdGV4dC5wb3NpdGlvbik7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogcG9pbnRbMF0gLSB0ZXh0LndpZHRoISAvIDIsXG4gICAgICAgIHk6IHBvaW50WzFdIC0gdGV4dC5oZWlnaHQhIC8gMixcbiAgICAgICAgd2lkdGg6IHRleHQud2lkdGghLFxuICAgICAgICBoZWlnaHQ6IHRleHQuaGVpZ2h0IVxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGluZXMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICByZXR1cm4gZmluZEVsZW1lbnRzKGJvYXJkLCB7XG4gICAgICAgIG1hdGNoOiAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiBQbGFpdERyYXdFbGVtZW50LmlzTGluZShlbGVtZW50KSxcbiAgICAgICAgcmVjdXJzaW9uOiAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiBQbGFpdERyYXdFbGVtZW50LmlzRHJhd0VsZW1lbnQoZWxlbWVudClcbiAgICB9KSBhcyBQbGFpdExpbmVbXTtcbn07XG5cbi8vIHF1YWRyYXRpYyBCZXppZXIgdG8gY3ViaWMgQmV6aWVyXG5leHBvcnQgY29uc3QgUTJDID0gKHBvaW50czogUG9pbnRbXSkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGNvbnN0IG51bVNlZ21lbnRzID0gcG9pbnRzLmxlbmd0aCAvIDM7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1TZWdtZW50czsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gcG9pbnRzW2ldO1xuICAgICAgICBjb25zdCBxQ29udHJvbCA9IHBvaW50c1tpICsgMV07XG4gICAgICAgIGNvbnN0IGVuZCA9IHBvaW50c1tpICsgMl07XG4gICAgICAgIGNvbnN0IHN0YXJ0RGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnN0YXJ0LCAuLi5xQ29udHJvbCk7XG4gICAgICAgIGNvbnN0IGVuZERpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCguLi5lbmQsIC4uLnFDb250cm9sKTtcbiAgICAgICAgY29uc3QgY0NvbnRyb2wxID0gZ2V0RXh0ZW5kUG9pbnQoc3RhcnQsIHFDb250cm9sLCAoc3RhcnREaXN0YW5jZSAqIDIpIC8gMyk7XG4gICAgICAgIGNvbnN0IGNDb250cm9sMiA9IGdldEV4dGVuZFBvaW50KGVuZCwgcUNvbnRyb2wsIChlbmREaXN0YW5jZSAqIDIpIC8gMyk7XG4gICAgICAgIHJlc3VsdC5wdXNoKHN0YXJ0LCBjQ29udHJvbDEsIGNDb250cm9sMiwgZW5kKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVMaW5lQ3JlYXRpbmcgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgbGluZVNoYXBlOiBMaW5lU2hhcGUsXG4gICAgc291cmNlUG9pbnQ6IFBvaW50LFxuICAgIG1vdmluZ1BvaW50OiBQb2ludCxcbiAgICBzb3VyY2VFbGVtZW50OiBQbGFpdFNoYXBlIHwgbnVsbCxcbiAgICBsaW5lU2hhcGVHOiBTVkdHRWxlbWVudFxuKSA9PiB7XG4gICAgY29uc3QgaGl0RWxlbWVudCA9IGdldEhpdE91dGxpbmVHZW9tZXRyeShib2FyZCwgbW92aW5nUG9pbnQsIFJFQUNUSU9OX01BUkdJTik7XG4gICAgY29uc3QgdGFyZ2V0Q29ubmVjdGlvbiA9IGhpdEVsZW1lbnQgPyBnZXRDb25uZWN0aW9uQnlOZWFyZXN0UG9pbnQoYm9hcmQsIG1vdmluZ1BvaW50LCBoaXRFbGVtZW50KSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBjb25uZWN0aW9uID0gc291cmNlRWxlbWVudCA/IGdldENvbm5lY3Rpb25CeU5lYXJlc3RQb2ludChib2FyZCwgc291cmNlUG9pbnQsIHNvdXJjZUVsZW1lbnQpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHRhcmdldEJvdW5kSWQgPSBoaXRFbGVtZW50ID8gaGl0RWxlbWVudC5pZCA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBsaW5lR2VuZXJhdG9yID0gbmV3IExpbmVTaGFwZUdlbmVyYXRvcihib2FyZCk7XG4gICAgY29uc3QgbWVtb3JpemVkTGF0ZXN0ID0gZ2V0TGluZU1lbW9yaXplZExhdGVzdCgpO1xuICAgIGxldCBzb3VyY2VNYXJrZXIsIHRhcmdldE1hcmtlcjtcbiAgICBzb3VyY2VNYXJrZXIgPSBtZW1vcml6ZWRMYXRlc3Quc291cmNlO1xuICAgIHRhcmdldE1hcmtlciA9IG1lbW9yaXplZExhdGVzdC50YXJnZXQ7XG4gICAgc291cmNlTWFya2VyICYmIGRlbGV0ZSBtZW1vcml6ZWRMYXRlc3Quc291cmNlO1xuICAgIHRhcmdldE1hcmtlciAmJiBkZWxldGUgbWVtb3JpemVkTGF0ZXN0LnRhcmdldDtcbiAgICBjb25zdCB0ZW1wb3JhcnlMaW5lRWxlbWVudCA9IGNyZWF0ZUxpbmVFbGVtZW50KFxuICAgICAgICBsaW5lU2hhcGUsXG4gICAgICAgIFtzb3VyY2VQb2ludCwgbW92aW5nUG9pbnRdLFxuICAgICAgICB7IG1hcmtlcjogc291cmNlTWFya2VyIHx8IExpbmVNYXJrZXJUeXBlLm5vbmUsIGNvbm5lY3Rpb246IGNvbm5lY3Rpb24sIGJvdW5kSWQ6IHNvdXJjZUVsZW1lbnQ/LmlkIH0sXG4gICAgICAgIHsgbWFya2VyOiB0YXJnZXRNYXJrZXIgfHwgTGluZU1hcmtlclR5cGUuYXJyb3csIGNvbm5lY3Rpb246IHRhcmdldENvbm5lY3Rpb24sIGJvdW5kSWQ6IHRhcmdldEJvdW5kSWQgfSxcbiAgICAgICAgW10sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiBEZWZhdWx0TGluZVN0eWxlLnN0cm9rZVdpZHRoLFxuICAgICAgICAgICAgLi4ubWVtb3JpemVkTGF0ZXN0XG4gICAgICAgIH1cbiAgICApO1xuICAgIGNvbnN0IGxpbmVQb2ludHMgPSBnZXRMaW5lUG9pbnRzKGJvYXJkLCB0ZW1wb3JhcnlMaW5lRWxlbWVudCk7XG4gICAgY29uc3Qgb3RoZXJQb2ludCA9IGxpbmVQb2ludHNbMF07XG4gICAgdGVtcG9yYXJ5TGluZUVsZW1lbnQucG9pbnRzWzFdID0gYWxpZ25Qb2ludHMob3RoZXJQb2ludCwgbW92aW5nUG9pbnQpO1xuICAgIGxpbmVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGVtcG9yYXJ5TGluZUVsZW1lbnQsIGxpbmVTaGFwZUcpO1xuICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChsaW5lU2hhcGVHKTtcbiAgICByZXR1cm4gdGVtcG9yYXJ5TGluZUVsZW1lbnQ7XG59O1xuXG5mdW5jdGlvbiBkcmF3TWFzayhib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lLCBpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgbWFzayA9IGNyZWF0ZU1hc2soKTtcbiAgICBtYXNrLnNldEF0dHJpYnV0ZSgnaWQnLCBpZCk7XG4gICAgY29uc3QgcG9pbnRzID0gZ2V0TGluZVBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgbGV0IHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhwb2ludHMpO1xuICAgIHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRPdXRsaW5lUmVjdGFuZ2xlKHJlY3RhbmdsZSwgLTMwKTtcbiAgICBjb25zdCBtYXNrRmlsbFJlY3QgPSBjcmVhdGVSZWN0KHJlY3RhbmdsZSwge1xuICAgICAgICBmaWxsOiAnd2hpdGUnXG4gICAgfSk7XG4gICAgbWFzay5hcHBlbmRDaGlsZChtYXNrRmlsbFJlY3QpO1xuXG4gICAgY29uc3QgdGV4dHMgPSBlbGVtZW50LnRleHRzO1xuICAgIHRleHRzLmZvckVhY2goKHRleHQsIGluZGV4KSA9PiB7XG4gICAgICAgIGxldCB0ZXh0UmVjdGFuZ2xlID0gZ2V0TGluZVRleHRSZWN0YW5nbGUoYm9hcmQsIGVsZW1lbnQsIGluZGV4KTtcbiAgICAgICAgdGV4dFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKHRleHRSZWN0YW5nbGUsIExJTkVfVEVYVF9TUEFDRSAqIDIpO1xuICAgICAgICBjb25zdCByZWN0ID0gY3JlYXRlUmVjdCh0ZXh0UmVjdGFuZ2xlLCB7XG4gICAgICAgICAgICBmaWxsOiAnYmxhY2snXG4gICAgICAgIH0pO1xuICAgICAgICBtYXNrLmFwcGVuZENoaWxkKHJlY3QpO1xuICAgIH0pO1xuICAgIC8vIG9wZW4gbGluZVxuICAgIGNvbnN0IG1hc2tUYXJnZXRGaWxsUmVjdCA9IGNyZWF0ZVJlY3QocmVjdGFuZ2xlKTtcbiAgICBtYXNrVGFyZ2V0RmlsbFJlY3Quc2V0QXR0cmlidXRlKCdvcGFjaXR5JywgJzAnKTtcbiAgICBtYXNrVGFyZ2V0RmlsbFJlY3Quc2V0QXR0cmlidXRlKCdmaWxsJywgJ25vbmUnKTtcbiAgICByZXR1cm4geyBtYXNrLCBtYXNrVGFyZ2V0RmlsbFJlY3QgfTtcbn1cbiJdfQ==
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1iYXNpYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3V0aWxzL2xpbmUvbGluZS1iYXNpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsS0FBSyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsT0FBTyxFQUNQLGVBQWUsRUFDZixZQUFZLEVBRVosY0FBYyxFQUNkLFVBQVUsRUFDVixVQUFVLEVBQ1YsNEJBQTRCLEVBQzVCLGlCQUFpQixFQUNwQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pKLE9BQU8sRUFBYyxjQUFjLEVBQUUsU0FBUyxFQUFZLGdCQUFnQixFQUFFLFNBQVMsRUFBYyxNQUFNLGtCQUFrQixDQUFDO0FBQzVILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLHVCQUF1QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHNC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QUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoRSxhQUFhLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxhQUFhLEVBQUU7WUFDbkMsSUFBSSxFQUFFLE9BQU87U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDLENBQUMsQ0FBQztJQUNILFlBQVk7SUFDWixNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRCxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELGtCQUFrQixDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEQsT0FBTyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFBvaW50LFxuICAgIGlkQ3JlYXRvcixcbiAgICBQbGFpdEJvYXJkLFxuICAgIGNyZWF0ZUcsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIGZpbmRFbGVtZW50cyxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgZHJhd0xpbmVhclBhdGgsXG4gICAgY3JlYXRlTWFzayxcbiAgICBjcmVhdGVSZWN0LFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQsXG4gICAgY2F0bXVsbFJvbUZpdHRpbmdcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgcG9pbnRzT25CZXppZXJDdXJ2ZXMgfSBmcm9tICdwb2ludHMtb24tY3VydmUnO1xuaW1wb3J0IHsgZ2V0UG9pbnRPblBvbHlsaW5lLCBnZXRQb2ludEJ5VmVjdG9yQ29tcG9uZW50LCByZW1vdmVEdXBsaWNhdGVQb2ludHMsIGdldEV4dGVuZFBvaW50LCBpc1NvdXJjZUFuZFRhcmdldEludGVyc2VjdCB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgTGluZUhhbmRsZSwgTGluZU1hcmtlclR5cGUsIExpbmVTaGFwZSwgTGluZVRleHQsIFBsYWl0RHJhd0VsZW1lbnQsIFBsYWl0TGluZSwgUGxhaXRTaGFwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0TmVhcmVzdFBvaW50IH0gZnJvbSAnLi4vZ2VvbWV0cnknO1xuaW1wb3J0IHsgZ2V0TGluZURhc2hCeUVsZW1lbnQsIGdldFN0cm9rZUNvbG9yQnlFbGVtZW50LCBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCB9IGZyb20gJy4uL3N0eWxlL3N0cm9rZSc7XG5pbXBvcnQgeyBnZXRFbmdpbmUgfSBmcm9tICcuLi8uLi9lbmdpbmVzJztcbmltcG9ydCB7IGdldFNoYXBlIH0gZnJvbSAnLi4vc2hhcGUnO1xuaW1wb3J0IHsgRGVmYXVsdExpbmVTdHlsZSwgTElORV9URVhUX1NQQUNFIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2xpbmUnO1xuaW1wb3J0IHsgTGluZVNoYXBlR2VuZXJhdG9yIH0gZnJvbSAnLi4vLi4vZ2VuZXJhdG9ycy9saW5lLmdlbmVyYXRvcic7XG5pbXBvcnQgeyBSRUFDVElPTl9NQVJHSU4gfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0SGl0T3V0bGluZUdlb21ldHJ5IH0gZnJvbSAnLi4vcG9zaXRpb24vZ2VvbWV0cnknO1xuaW1wb3J0IHsgZ2V0TGluZU1lbW9yaXplZExhdGVzdCB9IGZyb20gJy4uL21lbW9yaXplJztcbmltcG9ydCB7IGFsaWduUG9pbnRzIH0gZnJvbSAnLi9saW5lLXJlc2l6ZSc7XG5pbXBvcnQgeyBnZXRFbGJvd0xpbmVSb3V0ZU9wdGlvbnMsIGdldExpbmVIYW5kbGVSZWZQYWlyIH0gZnJvbSAnLi9saW5lLWNvbW1vbic7XG5pbXBvcnQgeyBnZXRFbGJvd1BvaW50cywgZ2V0TmV4dFNvdXJjZUFuZFRhcmdldFBvaW50cyB9IGZyb20gJy4vZWxib3cnO1xuaW1wb3J0IHsgZHJhd0xpbmVBcnJvdyB9IGZyb20gJy4vbGluZS1hcnJvdyc7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVMaW5lRWxlbWVudCA9IChcbiAgICBzaGFwZTogTGluZVNoYXBlLFxuICAgIHBvaW50czogW1BvaW50LCBQb2ludF0sXG4gICAgc291cmNlOiBMaW5lSGFuZGxlLFxuICAgIHRhcmdldDogTGluZUhhbmRsZSxcbiAgICB0ZXh0cz86IExpbmVUZXh0W10sXG4gICAgb3B0aW9ucz86IFBpY2s8UGxhaXRMaW5lLCAnc3Ryb2tlQ29sb3InIHwgJ3N0cm9rZVdpZHRoJz5cbik6IFBsYWl0TGluZSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGlkQ3JlYXRvcigpLFxuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIHNoYXBlLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIHRleHRzOiB0ZXh0cyA/IHRleHRzIDogW10sXG4gICAgICAgIHRhcmdldCxcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgcG9pbnRzLFxuICAgICAgICAuLi5vcHRpb25zXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMaW5lUG9pbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUpID0+IHtcbiAgICBzd2l0Y2ggKGVsZW1lbnQuc2hhcGUpIHtcbiAgICAgICAgY2FzZSBMaW5lU2hhcGUuZWxib3c6IHtcbiAgICAgICAgICAgIHJldHVybiBnZXRFbGJvd1BvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBMaW5lU2hhcGUuY3VydmU6IHtcbiAgICAgICAgICAgIHJldHVybiBnZXRDdXJ2ZVBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gUGxhaXRMaW5lLmdldFBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVSZWZQYWlyID0gZ2V0TGluZUhhbmRsZVJlZlBhaXIoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICAgICAgcG9pbnRzWzBdID0gaGFuZGxlUmVmUGFpci5zb3VyY2UucG9pbnQ7XG4gICAgICAgICAgICBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdID0gaGFuZGxlUmVmUGFpci50YXJnZXQucG9pbnQ7XG4gICAgICAgICAgICByZXR1cm4gcG9pbnRzO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldEN1cnZlUG9pbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUpID0+IHtcbiAgICBpZiAoZWxlbWVudC5wb2ludHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGNvbnN0IGhhbmRsZVJlZlBhaXIgPSBnZXRMaW5lSGFuZGxlUmVmUGFpcihib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHsgc291cmNlLCB0YXJnZXQgfSA9IGhhbmRsZVJlZlBhaXI7XG4gICAgICAgIGNvbnN0IHNvdXJjZUJvdW5kRWxlbWVudCA9IGhhbmRsZVJlZlBhaXIuc291cmNlLmJvdW5kRWxlbWVudDtcbiAgICAgICAgY29uc3QgdGFyZ2V0Qm91bmRFbGVtZW50ID0gaGFuZGxlUmVmUGFpci50YXJnZXQuYm91bmRFbGVtZW50O1xuICAgICAgICBsZXQgY3VydmVQb2ludHM6IFBvaW50W10gPSBbc291cmNlLnBvaW50XTtcbiAgICAgICAgY29uc3Qgc3VtRGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnNvdXJjZS5wb2ludCwgLi4udGFyZ2V0LnBvaW50KTtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gMTIgKyBzdW1EaXN0YW5jZSAvIDM7XG4gICAgICAgIGlmIChzb3VyY2VCb3VuZEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGN1cnZlUG9pbnRzLnB1c2goZ2V0UG9pbnRCeVZlY3RvckNvbXBvbmVudChzb3VyY2UucG9pbnQsIHNvdXJjZS52ZWN0b3IsIG9mZnNldCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YXJnZXRCb3VuZEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGN1cnZlUG9pbnRzLnB1c2goZ2V0UG9pbnRCeVZlY3RvckNvbXBvbmVudCh0YXJnZXQucG9pbnQsIHRhcmdldC52ZWN0b3IsIG9mZnNldCkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzU2luZ2xlQm91bmQgPSAoc291cmNlQm91bmRFbGVtZW50ICYmICF0YXJnZXRCb3VuZEVsZW1lbnQpIHx8ICghc291cmNlQm91bmRFbGVtZW50ICYmIHRhcmdldEJvdW5kRWxlbWVudCk7XG4gICAgICAgIGlmIChpc1NpbmdsZUJvdW5kKSB7XG4gICAgICAgICAgICBjdXJ2ZVBvaW50cy5wdXNoKHRhcmdldC5wb2ludCk7XG4gICAgICAgICAgICBjb25zdCBwb2ludHMgPSBRMkMoY3VydmVQb2ludHMpO1xuICAgICAgICAgICAgcmV0dXJuIHBvaW50c09uQmV6aWVyQ3VydmVzKHBvaW50cykgYXMgUG9pbnRbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNvdXJjZUJvdW5kRWxlbWVudCAmJiAhdGFyZ2V0Qm91bmRFbGVtZW50KSB7XG4gICAgICAgICAgICBjdXJ2ZVBvaW50cy5wdXNoKGdldFBvaW50QnlWZWN0b3JDb21wb25lbnQoc291cmNlLnBvaW50LCBzb3VyY2UudmVjdG9yLCBvZmZzZXQpKTtcbiAgICAgICAgICAgIGN1cnZlUG9pbnRzLnB1c2goZ2V0UG9pbnRCeVZlY3RvckNvbXBvbmVudCh0YXJnZXQucG9pbnQsIHRhcmdldC52ZWN0b3IsIG9mZnNldCkpO1xuICAgICAgICB9XG4gICAgICAgIGN1cnZlUG9pbnRzLnB1c2godGFyZ2V0LnBvaW50KTtcbiAgICAgICAgcmV0dXJuIHBvaW50c09uQmV6aWVyQ3VydmVzKGN1cnZlUG9pbnRzKSBhcyBQb2ludFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBkYXRhUG9pbnRzID0gUGxhaXRMaW5lLmdldFBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGRhdGFQb2ludHMgPSByZW1vdmVEdXBsaWNhdGVQb2ludHMoZGF0YVBvaW50cyk7XG4gICAgICAgIGNvbnN0IHBvaW50cyA9IGNhdG11bGxSb21GaXR0aW5nKGRhdGFQb2ludHMpO1xuICAgICAgICByZXR1cm4gcG9pbnRzT25CZXppZXJDdXJ2ZXMocG9pbnRzKSBhcyBQb2ludFtdO1xuICAgIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNaWRkbGVQb2ludHMoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSkge1xuICAgIGNvbnN0IHJlc3VsdDogUG9pbnRbXSA9IFtdO1xuICAgIGNvbnN0IHNoYXBlID0gZWxlbWVudC5zaGFwZTtcbiAgICBjb25zdCBoaWRlQnVmZmVyID0gMTA7XG4gICAgaWYgKHNoYXBlID09PSBMaW5lU2hhcGUuc3RyYWlnaHQpIHtcbiAgICAgICAgY29uc3QgcG9pbnRzID0gUGxhaXRMaW5lLmdldFBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnBvaW50c1tpXSwgLi4ucG9pbnRzW2kgKyAxXSk7XG4gICAgICAgICAgICBpZiAoZGlzdGFuY2UgPCBoaWRlQnVmZmVyKSBjb250aW51ZTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFsocG9pbnRzW2ldWzBdICsgcG9pbnRzW2kgKyAxXVswXSkgLyAyLCAocG9pbnRzW2ldWzFdICsgcG9pbnRzW2kgKyAxXVsxXSkgLyAyXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNoYXBlID09PSBMaW5lU2hhcGUuY3VydmUpIHtcbiAgICAgICAgY29uc3QgcG9pbnRzID0gUGxhaXRMaW5lLmdldFBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHBvaW50c09uQmV6aWVyID0gZ2V0Q3VydmVQb2ludHMoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBpZiAocG9pbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSAwO1xuICAgICAgICAgICAgY29uc3QgZW5kSW5kZXggPSBwb2ludHNPbkJlemllci5sZW5ndGggLSAxO1xuICAgICAgICAgICAgY29uc3QgbWlkZGxlSW5kZXggPSBNYXRoLnJvdW5kKChzdGFydCArIGVuZEluZGV4KSAvIDIpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2gocG9pbnRzT25CZXppZXJbbWlkZGxlSW5kZXhdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBwb2ludHNPbkJlemllci5maW5kSW5kZXgocG9pbnQgPT4gcG9pbnRbMF0gPT09IHBvaW50c1tpXVswXSAmJiBwb2ludFsxXSA9PT0gcG9pbnRzW2ldWzFdKTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmRJbmRleCA9IHBvaW50c09uQmV6aWVyLmZpbmRJbmRleChwb2ludCA9PiBwb2ludFswXSA9PT0gcG9pbnRzW2kgKyAxXVswXSAmJiBwb2ludFsxXSA9PT0gcG9pbnRzW2kgKyAxXVsxXSk7XG4gICAgICAgICAgICAgICAgY29uc3QgbWlkZGxlSW5kZXggPSBNYXRoLnJvdW5kKChzdGFydEluZGV4ICsgZW5kSW5kZXgpIC8gMik7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnBvaW50c1tpXSwgLi4ucG9pbnRzW2kgKyAxXSk7XG4gICAgICAgICAgICAgICAgaWYgKGRpc3RhbmNlIDwgaGlkZUJ1ZmZlcikgY29udGludWU7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocG9pbnRzT25CZXppZXJbbWlkZGxlSW5kZXhdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoc2hhcGUgPT09IExpbmVTaGFwZS5lbGJvdykge1xuICAgICAgICBjb25zdCByZW5kZXJQb2ludHMgPSBnZXRFbGJvd1BvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRFbGJvd0xpbmVSb3V0ZU9wdGlvbnMoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBpc0ludGVyc2VjdCA9IGlzU291cmNlQW5kVGFyZ2V0SW50ZXJzZWN0KG9wdGlvbnMpO1xuICAgICAgICBpZiAoIWlzSW50ZXJzZWN0KSB7XG4gICAgICAgICAgICBjb25zdCBbbmV4dFNvdXJjZVBvaW50LCBuZXh0VGFyZ2V0UG9pbnRdID0gZ2V0TmV4dFNvdXJjZUFuZFRhcmdldFBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlbmRlclBvaW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIChpID09IDAgJiYgUG9pbnQuaXNFcXVhbHMocmVuZGVyUG9pbnRzW2kgKyAxXSwgbmV4dFNvdXJjZVBvaW50KSkgfHxcbiAgICAgICAgICAgICAgICAgICAgKGkgPT09IHJlbmRlclBvaW50cy5sZW5ndGggLSAyICYmIFBvaW50LmlzRXF1YWxzKHJlbmRlclBvaW50c1tyZW5kZXJQb2ludHMubGVuZ3RoIC0gMl0sIG5leHRUYXJnZXRQb2ludCkpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBbY3VycmVudFgsIGN1cnJlbnRZXSA9IHJlbmRlclBvaW50c1tpXTtcbiAgICAgICAgICAgICAgICBjb25zdCBbbmV4dFgsIG5leHRZXSA9IHJlbmRlclBvaW50c1tpICsgMV07XG4gICAgICAgICAgICAgICAgY29uc3QgbWlkZGxlUG9pbnQgPSBbKGN1cnJlbnRYICsgbmV4dFgpIC8gMiwgKGN1cnJlbnRZICsgbmV4dFkpIC8gMl0gYXMgUG9pbnQ7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobWlkZGxlUG9pbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBjb25zdCBkcmF3TGluZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lKSA9PiB7XG4gICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICBjb25zdCBzdHJva2VDb2xvciA9IGdldFN0cm9rZUNvbG9yQnlFbGVtZW50KGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCBzdHJva2VMaW5lRGFzaCA9IGdldExpbmVEYXNoQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7IHN0cm9rZTogc3Ryb2tlQ29sb3IsIHN0cm9rZVdpZHRoLCBzdHJva2VMaW5lRGFzaCB9O1xuICAgIGNvbnN0IGxpbmVHID0gY3JlYXRlRygpO1xuICAgIGxldCBwb2ludHMgPSBnZXRMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICBsZXQgbGluZTtcbiAgICBpZiAoZWxlbWVudC5zaGFwZSA9PT0gTGluZVNoYXBlLmN1cnZlKSB7XG4gICAgICAgIGxpbmUgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKS5jdXJ2ZShwb2ludHMsIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxpbmUgPSBkcmF3TGluZWFyUGF0aChwb2ludHMsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBjb25zdCBpZCA9IGlkQ3JlYXRvcigpO1xuICAgIGxpbmUuc2V0QXR0cmlidXRlKCdtYXNrJywgYHVybCgjJHtpZH0pYCk7XG4gICAgbGluZUcuYXBwZW5kQ2hpbGQobGluZSk7XG4gICAgY29uc3QgeyBtYXNrLCBtYXNrVGFyZ2V0RmlsbFJlY3QgfSA9IGRyYXdNYXNrKGJvYXJkLCBlbGVtZW50LCBpZCk7XG4gICAgbGluZUcuYXBwZW5kQ2hpbGQobWFzayk7XG4gICAgbGluZS5hcHBlbmRDaGlsZChtYXNrVGFyZ2V0RmlsbFJlY3QpO1xuICAgIGNvbnN0IGFycm93ID0gZHJhd0xpbmVBcnJvdyhlbGVtZW50LCBwb2ludHMsIHsgc3Ryb2tlOiBzdHJva2VDb2xvciwgc3Ryb2tlV2lkdGggfSk7XG4gICAgYXJyb3cgJiYgbGluZUcuYXBwZW5kQ2hpbGQoYXJyb3cpO1xuICAgIHJldHVybiBsaW5lRztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb25uZWN0aW9uQnlOZWFyZXN0UG9pbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50OiBQb2ludCwgaGl0RWxlbWVudDogUGxhaXRTaGFwZSk6IFBvaW50ID0+IHtcbiAgICBsZXQgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGhpdEVsZW1lbnQucG9pbnRzKTtcbiAgICBsZXQgbmVhcmVzdFBvaW50ID0gZ2V0TmVhcmVzdFBvaW50KGhpdEVsZW1lbnQsIHBvaW50KTtcbiAgICBjb25zdCBoaXRDb25uZWN0b3IgPSBnZXRIaXRDb25uZWN0b3JQb2ludChuZWFyZXN0UG9pbnQsIGhpdEVsZW1lbnQsIHJlY3RhbmdsZSk7XG4gICAgbmVhcmVzdFBvaW50ID0gaGl0Q29ubmVjdG9yID8gaGl0Q29ubmVjdG9yIDogbmVhcmVzdFBvaW50O1xuICAgIHJldHVybiBbKG5lYXJlc3RQb2ludFswXSAtIHJlY3RhbmdsZS54KSAvIHJlY3RhbmdsZS53aWR0aCwgKG5lYXJlc3RQb2ludFsxXSAtIHJlY3RhbmdsZS55KSAvIHJlY3RhbmdsZS5oZWlnaHRdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpdENvbm5lY3RvclBvaW50ID0gKHBvaW50OiBQb2ludCwgaGl0RWxlbWVudDogUGxhaXRTaGFwZSwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpID0+IHtcbiAgICBjb25zdCBzaGFwZSA9IGdldFNoYXBlKGhpdEVsZW1lbnQpO1xuICAgIGNvbnN0IGNvbm5lY3RvciA9IGdldEVuZ2luZShzaGFwZSkuZ2V0Q29ubmVjdG9yUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgY29uc3QgcG9pbnRzID0gUmVjdGFuZ2xlQ2xpZW50LmdldFBvaW50cyhSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlDZW50ZXJQb2ludChwb2ludCwgMTAsIDEwKSk7XG4gICAgY29uc3QgcG9pbnRSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKTtcbiAgICByZXR1cm4gY29ubmVjdG9yLmZpbmQocG9pbnQgPT4ge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHBvaW50UmVjdGFuZ2xlLCBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3BvaW50LCBwb2ludF0pKTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMaW5lVGV4dFJlY3RhbmdsZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lLCBpbmRleDogbnVtYmVyKTogUmVjdGFuZ2xlQ2xpZW50ID0+IHtcbiAgICBjb25zdCB0ZXh0ID0gZWxlbWVudC50ZXh0c1tpbmRleF07XG4gICAgY29uc3QgZWxib3dQb2ludHMgPSBnZXRMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCBwb2ludCA9IGdldFBvaW50T25Qb2x5bGluZShlbGJvd1BvaW50cywgdGV4dC5wb3NpdGlvbik7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogcG9pbnRbMF0gLSB0ZXh0LndpZHRoISAvIDIsXG4gICAgICAgIHk6IHBvaW50WzFdIC0gdGV4dC5oZWlnaHQhIC8gMixcbiAgICAgICAgd2lkdGg6IHRleHQud2lkdGghLFxuICAgICAgICBoZWlnaHQ6IHRleHQuaGVpZ2h0IVxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGluZXMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICByZXR1cm4gZmluZEVsZW1lbnRzKGJvYXJkLCB7XG4gICAgICAgIG1hdGNoOiAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiBQbGFpdERyYXdFbGVtZW50LmlzTGluZShlbGVtZW50KSxcbiAgICAgICAgcmVjdXJzaW9uOiAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiBQbGFpdERyYXdFbGVtZW50LmlzRHJhd0VsZW1lbnQoZWxlbWVudClcbiAgICB9KSBhcyBQbGFpdExpbmVbXTtcbn07XG5cbi8vIHF1YWRyYXRpYyBCZXppZXIgdG8gY3ViaWMgQmV6aWVyXG5leHBvcnQgY29uc3QgUTJDID0gKHBvaW50czogUG9pbnRbXSkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGNvbnN0IG51bVNlZ21lbnRzID0gcG9pbnRzLmxlbmd0aCAvIDM7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1TZWdtZW50czsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gcG9pbnRzW2ldO1xuICAgICAgICBjb25zdCBxQ29udHJvbCA9IHBvaW50c1tpICsgMV07XG4gICAgICAgIGNvbnN0IGVuZCA9IHBvaW50c1tpICsgMl07XG4gICAgICAgIGNvbnN0IHN0YXJ0RGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnN0YXJ0LCAuLi5xQ29udHJvbCk7XG4gICAgICAgIGNvbnN0IGVuZERpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCguLi5lbmQsIC4uLnFDb250cm9sKTtcbiAgICAgICAgY29uc3QgY0NvbnRyb2wxID0gZ2V0RXh0ZW5kUG9pbnQoc3RhcnQsIHFDb250cm9sLCAoc3RhcnREaXN0YW5jZSAqIDIpIC8gMyk7XG4gICAgICAgIGNvbnN0IGNDb250cm9sMiA9IGdldEV4dGVuZFBvaW50KGVuZCwgcUNvbnRyb2wsIChlbmREaXN0YW5jZSAqIDIpIC8gMyk7XG4gICAgICAgIHJlc3VsdC5wdXNoKHN0YXJ0LCBjQ29udHJvbDEsIGNDb250cm9sMiwgZW5kKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVMaW5lQ3JlYXRpbmcgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgbGluZVNoYXBlOiBMaW5lU2hhcGUsXG4gICAgc291cmNlUG9pbnQ6IFBvaW50LFxuICAgIG1vdmluZ1BvaW50OiBQb2ludCxcbiAgICBzb3VyY2VFbGVtZW50OiBQbGFpdFNoYXBlIHwgbnVsbCxcbiAgICBsaW5lU2hhcGVHOiBTVkdHRWxlbWVudFxuKSA9PiB7XG4gICAgY29uc3QgaGl0RWxlbWVudCA9IGdldEhpdE91dGxpbmVHZW9tZXRyeShib2FyZCwgbW92aW5nUG9pbnQsIFJFQUNUSU9OX01BUkdJTik7XG4gICAgY29uc3QgdGFyZ2V0Q29ubmVjdGlvbiA9IGhpdEVsZW1lbnQgPyBnZXRDb25uZWN0aW9uQnlOZWFyZXN0UG9pbnQoYm9hcmQsIG1vdmluZ1BvaW50LCBoaXRFbGVtZW50KSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBjb25uZWN0aW9uID0gc291cmNlRWxlbWVudCA/IGdldENvbm5lY3Rpb25CeU5lYXJlc3RQb2ludChib2FyZCwgc291cmNlUG9pbnQsIHNvdXJjZUVsZW1lbnQpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHRhcmdldEJvdW5kSWQgPSBoaXRFbGVtZW50ID8gaGl0RWxlbWVudC5pZCA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBsaW5lR2VuZXJhdG9yID0gbmV3IExpbmVTaGFwZUdlbmVyYXRvcihib2FyZCk7XG4gICAgY29uc3QgbWVtb3JpemVkTGF0ZXN0ID0gZ2V0TGluZU1lbW9yaXplZExhdGVzdCgpO1xuICAgIGxldCBzb3VyY2VNYXJrZXIsIHRhcmdldE1hcmtlcjtcbiAgICBzb3VyY2VNYXJrZXIgPSBtZW1vcml6ZWRMYXRlc3Quc291cmNlO1xuICAgIHRhcmdldE1hcmtlciA9IG1lbW9yaXplZExhdGVzdC50YXJnZXQ7XG4gICAgc291cmNlTWFya2VyICYmIGRlbGV0ZSBtZW1vcml6ZWRMYXRlc3Quc291cmNlO1xuICAgIHRhcmdldE1hcmtlciAmJiBkZWxldGUgbWVtb3JpemVkTGF0ZXN0LnRhcmdldDtcbiAgICBjb25zdCB0ZW1wb3JhcnlMaW5lRWxlbWVudCA9IGNyZWF0ZUxpbmVFbGVtZW50KFxuICAgICAgICBsaW5lU2hhcGUsXG4gICAgICAgIFtzb3VyY2VQb2ludCwgbW92aW5nUG9pbnRdLFxuICAgICAgICB7IG1hcmtlcjogc291cmNlTWFya2VyIHx8IExpbmVNYXJrZXJUeXBlLm5vbmUsIGNvbm5lY3Rpb246IGNvbm5lY3Rpb24sIGJvdW5kSWQ6IHNvdXJjZUVsZW1lbnQ/LmlkIH0sXG4gICAgICAgIHsgbWFya2VyOiB0YXJnZXRNYXJrZXIgfHwgTGluZU1hcmtlclR5cGUuYXJyb3csIGNvbm5lY3Rpb246IHRhcmdldENvbm5lY3Rpb24sIGJvdW5kSWQ6IHRhcmdldEJvdW5kSWQgfSxcbiAgICAgICAgW10sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiBEZWZhdWx0TGluZVN0eWxlLnN0cm9rZVdpZHRoLFxuICAgICAgICAgICAgLi4ubWVtb3JpemVkTGF0ZXN0XG4gICAgICAgIH1cbiAgICApO1xuICAgIGNvbnN0IGxpbmVQb2ludHMgPSBnZXRMaW5lUG9pbnRzKGJvYXJkLCB0ZW1wb3JhcnlMaW5lRWxlbWVudCk7XG4gICAgY29uc3Qgb3RoZXJQb2ludCA9IGxpbmVQb2ludHNbMF07XG4gICAgdGVtcG9yYXJ5TGluZUVsZW1lbnQucG9pbnRzWzFdID0gYWxpZ25Qb2ludHMob3RoZXJQb2ludCwgbW92aW5nUG9pbnQpO1xuICAgIGxpbmVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGVtcG9yYXJ5TGluZUVsZW1lbnQsIGxpbmVTaGFwZUcpO1xuICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChsaW5lU2hhcGVHKTtcbiAgICByZXR1cm4gdGVtcG9yYXJ5TGluZUVsZW1lbnQ7XG59O1xuXG5mdW5jdGlvbiBkcmF3TWFzayhib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lLCBpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgbWFzayA9IGNyZWF0ZU1hc2soKTtcbiAgICBtYXNrLnNldEF0dHJpYnV0ZSgnaWQnLCBpZCk7XG4gICAgY29uc3QgcG9pbnRzID0gZ2V0TGluZVBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgbGV0IHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhwb2ludHMpO1xuICAgIHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRPdXRsaW5lUmVjdGFuZ2xlKHJlY3RhbmdsZSwgLTMwKTtcbiAgICBjb25zdCBtYXNrRmlsbFJlY3QgPSBjcmVhdGVSZWN0KHJlY3RhbmdsZSwge1xuICAgICAgICBmaWxsOiAnd2hpdGUnXG4gICAgfSk7XG4gICAgbWFzay5hcHBlbmRDaGlsZChtYXNrRmlsbFJlY3QpO1xuXG4gICAgY29uc3QgdGV4dHMgPSBlbGVtZW50LnRleHRzO1xuICAgIHRleHRzLmZvckVhY2goKHRleHQsIGluZGV4KSA9PiB7XG4gICAgICAgIGxldCB0ZXh0UmVjdGFuZ2xlID0gZ2V0TGluZVRleHRSZWN0YW5nbGUoYm9hcmQsIGVsZW1lbnQsIGluZGV4KTtcbiAgICAgICAgdGV4dFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKHRleHRSZWN0YW5nbGUsIExJTkVfVEVYVF9TUEFDRSAqIDIpO1xuICAgICAgICBjb25zdCByZWN0ID0gY3JlYXRlUmVjdCh0ZXh0UmVjdGFuZ2xlLCB7XG4gICAgICAgICAgICBmaWxsOiAnYmxhY2snXG4gICAgICAgIH0pO1xuICAgICAgICBtYXNrLmFwcGVuZENoaWxkKHJlY3QpO1xuICAgIH0pO1xuICAgIC8vIG9wZW4gbGluZVxuICAgIGNvbnN0IG1hc2tUYXJnZXRGaWxsUmVjdCA9IGNyZWF0ZVJlY3QocmVjdGFuZ2xlKTtcbiAgICBtYXNrVGFyZ2V0RmlsbFJlY3Quc2V0QXR0cmlidXRlKCdvcGFjaXR5JywgJzAnKTtcbiAgICBtYXNrVGFyZ2V0RmlsbFJlY3Quc2V0QXR0cmlidXRlKCdmaWxsJywgJ25vbmUnKTtcbiAgICByZXR1cm4geyBtYXNrLCBtYXNrVGFyZ2V0RmlsbFJlY3QgfTtcbn1cbiJdfQ==
|
|
@@ -108,4 +108,4 @@ export const getElbowLineRouteOptions = (board, element, handleRefPair) => {
|
|
|
108
108
|
targetOuterRectangle
|
|
109
109
|
};
|
|
110
110
|
};
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jb21tb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9saW5lL2xpbmUtY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsY0FBYyxFQUFFLGVBQWUsRUFBb0IsU0FBUyxFQUFVLE1BQU0sYUFBYSxDQUFDO0FBQ3RILE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsOEJBQThCLEVBQzlCLGdDQUFnQyxFQUNoQyxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQW9DLGNBQWMsRUFBaUIsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUksT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV0RCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBa0IsRUFBcUIsRUFBRTtJQUM3RixNQUFNLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRCxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQWdCLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDN0gsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFn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T0FBTztRQUNILFdBQVc7UUFDWCxlQUFlO1FBQ2YsZUFBZTtRQUNmLG9CQUFvQjtRQUNwQixXQUFXO1FBQ1gsZUFBZTtRQUNmLGVBQWU7UUFDZixvQkFBb0I7S0FDdkIsQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvaW50LCBQbGFpdEJvYXJkLCBnZXRFbGVtZW50QnlJZCwgUmVjdGFuZ2xlQ2xpZW50LCBQb2ludE9mUmVjdGFuZ2xlLCBEaXJlY3Rpb24sIFZlY3RvciB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7XG4gICAgZ2V0RGlyZWN0aW9uRmFjdG9yLFxuICAgIHJvdGF0ZVZlY3RvckFudGk5MCxcbiAgICBnZXREaXJlY3Rpb25CeVZlY3RvcixcbiAgICBnZXRPcHBvc2l0ZURpcmVjdGlvbixcbiAgICBnZXREaXJlY3Rpb25CeVBvaW50T2ZSZWN0YW5nbGUsXG4gICAgZ2V0U291cmNlQW5kVGFyZ2V0T3V0ZXJSZWN0YW5nbGUsXG4gICAgZ2V0TmV4dFBvaW50XG59IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgQmFzaWNTaGFwZXMsIExpbmVIYW5kbGVLZXksIExpbmVIYW5kbGVSZWYsIExpbmVIYW5kbGVSZWZQYWlyLCBMaW5lTWFya2VyVHlwZSwgUGxhaXRHZW9tZXRyeSwgUGxhaXRMaW5lIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCB9IGZyb20gJy4uL3N0eWxlL3N0cm9rZSc7XG5pbXBvcnQgeyBnZXRFbmdpbmUgfSBmcm9tICcuLi8uLi9lbmdpbmVzJztcbmltcG9ydCB7IGdldFNoYXBlIH0gZnJvbSAnLi4vc2hhcGUnO1xuaW1wb3J0IHsgZ2V0U291cmNlQW5kVGFyZ2V0UmVjdGFuZ2xlIH0gZnJvbSAnLi9lbGJvdyc7XG5cbmV4cG9ydCBjb25zdCBnZXRMaW5lSGFuZGxlUmVmUGFpciA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lKTogTGluZUhhbmRsZVJlZlBhaXIgPT4ge1xuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgY29uc3Qgc291cmNlQm91bmRFbGVtZW50ID0gZWxlbWVudC5zb3VyY2UuYm91bmRJZCA/IGdldEVsZW1lbnRCeUlkPFBsYWl0R2VvbWV0cnk+KGJvYXJkLCBlbGVtZW50LnNvdXJjZS5ib3VuZElkKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCB0YXJnZXRCb3VuZEVsZW1lbnQgPSBlbGVtZW50LnRhcmdldC5ib3VuZElkID8gZ2V0RWxlbWVudEJ5SWQ8UGxhaXRHZW9tZXRyeT4oYm9hcmQsIGVsZW1lbnQudGFyZ2V0LmJvdW5kSWQpIDogdW5kZWZpbmVkO1xuICAgIGxldCBzb3VyY2VQb2ludCA9IHNvdXJjZUJvdW5kRWxlbWVudCA/IGdldENvbm5lY3Rpb25Qb2ludChzb3VyY2VCb3VuZEVsZW1lbnQsIGVsZW1lbnQuc291cmNlLmNvbm5lY3Rpb24hKSA6IGVsZW1lbnQucG9pbnRzWzBdO1xuICAgIGxldCB0YXJnZXRQb2ludCA9IHRhcmdldEJvdW5kRWxlbWVudFxuICAgICAgICA/IGdldENvbm5lY3Rpb25Qb2ludCh0YXJnZXRCb3VuZEVsZW1lbnQsIGVsZW1lbnQudGFyZ2V0LmNvbm5lY3Rpb24hKVxuICAgICAgICA6IGVsZW1lbnQucG9pbnRzW2VsZW1lbnQucG9pbnRzLmxlbmd0aCAtIDFdO1xuICAgIGxldCBzb3VyY2VEaXJlY3Rpb24gPSBnZXREaXJlY3Rpb25CeVZlY3RvcihbdGFyZ2V0UG9pbnRbMF0gLSBzb3VyY2VQb2ludFswXSwgdGFyZ2V0UG9pbnRbMV0gLSBzb3VyY2VQb2ludFsxXV0pIHx8IERpcmVjdGlvbi5yaWdodDtcbiAgICBsZXQgdGFyZ2V0RGlyZWN0aW9uID0gZ2V0T3Bwb3NpdGVEaXJlY3Rpb24oc291cmNlRGlyZWN0aW9uKTtcbiAgICBjb25zdCBzb3VyY2VGYWN0b3IgPSBnZXREaXJlY3Rpb25GYWN0b3Ioc291cmNlRGlyZWN0aW9uKTtcbiAgICBjb25zdCB0YXJnZXRGYWN0b3IgPSBnZXREaXJlY3Rpb25GYWN0b3IodGFyZ2V0RGlyZWN0aW9uKTtcbiAgICBjb25zdCBzb3VyY2VIYW5kbGVSZWY6IExpbmVIYW5kbGVSZWYgPSB7XG4gICAgICAgIGtleTogTGluZUhhbmRsZUtleS5zb3VyY2UsXG4gICAgICAgIHBvaW50OiBzb3VyY2VQb2ludCxcbiAgICAgICAgZGlyZWN0aW9uOiBzb3VyY2VEaXJlY3Rpb24sXG4gICAgICAgIHZlY3RvcjogW3NvdXJjZUZhY3Rvci54LCBzb3VyY2VGYWN0b3IueV1cbiAgICB9O1xuICAgIGNvbnN0IHRhcmdldEhhbmRsZVJlZjogTGluZUhhbmRsZVJlZiA9IHtcbiAgICAgICAga2V5OiBMaW5lSGFuZGxlS2V5LnRhcmdldCxcbiAgICAgICAgcG9pbnQ6IHRhcmdldFBvaW50LFxuICAgICAgICBkaXJlY3Rpb246IHRhcmdldERpcmVjdGlvbixcbiAgICAgICAgdmVjdG9yOiBbdGFyZ2V0RmFjdG9yLngsIHRhcmdldEZhY3Rvci55XVxuICAgIH07XG4gICAgaWYgKHNvdXJjZUJvdW5kRWxlbWVudCkge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uT2Zmc2V0ID0gUGxhaXRMaW5lLmlzU291cmNlTWFya09yVGFyZ2V0TWFyayhlbGVtZW50LCBMaW5lTWFya2VyVHlwZS5ub25lLCBMaW5lSGFuZGxlS2V5LnNvdXJjZSkgPyAwIDogc3Ryb2tlV2lkdGg7XG4gICAgICAgIGNvbnN0IHNvdXJjZVZlY3RvciA9IGdldFZlY3RvckJ5Q29ubmVjdGlvbihzb3VyY2VCb3VuZEVsZW1lbnQsIGVsZW1lbnQuc291cmNlLmNvbm5lY3Rpb24hKTtcbiAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gZ2V0RGlyZWN0aW9uQnlWZWN0b3Ioc291cmNlVmVjdG9yKTtcbiAgICAgICAgc291cmNlRGlyZWN0aW9uID0gZGlyZWN0aW9uID8gZGlyZWN0aW9uIDogc291cmNlRGlyZWN0aW9uO1xuICAgICAgICBzb3VyY2VQb2ludCA9IGdldENvbm5lY3Rpb25Qb2ludChzb3VyY2VCb3VuZEVsZW1lbnQsIGVsZW1lbnQuc291cmNlLmNvbm5lY3Rpb24hLCBzb3VyY2VEaXJlY3Rpb24sIGNvbm5lY3Rpb25PZmZzZXQpO1xuICAgICAgICBzb3VyY2VIYW5kbGVSZWYuYm91bmRFbGVtZW50ID0gc291cmNlQm91bmRFbGVtZW50O1xuICAgICAgICBzb3VyY2VIYW5kbGVSZWYuZGlyZWN0aW9uID0gc291cmNlRGlyZWN0aW9uO1xuICAgICAgICBzb3VyY2VIYW5kbGVSZWYucG9pbnQgPSBzb3VyY2VQb2ludDtcbiAgICAgICAgc291cmNlSGFuZGxlUmVmLnZlY3RvciA9IHNvdXJjZVZlY3RvcjtcbiAgICB9XG4gICAgaWYgKHRhcmdldEJvdW5kRWxlbWVudCkge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uT2Zmc2V0ID0gUGxhaXRMaW5lLmlzU291cmNlTWFya09yVGFyZ2V0TWFyayhlbGVtZW50LCBMaW5lTWFya2VyVHlwZS5ub25lLCBMaW5lSGFuZGxlS2V5LnRhcmdldCkgPyAwIDogc3Ryb2tlV2lkdGg7XG4gICAgICAgIGNvbnN0IHRhcmdldFZlY3RvciA9IGdldFZlY3RvckJ5Q29ubmVjdGlvbih0YXJnZXRCb3VuZEVsZW1lbnQsIGVsZW1lbnQudGFyZ2V0LmNvbm5lY3Rpb24hKTtcbiAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gZ2V0RGlyZWN0aW9uQnlWZWN0b3IodGFyZ2V0VmVjdG9yKTtcbiAgICAgICAgdGFyZ2V0RGlyZWN0aW9uID0gZGlyZWN0aW9uID8gZGlyZWN0aW9uIDogdGFyZ2V0RGlyZWN0aW9uO1xuICAgICAgICB0YXJnZXRQb2ludCA9IGdldENvbm5lY3Rpb25Qb2ludCh0YXJnZXRCb3VuZEVsZW1lbnQsIGVsZW1lbnQudGFyZ2V0LmNvbm5lY3Rpb24hLCB0YXJnZXREaXJlY3Rpb24sIGNvbm5lY3Rpb25PZmZzZXQpO1xuICAgICAgICB0YXJnZXRIYW5kbGVSZWYuYm91bmRFbGVtZW50ID0gdGFyZ2V0Qm91bmRFbGVtZW50O1xuICAgICAgICB0YXJnZXRIYW5kbGVSZWYuZGlyZWN0aW9uID0gdGFyZ2V0RGlyZWN0aW9uO1xuICAgICAgICB0YXJnZXRIYW5kbGVSZWYucG9pbnQgPSB0YXJnZXRQb2ludDtcbiAgICAgICAgdGFyZ2V0SGFuZGxlUmVmLnZlY3RvciA9IHRhcmdldFZlY3RvcjtcbiAgICB9XG4gICAgcmV0dXJuIHsgc291cmNlOiBzb3VyY2VIYW5kbGVSZWYsIHRhcmdldDogdGFyZ2V0SGFuZGxlUmVmIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29ubmVjdGlvblBvaW50ID0gKGdlb21ldHJ5OiBQbGFpdEdlb21ldHJ5LCBjb25uZWN0aW9uOiBQb2ludCwgZGlyZWN0aW9uPzogRGlyZWN0aW9uLCBkZWx0YT86IG51bWJlcik6IFBvaW50ID0+IHtcbiAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZ2VvbWV0cnkucG9pbnRzKTtcbiAgICBpZiAoZGlyZWN0aW9uICYmIGRlbHRhKSB7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbkZhY3RvciA9IGdldERpcmVjdGlvbkZhY3RvcihkaXJlY3Rpb24pO1xuICAgICAgICBjb25zdCBwb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBjb25uZWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSArIGRpcmVjdGlvbkZhY3Rvci54ICogZGVsdGEsIHBvaW50WzFdICsgZGlyZWN0aW9uRmFjdG9yLnkgKiBkZWx0YV07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBjb25uZWN0aW9uKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VmVjdG9yQnlDb25uZWN0aW9uID0gKGJvdW5kRWxlbWVudDogUGxhaXRHZW9tZXRyeSwgY29ubmVjdGlvbjogUG9pbnRPZlJlY3RhbmdsZSk6IFZlY3RvciA9PiB7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGJvdW5kRWxlbWVudC5wb2ludHMpO1xuICAgIGNvbnN0IHNoYXBlID0gZ2V0U2hhcGUoYm91bmRFbGVtZW50KTtcbiAgICBjb25zdCBlbmdpbmUgPSBnZXRFbmdpbmUoc2hhcGUpO1xuICAgIGxldCB2ZWN0b3I6IFZlY3RvciA9IFswLCAwXTtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSBnZXREaXJlY3Rpb25CeVBvaW50T2ZSZWN0YW5nbGUoY29ubmVjdGlvbik7XG4gICAgaWYgKGRpcmVjdGlvbiAmJiBib3VuZEVsZW1lbnQuc2hhcGUgIT09IEJhc2ljU2hhcGVzLmVsbGlwc2UpIHtcbiAgICAgICAgY29uc3QgZmFjdG9yID0gZ2V0RGlyZWN0aW9uRmFjdG9yKGRpcmVjdGlvbik7XG4gICAgICAgIHJldHVybiBbZmFjdG9yLngsIGZhY3Rvci55XTtcbiAgICB9XG4gICAgaWYgKGVuZ2luZS5nZXRFZGdlQnlDb25uZWN0aW9uUG9pbnQpIHtcbiAgICAgICAgY29uc3QgZWRnZSA9IGVuZ2luZS5nZXRFZGdlQnlDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBjb25uZWN0aW9uKTtcbiAgICAgICAgaWYgKGVkZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVWZWN0b3IgPSBbZWRnZVsxXVswXSAtIGVkZ2VbMF1bMF0sIGVkZ2VbMV1bMV0gLSBlZGdlWzBdWzFdXSBhcyBWZWN0b3I7XG4gICAgICAgICAgICByZXR1cm4gcm90YXRlVmVjdG9yQW50aTkwKGxpbmVWZWN0b3IpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChlbmdpbmUuZ2V0VGFuZ2VudFZlY3RvckJ5Q29ubmVjdGlvblBvaW50KSB7XG4gICAgICAgIGNvbnN0IGxpbmVWZWN0b3IgPSBlbmdpbmUuZ2V0VGFuZ2VudFZlY3RvckJ5Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZSwgY29ubmVjdGlvbik7XG4gICAgICAgIGlmIChsaW5lVmVjdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gcm90YXRlVmVjdG9yQW50aTkwKGxpbmVWZWN0b3IpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2ZWN0b3I7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RWxib3dMaW5lUm91dGVPcHRpb25zID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUsIGhhbmRsZVJlZlBhaXI/OiBMaW5lSGFuZGxlUmVmUGFpcikgPT4ge1xuICAgIGhhbmRsZVJlZlBhaXIgPSBoYW5kbGVSZWZQYWlyID8/IGdldExpbmVIYW5kbGVSZWZQYWlyKGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCB7IHNvdXJjZVJlY3RhbmdsZSwgdGFyZ2V0UmVjdGFuZ2xlIH0gPSBnZXRTb3VyY2VBbmRUYXJnZXRSZWN0YW5nbGUoYm9hcmQsIGVsZW1lbnQsIGhhbmRsZVJlZlBhaXIpO1xuICAgIGNvbnN0IHsgc291cmNlT3V0ZXJSZWN0YW5nbGUsIHRhcmdldE91dGVyUmVjdGFuZ2xlIH0gPSBnZXRTb3VyY2VBbmRUYXJnZXRPdXRlclJlY3RhbmdsZShzb3VyY2VSZWN0YW5nbGUsIHRhcmdldFJlY3RhbmdsZSk7XG4gICAgY29uc3Qgc291cmNlUG9pbnQgPSBoYW5kbGVSZWZQYWlyLnNvdXJjZS5wb2ludDtcbiAgICBjb25zdCB0YXJnZXRQb2ludCA9IGhhbmRsZVJlZlBhaXIudGFyZ2V0LnBvaW50O1xuICAgIGNvbnN0IG5leHRTb3VyY2VQb2ludCA9IGdldE5leHRQb2ludChzb3VyY2VQb2ludCwgc291cmNlT3V0ZXJSZWN0YW5nbGUsIGhhbmRsZVJlZlBhaXIuc291cmNlLmRpcmVjdGlvbik7XG4gICAgY29uc3QgbmV4dFRhcmdldFBvaW50ID0gZ2V0TmV4dFBvaW50KHRhcmdldFBvaW50LCB0YXJnZXRPdXRlclJlY3RhbmdsZSwgaGFuZGxlUmVmUGFpci50YXJnZXQuZGlyZWN0aW9uKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBzb3VyY2VQb2ludCxcbiAgICAgICAgbmV4dFNvdXJjZVBvaW50LFxuICAgICAgICBzb3VyY2VSZWN0YW5nbGUsXG4gICAgICAgIHNvdXJjZU91dGVyUmVjdGFuZ2xlLFxuICAgICAgICB0YXJnZXRQb2ludCxcbiAgICAgICAgbmV4dFRhcmdldFBvaW50LFxuICAgICAgICB0YXJnZXRSZWN0YW5nbGUsXG4gICAgICAgIHRhcmdldE91dGVyUmVjdGFuZ2xlXG4gICAgfTtcbn07XG4iXX0=
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jb21tb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9saW5lL2xpbmUtY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsY0FBYyxFQUFFLGVBQWUsRUFBb0IsU0FBUyxFQUFVLE1BQU0sYUFBYSxDQUFDO0FBQ3RILE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsOEJBQThCLEVBQzlCLGdDQUFnQyxFQUNoQyxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQW9DLGNBQWMsRUFBaUIsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUksT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV0RCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBa0IsRUFBcUIsRUFBRTtJQUM3RixNQUFNLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRCxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQWdCLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDN0gsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFnQixLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzdILElBQUksV0FBVyxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlILElBQUksV0FBVyxHQUFHLGtCQUFrQjtRQUNoQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFXLENBQUM7UUFDcEUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEQsSUFBSSxlQUFlLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUM7SUFDbEksSUFBSSxlQUFlLEdBQUcsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDNUQsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDekQsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDekQsTUFBTSxlQUFlLEdBQWtCO1FBQ25DLEdBQUcsRUFBRSxhQUFhLENBQUMsTUFBTTtRQUN6QixLQUFLLEVBQUUsV0FBVztRQUNsQixTQUFTLEVBQUUsZUFBZTtRQUMxQixNQUFNLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7S0FDM0MsQ0FBQztJQUNGLE1BQU0sZUFBZSxHQUFrQjtRQUNuQyxHQUFHLEVBQUUsYUFBYSxDQUFDLE1BQU07UUFDekIsS0FBSyxFQUFFLFdBQVc7UUFDbEIsU0FBUyxFQUFFLGVBQWU7UUFDMUIsTUFBTSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0tBQzNDLENBQUM7SUFDRixJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDckIsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsd0JBQXdCLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUNsSSxNQUFNLFlBQVksR0FBRyxxQkFBcUIsQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVcsQ0FBQyxDQUFDO1FBQzNGLE1BQU0sU0FBUyxHQUFHLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JELGVBQWUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDO1FBQzFELFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVcsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUNwSCxlQUFlLENBQUMsWUFBWSxHQUFHLGtCQUFrQixDQUFDO1FBQ2xELGVBQWUsQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDO1FBQzVDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDO1FBQ3BDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDO0lBQzFDLENBQUM7SUFDRCxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDckIsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsd0JBQXdCLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUNsSSxNQUFNLFlBQVksR0FBRyxxQkFBcUIsQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVcsQ0FBQyxDQUFDO1FBQzNGLE1BQU0sU0FBUyxHQUFHLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JELGVBQWUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDO1FBQzFELFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVcsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUNwSCxlQUFlLENBQUMsWUFBWSxHQUFHLGtCQUFrQixDQUFDO1FBQ2xELGVBQWUsQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDO1FBQzVDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDO1FBQ3BDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDO0lBQzFDLENBQUM7SUFDRCxPQUFPLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLENBQUM7QUFDaEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxRQUF1QixFQUFFLFVBQWlCLEVBQUUsU0FBcUIsRUFBRSxLQUFjLEVBQVMsRUFBRTtJQUMzSCxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hFLElBQUksU0FBUyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3JCLE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDeEUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUN4RixDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sZUFBZSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNyRSxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxZQUEyQixFQUFFLFVBQTRCLEVBQVUsRUFBRTtJQUN2RyxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVFLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyQyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsSUFBSSxNQUFNLEdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUIsTUFBTSxTQUFTLEdBQUcsOEJBQThCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0QsSUFBSSxTQUFTLElBQUksWUFBWSxDQUFDLEtBQUssS0FBSyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUQsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0MsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDcEUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFXLENBQUM7WUFDaEYsT0FBTyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0wsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLGlDQUFpQyxFQUFFLENBQUM7UUFDM0MsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNuRixJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2IsT0FBTyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFrQixFQUFFLGFBQWlDLEVBQUUsRUFBRTtJQUNqSCxhQUFhLEdBQUcsYUFBYSxJQUFJLG9CQUFvQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RSxNQUFNLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxHQUFHLDJCQUEyQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDeEcsTUFBTSxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUFFLEdBQUcsZ0NBQWdDLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzFILE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQy9DLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQy9DLE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FBQyxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RyxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsV0FBVyxFQUFFLG9CQUFvQixFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEcsT0FBTztRQUNILFdBQVc7UUFDWCxlQUFlO1FBQ2YsZUFBZTtRQUNmLG9CQUFvQjtRQUNwQixXQUFXO1FBQ1gsZUFBZTtRQUNmLGVBQWU7UUFDZixvQkFBb0I7S0FDdkIsQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvaW50LCBQbGFpdEJvYXJkLCBnZXRFbGVtZW50QnlJZCwgUmVjdGFuZ2xlQ2xpZW50LCBQb2ludE9mUmVjdGFuZ2xlLCBEaXJlY3Rpb24sIFZlY3RvciB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7XG4gICAgZ2V0RGlyZWN0aW9uRmFjdG9yLFxuICAgIHJvdGF0ZVZlY3RvckFudGk5MCxcbiAgICBnZXREaXJlY3Rpb25CeVZlY3RvcixcbiAgICBnZXRPcHBvc2l0ZURpcmVjdGlvbixcbiAgICBnZXREaXJlY3Rpb25CeVBvaW50T2ZSZWN0YW5nbGUsXG4gICAgZ2V0U291cmNlQW5kVGFyZ2V0T3V0ZXJSZWN0YW5nbGUsXG4gICAgZ2V0TmV4dFBvaW50XG59IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgQmFzaWNTaGFwZXMsIExpbmVIYW5kbGVLZXksIExpbmVIYW5kbGVSZWYsIExpbmVIYW5kbGVSZWZQYWlyLCBMaW5lTWFya2VyVHlwZSwgUGxhaXRHZW9tZXRyeSwgUGxhaXRMaW5lIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCB9IGZyb20gJy4uL3N0eWxlL3N0cm9rZSc7XG5pbXBvcnQgeyBnZXRFbmdpbmUgfSBmcm9tICcuLi8uLi9lbmdpbmVzJztcbmltcG9ydCB7IGdldFNoYXBlIH0gZnJvbSAnLi4vc2hhcGUnO1xuaW1wb3J0IHsgZ2V0U291cmNlQW5kVGFyZ2V0UmVjdGFuZ2xlIH0gZnJvbSAnLi9lbGJvdyc7XG5cbmV4cG9ydCBjb25zdCBnZXRMaW5lSGFuZGxlUmVmUGFpciA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRMaW5lKTogTGluZUhhbmRsZVJlZlBhaXIgPT4ge1xuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgY29uc3Qgc291cmNlQm91bmRFbGVtZW50ID0gZWxlbWVudC5zb3VyY2UuYm91bmRJZCA/IGdldEVsZW1lbnRCeUlkPFBsYWl0R2VvbWV0cnk+KGJvYXJkLCBlbGVtZW50LnNvdXJjZS5ib3VuZElkKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCB0YXJnZXRCb3VuZEVsZW1lbnQgPSBlbGVtZW50LnRhcmdldC5ib3VuZElkID8gZ2V0RWxlbWVudEJ5SWQ8UGxhaXRHZW9tZXRyeT4oYm9hcmQsIGVsZW1lbnQudGFyZ2V0LmJvdW5kSWQpIDogdW5kZWZpbmVkO1xuICAgIGxldCBzb3VyY2VQb2ludCA9IHNvdXJjZUJvdW5kRWxlbWVudCA/IGdldENvbm5lY3Rpb25Qb2ludChzb3VyY2VCb3VuZEVsZW1lbnQsIGVsZW1lbnQuc291cmNlLmNvbm5lY3Rpb24hKSA6IGVsZW1lbnQucG9pbnRzWzBdO1xuICAgIGxldCB0YXJnZXRQb2ludCA9IHRhcmdldEJvdW5kRWxlbWVudFxuICAgICAgICA/IGdldENvbm5lY3Rpb25Qb2ludCh0YXJnZXRCb3VuZEVsZW1lbnQsIGVsZW1lbnQudGFyZ2V0LmNvbm5lY3Rpb24hKVxuICAgICAgICA6IGVsZW1lbnQucG9pbnRzW2VsZW1lbnQucG9pbnRzLmxlbmd0aCAtIDFdO1xuICAgIGxldCBzb3VyY2VEaXJlY3Rpb24gPSBnZXREaXJlY3Rpb25CeVZlY3RvcihbdGFyZ2V0UG9pbnRbMF0gLSBzb3VyY2VQb2ludFswXSwgdGFyZ2V0UG9pbnRbMV0gLSBzb3VyY2VQb2ludFsxXV0pIHx8IERpcmVjdGlvbi5yaWdodDtcbiAgICBsZXQgdGFyZ2V0RGlyZWN0aW9uID0gZ2V0T3Bwb3NpdGVEaXJlY3Rpb24oc291cmNlRGlyZWN0aW9uKTtcbiAgICBjb25zdCBzb3VyY2VGYWN0b3IgPSBnZXREaXJlY3Rpb25GYWN0b3Ioc291cmNlRGlyZWN0aW9uKTtcbiAgICBjb25zdCB0YXJnZXRGYWN0b3IgPSBnZXREaXJlY3Rpb25GYWN0b3IodGFyZ2V0RGlyZWN0aW9uKTtcbiAgICBjb25zdCBzb3VyY2VIYW5kbGVSZWY6IExpbmVIYW5kbGVSZWYgPSB7XG4gICAgICAgIGtleTogTGluZUhhbmRsZUtleS5zb3VyY2UsXG4gICAgICAgIHBvaW50OiBzb3VyY2VQb2ludCxcbiAgICAgICAgZGlyZWN0aW9uOiBzb3VyY2VEaXJlY3Rpb24sXG4gICAgICAgIHZlY3RvcjogW3NvdXJjZUZhY3Rvci54LCBzb3VyY2VGYWN0b3IueV1cbiAgICB9O1xuICAgIGNvbnN0IHRhcmdldEhhbmRsZVJlZjogTGluZUhhbmRsZVJlZiA9IHtcbiAgICAgICAga2V5OiBMaW5lSGFuZGxlS2V5LnRhcmdldCxcbiAgICAgICAgcG9pbnQ6IHRhcmdldFBvaW50LFxuICAgICAgICBkaXJlY3Rpb246IHRhcmdldERpcmVjdGlvbixcbiAgICAgICAgdmVjdG9yOiBbdGFyZ2V0RmFjdG9yLngsIHRhcmdldEZhY3Rvci55XVxuICAgIH07XG4gICAgaWYgKHNvdXJjZUJvdW5kRWxlbWVudCkge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uT2Zmc2V0ID0gUGxhaXRMaW5lLmlzU291cmNlTWFya09yVGFyZ2V0TWFyayhlbGVtZW50LCBMaW5lTWFya2VyVHlwZS5ub25lLCBMaW5lSGFuZGxlS2V5LnNvdXJjZSkgPyAwIDogc3Ryb2tlV2lkdGg7XG4gICAgICAgIGNvbnN0IHNvdXJjZVZlY3RvciA9IGdldFZlY3RvckJ5Q29ubmVjdGlvbihzb3VyY2VCb3VuZEVsZW1lbnQsIGVsZW1lbnQuc291cmNlLmNvbm5lY3Rpb24hKTtcbiAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gZ2V0RGlyZWN0aW9uQnlWZWN0b3Ioc291cmNlVmVjdG9yKTtcbiAgICAgICAgc291cmNlRGlyZWN0aW9uID0gZGlyZWN0aW9uID8gZGlyZWN0aW9uIDogc291cmNlRGlyZWN0aW9uO1xuICAgICAgICBzb3VyY2VQb2ludCA9IGdldENvbm5lY3Rpb25Qb2ludChzb3VyY2VCb3VuZEVsZW1lbnQsIGVsZW1lbnQuc291cmNlLmNvbm5lY3Rpb24hLCBzb3VyY2VEaXJlY3Rpb24sIGNvbm5lY3Rpb25PZmZzZXQpO1xuICAgICAgICBzb3VyY2VIYW5kbGVSZWYuYm91bmRFbGVtZW50ID0gc291cmNlQm91bmRFbGVtZW50O1xuICAgICAgICBzb3VyY2VIYW5kbGVSZWYuZGlyZWN0aW9uID0gc291cmNlRGlyZWN0aW9uO1xuICAgICAgICBzb3VyY2VIYW5kbGVSZWYucG9pbnQgPSBzb3VyY2VQb2ludDtcbiAgICAgICAgc291cmNlSGFuZGxlUmVmLnZlY3RvciA9IHNvdXJjZVZlY3RvcjtcbiAgICB9XG4gICAgaWYgKHRhcmdldEJvdW5kRWxlbWVudCkge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uT2Zmc2V0ID0gUGxhaXRMaW5lLmlzU291cmNlTWFya09yVGFyZ2V0TWFyayhlbGVtZW50LCBMaW5lTWFya2VyVHlwZS5ub25lLCBMaW5lSGFuZGxlS2V5LnRhcmdldCkgPyAwIDogc3Ryb2tlV2lkdGg7XG4gICAgICAgIGNvbnN0IHRhcmdldFZlY3RvciA9IGdldFZlY3RvckJ5Q29ubmVjdGlvbih0YXJnZXRCb3VuZEVsZW1lbnQsIGVsZW1lbnQudGFyZ2V0LmNvbm5lY3Rpb24hKTtcbiAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gZ2V0RGlyZWN0aW9uQnlWZWN0b3IodGFyZ2V0VmVjdG9yKTtcbiAgICAgICAgdGFyZ2V0RGlyZWN0aW9uID0gZGlyZWN0aW9uID8gZGlyZWN0aW9uIDogdGFyZ2V0RGlyZWN0aW9uO1xuICAgICAgICB0YXJnZXRQb2ludCA9IGdldENvbm5lY3Rpb25Qb2ludCh0YXJnZXRCb3VuZEVsZW1lbnQsIGVsZW1lbnQudGFyZ2V0LmNvbm5lY3Rpb24hLCB0YXJnZXREaXJlY3Rpb24sIGNvbm5lY3Rpb25PZmZzZXQpO1xuICAgICAgICB0YXJnZXRIYW5kbGVSZWYuYm91bmRFbGVtZW50ID0gdGFyZ2V0Qm91bmRFbGVtZW50O1xuICAgICAgICB0YXJnZXRIYW5kbGVSZWYuZGlyZWN0aW9uID0gdGFyZ2V0RGlyZWN0aW9uO1xuICAgICAgICB0YXJnZXRIYW5kbGVSZWYucG9pbnQgPSB0YXJnZXRQb2ludDtcbiAgICAgICAgdGFyZ2V0SGFuZGxlUmVmLnZlY3RvciA9IHRhcmdldFZlY3RvcjtcbiAgICB9XG4gICAgcmV0dXJuIHsgc291cmNlOiBzb3VyY2VIYW5kbGVSZWYsIHRhcmdldDogdGFyZ2V0SGFuZGxlUmVmIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29ubmVjdGlvblBvaW50ID0gKGdlb21ldHJ5OiBQbGFpdEdlb21ldHJ5LCBjb25uZWN0aW9uOiBQb2ludCwgZGlyZWN0aW9uPzogRGlyZWN0aW9uLCBkZWx0YT86IG51bWJlcik6IFBvaW50ID0+IHtcbiAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZ2VvbWV0cnkucG9pbnRzKTtcbiAgICBpZiAoZGlyZWN0aW9uICYmIGRlbHRhKSB7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbkZhY3RvciA9IGdldERpcmVjdGlvbkZhY3RvcihkaXJlY3Rpb24pO1xuICAgICAgICBjb25zdCBwb2ludCA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBjb25uZWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIFtwb2ludFswXSArIGRpcmVjdGlvbkZhY3Rvci54ICogZGVsdGEsIHBvaW50WzFdICsgZGlyZWN0aW9uRmFjdG9yLnkgKiBkZWx0YV07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBjb25uZWN0aW9uKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VmVjdG9yQnlDb25uZWN0aW9uID0gKGJvdW5kRWxlbWVudDogUGxhaXRHZW9tZXRyeSwgY29ubmVjdGlvbjogUG9pbnRPZlJlY3RhbmdsZSk6IFZlY3RvciA9PiB7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGJvdW5kRWxlbWVudC5wb2ludHMpO1xuICAgIGNvbnN0IHNoYXBlID0gZ2V0U2hhcGUoYm91bmRFbGVtZW50KTtcbiAgICBjb25zdCBlbmdpbmUgPSBnZXRFbmdpbmUoc2hhcGUpO1xuICAgIGxldCB2ZWN0b3I6IFZlY3RvciA9IFswLCAwXTtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSBnZXREaXJlY3Rpb25CeVBvaW50T2ZSZWN0YW5nbGUoY29ubmVjdGlvbik7XG4gICAgaWYgKGRpcmVjdGlvbiAmJiBib3VuZEVsZW1lbnQuc2hhcGUgIT09IEJhc2ljU2hhcGVzLmVsbGlwc2UpIHtcbiAgICAgICAgY29uc3QgZmFjdG9yID0gZ2V0RGlyZWN0aW9uRmFjdG9yKGRpcmVjdGlvbik7XG4gICAgICAgIHJldHVybiBbZmFjdG9yLngsIGZhY3Rvci55XTtcbiAgICB9XG4gICAgaWYgKGVuZ2luZS5nZXRFZGdlQnlDb25uZWN0aW9uUG9pbnQpIHtcbiAgICAgICAgY29uc3QgZWRnZSA9IGVuZ2luZS5nZXRFZGdlQnlDb25uZWN0aW9uUG9pbnQocmVjdGFuZ2xlLCBjb25uZWN0aW9uKTtcbiAgICAgICAgaWYgKGVkZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVWZWN0b3IgPSBbZWRnZVsxXVswXSAtIGVkZ2VbMF1bMF0sIGVkZ2VbMV1bMV0gLSBlZGdlWzBdWzFdXSBhcyBWZWN0b3I7XG4gICAgICAgICAgICByZXR1cm4gcm90YXRlVmVjdG9yQW50aTkwKGxpbmVWZWN0b3IpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChlbmdpbmUuZ2V0VGFuZ2VudFZlY3RvckJ5Q29ubmVjdGlvblBvaW50KSB7XG4gICAgICAgIGNvbnN0IGxpbmVWZWN0b3IgPSBlbmdpbmUuZ2V0VGFuZ2VudFZlY3RvckJ5Q29ubmVjdGlvblBvaW50KHJlY3RhbmdsZSwgY29ubmVjdGlvbik7XG4gICAgICAgIGlmIChsaW5lVmVjdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gcm90YXRlVmVjdG9yQW50aTkwKGxpbmVWZWN0b3IpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2ZWN0b3I7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RWxib3dMaW5lUm91dGVPcHRpb25zID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUsIGhhbmRsZVJlZlBhaXI/OiBMaW5lSGFuZGxlUmVmUGFpcikgPT4ge1xuICAgIGhhbmRsZVJlZlBhaXIgPSBoYW5kbGVSZWZQYWlyID8/IGdldExpbmVIYW5kbGVSZWZQYWlyKGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCB7IHNvdXJjZVJlY3RhbmdsZSwgdGFyZ2V0UmVjdGFuZ2xlIH0gPSBnZXRTb3VyY2VBbmRUYXJnZXRSZWN0YW5nbGUoYm9hcmQsIGVsZW1lbnQsIGhhbmRsZVJlZlBhaXIpO1xuICAgIGNvbnN0IHsgc291cmNlT3V0ZXJSZWN0YW5nbGUsIHRhcmdldE91dGVyUmVjdGFuZ2xlIH0gPSBnZXRTb3VyY2VBbmRUYXJnZXRPdXRlclJlY3RhbmdsZShzb3VyY2VSZWN0YW5nbGUsIHRhcmdldFJlY3RhbmdsZSk7XG4gICAgY29uc3Qgc291cmNlUG9pbnQgPSBoYW5kbGVSZWZQYWlyLnNvdXJjZS5wb2ludDtcbiAgICBjb25zdCB0YXJnZXRQb2ludCA9IGhhbmRsZVJlZlBhaXIudGFyZ2V0LnBvaW50O1xuICAgIGNvbnN0IG5leHRTb3VyY2VQb2ludCA9IGdldE5leHRQb2ludChzb3VyY2VQb2ludCwgc291cmNlT3V0ZXJSZWN0YW5nbGUsIGhhbmRsZVJlZlBhaXIuc291cmNlLmRpcmVjdGlvbik7XG4gICAgY29uc3QgbmV4dFRhcmdldFBvaW50ID0gZ2V0TmV4dFBvaW50KHRhcmdldFBvaW50LCB0YXJnZXRPdXRlclJlY3RhbmdsZSwgaGFuZGxlUmVmUGFpci50YXJnZXQuZGlyZWN0aW9uKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBzb3VyY2VQb2ludCxcbiAgICAgICAgbmV4dFNvdXJjZVBvaW50LFxuICAgICAgICBzb3VyY2VSZWN0YW5nbGUsXG4gICAgICAgIHNvdXJjZU91dGVyUmVjdGFuZ2xlLFxuICAgICAgICB0YXJnZXRQb2ludCxcbiAgICAgICAgbmV4dFRhcmdldFBvaW50LFxuICAgICAgICB0YXJnZXRSZWN0YW5nbGUsXG4gICAgICAgIHRhcmdldE91dGVyUmVjdGFuZ2xlXG4gICAgfTtcbn07XG4iXX0=
|
|
@@ -310,4 +310,4 @@ export const hasIllegalElbowPoint = (midDataPoints) => {
|
|
|
310
310
|
return !isStraightWithBefore && !isStraightWithAfter;
|
|
311
311
|
});
|
|
312
312
|
};
|
|
313
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1yZXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9saW5lL2xpbmUtcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBc0Msc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUksT0FBTyxFQUFjLEtBQUssRUFBRSxlQUFlLEVBQWMsTUFBTSxhQUFhLENBQUM7QUFDN0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9FLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLFNBQWdCLEVBQUUsV0FBa0IsRUFBRSxFQUFFO0lBQ2hFLE1BQU0sUUFBUSxHQUFVLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQztJQUN6QyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFO1FBQzdELFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDOUI7SUFDRCxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFO1FBQy9ELFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDOUI7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsOEJBQThCLENBQUMsZ0JBQXlCLEVBQUUsV0FBa0IsRUFBRSxXQUFrQixFQUFFLFdBQW1CO0lBQ2pJLE1BQU0sY0FBYyxHQUFtRDtRQUNuRSxRQUFRLEVBQUUsSUFBSTtRQUNkLElBQUksRUFBRSxJQUFJ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LE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDNUMsTUFBTSxhQUFhLEdBQUcsV0FBVyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pELE1BQU0sWUFBWSxHQUFHLFVBQVUsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN0RCxNQUFNLG9CQUFvQixHQUFHLGFBQWEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sbUJBQW1CLEdBQUcsWUFBWSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEUsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO1lBQ2IsT0FBTyxDQUFDLG1CQUFtQixDQUFDO1NBQy9CO1FBQ0QsSUFBSSxLQUFLLEtBQUssYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDcEMsT0FBTyxDQUFDLG9CQUFvQixDQUFDO1NBQ2hDO1FBQ0QsT0FBTyxDQUFDLG9CQUFvQixJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDekQsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGJvd0xpbmVSb3V0ZU9wdGlvbnMsIFJlc2l6ZVN0YXRlLCBnZW5lcmF0ZUVsYm93TGluZVJvdXRlLCByZW1vdmVEdXBsaWNhdGVQb2ludHMsIHNpbXBsaWZ5T3J0aG9nb25hbFBvaW50cyB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCwgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCwgZHJhd0NpcmNsZSB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IExJTkVfQUxJR05fVE9MRVJBTkNFIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2xpbmUnO1xuaW1wb3J0IHsgZ2V0RWxib3dMaW5lUm91dGVPcHRpb25zLCBnZXRMaW5lSGFuZGxlUmVmUGFpciB9IGZyb20gJy4vbGluZS1jb21tb24nO1xuaW1wb3J0IHsgUGxhaXRMaW5lIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBjb25zdCBhbGlnblBvaW50cyA9IChiYXNlUG9pbnQ6IFBvaW50LCBtb3ZpbmdQb2ludDogUG9pbnQpID0+IHtcbiAgICBjb25zdCBuZXdQb2ludDogUG9pbnQgPSBbLi4ubW92aW5nUG9pbnRdO1xuICAgIGlmIChQb2ludC5pc1ZlcnRpY2FsKG5ld1BvaW50LCBiYXNlUG9pbnQsIExJTkVfQUxJR05fVE9MRVJBTkNFKSkge1xuICAgICAgICBuZXdQb2ludFswXSA9IGJhc2VQb2ludFswXTtcbiAgICB9XG4gICAgaWYgKFBvaW50LmlzSG9yaXpvbnRhbChuZXdQb2ludCwgYmFzZVBvaW50LCBMSU5FX0FMSUdOX1RPTEVSQU5DRSkpIHtcbiAgICAgICAgbmV3UG9pbnRbMV0gPSBiYXNlUG9pbnRbMV07XG4gICAgfVxuICAgIHJldHVybiBuZXdQb2ludDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQobmV4dFJlbmRlclBvaW50czogUG9pbnRbXSwgc291cmNlUG9pbnQ6IFBvaW50LCB0YXJnZXRQb2ludDogUG9pbnQsIGhhbmRsZUluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCByZWZlcmVuY2VQb2ludDogeyBwcmV2aW91czogUG9pbnQgfCBudWxsOyBuZXh0OiBQb2ludCB8IG51bGwgfSA9IHtcbiAgICAgICAgcHJldmlvdXM6IG51bGwsXG4gICAgICAgIG5leHQ6IG51bGxcbiAgICB9O1xuXG4gICAgY29uc3Qgc3RhcnRQb2ludCA9IG5leHRSZW5kZXJQb2ludHNbaGFuZGxlSW5kZXhdO1xuICAgIGNvbnN0IGVuZFBvaW50ID0gbmV4dFJlbmRlclBvaW50c1toYW5kbGVJbmRleCArIDFdO1xuICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IFBvaW50LmlzSG9yaXpvbnRhbChzdGFydFBvaW50LCBlbmRQb2ludCk7XG4gICAgY29uc3QgaXNWZXJ0aWNhbCA9IFBvaW50LmlzVmVydGljYWwoc3RhcnRQb2ludCwgZW5kUG9pbnQpO1xuICAgIGNvbnN0IHByZXZpb3VzUG9pbnQgPSBuZXh0UmVuZGVyUG9pbnRzW2hhbmRsZUluZGV4IC0gMV0gPz8gbmV4dFJlbmRlclBvaW50c1swXTtcbiAgICBjb25zdCBiZWZvcmVQcmV2aW91c1BvaW50ID0gbmV4dFJlbmRlclBvaW50c1toYW5kbGVJbmRleCAtIDJdID8/IHNvdXJjZVBvaW50O1xuICAgIGlmIChcbiAgICAgICAgKGlzSG9yaXpvbnRhbCAmJiBQb2ludC5pc0hvcml6b250YWwoYmVmb3JlUHJldmlvdXNQb2ludCwgcHJldmlvdXNQb2ludCkpIHx8XG4gICAgICAgIChpc1ZlcnRpY2FsICYmIFBvaW50LmlzVmVydGljYWwoYmVmb3JlUHJldmlvdXNQb2ludCwgcHJldmlvdXNQb2ludCkpXG4gICAgKSB7XG4gICAgICAgIHJlZmVyZW5jZVBvaW50LnByZXZpb3VzID0gcHJldmlvdXNQb2ludDtcbiAgICB9XG5cbiAgICBjb25zdCBuZXh0UG9pbnQgPSBuZXh0UmVuZGVyUG9pbnRzW2hhbmRsZUluZGV4ICsgMl0gPz8gbmV4dFJlbmRlclBvaW50c1tuZXh0UmVuZGVyUG9pbnRzLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGFmdGVyTmV4dFBvaW50ID0gbmV4dFJlbmRlclBvaW50c1toYW5kbGVJbmRleCArIDNdID8/IHRhcmdldFBvaW50O1xuICAgIGlmICgoaXNIb3Jpem9udGFsICYmIFBvaW50LmlzSG9yaXpvbnRhbChuZXh0UG9pbnQsIGFmdGVyTmV4dFBvaW50KSkgfHwgKGlzVmVydGljYWwgJiYgUG9pbnQuaXNWZXJ0aWNhbChuZXh0UG9pbnQsIGFmdGVyTmV4dFBvaW50KSkpIHtcbiAgICAgICAgcmVmZXJlbmNlUG9pbnQubmV4dCA9IG5leHRQb2ludDtcbiAgICB9XG4gICAgcmV0dXJuIHJlZmVyZW5jZVBvaW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxpZ25FbGJvd1NlZ21lbnQoXG4gICAgc3RhcnRLZXlQb2ludDogUG9pbnQsXG4gICAgZW5kS2V5UG9pbnQ6IFBvaW50LFxuICAgIHJlc2l6ZVN0YXRlOiBSZXNpemVTdGF0ZSxcbiAgICByZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQ6IHsgcHJldmlvdXM6IFBvaW50IHwgbnVsbDsgbmV4dDogUG9pbnQgfCBudWxsIH1cbikge1xuICAgIGxldCBuZXdTdGFydFBvaW50ID0gc3RhcnRLZXlQb2ludDtcbiAgICBsZXQgbmV3RW5kUG9pbnQgPSBlbmRLZXlQb2ludDtcbiAgICBpZiAoUG9pbnQuaXNIb3Jpem9udGFsKHN0YXJ0S2V5UG9pbnQsIGVuZEtleVBvaW50KSkge1xuICAgICAgICBjb25zdCBvZmZzZXRZID0gUG9pbnQuZ2V0T2Zmc2V0WShyZXNpemVTdGF0ZS5zdGFydFBvaW50LCByZXNpemVTdGF0ZS5lbmRQb2ludCk7XG4gICAgICAgIGxldCBwb2ludFkgPSBzdGFydEtleVBvaW50WzFdICsgb2Zmc2V0WTtcbiAgICAgICAgaWYgKHJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludC5wcmV2aW91cyAmJiBNYXRoLmFicyhyZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQucHJldmlvdXNbMV0gLSBwb2ludFkpIDwgTElORV9BTElHTl9UT0xFUkFOQ0UpIHtcbiAgICAgICAgICAgIHBvaW50WSA9IHJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludC5wcmV2aW91c1sxXTtcbiAgICAgICAgfSBlbHNlIGlmIChyZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQubmV4dCAmJiBNYXRoLmFicyhyZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQubmV4dFsxXSAtIHBvaW50WSkgPCBMSU5FX0FMSUdOX1RPTEVSQU5DRSkge1xuICAgICAgICAgICAgcG9pbnRZID0gcmVzaXplZFByZXZpb3VzQW5kTmV4dFBvaW50Lm5leHRbMV07XG4gICAgICAgIH1cbiAgICAgICAgbmV3U3RhcnRQb2ludCA9IFtzdGFydEtleVBvaW50WzBdLCBwb2ludFldO1xuICAgICAgICBuZXdFbmRQb2ludCA9IFtlbmRLZXlQb2ludFswXSwgcG9pbnRZXTtcbiAgICB9XG4gICAgaWYgKFBvaW50LmlzVmVydGljYWwoc3RhcnRLZXlQb2ludCwgZW5kS2V5UG9pbnQpKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldFggPSBQb2ludC5nZXRPZmZzZXRYKHJlc2l6ZVN0YXRlLnN0YXJ0UG9pbnQsIHJlc2l6ZVN0YXRlLmVuZFBvaW50KTtcbiAgICAgICAgbGV0IHBvaW50WCA9IHN0YXJ0S2V5UG9pbnRbMF0gKyBvZmZzZXRYO1xuICAgICAgICBpZiAocmVzaXplZFByZXZpb3VzQW5kTmV4dFBvaW50LnByZXZpb3VzICYmIE1hdGguYWJzKHJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludC5wcmV2aW91c1swXSAtIHBvaW50WCkgPCBMSU5FX0FMSUdOX1RPTEVSQU5DRSkge1xuICAgICAgICAgICAgcG9pbnRYID0gcmVzaXplZFByZXZpb3VzQW5kTmV4dFBvaW50LnByZXZpb3VzWzBdO1xuICAgICAgICB9IGVsc2UgaWYgKHJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludC5uZXh0ICYmIE1hdGguYWJzKHJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludC5uZXh0WzBdIC0gcG9pbnRYKSA8IExJTkVfQUxJR05fVE9MRVJBTkNFKSB7XG4gICAgICAgICAgICBwb2ludFggPSByZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQubmV4dFswXTtcbiAgICAgICAgfVxuICAgICAgICBuZXdTdGFydFBvaW50ID0gW3BvaW50WCwgc3RhcnRLZXlQb2ludFsxXV07XG4gICAgICAgIG5ld0VuZFBvaW50ID0gW3BvaW50WCwgZW5kS2V5UG9pbnRbMV1dO1xuICAgIH1cbiAgICByZXR1cm4gW25ld1N0YXJ0UG9pbnQsIG5ld0VuZFBvaW50XTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEluZGV4QW5kRGVsZXRlQ291bnRCeUtleVBvaW50KFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIGVsZW1lbnQ6IFBsYWl0TGluZSxcbiAgICBkYXRhUG9pbnRzOiBQb2ludFtdLFxuICAgIG5leHRSZW5kZXJQb2ludHM6IFBvaW50W10sXG4gICAgaGFuZGxlSW5kZXg6IG51bWJlclxuKSB7XG4gICAgbGV0IGluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgZGVsZXRlQ291bnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3Qgc3RhcnRLZXlQb2ludCA9IG5leHRSZW5kZXJQb2ludHNbaGFuZGxlSW5kZXhdO1xuICAgIGNvbnN0IGVuZEtleVBvaW50ID0gbmV4dFJlbmRlclBvaW50c1toYW5kbGVJbmRleCArIDFdO1xuICAgIGlmICghc3RhcnRLZXlQb2ludCB8fCAhZW5kS2V5UG9pbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgZGVsZXRlQ291bnRcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgbWlkRGF0YVBvaW50cyA9IGRhdGFQb2ludHMuc2xpY2UoMSwgLTEpO1xuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBtaWREYXRhUG9pbnRzLmZpbmRJbmRleChpdGVtID0+IFBvaW50LmlzRXF1YWxzKGl0ZW0sIHN0YXJ0S2V5UG9pbnQpKTtcbiAgICBjb25zdCBlbmRJbmRleCA9IG1pZERhdGFQb2ludHMuZmluZEluZGV4KGl0ZW0gPT4gUG9pbnQuaXNFcXVhbHMoaXRlbSwgZW5kS2V5UG9pbnQpKTtcblxuICAgIGlmIChNYXRoLm1heChzdGFydEluZGV4LCBlbmRJbmRleCkgPiAtMSkge1xuICAgICAgICBpZiAoc3RhcnRJbmRleCA+IC0xICYmIGVuZEluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaW5kZXg6IHN0YXJ0SW5kZXgsXG4gICAgICAgICAgICAgICAgZGVsZXRlQ291bnQ6IDJcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0SW5kZXggPiAtMSAmJiBlbmRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzUmVwbGFjZSA9XG4gICAgICAgICAgICAgICAgc3RhcnRJbmRleCA8IG1pZERhdGFQb2ludHMubGVuZ3RoIC0gMSAmJlxuICAgICAgICAgICAgICAgIFBvaW50LmlzQWxpZ24oW21pZERhdGFQb2ludHNbc3RhcnRJbmRleF0sIG1pZERhdGFQb2ludHNbc3RhcnRJbmRleCArIDFdLCBzdGFydEtleVBvaW50LCBlbmRLZXlQb2ludF0pO1xuICAgICAgICAgICAgaWYgKGlzUmVwbGFjZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBzdGFydEluZGV4LFxuICAgICAgICAgICAgICAgICAgICBkZWxldGVDb3VudDogMlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGluZGV4OiBzdGFydEluZGV4LFxuICAgICAgICAgICAgICAgIGRlbGV0ZUNvdW50OiAxXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydEluZGV4ID09PSAtMSAmJiBlbmRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICBjb25zdCBpc1JlcGxhY2UgPVxuICAgICAgICAgICAgICAgIGVuZEluZGV4ID4gMCAmJiBQb2ludC5pc0FsaWduKFttaWREYXRhUG9pbnRzW2VuZEluZGV4XSwgbWlkRGF0YVBvaW50c1tlbmRJbmRleCAtIDFdLCBzdGFydEtleVBvaW50LCBlbmRLZXlQb2ludF0pO1xuICAgICAgICAgICAgaWYgKGlzUmVwbGFjZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBlbmRJbmRleCAtIDEsXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZUNvdW50OiAyXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaW5kZXg6IGVuZEluZGV4LFxuICAgICAgICAgICAgICAgIGRlbGV0ZUNvdW50OiAxXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaWREYXRhUG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFBvaW50ID0gbWlkRGF0YVBvaW50c1tpXTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRQb2ludCA9IG1pZERhdGFQb2ludHNbaSArIDFdO1xuICAgICAgICAgICAgaWYgKFBvaW50LmlzQWxpZ24oW2N1cnJlbnRQb2ludCwgbmV4dFBvaW50LCBzdGFydEtleVBvaW50LCBlbmRLZXlQb2ludF0pKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChQb2ludC5pc0FsaWduKFtjdXJyZW50UG9pbnQsIG5leHRQb2ludCwgc3RhcnRLZXlQb2ludF0pKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBNYXRoLm1pbihpICsgMSwgbWlkRGF0YVBvaW50cy5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICBkZWxldGVDb3VudCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoUG9pbnQuaXNBbGlnbihbY3VycmVudFBvaW50LCBuZXh0UG9pbnQsIGVuZEtleVBvaW50XSkpIHtcbiAgICAgICAgICAgICAgICBpbmRleCA9IE1hdGgubWF4KGkgLSAxLCAwKTtcbiAgICAgICAgICAgICAgICBkZWxldGVDb3VudCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGluZGV4ID09PSBudWxsKSB7XG4gICAgICAgIGRlbGV0ZUNvdW50ID0gMDtcbiAgICAgICAgaWYgKG1pZERhdGFQb2ludHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlUmVmUGFpciA9IGdldExpbmVIYW5kbGVSZWZQYWlyKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IGdldEVsYm93TGluZVJvdXRlT3B0aW9ucyhib2FyZCwgZWxlbWVudCwgaGFuZGxlUmVmUGFpcik7XG4gICAgICAgICAgICBjb25zdCBrZXlQb2ludHMgPSByZW1vdmVEdXBsaWNhdGVQb2ludHMoZ2VuZXJhdGVFbGJvd0xpbmVSb3V0ZShwYXJhbXMpKTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRLZXlQb2ludHMgPSBzaW1wbGlmeU9ydGhvZ29uYWxQb2ludHMoa2V5UG9pbnRzLnNsaWNlKDEsIGtleVBvaW50cy5sZW5ndGggLSAxKSk7XG4gICAgICAgICAgICBjb25zdCBuZXh0RGF0YVBvaW50cyA9IFtuZXh0UmVuZGVyUG9pbnRzWzBdLCAuLi5taWREYXRhUG9pbnRzLCBuZXh0UmVuZGVyUG9pbnRzW25leHRSZW5kZXJQb2ludHMubGVuZ3RoIC0gMV1dO1xuICAgICAgICAgICAgY29uc3QgbWlycm9yRGF0YVBvaW50cyA9IGdldE1pcnJvckRhdGFQb2ludHMoYm9hcmQsIG5leHREYXRhUG9pbnRzLCBuZXh0S2V5UG9pbnRzLCBwYXJhbXMpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGhhbmRsZUluZGV4IC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c0luZGV4ID0gbWlycm9yRGF0YVBvaW50cy5zbGljZSgxLCAtMSkuZmluZEluZGV4KGl0ZW0gPT4gUG9pbnQuaXNFcXVhbHMoaXRlbSwgbmV4dFJlbmRlclBvaW50c1tpXSkpO1xuICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c0luZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBwcmV2aW91c0luZGV4ICsgMTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGluZGV4ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIC8vIFdoZW4gcmVuZGVyUG9pbnRzIGlzIGEgc3RyYWlnaHQgbGluZSBhbmQgZGF0YVBvaW50cyBhcmUgbm90IG9uIHRoZSBsaW5lLFxuICAgICAgICAgICAgICAgIC8vIHRoZSBkZWZhdWx0ICdkZWxldGVDb3VudCcgaXMgc2V0IHRvIG1pZERhdGFQb2ludHMubGVuZ3RoLlxuICAgICAgICAgICAgICAgIGlmIChQb2ludC5pc0FsaWduKG5leHRSZW5kZXJQb2ludHMpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gbWlkRGF0YVBvaW50cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5kZXggPSAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIGRlbGV0ZUNvdW50XG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1pcnJvckRhdGFQb2ludHMoYm9hcmQ6IFBsYWl0Qm9hcmQsIG5leHREYXRhUG9pbnRzOiBQb2ludFtdLCBuZXh0S2V5UG9pbnRzOiBQb2ludFtdLCBwYXJhbXM6IEVsYm93TGluZVJvdXRlT3B0aW9ucykge1xuICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCBuZXh0RGF0YVBvaW50cy5sZW5ndGggLSAyOyBpbmRleCsrKSB7XG4gICAgICAgIGFkanVzdEJ5Q3VzdG9tUG9pbnRTdGFydEluZGV4KGJvYXJkLCBpbmRleCwgbmV4dERhdGFQb2ludHMsIG5leHRLZXlQb2ludHMsIHBhcmFtcyk7XG4gICAgfVxuICAgIHJldHVybiBuZXh0RGF0YVBvaW50cztcbn1cblxuLyoqXG4gKiBhZGp1c3QgYmFzZWQgcGFyYWxsZWwgc2VnbWVudFxuICovXG5jb25zdCBhZGp1c3RCeUN1c3RvbVBvaW50U3RhcnRJbmRleCA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBjdXN0b21Qb2ludFN0YXJ0SW5kZXg6IG51bWJlcixcbiAgICBuZXh0RGF0YVBvaW50czogUG9pbnRbXSxcbiAgICBuZXh0S2V5UG9pbnRzOiBQb2ludFtdLFxuICAgIHBhcmFtczogRWxib3dMaW5lUm91dGVPcHRpb25zXG4pID0+IHtcbiAgICBjb25zdCBiZWZvcmVQb2ludCA9IG5leHREYXRhUG9pbnRzW2N1c3RvbVBvaW50U3RhcnRJbmRleCAtIDFdO1xuICAgIGNvbnN0IHN0YXJ0UG9pbnQgPSBuZXh0RGF0YVBvaW50c1tjdXN0b21Qb2ludFN0YXJ0SW5kZXhdO1xuICAgIGNvbnN0IGVuZFBvaW50ID0gbmV4dERhdGFQb2ludHNbY3VzdG9tUG9pbnRTdGFydEluZGV4ICsgMV07XG4gICAgY29uc3QgYWZ0ZXJQb2ludCA9IG5leHREYXRhUG9pbnRzW2N1c3RvbVBvaW50U3RhcnRJbmRleCArIDJdO1xuICAgIGNvbnN0IGJlZm9yZVNlZ21lbnQgPSBbYmVmb3JlUG9pbnQsIHN0YXJ0UG9pbnRdO1xuICAgIGNvbnN0IGFmdGVyU2VnbWVudCA9IFtlbmRQb2ludCwgYWZ0ZXJQb2ludF07XG4gICAgY29uc3QgaXNTdHJhaWdodFdpdGhCZWZvcmUgPSBQb2ludC5pc0FsaWduKGJlZm9yZVNlZ21lbnQpO1xuICAgIGNvbnN0IGlzU3RyYWlnaHRXaXRoQWZ0ZXIgPSBQb2ludC5pc0FsaWduKGFmdGVyU2VnbWVudCk7XG4gICAgbGV0IGlzQWRqdXN0U3RhcnQgPSBmYWxzZTtcbiAgICBsZXQgaXNBZGp1c3RFbmQgPSBmYWxzZTtcbiAgICBpZiAoIWlzU3RyYWlnaHRXaXRoQmVmb3JlIHx8ICFpc1N0cmFpZ2h0V2l0aEFmdGVyKSB7XG4gICAgICAgIGNvbnN0IG1pZEtleVBvaW50c1dpdGhCZWZvcmUgPSBnZXRNaWRLZXlQb2ludHMobmV4dEtleVBvaW50cywgYmVmb3JlU2VnbWVudFswXSwgYmVmb3JlU2VnbWVudFsxXSk7XG4gICAgICAgIGNvbnN0IG1pZEtleVBvaW50c1dpdGhBZnRlciA9IGdldE1pZEtleVBvaW50cyhuZXh0S2V5UG9pbnRzLCBhZnRlclNlZ21lbnRbMF0sIGFmdGVyU2VnbWVudFsxXSk7XG4gICAgICAgIGNvbnN0IGhhc01pZEtleVBvaW50cyA9IG1pZEtleVBvaW50c1dpdGhCZWZvcmUubGVuZ3RoID4gMCAmJiBtaWRLZXlQb2ludHNXaXRoQWZ0ZXIubGVuZ3RoID4gMDtcbiAgICAgICAgaXNBZGp1c3RTdGFydCA9ICFpc1N0cmFpZ2h0V2l0aEJlZm9yZSAmJiAhaGFzTWlkS2V5UG9pbnRzO1xuICAgICAgICBpc0FkanVzdEVuZCA9ICFpc1N0cmFpZ2h0V2l0aEFmdGVyICYmICFoYXNNaWRLZXlQb2ludHM7XG4gICAgfVxuICAgIGlmIChpc0FkanVzdFN0YXJ0IHx8IGlzQWRqdXN0RW5kKSB7XG4gICAgICAgIGNvbnN0IHBhcmFsbGVsU2VnbWVudCA9IFtzdGFydFBvaW50LCBlbmRQb2ludF0gYXMgW1BvaW50LCBQb2ludF07XG4gICAgICAgIGNvbnN0IHBhcmFsbGVsU2VnbWVudHMgPSBmaW5kT3J0aG9nb25hbFBhcmFsbGVsU2VnbWVudHMocGFyYWxsZWxTZWdtZW50LCBuZXh0S2V5UG9pbnRzKTtcbiAgICAgICAgY29uc3QgbWlycm9yU2VnbWVudHMgPSBmaW5kTWlycm9yU2VnbWVudHMoYm9hcmQsIHBhcmFsbGVsU2VnbWVudCwgcGFyYWxsZWxTZWdtZW50cywgcGFyYW1zLnNvdXJjZVJlY3RhbmdsZSwgcGFyYW1zLnRhcmdldFJlY3RhbmdsZSk7XG4gICAgICAgIGlmIChtaXJyb3JTZWdtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG1pcnJvclNlZ21lbnQgPSBtaXJyb3JTZWdtZW50c1swXTtcbiAgICAgICAgICAgIGlmIChpc0FkanVzdFN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgbmV4dERhdGFQb2ludHMuc3BsaWNlKGN1c3RvbVBvaW50U3RhcnRJbmRleCwgMSwgbWlycm9yU2VnbWVudFswXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNBZGp1c3RFbmQpIHtcbiAgICAgICAgICAgICAgICBuZXh0RGF0YVBvaW50cy5zcGxpY2UoY3VzdG9tUG9pbnRTdGFydEluZGV4ICsgMSwgMSwgbWlycm9yU2VnbWVudFsxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpc0hvcml6b250YWwgPSBQb2ludC5pc0hvcml6b250YWwoc3RhcnRQb2ludCwgZW5kUG9pbnQpO1xuICAgICAgICAgICAgY29uc3QgYWRqdXN0SW5kZXggPSBpc0hvcml6b250YWwgPyAwIDogMTtcbiAgICAgICAgICAgIGlmIChpc0FkanVzdFN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3U3RhcnRQb2ludCA9IFtzdGFydFBvaW50WzBdLCBzdGFydFBvaW50WzFdXSBhcyBQb2ludDtcbiAgICAgICAgICAgICAgICBuZXdTdGFydFBvaW50W2FkanVzdEluZGV4XSA9IGJlZm9yZVBvaW50W2FkanVzdEluZGV4XTtcbiAgICAgICAgICAgICAgICBuZXh0RGF0YVBvaW50cy5zcGxpY2UoY3VzdG9tUG9pbnRTdGFydEluZGV4LCAxLCBuZXdTdGFydFBvaW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0FkanVzdEVuZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0VuZFBvaW50ID0gW2VuZFBvaW50WzBdLCBlbmRQb2ludFsxXV0gYXMgUG9pbnQ7XG4gICAgICAgICAgICAgICAgbmV3RW5kUG9pbnRbYWRqdXN0SW5kZXhdID0gYWZ0ZXJQb2ludFthZGp1c3RJbmRleF07XG4gICAgICAgICAgICAgICAgbmV4dERhdGFQb2ludHMuc3BsaWNlKGN1c3RvbVBvaW50U3RhcnRJbmRleCArIDEsIDEsIG5ld0VuZFBvaW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1VwZGF0ZWRIYW5kbGVJbmRleChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBlbGVtZW50OiBQbGFpdExpbmUsXG4gICAgZGF0YVBvaW50czogUG9pbnRbXSxcbiAgICBuZXh0UmVuZGVyUG9pbnRzOiBQb2ludFtdLFxuICAgIGhhbmRsZUluZGV4OiBudW1iZXJcbikge1xuICAgIGNvbnN0IHsgZGVsZXRlQ291bnQgfSA9IGdldEluZGV4QW5kRGVsZXRlQ291bnRCeUtleVBvaW50KGJvYXJkLCBlbGVtZW50LCBkYXRhUG9pbnRzLCBuZXh0UmVuZGVyUG9pbnRzLCBoYW5kbGVJbmRleCk7XG4gICAgaWYgKGRlbGV0ZUNvdW50ICE9PSBudWxsICYmIGRlbGV0ZUNvdW50ID4gMSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWlkS2V5UG9pbnRzKHNpbXBsaWZpZWROZXh0S2V5UG9pbnRzOiBQb2ludFtdLCBzdGFydFBvaW50OiBQb2ludCwgZW5kUG9pbnQ6IFBvaW50KSB7XG4gICAgbGV0IG1pZEVsYm93UG9pbnRzOiBQb2ludFtdID0gW107XG4gICAgbGV0IHN0YXJ0UG9pbnRJbmRleCA9IC0xO1xuICAgIGxldCBlbmRQb2ludEluZGV4ID0gLTE7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaW1wbGlmaWVkTmV4dEtleVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoUG9pbnQuaXNBbGlnbihbc2ltcGxpZmllZE5leHRLZXlQb2ludHNbaV0sIHN0YXJ0UG9pbnRdKSkge1xuICAgICAgICAgICAgc3RhcnRQb2ludEluZGV4ID0gaTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnRQb2ludEluZGV4ID4gLTEgJiYgUG9pbnQuaXNBbGlnbihbc2ltcGxpZmllZE5leHRLZXlQb2ludHNbaV0sIGVuZFBvaW50XSkpIHtcbiAgICAgICAgICAgIGVuZFBvaW50SW5kZXggPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0YXJ0UG9pbnRJbmRleCA+IC0xICYmIGVuZFBvaW50SW5kZXggPiAtMSkge1xuICAgICAgICBtaWRFbGJvd1BvaW50cyA9IHNpbXBsaWZpZWROZXh0S2V5UG9pbnRzLnNsaWNlKHN0YXJ0UG9pbnRJbmRleCwgZW5kUG9pbnRJbmRleCArIDEpO1xuICAgIH1cbiAgICByZXR1cm4gbWlkRWxib3dQb2ludHM7XG59XG5cbmZ1bmN0aW9uIGZpbmRPcnRob2dvbmFsUGFyYWxsZWxTZWdtZW50cyhzZWdtZW50OiBbUG9pbnQsIFBvaW50XSwga2V5UG9pbnRzOiBQb2ludFtdKTogW1BvaW50LCBQb2ludF1bXSB7XG4gICAgY29uc3QgaXNIb3Jpem9udGFsU2VnbWVudCA9IFBvaW50LmlzSG9yaXpvbnRhbChzZWdtZW50WzBdLCBzZWdtZW50WzFdKTtcbiAgICBjb25zdCBwYXJhbGxlbFNlZ21lbnRzOiBbUG9pbnQsIFBvaW50XVtdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleVBvaW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGtleVBvaW50c1tpXTtcbiAgICAgICAgY29uc3QgbmV4dCA9IGtleVBvaW50c1tpICsgMV07XG4gICAgICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IFBvaW50LmlzSG9yaXpvbnRhbChjdXJyZW50LCBuZXh0LCAwLjEpO1xuICAgICAgICBpZiAoaXNIb3Jpem9udGFsU2VnbWVudCAmJiBpc0hvcml6b250YWwpIHtcbiAgICAgICAgICAgIHBhcmFsbGVsU2VnbWVudHMucHVzaChbY3VycmVudCwgbmV4dF0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNIb3Jpem9udGFsU2VnbWVudCAmJiAhaXNIb3Jpem9udGFsKSB7XG4gICAgICAgICAgICBwYXJhbGxlbFNlZ21lbnRzLnB1c2goW2N1cnJlbnQsIG5leHRdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwYXJhbGxlbFNlZ21lbnRzO1xufVxuXG5mdW5jdGlvbiBmaW5kTWlycm9yU2VnbWVudHMoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgc2VnbWVudDogW1BvaW50LCBQb2ludF0sXG4gICAgcGFyYWxsZWxTZWdtZW50czogW1BvaW50LCBQb2ludF1bXSxcbiAgICBzb3VyY2VSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCxcbiAgICB0YXJnZXRSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudFxuKSB7XG4gICAgY29uc3QgbWlycm9yU2VnbWVudHM6IFtQb2ludCwgUG9pbnRdW10gPSBbXTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcGFyYWxsZWxTZWdtZW50cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgY29uc3QgcGFyYWxsZWxQYXRoID0gcGFyYWxsZWxTZWdtZW50c1tpbmRleF07XG4gICAgICAgIGNvbnN0IHN0YXJ0UG9pbnQgPSBbc2VnbWVudFswXVswXSwgc2VnbWVudFswXVsxXV0gYXMgUG9pbnQ7XG4gICAgICAgIGNvbnN0IGVuZFBvaW50ID0gW3NlZ21lbnRbMV1bMF0sIHNlZ21lbnRbMV1bMV1dIGFzIFBvaW50O1xuICAgICAgICBjb25zdCBpc0hvcml6b250YWwgPSBQb2ludC5pc0hvcml6b250YWwoc3RhcnRQb2ludCwgZW5kUG9pbnQpO1xuICAgICAgICBjb25zdCBhZGp1c3REYXRhSW5kZXggPSBpc0hvcml6b250YWwgPyAwIDogMTtcbiAgICAgICAgc3RhcnRQb2ludFthZGp1c3REYXRhSW5kZXhdID0gcGFyYWxsZWxQYXRoWzBdW2FkanVzdERhdGFJbmRleF07XG4gICAgICAgIGVuZFBvaW50W2FkanVzdERhdGFJbmRleF0gPSBwYXJhbGxlbFBhdGhbMV1bYWRqdXN0RGF0YUluZGV4XTtcbiAgICAgICAgY29uc3QgZmFrZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbc3RhcnRQb2ludCwgZW5kUG9pbnQsIC4uLnBhcmFsbGVsUGF0aF0pO1xuICAgICAgICBjb25zdCBpc1ZhbGlkID0gIVJlY3RhbmdsZUNsaWVudC5pc0hpdChmYWtlUmVjdGFuZ2xlLCBzb3VyY2VSZWN0YW5nbGUpICYmICFSZWN0YW5nbGVDbGllbnQuaXNIaXQoZmFrZVJlY3RhbmdsZSwgdGFyZ2V0UmVjdGFuZ2xlKTtcbiAgICAgICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgICAgICAgIG1pcnJvclNlZ21lbnRzLnB1c2goW3N0YXJ0UG9pbnQsIGVuZFBvaW50XSk7XG4gICAgICAgICAgICAvLyBjb25zdCBmYWtlUmVjdGFuZ2xlRyA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLnJlY3RhbmdsZShcbiAgICAgICAgICAgIC8vICAgICBmYWtlUmVjdGFuZ2xlLngsXG4gICAgICAgICAgICAvLyAgICAgZmFrZVJlY3RhbmdsZS55LFxuICAgICAgICAgICAgLy8gICAgIGZha2VSZWN0YW5nbGUud2lkdGgsXG4gICAgICAgICAgICAvLyAgICAgZmFrZVJlY3RhbmdsZS5oZWlnaHQsXG4gICAgICAgICAgICAvLyAgICAgeyBzdHJva2U6ICdibHVlJyB9XG4gICAgICAgICAgICAvLyApO1xuICAgICAgICAgICAgLy8gUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZCkuYXBwZW5kKGZha2VSZWN0YW5nbGVHKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWlycm9yU2VnbWVudHM7XG59XG5cbmV4cG9ydCBjb25zdCBoYXNJbGxlZ2FsRWxib3dQb2ludCA9IChtaWREYXRhUG9pbnRzOiBQb2ludFtdKTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKG1pZERhdGFQb2ludHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gbWlkRGF0YVBvaW50cy5zb21lKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBiZWZvcmVQb2ludCA9IG1pZERhdGFQb2ludHNbaW5kZXggLSAxXTtcbiAgICAgICAgY29uc3QgYWZ0ZXJQb2ludCA9IG1pZERhdGFQb2ludHNbaW5kZXggKyAxXTtcbiAgICAgICAgY29uc3QgYmVmb3JlU2VnbWVudCA9IGJlZm9yZVBvaW50ICYmIFtiZWZvcmVQb2ludCwgaXRlbV07XG4gICAgICAgIGNvbnN0IGFmdGVyU2VnbWVudCA9IGFmdGVyUG9pbnQgJiYgW2l0ZW0sIGFmdGVyUG9pbnRdO1xuICAgICAgICBjb25zdCBpc1N0cmFpZ2h0V2l0aEJlZm9yZSA9IGJlZm9yZVNlZ21lbnQgJiYgUG9pbnQuaXNBbGlnbihiZWZvcmVTZWdtZW50KTtcbiAgICAgICAgY29uc3QgaXNTdHJhaWdodFdpdGhBZnRlciA9IGFmdGVyU2VnbWVudCAmJiBQb2ludC5pc0FsaWduKGFmdGVyU2VnbWVudCk7XG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuICFpc1N0cmFpZ2h0V2l0aEFmdGVyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA9PT0gbWlkRGF0YVBvaW50cy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gIWlzU3RyYWlnaHRXaXRoQmVmb3JlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhaXNTdHJhaWdodFdpdGhCZWZvcmUgJiYgIWlzU3RyYWlnaHRXaXRoQWZ0ZXI7XG4gICAgfSk7XG59O1xuIl19
|
|
313
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1yZXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9saW5lL2xpbmUtcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBc0Msc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUksT0FBTyxFQUFjLEtBQUssRUFBRSxlQUFlLEVBQWMsTUFBTSxhQUFhLENBQUM7QUFDN0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9FLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLFNBQWdCLEVBQUUsV0FBa0IsRUFBRSxFQUFFO0lBQ2hFLE1BQU0sUUFBUSxHQUFVLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQztJQUN6QyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7UUFDOUQsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLENBQUMsRUFBRSxDQUFDO1FBQ2hFLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ3BCLENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSw4QkFBOEIsQ0FBQyxnQkFBeUIsRUFBRSxXQUFrQixFQUFFLFdBQWtCLEVBQUUsV0FBbUI7SUFDakksTUFBTSxjQUFjLEdBQW1EO1FBQ25FLFFBQVEsRUFBRSxJQUFJ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YSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxPQUFPLENBQUMsb0JBQW9CLENBQUM7UUFDakMsQ0FBQztRQUNELE9BQU8sQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3pELENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxib3dMaW5lUm91dGVPcHRpb25zLCBSZXNpemVTdGF0ZSwgZ2VuZXJhdGVFbGJvd0xpbmVSb3V0ZSwgcmVtb3ZlRHVwbGljYXRlUG9pbnRzLCBzaW1wbGlmeU9ydGhvZ29uYWxQb2ludHMgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQsIGRyYXdDaXJjbGUgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBMSU5FX0FMSUdOX1RPTEVSQU5DRSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9saW5lJztcbmltcG9ydCB7IGdldEVsYm93TGluZVJvdXRlT3B0aW9ucywgZ2V0TGluZUhhbmRsZVJlZlBhaXIgfSBmcm9tICcuL2xpbmUtY29tbW9uJztcbmltcG9ydCB7IFBsYWl0TGluZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgY29uc3QgYWxpZ25Qb2ludHMgPSAoYmFzZVBvaW50OiBQb2ludCwgbW92aW5nUG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgY29uc3QgbmV3UG9pbnQ6IFBvaW50ID0gWy4uLm1vdmluZ1BvaW50XTtcbiAgICBpZiAoUG9pbnQuaXNWZXJ0aWNhbChuZXdQb2ludCwgYmFzZVBvaW50LCBMSU5FX0FMSUdOX1RPTEVSQU5DRSkpIHtcbiAgICAgICAgbmV3UG9pbnRbMF0gPSBiYXNlUG9pbnRbMF07XG4gICAgfVxuICAgIGlmIChQb2ludC5pc0hvcml6b250YWwobmV3UG9pbnQsIGJhc2VQb2ludCwgTElORV9BTElHTl9UT0xFUkFOQ0UpKSB7XG4gICAgICAgIG5ld1BvaW50WzFdID0gYmFzZVBvaW50WzFdO1xuICAgIH1cbiAgICByZXR1cm4gbmV3UG9pbnQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzaXplZFByZXZpb3VzQW5kTmV4dFBvaW50KG5leHRSZW5kZXJQb2ludHM6IFBvaW50W10sIHNvdXJjZVBvaW50OiBQb2ludCwgdGFyZ2V0UG9pbnQ6IFBvaW50LCBoYW5kbGVJbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgcmVmZXJlbmNlUG9pbnQ6IHsgcHJldmlvdXM6IFBvaW50IHwgbnVsbDsgbmV4dDogUG9pbnQgfCBudWxsIH0gPSB7XG4gICAgICAgIHByZXZpb3VzOiBudWxsLFxuICAgICAgICBuZXh0OiBudWxsXG4gICAgfTtcblxuICAgIGNvbnN0IHN0YXJ0UG9pbnQgPSBuZXh0UmVuZGVyUG9pbnRzW2hhbmRsZUluZGV4XTtcbiAgICBjb25zdCBlbmRQb2ludCA9IG5leHRSZW5kZXJQb2ludHNbaGFuZGxlSW5kZXggKyAxXTtcbiAgICBjb25zdCBpc0hvcml6b250YWwgPSBQb2ludC5pc0hvcml6b250YWwoc3RhcnRQb2ludCwgZW5kUG9pbnQpO1xuICAgIGNvbnN0IGlzVmVydGljYWwgPSBQb2ludC5pc1ZlcnRpY2FsKHN0YXJ0UG9pbnQsIGVuZFBvaW50KTtcbiAgICBjb25zdCBwcmV2aW91c1BvaW50ID0gbmV4dFJlbmRlclBvaW50c1toYW5kbGVJbmRleCAtIDFdID8/IG5leHRSZW5kZXJQb2ludHNbMF07XG4gICAgY29uc3QgYmVmb3JlUHJldmlvdXNQb2ludCA9IG5leHRSZW5kZXJQb2ludHNbaGFuZGxlSW5kZXggLSAyXSA/PyBzb3VyY2VQb2ludDtcbiAgICBpZiAoXG4gICAgICAgIChpc0hvcml6b250YWwgJiYgUG9pbnQuaXNIb3Jpem9udGFsKGJlZm9yZVByZXZpb3VzUG9pbnQsIHByZXZpb3VzUG9pbnQpKSB8fFxuICAgICAgICAoaXNWZXJ0aWNhbCAmJiBQb2ludC5pc1ZlcnRpY2FsKGJlZm9yZVByZXZpb3VzUG9pbnQsIHByZXZpb3VzUG9pbnQpKVxuICAgICkge1xuICAgICAgICByZWZlcmVuY2VQb2ludC5wcmV2aW91cyA9IHByZXZpb3VzUG9pbnQ7XG4gICAgfVxuXG4gICAgY29uc3QgbmV4dFBvaW50ID0gbmV4dFJlbmRlclBvaW50c1toYW5kbGVJbmRleCArIDJdID8/IG5leHRSZW5kZXJQb2ludHNbbmV4dFJlbmRlclBvaW50cy5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBhZnRlck5leHRQb2ludCA9IG5leHRSZW5kZXJQb2ludHNbaGFuZGxlSW5kZXggKyAzXSA/PyB0YXJnZXRQb2ludDtcbiAgICBpZiAoKGlzSG9yaXpvbnRhbCAmJiBQb2ludC5pc0hvcml6b250YWwobmV4dFBvaW50LCBhZnRlck5leHRQb2ludCkpIHx8IChpc1ZlcnRpY2FsICYmIFBvaW50LmlzVmVydGljYWwobmV4dFBvaW50LCBhZnRlck5leHRQb2ludCkpKSB7XG4gICAgICAgIHJlZmVyZW5jZVBvaW50Lm5leHQgPSBuZXh0UG9pbnQ7XG4gICAgfVxuICAgIHJldHVybiByZWZlcmVuY2VQb2ludDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsaWduRWxib3dTZWdtZW50KFxuICAgIHN0YXJ0S2V5UG9pbnQ6IFBvaW50LFxuICAgIGVuZEtleVBvaW50OiBQb2ludCxcbiAgICByZXNpemVTdGF0ZTogUmVzaXplU3RhdGUsXG4gICAgcmVzaXplZFByZXZpb3VzQW5kTmV4dFBvaW50OiB7IHByZXZpb3VzOiBQb2ludCB8IG51bGw7IG5leHQ6IFBvaW50IHwgbnVsbCB9XG4pIHtcbiAgICBsZXQgbmV3U3RhcnRQb2ludCA9IHN0YXJ0S2V5UG9pbnQ7XG4gICAgbGV0IG5ld0VuZFBvaW50ID0gZW5kS2V5UG9pbnQ7XG4gICAgaWYgKFBvaW50LmlzSG9yaXpvbnRhbChzdGFydEtleVBvaW50LCBlbmRLZXlQb2ludCkpIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0WSA9IFBvaW50LmdldE9mZnNldFkocmVzaXplU3RhdGUuc3RhcnRQb2ludCwgcmVzaXplU3RhdGUuZW5kUG9pbnQpO1xuICAgICAgICBsZXQgcG9pbnRZID0gc3RhcnRLZXlQb2ludFsxXSArIG9mZnNldFk7XG4gICAgICAgIGlmIChyZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQucHJldmlvdXMgJiYgTWF0aC5hYnMocmVzaXplZFByZXZpb3VzQW5kTmV4dFBvaW50LnByZXZpb3VzWzFdIC0gcG9pbnRZKSA8IExJTkVfQUxJR05fVE9MRVJBTkNFKSB7XG4gICAgICAgICAgICBwb2ludFkgPSByZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQucHJldmlvdXNbMV07XG4gICAgICAgIH0gZWxzZSBpZiAocmVzaXplZFByZXZpb3VzQW5kTmV4dFBvaW50Lm5leHQgJiYgTWF0aC5hYnMocmVzaXplZFByZXZpb3VzQW5kTmV4dFBvaW50Lm5leHRbMV0gLSBwb2ludFkpIDwgTElORV9BTElHTl9UT0xFUkFOQ0UpIHtcbiAgICAgICAgICAgIHBvaW50WSA9IHJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludC5uZXh0WzFdO1xuICAgICAgICB9XG4gICAgICAgIG5ld1N0YXJ0UG9pbnQgPSBbc3RhcnRLZXlQb2ludFswXSwgcG9pbnRZXTtcbiAgICAgICAgbmV3RW5kUG9pbnQgPSBbZW5kS2V5UG9pbnRbMF0sIHBvaW50WV07XG4gICAgfVxuICAgIGlmIChQb2ludC5pc1ZlcnRpY2FsKHN0YXJ0S2V5UG9pbnQsIGVuZEtleVBvaW50KSkge1xuICAgICAgICBjb25zdCBvZmZzZXRYID0gUG9pbnQuZ2V0T2Zmc2V0WChyZXNpemVTdGF0ZS5zdGFydFBvaW50LCByZXNpemVTdGF0ZS5lbmRQb2ludCk7XG4gICAgICAgIGxldCBwb2ludFggPSBzdGFydEtleVBvaW50WzBdICsgb2Zmc2V0WDtcbiAgICAgICAgaWYgKHJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludC5wcmV2aW91cyAmJiBNYXRoLmFicyhyZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQucHJldmlvdXNbMF0gLSBwb2ludFgpIDwgTElORV9BTElHTl9UT0xFUkFOQ0UpIHtcbiAgICAgICAgICAgIHBvaW50WCA9IHJlc2l6ZWRQcmV2aW91c0FuZE5leHRQb2ludC5wcmV2aW91c1swXTtcbiAgICAgICAgfSBlbHNlIGlmIChyZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQubmV4dCAmJiBNYXRoLmFicyhyZXNpemVkUHJldmlvdXNBbmROZXh0UG9pbnQubmV4dFswXSAtIHBvaW50WCkgPCBMSU5FX0FMSUdOX1RPTEVSQU5DRSkge1xuICAgICAgICAgICAgcG9pbnRYID0gcmVzaXplZFByZXZpb3VzQW5kTmV4dFBvaW50Lm5leHRbMF07XG4gICAgICAgIH1cbiAgICAgICAgbmV3U3RhcnRQb2ludCA9IFtwb2ludFgsIHN0YXJ0S2V5UG9pbnRbMV1dO1xuICAgICAgICBuZXdFbmRQb2ludCA9IFtwb2ludFgsIGVuZEtleVBvaW50WzFdXTtcbiAgICB9XG4gICAgcmV0dXJuIFtuZXdTdGFydFBvaW50LCBuZXdFbmRQb2ludF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbmRleEFuZERlbGV0ZUNvdW50QnlLZXlQb2ludChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBlbGVtZW50OiBQbGFpdExpbmUsXG4gICAgZGF0YVBvaW50czogUG9pbnRbXSxcbiAgICBuZXh0UmVuZGVyUG9pbnRzOiBQb2ludFtdLFxuICAgIGhhbmRsZUluZGV4OiBudW1iZXJcbikge1xuICAgIGxldCBpbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGRlbGV0ZUNvdW50OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0IHN0YXJ0S2V5UG9pbnQgPSBuZXh0UmVuZGVyUG9pbnRzW2hhbmRsZUluZGV4XTtcbiAgICBjb25zdCBlbmRLZXlQb2ludCA9IG5leHRSZW5kZXJQb2ludHNbaGFuZGxlSW5kZXggKyAxXTtcbiAgICBpZiAoIXN0YXJ0S2V5UG9pbnQgfHwgIWVuZEtleVBvaW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIGRlbGV0ZUNvdW50XG4gICAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IG1pZERhdGFQb2ludHMgPSBkYXRhUG9pbnRzLnNsaWNlKDEsIC0xKTtcbiAgICBjb25zdCBzdGFydEluZGV4ID0gbWlkRGF0YVBvaW50cy5maW5kSW5kZXgoaXRlbSA9PiBQb2ludC5pc0VxdWFscyhpdGVtLCBzdGFydEtleVBvaW50KSk7XG4gICAgY29uc3QgZW5kSW5kZXggPSBtaWREYXRhUG9pbnRzLmZpbmRJbmRleChpdGVtID0+IFBvaW50LmlzRXF1YWxzKGl0ZW0sIGVuZEtleVBvaW50KSk7XG5cbiAgICBpZiAoTWF0aC5tYXgoc3RhcnRJbmRleCwgZW5kSW5kZXgpID4gLTEpIHtcbiAgICAgICAgaWYgKHN0YXJ0SW5kZXggPiAtMSAmJiBlbmRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGluZGV4OiBzdGFydEluZGV4LFxuICAgICAgICAgICAgICAgIGRlbGV0ZUNvdW50OiAyXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydEluZGV4ID4gLTEgJiYgZW5kSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICBjb25zdCBpc1JlcGxhY2UgPVxuICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPCBtaWREYXRhUG9pbnRzLmxlbmd0aCAtIDEgJiZcbiAgICAgICAgICAgICAgICBQb2ludC5pc0FsaWduKFttaWREYXRhUG9pbnRzW3N0YXJ0SW5kZXhdLCBtaWREYXRhUG9pbnRzW3N0YXJ0SW5kZXggKyAxXSwgc3RhcnRLZXlQb2ludCwgZW5kS2V5UG9pbnRdKTtcbiAgICAgICAgICAgIGlmIChpc1JlcGxhY2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBpbmRleDogc3RhcnRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlQ291bnQ6IDJcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpbmRleDogc3RhcnRJbmRleCxcbiAgICAgICAgICAgICAgICBkZWxldGVDb3VudDogMVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnRJbmRleCA9PT0gLTEgJiYgZW5kSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgY29uc3QgaXNSZXBsYWNlID1cbiAgICAgICAgICAgICAgICBlbmRJbmRleCA+IDAgJiYgUG9pbnQuaXNBbGlnbihbbWlkRGF0YVBvaW50c1tlbmRJbmRleF0sIG1pZERhdGFQb2ludHNbZW5kSW5kZXggLSAxXSwgc3RhcnRLZXlQb2ludCwgZW5kS2V5UG9pbnRdKTtcbiAgICAgICAgICAgIGlmIChpc1JlcGxhY2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBpbmRleDogZW5kSW5kZXggLSAxLFxuICAgICAgICAgICAgICAgICAgICBkZWxldGVDb3VudDogMlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGluZGV4OiBlbmRJbmRleCxcbiAgICAgICAgICAgICAgICBkZWxldGVDb3VudDogMVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWlkRGF0YVBvaW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQb2ludCA9IG1pZERhdGFQb2ludHNbaV07XG4gICAgICAgICAgICBjb25zdCBuZXh0UG9pbnQgPSBtaWREYXRhUG9pbnRzW2kgKyAxXTtcbiAgICAgICAgICAgIGlmIChQb2ludC5pc0FsaWduKFtjdXJyZW50UG9pbnQsIG5leHRQb2ludCwgc3RhcnRLZXlQb2ludCwgZW5kS2V5UG9pbnRdKSkge1xuICAgICAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICBkZWxldGVDb3VudCA9IDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoUG9pbnQuaXNBbGlnbihbY3VycmVudFBvaW50LCBuZXh0UG9pbnQsIHN0YXJ0S2V5UG9pbnRdKSkge1xuICAgICAgICAgICAgICAgIGluZGV4ID0gTWF0aC5taW4oaSArIDEsIG1pZERhdGFQb2ludHMubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFBvaW50LmlzQWxpZ24oW2N1cnJlbnRQb2ludCwgbmV4dFBvaW50LCBlbmRLZXlQb2ludF0pKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBNYXRoLm1heChpIC0gMSwgMCk7XG4gICAgICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChpbmRleCA9PT0gbnVsbCkge1xuICAgICAgICBkZWxldGVDb3VudCA9IDA7XG4gICAgICAgIGlmIChtaWREYXRhUG9pbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZVJlZlBhaXIgPSBnZXRMaW5lSGFuZGxlUmVmUGFpcihib2FyZCwgZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBnZXRFbGJvd0xpbmVSb3V0ZU9wdGlvbnMoYm9hcmQsIGVsZW1lbnQsIGhhbmRsZVJlZlBhaXIpO1xuICAgICAgICAgICAgY29uc3Qga2V5UG9pbnRzID0gcmVtb3ZlRHVwbGljYXRlUG9pbnRzKGdlbmVyYXRlRWxib3dMaW5lUm91dGUocGFyYW1zKSk7XG4gICAgICAgICAgICBjb25zdCBuZXh0S2V5UG9pbnRzID0gc2ltcGxpZnlPcnRob2dvbmFsUG9pbnRzKGtleVBvaW50cy5zbGljZSgxLCBrZXlQb2ludHMubGVuZ3RoIC0gMSkpO1xuICAgICAgICAgICAgY29uc3QgbmV4dERhdGFQb2ludHMgPSBbbmV4dFJlbmRlclBvaW50c1swXSwgLi4ubWlkRGF0YVBvaW50cywgbmV4dFJlbmRlclBvaW50c1tuZXh0UmVuZGVyUG9pbnRzLmxlbmd0aCAtIDFdXTtcbiAgICAgICAgICAgIGNvbnN0IG1pcnJvckRhdGFQb2ludHMgPSBnZXRNaXJyb3JEYXRhUG9pbnRzKGJvYXJkLCBuZXh0RGF0YVBvaW50cywgbmV4dEtleVBvaW50cywgcGFyYW1zKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBoYW5kbGVJbmRleCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNJbmRleCA9IG1pcnJvckRhdGFQb2ludHMuc2xpY2UoMSwgLTEpLmZpbmRJbmRleChpdGVtID0+IFBvaW50LmlzRXF1YWxzKGl0ZW0sIG5leHRSZW5kZXJQb2ludHNbaV0pKTtcbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcHJldmlvdXNJbmRleCArIDE7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAvLyBXaGVuIHJlbmRlclBvaW50cyBpcyBhIHN0cmFpZ2h0IGxpbmUgYW5kIGRhdGFQb2ludHMgYXJlIG5vdCBvbiB0aGUgbGluZSxcbiAgICAgICAgICAgICAgICAvLyB0aGUgZGVmYXVsdCAnZGVsZXRlQ291bnQnIGlzIHNldCB0byBtaWREYXRhUG9pbnRzLmxlbmd0aC5cbiAgICAgICAgICAgICAgICBpZiAoUG9pbnQuaXNBbGlnbihuZXh0UmVuZGVyUG9pbnRzKSkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGVDb3VudCA9IG1pZERhdGFQb2ludHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGluZGV4ID0gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGluZGV4LFxuICAgICAgICBkZWxldGVDb3VudFxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNaXJyb3JEYXRhUG9pbnRzKGJvYXJkOiBQbGFpdEJvYXJkLCBuZXh0RGF0YVBvaW50czogUG9pbnRbXSwgbmV4dEtleVBvaW50czogUG9pbnRbXSwgcGFyYW1zOiBFbGJvd0xpbmVSb3V0ZU9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpbmRleCA9IDE7IGluZGV4IDwgbmV4dERhdGFQb2ludHMubGVuZ3RoIC0gMjsgaW5kZXgrKykge1xuICAgICAgICBhZGp1c3RCeUN1c3RvbVBvaW50U3RhcnRJbmRleChib2FyZCwgaW5kZXgsIG5leHREYXRhUG9pbnRzLCBuZXh0S2V5UG9pbnRzLCBwYXJhbXMpO1xuICAgIH1cbiAgICByZXR1cm4gbmV4dERhdGFQb2ludHM7XG59XG5cbi8qKlxuICogYWRqdXN0IGJhc2VkIHBhcmFsbGVsIHNlZ21lbnRcbiAqL1xuY29uc3QgYWRqdXN0QnlDdXN0b21Qb2ludFN0YXJ0SW5kZXggPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgY3VzdG9tUG9pbnRTdGFydEluZGV4OiBudW1iZXIsXG4gICAgbmV4dERhdGFQb2ludHM6IFBvaW50W10sXG4gICAgbmV4dEtleVBvaW50czogUG9pbnRbXSxcbiAgICBwYXJhbXM6IEVsYm93TGluZVJvdXRlT3B0aW9uc1xuKSA9PiB7XG4gICAgY29uc3QgYmVmb3JlUG9pbnQgPSBuZXh0RGF0YVBvaW50c1tjdXN0b21Qb2ludFN0YXJ0SW5kZXggLSAxXTtcbiAgICBjb25zdCBzdGFydFBvaW50ID0gbmV4dERhdGFQb2ludHNbY3VzdG9tUG9pbnRTdGFydEluZGV4XTtcbiAgICBjb25zdCBlbmRQb2ludCA9IG5leHREYXRhUG9pbnRzW2N1c3RvbVBvaW50U3RhcnRJbmRleCArIDFdO1xuICAgIGNvbnN0IGFmdGVyUG9pbnQgPSBuZXh0RGF0YVBvaW50c1tjdXN0b21Qb2ludFN0YXJ0SW5kZXggKyAyXTtcbiAgICBjb25zdCBiZWZvcmVTZWdtZW50ID0gW2JlZm9yZVBvaW50LCBzdGFydFBvaW50XTtcbiAgICBjb25zdCBhZnRlclNlZ21lbnQgPSBbZW5kUG9pbnQsIGFmdGVyUG9pbnRdO1xuICAgIGNvbnN0IGlzU3RyYWlnaHRXaXRoQmVmb3JlID0gUG9pbnQuaXNBbGlnbihiZWZvcmVTZWdtZW50KTtcbiAgICBjb25zdCBpc1N0cmFpZ2h0V2l0aEFmdGVyID0gUG9pbnQuaXNBbGlnbihhZnRlclNlZ21lbnQpO1xuICAgIGxldCBpc0FkanVzdFN0YXJ0ID0gZmFsc2U7XG4gICAgbGV0IGlzQWRqdXN0RW5kID0gZmFsc2U7XG4gICAgaWYgKCFpc1N0cmFpZ2h0V2l0aEJlZm9yZSB8fCAhaXNTdHJhaWdodFdpdGhBZnRlcikge1xuICAgICAgICBjb25zdCBtaWRLZXlQb2ludHNXaXRoQmVmb3JlID0gZ2V0TWlkS2V5UG9pbnRzKG5leHRLZXlQb2ludHMsIGJlZm9yZVNlZ21lbnRbMF0sIGJlZm9yZVNlZ21lbnRbMV0pO1xuICAgICAgICBjb25zdCBtaWRLZXlQb2ludHNXaXRoQWZ0ZXIgPSBnZXRNaWRLZXlQb2ludHMobmV4dEtleVBvaW50cywgYWZ0ZXJTZWdtZW50WzBdLCBhZnRlclNlZ21lbnRbMV0pO1xuICAgICAgICBjb25zdCBoYXNNaWRLZXlQb2ludHMgPSBtaWRLZXlQb2ludHNXaXRoQmVmb3JlLmxlbmd0aCA+IDAgJiYgbWlkS2V5UG9pbnRzV2l0aEFmdGVyLmxlbmd0aCA+IDA7XG4gICAgICAgIGlzQWRqdXN0U3RhcnQgPSAhaXNTdHJhaWdodFdpdGhCZWZvcmUgJiYgIWhhc01pZEtleVBvaW50cztcbiAgICAgICAgaXNBZGp1c3RFbmQgPSAhaXNTdHJhaWdodFdpdGhBZnRlciAmJiAhaGFzTWlkS2V5UG9pbnRzO1xuICAgIH1cbiAgICBpZiAoaXNBZGp1c3RTdGFydCB8fCBpc0FkanVzdEVuZCkge1xuICAgICAgICBjb25zdCBwYXJhbGxlbFNlZ21lbnQgPSBbc3RhcnRQb2ludCwgZW5kUG9pbnRdIGFzIFtQb2ludCwgUG9pbnRdO1xuICAgICAgICBjb25zdCBwYXJhbGxlbFNlZ21lbnRzID0gZmluZE9ydGhvZ29uYWxQYXJhbGxlbFNlZ21lbnRzKHBhcmFsbGVsU2VnbWVudCwgbmV4dEtleVBvaW50cyk7XG4gICAgICAgIGNvbnN0IG1pcnJvclNlZ21lbnRzID0gZmluZE1pcnJvclNlZ21lbnRzKGJvYXJkLCBwYXJhbGxlbFNlZ21lbnQsIHBhcmFsbGVsU2VnbWVudHMsIHBhcmFtcy5zb3VyY2VSZWN0YW5nbGUsIHBhcmFtcy50YXJnZXRSZWN0YW5nbGUpO1xuICAgICAgICBpZiAobWlycm9yU2VnbWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBtaXJyb3JTZWdtZW50ID0gbWlycm9yU2VnbWVudHNbMF07XG4gICAgICAgICAgICBpZiAoaXNBZGp1c3RTdGFydCkge1xuICAgICAgICAgICAgICAgIG5leHREYXRhUG9pbnRzLnNwbGljZShjdXN0b21Qb2ludFN0YXJ0SW5kZXgsIDEsIG1pcnJvclNlZ21lbnRbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzQWRqdXN0RW5kKSB7XG4gICAgICAgICAgICAgICAgbmV4dERhdGFQb2ludHMuc3BsaWNlKGN1c3RvbVBvaW50U3RhcnRJbmRleCArIDEsIDEsIG1pcnJvclNlZ21lbnRbMV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaXNIb3Jpem9udGFsID0gUG9pbnQuaXNIb3Jpem9udGFsKHN0YXJ0UG9pbnQsIGVuZFBvaW50KTtcbiAgICAgICAgICAgIGNvbnN0IGFkanVzdEluZGV4ID0gaXNIb3Jpem9udGFsID8gMCA6IDE7XG4gICAgICAgICAgICBpZiAoaXNBZGp1c3RTdGFydCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1N0YXJ0UG9pbnQgPSBbc3RhcnRQb2ludFswXSwgc3RhcnRQb2ludFsxXV0gYXMgUG9pbnQ7XG4gICAgICAgICAgICAgICAgbmV3U3RhcnRQb2ludFthZGp1c3RJbmRleF0gPSBiZWZvcmVQb2ludFthZGp1c3RJbmRleF07XG4gICAgICAgICAgICAgICAgbmV4dERhdGFQb2ludHMuc3BsaWNlKGN1c3RvbVBvaW50U3RhcnRJbmRleCwgMSwgbmV3U3RhcnRQb2ludCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNBZGp1c3RFbmQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdFbmRQb2ludCA9IFtlbmRQb2ludFswXSwgZW5kUG9pbnRbMV1dIGFzIFBvaW50O1xuICAgICAgICAgICAgICAgIG5ld0VuZFBvaW50W2FkanVzdEluZGV4XSA9IGFmdGVyUG9pbnRbYWRqdXN0SW5kZXhdO1xuICAgICAgICAgICAgICAgIG5leHREYXRhUG9pbnRzLnNwbGljZShjdXN0b21Qb2ludFN0YXJ0SW5kZXggKyAxLCAxLCBuZXdFbmRQb2ludCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaXNVcGRhdGVkSGFuZGxlSW5kZXgoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgZWxlbWVudDogUGxhaXRMaW5lLFxuICAgIGRhdGFQb2ludHM6IFBvaW50W10sXG4gICAgbmV4dFJlbmRlclBvaW50czogUG9pbnRbXSxcbiAgICBoYW5kbGVJbmRleDogbnVtYmVyXG4pIHtcbiAgICBjb25zdCB7IGRlbGV0ZUNvdW50IH0gPSBnZXRJbmRleEFuZERlbGV0ZUNvdW50QnlLZXlQb2ludChib2FyZCwgZWxlbWVudCwgZGF0YVBvaW50cywgbmV4dFJlbmRlclBvaW50cywgaGFuZGxlSW5kZXgpO1xuICAgIGlmIChkZWxldGVDb3VudCAhPT0gbnVsbCAmJiBkZWxldGVDb3VudCA+IDEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1pZEtleVBvaW50cyhzaW1wbGlmaWVkTmV4dEtleVBvaW50czogUG9pbnRbXSwgc3RhcnRQb2ludDogUG9pbnQsIGVuZFBvaW50OiBQb2ludCkge1xuICAgIGxldCBtaWRFbGJvd1BvaW50czogUG9pbnRbXSA9IFtdO1xuICAgIGxldCBzdGFydFBvaW50SW5kZXggPSAtMTtcbiAgICBsZXQgZW5kUG9pbnRJbmRleCA9IC0xO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2ltcGxpZmllZE5leHRLZXlQb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKFBvaW50LmlzQWxpZ24oW3NpbXBsaWZpZWROZXh0S2V5UG9pbnRzW2ldLCBzdGFydFBvaW50XSkpIHtcbiAgICAgICAgICAgIHN0YXJ0UG9pbnRJbmRleCA9IGk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0UG9pbnRJbmRleCA+IC0xICYmIFBvaW50LmlzQWxpZ24oW3NpbXBsaWZpZWROZXh0S2V5UG9pbnRzW2ldLCBlbmRQb2ludF0pKSB7XG4gICAgICAgICAgICBlbmRQb2ludEluZGV4ID0gaTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChzdGFydFBvaW50SW5kZXggPiAtMSAmJiBlbmRQb2ludEluZGV4ID4gLTEpIHtcbiAgICAgICAgbWlkRWxib3dQb2ludHMgPSBzaW1wbGlmaWVkTmV4dEtleVBvaW50cy5zbGljZShzdGFydFBvaW50SW5kZXgsIGVuZFBvaW50SW5kZXggKyAxKTtcbiAgICB9XG4gICAgcmV0dXJuIG1pZEVsYm93UG9pbnRzO1xufVxuXG5mdW5jdGlvbiBmaW5kT3J0aG9nb25hbFBhcmFsbGVsU2VnbWVudHMoc2VnbWVudDogW1BvaW50LCBQb2ludF0sIGtleVBvaW50czogUG9pbnRbXSk6IFtQb2ludCwgUG9pbnRdW10ge1xuICAgIGNvbnN0IGlzSG9yaXpvbnRhbFNlZ21lbnQgPSBQb2ludC5pc0hvcml6b250YWwoc2VnbWVudFswXSwgc2VnbWVudFsxXSk7XG4gICAgY29uc3QgcGFyYWxsZWxTZWdtZW50czogW1BvaW50LCBQb2ludF1bXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlQb2ludHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBrZXlQb2ludHNbaV07XG4gICAgICAgIGNvbnN0IG5leHQgPSBrZXlQb2ludHNbaSArIDFdO1xuICAgICAgICBjb25zdCBpc0hvcml6b250YWwgPSBQb2ludC5pc0hvcml6b250YWwoY3VycmVudCwgbmV4dCwgMC4xKTtcbiAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFNlZ21lbnQgJiYgaXNIb3Jpem9udGFsKSB7XG4gICAgICAgICAgICBwYXJhbGxlbFNlZ21lbnRzLnB1c2goW2N1cnJlbnQsIG5leHRdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzSG9yaXpvbnRhbFNlZ21lbnQgJiYgIWlzSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgcGFyYWxsZWxTZWdtZW50cy5wdXNoKFtjdXJyZW50LCBuZXh0XSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcGFyYWxsZWxTZWdtZW50cztcbn1cblxuZnVuY3Rpb24gZmluZE1pcnJvclNlZ21lbnRzKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIHNlZ21lbnQ6IFtQb2ludCwgUG9pbnRdLFxuICAgIHBhcmFsbGVsU2VnbWVudHM6IFtQb2ludCwgUG9pbnRdW10sXG4gICAgc291cmNlUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsXG4gICAgdGFyZ2V0UmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnRcbikge1xuICAgIGNvbnN0IG1pcnJvclNlZ21lbnRzOiBbUG9pbnQsIFBvaW50XVtdID0gW107XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHBhcmFsbGVsU2VnbWVudHMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IHBhcmFsbGVsUGF0aCA9IHBhcmFsbGVsU2VnbWVudHNbaW5kZXhdO1xuICAgICAgICBjb25zdCBzdGFydFBvaW50ID0gW3NlZ21lbnRbMF1bMF0sIHNlZ21lbnRbMF1bMV1dIGFzIFBvaW50O1xuICAgICAgICBjb25zdCBlbmRQb2ludCA9IFtzZWdtZW50WzFdWzBdLCBzZWdtZW50WzFdWzFdXSBhcyBQb2ludDtcbiAgICAgICAgY29uc3QgaXNIb3Jpem9udGFsID0gUG9pbnQuaXNIb3Jpem9udGFsKHN0YXJ0UG9pbnQsIGVuZFBvaW50KTtcbiAgICAgICAgY29uc3QgYWRqdXN0RGF0YUluZGV4ID0gaXNIb3Jpem9udGFsID8gMCA6IDE7XG4gICAgICAgIHN0YXJ0UG9pbnRbYWRqdXN0RGF0YUluZGV4XSA9IHBhcmFsbGVsUGF0aFswXVthZGp1c3REYXRhSW5kZXhdO1xuICAgICAgICBlbmRQb2ludFthZGp1c3REYXRhSW5kZXhdID0gcGFyYWxsZWxQYXRoWzFdW2FkanVzdERhdGFJbmRleF07XG4gICAgICAgIGNvbnN0IGZha2VSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3N0YXJ0UG9pbnQsIGVuZFBvaW50LCAuLi5wYXJhbGxlbFBhdGhdKTtcbiAgICAgICAgY29uc3QgaXNWYWxpZCA9ICFSZWN0YW5nbGVDbGllbnQuaXNIaXQoZmFrZVJlY3RhbmdsZSwgc291cmNlUmVjdGFuZ2xlKSAmJiAhUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KGZha2VSZWN0YW5nbGUsIHRhcmdldFJlY3RhbmdsZSk7XG4gICAgICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICAgICAgICBtaXJyb3JTZWdtZW50cy5wdXNoKFtzdGFydFBvaW50LCBlbmRQb2ludF0pO1xuICAgICAgICAgICAgLy8gY29uc3QgZmFrZVJlY3RhbmdsZUcgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKS5yZWN0YW5nbGUoXG4gICAgICAgICAgICAvLyAgICAgZmFrZVJlY3RhbmdsZS54LFxuICAgICAgICAgICAgLy8gICAgIGZha2VSZWN0YW5nbGUueSxcbiAgICAgICAgICAgIC8vICAgICBmYWtlUmVjdGFuZ2xlLndpZHRoLFxuICAgICAgICAgICAgLy8gICAgIGZha2VSZWN0YW5nbGUuaGVpZ2h0LFxuICAgICAgICAgICAgLy8gICAgIHsgc3Ryb2tlOiAnYmx1ZScgfVxuICAgICAgICAgICAgLy8gKTtcbiAgICAgICAgICAgIC8vIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChmYWtlUmVjdGFuZ2xlRyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1pcnJvclNlZ21lbnRzO1xufVxuXG5leHBvcnQgY29uc3QgaGFzSWxsZWdhbEVsYm93UG9pbnQgPSAobWlkRGF0YVBvaW50czogUG9pbnRbXSk6IGJvb2xlYW4gPT4ge1xuICAgIGlmIChtaWREYXRhUG9pbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIG1pZERhdGFQb2ludHMuc29tZSgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgYmVmb3JlUG9pbnQgPSBtaWREYXRhUG9pbnRzW2luZGV4IC0gMV07XG4gICAgICAgIGNvbnN0IGFmdGVyUG9pbnQgPSBtaWREYXRhUG9pbnRzW2luZGV4ICsgMV07XG4gICAgICAgIGNvbnN0IGJlZm9yZVNlZ21lbnQgPSBiZWZvcmVQb2ludCAmJiBbYmVmb3JlUG9pbnQsIGl0ZW1dO1xuICAgICAgICBjb25zdCBhZnRlclNlZ21lbnQgPSBhZnRlclBvaW50ICYmIFtpdGVtLCBhZnRlclBvaW50XTtcbiAgICAgICAgY29uc3QgaXNTdHJhaWdodFdpdGhCZWZvcmUgPSBiZWZvcmVTZWdtZW50ICYmIFBvaW50LmlzQWxpZ24oYmVmb3JlU2VnbWVudCk7XG4gICAgICAgIGNvbnN0IGlzU3RyYWlnaHRXaXRoQWZ0ZXIgPSBhZnRlclNlZ21lbnQgJiYgUG9pbnQuaXNBbGlnbihhZnRlclNlZ21lbnQpO1xuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAhaXNTdHJhaWdodFdpdGhBZnRlcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5kZXggPT09IG1pZERhdGFQb2ludHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgcmV0dXJuICFpc1N0cmFpZ2h0V2l0aEJlZm9yZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIWlzU3RyYWlnaHRXaXRoQmVmb3JlICYmICFpc1N0cmFpZ2h0V2l0aEFmdGVyO1xuICAgIH0pO1xufTtcbiJdfQ==
|
|
@@ -72,4 +72,4 @@ export const memorizeLatestShape = (board, shape) => {
|
|
|
72
72
|
export const getMemorizedLatestShape = (board) => {
|
|
73
73
|
return memorizedShape.get(board);
|
|
74
74
|
};
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3JpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9tZW1vcml6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFrQixXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUluRSxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQUMzQixNQUFNLGNBQWMsR0FBMEMsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFxQixFQUFFLEVBQUU7SUFDcEQsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ2IsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNYLEtBQUssZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxHQUFHLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztZQUN2QixNQUFNO1FBQ1YsQ0FBQztRQUNELEtBQUssZ0JBQWdCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxHQUFHLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztZQUM3QixNQUFNO1FBQ1YsQ0FBQztRQUNELEtBQUssZ0JBQWdCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxHQUFHLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztZQUM1QixNQUFNO1FBQ1YsQ0FBQztRQUNELEtBQUssZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxHQUFHLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztZQUN2QixNQUFNO1FBQ1YsQ0FBQztJQUNMLENBQUM7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Q0FBQztJQUNMLENBQUM7SUFDRCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RCLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ3pELE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBCYXNpY1NoYXBlcywgR2VvbWV0cnlTaGFwZXMsIE1lbW9yaXplS2V5LCBQbGFpdERyYXdFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRNZW1vcml6ZWRMYXRlc3QsIG1lbW9yaXplTGF0ZXN0IH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBEcmF3UG9pbnRlclR5cGUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQmFzZU9wZXJhdGlvbiwgQmFzZVNldE5vZGVPcGVyYXRpb24gfSBmcm9tICdzbGF0ZSc7XG5cbmNvbnN0IFNIQVBFX01BWF9MRU5HVEggPSA2O1xuY29uc3QgbWVtb3JpemVkU2hhcGU6IFdlYWtNYXA8UGxhaXRCb2FyZCwgR2VvbWV0cnlTaGFwZXNbXT4gPSBuZXcgV2Vha01hcCgpO1xuXG5leHBvcnQgY29uc3QgZ2V0TWVtb3JpemVLZXkgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgbGV0IGtleSA9ICcnO1xuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICBjYXNlIFBsYWl0RHJhd0VsZW1lbnQuaXNUZXh0KGVsZW1lbnQpOiB7XG4gICAgICAgICAgICBrZXkgPSBNZW1vcml6ZUtleS50ZXh0O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBQbGFpdERyYXdFbGVtZW50LmlzQmFzaWNTaGFwZShlbGVtZW50KToge1xuICAgICAgICAgICAga2V5ID0gTWVtb3JpemVLZXkuYmFzaWNTaGFwZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgUGxhaXREcmF3RWxlbWVudC5pc0Zsb3djaGFydChlbGVtZW50KToge1xuICAgICAgICAgICAga2V5ID0gTWVtb3JpemVLZXkuZmxvd2NoYXJ0O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBQbGFpdERyYXdFbGVtZW50LmlzTGluZShlbGVtZW50KToge1xuICAgICAgICAgICAga2V5ID0gTWVtb3JpemVLZXkubGluZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBrZXk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGluZU1lbW9yaXplZExhdGVzdCA9ICgpID0+IHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gZ2V0TWVtb3JpemVkTGF0ZXN0KE1lbW9yaXplS2V5LmxpbmUpO1xuICAgIGRlbGV0ZSBwcm9wZXJ0aWVzPy50ZXh0O1xuICAgIHJldHVybiB7IC4uLnByb3BlcnRpZXMgfSB8fCB7fTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNZW1vcml6ZWRMYXRlc3RCeVBvaW50ZXIgPSAocG9pbnRlcjogRHJhd1BvaW50ZXJUeXBlKSA9PiB7XG4gICAgbGV0IG1lbW9yaXplS2V5ID0gJyc7XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNCYXNpY1NoYXBlKHsgc2hhcGU6IHBvaW50ZXIgfSkpIHtcbiAgICAgICAgbWVtb3JpemVLZXkgPSBwb2ludGVyID09PSBCYXNpY1NoYXBlcy50ZXh0ID8gTWVtb3JpemVLZXkudGV4dCA6IE1lbW9yaXplS2V5LmJhc2ljU2hhcGU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbWVtb3JpemVLZXkgPSBNZW1vcml6ZUtleS5mbG93Y2hhcnQ7XG4gICAgfVxuICAgIGNvbnN0IHByb3BlcnRpZXMgPSB7IC4uLmdldE1lbW9yaXplZExhdGVzdChtZW1vcml6ZUtleSkgfSB8fCB7fTtcbiAgICBjb25zdCB0ZXh0UHJvcGVydGllcyA9IHsgLi4ucHJvcGVydGllcy50ZXh0IH0gfHwge307XG4gICAgZGVsZXRlIHByb3BlcnRpZXMudGV4dDtcbiAgICByZXR1cm4geyB0ZXh0UHJvcGVydGllcywgZ2VvbWV0cnlQcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzIH07XG59O1xuXG5leHBvcnQgY29uc3QgbWVtb3JpemVMYXRlc3RUZXh0ID0gKGVsZW1lbnQ6IFBsYWl0RHJhd0VsZW1lbnQsIG9wZXJhdGlvbnM6IEJhc2VPcGVyYXRpb25bXSkgPT4ge1xuICAgIGNvbnN0IG1lbW9yaXplS2V5ID0gZ2V0TWVtb3JpemVLZXkoZWxlbWVudCk7XG4gICAgbGV0IHRleHRNZW1vcnkgPSBnZXRNZW1vcml6ZWRMYXRlc3QobWVtb3JpemVLZXkpPy50ZXh0IHx8IHt9O1xuICAgIGNvbnN0IHNldE5vZGVPcGVyYXRpb24gPSBvcGVyYXRpb25zLmZpbmQob3BlcmF0aW9uID0+IG9wZXJhdGlvbi50eXBlID09PSAnc2V0X25vZGUnKTtcbiAgICBpZiAoc2V0Tm9kZU9wZXJhdGlvbikge1xuICAgICAgICBjb25zdCBuZXdQcm9wZXJ0aWVzID0gKHNldE5vZGVPcGVyYXRpb24gYXMgQmFzZVNldE5vZGVPcGVyYXRpb24pLm5ld1Byb3BlcnRpZXM7XG4gICAgICAgIHRleHRNZW1vcnkgPSB7IC4uLnRleHRNZW1vcnksIC4uLm5ld1Byb3BlcnRpZXMgfTtcbiAgICAgICAgbWVtb3JpemVMYXRlc3QobWVtb3JpemVLZXksICd0ZXh0JywgdGV4dE1lbW9yeSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IG1lbW9yaXplTGF0ZXN0U2hhcGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHNoYXBlOiBHZW9tZXRyeVNoYXBlcykgPT4ge1xuICAgIGNvbnN0IHNoYXBlcyA9IG1lbW9yaXplZFNoYXBlLmhhcyhib2FyZCkgPyBtZW1vcml6ZWRTaGFwZS5nZXQoYm9hcmQpISA6IFtdO1xuICAgIGNvbnN0IHNoYXBlSW5kZXggPSBzaGFwZXMuaW5kZXhPZihzaGFwZSk7XG4gICAgaWYgKHNoYXBlID09PSBCYXNpY1NoYXBlcy50ZXh0IHx8IHNoYXBlSW5kZXggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc2hhcGVJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgc2hhcGVzLnNwbGljZShzaGFwZUluZGV4LCAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc2hhcGVzLmxlbmd0aCA9PT0gU0hBUEVfTUFYX0xFTkdUSCkge1xuICAgICAgICAgICAgc2hhcGVzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNoYXBlcy51bnNoaWZ0KHNoYXBlKTtcbiAgICBtZW1vcml6ZWRTaGFwZS5zZXQoYm9hcmQsIHNoYXBlcyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWVtb3JpemVkTGF0ZXN0U2hhcGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICByZXR1cm4gbWVtb3JpemVkU2hhcGUuZ2V0KGJvYXJkKTtcbn07XG4iXX0=
|
|
@@ -27,4 +27,4 @@ export const getPolygonEdgeByConnectionPoint = (corners, point) => {
|
|
|
27
27
|
}
|
|
28
28
|
return null;
|
|
29
29
|
};
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9seWdvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3V0aWxzL3BvbHlnb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzFGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsTUFBZSxFQUFFLEVBQUU7SUFDeEQsTUFBTSxZQUFZLEdBQVksRUFBRSxDQUFDO0lBQ2pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFDRCxPQUFPLFlBQVksQ0FBQztBQUN4QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRyxDQUFDLE9BQWdCLEVBQUUsS0FBWSxFQUFFLEVBQUU7SUFDckYsTUFBTSxNQUFNLEdBQVksRUFBRSxDQUFDO0lBQzNCLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDbkQsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvQixJQUFJLEdBQUcsR0FBRyxLQUFLLEtBQUssT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakUsTUFBTSxhQUFhLEdBQUcsdUNBQXVDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqRixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLENBQUMsT0FBZ0IsRUFBRSxLQUFZLEVBQUUsRUFBRTtJQUM5RSxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ25ELElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0IsSUFBSSxHQUFHLEdBQUcsS0FBSyxLQUFLLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFtQixDQUFDO1FBQzFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0Q3Jvc3NpbmdQb2ludHNCZXR3ZWVuUG9pbnRBbmRTZWdtZW50LCBpc1BvaW50T25TZWdtZW50IH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcblxuZXhwb3J0IGNvbnN0IGdldENlbnRlclBvaW50c09uUG9seWdvbiA9IChwb2ludHM6IFBvaW50W10pID0+IHtcbiAgICBjb25zdCBjZW50ZXJQb2ludHM6IFBvaW50W10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgaiA9IGkgPT0gcG9pbnRzLmxlbmd0aCAtIDEgPyAwIDogaSArIDE7XG4gICAgICAgIGNlbnRlclBvaW50cy5wdXNoKFsocG9pbnRzW2ldWzBdICsgcG9pbnRzW2pdWzBdKSAvIDIsIChwb2ludHNbaV1bMV0gKyBwb2ludHNbal1bMV0pIC8gMl0pO1xuICAgIH1cbiAgICByZXR1cm4gY2VudGVyUG9pbnRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENyb3NzaW5nUG9pbnRCZXR3ZWVuUG9pbnRBbmRQb2x5Z29uID0gKGNvcm5lcnM6IFBvaW50W10sIHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdDogUG9pbnRbXSA9IFtdO1xuICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPD0gY29ybmVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgbGV0IHN0YXJ0ID0gY29ybmVyc1tpbmRleCAtIDFdO1xuICAgICAgICBsZXQgZW5kID0gaW5kZXggPT09IGNvcm5lcnMubGVuZ3RoID8gY29ybmVyc1swXSA6IGNvcm5lcnNbaW5kZXhdO1xuICAgICAgICBjb25zdCBjcm9zc2luZ1BvaW50ID0gZ2V0Q3Jvc3NpbmdQb2ludHNCZXR3ZWVuUG9pbnRBbmRTZWdtZW50KHBvaW50LCBzdGFydCwgZW5kKTtcbiAgICAgICAgcmVzdWx0LnB1c2goLi4uY3Jvc3NpbmdQb2ludCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UG9seWdvbkVkZ2VCeUNvbm5lY3Rpb25Qb2ludCA9IChjb3JuZXJzOiBQb2ludFtdLCBwb2ludDogUG9pbnQpID0+IHtcbiAgICBmb3IgKGxldCBpbmRleCA9IDE7IGluZGV4IDw9IGNvcm5lcnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGxldCBzdGFydCA9IGNvcm5lcnNbaW5kZXggLSAxXTtcbiAgICAgICAgbGV0IGVuZCA9IGluZGV4ID09PSBjb3JuZXJzLmxlbmd0aCA/IGNvcm5lcnNbMF0gOiBjb3JuZXJzW2luZGV4XTtcbiAgICAgICAgaWYgKGlzUG9pbnRPblNlZ21lbnQocG9pbnQsIHN0YXJ0LCBlbmQpKSB7XG4gICAgICAgICAgICByZXR1cm4gW3N0YXJ0LCBlbmRdIGFzIFtQb2ludCwgUG9pbnRdO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcbiJdfQ==
|
|
@@ -25,4 +25,4 @@ export const getHitOutlineGeometry = (board, point, offset = 0) => {
|
|
|
25
25
|
}, getIsRecursionFunc(board), true);
|
|
26
26
|
return geometry;
|
|
27
27
|
};
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9wb3NpdGlvbi9nZW9tZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQStCLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQWlCLE1BQU0sa0JBQWtCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLDRCQUE0QixFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFcEMsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFNBQTBCLEVBQUUsS0FBWSxFQUFFLEVBQUU7SUFDMUcsTUFBTSxnQkFBZ0IsR0FBRyw0QkFBNEIsQ0FBQyxTQUFTLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztJQUN6RixNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUU7UUFDbkQsT0FBTyxlQUFlLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsSCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBaUIsRUFBRSxLQUFZLEVBQUUsU0FBaUIsQ0FBQyxFQUF3QixFQUFFO0lBQy9HLElBQUksUUFBUSxHQUFzQyxJQUFJLENBQUM7SUFDdkQsbUJBQW1CLENBQ2YsS0FBSyxFQUNMLElBQUksQ0FBQyxFQUFFO1FBQ0gsSUFBSSxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDdEUsSUFBSSxNQUFNLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvRCxNQUFNLEdBQUcsZUFBZSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM3RCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDNUQsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDUixRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQyxFQUNELGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUN6QixJQUFJLENBQ1AsQ0FBQztJQUNGLE9BQU8sUUFBUSxDQUFDO0FBQ3BCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFuY2VzdG9yLCBQbGFpdEJvYXJkLCBQb2ludCwgUmVjdGFuZ2xlQ2xpZW50LCBkZXB0aEZpcnN0UmVjdXJzaW9uLCBnZXRJc1JlY3Vyc2lvbkZ1bmMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50LCBQbGFpdEdlb21ldHJ5IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBSRVNJWkVfSEFORExFX0RJQU1FVEVSLCBnZXRSZWN0YW5nbGVSZXNpemVIYW5kbGVSZWZzLCBSZXNpemVIYW5kbGUgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGdldEVuZ2luZSB9IGZyb20gJy4uLy4uL2VuZ2luZXMnO1xuaW1wb3J0IHsgUGxhaXRJbWFnZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvaW1hZ2UnO1xuaW1wb3J0IHsgZ2V0U2hhcGUgfSBmcm9tICcuLi9zaGFwZSc7XG5cbmV4cG9ydCBjb25zdCBnZXRIaXRSZWN0YW5nbGVSZXNpemVIYW5kbGVSZWYgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBwb2ludDogUG9pbnQpID0+IHtcbiAgICBjb25zdCByZXNpemVIYW5kbGVSZWZzID0gZ2V0UmVjdGFuZ2xlUmVzaXplSGFuZGxlUmVmcyhyZWN0YW5nbGUsIFJFU0laRV9IQU5ETEVfRElBTUVURVIpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHJlc2l6ZUhhbmRsZVJlZnMuZmluZChyZXNpemVIYW5kbGVSZWYgPT4ge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbcG9pbnQsIHBvaW50XSksIHJlc2l6ZUhhbmRsZVJlZi5yZWN0YW5nbGUpO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SGl0T3V0bGluZUdlb21ldHJ5ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBwb2ludDogUG9pbnQsIG9mZnNldDogbnVtYmVyID0gMCk6IFBsYWl0R2VvbWV0cnkgfCBudWxsID0+IHtcbiAgICBsZXQgZ2VvbWV0cnk6IFBsYWl0R2VvbWV0cnkgfCBQbGFpdEltYWdlIHwgbnVsbCA9IG51bGw7XG4gICAgZGVwdGhGaXJzdFJlY3Vyc2lvbjxBbmNlc3Rvcj4oXG4gICAgICAgIGJvYXJkLFxuICAgICAgICBub2RlID0+IHtcbiAgICAgICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkobm9kZSkgfHwgUGxhaXREcmF3RWxlbWVudC5pc0ltYWdlKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNsaWVudCA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhub2RlLnBvaW50cyk7XG4gICAgICAgICAgICAgICAgY2xpZW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldE91dGxpbmVSZWN0YW5nbGUoY2xpZW50LCBvZmZzZXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNoYXBlID0gZ2V0U2hhcGUobm9kZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNIaXQgPSBnZXRFbmdpbmUoc2hhcGUpLmlzSW5zaWRlUG9pbnQoY2xpZW50LCBwb2ludCk7XG4gICAgICAgICAgICAgICAgaWYgKGlzSGl0KSB7XG4gICAgICAgICAgICAgICAgICAgIGdlb21ldHJ5ID0gbm9kZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGdldElzUmVjdXJzaW9uRnVuYyhib2FyZCksXG4gICAgICAgIHRydWVcbiAgICApO1xuICAgIHJldHVybiBnZW9tZXRyeTtcbn07XG4iXX0=
|
|
@@ -64,4 +64,4 @@ export const getHitLineTextIndex = (board, element, point) => {
|
|
|
64
64
|
return RectangleClient.isHit(rectangle, RectangleClient.getRectangleByPoints([point, point]));
|
|
65
65
|
});
|
|
66
66
|
};
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3V0aWxzL3Bvc2l0aW9uL2xpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixlQUFlLEVBQW1DLE1BQU0sYUFBYSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEUsTUFBTSxDQUFOLElBQVksZ0JBSVg7QUFKRCxXQUFZLGdCQUFnQjtJQUN4QixxQ0FBbUIsQ0FBQTtJQUNuQixxQ0FBbUIsQ0FBQTtJQUNuQiwyQ0FBeUIsQ0FBQTtBQUM3QixDQUFDLEVBSlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUkzQjtBQUVELE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFrQixFQUFFLEtBQVksRUFBRSxFQUFFO0lBQzdGLElBQUksVUFBVSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsRCxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2YsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2QsT0FBTyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDNUQsQ0FBQztRQUNELElBQUksS0FBSyxLQUFLLFVBQVUsQ0FBQyxNQUFNLEdBQUcs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cnQgeyBQbGFpdEJvYXJkLCBQb2ludCwgUmVjdGFuZ2xlQ2xpZW50LCBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFNlZ21lbnRzIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTGluZVNoYXBlLCBQbGFpdExpbmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFJFU0laRV9IQU5ETEVfRElBTUVURVIsIGdldFBvaW50T25Qb2x5bGluZSB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgZ2V0TGluZVBvaW50cywgZ2V0TWlkZGxlUG9pbnRzIH0gZnJvbSAnLi4vbGluZS9saW5lLWJhc2ljJztcblxuZXhwb3J0IGVudW0gTGluZVJlc2l6ZUhhbmRsZSB7XG4gICAgJ3NvdXJjZScgPSAnc291cmNlJyxcbiAgICAndGFyZ2V0JyA9ICd0YXJnZXQnLFxuICAgICdhZGRIYW5kbGUnID0gJ2FkZEhhbmRsZSdcbn1cblxuZXhwb3J0IGNvbnN0IGdldEhpdExpbmVSZXNpemVIYW5kbGVSZWYgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0TGluZSwgcG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgbGV0IGRhdGFQb2ludHMgPSBQbGFpdExpbmUuZ2V0UG9pbnRzKGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCBpbmRleCA9IGdldEhpdFBvaW50SW5kZXgoZGF0YVBvaW50cywgcG9pbnQpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgY29uc3QgaGFuZGxlSW5kZXggPSBpbmRleDtcbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4geyBoYW5kbGU6IExpbmVSZXNpemVIYW5kbGUuc291cmNlLCBoYW5kbGVJbmRleCB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA9PT0gZGF0YVBvaW50cy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICByZXR1cm4geyBoYW5kbGU6IExpbmVSZXNpemVIYW5kbGUudGFyZ2V0LCBoYW5kbGVJbmRleCB9O1xuICAgICAgICB9XG4gICAgICAgIC8vIGVsYm93IGxpbmUsIGRhdGEgcG9pbnRzIG9ubHkgdmVyaWZ5IHNvdXJjZSBjb25uZWN0aW9uIHBvaW50IGFuZCB0YXJnZXQgY29ubmVjdGlvbiBwb2ludFxuICAgICAgICBpZiAoZWxlbWVudC5zaGFwZSAhPT0gTGluZVNoYXBlLmVsYm93KSB7XG4gICAgICAgICAgICByZXR1cm4geyBoYW5kbGVJbmRleCB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG1pZGRsZVBvaW50cyA9IGdldE1pZGRsZVBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgY29uc3QgaW5kZXhPZk1pZGRsZVBvaW50cyA9IGdldEhpdFBvaW50SW5kZXgobWlkZGxlUG9pbnRzLCBwb2ludCk7XG4gICAgaWYgKGluZGV4T2ZNaWRkbGVQb2ludHMgIT09IC0xKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoYW5kbGU6IExpbmVSZXNpemVIYW5kbGUuYWRkSGFuZGxlLFxuICAgICAgICAgICAgaGFuZGxlSW5kZXg6IGluZGV4T2ZNaWRkbGVQb2ludHNcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIaXRQb2ludEluZGV4KHBvaW50czogUG9pbnRbXSwgbW92aW5nUG9pbnQ6IFBvaW50KSB7XG4gICAgY29uc3QgcmVjdGFuZ2xlcyA9IHBvaW50cy5tYXAocG9pbnQgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogcG9pbnRbMF0gLSBSRVNJWkVfSEFORExFX0RJQU1FVEVSIC8gMixcbiAgICAgICAgICAgIHk6IHBvaW50WzFdIC0gUkVTSVpFX0hBTkRMRV9ESUFNRVRFUiAvIDIsXG4gICAgICAgICAgICB3aWR0aDogUkVTSVpFX0hBTkRMRV9ESUFNRVRFUixcbiAgICAgICAgICAgIGhlaWdodDogUkVTSVpFX0hBTkRMRV9ESUFNRVRFUlxuICAgICAgICB9O1xuICAgIH0pO1xuICAgIGNvbnN0IHJlY3RhbmdsZSA9IHJlY3RhbmdsZXMuZmluZChyZWN0YW5nbGUgPT4ge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbbW92aW5nUG9pbnQsIG1vdmluZ1BvaW50XSksIHJlY3RhbmdsZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlY3RhbmdsZSA/IHJlY3RhbmdsZXMuaW5kZXhPZihyZWN0YW5nbGUpIDogLTE7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRIaXRMaW5lVGV4dEluZGV4ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdExpbmUsIHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IHRleHRzID0gZWxlbWVudC50ZXh0cztcbiAgICBpZiAoIXRleHRzLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgY29uc3QgcG9pbnRzID0gZ2V0TGluZVBvaW50cyhib2FyZCwgZWxlbWVudCk7XG4gICAgcmV0dXJuIHRleHRzLmZpbmRJbmRleCh0ZXh0ID0+IHtcbiAgICAgICAgY29uc3QgY2VudGVyID0gZ2V0UG9pbnRPblBvbHlsaW5lKHBvaW50cywgdGV4dC5wb3NpdGlvbik7XG4gICAgICAgIGNvbnN0IHJlY3RhbmdsZSA9IHtcbiAgICAgICAgICAgIHg6IGNlbnRlclswXSAtIHRleHQud2lkdGghIC8gMixcbiAgICAgICAgICAgIHk6IGNlbnRlclsxXSAtIHRleHQuaGVpZ2h0ISAvIDIsXG4gICAgICAgICAgICB3aWR0aDogdGV4dC53aWR0aCEsXG4gICAgICAgICAgICBoZWlnaHQ6IHRleHQuaGVpZ2h0IVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHJlY3RhbmdsZSwgUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKFtwb2ludCwgcG9pbnRdKSk7XG4gICAgfSk7XG59O1xuIl19
|