@seniorsistemas/angular-components 17.30.0 → 17.31.0

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.
@@ -19,7 +19,7 @@ export const getElementPositionInfo = (element) => {
19
19
  elementHeight,
20
20
  elementWidth,
21
21
  elementVerticalCenter,
22
- elementHorizontalCenter
22
+ elementHorizontalCenter,
23
23
  };
24
24
  };
25
25
  export const getElementLeftoverContentAvailable = (element) => {
@@ -33,7 +33,12 @@ export const getElementLeftoverContentAvailable = (element) => {
33
33
  freeDistanceToBottom,
34
34
  freeDistanceToTop,
35
35
  freeDistanceToLeft,
36
- freeDistanceToRight
36
+ freeDistanceToRight,
37
37
  };
38
38
  };
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy91dGlscy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDO0FBa0IzRixNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxDQUFDLEtBQWdDLEVBQUUsV0FLakYsRUFBRSxFQUFFO0lBQ0QsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUM3QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQzdCLE9BQU8sTUFBTSxHQUFHLFdBQVcsQ0FBQyxJQUFJLElBQUksTUFBTSxJQUFJLFdBQVcsQ0FBQyxLQUFLLElBQUksTUFBTSxHQUFHLFdBQVcsQ0FBQyxHQUFHLElBQUksTUFBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUM7QUFDaEksQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxPQUFvQixFQUFtQixFQUFFO0lBQzVFLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQzdDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7SUFDdkUsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQztJQUV6RSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ2xDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDaEMsTUFBTSxxQkFBcUIsR0FBRyxhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sdUJBQXVCLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQztJQUVqRCxPQUFPO1FBQ0gsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsU0FBUztRQUN6QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVO1FBQzVCLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsR0FBRyxZQUFZO1FBQzVDLGFBQWE7UUFDYixZQUFZO1FBQ1oscUJBQXFCO1FBQ3JCLHVCQUF1QjtLQUMxQixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsQ0FBQyxPQUFvQixFQUEyQixFQUFFO0lBQ2hHLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDdEMsTUFBTSx5QkFBeUIsR0FBRyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUNsRSxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxXQUFXLEdBQUcseUJBQXlCLENBQUMsTUFBTSxDQUFDO0lBQ25GLE1BQU0saUJBQWlCLEdBQUcseUJBQXlCLENBQUMsR0FBRyxDQUFDO0lBQ3hELE1BQU0sa0JBQWtCLEdBQUcseUJBQXlCLENBQUMsSUFBSSxDQUFDO0lBQzFELE1BQU0sbUJBQW1CLEdBQUcsV0FBVyxHQUFHLHlCQUF5QixDQUFDLEtBQUssQ0FBQztJQUMxRSxPQUFPO1FBQ0gsb0JBQW9CO1FBQ3BCLGlCQUFpQjtRQUNqQixrQkFBa0I7UUFDbEIsbUJBQW1CO0tBQ3RCLENBQUE7QUFDTCxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgaXNOdWxsT3JVbmRlZmluZWQgPSAodmFsdWU6IHVua25vd24pID0+IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7XHJcbmV4cG9ydCB0eXBlIEVsZW1lbnRQb3NpdGlvbiA9IHtcclxuICAgIHRvcDogbnVtYmVyO1xyXG4gICAgbGVmdDogbnVtYmVyO1xyXG4gICAgcmlnaHQ6IG51bWJlcjtcclxuICAgIGVsZW1lbnRIZWlnaHQ6IG51bWJlcjtcclxuICAgIGVsZW1lbnRXaWR0aDogbnVtYmVyO1xyXG4gICAgZWxlbWVudFZlcnRpY2FsQ2VudGVyOiBudW1iZXI7XHJcbiAgICBlbGVtZW50SG9yaXpvbnRhbENlbnRlcjogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBFbGVtZW50TGVmdG92ZXJQb3NpdGlvbiA9IHtcclxuICAgIGZyZWVEaXN0YW5jZVRvQm90dG9tOiBudW1iZXI7XHJcbiAgICBmcmVlRGlzdGFuY2VUb1RvcDogbnVtYmVyO1xyXG4gICAgZnJlZURpc3RhbmNlVG9MZWZ0OiBudW1iZXI7XHJcbiAgICBmcmVlRGlzdGFuY2VUb1JpZ2h0OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBpc01vdXNlUG9zaXRpb25PdXRzaWRlT2ZFbGVtZW50ID0gKGV2ZW50OiBNb3VzZUV2ZW50IHwgUG9pbnRlckV2ZW50LCBlbGVtZW50QXJlYToge1xyXG4gICAgdG9wOiBudW1iZXI7XHJcbiAgICByaWdodDogbnVtYmVyO1xyXG4gICAgbGVmdDogbnVtYmVyO1xyXG4gICAgYm90dG9tOiBudW1iZXI7XHJcbn0pID0+IHtcclxuICAgIGNvbnN0IGV2ZW50WCA9IGV2ZW50LmNsaWVudFg7XHJcbiAgICBjb25zdCBldmVudFkgPSBldmVudC5jbGllbnRZO1xyXG4gICAgcmV0dXJuIGV2ZW50WCA8IGVsZW1lbnRBcmVhLmxlZnQgfHwgZXZlbnRYID49IGVsZW1lbnRBcmVhLnJpZ2h0IHx8IGV2ZW50WSA8IGVsZW1lbnRBcmVhLnRvcCB8fCBldmVudFkgPj0gZWxlbWVudEFyZWEuYm90dG9tO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0RWxlbWVudFBvc2l0aW9uSW5mbyA9IChlbGVtZW50OiBIVE1MRWxlbWVudCk6IEVsZW1lbnRQb3NpdGlvbiA9PiB7XHJcbiAgICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IHNjcm9sbFRvcCA9IHdpbmRvdy5zY3JvbGxZIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7XHJcbiAgICBjb25zdCBzY3JvbGxMZWZ0ID0gd2luZG93LnNjcm9sbFggfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQ7XHJcblxyXG4gICAgY29uc3QgZWxlbWVudEhlaWdodCA9IHJlY3QuaGVpZ2h0O1xyXG4gICAgY29uc3QgZWxlbWVudFdpZHRoID0gcmVjdC53aWR0aDtcclxuICAgIGNvbnN0IGVsZW1lbnRWZXJ0aWNhbENlbnRlciA9IGVsZW1lbnRIZWlnaHQgLyAyO1xyXG4gICAgY29uc3QgZWxlbWVudEhvcml6b250YWxDZW50ZXIgPSBlbGVtZW50V2lkdGggLyAyO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdG9wOiByZWN0LnRvcCArIHNjcm9sbFRvcCxcclxuICAgICAgICBsZWZ0OiByZWN0LmxlZnQgKyBzY3JvbGxMZWZ0LFxyXG4gICAgICAgIHJpZ2h0OiByZWN0LmxlZnQgKyBzY3JvbGxMZWZ0ICsgZWxlbWVudFdpZHRoLFxyXG4gICAgICAgIGVsZW1lbnRIZWlnaHQsXHJcbiAgICAgICAgZWxlbWVudFdpZHRoLFxyXG4gICAgICAgIGVsZW1lbnRWZXJ0aWNhbENlbnRlcixcclxuICAgICAgICBlbGVtZW50SG9yaXpvbnRhbENlbnRlclxyXG4gICAgfTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50TGVmdG92ZXJDb250ZW50QXZhaWxhYmxlID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogRWxlbWVudExlZnRvdmVyUG9zaXRpb24gPT4ge1xyXG4gICAgY29uc3Qgd2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgIGNvbnN0IHBvcG92ZXJFbGVtZW50VHJpZ2dlclJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3QgZnJlZURpc3RhbmNlVG9Cb3R0b20gPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBwb3BvdmVyRWxlbWVudFRyaWdnZXJSZWN0LmJvdHRvbTtcclxuICAgIGNvbnN0IGZyZWVEaXN0YW5jZVRvVG9wID0gcG9wb3ZlckVsZW1lbnRUcmlnZ2VyUmVjdC50b3A7XHJcbiAgICBjb25zdCBmcmVlRGlzdGFuY2VUb0xlZnQgPSBwb3BvdmVyRWxlbWVudFRyaWdnZXJSZWN0LmxlZnQ7XHJcbiAgICBjb25zdCBmcmVlRGlzdGFuY2VUb1JpZ2h0ID0gd2luZG93V2lkdGggLSBwb3BvdmVyRWxlbWVudFRyaWdnZXJSZWN0LnJpZ2h0O1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBmcmVlRGlzdGFuY2VUb0JvdHRvbSxcclxuICAgICAgICBmcmVlRGlzdGFuY2VUb1RvcCxcclxuICAgICAgICBmcmVlRGlzdGFuY2VUb0xlZnQsXHJcbiAgICAgICAgZnJlZURpc3RhbmNlVG9SaWdodFxyXG4gICAgfVxyXG59XHJcbiJdfQ==
39
+ export const deepClone = (obj) => {
40
+ if (typeof structuredClone === "function")
41
+ return structuredClone(obj);
42
+ return JSON.parse(JSON.stringify(obj));
43
+ };
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy91dGlscy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDO0FBa0IzRixNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxDQUMzQyxLQUFnQyxFQUNoQyxXQUtDLEVBQ0gsRUFBRTtJQUNBLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDN0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUM3QixPQUFPLE1BQU0sR0FBRyxXQUFXLENBQUMsSUFBSSxJQUFJLE1BQU0sSUFBSSxXQUFXLENBQUMsS0FBSyxJQUFJLE1BQU0sR0FBRyxXQUFXLENBQUMsR0FBRyxJQUFJLE1BQU0sSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDO0FBQ2hJLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsT0FBb0IsRUFBbUIsRUFBRTtJQUM1RSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUM3QyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDO0lBQ3ZFLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUM7SUFFekUsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ2hDLE1BQU0scUJBQXFCLEdBQUcsYUFBYSxHQUFHLENBQUMsQ0FBQztJQUNoRCxNQUFNLHVCQUF1QixHQUFHLFlBQVksR0FBRyxDQUFDLENBQUM7SUFFakQsT0FBTztRQUNILEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVM7UUFDekIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVTtRQUM1QixLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLEdBQUcsWUFBWTtRQUM1QyxhQUFhO1FBQ2IsWUFBWTtRQUNaLHFCQUFxQjtRQUNyQix1QkFBdUI7S0FDMUIsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHLENBQUMsT0FBb0IsRUFBMkIsRUFBRTtJQUNoRyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ3RDLE1BQU0seUJBQXlCLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDbEUsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsV0FBVyxHQUFHLHlCQUF5QixDQUFDLE1BQU0sQ0FBQztJQUNuRixNQUFNLGlCQUFpQixHQUFHLHlCQUF5QixDQUFDLEdBQUcsQ0FBQztJQUN4RCxNQUFNLGtCQUFrQixHQUFHLHlCQUF5QixDQUFDLElBQUksQ0FBQztJQUMxRCxNQUFNLG1CQUFtQixHQUFHLFdBQVcsR0FBRyx5QkFBeUIsQ0FBQyxLQUFLLENBQUM7SUFDMUUsT0FBTztRQUNILG9CQUFvQjtRQUNwQixpQkFBaUI7UUFDakIsa0JBQWtCO1FBQ2xCLG1CQUFtQjtLQUN0QixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBT0YsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUksR0FBTSxFQUFLLEVBQUU7SUFDdEMsSUFBSSxPQUFPLGVBQWUsS0FBSyxVQUFVO1FBQUUsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgaXNOdWxsT3JVbmRlZmluZWQgPSAodmFsdWU6IHVua25vd24pID0+IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7XHJcbmV4cG9ydCB0eXBlIEVsZW1lbnRQb3NpdGlvbiA9IHtcclxuICAgIHRvcDogbnVtYmVyO1xyXG4gICAgbGVmdDogbnVtYmVyO1xyXG4gICAgcmlnaHQ6IG51bWJlcjtcclxuICAgIGVsZW1lbnRIZWlnaHQ6IG51bWJlcjtcclxuICAgIGVsZW1lbnRXaWR0aDogbnVtYmVyO1xyXG4gICAgZWxlbWVudFZlcnRpY2FsQ2VudGVyOiBudW1iZXI7XHJcbiAgICBlbGVtZW50SG9yaXpvbnRhbENlbnRlcjogbnVtYmVyO1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgRWxlbWVudExlZnRvdmVyUG9zaXRpb24gPSB7XHJcbiAgICBmcmVlRGlzdGFuY2VUb0JvdHRvbTogbnVtYmVyO1xyXG4gICAgZnJlZURpc3RhbmNlVG9Ub3A6IG51bWJlcjtcclxuICAgIGZyZWVEaXN0YW5jZVRvTGVmdDogbnVtYmVyO1xyXG4gICAgZnJlZURpc3RhbmNlVG9SaWdodDogbnVtYmVyO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzTW91c2VQb3NpdGlvbk91dHNpZGVPZkVsZW1lbnQgPSAoXHJcbiAgICBldmVudDogTW91c2VFdmVudCB8IFBvaW50ZXJFdmVudCxcclxuICAgIGVsZW1lbnRBcmVhOiB7XHJcbiAgICAgICAgdG9wOiBudW1iZXI7XHJcbiAgICAgICAgcmlnaHQ6IG51bWJlcjtcclxuICAgICAgICBsZWZ0OiBudW1iZXI7XHJcbiAgICAgICAgYm90dG9tOiBudW1iZXI7XHJcbiAgICB9XHJcbikgPT4ge1xyXG4gICAgY29uc3QgZXZlbnRYID0gZXZlbnQuY2xpZW50WDtcclxuICAgIGNvbnN0IGV2ZW50WSA9IGV2ZW50LmNsaWVudFk7XHJcbiAgICByZXR1cm4gZXZlbnRYIDwgZWxlbWVudEFyZWEubGVmdCB8fCBldmVudFggPj0gZWxlbWVudEFyZWEucmlnaHQgfHwgZXZlbnRZIDwgZWxlbWVudEFyZWEudG9wIHx8IGV2ZW50WSA+PSBlbGVtZW50QXJlYS5ib3R0b207XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0RWxlbWVudFBvc2l0aW9uSW5mbyA9IChlbGVtZW50OiBIVE1MRWxlbWVudCk6IEVsZW1lbnRQb3NpdGlvbiA9PiB7XHJcbiAgICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IHNjcm9sbFRvcCA9IHdpbmRvdy5zY3JvbGxZIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7XHJcbiAgICBjb25zdCBzY3JvbGxMZWZ0ID0gd2luZG93LnNjcm9sbFggfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQ7XHJcblxyXG4gICAgY29uc3QgZWxlbWVudEhlaWdodCA9IHJlY3QuaGVpZ2h0O1xyXG4gICAgY29uc3QgZWxlbWVudFdpZHRoID0gcmVjdC53aWR0aDtcclxuICAgIGNvbnN0IGVsZW1lbnRWZXJ0aWNhbENlbnRlciA9IGVsZW1lbnRIZWlnaHQgLyAyO1xyXG4gICAgY29uc3QgZWxlbWVudEhvcml6b250YWxDZW50ZXIgPSBlbGVtZW50V2lkdGggLyAyO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdG9wOiByZWN0LnRvcCArIHNjcm9sbFRvcCxcclxuICAgICAgICBsZWZ0OiByZWN0LmxlZnQgKyBzY3JvbGxMZWZ0LFxyXG4gICAgICAgIHJpZ2h0OiByZWN0LmxlZnQgKyBzY3JvbGxMZWZ0ICsgZWxlbWVudFdpZHRoLFxyXG4gICAgICAgIGVsZW1lbnRIZWlnaHQsXHJcbiAgICAgICAgZWxlbWVudFdpZHRoLFxyXG4gICAgICAgIGVsZW1lbnRWZXJ0aWNhbENlbnRlcixcclxuICAgICAgICBlbGVtZW50SG9yaXpvbnRhbENlbnRlcixcclxuICAgIH07XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0RWxlbWVudExlZnRvdmVyQ29udGVudEF2YWlsYWJsZSA9IChlbGVtZW50OiBIVE1MRWxlbWVudCk6IEVsZW1lbnRMZWZ0b3ZlclBvc2l0aW9uID0+IHtcclxuICAgIGNvbnN0IHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICBjb25zdCBwb3BvdmVyRWxlbWVudFRyaWdnZXJSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IGZyZWVEaXN0YW5jZVRvQm90dG9tID0gd2luZG93LmlubmVySGVpZ2h0IC0gcG9wb3ZlckVsZW1lbnRUcmlnZ2VyUmVjdC5ib3R0b207XHJcbiAgICBjb25zdCBmcmVlRGlzdGFuY2VUb1RvcCA9IHBvcG92ZXJFbGVtZW50VHJpZ2dlclJlY3QudG9wO1xyXG4gICAgY29uc3QgZnJlZURpc3RhbmNlVG9MZWZ0ID0gcG9wb3ZlckVsZW1lbnRUcmlnZ2VyUmVjdC5sZWZ0O1xyXG4gICAgY29uc3QgZnJlZURpc3RhbmNlVG9SaWdodCA9IHdpbmRvd1dpZHRoIC0gcG9wb3ZlckVsZW1lbnRUcmlnZ2VyUmVjdC5yaWdodDtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgZnJlZURpc3RhbmNlVG9Cb3R0b20sXHJcbiAgICAgICAgZnJlZURpc3RhbmNlVG9Ub3AsXHJcbiAgICAgICAgZnJlZURpc3RhbmNlVG9MZWZ0LFxyXG4gICAgICAgIGZyZWVEaXN0YW5jZVRvUmlnaHQsXHJcbiAgICB9O1xyXG59O1xyXG5cclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4vLyBUT0RPOiBSZW1vdmVyIG5vIGFuZ3VsYXIgMTghISEhXHJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuZGVjbGFyZSBmdW5jdGlvbiBzdHJ1Y3R1cmVkQ2xvbmU8VD4odmFsdWU6IFQsIG9wdGlvbnM/OiB7IHRyYW5zZmVyPzogYW55W10gfSk6IFQ7XHJcblxyXG5leHBvcnQgY29uc3QgZGVlcENsb25lID0gPFQ+KG9iajogVCk6IFQgPT4ge1xyXG4gICAgaWYgKHR5cGVvZiBzdHJ1Y3R1cmVkQ2xvbmUgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHN0cnVjdHVyZWRDbG9uZShvYmopO1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqKSk7XHJcbn07XHJcbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { __decorate } from "tslib";
1
+ import { __decorate, __values } from "tslib";
2
2
  import { Component, ContentChildren, Input } from "@angular/core";
