@1money/component-ui 0.1.17 → 0.1.18
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/es/components/Dialog/hooks.d.ts +1 -2
- package/es/components/Dialog/hooks.js +2 -21
- package/es/components/Drawer/hooks/useDialogFocus.d.ts +1 -2
- package/es/components/Drawer/hooks/useDialogFocus.js +2 -22
- package/es/components/Input/Mask/Mask.js +2 -6
- package/es/components/Select/Select.js +6 -3
- package/es/components/Select/utils.js +27 -3
- package/es/hooks/useDialogFocus.d.ts +2 -0
- package/es/hooks/useDialogFocus.js +22 -0
- package/es/index.css +1 -1
- package/lib/components/Dialog/hooks.d.ts +1 -2
- package/lib/components/Dialog/hooks.js +10 -22
- package/lib/components/Drawer/hooks/useDialogFocus.d.ts +1 -2
- package/lib/components/Drawer/hooks/useDialogFocus.js +8 -23
- package/lib/components/Input/Mask/Mask.js +2 -6
- package/lib/components/Select/Select.js +5 -2
- package/lib/components/Select/utils.js +27 -3
- package/lib/hooks/useDialogFocus.d.ts +2 -0
- package/lib/hooks/useDialogFocus.js +28 -0
- package/lib/index.css +1 -1
- package/package.json +1 -12
- package/scripts/mcp-server/README.md +5 -0
- package/scripts/mcp-server/index.mjs +2 -1
- package/scripts/mcp-server/tools/get-symbol.mjs +5 -25
- package/scripts/mcp-server/tools/resolve-import.mjs +5 -19
- package/scripts/mcp-server/tools/symbol-lookups.mjs +29 -0
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { RefObject } from 'react';
|
|
2
1
|
import type { DialogAction } from './types';
|
|
2
|
+
export { useDialogFocus } from "../../hooks/useDialogFocus";
|
|
3
3
|
export declare const useBodyScrollLock: (locked: boolean) => void;
|
|
4
|
-
export declare const useDialogFocus: (active: boolean, dialogRef: RefObject<HTMLDivElement | null>) => void;
|
|
5
4
|
export declare const useEscapeClose: (enabled: boolean, onClose?: DialogAction) => void;
|
|
@@ -3,9 +3,17 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.useBodyScrollLock = void 0;
|
|
7
|
+
Object.defineProperty(exports, "useDialogFocus", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function get() {
|
|
10
|
+
return _useDialogFocus.useDialogFocus;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
exports.useEscapeClose = void 0;
|
|
7
14
|
var _react = require("react");
|
|
8
15
|
var _constants = require("./constants");
|
|
16
|
+
var _useDialogFocus = require("../../hooks/useDialogFocus");
|
|
9
17
|
var scrollLockCount = 0;
|
|
10
18
|
var setBodyOverflow = function setBodyOverflow(value) {
|
|
11
19
|
if (typeof document === 'undefined') return;
|
|
@@ -38,26 +46,6 @@ var useBodyScrollLock = exports.useBodyScrollLock = function useBodyScrollLock(l
|
|
|
38
46
|
};
|
|
39
47
|
}, [locked]);
|
|
40
48
|
};
|
|
41
|
-
var useDialogFocus = exports.useDialogFocus = function useDialogFocus(active, dialogRef) {
|
|
42
|
-
var previousActiveElementRef = (0, _react.useRef)(null);
|
|
43
|
-
(0, _react.useEffect)(function () {
|
|
44
|
-
if (!active || typeof document === 'undefined') return undefined;
|
|
45
|
-
previousActiveElementRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
46
|
-
var frame = window.requestAnimationFrame(function () {
|
|
47
|
-
var _a;
|
|
48
|
-
(_a = dialogRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
49
|
-
});
|
|
50
|
-
return function () {
|
|
51
|
-
window.cancelAnimationFrame(frame);
|
|
52
|
-
};
|
|
53
|
-
}, [active, dialogRef]);
|
|
54
|
-
(0, _react.useEffect)(function () {
|
|
55
|
-
var _a, _b;
|
|
56
|
-
if (active) return;
|
|
57
|
-
(_b = (_a = previousActiveElementRef.current) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
58
|
-
previousActiveElementRef.current = null;
|
|
59
|
-
}, [active]);
|
|
60
|
-
};
|
|
61
49
|
var useEscapeClose = exports.useEscapeClose = function useEscapeClose(enabled, onClose) {
|
|
62
50
|
(0, _react.useEffect)(function () {
|
|
63
51
|
if (!enabled || typeof document === 'undefined') return undefined;
|
|
@@ -72,4 +60,4 @@ var useEscapeClose = exports.useEscapeClose = function useEscapeClose(enabled, o
|
|
|
72
60
|
};
|
|
73
61
|
}, [enabled, onClose]);
|
|
74
62
|
};
|
|
75
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvRGlhbG9nL2hvb2tzLnRzIl0sIm5hbWVzIjpbIl9yZWFjdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX3VzZURpYWxvZ0ZvY3VzIiwic2Nyb2xsTG9ja0NvdW50Iiwic2V0Qm9keU92ZXJmbG93IiwidmFsdWUiLCJkb2N1bWVudCIsImJvZHkiLCJzdHlsZSIsIm92ZXJmbG93IiwibG9ja0JvZHlTY3JvbGwiLCJESUFMT0dfREVGQVVMVFMiLCJvdmVyZmxvd0hpZGRlbiIsInVubG9ja0JvZHlTY3JvbGwiLCJNYXRoIiwibWF4IiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwib3ZlcmZsb3dSZXNldCIsInVzZUJvZHlTY3JvbGxMb2NrIiwiZXhwb3J0cyIsImxvY2tlZCIsImlzTG9ja2VkUmVmIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiY3VycmVudCIsInVuZGVmaW5lZCIsInVzZUVzY2FwZUNsb3NlIiwiZW5hYmxlZCIsIm9uQ2xvc2UiLCJoYW5kbGVLZXlEb3duIiwiZXZlbnQiLCJrZXkiLCJlc2NhcGVLZXkiLCJwcmV2ZW50RGVmYXVsdCIsImFkZEV2ZW50TGlzdGVuZXIiLCJrZXlkb3duRXZlbnQiLCJyZW1vdmVFdmVudExpc3RlbmVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBR0EsSUFBQUUsZUFBQSxHQUFBRixPQUFBO0FBRUEsSUFBSUcsZUFBZSxHQUFHLENBQUM7QUFFdkIsSUFBTUMsZUFBZSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFJQyxLQUFhLEVBQUk7RUFDeEMsSUFBSSxPQUFPQyxRQUFRLEtBQUssV0FBVyxFQUFFO0VBQ3JDQSxRQUFRLENBQUNDLElBQUksQ0FBQ0MsS0FBSyxDQUFDQyxRQUFRLEdBQUdKLEtBQUs7QUFDdEMsQ0FBQztBQUVELElBQU1LLGNBQWMsR0FBRyxTQUFqQkEsY0FBY0EsQ0FBQSxFQUFRO0VBQzFCUCxlQUFlLElBQUksQ0FBQztFQUNwQkMsZUFBZSxDQUFDTywwQkFBZSxDQUFDQyxjQUFjLENBQUM7QUFDakQsQ0FBQztBQUVELElBQU1DLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBZ0JBLENBQUEsRUFBUTtFQUM1QlYsZUFBZSxHQUFHVyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEVBQUVaLGVBQWUsR0FBRyxDQUFDLENBQUM7RUFFbEQsSUFBSUEsZUFBZSxLQUFLLENBQUMsRUFBRTtJQUN6QmEscUJBQXFCLENBQUMsWUFBSztNQUN6QixJQUFJYixlQUFlLEtBQUssQ0FBQyxFQUFFO1FBQ3pCQyxlQUFlLENBQUNPLDBCQUFlLENBQUNNLGFBQWEsQ0FBQztNQUNoRDtJQUNGLENBQUMsQ0FBQztFQUNKO0FBQ0YsQ0FBQztBQUVNLElBQU1DLGlCQUFpQixHQUFBQyxPQUFBLENBQUFELGlCQUFBLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBSUUsTUFBZSxFQUFJO0VBQ25ELElBQU1DLFdBQVcsR0FBRyxJQUFBQyxhQUFNLEVBQUMsS0FBSyxDQUFDO0VBRWpDLElBQUFDLGdCQUFTLEVBQUMsWUFBSztJQUNiLElBQUksQ0FBQ0gsTUFBTSxJQUFJQyxXQUFXLENBQUNHLE9BQU8sRUFBRSxPQUFPQyxTQUFTO0lBRXBESixXQUFXLENBQUNHLE9BQU8sR0FBRyxJQUFJO0lBQzFCZCxjQUFjLENBQUEsQ0FBRTtJQUVoQixPQUFPLFlBQUs7TUFDVixJQUFJLENBQUNXLFdBQVcsQ0FBQ0csT0FBTyxFQUFFO01BQzFCSCxXQUFXLENBQUNHLE9BQU8sR0FBRyxLQUFLO01BQzNCWCxnQkFBZ0IsQ0FBQSxDQUFFO0lBQ3BCLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ08sTUFBTSxDQUFDLENBQUM7QUFDZCxDQUFDO0FBRU0sSUFBTU0sY0FBYyxHQUFBUCxPQUFBLENBQUFPLGNBQUEsR0FBRyxTQUFqQkEsY0FBY0EsQ0FBSUMsT0FBZ0IsRUFBRUMsT0FBc0IsRUFBSTtFQUN6RSxJQUFBTCxnQkFBUyxFQUFDLFlBQUs7SUFDYixJQUFJLENBQUNJLE9BQU8sSUFBSSxPQUFPckIsUUFBUSxLQUFLLFdBQVcsRUFBRSxPQUFPbUIsU0FBUztJQUVqRSxJQUFNSSxhQUFhLEdBQUcsU0FBaEJBLGFBQWFBLENBQUlDLEtBQW9CLEVBQUk7TUFDN0MsSUFBSUEsS0FBSyxDQUFDQyxHQUFHLEtBQUtwQiwwQkFBZSxDQUFDcUIsU0FBUyxFQUFFO01BQzdDRixLQUFLLENBQUNHLGNBQWMsQ0FBQSxDQUFFO01BQ3RCLE1BQUtMLE9BQU8sS0FBQSxJQUFBLElBQVBBLE9BQU8sS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBUEEsT0FBTyxDQUFBLENBQUksQ0FBQTtJQUNsQixDQUFDO0lBRUR0QixRQUFRLENBQUM0QixnQkFBZ0IsQ0FBQ3ZCLDBCQUFlLENBQUN3QixZQUFZLEVBQUVOLGFBQWEsQ0FBQztJQUV0RSxPQUFPLFlBQUs7TUFDVnZCLFFBQVEsQ0FBQzhCLG1CQUFtQixDQUFDekIsMEJBQWUsQ0FBQ3dCLFlBQVksRUFBRU4sYUFBYSxDQUFDO0lBQzNFLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ0YsT0FBTyxFQUFFQyxPQUFPLENBQUMsQ0FBQztBQUN4QixDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvRGlhbG9nL2hvb2tzLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const useDialogFocus: (active: boolean, dialogRef: RefObject<HTMLDivElement | null>) => void;
|
|
1
|
+
export { useDialogFocus } from "../../../hooks/useDialogFocus";
|
|
@@ -3,26 +3,11 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
var _a;
|
|
15
|
-
(_a = dialogRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
16
|
-
});
|
|
17
|
-
return function () {
|
|
18
|
-
window.cancelAnimationFrame(frame);
|
|
19
|
-
};
|
|
20
|
-
}, [active, dialogRef]);
|
|
21
|
-
(0, _react.useEffect)(function () {
|
|
22
|
-
var _a, _b;
|
|
23
|
-
if (active) return;
|
|
24
|
-
(_b = (_a = previousActiveElementRef.current) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
25
|
-
previousActiveElementRef.current = null;
|
|
26
|
-
}, [active]);
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvRHJhd2VyL3NyYy9jb21wb25lbnRzL0RyYXdlci9ob29rcy91c2VEaWFsb2dGb2N1cy50cyIsImNvbXBvbmVudHMvRHJhd2VyL2hvb2tzL3VzZURpYWxvZ0ZvY3VzLmpzIl0sIm5hbWVzIjpbIl9yZWFjdCIsInJlcXVpcmUiLCJ1c2VEaWFsb2dGb2N1cyIsImV4cG9ydHMiLCJhY3RpdmUiLCJkaWFsb2dSZWYiLCJwcmV2aW91c0FjdGl2ZUVsZW1lbnRSZWYiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJkb2N1bWVudCIsInVuZGVmaW5lZCIsImN1cnJlbnQiLCJhY3RpdmVFbGVtZW50IiwiSFRNTEVsZW1lbnQiLCJmcmFtZSIsIndpbmRvdyIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIl9hIiwiZm9jdXMiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsIl9iIiwiY2FsbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBR08sSUFBTUMsY0FBYyxHQUFBQyxPQUFBLENBQUFELGNBQUEsR0FBRyxTQUFqQkEsY0FBY0EsQ0FDekJFLE1BQWUsRUFDZkMsU0FBMkMsRUFDekM7RUFDRixJQUFNQyx3QkFBd0IsR0FBRyxJQUFBQyxhQUFNLEVBQXFCLElBQUksQ0FBQztFQUVqRSxJQUFBQyxnQkFBUyxFQUFDLFlBQUs7SUFDYixJQUFJLENBQUNKLE1BQU0sSUFBSSxPQUFPSyxRQUFRLEtBQUssV0FBVyxFQUFFLE9BQU9DLFNBQVM7SUFFaEVKLHdCQUF3QixDQUFDSyxPQUFPLEdBQzlCRixRQUFRLENBQUNHLGFBQWEsWUFBWUMsV0FBVyxHQUFHSixRQUFRLENBQUNHLGFBQWEsR0FBRyxJQUFJO0lBRS9FLElBQU1FLEtBQUssR0FBR0MsTUFBTSxDQUFDQyxxQkFBcUIsQ0FBQyxZQUFLO01DTnhDLElBQUlDLEVBQUU7TURPWixDQUFBQSxFQUFBLEdBQUFaLFNBQVMsQ0FBQ00sT0FBTyxNQUFBLElBQUEsSUFBQU0sRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLENBQUVDLEtBQUssQ0FBQSxDQUFFO0lBQzVCLENBQUMsQ0FBQztJQUVGLE9BQU8sWUFBSztNQUNWSCxNQUFNLENBQUNJLG9CQUFvQixDQUFDTCxLQUFLLENBQUM7SUFDcEMsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDVixNQUFNLEVBQUVDLFNBQVMsQ0FBQyxDQUFDO0VBRXZCLElBQUFHLGdCQUFTLEVBQUMsWUFBSztJQ1BULElBQUlTLEVBQUUsRUFBRUcsRUFBRTtJRFFkLElBQUloQixNQUFNLEVBQUU7SUFFWixDQUFBZ0IsRUFBQSxHQUFBLENBQUFILEVBQUEsR0FBQVgsd0JBQXdCLENBQUNLLE9BQU8sTUFBQSxJQUFBLElBQUFNLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFQyxLQUFLLE1BQUEsSUFBQSxJQUFBRSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBQUMsSUFBQSxDQUFBSixFQUFBLENBQUk7SUFDM0NYLHdCQUF3QixDQUFDSyxPQUFPLEdBQUcsSUFBSTtFQUN6QyxDQUFDLEVBQUUsQ0FBQ1AsTUFBTSxDQUFDLENBQUM7QUFDZCxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvRHJhd2VyL2hvb2tzL3VzZURpYWxvZ0ZvY3VzLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBjb25zdCB1c2VEaWFsb2dGb2N1cyA9IChhY3RpdmUsIGRpYWxvZ1JlZikgPT4ge1xuICAgIGNvbnN0IHByZXZpb3VzQWN0aXZlRWxlbWVudFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIWFjdGl2ZSB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgcHJldmlvdXNBY3RpdmVFbGVtZW50UmVmLmN1cnJlbnQgPVxuICAgICAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ID8gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA6IG51bGw7XG4gICAgICAgIGNvbnN0IGZyYW1lID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAoX2EgPSBkaWFsb2dSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lKTtcbiAgICAgICAgfTtcbiAgICB9LCBbYWN0aXZlLCBkaWFsb2dSZWZdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBpZiAoYWN0aXZlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAoX2IgPSAoX2EgPSBwcmV2aW91c0FjdGl2ZUVsZW1lbnRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7XG4gICAgICAgIHByZXZpb3VzQWN0aXZlRWxlbWVudFJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB9LCBbYWN0aXZlXSk7XG59OyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
6
|
+
Object.defineProperty(exports, "useDialogFocus", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _useDialogFocus.useDialogFocus;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _useDialogFocus = require("../../../hooks/useDialogFocus");
|
|
13
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvRHJhd2VyL3NyYy9jb21wb25lbnRzL0RyYXdlci9ob29rcy91c2VEaWFsb2dGb2N1cy50cyJdLCJuYW1lcyI6WyJfdXNlRGlhbG9nRm9jdXMiLCJyZXF1aXJlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLElBQUFBLGVBQUEsR0FBQUMsT0FBQSIsImZpbGUiOiJjb21wb25lbnRzL0RyYXdlci9ob29rcy91c2VEaWFsb2dGb2N1cy5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
@@ -164,14 +164,10 @@ var InputMask = exports.InputMask = function InputMask(props) {
|
|
|
164
164
|
}
|
|
165
165
|
});
|
|
166
166
|
var handleChange = (0, _useEventCallback["default"])(function (event) {
|
|
167
|
-
var _a;
|
|
168
167
|
if (isComposing.current) return;
|
|
169
168
|
var input = event.target;
|
|
170
|
-
var cursorPos = (_a = input.selectionStart) !== null && _a !== void 0 ? _a : 0;
|
|
171
169
|
var inputValue = input.value;
|
|
172
|
-
// Extract
|
|
173
|
-
var raw = extractRaw(inputValue, mask, slotChar) + inputValue.slice(cursorPos > 0 ? cursorPos - 1 : 0, cursorPos).replace(/[^\da-zA-Z]/g, '');
|
|
174
|
-
// Re-extract from the full input to get clean raw
|
|
170
|
+
// Extract valid characters from the full input.
|
|
175
171
|
var cleanRaw = '';
|
|
176
172
|
for (var i = 0; i < inputValue.length; i++) {
|
|
177
173
|
var ch = inputValue[i];
|
|
@@ -354,4 +350,4 @@ InputMask.displayName = 'InputMask';
|
|
|
354
350
|
var MemoizedInputMask = /*#__PURE__*/(0, _react.memo)(InputMask);
|
|
355
351
|
MemoizedInputMask.displayName = 'InputMask';
|
|
356
352
|
var _default = exports["default"] = MemoizedInputMask;
|
|
357
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXQvTWFzay9NYXNrLmpzIiwiY29tcG9uZW50cy9JbnB1dC9zcmMvY29tcG9uZW50cy9JbnB1dC9NYXNrL01hc2sudHN4Il0sIm5hbWVzIjpbIl9qc3hSdW50aW1lIiwicmVxdWlyZSIsIl9yZWFjdCIsIl91c2VDb250cm9sbGVkU3RhdGUzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91c2VFdmVudENhbGxiYWNrIiwiX2NsYXNzbmFtZXMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9GaWVsZFNoZWxsIiwiX3VzZVN5bmNSZWYzIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfX3Jlc3QiLCJzIiwicCIsInByb3RvdHlwZSIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIk1BU0tfVE9LRU4iLCJpc01hc2tUb2tlbiIsImNoYXIiLCJhcHBseU1hc2siLCJyYXciLCJtYXNrIiwic2xvdENoYXIiLCJyZXN1bHQiLCJyYXdJbmRleCIsIm1hc2tDaGFyIiwicmUiLCJ0ZXN0IiwiZXh0cmFjdFJhdyIsImZvcm1hdHRlZCIsImNvdW50VG9rZW5TbG90cyIsImNvdW50IiwiZmluZE5leHRTbG90IiwiZnJvbUluZGV4IiwiZmluZEZpcnN0U2xvdCIsImlkeCIsIklucHV0TWFzayIsImV4cG9ydHMiLCJwcm9wcyIsIl9hIiwiX3Byb3BzJGNsYXNzTmFtZSIsImNsYXNzTmFtZSIsImxhYmVsQ2xhc3NOYW1lIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIl9wcm9wcyRzaXplIiwic2l6ZSIsIl9wcm9wcyRzdGF0dXMiLCJzdGF0dXMiLCJfcHJvcHMkZGlzYWJsZWQiLCJkaXNhYmxlZCIsIl9wcm9wcyRsb2FkaW5nIiwibG9hZGluZyIsIl9wcm9wcyRzbG90Q2hhciIsIl9wcm9wcyR1bm1hc2siLCJ1bm1hc2siLCJfcHJvcHMkYXV0b0NsZWFyIiwiYXV0b0NsZWFyIiwibGFiZWwiLCJpbmZvIiwiZmVlZGJhY2siLCJmZWVkYmFja0ljb24iLCJ0aXAiLCJyZXF1aXJlZCIsInByZWZpeCIsInN1ZmZpeCIsIl9zaG93Q291bnQiLCJzaG93Q291bnQiLCJ2YWx1ZSIsIl9wcm9wcyRkZWZhdWx0VmFsdWUiLCJkZWZhdWx0VmFsdWUiLCJvbkNoYW5nZSIsIm9uQ29tcGxldGUiLCJvbkZvY3VzIiwib25CbHVyIiwib25LZXlEb3duIiwicmVmIiwiZXh0ZXJuYWxJZCIsImlkIiwicmVzdCIsImF1dG9JZCIsInVzZUlkIiwiaW5wdXRJZCIsImNsYXNzZXMiLCJjbGFzc25hbWVzIiwiX3VzZVN5bmNSZWYiLCJ1c2VTeW5jUmVmIiwiX3VzZVN5bmNSZWYyIiwiX3NsaWNlZFRvQXJyYXkyIiwiaW5wdXRSZWYiLCJzeW5jUmVmIiwiaXNDb21wb3NpbmciLCJ1c2VSZWYiLCJ0b3RhbFNsb3RzIiwiZm9ybWF0VmFsdWUiLCJ2YWwiLCJpbml0aWFsRm9ybWF0dGVkIiwiY29udHJvbGxlZEZvcm1hdHRlZCIsInVuZGVmaW5lZCIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VDb250cm9sbGVkU3RhdGUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsImlubmVyVmFsdWUiLCJzZXRJbm5lclZhbHVlIiwiaXNEaXNhYmxlZCIsImFyaWFSZXF1aXJlZCIsImFyaWFJbnZhbGlkIiwiZW1pdENoYW5nZSIsInVzZUV2ZW50Q2FsbGJhY2siLCJldmVudCIsImhhbmRsZUNoYW5nZSIsImN1cnJlbnQiLCJpbnB1dCIsInRhcmdldCIsImN1cnNvclBvcyIsInNlbGVjdGlvblN0YXJ0IiwiaW5wdXRWYWx1ZSIsInNsaWNlIiwicmVwbGFjZSIsImNsZWFuUmF3IiwiY2giLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJuZXh0UG9zIiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJoYW5kbGVLZXlEb3duIiwiX2IiLCJfYyIsImtleSIsInByZXZlbnREZWZhdWx0IiwicG9zIiwic2VsRW5kIiwic2VsZWN0aW9uRW5kIiwiY3VycmVudFJhdyIsIm5ld1JhdyIsInJhd0lkeCIsInRhcmdldFBvcyIsImhhbmRsZUZvY3VzIiwiaGFuZGxlQmx1ciIsImVtcHR5IiwiX2pzeCIsIkZpZWxkU2hlbGwiLCJjaGlsZHJlbiIsIl9qc3hzIiwiam9pbkNscyIsImFzc2lnbiIsInBsYWNlaG9sZGVyIiwib25Db21wb3NpdGlvblN0YXJ0Iiwib25Db21wb3NpdGlvbkVuZCIsImRpc3BsYXlOYW1lIiwiTWVtb2l6ZWRJbnB1dE1hc2siLCJtZW1vIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVdBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1hBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLG9CQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxpQkFBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBQyx1QkFBQSxDQUFBTixPQUFBO0FBQ0EsSUFBQU8sV0FBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsWUFBQSxHQUFBUixPQUFBO0FBQTJDLFNBQUFNLHdCQUFBRyxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBTCx1QkFBQSxZQUFBQSx3QkFBQUcsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLG1CQUFBVCxDQUFBLGlCQUFB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bEJTLGtCQUFrQixFQUFFLFNBQXBCQSxrQkFBa0JBLENBQUEsRUFBTztVQUFHdkQsV0FBVyxDQUFDb0IsT0FBTyxHQUFHLElBQUk7UUFBRSxDQUFDO1FBQ3pEb0MsZ0JBQWdCLEVBQUUsU0FBbEJBLGdCQUFnQkEsQ0FBRy9KLENBQUMsRUFBSTtVQUN0QnVHLFdBQVcsQ0FBQ29CLE9BQU8sR0FBRyxLQUFLO1VBQzNCRCxZQUFZLENBQUMxSCxDQUE2QyxDQUFDO1FBQzdELENBQUM7UUFBQSxlQUFBLEVBQ2NxSCxZQUFZO1FBQUEsY0FBQSxFQUNiQztNQUFXLENBQUEsQ0FBQSxDQUN6QixFQUNEekMsTUFBTSxJQUFJLElBQUEwRSxlQUFBLEVBQUEsTUFBQSxFQUFBO1FBQU1sRyxTQUFTLEVBQUUwQyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQUEwRCxRQUFBLEVBQUc1RTtNQUFNLENBQUEsQ0FBUTtJQUFBLENBQUE7RUFDMUQsQ0FBQSxDQUNLO0FBRWpCLENBQUM7QUFFRDdCLFNBQVMsQ0FBQ2dILFdBQVcsR0FBRyxXQUFXO0FBRW5DLElBQU1DLGlCQUFpQixnQkFBRyxJQUFBQyxXQUFJLEVBQUNsSCxTQUFTLENBQUM7QUFDekNpSCxpQkFBaUIsQ0FBQ0QsV0FBVyxHQUFHLFdBQVc7QUFBQyxJQUFBRyxRQUFBLEdBQUFsSCxPQUFBLGNBRTdCZ0gsaUJBQWlCIiwiZmlsZSI6ImNvbXBvbmVudHMvSW5wdXQvTWFzay9NYXNrLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZUlkLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlQ29udHJvbGxlZFN0YXRlIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlQ29udHJvbGxlZFN0YXRlJztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IEZpZWxkU2hlbGwgfSBmcm9tICcuLi9GaWVsZFNoZWxsJztcbmltcG9ydCB7IHVzZVN5bmNSZWYgfSBmcm9tICcuLi91c2VTeW5jUmVmJztcbi8qKiBNYXNrIHRva2VuIG1hdGNoZXJzOiA5ID0gZGlnaXQsIGEgPSBsZXR0ZXIsICogPSBhbHBoYW51bWVyaWMgKi9cbmNvbnN0IE1BU0tfVE9LRU4gPSB7XG4gICAgJzknOiAvXFxkLyxcbiAgICAnYSc6IC9bYS16QS1aXS8sXG4gICAgJyonOiAvW2EtekEtWjAtOV0vLFxufTtcbmNvbnN0IGlzTWFza1Rva2VuID0gKGNoYXIpID0+IGNoYXIgaW4gTUFTS19UT0tFTjtcbi8qKiBBcHBseSBtYXNrIHRvIHJhdyB2YWx1ZSwgcmV0dXJuaW5nIHRoZSBmb3JtYXR0ZWQgc3RyaW5nICovXG5jb25zdCBhcHBseU1hc2sgPSAocmF3LCBtYXNrLCBzbG90Q2hhcikgPT4ge1xuICAgIGxldCByZXN1bHQgPSAnJztcbiAgICBsZXQgcmF3SW5kZXggPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFzay5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBtYXNrQ2hhciA9IG1hc2tbaV07XG4gICAgICAgIGlmIChpc01hc2tUb2tlbihtYXNrQ2hhcikpIHtcbiAgICAgICAgICAgIGlmIChyYXdJbmRleCA8IHJhdy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZSA9IE1BU0tfVE9LRU5bbWFza0NoYXJdO1xuICAgICAgICAgICAgICAgIC8vIFNraXAgaW52YWxpZCBjaGFyYWN0ZXJzIGluIHJhd1xuICAgICAgICAgICAgICAgIHdoaWxlIChyYXdJbmRleCA8IHJhdy5sZW5ndGggJiYgIXJlLnRlc3QocmF3W3Jhd0luZGV4XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmF3SW5kZXgrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJhd0luZGV4IDwgcmF3Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gcmF3W3Jhd0luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgcmF3SW5kZXgrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBzbG90Q2hhcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gc2xvdENoYXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gbWFza0NoYXI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG4vKiogRXh0cmFjdCByYXcgdmFsdWUgKG9ubHkgdXNlci10eXBlZCBjaGFyYWN0ZXJzLCBubyBsaXRlcmFscyBvciBzbG90IGNoYXJzKSAqL1xuY29uc3QgZXh0cmFjdFJhdyA9IChmb3JtYXR0ZWQsIG1hc2ssIHNsb3RDaGFyKSA9PiB7XG4gICAgbGV0IHJhdyA9ICcnO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFzay5sZW5ndGggJiYgaSA8IGZvcm1hdHRlZC5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaXNNYXNrVG9rZW4obWFza1tpXSkgJiYgZm9ybWF0dGVkW2ldICE9PSBzbG90Q2hhcikge1xuICAgICAgICAgICAgcmF3ICs9IGZvcm1hdHRlZFtpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmF3O1xufTtcbi8qKiBDb3VudCBob3cgbWFueSBtYXNrIHRva2VucyBleGlzdCBpbiB0aGUgbWFzayBwYXR0ZXJuICovXG5jb25zdCBjb3VudFRva2VuU2xvdHMgPSAobWFzaykgPT4ge1xuICAgIGxldCBjb3VudCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXNrLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpc01hc2tUb2tlbihtYXNrW2ldKSlcbiAgICAgICAgICAgIGNvdW50Kys7XG4gICAgfVxuICAgIHJldHVybiBjb3VudDtcbn07XG4vKiogRmluZCB0aGUgY3Vyc29yIHBvc2l0aW9uIGZvciB0aGUgbmV4dCBhdmFpbGFibGUgbWFzayB0b2tlbiBzbG90ICovXG5jb25zdCBmaW5kTmV4dFNsb3QgPSAobWFzaywgZm9ybWF0dGVkLCBzbG90Q2hhciwgZnJvbUluZGV4KSA9PiB7XG4gICAgZm9yIChsZXQgaSA9IGZyb21JbmRleDsgaSA8IG1hc2subGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGlzTWFza1Rva2VuKG1hc2tbaV0pICYmIChpID49IGZvcm1hdHRlZC5sZW5ndGggfHwgZm9ybWF0dGVkW2ldID09PSBzbG90Q2hhcikpIHtcbiAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmcm9tSW5kZXg7XG59O1xuLyoqIEZpbmQgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBzbG90IGNoYXIgaW4gZm9ybWF0dGVkIHZhbHVlICovXG5jb25zdCBmaW5kRmlyc3RTbG90ID0gKGZvcm1hdHRlZCwgc2xvdENoYXIpID0+IHtcbiAgICBjb25zdCBpZHggPSBmb3JtYXR0ZWQuaW5kZXhPZihzbG90Q2hhcik7XG4gICAgcmV0dXJuIGlkeCA9PT0gLTEgPyBmb3JtYXR0ZWQubGVuZ3RoIDogaWR4O1xufTtcbmV4cG9ydCBjb25zdCBJbnB1dE1hc2sgPSAocHJvcHMpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgeyBjbGFzc05hbWUgPSAnJywgbGFiZWxDbGFzc05hbWUsIHByZWZpeENscyA9ICdpbnB1dCcsIHNpemUgPSAnbGFyZ2UnLCBzdGF0dXMgPSAnZGVmYXVsdCcsIGRpc2FibGVkID0gZmFsc2UsIGxvYWRpbmcgPSBmYWxzZSwgbWFzaywgc2xvdENoYXIgPSAnXycsIHVubWFzayA9IGZhbHNlLCBhdXRvQ2xlYXIgPSBmYWxzZSwgbGFiZWwsIGluZm8sIGZlZWRiYWNrLCBmZWVkYmFja0ljb24sIHRpcCwgcmVxdWlyZWQsIHByZWZpeCwgc3VmZml4LCBcbiAgICAvLyBBY2NlcHRlZCB2aWEgSW5wdXRCYXNlUHJvcHMgYnV0IG1lYW5pbmdsZXNzIGhlcmUgKHRoZSBtYXNrIHBhdHRlcm5cbiAgICAvLyBhbHJlYWR5IGZpeGVzIHRoZSBsZW5ndGgpOyBkZXN0cnVjdHVyZWQgc28gaXQgbmV2ZXIgbGVha3Mgb250byB0aGVcbiAgICAvLyBET00gaW5wdXQgYXMgYW4gdW5rbm93biBhdHRyaWJ1dGUuXG4gICAgc2hvd0NvdW50OiBfc2hvd0NvdW50LCB2YWx1ZSwgZGVmYXVsdFZhbHVlID0gJycsIG9uQ2hhbmdlLCBvbkNvbXBsZXRlLCBvbkZvY3VzLCBvbkJsdXIsIG9uS2V5RG93biwgcmVmLCBpZDogZXh0ZXJuYWxJZCB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcImNsYXNzTmFtZVwiLCBcImxhYmVsQ2xhc3NOYW1lXCIsIFwicHJlZml4Q2xzXCIsIFwic2l6ZVwiLCBcInN0YXR1c1wiLCBcImRpc2FibGVkXCIsIFwibG9hZGluZ1wiLCBcIm1hc2tcIiwgXCJzbG90Q2hhclwiLCBcInVubWFza1wiLCBcImF1dG9DbGVhclwiLCBcImxhYmVsXCIsIFwiaW5mb1wiLCBcImZlZWRiYWNrXCIsIFwiZmVlZGJhY2tJY29uXCIsIFwidGlwXCIsIFwicmVxdWlyZWRcIiwgXCJwcmVmaXhcIiwgXCJzdWZmaXhcIiwgXCJzaG93Q291bnRcIiwgXCJ2YWx1ZVwiLCBcImRlZmF1bHRWYWx1ZVwiLCBcIm9uQ2hhbmdlXCIsIFwib25Db21wbGV0ZVwiLCBcIm9uRm9jdXNcIiwgXCJvbkJsdXJcIiwgXCJvbktleURvd25cIiwgXCJyZWZcIiwgXCJpZFwiXSk7XG4gICAgY29uc3QgYXV0b0lkID0gdXNlSWQoKTtcbiAgICBjb25zdCBpbnB1dElkID0gZXh0ZXJuYWxJZCAhPT0gbnVsbCAmJiBleHRlcm5hbElkICE9PSB2b2lkIDAgPyBleHRlcm5hbElkIDogYXV0b0lkO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgY29uc3QgW2lucHV0UmVmLCBzeW5jUmVmXSA9IHVzZVN5bmNSZWYocmVmKTtcbiAgICBjb25zdCBpc0NvbXBvc2luZyA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgdG90YWxTbG90cyA9IGNvdW50VG9rZW5TbG90cyhtYXNrKTtcbiAgICAvLyBJbnRlcm5hbCBzdGF0ZSBhbHdheXMgc3RvcmVzIHRoZSBmb3JtYXR0ZWQgdmFsdWVcbiAgICBjb25zdCBmb3JtYXRWYWx1ZSA9ICh2YWwpID0+IGFwcGx5TWFzayh2YWwsIG1hc2ssIHNsb3RDaGFyKTtcbiAgICBjb25zdCBpbml0aWFsRm9ybWF0dGVkID0gZGVmYXVsdFZhbHVlID8gZm9ybWF0VmFsdWUoZGVmYXVsdFZhbHVlKSA6ICcnO1xuICAgIGNvbnN0IGNvbnRyb2xsZWRGb3JtYXR0ZWQgPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gZm9ybWF0VmFsdWUodmFsdWUpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IFtpbm5lclZhbHVlLCBzZXRJbm5lclZhbHVlXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShpbml0aWFsRm9ybWF0dGVkLCBjb250cm9sbGVkRm9ybWF0dGVkKTtcbiAgICBjb25zdCBpc0Rpc2FibGVkID0gZGlzYWJsZWQgfHwgbG9hZGluZztcbiAgICBjb25zdCBhcmlhUmVxdWlyZWQgPSByZXF1aXJlZCA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gICAgY29uc3QgYXJpYUludmFsaWQgPSBzdGF0dXMgPT09ICdlcnJvcicgPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgIGNvbnN0IGVtaXRDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKChmb3JtYXR0ZWQsIGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHJhdyA9IGV4dHJhY3RSYXcoZm9ybWF0dGVkLCBtYXNrLCBzbG90Q2hhcik7XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZSh1bm1hc2sgPyByYXcgOiBmb3JtYXR0ZWQsIGV2ZW50KTtcbiAgICAgICAgaWYgKHJhdy5sZW5ndGggPT09IHRvdGFsU2xvdHMpIHtcbiAgICAgICAgICAgIG9uQ29tcGxldGUgPT09IG51bGwgfHwgb25Db21wbGV0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Db21wbGV0ZSh1bm1hc2sgPyByYXcgOiBmb3JtYXR0ZWQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoaXNDb21wb3NpbmcuY3VycmVudClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgIGNvbnN0IGN1cnNvclBvcyA9IChfYSA9IGlucHV0LnNlbGVjdGlvblN0YXJ0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwO1xuICAgICAgICBjb25zdCBpbnB1dFZhbHVlID0gaW5wdXQudmFsdWU7XG4gICAgICAgIC8vIEV4dHJhY3Qgb25seSB2YWxpZCBjaGFyYWN0ZXJzIGZyb20gdGhlIHJhdyBpbnB1dFxuICAgICAgICBjb25zdCByYXcgPSBleHRyYWN0UmF3KGlucHV0VmFsdWUsIG1hc2ssIHNsb3RDaGFyKVxuICAgICAgICAgICAgKyBpbnB1dFZhbHVlLnNsaWNlKGN1cnNvclBvcyA+IDAgPyBjdXJzb3JQb3MgLSAxIDogMCwgY3Vyc29yUG9zKS5yZXBsYWNlKC9bXlxcZGEtekEtWl0vZywgJycpO1xuICAgICAgICAvLyBSZS1leHRyYWN0IGZyb20gdGhlIGZ1bGwgaW5wdXQgdG8gZ2V0IGNsZWFuIHJhd1xuICAgICAgICBsZXQgY2xlYW5SYXcgPSAnJztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dFZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjaCA9IGlucHV0VmFsdWVbaV07XG4gICAgICAgICAgICBpZiAoL1tcXGRhLXpBLVpdLy50ZXN0KGNoKSlcbiAgICAgICAgICAgICAgICBjbGVhblJhdyArPSBjaDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBhcHBseU1hc2soY2xlYW5SYXcsIG1hc2ssIHNsb3RDaGFyKTtcbiAgICAgICAgc2V0SW5uZXJWYWx1ZShmb3JtYXR0ZWQpO1xuICAgICAgICBlbWl0Q2hhbmdlKGZvcm1hdHRlZCwgZXZlbnQpO1xuICAgICAgICAvLyBQb3NpdGlvbiBjdXJzb3IgYWZ0ZXIgdGhlIGxhc3QgZmlsbGVkIHNsb3RcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRQb3MgPSBmaW5kRmlyc3RTbG90KGZvcm1hdHRlZCwgc2xvdENoYXIpO1xuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UobmV4dFBvcywgbmV4dFBvcyk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgY29uc3QgaW5wdXQgPSBpbnB1dFJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoIWlucHV0KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGNvbnN0IHBvcyA9IChfYSA9IGlucHV0LnNlbGVjdGlvblN0YXJ0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwO1xuICAgICAgICAgICAgY29uc3Qgc2VsRW5kID0gKF9iID0gaW5wdXQuc2VsZWN0aW9uRW5kKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAwO1xuICAgICAgICAgICAgaWYgKHBvcyA9PT0gMCAmJiBzZWxFbmQgPT09IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFJhdyA9IGV4dHJhY3RSYXcoaW5uZXJWYWx1ZSwgbWFzaywgc2xvdENoYXIpO1xuICAgICAgICAgICAgaWYgKHBvcyAhPT0gc2VsRW5kKSB7XG4gICAgICAgICAgICAgICAgLy8gU2VsZWN0aW9uOiByZW1vdmUgYWxsIHJhdyBjaGFycyBpbiB0aGUgc2VsZWN0ZWQgcmFuZ2VcbiAgICAgICAgICAgICAgICBsZXQgbmV3UmF3ID0gJyc7XG4gICAgICAgICAgICAgICAgbGV0IHJhd0lkeCA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXNrLmxlbmd0aCAmJiByYXdJZHggPCBjdXJyZW50UmF3Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc01hc2tUb2tlbihtYXNrW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPCBwb3MgfHwgaSA+PSBzZWxFbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSYXcgKz0gY3VycmVudFJhd1tyYXdJZHhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmF3SWR4Kys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gYXBwbHlNYXNrKG5ld1JhdywgbWFzaywgc2xvdENoYXIpO1xuICAgICAgICAgICAgICAgIHNldElubmVyVmFsdWUoZm9ybWF0dGVkKTtcbiAgICAgICAgICAgICAgICBlbWl0Q2hhbmdlKGZvcm1hdHRlZCwgeyB0YXJnZXQ6IGlucHV0IH0pO1xuICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRQb3MgPSBmaW5kTmV4dFNsb3QobWFzaywgZm9ybWF0dGVkLCBzbG90Q2hhciwgcG9zKTtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UobmV4dFBvcywgbmV4dFBvcyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBTaW5nbGUgYmFja3NwYWNlOiBmaW5kIHByZXYgdG9rZW4gcG9zaXRpb24gYW5kIHJlbW92ZSBpdFxuICAgICAgICAgICAgICAgIGxldCB0YXJnZXRQb3MgPSBwb3MgLSAxO1xuICAgICAgICAgICAgICAgIHdoaWxlICh0YXJnZXRQb3MgPj0gMCAmJiAhaXNNYXNrVG9rZW4obWFza1t0YXJnZXRQb3NdKSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRQb3MtLTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldFBvcyA8IDApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBsZXQgbmV3UmF3ID0gJyc7XG4gICAgICAgICAgICAgICAgbGV0IHJhd0lkeCA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXNrLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc01hc2tUb2tlbihtYXNrW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT09IHRhcmdldFBvcyAmJiByYXdJZHggPCBjdXJyZW50UmF3Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1JhdyArPSBjdXJyZW50UmF3W3Jhd0lkeF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByYXdJZHgrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBhcHBseU1hc2sobmV3UmF3LCBtYXNrLCBzbG90Q2hhcik7XG4gICAgICAgICAgICAgICAgc2V0SW5uZXJWYWx1ZShmb3JtYXR0ZWQpO1xuICAgICAgICAgICAgICAgIGVtaXRDaGFuZ2UoZm9ybWF0dGVkLCB7IHRhcmdldDogaW5wdXQgfSk7XG4gICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UodGFyZ2V0UG9zLCB0YXJnZXRQb3MpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdEZWxldGUnKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgY29uc3QgcG9zID0gKF9jID0gaW5wdXQuc2VsZWN0aW9uU3RhcnQpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDA7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0UG9zID0gcG9zO1xuICAgICAgICAgICAgd2hpbGUgKHRhcmdldFBvcyA8IG1hc2subGVuZ3RoICYmICFpc01hc2tUb2tlbihtYXNrW3RhcmdldFBvc10pKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0UG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGFyZ2V0UG9zID49IG1hc2subGVuZ3RoKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRSYXcgPSBleHRyYWN0UmF3KGlubmVyVmFsdWUsIG1hc2ssIHNsb3RDaGFyKTtcbiAgICAgICAgICAgIGxldCBuZXdSYXcgPSAnJztcbiAgICAgICAgICAgIGxldCByYXdJZHggPSAwO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXNrLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzTWFza1Rva2VuKG1hc2tbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpICE9PSB0YXJnZXRQb3MgJiYgcmF3SWR4IDwgY3VycmVudFJhdy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1JhdyArPSBjdXJyZW50UmF3W3Jhd0lkeF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmF3SWR4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gYXBwbHlNYXNrKG5ld1JhdywgbWFzaywgc2xvdENoYXIpO1xuICAgICAgICAgICAgc2V0SW5uZXJWYWx1ZShmb3JtYXR0ZWQpO1xuICAgICAgICAgICAgZW1pdENoYW5nZShmb3JtYXR0ZWQsIHsgdGFyZ2V0OiBpbnB1dCB9KTtcbiAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UocG9zLCBwb3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgb25LZXlEb3duID09PSBudWxsIHx8IG9uS2V5RG93biA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25LZXlEb3duKGV2ZW50KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVGb2N1cyA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIC8vIE9uIGZvY3VzLCBpZiBlbXB0eSBzaG93IHRoZSBtYXNrIHBsYWNlaG9sZGVyXG4gICAgICAgIGlmICghaW5uZXJWYWx1ZSB8fCBleHRyYWN0UmF3KGlubmVyVmFsdWUsIG1hc2ssIHNsb3RDaGFyKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGFwcGx5TWFzaygnJywgbWFzaywgc2xvdENoYXIpO1xuICAgICAgICAgICAgc2V0SW5uZXJWYWx1ZShmb3JtYXR0ZWQpO1xuICAgICAgICB9XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0UmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3MgPSBmaW5kRmlyc3RTbG90KGlucHV0LnZhbHVlLCBzbG90Q2hhcik7XG4gICAgICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UocG9zLCBwb3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgb25Gb2N1cyA9PT0gbnVsbCB8fCBvbkZvY3VzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZvY3VzKGV2ZW50KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVCbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgcmF3ID0gZXh0cmFjdFJhdyhpbm5lclZhbHVlLCBtYXNrLCBzbG90Q2hhcik7XG4gICAgICAgIGlmIChhdXRvQ2xlYXIgJiYgcmF3Lmxlbmd0aCA+IDAgJiYgcmF3Lmxlbmd0aCA8IHRvdGFsU2xvdHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVtcHR5ID0gYXBwbHlNYXNrKCcnLCBtYXNrLCBzbG90Q2hhcik7XG4gICAgICAgICAgICBzZXRJbm5lclZhbHVlKGVtcHR5KTtcbiAgICAgICAgICAgIGVtaXRDaGFuZ2UoZW1wdHksIHsgdGFyZ2V0OiBldmVudC50YXJnZXQgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgY29tcGxldGVseSBlbXB0eSwgY2xlYXIgdGhlIGZvcm1hdHRlZCBtYXNrXG4gICAgICAgIGlmIChyYXcubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBzZXRJbm5lclZhbHVlKCcnKTtcbiAgICAgICAgfVxuICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoZXZlbnQpO1xuICAgIH0pO1xuICAgIHJldHVybiAoX2pzeChGaWVsZFNoZWxsLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lLCBsYWJlbENsYXNzTmFtZTogbGFiZWxDbGFzc05hbWUsIHByZWZpeENsczogcHJlZml4Q2xzLCBzaXplOiBzaXplLCBzdGF0dXM6IHN0YXR1cywgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGxhYmVsOiBsYWJlbCwgaW5mbzogaW5mbywgdGlwOiB0aXAsIGZlZWRiYWNrOiBmZWVkYmFjaywgZmVlZGJhY2tJY29uOiBmZWVkYmFja0ljb24sIHJlcXVpcmVkOiByZXF1aXJlZCwgaW5wdXRJZDogaW5wdXRJZCwgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjb250cm9sJywgam9pbkNscyhpc0Rpc2FibGVkICYmIGNsYXNzZXMoJ2NvbnRyb2wtZGlzYWJsZWQnKSkpLCBjaGlsZHJlbjogW3ByZWZpeCAmJiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncHJlZml4JyksIGNoaWxkcmVuOiBwcmVmaXggfSksIF9qc3goXCJpbnB1dFwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IHJlZjogc3luY1JlZiwgaWQ6IGlucHV0SWQsIGNsYXNzTmFtZTogY2xhc3NlcygnZmllbGQnKSwgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsIHZhbHVlOiBpbm5lclZhbHVlLCBwbGFjZWhvbGRlcjogKF9hID0gcmVzdC5wbGFjZWhvbGRlcikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogYXBwbHlNYXNrKCcnLCBtYXNrLCBzbG90Q2hhciksIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIG9uS2V5RG93bjogaGFuZGxlS2V5RG93biwgb25Gb2N1czogaGFuZGxlRm9jdXMsIG9uQmx1cjogaGFuZGxlQmx1ciwgb25Db21wb3NpdGlvblN0YXJ0OiAoKSA9PiB7IGlzQ29tcG9zaW5nLmN1cnJlbnQgPSB0cnVlOyB9LCBvbkNvbXBvc2l0aW9uRW5kOiAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNDb21wb3NpbmcuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hhbmdlKGUpO1xuICAgICAgICAgICAgICAgICAgICB9LCBcImFyaWEtcmVxdWlyZWRcIjogYXJpYVJlcXVpcmVkLCBcImFyaWEtaW52YWxpZFwiOiBhcmlhSW52YWxpZCB9KSksIHN1ZmZpeCAmJiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnc3VmZml4JyksIGNoaWxkcmVuOiBzdWZmaXggfSldIH0pIH0pKTtcbn07XG5JbnB1dE1hc2suZGlzcGxheU5hbWUgPSAnSW5wdXRNYXNrJztcbmNvbnN0IE1lbW9pemVkSW5wdXRNYXNrID0gbWVtbyhJbnB1dE1hc2spO1xuTWVtb2l6ZWRJbnB1dE1hc2suZGlzcGxheU5hbWUgPSAnSW5wdXRNYXNrJztcbmV4cG9ydCBkZWZhdWx0IE1lbW9pemVkSW5wdXRNYXNrOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
353
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXQvTWFzay9NYXNrLmpzIiwiY29tcG9uZW50cy9JbnB1dC9zcmMvY29tcG9uZW50cy9JbnB1dC9NYXNrL01hc2sudHN4Il0sIm5hbWVzIjpbIl9qc3hSdW50aW1lIiwicmVxdWlyZSIsIl9yZWFjdCIsIl91c2VDb250cm9sbGVkU3RhdGUzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91c2VFdmVudENhbGxiYWNrIiwiX2NsYXNzbmFtZXMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9GaWVsZFNoZWxsIiwiX3VzZVN5bmNSZWYzIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfX3Jlc3QiLCJzIiwicCIsInByb3RvdHlwZSIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIk1BU0tfVE9LRU4iLCJpc01hc2tUb2tlbiIsImNoYXIiLCJhcHBseU1hc2siLCJyYXciLCJtYXNrIiwic2xvdENoYXIiLCJyZXN1bHQiLCJyYXdJbmRleCIsIm1hc2tDaGFyIiwicmUiLCJ0ZXN0IiwiZXh0cmFjdFJhdyIsImZvcm1hdHRlZCIsImNvdW50VG9rZW5TbG90cyIsImNvdW50IiwiZmluZE5leHRTbG90IiwiZnJvbUluZGV4IiwiZmluZEZpcnN0U2xvdCIsImlkeCIsIklucHV0TWFzayIsImV4cG9ydHMiLCJwcm9wcyIsIl9hIiwiX3Byb3BzJGNsYXNzTmFtZSIsImNsYXNzTmFtZSIsImxhYmVsQ2xhc3NOYW1lIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIl9wcm9wcyRzaXplIiwic2l6ZSIsIl9wcm9wcyRzdGF0dXMiLCJzdGF0dXMiLCJfcHJvcHMkZGlzYWJsZWQiLCJkaXNhYmxlZCIsIl9wcm9wcyRsb2FkaW5nIiwibG9hZGluZyIsIl9wcm9wcyRzbG90Q2hhciIsIl9wcm9wcyR1bm1hc2siLCJ1bm1hc2siLCJfcHJvcHMkYXV0b0NsZWFyIiwiYXV0b0NsZWFyIiwibGFiZWwiLCJpbmZvIiwiZmVlZGJhY2siLCJmZWVkYmFja0ljb24iLCJ0aXAiLCJyZXF1aXJlZCIsInByZWZpeCIsInN1ZmZpeCIsIl9zaG93Q291bnQiLCJzaG93Q291bnQiLCJ2YWx1ZSIsIl9wcm9wcyRkZWZhdWx0VmFsdWUiLCJkZWZhdWx0VmFsdWUiLCJvbkNoYW5nZSIsIm9uQ29tcGxldGUiLCJvbkZvY3VzIiwib25CbHVyIiwib25LZXlEb3duIiwicmVmIiwiZXh0ZXJuYWxJZCIsImlkIiwicmVzdCIsImF1dG9JZCIsInVzZUlkIiwiaW5wdXRJZCIsImNsYXNzZXMiLCJjbGFzc25hbWVzIiwiX3VzZVN5bmNSZWYiLCJ1c2VTeW5jUmVmIiwiX3VzZVN5bmNSZWYyIiwiX3NsaWNlZFRvQXJyYXkyIiwiaW5wdXRSZWYiLCJzeW5jUmVmIiwiaXNDb21wb3NpbmciLCJ1c2VSZWYiLCJ0b3RhbFNsb3RzIiwiZm9ybWF0VmFsdWUiLCJ2YWwiLCJpbml0aWFsRm9ybWF0dGVkIiwiY29udHJvbGxlZEZvcm1hdHRlZCIsInVuZGVmaW5lZCIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VDb250cm9sbGVkU3RhdGUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsImlubmVyVmFsdWUiLCJzZXRJbm5lclZhbHVlIiwiaXNEaXNhYmxlZCIsImFyaWFSZXF1aXJlZCIsImFyaWFJbnZhbGlkIiwiZW1pdENoYW5nZSIsInVzZUV2ZW50Q2FsbGJhY2siLCJldmVudCIsImhhbmRsZUNoYW5nZSIsImN1cnJlbnQiLCJpbnB1dCIsInRhcmdldCIsImlucHV0VmFsdWUiLCJjbGVhblJhdyIsImNoIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwibmV4dFBvcyIsInNldFNlbGVjdGlvblJhbmdlIiwiaGFuZGxlS2V5RG93biIsIl9iIiwiX2MiLCJrZXkiLCJwcmV2ZW50RGVmYXVsdCIsInBvcyIsInNlbGVjdGlvblN0YXJ0Iiwic2VsRW5kIiwic2VsZWN0aW9uRW5kIiwiY3VycmVudFJhdyIsIm5ld1JhdyIsInJhd0lkeCIsInRhcmdldFBvcyIsImhhbmRsZUZvY3VzIiwiaGFuZGxlQmx1ciIsImVtcHR5IiwiX2pzeCIsIkZpZWxkU2hlbGwiLCJjaGlsZHJlbiIsIl9qc3hzIiwiam9pbkNscyIsImFzc2lnbiIsInBsYWNlaG9sZGVyIiwib25Db21wb3NpdGlvblN0YXJ0Iiwib25Db21wb3NpdGlvbkVuZCIsImRpc3BsYXlOYW1lIiwiTWVtb2l6ZWRJbnB1dE1hc2siLCJtZW1vIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVdBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1hBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLG9CQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxpQkFBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBQyx1QkFBQSxDQUFBTixPQUFBO0FBQ0EsSUFBQU8sV0FBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsWUFBQSxHQUFBUixPQUFBO0FBQTJDLFNBQUFNLHdCQUFBRyxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBTCx1QkFBQSxZQUFBQSx3QkFBQUcsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLG1CQUFBVCxDQUFBLGlCQUFBQSxDQUFBLGdCQUFBVSxPQUFBLENBQUFWLENBQUEs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QUFNLENBQUEsQ0FBUTtJQUFBLENBQUE7RUFDMUQsQ0FBQSxDQUNLO0FBRWpCLENBQUM7QUFFRDdCLFNBQVMsQ0FBQzZHLFdBQVcsR0FBRyxXQUFXO0FBRW5DLElBQU1DLGlCQUFpQixnQkFBRyxJQUFBQyxXQUFJLEVBQUMvRyxTQUFTLENBQUM7QUFDekM4RyxpQkFBaUIsQ0FBQ0QsV0FBVyxHQUFHLFdBQVc7QUFBQyxJQUFBRyxRQUFBLEdBQUEvRyxPQUFBLGNBRTdCNkcsaUJBQWlCIiwiZmlsZSI6ImNvbXBvbmVudHMvSW5wdXQvTWFzay9NYXNrLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZUlkLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlQ29udHJvbGxlZFN0YXRlIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlQ29udHJvbGxlZFN0YXRlJztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IEZpZWxkU2hlbGwgfSBmcm9tICcuLi9GaWVsZFNoZWxsJztcbmltcG9ydCB7IHVzZVN5bmNSZWYgfSBmcm9tICcuLi91c2VTeW5jUmVmJztcbi8qKiBNYXNrIHRva2VuIG1hdGNoZXJzOiA5ID0gZGlnaXQsIGEgPSBsZXR0ZXIsICogPSBhbHBoYW51bWVyaWMgKi9cbmNvbnN0IE1BU0tfVE9LRU4gPSB7XG4gICAgJzknOiAvXFxkLyxcbiAgICAnYSc6IC9bYS16QS1aXS8sXG4gICAgJyonOiAvW2EtekEtWjAtOV0vLFxufTtcbmNvbnN0IGlzTWFza1Rva2VuID0gKGNoYXIpID0+IGNoYXIgaW4gTUFTS19UT0tFTjtcbi8qKiBBcHBseSBtYXNrIHRvIHJhdyB2YWx1ZSwgcmV0dXJuaW5nIHRoZSBmb3JtYXR0ZWQgc3RyaW5nICovXG5jb25zdCBhcHBseU1hc2sgPSAocmF3LCBtYXNrLCBzbG90Q2hhcikgPT4ge1xuICAgIGxldCByZXN1bHQgPSAnJztcbiAgICBsZXQgcmF3SW5kZXggPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFzay5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBtYXNrQ2hhciA9IG1hc2tbaV07XG4gICAgICAgIGlmIChpc01hc2tUb2tlbihtYXNrQ2hhcikpIHtcbiAgICAgICAgICAgIGlmIChyYXdJbmRleCA8IHJhdy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZSA9IE1BU0tfVE9LRU5bbWFza0NoYXJdO1xuICAgICAgICAgICAgICAgIC8vIFNraXAgaW52YWxpZCBjaGFyYWN0ZXJzIGluIHJhd1xuICAgICAgICAgICAgICAgIHdoaWxlIChyYXdJbmRleCA8IHJhdy5sZW5ndGggJiYgIXJlLnRlc3QocmF3W3Jhd0luZGV4XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmF3SW5kZXgrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJhd0luZGV4IDwgcmF3Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gcmF3W3Jhd0luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgcmF3SW5kZXgrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBzbG90Q2hhcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gc2xvdENoYXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gbWFza0NoYXI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG4vKiogRXh0cmFjdCByYXcgdmFsdWUgKG9ubHkgdXNlci10eXBlZCBjaGFyYWN0ZXJzLCBubyBsaXRlcmFscyBvciBzbG90IGNoYXJzKSAqL1xuY29uc3QgZXh0cmFjdFJhdyA9IChmb3JtYXR0ZWQsIG1hc2ssIHNsb3RDaGFyKSA9PiB7XG4gICAgbGV0IHJhdyA9ICcnO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFzay5sZW5ndGggJiYgaSA8IGZvcm1hdHRlZC5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaXNNYXNrVG9rZW4obWFza1tpXSkgJiYgZm9ybWF0dGVkW2ldICE9PSBzbG90Q2hhcikge1xuICAgICAgICAgICAgcmF3ICs9IGZvcm1hdHRlZFtpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmF3O1xufTtcbi8qKiBDb3VudCBob3cgbWFueSBtYXNrIHRva2VucyBleGlzdCBpbiB0aGUgbWFzayBwYXR0ZXJuICovXG5jb25zdCBjb3VudFRva2VuU2xvdHMgPSAobWFzaykgPT4ge1xuICAgIGxldCBjb3VudCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXNrLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpc01hc2tUb2tlbihtYXNrW2ldKSlcbiAgICAgICAgICAgIGNvdW50Kys7XG4gICAgfVxuICAgIHJldHVybiBjb3VudDtcbn07XG4vKiogRmluZCB0aGUgY3Vyc29yIHBvc2l0aW9uIGZvciB0aGUgbmV4dCBhdmFpbGFibGUgbWFzayB0b2tlbiBzbG90ICovXG5jb25zdCBmaW5kTmV4dFNsb3QgPSAobWFzaywgZm9ybWF0dGVkLCBzbG90Q2hhciwgZnJvbUluZGV4KSA9PiB7XG4gICAgZm9yIChsZXQgaSA9IGZyb21JbmRleDsgaSA8IG1hc2subGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGlzTWFza1Rva2VuKG1hc2tbaV0pICYmIChpID49IGZvcm1hdHRlZC5sZW5ndGggfHwgZm9ybWF0dGVkW2ldID09PSBzbG90Q2hhcikpIHtcbiAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmcm9tSW5kZXg7XG59O1xuLyoqIEZpbmQgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBzbG90IGNoYXIgaW4gZm9ybWF0dGVkIHZhbHVlICovXG5jb25zdCBmaW5kRmlyc3RTbG90ID0gKGZvcm1hdHRlZCwgc2xvdENoYXIpID0+IHtcbiAgICBjb25zdCBpZHggPSBmb3JtYXR0ZWQuaW5kZXhPZihzbG90Q2hhcik7XG4gICAgcmV0dXJuIGlkeCA9PT0gLTEgPyBmb3JtYXR0ZWQubGVuZ3RoIDogaWR4O1xufTtcbmV4cG9ydCBjb25zdCBJbnB1dE1hc2sgPSAocHJvcHMpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgeyBjbGFzc05hbWUgPSAnJywgbGFiZWxDbGFzc05hbWUsIHByZWZpeENscyA9ICdpbnB1dCcsIHNpemUgPSAnbGFyZ2UnLCBzdGF0dXMgPSAnZGVmYXVsdCcsIGRpc2FibGVkID0gZmFsc2UsIGxvYWRpbmcgPSBmYWxzZSwgbWFzaywgc2xvdENoYXIgPSAnXycsIHVubWFzayA9IGZhbHNlLCBhdXRvQ2xlYXIgPSBmYWxzZSwgbGFiZWwsIGluZm8sIGZlZWRiYWNrLCBmZWVkYmFja0ljb24sIHRpcCwgcmVxdWlyZWQsIHByZWZpeCwgc3VmZml4LCBcbiAgICAvLyBBY2NlcHRlZCB2aWEgSW5wdXRCYXNlUHJvcHMgYnV0IG1lYW5pbmdsZXNzIGhlcmUgKHRoZSBtYXNrIHBhdHRlcm5cbiAgICAvLyBhbHJlYWR5IGZpeGVzIHRoZSBsZW5ndGgpOyBkZXN0cnVjdHVyZWQgc28gaXQgbmV2ZXIgbGVha3Mgb250byB0aGVcbiAgICAvLyBET00gaW5wdXQgYXMgYW4gdW5rbm93biBhdHRyaWJ1dGUuXG4gICAgc2hvd0NvdW50OiBfc2hvd0NvdW50LCB2YWx1ZSwgZGVmYXVsdFZhbHVlID0gJycsIG9uQ2hhbmdlLCBvbkNvbXBsZXRlLCBvbkZvY3VzLCBvbkJsdXIsIG9uS2V5RG93biwgcmVmLCBpZDogZXh0ZXJuYWxJZCB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcImNsYXNzTmFtZVwiLCBcImxhYmVsQ2xhc3NOYW1lXCIsIFwicHJlZml4Q2xzXCIsIFwic2l6ZVwiLCBcInN0YXR1c1wiLCBcImRpc2FibGVkXCIsIFwibG9hZGluZ1wiLCBcIm1hc2tcIiwgXCJzbG90Q2hhclwiLCBcInVubWFza1wiLCBcImF1dG9DbGVhclwiLCBcImxhYmVsXCIsIFwiaW5mb1wiLCBcImZlZWRiYWNrXCIsIFwiZmVlZGJhY2tJY29uXCIsIFwidGlwXCIsIFwicmVxdWlyZWRcIiwgXCJwcmVmaXhcIiwgXCJzdWZmaXhcIiwgXCJzaG93Q291bnRcIiwgXCJ2YWx1ZVwiLCBcImRlZmF1bHRWYWx1ZVwiLCBcIm9uQ2hhbmdlXCIsIFwib25Db21wbGV0ZVwiLCBcIm9uRm9jdXNcIiwgXCJvbkJsdXJcIiwgXCJvbktleURvd25cIiwgXCJyZWZcIiwgXCJpZFwiXSk7XG4gICAgY29uc3QgYXV0b0lkID0gdXNlSWQoKTtcbiAgICBjb25zdCBpbnB1dElkID0gZXh0ZXJuYWxJZCAhPT0gbnVsbCAmJiBleHRlcm5hbElkICE9PSB2b2lkIDAgPyBleHRlcm5hbElkIDogYXV0b0lkO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgY29uc3QgW2lucHV0UmVmLCBzeW5jUmVmXSA9IHVzZVN5bmNSZWYocmVmKTtcbiAgICBjb25zdCBpc0NvbXBvc2luZyA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgdG90YWxTbG90cyA9IGNvdW50VG9rZW5TbG90cyhtYXNrKTtcbiAgICAvLyBJbnRlcm5hbCBzdGF0ZSBhbHdheXMgc3RvcmVzIHRoZSBmb3JtYXR0ZWQgdmFsdWVcbiAgICBjb25zdCBmb3JtYXRWYWx1ZSA9ICh2YWwpID0+IGFwcGx5TWFzayh2YWwsIG1hc2ssIHNsb3RDaGFyKTtcbiAgICBjb25zdCBpbml0aWFsRm9ybWF0dGVkID0gZGVmYXVsdFZhbHVlID8gZm9ybWF0VmFsdWUoZGVmYXVsdFZhbHVlKSA6ICcnO1xuICAgIGNvbnN0IGNvbnRyb2xsZWRGb3JtYXR0ZWQgPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gZm9ybWF0VmFsdWUodmFsdWUpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IFtpbm5lclZhbHVlLCBzZXRJbm5lclZhbHVlXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShpbml0aWFsRm9ybWF0dGVkLCBjb250cm9sbGVkRm9ybWF0dGVkKTtcbiAgICBjb25zdCBpc0Rpc2FibGVkID0gZGlzYWJsZWQgfHwgbG9hZGluZztcbiAgICBjb25zdCBhcmlhUmVxdWlyZWQgPSByZXF1aXJlZCA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gICAgY29uc3QgYXJpYUludmFsaWQgPSBzdGF0dXMgPT09ICdlcnJvcicgPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgIGNvbnN0IGVtaXRDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKChmb3JtYXR0ZWQsIGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHJhdyA9IGV4dHJhY3RSYXcoZm9ybWF0dGVkLCBtYXNrLCBzbG90Q2hhcik7XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZSh1bm1hc2sgPyByYXcgOiBmb3JtYXR0ZWQsIGV2ZW50KTtcbiAgICAgICAgaWYgKHJhdy5sZW5ndGggPT09IHRvdGFsU2xvdHMpIHtcbiAgICAgICAgICAgIG9uQ29tcGxldGUgPT09IG51bGwgfHwgb25Db21wbGV0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Db21wbGV0ZSh1bm1hc2sgPyByYXcgOiBmb3JtYXR0ZWQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGlzQ29tcG9zaW5nLmN1cnJlbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICBjb25zdCBpbnB1dFZhbHVlID0gaW5wdXQudmFsdWU7XG4gICAgICAgIC8vIEV4dHJhY3QgdmFsaWQgY2hhcmFjdGVycyBmcm9tIHRoZSBmdWxsIGlucHV0LlxuICAgICAgICBsZXQgY2xlYW5SYXcgPSAnJztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dFZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjaCA9IGlucHV0VmFsdWVbaV07XG4gICAgICAgICAgICBpZiAoL1tcXGRhLXpBLVpdLy50ZXN0KGNoKSlcbiAgICAgICAgICAgICAgICBjbGVhblJhdyArPSBjaDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBhcHBseU1hc2soY2xlYW5SYXcsIG1hc2ssIHNsb3RDaGFyKTtcbiAgICAgICAgc2V0SW5uZXJWYWx1ZShmb3JtYXR0ZWQpO1xuICAgICAgICBlbWl0Q2hhbmdlKGZvcm1hdHRlZCwgZXZlbnQpO1xuICAgICAgICAvLyBQb3NpdGlvbiBjdXJzb3IgYWZ0ZXIgdGhlIGxhc3QgZmlsbGVkIHNsb3RcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRQb3MgPSBmaW5kRmlyc3RTbG90KGZvcm1hdHRlZCwgc2xvdENoYXIpO1xuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UobmV4dFBvcywgbmV4dFBvcyk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgY29uc3QgaW5wdXQgPSBpbnB1dFJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoIWlucHV0KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGNvbnN0IHBvcyA9IChfYSA9IGlucHV0LnNlbGVjdGlvblN0YXJ0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwO1xuICAgICAgICAgICAgY29uc3Qgc2VsRW5kID0gKF9iID0gaW5wdXQuc2VsZWN0aW9uRW5kKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAwO1xuICAgICAgICAgICAgaWYgKHBvcyA9PT0gMCAmJiBzZWxFbmQgPT09IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFJhdyA9IGV4dHJhY3RSYXcoaW5uZXJWYWx1ZSwgbWFzaywgc2xvdENoYXIpO1xuICAgICAgICAgICAgaWYgKHBvcyAhPT0gc2VsRW5kKSB7XG4gICAgICAgICAgICAgICAgLy8gU2VsZWN0aW9uOiByZW1vdmUgYWxsIHJhdyBjaGFycyBpbiB0aGUgc2VsZWN0ZWQgcmFuZ2VcbiAgICAgICAgICAgICAgICBsZXQgbmV3UmF3ID0gJyc7XG4gICAgICAgICAgICAgICAgbGV0IHJhd0lkeCA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXNrLmxlbmd0aCAmJiByYXdJZHggPCBjdXJyZW50UmF3Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc01hc2tUb2tlbihtYXNrW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPCBwb3MgfHwgaSA+PSBzZWxFbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSYXcgKz0gY3VycmVudFJhd1tyYXdJZHhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmF3SWR4Kys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gYXBwbHlNYXNrKG5ld1JhdywgbWFzaywgc2xvdENoYXIpO1xuICAgICAgICAgICAgICAgIHNldElubmVyVmFsdWUoZm9ybWF0dGVkKTtcbiAgICAgICAgICAgICAgICBlbWl0Q2hhbmdlKGZvcm1hdHRlZCwgeyB0YXJnZXQ6IGlucHV0IH0pO1xuICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRQb3MgPSBmaW5kTmV4dFNsb3QobWFzaywgZm9ybWF0dGVkLCBzbG90Q2hhciwgcG9zKTtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UobmV4dFBvcywgbmV4dFBvcyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBTaW5nbGUgYmFja3NwYWNlOiBmaW5kIHByZXYgdG9rZW4gcG9zaXRpb24gYW5kIHJlbW92ZSBpdFxuICAgICAgICAgICAgICAgIGxldCB0YXJnZXRQb3MgPSBwb3MgLSAxO1xuICAgICAgICAgICAgICAgIHdoaWxlICh0YXJnZXRQb3MgPj0gMCAmJiAhaXNNYXNrVG9rZW4obWFza1t0YXJnZXRQb3NdKSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRQb3MtLTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldFBvcyA8IDApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBsZXQgbmV3UmF3ID0gJyc7XG4gICAgICAgICAgICAgICAgbGV0IHJhd0lkeCA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXNrLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc01hc2tUb2tlbihtYXNrW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT09IHRhcmdldFBvcyAmJiByYXdJZHggPCBjdXJyZW50UmF3Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1JhdyArPSBjdXJyZW50UmF3W3Jhd0lkeF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByYXdJZHgrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBhcHBseU1hc2sobmV3UmF3LCBtYXNrLCBzbG90Q2hhcik7XG4gICAgICAgICAgICAgICAgc2V0SW5uZXJWYWx1ZShmb3JtYXR0ZWQpO1xuICAgICAgICAgICAgICAgIGVtaXRDaGFuZ2UoZm9ybWF0dGVkLCB7IHRhcmdldDogaW5wdXQgfSk7XG4gICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UodGFyZ2V0UG9zLCB0YXJnZXRQb3MpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdEZWxldGUnKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgY29uc3QgcG9zID0gKF9jID0gaW5wdXQuc2VsZWN0aW9uU3RhcnQpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDA7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0UG9zID0gcG9zO1xuICAgICAgICAgICAgd2hpbGUgKHRhcmdldFBvcyA8IG1hc2subGVuZ3RoICYmICFpc01hc2tUb2tlbihtYXNrW3RhcmdldFBvc10pKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0UG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGFyZ2V0UG9zID49IG1hc2subGVuZ3RoKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRSYXcgPSBleHRyYWN0UmF3KGlubmVyVmFsdWUsIG1hc2ssIHNsb3RDaGFyKTtcbiAgICAgICAgICAgIGxldCBuZXdSYXcgPSAnJztcbiAgICAgICAgICAgIGxldCByYXdJZHggPSAwO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXNrLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzTWFza1Rva2VuKG1hc2tbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpICE9PSB0YXJnZXRQb3MgJiYgcmF3SWR4IDwgY3VycmVudFJhdy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1JhdyArPSBjdXJyZW50UmF3W3Jhd0lkeF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmF3SWR4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gYXBwbHlNYXNrKG5ld1JhdywgbWFzaywgc2xvdENoYXIpO1xuICAgICAgICAgICAgc2V0SW5uZXJWYWx1ZShmb3JtYXR0ZWQpO1xuICAgICAgICAgICAgZW1pdENoYW5nZShmb3JtYXR0ZWQsIHsgdGFyZ2V0OiBpbnB1dCB9KTtcbiAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UocG9zLCBwb3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgb25LZXlEb3duID09PSBudWxsIHx8IG9uS2V5RG93biA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25LZXlEb3duKGV2ZW50KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVGb2N1cyA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIC8vIE9uIGZvY3VzLCBpZiBlbXB0eSBzaG93IHRoZSBtYXNrIHBsYWNlaG9sZGVyXG4gICAgICAgIGlmICghaW5uZXJWYWx1ZSB8fCBleHRyYWN0UmF3KGlubmVyVmFsdWUsIG1hc2ssIHNsb3RDaGFyKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGFwcGx5TWFzaygnJywgbWFzaywgc2xvdENoYXIpO1xuICAgICAgICAgICAgc2V0SW5uZXJWYWx1ZShmb3JtYXR0ZWQpO1xuICAgICAgICB9XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0UmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3MgPSBmaW5kRmlyc3RTbG90KGlucHV0LnZhbHVlLCBzbG90Q2hhcik7XG4gICAgICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UocG9zLCBwb3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgb25Gb2N1cyA9PT0gbnVsbCB8fCBvbkZvY3VzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZvY3VzKGV2ZW50KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVCbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgcmF3ID0gZXh0cmFjdFJhdyhpbm5lclZhbHVlLCBtYXNrLCBzbG90Q2hhcik7XG4gICAgICAgIGlmIChhdXRvQ2xlYXIgJiYgcmF3Lmxlbmd0aCA+IDAgJiYgcmF3Lmxlbmd0aCA8IHRvdGFsU2xvdHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVtcHR5ID0gYXBwbHlNYXNrKCcnLCBtYXNrLCBzbG90Q2hhcik7XG4gICAgICAgICAgICBzZXRJbm5lclZhbHVlKGVtcHR5KTtcbiAgICAgICAgICAgIGVtaXRDaGFuZ2UoZW1wdHksIHsgdGFyZ2V0OiBldmVudC50YXJnZXQgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgY29tcGxldGVseSBlbXB0eSwgY2xlYXIgdGhlIGZvcm1hdHRlZCBtYXNrXG4gICAgICAgIGlmIChyYXcubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBzZXRJbm5lclZhbHVlKCcnKTtcbiAgICAgICAgfVxuICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoZXZlbnQpO1xuICAgIH0pO1xuICAgIHJldHVybiAoX2pzeChGaWVsZFNoZWxsLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lLCBsYWJlbENsYXNzTmFtZTogbGFiZWxDbGFzc05hbWUsIHByZWZpeENsczogcHJlZml4Q2xzLCBzaXplOiBzaXplLCBzdGF0dXM6IHN0YXR1cywgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGxhYmVsOiBsYWJlbCwgaW5mbzogaW5mbywgdGlwOiB0aXAsIGZlZWRiYWNrOiBmZWVkYmFjaywgZmVlZGJhY2tJY29uOiBmZWVkYmFja0ljb24sIHJlcXVpcmVkOiByZXF1aXJlZCwgaW5wdXRJZDogaW5wdXRJZCwgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjb250cm9sJywgam9pbkNscyhpc0Rpc2FibGVkICYmIGNsYXNzZXMoJ2NvbnRyb2wtZGlzYWJsZWQnKSkpLCBjaGlsZHJlbjogW3ByZWZpeCAmJiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncHJlZml4JyksIGNoaWxkcmVuOiBwcmVmaXggfSksIF9qc3goXCJpbnB1dFwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IHJlZjogc3luY1JlZiwgaWQ6IGlucHV0SWQsIGNsYXNzTmFtZTogY2xhc3NlcygnZmllbGQnKSwgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsIHZhbHVlOiBpbm5lclZhbHVlLCBwbGFjZWhvbGRlcjogKF9hID0gcmVzdC5wbGFjZWhvbGRlcikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogYXBwbHlNYXNrKCcnLCBtYXNrLCBzbG90Q2hhciksIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIG9uS2V5RG93bjogaGFuZGxlS2V5RG93biwgb25Gb2N1czogaGFuZGxlRm9jdXMsIG9uQmx1cjogaGFuZGxlQmx1ciwgb25Db21wb3NpdGlvblN0YXJ0OiAoKSA9PiB7IGlzQ29tcG9zaW5nLmN1cnJlbnQgPSB0cnVlOyB9LCBvbkNvbXBvc2l0aW9uRW5kOiAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNDb21wb3NpbmcuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hhbmdlKGUpO1xuICAgICAgICAgICAgICAgICAgICB9LCBcImFyaWEtcmVxdWlyZWRcIjogYXJpYVJlcXVpcmVkLCBcImFyaWEtaW52YWxpZFwiOiBhcmlhSW52YWxpZCB9KSksIHN1ZmZpeCAmJiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnc3VmZml4JyksIGNoaWxkcmVuOiBzdWZmaXggfSldIH0pIH0pKTtcbn07XG5JbnB1dE1hc2suZGlzcGxheU5hbWUgPSAnSW5wdXRNYXNrJztcbmNvbnN0IE1lbW9pemVkSW5wdXRNYXNrID0gbWVtbyhJbnB1dE1hc2spO1xuTWVtb2l6ZWRJbnB1dE1hc2suZGlzcGxheU5hbWUgPSAnSW5wdXRNYXNrJztcbmV4cG9ydCBkZWZhdWx0IE1lbW9pemVkSW5wdXRNYXNrOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|