3
3
  import { AccordionPanelComponent } from "./components/accordion-panel/accordion-panel.component";
4
4
  import { Subject } from "rxjs";
@@ -6,68 +6,90 @@ import { takeUntil } from "rxjs/operators";
6
6
  var AccordionComponent = /** @class */ (function () {
7
7
  function AccordionComponent() {
8
8
  this.multiple = false;
9
- this._unsubscribe$ = new Subject();
10
- this._panels = [];
9
+ this.unsubscribe$ = new Subject();
10
+ this.panels = [];
11
11
  }
12
+ AccordionComponent.prototype.ngOnInit = function () {
13
+ this.validateInputs();
14
+ };
12
15
  AccordionComponent.prototype.ngAfterContentInit = function () {
13
- this._panels = this.panelsComponents.toArray();
14
- this._openSubs = new Array(this._panels.length);
15
- this._setBehavior(this.multiple);
16
- this._setupTabs();
16
+ this.panels = this.panelsComponents.toArray();
17
+ this.openSubs = new Array(this.panels.length);
18
+ this.setBehavior(this.multiple);
19
+ this.setupTabs();
17
20
  };
18
21
  AccordionComponent.prototype.ngOnChanges = function (changes) {
19
22
  if (changes.multiple) {
20
- this._setBehavior(changes.multiple.currentValue);
23
+ this.setBehavior(changes.multiple.currentValue);
21
24
  }
22
25
  };
23
26
  AccordionComponent.prototype.ngOnDestroy = function () {
24
- this._unsubscribe$.next();
25
- this._unsubscribe$.complete();
27
+ this.unsubscribe$.next();
28
+ this.unsubscribe$.complete();
29
+ };
30
+ AccordionComponent.prototype.validateInputs = function () {
31
+ if (!this.multiple && Array.isArray(this.activeIndex)) {
32
+ throw new Error("The activeIndex should not be an array when multiple is set to false.");
33
+ }
26
34
  };
27
- AccordionComponent.prototype._setupTabs = function () {
28
- var _a;
29
- if ((_a = this._panels) === null || _a === void 0 ? void 0 : _a.length) {
35
+ AccordionComponent.prototype.setupTabs = function () {
36
+ var e_1, _a;
37
+ var _this = this;
38
+ var _b;
39
+ if ((_b = this.panels) === null || _b === void 0 ? void 0 : _b.length) {
30
40
  if (this.activeIndex !== undefined && this.activeIndex !== null) {
31
- var activeTab = this._panels[this.activeIndex];
32
- if (!activeTab) {
41
+ var activeTabs = Array.isArray(this.activeIndex)
42
+ ? this.panels.filter(function (_, index) { return _this.activeIndex.includes(index); })
43
+ : [this.panels[this.activeIndex]];
44
+ if (activeTabs.length === 0) {
33
45
  throw new Error("activeIndex does not represent any panel.");
34
46
  }
35
- if (!activeTab.disabled) {
36
- this._panels[this.activeIndex].isOpen = true;
47
+ try {
48
+ for (var activeTabs_1 = __values(activeTabs), activeTabs_1_1 = activeTabs_1.next(); !activeTabs_1_1.done; activeTabs_1_1 = activeTabs_1.next()) {
49
+ var activeTab = activeTabs_1_1.value;
50
+ if (!activeTab.disabled) {
51
+ activeTab.isOpen = true;
52
+ }
53
+ }
54
+ }
55
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
56
+ finally {
57
+ try {
58
+ if (activeTabs_1_1 && !activeTabs_1_1.done && (_a = activeTabs_1.return)) _a.call(activeTabs_1);
59
+ }
60
+ finally { if (e_1) throw e_1.error; }
37
61
  }
38
62
  }
39
63
  }
40
64
  };
41
- AccordionComponent.prototype._closeOtherTabs = function (exception) {
42
- this._panels.forEach(function (panel, index) {
65
+ AccordionComponent.prototype.closeOtherTabs = function (exception) {
66
+ this.panels.forEach(function (panel, index) {
43
67
  if (index !== exception) {
44
68
  panel.isOpen = false;
45
69
  }
46
70
  });
47
71
  };
48
- AccordionComponent.prototype._setBehavior = function (multiple) {
72
+ AccordionComponent.prototype.setBehavior = function (multiple) {
49
73
  if (multiple) {
50
- this._enableMultiplePanelBehavior();
74
+ this.enableMultiplePanelBehavior();
51
75
  }
52
76
  else {
53
- this._enableSinglePanelBehavior();
77
+ this.enableSinglePanelBehavior();
54
78
  }
55
79
  };
56
- AccordionComponent.prototype._enableSinglePanelBehavior = function () {
80
+ AccordionComponent.prototype.enableSinglePanelBehavior = function () {
57
81
  var _this = this;
58
- this._panels.forEach(function (panel, index) {
59
- _this._openSubs[index] = panel.panelOpened
60
- .pipe(takeUntil(_this._unsubscribe$))
61
- .subscribe(function () {
62
- _this._closeOtherTabs(index);
82
+ this.panels.forEach(function (panel, index) {
83
+ _this.openSubs[index] = panel.panelOpened.pipe(takeUntil(_this.unsubscribe$)).subscribe(function () {
84
+ _this.closeOtherTabs(index);
63
85
  });
64
86
  });
65
87
  };
66
- AccordionComponent.prototype._enableMultiplePanelBehavior = function () {
88
+ AccordionComponent.prototype.enableMultiplePanelBehavior = function () {
67
89
  var _this = this;
68
- this._panels.forEach(function (_, index) {
69
- if (_this._openSubs[index]) {
70
- _this._openSubs[index].unsubscribe();
90
+ this.panels.forEach(function (_, index) {
91
+ if (_this.openSubs[index]) {
92
+ _this.openSubs[index].unsubscribe();
71
93
  }
72
94
  });
73
95
  };
@@ -90,4 +112,4 @@ var AccordionComponent = /** @class */ (function () {
90
112
  return AccordionComponent;
91
113
  }());
92
114
  export { AccordionComponent };
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2FjY29yZGlvbi9hY2NvcmRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQStCLFNBQVMsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUF1QyxNQUFNLGVBQWUsQ0FBQztBQUVwSSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFPM0M7SUFBQTtRQUtVLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFLaEIsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3BDLFlBQU8sR0FBOEIsRUFBRSxDQUFDO0lBdUVuRCxDQUFDO0lBcEVTLCtDQUFrQixHQUF6QjtRQUNHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVoRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVNLHdDQUFXLEdBQWxCLFVBQW1CLE9BQXNCO1FBQ3RDLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDbkQ7SUFDSixDQUFDO0lBRU0sd0NBQVcsR0FBbEI7UUFDRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVPLHVDQUFVLEdBQWxCOztRQUNHLFVBQUksSUFBSSxDQUFDLE9BQU8sMENBQUUsTUFBTSxFQUFFO1lBQ3ZCLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLEVBQUU7Z0JBQzlELElBQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUVqRCxJQUFJLENBQUMsU0FBUyxFQUFFO29CQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztpQkFDL0Q7Z0JBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUU7b0JBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7aUJBQy9DO2FBQ0g7U0FDSDtJQUNKLENBQUM7SUFFTyw0Q0FBZSxHQUF2QixVQUF3QixTQUFpQjtRQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFDLEtBQUssRUFBRSxLQUFLO1lBQy9CLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtnQkFDdEIsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7YUFDdkI7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFTyx5Q0FBWSxHQUFwQixVQUFxQixRQUFpQjtRQUNuQyxJQUFJLFFBQVEsRUFBRTtZQUNYLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1NBQ3RDO2FBQU07WUFDSixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztTQUNwQztJQUNKLENBQUM7SUFFTyx1REFBMEIsR0FBbEM7UUFBQSxpQkFRQztRQVBFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQUMsS0FBSyxFQUFFLEtBQUs7WUFDL0IsS0FBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsV0FBVztpQkFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQ25DLFNBQVMsQ0FBQztnQkFDUixLQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRU8seURBQTRCLEdBQXBDO1FBQUEsaUJBTUM7UUFMRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFDLENBQUMsRUFBRSxLQUFLO1lBQzNCLElBQUksS0FBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDeEIsS0FBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUN0QztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQS9FRDtRQURDLEtBQUssRUFBRTsyREFDbUI7SUFHM0I7UUFEQyxLQUFLLEVBQUU7d0RBQ2dCO0lBR3hCO1FBREMsZUFBZSxDQUFDLHVCQUF1QixDQUFDO2dFQUNtQjtJQVJsRCxrQkFBa0I7UUFMOUIsU0FBUyxDQUFDO1lBQ1IsUUFBUSxFQUFFLGFBQWE7WUFDdkIsNEVBQXlDOztTQUUzQyxDQUFDO09BQ1csa0JBQWtCLENBa0Y5QjtJQUFELHlCQUFDO0NBQUEsQUFsRkQsSUFrRkM7U0FsRlksa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgT25DaGFuZ2VzLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgSW5wdXQsIFF1ZXJ5TGlzdCwgU2ltcGxlQ2hhbmdlcywgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgQWNjb3JkaW9uUGFuZWxDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL2FjY29yZGlvbi1wYW5lbC9hY2NvcmRpb24tcGFuZWwuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5cbkBDb21wb25lbnQoe1xuICAgc2VsZWN0b3I6IFwicy1hY2NvcmRpb25cIixcbiAgIHRlbXBsYXRlVXJsOiBcIi4vYWNjb3JkaW9uLmNvbXBvbmVudC5odG1sXCIsXG4gICBzdHlsZVVybHM6IFtcIi4vYWNjb3JkaW9uLmNvbXBvbmVudC5zY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICBASW5wdXQoKVxuICAgcHVibGljIGFjdGl2ZUluZGV4OiBudW1iZXI7XG5cbiAgIEBJbnB1dCgpXG4gICBwdWJsaWMgbXVsdGlwbGUgPSBmYWxzZTtcblxuICAgQENvbnRlbnRDaGlsZHJlbihBY2NvcmRpb25QYW5lbENvbXBvbmVudClcbiAgIHB1YmxpYyBwYW5lbHNDb21wb25lbnRzOiBRdWVyeUxpc3Q8QWNjb3JkaW9uUGFuZWxDb21wb25lbnQ+O1xuXG4gICBwcml2YXRlIF91bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgcHJpdmF0ZSBfcGFuZWxzOiBBY2NvcmRpb25QYW5lbENvbXBvbmVudFtdID0gW107XG4gICBwcml2YXRlIF9vcGVuU3ViczogU3Vic2NyaXB0aW9uW107XG5cbiAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICB0aGlzLl9wYW5lbHMgPSB0aGlzLnBhbmVsc0NvbXBvbmVudHMudG9BcnJheSgpO1xuICAgICAgdGhpcy5fb3BlblN1YnMgPSBuZXcgQXJyYXkodGhpcy5fcGFuZWxzLmxlbmd0aCk7XG5cbiAgICAgIHRoaXMuX3NldEJlaGF2aW9yKHRoaXMubXVsdGlwbGUpO1xuICAgICAgdGhpcy5fc2V0dXBUYWJzKCk7XG4gICB9XG5cbiAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICBpZiAoY2hhbmdlcy5tdWx0aXBsZSkge1xuICAgICAgICAgdGhpcy5fc2V0QmVoYXZpb3IoY2hhbmdlcy5tdWx0aXBsZS5jdXJyZW50VmFsdWUpO1xuICAgICAgfVxuICAgfVxuXG4gICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICB0aGlzLl91bnN1YnNjcmliZSQubmV4dCgpO1xuICAgICAgdGhpcy5fdW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICB9XG5cbiAgIHByaXZhdGUgX3NldHVwVGFicygpOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLl9wYW5lbHM/Lmxlbmd0aCkge1xuICAgICAgICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggIT09IHVuZGVmaW5lZCAmJiB0aGlzLmFjdGl2ZUluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmVUYWIgPSB0aGlzLl9wYW5lbHNbdGhpcy5hY3RpdmVJbmRleF07XG5cbiAgICAgICAgICAgIGlmICghYWN0aXZlVGFiKSB7XG4gICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJhY3RpdmVJbmRleCBkb2VzIG5vdCByZXByZXNlbnQgYW55IHBhbmVsLlwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFhY3RpdmVUYWIuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgIHRoaXMuX3BhbmVsc1t0aGlzLmFjdGl2ZUluZGV4XS5pc09wZW4gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgfVxuICAgICAgfVxuICAgfVxuXG4gICBwcml2YXRlIF9jbG9zZU90aGVyVGFicyhleGNlcHRpb246IG51bWJlcikge1xuICAgICAgdGhpcy5fcGFuZWxzLmZvckVhY2goKHBhbmVsLCBpbmRleCkgPT4ge1xuICAgICAgICAgaWYgKGluZGV4ICE9PSBleGNlcHRpb24pIHtcbiAgICAgICAgICAgIHBhbmVsLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICAgfVxuICAgICAgfSk7XG4gICB9XG5cbiAgIHByaXZhdGUgX3NldEJlaGF2aW9yKG11bHRpcGxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgIHRoaXMuX2VuYWJsZU11bHRpcGxlUGFuZWxCZWhhdmlvcigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgIHRoaXMuX2VuYWJsZVNpbmdsZVBhbmVsQmVoYXZpb3IoKTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHJpdmF0ZSBfZW5hYmxlU2luZ2xlUGFuZWxCZWhhdmlvcigpIHtcbiAgICAgIHRoaXMuX3BhbmVscy5mb3JFYWNoKChwYW5lbCwgaW5kZXgpID0+IHtcbiAgICAgICAgIHRoaXMuX29wZW5TdWJzW2luZGV4XSA9IHBhbmVsLnBhbmVsT3BlbmVkXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgdGhpcy5fY2xvc2VPdGhlclRhYnMoaW5kZXgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgIH1cblxuICAgcHJpdmF0ZSBfZW5hYmxlTXVsdGlwbGVQYW5lbEJlaGF2aW9yKCkge1xuICAgICAgdGhpcy5fcGFuZWxzLmZvckVhY2goKF8sIGluZGV4KSA9PiB7XG4gICAgICAgICBpZiAodGhpcy5fb3BlblN1YnNbaW5kZXhdKSB7XG4gICAgICAgICAgICB0aGlzLl9vcGVuU3Vic1tpbmRleF0udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgIH1cbiAgICAgIH0pO1xuICAgfVxufVxuIl19
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2FjY29yZGlvbi9hY2NvcmRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQStCLFNBQVMsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUU1SSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFPM0M7SUFBQTtRQUtXLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFLaEIsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ25DLFdBQU0sR0FBOEIsRUFBRSxDQUFDO0lBbUZuRCxDQUFDO0lBaEZHLHFDQUFRLEdBQVI7UUFDSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLCtDQUFrQixHQUF6QjtRQUNJLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU5QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVNLHdDQUFXLEdBQWxCLFVBQW1CLE9BQXNCO1FBQ3JDLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMs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Q0FBQzthQUN0QztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQTNGRDtRQURDLEtBQUssRUFBRTsyREFDOEI7SUFHdEM7UUFEQyxLQUFLLEVBQUU7d0RBQ2dCO0lBR3hCO1FBREMsZUFBZSxDQUFDLHVCQUF1QixDQUFDO2dFQUNtQjtJQVJuRCxrQkFBa0I7UUFMOUIsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLGFBQWE7WUFDdkIsNEVBQXlDOztTQUU1QyxDQUFDO09BQ1csa0JBQWtCLENBOEY5QjtJQUFELHlCQUFDO0NBQUEsQUE5RkQsSUE4RkM7U0E5Rlksa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgT25DaGFuZ2VzLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgSW5wdXQsIFF1ZXJ5TGlzdCwgU2ltcGxlQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBBY2NvcmRpb25QYW5lbENvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvYWNjb3JkaW9uLXBhbmVsL2FjY29yZGlvbi1wYW5lbC5jb21wb25lbnRcIjtcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwicy1hY2NvcmRpb25cIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2FjY29yZGlvbi5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi9hY2NvcmRpb24uY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIEFjY29yZGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFjdGl2ZUluZGV4OiBudW1iZXIgfCBudW1iZXJbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG11bHRpcGxlID0gZmFsc2U7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKEFjY29yZGlvblBhbmVsQ29tcG9uZW50KVxuICAgIHB1YmxpYyBwYW5lbHNDb21wb25lbnRzOiBRdWVyeUxpc3Q8QWNjb3JkaW9uUGFuZWxDb21wb25lbnQ+O1xuXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgcGFuZWxzOiBBY2NvcmRpb25QYW5lbENvbXBvbmVudFtdID0gW107XG4gICAgcHJpdmF0ZSBvcGVuU3ViczogU3Vic2NyaXB0aW9uW107XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUlucHV0cygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFuZWxzID0gdGhpcy5wYW5lbHNDb21wb25lbnRzLnRvQXJyYXkoKTtcbiAgICAgICAgdGhpcy5vcGVuU3VicyA9IG5ldyBBcnJheSh0aGlzLnBhbmVscy5sZW5ndGgpO1xuXG4gICAgICAgIHRoaXMuc2V0QmVoYXZpb3IodGhpcy5tdWx0aXBsZSk7XG4gICAgICAgIHRoaXMuc2V0dXBUYWJzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QmVoYXZpb3IoY2hhbmdlcy5tdWx0aXBsZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUlucHV0cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodGhpcy5hY3RpdmVJbmRleCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSBhY3RpdmVJbmRleCBzaG91bGQgbm90IGJlIGFuIGFycmF5IHdoZW4gbXVsdGlwbGUgaXMgc2V0IHRvIGZhbHNlLlwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBUYWJzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wYW5lbHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggIT09IHVuZGVmaW5lZCAmJiB0aGlzLmFjdGl2ZUluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlVGFicyA9IEFycmF5LmlzQXJyYXkodGhpcy5hY3RpdmVJbmRleClcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnBhbmVscy5maWx0ZXIoKF8sIGluZGV4KSA9PiAodGhpcy5hY3RpdmVJbmRleCBhcyBudW1iZXJbXSkuaW5jbHVkZXMoaW5kZXgpKVxuICAgICAgICAgICAgICAgICAgICA6IFt0aGlzLnBhbmVsc1t0aGlzLmFjdGl2ZUluZGV4XV07XG5cbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlVGFicy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiYWN0aXZlSW5kZXggZG9lcyBub3QgcmVwcmVzZW50IGFueSBwYW5lbC5cIik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBhY3RpdmVUYWIgb2YgYWN0aXZlVGFicykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZVRhYi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlVGFiLmlzT3BlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNsb3NlT3RoZXJUYWJzKGV4Y2VwdGlvbjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucGFuZWxzLmZvckVhY2goKHBhbmVsLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKGluZGV4ICE9PSBleGNlcHRpb24pIHtcbiAgICAgICAgICAgICAgICBwYW5lbC5pc09wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRCZWhhdmlvcihtdWx0aXBsZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlTXVsdGlwbGVQYW5lbEJlaGF2aW9yKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZVNpbmdsZVBhbmVsQmVoYXZpb3IoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZW5hYmxlU2luZ2xlUGFuZWxCZWhhdmlvcigpIHtcbiAgICAgICAgdGhpcy5wYW5lbHMuZm9yRWFjaCgocGFuZWwsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9wZW5TdWJzW2luZGV4XSA9IHBhbmVsLnBhbmVsT3BlbmVkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlT3RoZXJUYWJzKGluZGV4KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVuYWJsZU11bHRpcGxlUGFuZWxCZWhhdmlvcigpIHtcbiAgICAgICAgdGhpcy5wYW5lbHMuZm9yRWFjaCgoXywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wZW5TdWJzW2luZGV4XSkge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlblN1YnNbaW5kZXhdLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -8,7 +8,7 @@ import { HostProjectConfigsInjectionToken } from "../../../angular-components.mo
8
8
  import { LocaleService } from "../../locale/locale.service";
9
9
  import { NumericService } from "../../locale/services/numeric.service";
10
10
  import { convertToMomentDateFormat } from "../../utils/locale-utils";
11
- import { isNullOrUndefined } from "../../utils/utils";
11
+ import { deepClone, isNullOrUndefined } from "../../utils/utils";
12
12
  import { EnumColumnFieldType } from "./models";
13
13
  var moment = moment_;
14
14
  var TableColumnsComponent = /** @class */ (function () {
@@ -61,11 +61,11 @@ var TableColumnsComponent = /** @class */ (function () {
61
61
  };
62
62
  TableColumnsComponent.prototype.createColumnsTemplate = function (changes) {
63
63
  var _this = this;
64
- var _a, _b, _c;
64
+ var _a, _b, _c, _d;
65
65
  this.viewContainerRef.clear();
66
66
  var columns = ((_a = changes.columns) === null || _a === void 0 ? void 0 : _a.currentValue) || this.columns;
67
- var rowValue = ((_b = changes.rowValue) === null || _b === void 0 ? void 0 : _b.currentValue) || this.rowValue;
68
- var locale = ((_c = changes.locale) === null || _c === void 0 ? void 0 : _c.currentValue) || this.locale;
67
+ var rowValue = deepClone((_c = (_b = changes.rowValue) === null || _b === void 0 ? void 0 : _b.currentValue) !== null && _c !== void 0 ? _c : this.rowValue);
68
+ var locale = ((_d = changes.locale) === null || _d === void 0 ? void 0 : _d.currentValue) || this.locale;
69
69
  this.formattedColumns = columns.map(function (column) { return _this.getColumnValue(column, rowValue, locale); });
70
70
  this.cellsData = this.formattedColumns.map(function (column) { return _this.getCellData(column); });
71
71
  this.viewContainerRef.createEmbeddedView(this.columnsTemplate);
@@ -196,14 +196,14 @@ var TableColumnsComponent = /** @class */ (function () {
196
196
  };
197
197
  TableColumnsComponent.prototype.getColumnScale = function (scale) {
198
198
  if (typeof scale === "function") {
199
- return scale(this.rowValue);
199
+ return scale(deepClone(this.rowValue));
200
200
  }
201
201
  return scale;
202
202
  };
203
203
  TableColumnsComponent.prototype.getColumnInfoSign = function (infoSign) {
204
204
  if (infoSign !== undefined && infoSign !== null) {
205
205
  if (typeof infoSign === "function") {
206
- return infoSign(this.rowValue);
206
+ return infoSign(deepClone(this.rowValue));
207
207
  }
208
208
  return infoSign;
209
209
  }
@@ -212,7 +212,7 @@ var TableColumnsComponent = /** @class */ (function () {
212
212
  TableColumnsComponent.prototype.getColumnTooltip = function (tooltip) {
213
213
  if (tooltip !== undefined && tooltip !== null) {
214
214
  if (typeof tooltip === "function") {
215
- return tooltip(this.rowValue);
215
+ return tooltip(deepClone(this.rowValue));
216
216
  }
217
217
  return tooltip;
218
218
  }
@@ -285,4 +285,4 @@ var TableColumnsComponent = /** @class */ (function () {
285
285
  return TableColumnsComponent;
286
286
  }());
287
287
  export { TableColumnsComponent };
288
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90YWJsZS90YWJsZS1jb2x1bW4vdGFibGUtY29sdW1ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxhQUFhLEVBQ2IsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBYyxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLFNBQVMsTUFBTSxjQUFjLENBQUM7QUFDckMsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7QUFFbEMsT0FBTyxFQUFzQixnQ0FBZ0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzFHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFdkUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUF3QixtQkFBbUIsRUFBNEIsTUFBTSxVQUFVLENBQUM7QUFFL0YsSUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDO0FBT3ZCO0lBMkJJLCtCQUNxQixhQUE0QixFQUM1QixnQkFBa0MsRUFDbEMsU0FBMkIsRUFDM0IsY0FBOEIsRUFDWSxrQkFBc0M7UUFKaEYsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFD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b250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgTWFza0NvbmZpZywgYXBwbHlNYXNrIH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9uZzItY3VycmVuY3ktbWFza1wiO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tIFwiYmlnbnVtYmVyLmpzXCI7XG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gXCJtb21lbnRcIjtcblxuaW1wb3J0IHsgSG9zdFByb2plY3RDb25maWdzLCBIb3N0UHJvamVjdENvbmZpZ3NJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuLi8uLi8uLi9hbmd1bGFyLWNvbXBvbmVudHMubW9kdWxlXCI7XG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2xvY2FsZS9sb2NhbGUuc2VydmljZVwiO1xuaW1wb3J0IHsgTnVtZXJpY1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vbG9jYWxlL3NlcnZpY2VzL251bWVyaWMuc2VydmljZVwiO1xuaW1wb3J0IHsgSVRva2VuIH0gZnJvbSBcIi4uLy4uL3Rva2VuLWxpc3RcIjtcbmltcG9ydCB7IGNvbnZlcnRUb01vbWVudERhdGVGb3JtYXQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvbG9jYWxlLXV0aWxzXCI7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsc1wiO1xuaW1wb3J0IHsgQ29sdW1uLCBDb2x1bW5WYWx1ZXMsIEVudW1Db2x1bW5GaWVsZFR5cGUsIFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucyB9IGZyb20gXCIuL21vZGVsc1wiO1xuXG5jb25zdCBtb21lbnQgPSBtb21lbnRfO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3RhYmxlLWNvbHVtbnMuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vdGFibGUtY29sdW1ucy5jb21wb25lbnQuc2Nzc1wiXSxcbiAgICBzZWxlY3RvcjogXCJzLXRhYmxlLWNvbHVtbnNcIixcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb2x1bW5zQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBAVmlld0NoaWxkKFwiY29sdW1uc1RlbXBsYXRlXCIsIHsgc3RhdGljOiB0cnVlIH0pIGNvbHVtbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbHVtbnMhOiBDb2x1bW5bXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJvd1ZhbHVlITogYW55O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9jYWxlOiBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnMgPSB7XG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICAuLi50aGlzLmxvY2FsZVNlcnZpY2UuZ2V0TG9jYWxlT3B0aW9ucygpLmNhbGVuZGFyLFxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogY29udmVydFRvTW9tZW50RGF0ZUZvcm1hdCh0aGlzLmxvY2FsZVNlcnZpY2UuZ2V0TG9jYWxlT3B0aW9ucygpLmNhbGVuZGFyLmRhdGVGb3JtYXQpLFxuICAgICAgICB9LFxuICAgICAgICBudW1iZXI6IHtcbiAgICAgICAgICAgIC4uLnRoaXMubG9jYWxlU2VydmljZS5nZXRMb2NhbGVPcHRpb25zKCkubnVtYmVyLFxuICAgICAgICAgICAgc2NhbGU6IDAsXG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIGNlbGxzRGF0YTogQ2VsbERhdGFbXSA9IFtdO1xuXG4gICAgZm9ybWF0dGVkQ29sdW1uczogQ29sdW1uVmFsdWVzW10gPSBbXTtcblxuICAgIEBWaWV3Q2hpbGRyZW4oXCJjb2x1bW5cIikgdGVzdGVFbGVtZW50czogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxlU2VydmljZTogTG9jYWxlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBudW1lcmljU2VydmljZTogTnVtZXJpY1NlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoSG9zdFByb2plY3RDb25maWdzSW5qZWN0aW9uVG9rZW4pIHByaXZhdGUgcmVhZG9ubHkgaG9zdFByb2plY3RDb25maWdzOiBIb3N0UHJvamVjdENvbmZpZ3NcbiAgICApIHt9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsaWRhdGVDb21wb25lbnRBdHRyaWJ1dGVzKGNoYW5nZXMpO1xuXG4gICAgICAgIGlmIChjaGFuZ2VzLmNvbHVtbnMgJiYgY2hhbmdlcy5jb2x1bW5zLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlcy5jb2x1bW5zLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuc29ydENvbHVtbnNCeVNlcXVlbmNlKGNoYW5nZXMuY29sdW1ucy5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jcmVhdGVDb2x1bW5zVGVtcGxhdGUoY2hhbmdlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQXJyYXkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDZWxsRGF0YShjb2x1bW46IENvbHVtblZhbHVlcyk6IENlbGxEYXRhIHtcbiAgICAgICAgY29uc3QgeyBjb2x1bW5WYWx1ZSwgc2VwYXJhdG9yLCB1bmluZm9ybWVkIH0gPSBjb2x1bW47XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjb2x1bW5WYWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgY29uc3Qgc3BsaXR0ZWRTdHJpbmcgPSBjb2x1bW5WYWx1ZS5zcGxpdChzZXBhcmF0b3IpO1xuXG4gICAgICAgICAgICByZXR1cm4gc3BsaXR0ZWRTdHJpbmcubWFwKChzdHJpbmcsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNMYXN0SW5kZXggPSBzcGxpdHRlZFN0cmluZy5sZW5ndGggLSAxID09PSBpbmRleDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgIGlzVW5pbmZvcm1lZDogc3RyaW5nID09PSB1bmluZm9ybWVkLFxuICAgICAgICAgICAgICAgICAgICBzZXBhcmF0b3I6ICFpc0xhc3RJbmRleCA/IHNlcGFyYXRvciA6IG51bGwsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUNvbXBvbmVudEF0dHJpYnV0ZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuY29sdW1ucyAmJiAhY2hhbmdlcy5jb2x1bW5zPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSAnY29sdW1ucycgYXR0cmlidXRlIG11c3QgYmUgaW5mb3JtZWQhXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5yb3dWYWx1ZSAmJiAhY2hhbmdlcy5yb3dWYWx1ZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgJ3Jvd1ZhbHVlJyBhdHRyaWJ1dGUgbXVzdCBiZSBpbmZvcm1lZCFcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNvbHVtbnNUZW1wbGF0ZShjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbnM6IENvbHVtbltdID0gY2hhbmdlcy5jb2x1bW5zPy5jdXJyZW50VmFsdWUgfHwgdGhpcy5jb2x1bW5zO1xuICAgICAgICBjb25zdCByb3dWYWx1ZTogb2JqZWN0ID0gY2hhbmdlcy5yb3dWYWx1ZT8uY3VycmVudFZhbHVlIHx8IHRoaXMucm93VmFsdWU7XG4gICAgICAgIGNvbnN0IGxvY2FsZTogVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zID0gY2hhbmdlcy5sb2NhbGU/LmN1cnJlbnRWYWx1ZSB8fCB0aGlzLmxvY2FsZTtcblxuICAgICAgICB0aGlzLmZvcm1hdHRlZENvbHVtbnMgPSBjb2x1bW5zLm1hcCgoY29sdW1uKSA9PiB0aGlzLmdldENvbHVtblZhbHVlKGNvbHVtbiwgcm93VmFsdWUsIGxvY2FsZSkpO1xuXG4gICAgICAgIHRoaXMuY2VsbHNEYXRhID0gdGhpcy5mb3JtYXR0ZWRDb2x1bW5zLm1hcCgoY29sdW1uKSA9PiB0aGlzLmdldENlbGxEYXRhKGNvbHVtbikpO1xuXG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5jb2x1bW5zVGVtcGxhdGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uU2VwYXJhdG9yKGNvbHVtbjogQ29sdW1uKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW4uc2VwYXJhdG9yID8gY29sdW1uLnNlcGFyYXRvciA6IFwiIC0gXCI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUcmFuc2xhdGlvblByZWZpeChjb2x1bW46IENvbHVtbikge1xuICAgICAgICByZXR1cm4gY29sdW1uLnByZWZpeCA/IGNvbHVtbi5wcmVmaXggOiBgJHt0aGlzLmhvc3RQcm9qZWN0Q29uZmlncy5kb21haW59LiR7dGhpcy5ob3N0UHJvamVjdENvbmZpZ3Muc2VydmljZX0uYDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQXR0cmlidXRlVmFsdWVJbnZhbGlkKGF0dHJpYnV0ZVZhbHVlOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID09PSBudWxsIHx8XG4gICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAoYXR0cmlidXRlVmFsdWU/Lm9wdGlvbnM/Lm51bWJlckZvcm1hdE9wdGlvbnMgJiYgaXNOdWxsT3JVbmRlZmluZWQoYXR0cmlidXRlVmFsdWU/LnZhbHVlKSkgfHxcbiAgICAgICAgICAgICh0aGlzLmlzQXJyYXkoYXR0cmlidXRlVmFsdWUpICYmICFhdHRyaWJ1dGVWYWx1ZS5sZW5ndGgpIHx8XG4gICAgICAgICAgICAodHlwZW9mIGF0dHJpYnV0ZVZhbHVlID09PSBcInN0cmluZ1wiICYmIGF0dHJpYnV0ZVZhbHVlLnRyaW0oKSA9PT0gXCJcIilcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZvcm1hdHRlZENvbHVtblZhbHVlKFxuICAgICAgICBjb2x1bW46IENvbHVtbixcbiAgICAgICAgY29sdW1uVmFsdWU6IGFueVtdLFxuICAgICAgICB1bmlmaWVkQ29sdW1uVmFsdWVzOiBzdHJpbmcsXG4gICAgICAgIHVuaW5mb3JtZWRUZXh0OiBzdHJpbmcsXG4gICAgICAgIHVuaW5mb3JtZWROdW1iZXI6IG51bWJlclxuICAgICkge1xuICAgICAgICBpZiAodW5pbmZvcm1lZE51bWJlciA9PT0gY29sdW1uLmF0dHJpYnV0ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5pbmZvcm1lZFRleHQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09IEVudW1Db2x1bW5GaWVsZFR5cGUuVE9LRU5TKSB7XG4gICAgICAgICAgICByZXR1cm4gW10uY29uY2F0LmFwcGx5KFxuICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICAgIGNvbHVtblZhbHVlLmZpbHRlcigodmFsdWVzKSA9PiB2YWx1ZXMgIT09IHVuaW5mb3JtZWRUZXh0KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmlmaWVkQ29sdW1uVmFsdWVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QXR0cmlidXRlVmFsdWUoYXR0cmlidXRlOiBzdHJpbmcsIHJvd1ZhbHVlOiBhbnkpIHtcbiAgICAgICAgbGV0IGF0dHJpYnV0ZVZhbHVlITogYW55O1xuXG4gICAgICAgIGF0dHJpYnV0ZS5zcGxpdChcIi9cIikuZm9yRWFjaCgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGVWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHZhbHVlLnNwbGl0KFwiLlwiKS5mb3JFYWNoKCh2YWw6IHN0cmluZywgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJvd1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSByb3dWYWx1ZVt2YWxdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZVt2YWxdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBhdHRyaWJ1dGVWYWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE51bWJlckNvbmZpZ3MoY29sdW1uOiBDb2x1bW4pOiBNYXNrQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMubG9jYWxlLm51bWJlcixcbiAgICAgICAgICAgIHNjYWxlOiBjb2x1bW4uc2NhbGUgIT09IG51bGwgJiYgY29sdW1uLnNjYWxlICE9PSB1bmRlZmluZWQgPyB0aGlzLmdldENvbHVtblNjYWxlKGNvbHVtbi5zY2FsZSkgOiB0aGlzLmxvY2FsZS5udW1iZXIuc2NhbGUsXG4gICAgICAgICAgICBwcmVmaXg6IGAke3RoaXMubG9jYWxlLm51bWJlci5jdXJyZW5jeVN5bWJvbH0gYCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERhdGVGb3JtYXQoY29sdW1uOiBDb2x1bW4sIGxvY2FsZTogVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW4uZGF0ZUZvcm1hdCA/IGNvbHVtbi5kYXRlRm9ybWF0IDogbG9jYWxlLmNhbGVuZGFyLmRhdGVGb3JtYXQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb2x1bW5WYWx1ZShjb2x1bW46IENvbHVtbiwgcm93VmFsdWU6IGFueSwgbG9jYWxlOiBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnMpOiBDb2x1bW5WYWx1ZXMge1xuICAgICAgICBjb25zdCBwcmVmaXggPSB0aGlzLmdldFRyYW5zbGF0aW9uUHJlZml4KGNvbHVtbik7XG4gICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHRoaXMuZ2V0Q29sdW1uU2VwYXJhdG9yKGNvbHVtbik7XG4gICAgICAgIGNvbnN0IHVuaW5mb3JtZWQgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHByZWZpeCArIFwiZW1wdHlfbGFiZWxcIik7XG4gICAgICAgIGNvbnN0IHN0eWxlID0gY29sdW1uLnN0eWxlO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtblZhbHVlID0gY29sdW1uLmF0dHJpYnV0ZXMubWFwKChhdHRyaWJ1dGU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlVmFsdWUgPSB0aGlzLmdldEF0dHJpYnV0ZVZhbHVlKGF0dHJpYnV0ZSwgcm93VmFsdWUpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc0F0dHJpYnV0ZVZhbHVlSW52YWxpZChhdHRyaWJ1dGVWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5pbmZvcm1lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbnVtYmVyQ29uZmlncyA9IHRoaXMuZ2V0TnVtYmVyQ29uZmlncyhjb2x1bW4pO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKGNvbHVtbi50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtQ29sdW1uRmllbGRUeXBlLkVOVU06XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGNvbHVtbi5lbnVtUHJlZml4ICsgYXR0cmlidXRlVmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKTtcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bUNvbHVtbkZpZWxkVHlwZS5DVVJSRU5DWToge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBudW1iZXJGb3JtYXRPcHRpb25zID0gYXR0cmlidXRlVmFsdWU/Lm9wdGlvbnM/Lm51bWJlckZvcm1hdE9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYXR0cmlidXRlVmFsdWUub3B0aW9ucy5udW1iZXJGb3JtYXRPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHR5cGVvZiBjb2x1bW4ubnVtYmVyRm9ybWF0T3B0aW9ucyA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gY29sdW1uLm51bWJlckZvcm1hdE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dEYXRhOiByb3dWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNvbHVtbi5udW1iZXJGb3JtYXRPcHRpb25zO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJGb3JtYXRPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMubnVtZXJpY1NlcnZpY2UuaW5zdGFudChhdHRyaWJ1dGVWYWx1ZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyRm9ybWF0T3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYXBwbHlNYXNrKGF0dHJpYnV0ZVZhbHVlLCBudW1iZXJDb25maWdzLCB0aGlzLmlzTnVtYmVyKGF0dHJpYnV0ZVZhbHVlKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtQ29sdW1uRmllbGRUeXBlLkRBVEU6XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGVGb3JtYXQgPSB0aGlzLmdldERhdGVGb3JtYXQoY29sdW1uLCBsb2NhbGUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW9tZW50KGF0dHJpYnV0ZVZhbHVlKS5mb3JtYXQoZGF0ZUZvcm1hdCk7XG5cbiAgICAgICAgICAgICAgICBjYXNlIEVudW1Db2x1bW5GaWVsZFR5cGUuQk9PTEVBTjpcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZSA/IFwieWVzXCIgOiBcIm5vXCI7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHByZWZpeCArIHZhbHVlKTtcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bUNvbHVtbkZpZWxkVHlwZS5OVU1CRVI6IHtcbiAgICAgICAgICAgICAgICAgICAgbnVtYmVyQ29uZmlncy5wcmVmaXggPSBcIlwiO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bWJlckZvcm1hdE9wdGlvbnMgPSBhdHRyaWJ1dGVWYWx1ZT8ub3B0aW9ucz8ubnVtYmVyRm9ybWF0T3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBhdHRyaWJ1dGVWYWx1ZS5vcHRpb25zLm51bWJlckZvcm1hdE9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdHlwZW9mIGNvbHVtbi5udW1iZXJGb3JtYXRPcHRpb25zID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjb2x1bW4ubnVtYmVyRm9ybWF0T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd0RhdGE6IHJvd1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogY29sdW1uLm51bWJlckZvcm1hdE9wdGlvbnM7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlckZvcm1hdE9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5udW1lcmljU2VydmljZS5pbnN0YW50KGF0dHJpYnV0ZVZhbHVlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJGb3JtYXRPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBhcHBseU1hc2soYXR0cmlidXRlVmFsdWUsIG51bWJlckNvbmZpZ3MsIHRoaXMuaXNOdW1iZXIoYXR0cmlidXRlVmFsdWUpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtQ29sdW1uRmllbGRUeXBlLlRPS0VOUzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VG9rZW5zKGF0dHJpYnV0ZVZhbHVlKTtcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgdW5pZmllZENvbHVtblZhbHVlcyA9IGNvbHVtblZhbHVlLmpvaW4oc2VwYXJhdG9yKTtcbiAgICAgICAgY29uc3QgdW5pbmZvcm1lZE51bWJlciA9IHVuaWZpZWRDb2x1bW5WYWx1ZXMuc3BsaXQoc2VwYXJhdG9yKS5maWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZSA9PT0gdW5pbmZvcm1lZCkubGVuZ3RoO1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRDb2x1bW5WYWx1ZSA9IHRoaXMuZ2V0Rm9ybWF0dGVkQ29sdW1uVmFsdWUoY29sdW1uLCBjb2x1bW5WYWx1ZSwgdW5pZmllZENvbHVtblZhbHVlcywgdW5pbmZvcm1lZCwgdW5pbmZvcm1lZE51bWJlcik7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0eWxlLFxuICAgICAgICAgICAgY29sdW1uVmFsdWU6IGZvcm1hdHRlZENvbHVtblZhbHVlLFxuICAgICAgICAgICAgc2VwYXJhdG9yLFxuICAgICAgICAgICAgdW5pbmZvcm1lZCxcbiAgICAgICAgICAgIGJhZGdlQ29uZmlnczogY29sdW1uPy5iYWRnZUNvbmZpZ3M/LmZpbmQoXG4gICAgICAgICAgICAgICAgKGJhZGdlQ29uZmlnKSA9PiBiYWRnZUNvbmZpZy5lbnVtVmFsdWUgPT09IHJvd1ZhbHVlW2NvbHVtbi5hdHRyaWJ1dGVzWzBdID8/IGNvbHVtbi5maWVsZF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2xvcjogY29sdW1uLmNvbG9yPy4ocm93VmFsdWUpLFxuICAgICAgICAgICAgdHlwZTogY29sdW1uLnR5cGUsXG4gICAgICAgICAgICB0b29sdGlwOiB0aGlzLmdldENvbHVtblRvb2x0aXAoY29sdW1uLnRvb2x0aXApLFxuICAgICAgICAgICAgaW5mb1NpZ246IHRoaXMuZ2V0Q29sdW1uSW5mb1NpZ24oY29sdW1uLmluZm9TaWduKSxcbiAgICAgICAgICAgIG9uTGlua0NsaWNrOiBjb2x1bW4ub25MaW5rQ2xpY2ssXG4gICAgICAgICAgICBvbkNvbHVtbkNsaWNrOiBjb2x1bW4ub25Db2x1bW5DbGljayxcbiAgICAgICAgICAgIGNvbXBhY3Q6IGNvbHVtbi5jb21wYWN0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uU2NhbGUoc2NhbGU6IG51bWJlciB8ICgocm93VmFsdWU6IGFueSkgPT4gbnVtYmVyKSk6IG51bWJlciB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2NhbGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIHNjYWxlKHRoaXMucm93VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzY2FsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbHVtbkluZm9TaWduKGluZm9TaWduOiBzdHJpbmcgfCAoKHJvd1ZhbHVlOiBhbnkpID0+IHN0cmluZykpOiBzdHJpbmcge1xuICAgICAgICBpZiAoaW5mb1NpZ24gIT09IHVuZGVmaW5lZCAmJiBpbmZvU2lnbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpbmZvU2lnbiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluZm9TaWduKHRoaXMucm93VmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGluZm9TaWduO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uVG9vbHRpcCh0b29sdGlwOiBzdHJpbmcgfCAoKHJvd1ZhbHVlOiBhbnkpID0+IHN0cmluZykpOiBzdHJpbmcge1xuICAgICAgICBpZiAodG9vbHRpcCAhPT0gdW5kZWZpbmVkICYmIHRvb2x0aXAgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdG9vbHRpcCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvb2x0aXAodGhpcy5yb3dWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdG9vbHRpcDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTnVtYmVyKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICFuZXcgQmlnTnVtYmVyKHZhbHVlKS5pc05hTigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VG9rZW5zKHZhbHVlczogYW55KTogSVRva2VuW10ge1xuICAgICAgICBpZiAoIXRoaXMuaXNBcnJheSh2YWx1ZXMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUbyB1c2UgdG9rZW5zIGFuIGFycmF5IG11c3QgYmUgaW5mb3JtZWRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZFRva2VuQXJyYXkodmFsdWVzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm90IGEgdmFsaWQgdG9rZW4gYXJyYXkuIE11c3QgYmUgYSBwcmltaXRpdmUgdmFsdWVzIGFycmF5IG9yIGFuIG9iamVjdHMgd2l0aCBsYWJlbCBhdHRyaWJ1dGUgYXJyYXlcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0xhYmVsT2JqZWN0QXJyYXkodmFsdWVzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZXNcbiAgICAgICAgICAgIC5maWx0ZXIoKHZhbHVlOiBhbnkpID0+IHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwpXG4gICAgICAgICAgICAubWFwKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSB0eXBlb2YgdmFsdWUgPT09IFwic3ltYm9sXCIgPyB2YWx1ZS50b1N0cmluZygpIDogYCR7dmFsdWV9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1ZhbGlkVG9rZW5BcnJheSh2YWx1ZXM6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzUHJpbWl0aXZlVmFsdWVzQXJyYXkodmFsdWVzKSB8fCB0aGlzLmlzTGFiZWxPYmplY3RBcnJheSh2YWx1ZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNQcmltaXRpdmVWYWx1ZXNBcnJheSh2YWx1ZXM6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2YWx1ZXMuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUgIT09IE9iamVjdCh2YWx1ZSkpLmxlbmd0aCA9PT0gdmFsdWVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTGFiZWxPYmplY3RBcnJheSh2YWx1ZXM6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2YWx1ZXMuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWU/LmxhYmVsICE9PSBudWxsICYmIHZhbHVlPy5sYWJlbCAhPT0gdW5kZWZpbmVkKS5sZW5ndGggPT09IHZhbHVlcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0Q29sdW1uc0J5U2VxdWVuY2UoY29sdW1uczogQ29sdW1uW10pOiBDb2x1bW5bXSB7XG4gICAgICAgIHJldHVybiBjb2x1bW5zLnNvcnQoKGEsIGIpID0+IGEuc2VxdWVuY2UgLSBiLnNlcXVlbmNlKTtcbiAgICB9XG59XG5cbnR5cGUgQ2VsbERhdGEgPSB7IHZhbHVlOiBzdHJpbmc7IGlzVW5pbmZvcm1lZDogYm9vbGVhbjsgc2VwYXJhdG9yOiBzdHJpbmcgfVtdO1xuIl19
288
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90YWJsZS90YWJsZS1jb2x1bW4vdGFibGUtY29sdW1ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxhQUFhLEVBQ2IsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBYyxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLFNBQVMsTUFBTSxjQUFjLENBQUM7QUFDckMsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7QUFFbEMsT0FBTyxFQUFzQixnQ0FBZ0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzFHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFdkUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pFLE9BQU8sRUFBd0IsbUJBQW1CLEVBQTRCLE1BQU0sVUFBVSxDQUFDO0FBRS9GLElBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQztBQU92QjtJQTJCSSwrQkFDcUIsYUFBNEIsRUFDNUIsZ0JBQWtDLEVBQ2xDLFNBQTJCLEVBQzNCLGNBQThCLEVBQ1ksa0JBQXNDO1FBSmhGLGtCQUFhLEdBQWIsYUFB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LHFCQUFxQixDQXNVakM7SUFBRCw0QkFBQztDQUFBLEFBdFVELElBc1VDO1NBdFVZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgTWFza0NvbmZpZywgYXBwbHlNYXNrIH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9uZzItY3VycmVuY3ktbWFza1wiO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tIFwiYmlnbnVtYmVyLmpzXCI7XG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gXCJtb21lbnRcIjtcblxuaW1wb3J0IHsgSG9zdFByb2plY3RDb25maWdzLCBIb3N0UHJvamVjdENvbmZpZ3NJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuLi8uLi8uLi9hbmd1bGFyLWNvbXBvbmVudHMubW9kdWxlXCI7XG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2xvY2FsZS9sb2NhbGUuc2VydmljZVwiO1xuaW1wb3J0IHsgTnVtZXJpY1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vbG9jYWxlL3NlcnZpY2VzL251bWVyaWMuc2VydmljZVwiO1xuaW1wb3J0IHsgSVRva2VuIH0gZnJvbSBcIi4uLy4uL3Rva2VuLWxpc3RcIjtcbmltcG9ydCB7IGNvbnZlcnRUb01vbWVudERhdGVGb3JtYXQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvbG9jYWxlLXV0aWxzXCI7XG5pbXBvcnQgeyBkZWVwQ2xvbmUsIGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWxzXCI7XG5pbXBvcnQgeyBDb2x1bW4sIENvbHVtblZhbHVlcywgRW51bUNvbHVtbkZpZWxkVHlwZSwgVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zIH0gZnJvbSBcIi4vbW9kZWxzXCI7XG5cbmNvbnN0IG1vbWVudCA9IG1vbWVudF87XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiBcIi4vdGFibGUtY29sdW1ucy5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi90YWJsZS1jb2x1bW5zLmNvbXBvbmVudC5zY3NzXCJdLFxuICAgIHNlbGVjdG9yOiBcInMtdGFibGUtY29sdW1uc1wiLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbHVtbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBWaWV3Q2hpbGQoXCJjb2x1bW5zVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSkgY29sdW1uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29sdW1ucyE6IENvbHVtbltdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcm93VmFsdWUhOiBhbnk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsb2NhbGU6IFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucyA9IHtcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIC4uLnRoaXMubG9jYWxlU2VydmljZS5nZXRMb2NhbGVPcHRpb25zKCkuY2FsZW5kYXIsXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiBjb252ZXJ0VG9Nb21lbnREYXRlRm9ybWF0KHRoaXMubG9jYWxlU2VydmljZS5nZXRMb2NhbGVPcHRpb25zKCkuY2FsZW5kYXIuZGF0ZUZvcm1hdCksXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlcjoge1xuICAgICAgICAgICAgLi4udGhpcy5sb2NhbGVTZXJ2aWNlLmdldExvY2FsZU9wdGlvbnMoKS5udW1iZXIsXG4gICAgICAgICAgICBzY2FsZTogMCxcbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgY2VsbHNEYXRhOiBDZWxsRGF0YVtdID0gW107XG5cbiAgICBmb3JtYXR0ZWRDb2x1bW5zOiBDb2x1bW5WYWx1ZXNbXSA9IFtdO1xuXG4gICAgQFZpZXdDaGlsZHJlbihcImNvbHVtblwiKSB0ZXN0ZUVsZW1lbnRzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2NhbGVTZXJ2aWNlOiBMb2NhbGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG51bWVyaWNTZXJ2aWNlOiBOdW1lcmljU2VydmljZSxcbiAgICAgICAgQEluamVjdChIb3N0UHJvamVjdENvbmZpZ3NJbmplY3Rpb25Ub2tlbikgcHJpdmF0ZSByZWFkb25seSBob3N0UHJvamVjdENvbmZpZ3M6IEhvc3RQcm9qZWN0Q29uZmlnc1xuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUNvbXBvbmVudEF0dHJpYnV0ZXMoY2hhbmdlcyk7XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuY29sdW1ucyAmJiBjaGFuZ2VzLmNvbHVtbnMuY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLmNvbHVtbnMucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5zb3J0Q29sdW1uc0J5U2VxdWVuY2UoY2hhbmdlcy5jb2x1bW5zLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNyZWF0ZUNvbHVtbnNUZW1wbGF0ZShjaGFuZ2VzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNBcnJheSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENlbGxEYXRhKGNvbHVtbjogQ29sdW1uVmFsdWVzKTogQ2VsbERhdGEge1xuICAgICAgICBjb25zdCB7IGNvbHVtblZhbHVlLCBzZXBhcmF0b3IsIHVuaW5mb3JtZWQgfSA9IGNvbHVtbjtcblxuICAgICAgICBpZiAodHlwZW9mIGNvbHVtblZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBjb25zdCBzcGxpdHRlZFN0cmluZyA9IGNvbHVtblZhbHVlLnNwbGl0KHNlcGFyYXRvcik7XG5cbiAgICAgICAgICAgIHJldHVybiBzcGxpdHRlZFN0cmluZy5tYXAoKHN0cmluZywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0xhc3RJbmRleCA9IHNwbGl0dGVkU3RyaW5nLmxlbmd0aCAtIDEgPT09IGluZGV4O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgaXNVbmluZm9ybWVkOiBzdHJpbmcgPT09IHVuaW5mb3JtZWQsXG4gICAgICAgICAgICAgICAgICAgIHNlcGFyYXRvcjogIWlzTGFzdEluZGV4ID8gc2VwYXJhdG9yIDogbnVsbCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlQ29tcG9uZW50QXR0cmlidXRlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb2x1bW5zICYmICFjaGFuZ2VzLmNvbHVtbnM/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlICdjb2x1bW5zJyBhdHRyaWJ1dGUgbXVzdCBiZSBpbmZvcm1lZCFcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnJvd1ZhbHVlICYmICFjaGFuZ2VzLnJvd1ZhbHVlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSAncm93VmFsdWUnIGF0dHJpYnV0ZSBtdXN0IGJlIGluZm9ybWVkIVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQ29sdW1uc1RlbXBsYXRlKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG5cbiAgICAgICAgY29uc3QgY29sdW1uczogQ29sdW1uW10gPSBjaGFuZ2VzLmNvbHVtbnM/LmN1cnJlbnRWYWx1ZSB8fCB0aGlzLmNvbHVtbnM7XG4gICAgICAgIGNvbnN0IHJvd1ZhbHVlOiBvYmplY3QgPSBkZWVwQ2xvbmUoY2hhbmdlcy5yb3dWYWx1ZT8uY3VycmVudFZhbHVlID8/IHRoaXMucm93VmFsdWUpO1xuICAgICAgICBjb25zdCBsb2NhbGU6IFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucyA9IGNoYW5nZXMubG9jYWxlPy5jdXJyZW50VmFsdWUgfHwgdGhpcy5sb2NhbGU7XG5cbiAgICAgICAgdGhpcy5mb3JtYXR0ZWRDb2x1bW5zID0gY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gdGhpcy5nZXRDb2x1bW5WYWx1ZShjb2x1bW4sIHJvd1ZhbHVlLCBsb2NhbGUpKTtcblxuICAgICAgICB0aGlzLmNlbGxzRGF0YSA9IHRoaXMuZm9ybWF0dGVkQ29sdW1ucy5tYXAoKGNvbHVtbikgPT4gdGhpcy5nZXRDZWxsRGF0YShjb2x1bW4pKTtcblxuICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuY29sdW1uc1RlbXBsYXRlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbHVtblNlcGFyYXRvcihjb2x1bW46IENvbHVtbikge1xuICAgICAgICByZXR1cm4gY29sdW1uLnNlcGFyYXRvciA/IGNvbHVtbi5zZXBhcmF0b3IgOiBcIiAtIFwiO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VHJhbnNsYXRpb25QcmVmaXgoY29sdW1uOiBDb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5wcmVmaXggPyBjb2x1bW4ucHJlZml4IDogYCR7dGhpcy5ob3N0UHJvamVjdENvbmZpZ3MuZG9tYWlufS4ke3RoaXMuaG9zdFByb2plY3RDb25maWdzLnNlcnZpY2V9LmA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0F0dHJpYnV0ZVZhbHVlSW52YWxpZChhdHRyaWJ1dGVWYWx1ZTogYW55KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgYXR0cmlidXRlVmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgKGF0dHJpYnV0ZVZhbHVlPy5vcHRpb25zPy5udW1iZXJGb3JtYXRPcHRpb25zICYmIGlzTnVsbE9yVW5kZWZpbmVkKGF0dHJpYnV0ZVZhbHVlPy52YWx1ZSkpIHx8XG4gICAgICAgICAgICAodGhpcy5pc0FycmF5KGF0dHJpYnV0ZVZhbHVlKSAmJiAhYXR0cmlidXRlVmFsdWUubGVuZ3RoKSB8fFxuICAgICAgICAgICAgKHR5cGVvZiBhdHRyaWJ1dGVWYWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiBhdHRyaWJ1dGVWYWx1ZS50cmltKCkgPT09IFwiXCIpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGb3JtYXR0ZWRDb2x1bW5WYWx1ZShcbiAgICAgICAgY29sdW1uOiBDb2x1bW4sXG4gICAgICAgIGNvbHVtblZhbHVlOiBhbnlbXSxcbiAgICAgICAgdW5pZmllZENvbHVtblZhbHVlczogc3RyaW5nLFxuICAgICAgICB1bmluZm9ybWVkVGV4dDogc3RyaW5nLFxuICAgICAgICB1bmluZm9ybWVkTnVtYmVyOiBudW1iZXJcbiAgICApIHtcbiAgICAgICAgaWYgKHVuaW5mb3JtZWROdW1iZXIgPT09IGNvbHVtbi5hdHRyaWJ1dGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuaW5mb3JtZWRUZXh0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSBFbnVtQ29sdW1uRmllbGRUeXBlLlRPS0VOUykge1xuICAgICAgICAgICAgcmV0dXJuIFtdLmNvbmNhdC5hcHBseShcbiAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgICBjb2x1bW5WYWx1ZS5maWx0ZXIoKHZhbHVlcykgPT4gdmFsdWVzICE9PSB1bmluZm9ybWVkVGV4dClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5pZmllZENvbHVtblZhbHVlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEF0dHJpYnV0ZVZhbHVlKGF0dHJpYnV0ZTogc3RyaW5nLCByb3dWYWx1ZTogYW55KSB7XG4gICAgICAgIGxldCBhdHRyaWJ1dGVWYWx1ZSE6IGFueTtcblxuICAgICAgICBhdHRyaWJ1dGUuc3BsaXQoXCIvXCIpLmZvckVhY2goKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGlmICghYXR0cmlidXRlVmFsdWUpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZS5zcGxpdChcIi5cIikuZm9yRWFjaCgodmFsOiBzdHJpbmcsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyb3dWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gcm93VmFsdWVbdmFsXTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gYXR0cmlidXRlVmFsdWVbdmFsXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gYXR0cmlidXRlVmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXROdW1iZXJDb25maWdzKGNvbHVtbjogQ29sdW1uKTogTWFza0NvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi50aGlzLmxvY2FsZS5udW1iZXIsXG4gICAgICAgICAgICBzY2FsZTogY29sdW1uLnNjYWxlICE9PSBudWxsICYmIGNvbHVtbi5zY2FsZSAhPT0gdW5kZWZpbmVkID8gdGhpcy5nZXRDb2x1bW5TY2FsZShjb2x1bW4uc2NhbGUpIDogdGhpcy5sb2NhbGUubnVtYmVyLnNjYWxlLFxuICAgICAgICAgICAgcHJlZml4OiBgJHt0aGlzLmxvY2FsZS5udW1iZXIuY3VycmVuY3lTeW1ib2x9IGAsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREYXRlRm9ybWF0KGNvbHVtbjogQ29sdW1uLCBsb2NhbGU6IFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucykge1xuICAgICAgICByZXR1cm4gY29sdW1uLmRhdGVGb3JtYXQgPyBjb2x1bW4uZGF0ZUZvcm1hdCA6IGxvY2FsZS5jYWxlbmRhci5kYXRlRm9ybWF0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uVmFsdWUoY29sdW1uOiBDb2x1bW4sIHJvd1ZhbHVlOiBhbnksIGxvY2FsZTogVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zKTogQ29sdW1uVmFsdWVzIHtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gdGhpcy5nZXRUcmFuc2xhdGlvblByZWZpeChjb2x1bW4pO1xuICAgICAgICBjb25zdCBzZXBhcmF0b3IgPSB0aGlzLmdldENvbHVtblNlcGFyYXRvcihjb2x1bW4pO1xuICAgICAgICBjb25zdCB1bmluZm9ybWVkID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChwcmVmaXggKyBcImVtcHR5X2xhYmVsXCIpO1xuICAgICAgICBjb25zdCBzdHlsZSA9IGNvbHVtbi5zdHlsZTtcblxuICAgICAgICBjb25zdCBjb2x1bW5WYWx1ZSA9IGNvbHVtbi5hdHRyaWJ1dGVzLm1hcCgoYXR0cmlidXRlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZVZhbHVlID0gdGhpcy5nZXRBdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGUsIHJvd1ZhbHVlKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNBdHRyaWJ1dGVWYWx1ZUludmFsaWQoYXR0cmlidXRlVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuaW5mb3JtZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG51bWJlckNvbmZpZ3MgPSB0aGlzLmdldE51bWJlckNvbmZpZ3MoY29sdW1uKTtcblxuICAgICAgICAgICAgc3dpdGNoIChjb2x1bW4udHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bUNvbHVtbkZpZWxkVHlwZS5FTlVNOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChjb2x1bW4uZW51bVByZWZpeCArIGF0dHJpYnV0ZVZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSk7XG5cbiAgICAgICAgICAgICAgICBjYXNlIEVudW1Db2x1bW5GaWVsZFR5cGUuQ1VSUkVOQ1k6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbnVtYmVyRm9ybWF0T3B0aW9ucyA9IGF0dHJpYnV0ZVZhbHVlPy5vcHRpb25zPy5udW1iZXJGb3JtYXRPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGF0dHJpYnV0ZVZhbHVlLm9wdGlvbnMubnVtYmVyRm9ybWF0T3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgOiB0eXBlb2YgY29sdW1uLm51bWJlckZvcm1hdE9wdGlvbnMgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNvbHVtbi5udW1iZXJGb3JtYXRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93RGF0YTogcm93VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjb2x1bW4ubnVtYmVyRm9ybWF0T3B0aW9ucztcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyRm9ybWF0T3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLm51bWVyaWNTZXJ2aWNlLmluc3RhbnQoYXR0cmlidXRlVmFsdWUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckZvcm1hdE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGFwcGx5TWFzayhhdHRyaWJ1dGVWYWx1ZSwgbnVtYmVyQ29uZmlncywgdGhpcy5pc051bWJlcihhdHRyaWJ1dGVWYWx1ZSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bUNvbHVtbkZpZWxkVHlwZS5EQVRFOlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRlRm9ybWF0ID0gdGhpcy5nZXREYXRlRm9ybWF0KGNvbHVtbiwgbG9jYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vbWVudChhdHRyaWJ1dGVWYWx1ZSkuZm9ybWF0KGRhdGVGb3JtYXQpO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtQ29sdW1uRmllbGRUeXBlLkJPT0xFQU46XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gYXR0cmlidXRlVmFsdWUgPyBcInllc1wiIDogXCJub1wiO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChwcmVmaXggKyB2YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICBjYXNlIEVudW1Db2x1bW5GaWVsZFR5cGUuTlVNQkVSOiB7XG4gICAgICAgICAgICAgICAgICAgIG51bWJlckNvbmZpZ3MucHJlZml4ID0gXCJcIjtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBudW1iZXJGb3JtYXRPcHRpb25zID0gYXR0cmlidXRlVmFsdWU/Lm9wdGlvbnM/Lm51bWJlckZvcm1hdE9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYXR0cmlidXRlVmFsdWUub3B0aW9ucy5udW1iZXJGb3JtYXRPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHR5cGVvZiBjb2x1bW4ubnVtYmVyRm9ybWF0T3B0aW9ucyA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gY29sdW1uLm51bWJlckZvcm1hdE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dEYXRhOiByb3dWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNvbHVtbi5udW1iZXJGb3JtYXRPcHRpb25zO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJGb3JtYXRPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMubnVtZXJpY1NlcnZpY2UuaW5zdGFudChhdHRyaWJ1dGVWYWx1ZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyRm9ybWF0T3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYXBwbHlNYXNrKGF0dHJpYnV0ZVZhbHVlLCBudW1iZXJDb25maWdzLCB0aGlzLmlzTnVtYmVyKGF0dHJpYnV0ZVZhbHVlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgRW51bUNvbHVtbkZpZWxkVHlwZS5UT0tFTlM6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFRva2VucyhhdHRyaWJ1dGVWYWx1ZSk7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHVuaWZpZWRDb2x1bW5WYWx1ZXMgPSBjb2x1bW5WYWx1ZS5qb2luKHNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IHVuaW5mb3JtZWROdW1iZXIgPSB1bmlmaWVkQ29sdW1uVmFsdWVzLnNwbGl0KHNlcGFyYXRvcikuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUgPT09IHVuaW5mb3JtZWQpLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkQ29sdW1uVmFsdWUgPSB0aGlzLmdldEZvcm1hdHRlZENvbHVtblZhbHVlKGNvbHVtbiwgY29sdW1uVmFsdWUsIHVuaWZpZWRDb2x1bW5WYWx1ZXMsIHVuaW5mb3JtZWQsIHVuaW5mb3JtZWROdW1iZXIpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdHlsZSxcbiAgICAgICAgICAgIGNvbHVtblZhbHVlOiBmb3JtYXR0ZWRDb2x1bW5WYWx1ZSxcbiAgICAgICAgICAgIHNlcGFyYXRvcixcbiAgICAgICAgICAgIHVuaW5mb3JtZWQsXG4gICAgICAgICAgICBiYWRnZUNvbmZpZ3M6IGNvbHVtbj8uYmFkZ2VDb25maWdzPy5maW5kKFxuICAgICAgICAgICAgICAgIChiYWRnZUNvbmZpZykgPT4gYmFkZ2VDb25maWcuZW51bVZhbHVlID09PSByb3dWYWx1ZVtjb2x1bW4uYXR0cmlidXRlc1swXSA/PyBjb2x1bW4uZmllbGRdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29sb3I6IGNvbHVtbi5jb2xvcj8uKHJvd1ZhbHVlKSxcbiAgICAgICAgICAgIHR5cGU6IGNvbHVtbi50eXBlLFxuICAgICAgICAgICAgdG9vbHRpcDogdGhpcy5nZXRDb2x1bW5Ub29sdGlwKGNvbHVtbi50b29sdGlwKSxcbiAgICAgICAgICAgIGluZm9TaWduOiB0aGlzLmdldENvbHVtbkluZm9TaWduKGNvbHVtbi5pbmZvU2lnbiksXG4gICAgICAgICAgICBvbkxpbmtDbGljazogY29sdW1uLm9uTGlua0NsaWNrLFxuICAgICAgICAgICAgb25Db2x1bW5DbGljazogY29sdW1uLm9uQ29sdW1uQ2xpY2ssXG4gICAgICAgICAgICBjb21wYWN0OiBjb2x1bW4uY29tcGFjdCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbHVtblNjYWxlKHNjYWxlOiBudW1iZXIgfCAoKHJvd1ZhbHVlOiBhbnkpID0+IG51bWJlcikpOiBudW1iZXIge1xuICAgICAgICBpZiAodHlwZW9mIHNjYWxlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBzY2FsZShkZWVwQ2xvbmUodGhpcy5yb3dWYWx1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzY2FsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbHVtbkluZm9TaWduKGluZm9TaWduOiBzdHJpbmcgfCAoKHJvd1ZhbHVlOiBhbnkpID0+IHN0cmluZykpOiBzdHJpbmcge1xuICAgICAgICBpZiAoaW5mb1NpZ24gIT09IHVuZGVmaW5lZCAmJiBpbmZvU2lnbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpbmZvU2lnbiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluZm9TaWduKGRlZXBDbG9uZSh0aGlzLnJvd1ZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaW5mb1NpZ247XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb2x1bW5Ub29sdGlwKHRvb2x0aXA6IHN0cmluZyB8ICgocm93VmFsdWU6IGFueSkgPT4gc3RyaW5nKSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0b29sdGlwICE9PSB1bmRlZmluZWQgJiYgdG9vbHRpcCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0b29sdGlwID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9vbHRpcChkZWVwQ2xvbmUodGhpcy5yb3dWYWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRvb2x0aXA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc051bWJlcih2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhbmV3IEJpZ051bWJlcih2YWx1ZSkuaXNOYU4oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRva2Vucyh2YWx1ZXM6IGFueSk6IElUb2tlbltdIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQXJyYXkodmFsdWVzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVG8gdXNlIHRva2VucyBhbiBhcnJheSBtdXN0IGJlIGluZm9ybWVkXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWRUb2tlbkFycmF5KHZhbHVlcykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vdCBhIHZhbGlkIHRva2VuIGFycmF5LiBNdXN0IGJlIGEgcHJpbWl0aXZlIHZhbHVlcyBhcnJheSBvciBhbiBvYmplY3RzIHdpdGggbGFiZWwgYXR0cmlidXRlIGFycmF5XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNMYWJlbE9iamVjdEFycmF5KHZhbHVlcykpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWVzXG4gICAgICAgICAgICAuZmlsdGVyKCh2YWx1ZTogYW55KSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKVxuICAgICAgICAgICAgLm1hcCgodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gdHlwZW9mIHZhbHVlID09PSBcInN5bWJvbFwiID8gdmFsdWUudG9TdHJpbmcoKSA6IGAke3ZhbHVlfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZFRva2VuQXJyYXkodmFsdWVzOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ByaW1pdGl2ZVZhbHVlc0FycmF5KHZhbHVlcykgfHwgdGhpcy5pc0xhYmVsT2JqZWN0QXJyYXkodmFsdWVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzUHJpbWl0aXZlVmFsdWVzQXJyYXkodmFsdWVzOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdmFsdWVzLmZpbHRlcigodmFsdWUpID0+IHZhbHVlICE9PSBPYmplY3QodmFsdWUpKS5sZW5ndGggPT09IHZhbHVlcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0xhYmVsT2JqZWN0QXJyYXkodmFsdWVzOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdmFsdWVzLmZpbHRlcigodmFsdWUpID0+IHZhbHVlPy5sYWJlbCAhPT0gbnVsbCAmJiB2YWx1ZT8ubGFiZWwgIT09IHVuZGVmaW5lZCkubGVuZ3RoID09PSB2YWx1ZXMubGVuZ3RoO1xuICAgIH1cblxuICAgIHByaXZhdGUgc29ydENvbHVtbnNCeVNlcXVlbmNlKGNvbHVtbnM6IENvbHVtbltdKTogQ29sdW1uW10ge1xuICAgICAgICByZXR1cm4gY29sdW1ucy5zb3J0KChhLCBiKSA9PiBhLnNlcXVlbmNlIC0gYi5zZXF1ZW5jZSk7XG4gICAgfVxufVxuXG50eXBlIENlbGxEYXRhID0geyB2YWx1ZTogc3RyaW5nOyBpc1VuaW5mb3JtZWQ6IGJvb2xlYW47IHNlcGFyYXRvcjogc3RyaW5nIH1bXTtcbiJdfQ==