@onepercentio/one-ui 1.3.5 → 1.4.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.
- package/WebpackConfigs/email-templates.js +99 -0
- package/dist/components/AdaptiveButton/AdaptiveButton.js +26 -24
- package/dist/components/AdaptiveButton/index.js +25 -22
- package/dist/components/AdaptiveContainer/AdaptiveContainer.js +140 -139
- package/dist/components/AdaptiveContainer/index.js +25 -22
- package/dist/components/AdaptiveDialog/AdaptiveDialog.js +76 -42
- package/dist/components/AdaptiveDialog/AdaptiveDialog.module.scss +17 -3
- package/dist/components/AdaptiveDialog/index.js +25 -22
- package/dist/components/AdaptiveSidebar/AdaptiveSidebar.js +70 -54
- package/dist/components/AdaptiveSidebar/AdaptiveSidebar.sample.js +10 -9
- package/dist/components/AdaptiveSidebar/index.js +25 -22
- package/dist/components/AnchoredTooltip/AnchoredTooltip.js +155 -154
- package/dist/components/AnchoredTooltip/AnchoredTooltip.module.scss +13 -10
- package/dist/components/AnchoredTooltip/index.js +25 -22
- package/dist/components/AnimatedEntrance/AnimatedEntrance.js +154 -121
- package/dist/components/AnimatedEntrance/index.js +25 -22
- package/dist/components/AsyncTriggerContainer/AsyncTriggerContainer.js +80 -40
- package/dist/components/AsyncTriggerContainer/index.js +25 -22
- package/dist/components/AsyncWrapper/AsyncWrapper.js +34 -16
- package/dist/components/AsyncWrapper/index.js +25 -22
- package/dist/components/Avatar/Avatar.js +33 -18
- package/dist/components/Avatar/index.js +25 -22
- package/dist/components/BucketFill/BucketFill.js +49 -36
- package/dist/components/BucketFill/index.js +25 -22
- package/dist/components/Button/Button.js +30 -22
- package/dist/components/Button/index.js +25 -22
- package/dist/components/Card/Card.js +17 -10
- package/dist/components/Card/index.js +25 -22
- package/dist/components/Chart/Chart.js +25 -22
- package/dist/components/Chart/Chart.logic.js +10 -9
- package/dist/components/Chart/Chart.types.js +5 -2
- package/dist/components/Chart/Chart.view.js +174 -98
- package/dist/components/Chart/index.js +25 -22
- package/dist/components/CheckBox/CheckBox.js +48 -30
- package/dist/components/CheckBox/CheckBox.module.scss +5 -0
- package/dist/components/CheckBox/index.js +25 -22
- package/dist/components/CodeInput/CodeInput.js +75 -93
- package/dist/components/CodeInput/index.js +25 -22
- package/dist/components/Collapsable/Collapsable.js +164 -134
- package/dist/components/Collapsable/index.js +25 -22
- package/dist/components/Countdown/Countdown.js +69 -86
- package/dist/components/Countdown/index.js +25 -22
- package/dist/components/CurrencyInput/CurrencyInput.hook.js +25 -25
- package/dist/components/CurrencyInput/CurrencyInput.js +48 -29
- package/dist/components/CurrencyInput/index.js +25 -22
- package/dist/components/Divider/Divider.js +16 -10
- package/dist/components/Divider/index.js +25 -22
- package/dist/components/EmailInput/EmailInput.js +37 -23
- package/dist/components/EmailInput/index.js +25 -22
- package/dist/components/FadeIn/FadeIn.js +57 -51
- package/dist/components/FadeIn/index.js +25 -22
- package/dist/components/FileInput/FileInput.js +45 -38
- package/dist/components/FileInput/View/BigFactory/BigFactory.js +48 -16
- package/dist/components/FileInput/View/BigFactory/index.js +25 -22
- package/dist/components/FileInput/View/Compact/Compact.js +114 -46
- package/dist/components/FileInput/View/Compact/index.js +25 -22
- package/dist/components/FileInput/View/View.types.js +5 -2
- package/dist/components/FileInput/index.js +25 -22
- package/dist/components/FlowController/FlowController.js +56 -25
- package/dist/components/FlowController/index.js +25 -22
- package/dist/components/Form/Form.hook.js +217 -202
- package/dist/components/Form/Form.js +103 -65
- package/dist/components/Form/Form.types.js +39 -53
- package/dist/components/Form/FormField/Extensions/DateField/DateField.js +68 -53
- package/dist/components/Form/FormField/Extensions/DateField/index.js +25 -22
- package/dist/components/Form/FormField/Extensions/PhoneField/PhoneField.js +81 -78
- package/dist/components/Form/FormField/Extensions/PhoneField/index.js +25 -22
- package/dist/components/Form/FormField/FormField.js +307 -148
- package/dist/components/Form/FormField/FormField.types.js +10 -7
- package/dist/components/Form/FormField/index.js +25 -22
- package/dist/components/Form/index.js +25 -22
- package/dist/components/Freeze/Freeze.js +13 -9
- package/dist/components/Freeze/index.js +25 -22
- package/dist/components/HSForms/HSForms.js +48 -69
- package/dist/components/HSForms/index.js +25 -22
- package/dist/components/HeaderCloseBtn/HeaderCloseBtn.js +19 -10
- package/dist/components/HeaderCloseBtn/index.js +25 -22
- package/dist/components/InfinityScroll/InfinityScroll.js +114 -94
- package/dist/components/InfinityScroll/index.js +25 -22
- package/dist/components/Input/Input.js +99 -57
- package/dist/components/Input/index.js +25 -22
- package/dist/components/InstantCounter/InstantCounter.js +49 -31
- package/dist/components/InstantCounter/index.js +25 -22
- package/dist/components/LavaLamp/LavaLamp.data.js +83 -86
- package/dist/components/LavaLamp/LavaLamp.js +119 -32
- package/dist/components/LavaLamp/index.js +25 -22
- package/dist/components/LavaLamp/v2/LavaLamp.js +149 -156
- package/dist/components/LinkToId/LinkToId.js +39 -27
- package/dist/components/LinkToId/index.js +25 -22
- package/dist/components/Loader/Loader.js +21 -22
- package/dist/components/Loader/index.js +25 -22
- package/dist/components/LoaderDotsIndicator/LoaderDotsIndicator.js +27 -15
- package/dist/components/LoaderDotsIndicator/index.js +25 -22
- package/dist/components/LoopableVideo/LoopableVideo.js +33 -25
- package/dist/components/LoopableVideo/index.js +25 -22
- package/dist/components/MainGrid/MainGrid.js +46 -23
- package/dist/components/MainGrid/index.js +25 -22
- package/dist/components/MutableHamburgerButton/MutableHamburgerButton.js +27 -23
- package/dist/components/MutableHamburgerButton/index.js +25 -22
- package/dist/components/Notification/Notification.js +18 -11
- package/dist/components/Notification/index.js +25 -22
- package/dist/components/NumberInput/NumberInput.js +43 -42
- package/dist/components/NumberInput/index.js +25 -22
- package/dist/components/OrderableList/OrderableList.js +416 -404
- package/dist/components/OrderableList/index.js +25 -22
- package/dist/components/PaginationIndicator/PaginationIndicator.js +243 -198
- package/dist/components/PaginationIndicator/index.js +25 -22
- package/dist/components/Parallax/Parallax.js +156 -130
- package/dist/components/Parallax/index.js +25 -22
- package/dist/components/Parallax/math/helpers.js +120 -216
- package/dist/components/PasswordInput/PasswordInput.js +88 -71
- package/dist/components/PasswordInput/index.js +25 -22
- package/dist/components/PingPongText/PingPongText.js +63 -67
- package/dist/components/PingPongText/index.js +25 -22
- package/dist/components/PixelatedScan/PixelatedScan.js +126 -74
- package/dist/components/PixelatedScan/index.js +25 -22
- package/dist/components/Portal/Portal.js +46 -43
- package/dist/components/Portal/index.js +25 -22
- package/dist/components/ProgressBar/ProgressBar.js +105 -47
- package/dist/components/ProgressBar/index.js +25 -22
- package/dist/components/ProgressTexts/ProgressTexts.js +43 -29
- package/dist/components/ProgressTexts/index.js +25 -22
- package/dist/components/Radio/Radio.js +51 -28
- package/dist/components/Radio/index.js +25 -22
- package/dist/components/Radio/variants/Checkmark/Checkmark.js +18 -12
- package/dist/components/Radio/variants/Checkmark/index.js +25 -22
- package/dist/components/Radio/variants/Generic/Generic.js +20 -12
- package/dist/components/Radio/variants/Generic/index.js +25 -22
- package/dist/components/ScrollendIndicator/ScrollendIndicator.js +118 -0
- package/dist/components/ScrollendIndicator/ScrollendIndicator.module.scss +76 -0
- package/dist/components/SectionContainer/SectionContainer.js +38 -16
- package/dist/components/SectionContainer/index.js +25 -22
- package/dist/components/Select/Select.js +128 -95
- package/dist/components/Select/index.js +25 -22
- package/dist/components/Skeleton/Skeleton.js +22 -14
- package/dist/components/Skeleton/index.js +25 -22
- package/dist/components/Slider/Slider.js +63 -59
- package/dist/components/Slider/index.js +25 -22
- package/dist/components/Spacing/Spacing.js +25 -17
- package/dist/components/Spacing/index.js +25 -22
- package/dist/components/StaticScroller/StaticScroller.js +65 -61
- package/dist/components/StaticScroller/index.js +25 -22
- package/dist/components/Switch/Switch.js +40 -26
- package/dist/components/Switch/index.js +25 -22
- package/dist/components/Table/Table.js +107 -56
- package/dist/components/Table/index.js +25 -22
- package/dist/components/Tabs/Tabs.js +59 -54
- package/dist/components/Tabs/index.js +25 -22
- package/dist/components/Text/Text.js +35 -30
- package/dist/components/Text/index.js +25 -22
- package/dist/components/Transition/MasksFactory/DiagonalReveal.js +46 -12
- package/dist/components/Transition/MasksFactory/DiagonalSquareToBalls.js +71 -49
- package/dist/components/Transition/MasksFactory/PhysicsSquares.js +89 -79
- package/dist/components/Transition/MasksFactory/SquareToBalls.js +60 -41
- package/dist/components/Transition/MasksFactory/utils.js +25 -27
- package/dist/components/Transition/Transition.js +298 -319
- package/dist/components/Transition/index.js +25 -22
- package/dist/components/UncontrolledTransition/UncontrolledTransition.js +101 -93
- package/dist/components/UncontrolledTransition/UncontrolledTransition.sample.js +27 -19
- package/dist/components/UncontrolledTransition/index.js +25 -22
- package/dist/components/WalletConnectionWrapper/WalletConnectionWrapper.js +101 -94
- package/dist/components/WalletConnectionWrapper/index.js +25 -22
- package/dist/components/utilitary/ScrollAndFocusLock/ScrollAndFocusLock.js +53 -43
- package/dist/components/utilitary/ScrollAndFocusLock/index.js +25 -22
- package/dist/context/AsyncProcess.js +68 -41
- package/dist/context/ContextAsyncControl.js +72 -51
- package/dist/context/CustomBrowserRouter.js +44 -30
- package/dist/context/OneUIProvider.js +102 -108
- package/dist/hooks/logs/useDependencyChangeDetection.js +17 -16
- package/dist/hooks/logs/useIsMounting.js +10 -7
- package/dist/hooks/persistence/useLocalStorage.js +41 -40
- package/dist/hooks/shims/ObjectWatchShim.js +47 -46
- package/dist/hooks/ui/useAdaptiveImage.js +29 -34
- package/dist/hooks/ui/useAlternating.js +18 -18
- package/dist/hooks/ui/useBreakpoint.js +19 -18
- package/dist/hooks/ui/useCustomScrollbar.js +26 -21
- package/dist/hooks/ui/useEffectIf.js +11 -9
- package/dist/hooks/ui/useMouseHover.js +22 -19
- package/dist/hooks/ui/usePaginationControls.js +129 -136
- package/dist/hooks/ui/useSnapToViewport.js +20 -19
- package/dist/hooks/ui/useTilt.js +145 -129
- package/dist/hooks/ui/useZoomable.js +123 -116
- package/dist/hooks/useAsyncControl.js +67 -52
- package/dist/hooks/useContainedRepositioning.js +75 -71
- package/dist/hooks/useCustomHistory.js +21 -12
- package/dist/hooks/useElementFit.js +43 -48
- package/dist/hooks/useFirestoreWatch.js +41 -41
- package/dist/hooks/useFreeze.js +10 -8
- package/dist/hooks/useHero.js +249 -271
- package/dist/hooks/useIntersection.js +32 -27
- package/dist/hooks/useMergeRefs.js +27 -24
- package/dist/hooks/useObserve.js +17 -14
- package/dist/hooks/usePagination.js +147 -164
- package/dist/hooks/usePooledOperation.js +41 -57
- package/dist/hooks/usePooling.js +46 -49
- package/dist/hooks/useRebound.js +23 -19
- package/dist/hooks/useShortIntl.js +72 -50
- package/dist/hooks/utility/useAsyncMemo.js +36 -42
- package/dist/hooks/utility/useDepChange.js +14 -12
- package/dist/hooks/utility/useEvents.js +26 -21
- package/dist/hooks/utility/useImmediate.js +8 -5
- package/dist/hooks/utility/useManualInit.js +19 -17
- package/dist/hooks/utility/useModule.js +12 -9
- package/dist/hooks/utility/useQuery.js +13 -7
- package/dist/hooks/utility/useUniqueEffect.js +17 -17
- package/dist/index.js +2159 -349
- package/dist/index.preprocess.js +35 -72
- package/dist/models/DebugLogger.js +8 -5
- package/dist/models/GenericContract.js +42 -13
- package/dist/models/ImageScales.js +13 -10
- package/dist/models/Orbs.js +53 -47
- package/dist/storybookUtils/index.js +40 -39
- package/dist/type-utils.js +5 -2
- package/dist/types.js +5 -2
- package/dist/utils/blockchain.js +35 -54
- package/dist/utils/e2e.js +21 -11
- package/dist/utils/flatten.js +15 -12
- package/dist/utils/formatters.js +48 -43
- package/dist/utils/html.utils.js +12 -6
- package/dist/utils/ownEvent.js +9 -7
- package/dist/utils/test.js +13 -11
- package/dist-ts/components/ScrollendIndicator/ScrollendIndicator.d.ts +10 -0
- package/dist-ts/components/ScrollendIndicator/ScrollendIndicator.js +68 -0
- package/dist-ts/components/ScrollendIndicator/ScrollendIndicator.js.map +1 -0
- package/dist-ts/components/ScrollendIndicator/ScrollendIndicator.module.scss +76 -0
- package/dist-ts/index.d.ts +1 -0
- package/dist-ts/index.js +1 -0
- package/dist-ts/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,157 +1,316 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const Radio_1 = __importDefault(require("../../Radio"));
|
|
26
|
-
const AnchoredTooltip_1 = require("../../AnchoredTooltip/AnchoredTooltip");
|
|
27
|
-
const FileInput_1 = __importDefault(require("../../FileInput/FileInput"));
|
|
28
|
-
const CheckBox_1 = __importDefault(require("../../CheckBox/CheckBox"));
|
|
29
|
-
const Spacing_1 = __importDefault(require("../../Spacing"));
|
|
30
|
-
const OneUIProvider_1 = require("../../../context/OneUIProvider");
|
|
31
|
-
const AdaptiveContainer_1 = __importDefault(require("../../AdaptiveContainer"));
|
|
32
|
-
const Text_2 = __importDefault(require("../../Text"));
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = FormField;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _debounce = _interopRequireDefault(require("lodash/debounce"));
|
|
9
|
+
var _FormField = require("./FormField.types");
|
|
10
|
+
var _Select = _interopRequireDefault(require("../../Select/Select"));
|
|
11
|
+
var _Input = _interopRequireDefault(require("../../Input"));
|
|
12
|
+
var _Text = _interopRequireDefault(require("../../Text"));
|
|
13
|
+
var _Button = _interopRequireDefault(require("../../Button"));
|
|
14
|
+
var _Radio = _interopRequireDefault(require("../../Radio"));
|
|
15
|
+
var _AnchoredTooltip = require("../../AnchoredTooltip/AnchoredTooltip");
|
|
16
|
+
var _FileInput = _interopRequireDefault(require("../../FileInput/FileInput"));
|
|
17
|
+
var _CheckBox = _interopRequireDefault(require("../../CheckBox/CheckBox"));
|
|
18
|
+
var _Spacing = _interopRequireDefault(require("../../Spacing"));
|
|
19
|
+
var _OneUIProvider = require("../../../context/OneUIProvider");
|
|
20
|
+
var _AdaptiveContainer = _interopRequireDefault(require("../../AdaptiveContainer"));
|
|
21
|
+
const _excluded = ["config", "value"];
|
|
22
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
24
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
33
25
|
// import InputMask from "react-input-mask";
|
|
34
26
|
/**
|
|
35
27
|
* The logic for a field of the form
|
|
36
28
|
**/
|
|
37
|
-
function FormField(
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
description: c.fileUsageDescription,
|
|
56
|
-
},
|
|
57
|
-
waitingFile: {
|
|
58
|
-
title: c.title,
|
|
59
|
-
description: c.fileUsageDescription,
|
|
60
|
-
},
|
|
61
|
-
}, footer: c.footer, onFile: () => { }, file: file === true ? {} : undefined, progress: file === true ? 100 : undefined, disabled: true }), (0, jsx_runtime_1.jsx)(Spacing_1.default, { size: "small" }), file === true && ((0, jsx_runtime_1.jsx)(Button_1.default, { variant: "link", color: "primary", onClick: c.openFile.action, children: c.openFile.label })), (0, jsx_runtime_1.jsx)(Spacing_1.default, { size: "large" })] }));
|
|
62
|
-
default:
|
|
63
|
-
const CustomReadOnly = (_b = extensions === null || extensions === void 0 ? void 0 : extensions[type]) === null || _b === void 0 ? void 0 : _b.ReadOnly;
|
|
64
|
-
const answer = val();
|
|
65
|
-
if (!CustomReadOnly && typeof answer === "object")
|
|
66
|
-
throw new Error(`There is no custom read only component for the form field type "${type}". Please review and set it at OneUIProvider.`);
|
|
67
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Text_1.default, { type: titleVariant, children: c.title }), (0, jsx_runtime_1.jsx)(Text_1.default, { type: labelVariant, "data-testid": props["data-testid"], children: CustomReadOnly ? ((0, jsx_runtime_1.jsx)(CustomReadOnly, { question: c, value: value, "data-testid": props["data-testid"] })) : (answer || "-") })] }));
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
const { onAnswer, error } = props;
|
|
29
|
+
function FormField(_ref) {
|
|
30
|
+
var _extensions, _variants$error, _variants$error2;
|
|
31
|
+
let {
|
|
32
|
+
config: c,
|
|
33
|
+
value
|
|
34
|
+
} = _ref,
|
|
35
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
36
|
+
const variants = (0, _OneUIProvider.useOneUIConfig)("component.input.labelVariants", {});
|
|
37
|
+
const val = () => value;
|
|
38
|
+
const ans = answer => answer;
|
|
39
|
+
const type = c.type;
|
|
40
|
+
const {
|
|
41
|
+
titleVariant,
|
|
42
|
+
labelVariant,
|
|
43
|
+
optionalLabel,
|
|
44
|
+
extensions
|
|
45
|
+
} = (0, _OneUIProvider.useOneUIConfig)("component.form");
|
|
46
|
+
if (props.mode === _FormField.FormMode.READ_ONLY) {
|
|
71
47
|
switch (type) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
const throttleSetProgress = (0, debounce_1.default)(setProgress, 250);
|
|
97
|
-
const unsubscribe = upload.on("state_changed", (s) => {
|
|
98
|
-
const progress = (s.bytesTransferred * 100) / s.totalBytes;
|
|
99
|
-
throttleSetProgress(progress);
|
|
100
|
-
});
|
|
101
|
-
return () => {
|
|
102
|
-
unsubscribe();
|
|
103
|
-
};
|
|
104
|
-
}, [upload]);
|
|
105
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(FileInput_1.default, { states: {
|
|
106
|
-
fileProvided: {
|
|
107
|
-
title: c.title,
|
|
108
|
-
description: c.fileUsageDescription,
|
|
109
|
-
},
|
|
110
|
-
waitingFile: {
|
|
111
|
-
title: c.title,
|
|
112
|
-
description: c.fileUsageDescription,
|
|
113
|
-
},
|
|
114
|
-
}, footer: c.footer, onFile: (file) => {
|
|
115
|
-
onAnswer(type, c.id, ans(file));
|
|
116
|
-
}, file: upload, progress: upload ? progress || 0 : undefined, accept: c.extensions.map((x) => `.${x}`).join(",") }), error ? ((0, jsx_runtime_1.jsx)(Text_1.default, { type: "caption", color: "error", children: error })) : null, (0, jsx_runtime_1.jsx)(Spacing_1.default, { size: "large" })] }));
|
|
117
|
-
case "radio":
|
|
118
|
-
const selected = val();
|
|
119
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(Text_1.default, { type: titleVariant, children: [c.title, !c.optional && ((0, jsx_runtime_1.jsx)("span", { style: { color: "var(--warning-red, #e84b4b)" }, children: " *" }))] }), error && ((0, jsx_runtime_1.jsx)(Text_1.default, { type: "caption", color: "error", children: error })), (0, jsx_runtime_1.jsx)("br", {}), c.options.map((el) => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Text_1.default, { type: labelVariant, children: (0, jsx_runtime_1.jsx)(Radio_1.default, { checked: selected === el.value, label: el.label, onToggle: () => onAnswer(type, c.id, el.value), groupId: c.id, value: el.value, "data-testid": props["data-testid"] }) }), (0, jsx_runtime_1.jsx)("br", {})] })))] }));
|
|
120
|
-
case "check":
|
|
121
|
-
const checkError = typeof error === "string" ? c.options.map(() => error) : error;
|
|
122
|
-
const checkmarks = val() || [];
|
|
123
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(Text_1.default, { type: titleVariant, children: [c.title, !c.optional && ((0, jsx_runtime_1.jsx)("span", { style: { color: "var(--warning-red, #e84b4b)" }, children: " *" }))] }), (0, jsx_runtime_1.jsx)("br", {}), c.options.map((el, i) => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Text_1.default, { type: labelVariant, children: (0, jsx_runtime_1.jsx)(CheckBox_1.default, { checked: checkmarks[i], label: (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)("div", { children: el.label }) }), onToggle: (checked) => {
|
|
124
|
-
const clone = [...checkmarks];
|
|
125
|
-
clone[i] = checked;
|
|
126
|
-
onAnswer(type, c.id, clone);
|
|
127
|
-
}, groupId: c.id, value: el.value }) }), (0, jsx_runtime_1.jsx)("br", {})] }))), (0, jsx_runtime_1.jsx)(AdaptiveContainer_1.default, { direction: "v", children: Array.isArray(checkError) ? (checkError.some((a) => !!a) ? ((0, jsx_runtime_1.jsx)(Text_2.default, { title: typeof error === "string" ? error : "", type: (_c = variants.error) !== null && _c !== void 0 ? _c : "error", children: error }, "error")) : ((0, jsx_runtime_1.jsx)(react_1.Fragment, {}, "e"))) : !!checkError ? ((0, jsx_runtime_1.jsx)(Text_2.default, { title: typeof error === "string" ? error : "", type: (_d = variants.error) !== null && _d !== void 0 ? _d : "error", children: error }, "error-single")) : ((0, jsx_runtime_1.jsx)(react_1.Fragment, {}, "e")) })] }));
|
|
128
|
-
case "rawcheck":
|
|
129
|
-
const rawCheckmarks = val() || [];
|
|
130
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [error && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Text_1.default, { type: "caption", color: "error", children: error }), (0, jsx_runtime_1.jsx)("br", {})] })), c.options.map((el, i) => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Text_1.default, { type: labelVariant, children: (0, jsx_runtime_1.jsx)(CheckBox_1.default, { checked: rawCheckmarks[i], label: el.label, onToggle: (checked) => {
|
|
131
|
-
const clone = [...rawCheckmarks];
|
|
132
|
-
clone[i] = checked;
|
|
133
|
-
onAnswer(type, c.id, clone);
|
|
134
|
-
}, groupId: c.id, value: el.value }) }), (0, jsx_runtime_1.jsx)("br", {})] })))] }));
|
|
135
|
-
case "select":
|
|
136
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(Text_1.default, { type: titleVariant, children: [c.title, !c.optional && ((0, jsx_runtime_1.jsx)("span", { style: { color: "var(--warning-red, #e84b4b)" }, children: " *" }))] }), (0, jsx_runtime_1.jsx)(Select_1.default, { "data-testid": props["data-testid"], alignTo: AnchoredTooltip_1.AnchoredTooltipAlignment.LEFT, items: c.options, selected: val(), onClick: (i) => {
|
|
137
|
-
onAnswer(type, c.id, i.value);
|
|
138
|
-
}, filter: c.filter, error: error, disabled: props.disabled })] }));
|
|
139
|
-
case "text":
|
|
140
|
-
case "number":
|
|
141
|
-
const filter = type === "number"
|
|
142
|
-
? (val) => val.replace(/[^0-9]+/g, "")
|
|
143
|
-
: (val) => val;
|
|
144
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(Text_1.default, { type: titleVariant, children: [c.title, !c.optional && ((0, jsx_runtime_1.jsx)("span", { style: { color: "var(--warning-red, #e84b4b)" }, children: " *" }))] }), (0, jsx_runtime_1.jsx)(Input_1.default, { multiline: "multiline" in c ? c.multiline : undefined, placeholder: c.title, value: val(), error: error, onChange: ({ target: { value } }) => {
|
|
145
|
-
onAnswer(type, c.id, filter(value));
|
|
146
|
-
}, "data-testid": props["data-testid"], disabled: props.disabled })] }));
|
|
147
|
-
default:
|
|
148
|
-
const registeredExtension = extensions === null || extensions === void 0 ? void 0 : extensions[type];
|
|
149
|
-
if (registeredExtension) {
|
|
150
|
-
const { Input } = registeredExtension;
|
|
151
|
-
return ((0, jsx_runtime_1.jsx)(Input, { onAnswer: onAnswer, question: c, value: value, error: error, "data-testid": props["data-testid"] }));
|
|
48
|
+
case "check":
|
|
49
|
+
const checks = val() || [];
|
|
50
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Text.default, {
|
|
51
|
+
type: titleVariant
|
|
52
|
+
}, c.title), checks.includes(true) ? checks.map((checked, i) => checked ? /*#__PURE__*/React.createElement(_Text.default, {
|
|
53
|
+
type: labelVariant
|
|
54
|
+
}, c.options[i].value) : null) : /*#__PURE__*/React.createElement(_Text.default, {
|
|
55
|
+
type: labelVariant
|
|
56
|
+
}, "-"), /*#__PURE__*/React.createElement(_Spacing.default, {
|
|
57
|
+
size: "small"
|
|
58
|
+
}));
|
|
59
|
+
case "file":
|
|
60
|
+
const file = val();
|
|
61
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_FileInput.default, {
|
|
62
|
+
states: {
|
|
63
|
+
fileProvided: {
|
|
64
|
+
title: c.title,
|
|
65
|
+
description: c.fileUsageDescription
|
|
66
|
+
},
|
|
67
|
+
waitingFile: {
|
|
68
|
+
title: c.title,
|
|
69
|
+
description: c.fileUsageDescription
|
|
152
70
|
}
|
|
153
|
-
|
|
71
|
+
},
|
|
72
|
+
footer: c.footer,
|
|
73
|
+
onFile: () => {},
|
|
74
|
+
file: file === true ? {} : undefined,
|
|
75
|
+
progress: file === true ? 100 : undefined,
|
|
76
|
+
disabled: true
|
|
77
|
+
}), /*#__PURE__*/React.createElement(_Spacing.default, {
|
|
78
|
+
size: "small"
|
|
79
|
+
}), file === true && /*#__PURE__*/React.createElement(_Button.default, {
|
|
80
|
+
variant: "link",
|
|
81
|
+
color: "primary",
|
|
82
|
+
onClick: c.openFile.action
|
|
83
|
+
}, c.openFile.label), /*#__PURE__*/React.createElement(_Spacing.default, {
|
|
84
|
+
size: "large"
|
|
85
|
+
}));
|
|
86
|
+
default:
|
|
87
|
+
const CustomReadOnly = extensions === null || extensions === void 0 || (_extensions = extensions[type]) === null || _extensions === void 0 ? void 0 : _extensions.ReadOnly;
|
|
88
|
+
const answer = val();
|
|
89
|
+
if (!CustomReadOnly && typeof answer === "object") throw new Error("There is no custom read only component for the form field type \"".concat(type, "\". Please review and set it at OneUIProvider."));
|
|
90
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Text.default, {
|
|
91
|
+
type: titleVariant
|
|
92
|
+
}, c.title), /*#__PURE__*/React.createElement(_Text.default, {
|
|
93
|
+
type: labelVariant
|
|
94
|
+
}, CustomReadOnly ? /*#__PURE__*/React.createElement(CustomReadOnly, {
|
|
95
|
+
question: c,
|
|
96
|
+
value: value
|
|
97
|
+
}) : answer || "-"));
|
|
154
98
|
}
|
|
99
|
+
}
|
|
100
|
+
const {
|
|
101
|
+
onAnswer,
|
|
102
|
+
error
|
|
103
|
+
} = props;
|
|
104
|
+
switch (type) {
|
|
105
|
+
case "accept":
|
|
106
|
+
const checks = val() || [];
|
|
107
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(_Text.default, {
|
|
108
|
+
type: titleVariant
|
|
109
|
+
}, c.title, !c.optional && /*#__PURE__*/React.createElement("span", {
|
|
110
|
+
style: {
|
|
111
|
+
color: "var(--warning-red, #e84b4b)"
|
|
112
|
+
}
|
|
113
|
+
}, " *")), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement(_Button.default, {
|
|
114
|
+
variant: "link",
|
|
115
|
+
color: "primary",
|
|
116
|
+
onClick: c.contract.action
|
|
117
|
+
}, c.contract.label)), error && /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(_Text.default, {
|
|
118
|
+
type: "caption",
|
|
119
|
+
color: "error"
|
|
120
|
+
}, error), /*#__PURE__*/React.createElement("br", null)), /*#__PURE__*/React.createElement("div", null, c.accept.map((a, i) => /*#__PURE__*/React.createElement(_Text.default, {
|
|
121
|
+
type: labelVariant
|
|
122
|
+
}, /*#__PURE__*/React.createElement(_CheckBox.default, {
|
|
123
|
+
label: /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(React.Fragment, null, a.label, a.optional ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement(_Text.default, {
|
|
124
|
+
type: "caption"
|
|
125
|
+
}, optionalLabel)) : "")),
|
|
126
|
+
checked: checks[i],
|
|
127
|
+
onToggle: checked => {
|
|
128
|
+
const clone = [...checks];
|
|
129
|
+
clone[i] = checked;
|
|
130
|
+
onAnswer(type, c.id, ans(clone));
|
|
131
|
+
},
|
|
132
|
+
groupId: c.id,
|
|
133
|
+
value: a.label
|
|
134
|
+
}))))), /*#__PURE__*/React.createElement(_Spacing.default, {
|
|
135
|
+
size: "small"
|
|
136
|
+
}));
|
|
137
|
+
case "file":
|
|
138
|
+
const upload = val();
|
|
139
|
+
const [progress, setProgress] = (0, _react.useState)(() => {
|
|
140
|
+
if (!upload) return undefined;
|
|
141
|
+
if (upload === true) return 100;
|
|
142
|
+
const s = upload.snapshot;
|
|
143
|
+
return s.bytesTransferred * 100 / s.totalBytes;
|
|
144
|
+
});
|
|
145
|
+
(0, _react.useEffect)(() => {
|
|
146
|
+
if (!upload) return setProgress(undefined);
|
|
147
|
+
if (upload === true) {
|
|
148
|
+
setProgress(100);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const throttleSetProgress = (0, _debounce.default)(setProgress, 250);
|
|
152
|
+
const unsubscribe = upload.on("state_changed", s => {
|
|
153
|
+
const progress = s.bytesTransferred * 100 / s.totalBytes;
|
|
154
|
+
throttleSetProgress(progress);
|
|
155
|
+
});
|
|
156
|
+
return () => {
|
|
157
|
+
unsubscribe();
|
|
158
|
+
};
|
|
159
|
+
}, [upload]);
|
|
160
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_FileInput.default, {
|
|
161
|
+
states: {
|
|
162
|
+
fileProvided: {
|
|
163
|
+
title: c.title,
|
|
164
|
+
description: c.fileUsageDescription
|
|
165
|
+
},
|
|
166
|
+
waitingFile: {
|
|
167
|
+
title: c.title,
|
|
168
|
+
description: c.fileUsageDescription
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
footer: c.footer,
|
|
172
|
+
onFile: file => {
|
|
173
|
+
onAnswer(type, c.id, ans(file));
|
|
174
|
+
},
|
|
175
|
+
file: upload,
|
|
176
|
+
progress: upload ? progress || 0 : undefined,
|
|
177
|
+
accept: c.extensions.map(x => ".".concat(x)).join(",")
|
|
178
|
+
}), error ? /*#__PURE__*/React.createElement(_Text.default, {
|
|
179
|
+
type: "caption",
|
|
180
|
+
color: "error"
|
|
181
|
+
}, error) : null, /*#__PURE__*/React.createElement(_Spacing.default, {
|
|
182
|
+
size: "large"
|
|
183
|
+
}));
|
|
184
|
+
case "radio":
|
|
185
|
+
const selected = val();
|
|
186
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Text.default, {
|
|
187
|
+
type: titleVariant
|
|
188
|
+
}, c.title, !c.optional && /*#__PURE__*/React.createElement("span", {
|
|
189
|
+
style: {
|
|
190
|
+
color: "var(--warning-red, #e84b4b)"
|
|
191
|
+
}
|
|
192
|
+
}, " *")), error && /*#__PURE__*/React.createElement(_Text.default, {
|
|
193
|
+
type: "caption",
|
|
194
|
+
color: "error"
|
|
195
|
+
}, error), /*#__PURE__*/React.createElement("br", null), c.options.map(el => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Text.default, {
|
|
196
|
+
type: labelVariant
|
|
197
|
+
}, /*#__PURE__*/React.createElement(_Radio.default, {
|
|
198
|
+
checked: selected === el.value,
|
|
199
|
+
label: el.label,
|
|
200
|
+
onToggle: () => onAnswer(type, c.id, el.value),
|
|
201
|
+
groupId: c.id,
|
|
202
|
+
value: el.value
|
|
203
|
+
})), /*#__PURE__*/React.createElement("br", null))));
|
|
204
|
+
case "check":
|
|
205
|
+
const checkError = typeof error === "string" ? c.options.map(() => error) : error;
|
|
206
|
+
const checkmarks = val() || [];
|
|
207
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Text.default, {
|
|
208
|
+
type: titleVariant
|
|
209
|
+
}, c.title, !c.optional && /*#__PURE__*/React.createElement("span", {
|
|
210
|
+
style: {
|
|
211
|
+
color: "var(--warning-red, #e84b4b)"
|
|
212
|
+
}
|
|
213
|
+
}, " *")), /*#__PURE__*/React.createElement("br", null), c.options.map((el, i) => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Text.default, {
|
|
214
|
+
type: labelVariant
|
|
215
|
+
}, /*#__PURE__*/React.createElement(_CheckBox.default, {
|
|
216
|
+
checked: checkmarks[i],
|
|
217
|
+
label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", null, el.label)),
|
|
218
|
+
onToggle: checked => {
|
|
219
|
+
const clone = [...checkmarks];
|
|
220
|
+
clone[i] = checked;
|
|
221
|
+
onAnswer(type, c.id, clone);
|
|
222
|
+
},
|
|
223
|
+
groupId: c.id,
|
|
224
|
+
value: el.value
|
|
225
|
+
})), /*#__PURE__*/React.createElement("br", null))), /*#__PURE__*/React.createElement(_AdaptiveContainer.default, {
|
|
226
|
+
direction: "v"
|
|
227
|
+
}, Array.isArray(checkError) ? checkError.some(a => !!a) ? /*#__PURE__*/React.createElement(_Text.default, {
|
|
228
|
+
key: "error",
|
|
229
|
+
title: typeof error === "string" ? error : "",
|
|
230
|
+
type: (_variants$error = variants.error) !== null && _variants$error !== void 0 ? _variants$error : "error"
|
|
231
|
+
}, error) : /*#__PURE__*/React.createElement(_react.Fragment, {
|
|
232
|
+
key: "e"
|
|
233
|
+
}) : !!checkError ? /*#__PURE__*/React.createElement(_Text.default, {
|
|
234
|
+
key: "error-single",
|
|
235
|
+
title: typeof error === "string" ? error : "",
|
|
236
|
+
type: (_variants$error2 = variants.error) !== null && _variants$error2 !== void 0 ? _variants$error2 : "error"
|
|
237
|
+
}, error) : /*#__PURE__*/React.createElement(_react.Fragment, {
|
|
238
|
+
key: "e"
|
|
239
|
+
})));
|
|
240
|
+
case "rawcheck":
|
|
241
|
+
const rawCheckmarks = val() || [];
|
|
242
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, error && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Text.default, {
|
|
243
|
+
type: "caption",
|
|
244
|
+
color: "error"
|
|
245
|
+
}, error), /*#__PURE__*/React.createElement("br", null)), c.options.map((el, i) => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Text.default, {
|
|
246
|
+
type: labelVariant
|
|
247
|
+
}, /*#__PURE__*/React.createElement(_CheckBox.default, {
|
|
248
|
+
checked: rawCheckmarks[i],
|
|
249
|
+
label: el.label,
|
|
250
|
+
onToggle: checked => {
|
|
251
|
+
const clone = [...rawCheckmarks];
|
|
252
|
+
clone[i] = checked;
|
|
253
|
+
onAnswer(type, c.id, clone);
|
|
254
|
+
},
|
|
255
|
+
groupId: c.id,
|
|
256
|
+
value: el.value
|
|
257
|
+
})), /*#__PURE__*/React.createElement("br", null))));
|
|
258
|
+
case "select":
|
|
259
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Text.default, {
|
|
260
|
+
type: titleVariant
|
|
261
|
+
}, c.title, !c.optional && /*#__PURE__*/React.createElement("span", {
|
|
262
|
+
style: {
|
|
263
|
+
color: "var(--warning-red, #e84b4b)"
|
|
264
|
+
}
|
|
265
|
+
}, " *")), /*#__PURE__*/React.createElement(_Select.default, {
|
|
266
|
+
alignTo: _AnchoredTooltip.AnchoredTooltipAlignment.LEFT,
|
|
267
|
+
items: c.options,
|
|
268
|
+
selected: val(),
|
|
269
|
+
onClick: i => {
|
|
270
|
+
onAnswer(type, c.id, i.value);
|
|
271
|
+
},
|
|
272
|
+
filter: c.filter,
|
|
273
|
+
error: error,
|
|
274
|
+
disabled: props.disabled
|
|
275
|
+
}));
|
|
276
|
+
case "text":
|
|
277
|
+
case "number":
|
|
278
|
+
const filter = type === "number" ? val => val.replace(/[^0-9]+/g, "") : val => val;
|
|
279
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Text.default, {
|
|
280
|
+
type: titleVariant
|
|
281
|
+
}, c.title, !c.optional && /*#__PURE__*/React.createElement("span", {
|
|
282
|
+
style: {
|
|
283
|
+
color: "var(--warning-red, #e84b4b)"
|
|
284
|
+
}
|
|
285
|
+
}, " *")), /*#__PURE__*/React.createElement(_Input.default, {
|
|
286
|
+
multiline: "multiline" in c ? c.multiline : undefined,
|
|
287
|
+
placeholder: c.title,
|
|
288
|
+
value: val(),
|
|
289
|
+
error: error,
|
|
290
|
+
onChange: _ref2 => {
|
|
291
|
+
let {
|
|
292
|
+
target: {
|
|
293
|
+
value
|
|
294
|
+
}
|
|
295
|
+
} = _ref2;
|
|
296
|
+
onAnswer(type, c.id, filter(value));
|
|
297
|
+
},
|
|
298
|
+
disabled: props.disabled
|
|
299
|
+
}));
|
|
300
|
+
default:
|
|
301
|
+
const registeredExtension = extensions === null || extensions === void 0 ? void 0 : extensions[type];
|
|
302
|
+
if (registeredExtension) {
|
|
303
|
+
const {
|
|
304
|
+
Input
|
|
305
|
+
} = registeredExtension;
|
|
306
|
+
return /*#__PURE__*/React.createElement(Input, {
|
|
307
|
+
onAnswer: onAnswer,
|
|
308
|
+
question: c,
|
|
309
|
+
value: value,
|
|
310
|
+
error: error
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
throw new Error("The form field \"".concat(type, "\" is not implemented yet. Please provide it using OneUIProvider config options for form extensions"));
|
|
314
|
+
}
|
|
155
315
|
}
|
|
156
|
-
exports.default = FormField;
|
|
157
|
-
//# sourceMappingURL=FormField.js.map
|
|
316
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX2RlYm91bmNlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9Gb3JtRmllbGQiLCJfU2VsZWN0IiwiX0lucHV0IiwiX1RleHQiLCJfQnV0dG9uIiwiX1JhZGlvIiwiX0FuY2hvcmVkVG9vbHRpcCIsIl9GaWxlSW5wdXQiLCJfQ2hlY2tCb3giLCJfU3BhY2luZyIsIl9PbmVVSVByb3ZpZGVyIiwiX0FkYXB0aXZlQ29udGFpbmVyIiwiX2V4Y2x1ZGVkIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJzb3VyY2UiLCJleGNsdWRlZCIsInRhcmdldCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwia2V5IiwiaSIsIk9iamVjdCIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJsZW5ndGgiLCJpbmRleE9mIiwicHJvdG90eXBlIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjYWxsIiwic291cmNlS2V5cyIsImtleXMiLCJGb3JtRmllbGQiLCJfcmVmIiwiX2V4dGVuc2lvbnMiLCJfdmFyaWFudHMkZXJyb3IiLCJfdmFyaWFudHMkZXJyb3IyIiwiY29uZmlnIiwiYyIsInZhbHVlIiwicHJvcHMiLCJ2YXJpYW50cyIsInVzZU9uZVVJQ29uZmlnIiwidmFsIiwiYW5zIiwiYW5zd2VyIiwidHlwZSIsInRpdGxlVmFyaWFudCIsImxhYmVsVmFyaWFudCIsIm9wdGlvbmFsTGFiZWwiLCJleHRlbnNpb25zIiwibW9kZSIsIkZvcm1Nb2RlIiwiUkVBRF9PTkxZIiwiY2hlY2tzIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiRnJhZ21lbnQiLCJ0aXRsZSIsImluY2x1ZGVzIiwibWFwIiwiY2hlY2tlZCIsIm9wdGlvbnMiLCJzaXplIiwiZmlsZSIsInN0YXRlcyIsImZpbGVQcm92aWRlZCIsImRlc2NyaXB0aW9uIiwiZmlsZVVzYWdlRGVzY3JpcHRpb24iLCJ3YWl0aW5nRmlsZSIsImZvb3RlciIsIm9uRmlsZSIsInVuZGVmaW5lZCIsInByb2dyZXNzIiwiZGlzYWJsZWQiLCJ2YXJpYW50IiwiY29sb3IiLCJvbkNsaWNrIiwib3BlbkZpbGUiLCJhY3Rpb24iLCJsYWJlbCIsIkN1c3RvbVJlYWRPbmx5IiwiUmVhZE9ubHkiLCJFcnJvciIsImNvbmNhdCIsInF1ZXN0aW9uIiwib25BbnN3ZXIiLCJlcnJvciIsIm9wdGlvbmFsIiwic3R5bGUiLCJjb250cmFjdCIsImFjY2VwdCIsImEiLCJvblRvZ2dsZSIsImNsb25lIiwiaWQiLCJncm91cElkIiwidXBsb2FkIiwic2V0UHJvZ3Jlc3MiLCJ1c2VTdGF0ZSIsInMiLCJzbmFwc2hvdCIsImJ5dGVzVHJhbnNmZXJyZWQiLCJ0b3RhbEJ5dGVzIiwidXNlRWZmZWN0IiwidGhyb3R0bGVTZXRQcm9ncmVzcyIsImRlYm91bmNlIiwidW5zdWJzY3JpYmUiLCJvbiIsIngiLCJqb2luIiwic2VsZWN0ZWQiLCJlbCIsImNoZWNrRXJyb3IiLCJjaGVja21hcmtzIiwiZGlyZWN0aW9uIiwiQXJyYXkiLCJpc0FycmF5Iiwic29tZSIsInJhd0NoZWNrbWFya3MiLCJhbGlnblRvIiwiQW5jaG9yZWRUb29sdGlwQWxpZ25tZW50IiwiTEVGVCIsIml0ZW1zIiwiZmlsdGVyIiwicmVwbGFjZSIsIm11bHRpbGluZSIsInBsYWNlaG9sZGVyIiwib25DaGFuZ2UiLCJfcmVmMiIsInJlZ2lzdGVyZWRFeHRlbnNpb24iLCJJbnB1dCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0Zvcm0vRm9ybUZpZWxkL0Zvcm1GaWVsZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRnJhZ21lbnQsIFJlYWN0Tm9kZSwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gXCJsb2Rhc2gvZGVib3VuY2VcIjtcbmltcG9ydCB7XG4gIEFuc3dlckFjdGlvbixcbiAgQW5zd2VyQnlGaWVsZCxcbiAgRm9ybUZpZWxkUHJvcHMsXG4gIEZvcm1GaWVsZFZpZXcsXG4gIEZvcm1Nb2RlLFxufSBmcm9tIFwiLi9Gb3JtRmllbGQudHlwZXNcIjtcbmltcG9ydCBTZWxlY3QgZnJvbSBcIi4uLy4uL1NlbGVjdC9TZWxlY3RcIjtcbmltcG9ydCBJbnB1dCBmcm9tIFwiLi4vLi4vSW5wdXRcIjtcbmltcG9ydCBPbmVUZXh0IGZyb20gXCIuLi8uLi9UZXh0XCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9CdXR0b25cIjtcbmltcG9ydCBSYWRpbyBmcm9tIFwiLi4vLi4vUmFkaW9cIjtcbmltcG9ydCB7IEFuY2hvcmVkVG9vbHRpcEFsaWdubWVudCB9IGZyb20gXCIuLi8uLi9BbmNob3JlZFRvb2x0aXAvQW5jaG9yZWRUb29sdGlwXCI7XG5pbXBvcnQgRmlsZUlucHV0IGZyb20gXCIuLi8uLi9GaWxlSW5wdXQvRmlsZUlucHV0XCI7XG5pbXBvcnQgQ2hlY2tCb3ggZnJvbSBcIi4uLy4uL0NoZWNrQm94L0NoZWNrQm94XCI7XG5pbXBvcnQgU3BhY2luZyBmcm9tIFwiLi4vLi4vU3BhY2luZ1wiO1xuaW1wb3J0IHsgdXNlT25lVUlDb25maWcgfSBmcm9tIFwiLi4vLi4vLi4vY29udGV4dC9PbmVVSVByb3ZpZGVyXCI7XG5pbXBvcnQgQWRhcHRpdmVDb250YWluZXIgZnJvbSBcIi4uLy4uL0FkYXB0aXZlQ29udGFpbmVyXCI7XG5pbXBvcnQgVGV4dCBmcm9tIFwiLi4vLi4vVGV4dFwiO1xuLy8gaW1wb3J0IElucHV0TWFzayBmcm9tIFwicmVhY3QtaW5wdXQtbWFza1wiO1xuXG4vKipcbiAqIFRoZSBsb2dpYyBmb3IgYSBmaWVsZCBvZiB0aGUgZm9ybVxuICoqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRm9ybUZpZWxkPFEgZXh0ZW5kcyBGb3JtRmllbGRWaWV3Pih7XG4gIGNvbmZpZzogYyxcbiAgdmFsdWUsXG4gIC4uLnByb3BzXG59OiBGb3JtRmllbGRQcm9wczxRPikge1xuICBjb25zdCB2YXJpYW50cyA9IHVzZU9uZVVJQ29uZmlnKFwiY29tcG9uZW50LmlucHV0LmxhYmVsVmFyaWFudHNcIiwge30pO1xuICBjb25zdCB2YWwgPSA8VCBleHRlbmRzIEZvcm1GaWVsZFZpZXdbXCJ0eXBlXCJdPigpID0+XG4gICAgdmFsdWUgYXMgdW5rbm93biBhc1xuICAgICAgfCBBbnN3ZXJCeUZpZWxkPHtcbiAgICAgICAgICB0eXBlOiBUO1xuICAgICAgICB9PlxuICAgICAgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IGFucyA9IDxUIGV4dGVuZHMgRm9ybUZpZWxkVmlld1tcInR5cGVcIl0+KFxuICAgIGFuc3dlcjpcbiAgICAgIHwgQW5zd2VyQWN0aW9uPHtcbiAgICAgICAgICB0eXBlOiBUO1xuICAgICAgICB9PlxuICAgICAgfCB1bmRlZmluZWQsXG4gICkgPT5cbiAgICBhbnN3ZXIgYXMgdW5rbm93biBhcyBBbnN3ZXJBY3Rpb248e1xuICAgICAgdHlwZTogVDtcbiAgICB9PjtcbiAgY29uc3QgdHlwZSA9IGMudHlwZTtcbiAgY29uc3QgeyB0aXRsZVZhcmlhbnQsIGxhYmVsVmFyaWFudCwgb3B0aW9uYWxMYWJlbCwgZXh0ZW5zaW9ucyB9ID1cbiAgICB1c2VPbmVVSUNvbmZpZyhcImNvbXBvbmVudC5mb3JtXCIpO1xuICBpZiAocHJvcHMubW9kZSA9PT0gRm9ybU1vZGUuUkVBRF9PTkxZKSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFwiY2hlY2tcIjpcbiAgICAgICAgY29uc3QgY2hlY2tzID0gdmFsPHR5cGVvZiB0eXBlPigpISB8fCBbXTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPE9uZVRleHQgdHlwZT17dGl0bGVWYXJpYW50fT57Yy50aXRsZX08L09uZVRleHQ+XG4gICAgICAgICAgICB7Y2hlY2tzLmluY2x1ZGVzKHRydWUpID8gKFxuICAgICAgICAgICAgICBjaGVja3MubWFwKChjaGVja2VkLCBpKSA9PlxuICAgICAgICAgICAgICAgIGNoZWNrZWQgPyAoXG4gICAgICAgICAgICAgICAgICA8T25lVGV4dCB0eXBlPXtsYWJlbFZhcmlhbnR9PntjLm9wdGlvbnNbaV0udmFsdWV9PC9PbmVUZXh0PlxuICAgICAgICAgICAgICAgICkgOiBudWxsLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8T25lVGV4dCB0eXBlPXtsYWJlbFZhcmlhbnR9Pi08L09uZVRleHQ+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPFNwYWNpbmcgc2l6ZT1cInNtYWxsXCIgLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKTtcbiAgICAgIGNhc2UgXCJmaWxlXCI6XG4gICAgICAgIGNvbnN0IGZpbGUgPSB2YWw8dHlwZW9mIHR5cGU+KCkhO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8RmlsZUlucHV0XG4gICAgICAgICAgICAgIHN0YXRlcz17e1xuICAgICAgICAgICAgICAgIGZpbGVQcm92aWRlZDoge1xuICAgICAgICAgICAgICAgICAgdGl0bGU6IGMudGl0bGUsXG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogYy5maWxlVXNhZ2VEZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHdhaXRpbmdGaWxlOiB7XG4gICAgICAgICAgICAgICAgICB0aXRsZTogYy50aXRsZSxcbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBjLmZpbGVVc2FnZURlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGZvb3Rlcj17Yy5mb290ZXJ9XG4gICAgICAgICAgICAgIG9uRmlsZT17KCkgPT4ge319XG4gICAgICAgICAgICAgIGZpbGU9e2ZpbGUgPT09IHRydWUgPyAoe30gYXMgRmlsZSkgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAgIHByb2dyZXNzPXtmaWxlID09PSB0cnVlID8gMTAwIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17dHJ1ZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8U3BhY2luZyBzaXplPVwic21hbGxcIiAvPlxuICAgICAgICAgICAge2ZpbGUgPT09IHRydWUgJiYgKFxuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImxpbmtcIlxuICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17Yy5vcGVuRmlsZSEuYWN0aW9ufVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2Mub3BlbkZpbGUhLmxhYmVsfVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8U3BhY2luZyBzaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICApO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc3QgQ3VzdG9tUmVhZE9ubHkgPSBleHRlbnNpb25zPy5bdHlwZSBhcyBrZXlvZiB0eXBlb2YgZXh0ZW5zaW9uc11cbiAgICAgICAgICA/LlJlYWRPbmx5IGFzIGFueTtcbiAgICAgICAgY29uc3QgYW5zd2VyID0gdmFsPHR5cGVvZiB0eXBlPigpO1xuICAgICAgICBpZiAoIUN1c3RvbVJlYWRPbmx5ICYmIHR5cGVvZiBhbnN3ZXIgPT09IFwib2JqZWN0XCIpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFRoZXJlIGlzIG5vIGN1c3RvbSByZWFkIG9ubHkgY29tcG9uZW50IGZvciB0aGUgZm9ybSBmaWVsZCB0eXBlIFwiJHt0eXBlfVwiLiBQbGVhc2UgcmV2aWV3IGFuZCBzZXQgaXQgYXQgT25lVUlQcm92aWRlci5gLFxuICAgICAgICAgICk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxPbmVUZXh0IHR5cGU9e3RpdGxlVmFyaWFudH0+e2MudGl0bGV9PC9PbmVUZXh0PlxuICAgICAgICAgICAgPE9uZVRleHQgdHlwZT17bGFiZWxWYXJpYW50fSBkYXRhLXRlc3RpZD17cHJvcHNbXCJkYXRhLXRlc3RpZFwiXX0+XG4gICAgICAgICAgICAgIHtDdXN0b21SZWFkT25seSA/IChcbiAgICAgICAgICAgICAgICA8Q3VzdG9tUmVhZE9ubHlcbiAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uPXtjIGFzIGFueX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZSBhcyBhbnl9XG4gICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17cHJvcHNbXCJkYXRhLXRlc3RpZFwiXX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICgoYW5zd2VyIHx8IFwiLVwiKSBhcyBSZWFjdE5vZGUpXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L09uZVRleHQ+XG4gICAgICAgICAgPC8+XG4gICAgICAgICk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHsgb25BbnN3ZXIsIGVycm9yIH0gPSBwcm9wcztcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBcImFjY2VwdFwiOlxuICAgICAgY29uc3QgY2hlY2tzID0gdmFsPHR5cGVvZiB0eXBlPigpIHx8IFtdO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPE9uZVRleHQgdHlwZT17dGl0bGVWYXJpYW50fT5cbiAgICAgICAgICAgICAgICB7Yy50aXRsZX1cbiAgICAgICAgICAgICAgICB7IWMub3B0aW9uYWwgJiYgKFxuICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgY29sb3I6IFwidmFyKC0td2FybmluZy1yZWQsICNlODRiNGIpXCIgfX0+ICo8L3NwYW4+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9PbmVUZXh0PlxuICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2MuY29udHJhY3QuYWN0aW9ufVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2MuY29udHJhY3QubGFiZWx9XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7ZXJyb3IgJiYgKFxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxPbmVUZXh0IHR5cGU9XCJjYXB0aW9uXCIgY29sb3I9XCJlcnJvclwiPlxuICAgICAgICAgICAgICAgICAge2Vycm9yfVxuICAgICAgICAgICAgICAgIDwvT25lVGV4dD5cbiAgICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAge2MuYWNjZXB0Lm1hcCgoYSwgaSkgPT4gKFxuICAgICAgICAgICAgICAgIDxPbmVUZXh0IHR5cGU9e2xhYmVsVmFyaWFudH0+XG4gICAgICAgICAgICAgICAgICA8Q2hlY2tCb3hcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2EubGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHthLm9wdGlvbmFsID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxPbmVUZXh0IHR5cGU9XCJjYXB0aW9uXCI+e29wdGlvbmFsTGFiZWx9PC9PbmVUZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtjaGVja3NbaV19XG4gICAgICAgICAgICAgICAgICAgIG9uVG9nZ2xlPXsoY2hlY2tlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsb25lID0gWy4uLmNoZWNrc107XG4gICAgICAgICAgICAgICAgICAgICAgY2xvbmVbaV0gPSBjaGVja2VkO1xuICAgICAgICAgICAgICAgICAgICAgIG9uQW5zd2VyKHR5cGUsIGMuaWQsIGFuczx0eXBlb2YgdHlwZT4oY2xvbmUpKTtcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBJZD17Yy5pZH1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2EubGFiZWx9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvT25lVGV4dD5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8U3BhY2luZyBzaXplPVwic21hbGxcIiAvPlxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgY2FzZSBcImZpbGVcIjpcbiAgICAgIGNvbnN0IHVwbG9hZCA9IHZhbDx0eXBlb2YgdHlwZT4oKTtcbiAgICAgIGNvbnN0IFtwcm9ncmVzcywgc2V0UHJvZ3Jlc3NdID0gdXNlU3RhdGU8bnVtYmVyIHwgdW5kZWZpbmVkPigoKSA9PiB7XG4gICAgICAgIGlmICghdXBsb2FkKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBpZiAodXBsb2FkID09PSB0cnVlKSByZXR1cm4gMTAwO1xuICAgICAgICBjb25zdCBzID0gdXBsb2FkLnNuYXBzaG90O1xuICAgICAgICByZXR1cm4gKHMuYnl0ZXNUcmFuc2ZlcnJlZCAqIDEwMCkgLyBzLnRvdGFsQnl0ZXM7XG4gICAgICB9KTtcbiAgICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghdXBsb2FkKSByZXR1cm4gc2V0UHJvZ3Jlc3ModW5kZWZpbmVkKTtcbiAgICAgICAgaWYgKHVwbG9hZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHNldFByb2dyZXNzKDEwMCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRocm90dGxlU2V0UHJvZ3Jlc3MgPSBkZWJvdW5jZShzZXRQcm9ncmVzcywgMjUwKTtcbiAgICAgICAgY29uc3QgdW5zdWJzY3JpYmUgPSB1cGxvYWQub24oXCJzdGF0ZV9jaGFuZ2VkXCIsIChzKSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJvZ3Jlc3MgPSAocy5ieXRlc1RyYW5zZmVycmVkICogMTAwKSAvIHMudG90YWxCeXRlcztcbiAgICAgICAgICB0aHJvdHRsZVNldFByb2dyZXNzKHByb2dyZXNzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICB1bnN1YnNjcmliZSgpO1xuICAgICAgICB9O1xuICAgICAgfSwgW3VwbG9hZF0pO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8RmlsZUlucHV0XG4gICAgICAgICAgICBzdGF0ZXM9e3tcbiAgICAgICAgICAgICAgZmlsZVByb3ZpZGVkOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGMudGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGMuZmlsZVVzYWdlRGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHdhaXRpbmdGaWxlOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGMudGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGMuZmlsZVVzYWdlRGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZm9vdGVyPXtjLmZvb3Rlcn1cbiAgICAgICAgICAgIG9uRmlsZT17KGZpbGUpID0+IHtcbiAgICAgICAgICAgICAgb25BbnN3ZXIodHlwZSwgYy5pZCwgYW5zPHR5cGVvZiB0eXBlPihmaWxlKSk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZmlsZT17dXBsb2FkIGFzIHVua25vd24gYXMgRmlsZX1cbiAgICAgICAgICAgIHByb2dyZXNzPXt1cGxvYWQgPyBwcm9ncmVzcyB8fCAwIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgYWNjZXB0PXtjLmV4dGVuc2lvbnMubWFwKCh4KSA9PiBgLiR7eH1gKS5qb2luKFwiLFwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtlcnJvciA/IChcbiAgICAgICAgICAgIDxPbmVUZXh0IHR5cGU9XCJjYXB0aW9uXCIgY29sb3I9XCJlcnJvclwiPlxuICAgICAgICAgICAgICB7ZXJyb3J9XG4gICAgICAgICAgICA8L09uZVRleHQ+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPFNwYWNpbmcgc2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIGNhc2UgXCJyYWRpb1wiOlxuICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB2YWw8dHlwZW9mIHR5cGU+KCk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxPbmVUZXh0IHR5cGU9e3RpdGxlVmFyaWFudH0+XG4gICAgICAgICAgICB7Yy50aXRsZX1cbiAgICAgICAgICAgIHshYy5vcHRpb25hbCAmJiAoXG4gICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGNvbG9yOiBcInZhcigtLXdhcm5pbmctcmVkLCAjZTg0YjRiKVwiIH19PiAqPC9zcGFuPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L09uZVRleHQ+XG4gICAgICAgICAge2Vycm9yICYmIChcbiAgICAgICAgICAgIDxPbmVUZXh0IHR5cGU9XCJjYXB0aW9uXCIgY29sb3I9XCJlcnJvclwiPlxuICAgICAgICAgICAgICB7ZXJyb3J9XG4gICAgICAgICAgICA8L09uZVRleHQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICB7Yy5vcHRpb25zLm1hcCgoZWwpID0+IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxPbmVUZXh0IHR5cGU9e2xhYmVsVmFyaWFudH0+XG4gICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZCA9PT0gZWwudmFsdWV9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17ZWwubGFiZWx9XG4gICAgICAgICAgICAgICAgICBvblRvZ2dsZT17KCkgPT4gb25BbnN3ZXIodHlwZSwgYy5pZCwgZWwudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgZ3JvdXBJZD17Yy5pZH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtlbC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtwcm9wc1tcImRhdGEtdGVzdGlkXCJdfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvT25lVGV4dD5cbiAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIGNhc2UgXCJjaGVja1wiOlxuICAgICAgY29uc3QgY2hlY2tFcnJvciA9XG4gICAgICAgIHR5cGVvZiBlcnJvciA9PT0gXCJzdHJpbmdcIiA/IGMub3B0aW9ucy5tYXAoKCkgPT4gZXJyb3IpIDogZXJyb3I7XG4gICAgICBjb25zdCBjaGVja21hcmtzID0gdmFsPHR5cGVvZiB0eXBlPigpIHx8IFtdO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8T25lVGV4dCB0eXBlPXt0aXRsZVZhcmlhbnR9PlxuICAgICAgICAgICAge2MudGl0bGV9XG4gICAgICAgICAgICB7IWMub3B0aW9uYWwgJiYgKFxuICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBjb2xvcjogXCJ2YXIoLS13YXJuaW5nLXJlZCwgI2U4NGI0YilcIiB9fT4gKjwvc3Bhbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9PbmVUZXh0PlxuICAgICAgICAgIDxiciAvPlxuICAgICAgICAgIHtjLm9wdGlvbnMubWFwKChlbCwgaSkgPT4gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPE9uZVRleHQgdHlwZT17bGFiZWxWYXJpYW50fT5cbiAgICAgICAgICAgICAgICA8Q2hlY2tCb3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2NoZWNrbWFya3NbaV19XG4gICAgICAgICAgICAgICAgICBsYWJlbD17XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj57ZWwubGFiZWx9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgb25Ub2dnbGU9eyhjaGVja2VkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsb25lID0gWy4uLmNoZWNrbWFya3NdO1xuICAgICAgICAgICAgICAgICAgICBjbG9uZVtpXSA9IGNoZWNrZWQ7XG4gICAgICAgICAgICAgICAgICAgIG9uQW5zd2VyKHR5cGUsIGMuaWQsIGNsb25lKTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBncm91cElkPXtjLmlkfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2VsLnZhbHVlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvT25lVGV4dD5cbiAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApKX1cbiAgICAgICAgICA8QWRhcHRpdmVDb250YWluZXIgZGlyZWN0aW9uPVwidlwiPlxuICAgICAgICAgICAge0FycmF5LmlzQXJyYXkoY2hlY2tFcnJvcikgPyAoXG4gICAgICAgICAgICAgIGNoZWNrRXJyb3Iuc29tZSgoYSkgPT4gISFhKSA/IChcbiAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAga2V5PXtcImVycm9yXCJ9XG4gICAgICAgICAgICAgICAgICB0aXRsZT17dHlwZW9mIGVycm9yID09PSBcInN0cmluZ1wiID8gZXJyb3IgOiBcIlwifVxuICAgICAgICAgICAgICAgICAgdHlwZT17dmFyaWFudHMuZXJyb3IgPz8gXCJlcnJvclwifVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtlcnJvcn1cbiAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50IGtleT17XCJlXCJ9IC8+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkgOiAhIWNoZWNrRXJyb3IgPyAoXG4gICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAga2V5PXtcImVycm9yLXNpbmdsZVwifVxuICAgICAgICAgICAgICAgIHRpdGxlPXt0eXBlb2YgZXJyb3IgPT09IFwic3RyaW5nXCIgPyBlcnJvciA6IFwiXCJ9XG4gICAgICAgICAgICAgICAgdHlwZT17dmFyaWFudHMuZXJyb3IgPz8gXCJlcnJvclwifVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2Vycm9yfVxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8RnJhZ21lbnQga2V5PXtcImVcIn0gLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9BZGFwdGl2ZUNvbnRhaW5lcj5cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIGNhc2UgXCJyYXdjaGVja1wiOlxuICAgICAgY29uc3QgcmF3Q2hlY2ttYXJrcyA9IHZhbDx0eXBlb2YgdHlwZT4oKSB8fCBbXTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge2Vycm9yICYmIChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxPbmVUZXh0IHR5cGU9XCJjYXB0aW9uXCIgY29sb3I9XCJlcnJvclwiPlxuICAgICAgICAgICAgICAgIHtlcnJvcn1cbiAgICAgICAgICAgICAgPC9PbmVUZXh0PlxuICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2Mub3B0aW9ucy5tYXAoKGVsLCBpKSA9PiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8T25lVGV4dCB0eXBlPXtsYWJlbFZhcmlhbnR9PlxuICAgICAgICAgICAgICAgIDxDaGVja0JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17cmF3Q2hlY2ttYXJrc1tpXX1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXtlbC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIG9uVG9nZ2xlPXsoY2hlY2tlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjbG9uZSA9IFsuLi5yYXdDaGVja21hcmtzXTtcbiAgICAgICAgICAgICAgICAgICAgY2xvbmVbaV0gPSBjaGVja2VkO1xuICAgICAgICAgICAgICAgICAgICBvbkFuc3dlcih0eXBlLCBjLmlkLCBjbG9uZSk7XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgZ3JvdXBJZD17Yy5pZH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtlbC52YWx1ZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L09uZVRleHQ+XG4gICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICBjYXNlIFwic2VsZWN0XCI6XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxPbmVUZXh0IHR5cGU9e3RpdGxlVmFyaWFudH0+XG4gICAgICAgICAgICB7Yy50aXRsZX1cbiAgICAgICAgICAgIHshYy5vcHRpb25hbCAmJiAoXG4gICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGNvbG9yOiBcInZhcigtLXdhcm5pbmctcmVkLCAjZTg0YjRiKVwiIH19PiAqPC9zcGFuPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L09uZVRleHQ+XG4gICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e3Byb3BzW1wiZGF0YS10ZXN0aWRcIl19XG4gICAgICAgICAgICBhbGlnblRvPXtBbmNob3JlZFRvb2x0aXBBbGlnbm1lbnQuTEVGVH1cbiAgICAgICAgICAgIGl0ZW1zPXtjLm9wdGlvbnN9XG4gICAgICAgICAgICBzZWxlY3RlZD17dmFsPHR5cGVvZiB0eXBlPigpIX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eyhpKSA9PiB7XG4gICAgICAgICAgICAgIG9uQW5zd2VyKHR5cGUsIGMuaWQsIGkudmFsdWUpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGZpbHRlcj17Yy5maWx0ZXJ9XG4gICAgICAgICAgICBlcnJvcj17ZXJyb3IgYXMgc3RyaW5nfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3Byb3BzLmRpc2FibGVkfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICBjYXNlIFwidGV4dFwiOlxuICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgIGNvbnN0IGZpbHRlciA9XG4gICAgICAgIHR5cGUgPT09IFwibnVtYmVyXCJcbiAgICAgICAgICA/ICh2YWw6IHN0cmluZykgPT4gdmFsLnJlcGxhY2UoL1teMC05XSsvZywgXCJcIilcbiAgICAgICAgICA6ICh2YWw6IHN0cmluZykgPT4gdmFsO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8T25lVGV4dCB0eXBlPXt0aXRsZVZhcmlhbnR9PlxuICAgICAgICAgICAge2MudGl0bGV9XG4gICAgICAgICAgICB7IWMub3B0aW9uYWwgJiYgKFxuICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBjb2xvcjogXCJ2YXIoLS13YXJuaW5nLXJlZCwgI2U4NGI0YilcIiB9fT4gKjwvc3Bhbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9PbmVUZXh0PlxuICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgbXVsdGlsaW5lPXtcIm11bHRpbGluZVwiIGluIGMgPyBjLm11bHRpbGluZSA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtjLnRpdGxlfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbDx0eXBlb2YgdHlwZT4oKX1cbiAgICAgICAgICAgIGVycm9yPXtlcnJvciBhcyBzdHJpbmd9XG4gICAgICAgICAgICBvbkNoYW5nZT17KHsgdGFyZ2V0OiB7IHZhbHVlIH0gfSkgPT4ge1xuICAgICAgICAgICAgICBvbkFuc3dlcih0eXBlLCBjLmlkLCBmaWx0ZXIodmFsdWUpKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD17cHJvcHNbXCJkYXRhLXRlc3RpZFwiXX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtwcm9wcy5kaXNhYmxlZH1cbiAgICAgICAgICAvPlxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNvbnN0IHJlZ2lzdGVyZWRFeHRlbnNpb24gPSBleHRlbnNpb25zPy5bdHlwZV0gYXMgYW55O1xuICAgICAgaWYgKHJlZ2lzdGVyZWRFeHRlbnNpb24pIHtcbiAgICAgICAgY29uc3QgeyBJbnB1dCB9ID0gcmVnaXN0ZXJlZEV4dGVuc2lvbjtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgIG9uQW5zd2VyPXtvbkFuc3dlcn1cbiAgICAgICAgICAgIHF1ZXN0aW9uPXtjIGFzIGFueX1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZSBhcyBhbnl9XG4gICAgICAgICAgICBlcnJvcj17ZXJyb3IgYXMgYW55fVxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e3Byb3BzW1wiZGF0YS10ZXN0aWRcIl19XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRoZSBmb3JtIGZpZWxkIFwiJHt0eXBlfVwiIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQuIFBsZWFzZSBwcm92aWRlIGl0IHVzaW5nIE9uZVVJUHJvdmlkZXIgY29uZmlnIG9wdGlvbnMgZm9yIGZvcm0gZXh0ZW5zaW9uc2AsXG4gICAgICApO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFNBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFVBQUEsR0FBQUgsT0FBQTtBQU9BLElBQUFJLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUgsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFNLEtBQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFPLE9BQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFRLE1BQUEsR0FBQU4sc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFTLGdCQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxVQUFB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
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
3
6
|
exports.FormMode = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=
|
|
7
|
+
let FormMode = exports.FormMode = /*#__PURE__*/function (FormMode) {
|
|
8
|
+
FormMode[FormMode["READ_ONLY"] = 0] = "READ_ONLY";
|
|
9
|
+
FormMode[FormMode["WRITE"] = 1] = "WRITE";
|
|
10
|
+
return FormMode;
|
|
11
|
+
}({});
|
|
12
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGb3JtTW9kZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Gb3JtL0Zvcm1GaWVsZC9Gb3JtRmllbGQudHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVhY3RFbGVtZW50LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFNlbGVjdEl0ZW0gfSBmcm9tIFwiLi4vLi4vU2VsZWN0L1NlbGVjdFwiO1xuaW1wb3J0IHsgVXBsb2FkVGFzayB9IGZyb20gXCJmaXJlYmFzZS9zdG9yYWdlXCI7XG5pbXBvcnQgeyBGcm9tT25lUGVyY2VudFV0aWxpdHksIFVucmVzb2x2YWJsZU9yIH0gZnJvbSBcIi4uLy4uLy4uL3R5cGUtdXRpbHNcIjtcblxuZXhwb3J0IHR5cGUgR2VuZXJpY0Zvcm1GaWVsZFByb3BzPFQgZXh0ZW5kcyBGb3JtRmllbGRbXCJ0eXBlXCJdPiA9IHtcbiAgdmFsdWU6IEFuc3dlckJ5RmllbGQ8eyB0eXBlOiBUIH0+IHwgdW5kZWZpbmVkO1xuICBvbkFuc3dlcjogKEZvcm1GaWVsZFByb3BzPHsgdHlwZTogVCB9PiAmIHtcbiAgICBtb2RlOiBGb3JtTW9kZS5XUklURTtcbiAgfSlbXCJvbkFuc3dlclwiXTtcbiAgcXVlc3Rpb246IEZvcm1GaWVsZFZpZXcgJiB7IHR5cGU6IFQgfTtcbiAgZXJyb3I/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn0gJiBGcm9tT25lUGVyY2VudFV0aWxpdHk8YFVJRWxlbWVudHMuRm9ybUV4dGVuc2lvbi5maWVsZHNgPiAmIHsgdHlwZTogVCB9O1xuXG5leHBvcnQgdHlwZSBGb3JtRmllbGRQcm9wczxRIGV4dGVuZHMgUGljazxGb3JtRmllbGRWaWV3LCBcInR5cGVcIj4+ID0ge1xuICBjb25maWc6IFE7XG4gIHZhbHVlOiBBbnN3ZXJCeUZpZWxkPFE+O1xuICBcImRhdGEtdGVzdGlkXCI/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn0gJiAoXG4gIHwge1xuICAgICAgbW9kZTogRm9ybU1vZGUuUkVBRF9PTkxZO1xuICAgIH1cbiAgfCB7XG4gICAgICBtb2RlPzogRm9ybU1vZGUuV1JJVEU7XG4gICAgICBvbkFuc3dlcjogPFQgZXh0ZW5kcyBRW1widHlwZVwiXT4oXG4gICAgICAgIHF1ZXN0aW9uVHlwZTogVCxcbiAgICAgICAgcXVlc3Rpb25JZDogc3RyaW5nLFxuICAgICAgICBhbnN3ZXI6XG4gICAgICAgICAgfCBBbnN3ZXJBY3Rpb248e1xuICAgICAgICAgICAgICB0eXBlOiBUO1xuICAgICAgICAgICAgfT5cbiAgICAgICAgICB8IHVuZGVmaW5lZCxcbiAgICAgICkgPT4gdm9pZDtcbiAgICAgIGVycm9yPzogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgfVxuKTtcblxuZXhwb3J0IGVudW0gRm9ybU1vZGUge1xuICBSRUFEX09OTFksXG4gIFdSSVRFLFxufVxuZXhwb3J0IHR5cGUgRm9ybUZpZWxkVmlldyA9IEZvcm1GaWVsZCAmIHtcbiAgdGl0bGU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEFuc3dlckFjdGlvbjxGIGV4dGVuZHMgUGljazxGb3JtRmllbGQsIFwidHlwZVwiPj4gPVxuICBGW1widHlwZVwiXSBleHRlbmRzIFwiZmlsZVwiID8gRmlsZSA6IEFuc3dlckJ5RmllbGQ8Rj47XG5cbmV4cG9ydCB0eXBlIEJhc2ljRm9ybUZpZWxkcyA9XG4gIHwge1xuICAgICAgdHlwZTogXCJzZWxlY3RcIjtcbiAgICAgIGZpbHRlcj86IChpdGVtOiBTZWxlY3RJdGVtLCB0ZXJtOiBzdHJpbmcpID0+IGJvb2xlYW47XG4gICAgICBvcHRpb25zOiBTZWxlY3RJdGVtW107XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFwidGV4dFwiO1xuICAgICAgbXVsdGlsaW5lPzogbnVtYmVyO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcIm51bWJlclwiO1xuICAgIH07XG5cbnR5cGUgRGlzdHJpYnV0ZVZhbGlkYXRvck92ZXJVbmlvbjxGb3JtRmllbGRUeXBlcyBleHRlbmRzIHsgdHlwZTogYW55IH0+ID1cbiAgRm9ybUZpZWxkVHlwZXMgZXh0ZW5kcyBhbnlcbiAgICA/IGtleW9mIEZvcm1GaWVsZFR5cGVzIGV4dGVuZHMgXCJ2YWxpZGF0b3JcIlxuICAgICAgPyBGb3JtRmllbGRUeXBlc1xuICAgICAgOiBGb3JtRmllbGRUeXBlcyAmIHtcbiAgICAgICAgICB2YWxpZGF0b3I/OiAoXG4gICAgICAgICAgICB2YWw6IEFuc3dlckFjdGlvbjxGb3JtRmllbGRUeXBlcz4gfCB1bmRlZmluZWQsXG4gICAgICAgICAgKSA9PiBib29sZWFuIHwgc3RyaW5nO1xuICAgICAgICB9XG4gICAgOiBuZXZlcjtcbmV4cG9ydCB0eXBlIEZvcm1GaWVsZCA9IHtcbiAgb3B0aW9uYWw/OiBib29sZWFuO1xuICBpZDogc3RyaW5nO1xuICByZWFkT25seT86IGJvb2xlYW47XG59ICYgRGlzdHJpYnV0ZVZhbGlkYXRvck92ZXJVbmlvbjxcbiAgfCBCYXNpY0Zvcm1GaWVsZHNcbiAgfCB7XG4gICAgICB0eXBlOiBcInJhZGlvXCI7XG4gICAgICBvcHRpb25zOiBTZWxlY3RJdGVtW107XG4gICAgfVxuICB8ICh7XG4gICAgICB0eXBlOiBcImNoZWNrXCIgfCBcInJhd2NoZWNrXCI7XG4gICAgICBvcHRpb25zOiBTZWxlY3RJdGVtW107XG4gICAgfSAmICh7XG4gICAgICB2YWxpZGF0b3I6IChcbiAgICAgICAgdmFsOiBBbnN3ZXJBY3Rpb248eyB0eXBlOiBcImNoZWNrXCIgfT4gfCB1bmRlZmluZWQsXG4gICAgICApID0+IGJvb2xlYW4gfCBzdHJpbmc7XG4gICAgICBvcHRpb25hbDogZmFsc2U7XG4gICAgfSB8IHtcbiAgICAgIG9wdGlvbmFsPzogdHJ1ZVxuICAgIH0pKVxuICB8IHtcbiAgICAgIHR5cGU6IFwiZmlsZVwiO1xuICAgICAgZmlsZVVzYWdlRGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGV4dGVuc2lvbnM6IHN0cmluZ1tdO1xuICAgICAgZm9vdGVyOiBzdHJpbmc7XG4gICAgICBvcGVuRmlsZT86IHtcbiAgICAgICAgYWN0aW9uOiAoKSA9PiB2b2lkO1xuICAgICAgICBsYWJlbDogc3RyaW5nIHwgUmVhY3ROb2RlO1xuICAgICAgfTtcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogXCJhY2NlcHRcIjtcbiAgICAgIGxpbms6IHtcbiAgICAgICAgdHlwZTogXCJmaWxlXCIgfCBcInJvdXRlXCI7XG4gICAgICAgIHRvOiBzdHJpbmc7XG4gICAgICB9O1xuICAgICAgY29udHJhY3Q6IHtcbiAgICAgICAgYWN0aW9uOiAoKSA9PiB2b2lkO1xuICAgICAgICBsYWJlbDogc3RyaW5nIHwgUmVhY3ROb2RlO1xuICAgICAgfTtcbiAgICAgIGFjY2VwdDoge1xuICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICBvcHRpb25hbD86IHRydWU7XG4gICAgICB9W107XG4gICAgfVxuICB8IFVucmVzb2x2YWJsZU9yPFxuICAgICAgRnJvbU9uZVBlcmNlbnRVdGlsaXR5PFwiVUlFbGVtZW50cy5Gb3JtRXh0ZW5zaW9uXCI+W1wiZmllbGRzXCJdLFxuICAgICAgQmFzaWNGb3JtRmllbGRzXG4gICAgPlxuPjtcblxuZXhwb3J0IHR5cGUgRm9ybUZpZWxkVHlwZXMgPSBGb3JtRmllbGRbXCJ0eXBlXCJdIHwgXCJhY2NlcHRcIjtcblxudHlwZSBFeHRlcm5hbFF1ZXN0aW9uRmllbGRzID0gVW5yZXNvbHZhYmxlT3I8XG4gIEZyb21PbmVQZXJjZW50VXRpbGl0eTxcIlVJRWxlbWVudHMuRm9ybUV4dGVuc2lvblwiPltcImZpZWxkQW5zd2VyXCJdLFxuICB7fVxuPjtcblxuZXhwb3J0IHR5cGUgQW5zd2VyQnlGaWVsZDxGIGV4dGVuZHMgUGljazxGb3JtRmllbGQsIFwidHlwZVwiPj4gPVxuICBGW1widHlwZVwiXSBleHRlbmRzIFwiZmlsZVwiXG4gICAgPyBVcGxvYWRUYXNrIHwgdHJ1ZVxuICAgIDogRltcInR5cGVcIl0gZXh0ZW5kcyBcImFjY2VwdFwiIHwgXCJjaGVja1wiIHwgXCJyYXdjaGVja1wiXG4gICAgICA/IGJvb2xlYW5bXVxuICAgICAgOiBGW1widHlwZVwiXSBleHRlbmRzIFwicmFkaW9cIiB8IFwidGV4dFwiIHwgXCJzZWxlY3RcIiB8IFwibnVtYmVyXCJcbiAgICAgICAgPyBzdHJpbmdcbiAgICAgICAgOiBGW1widHlwZVwiXSBleHRlbmRzIGtleW9mIEV4dGVybmFsUXVlc3Rpb25GaWVsZHNcbiAgICAgICAgICA/IEZyb21PbmVQZXJjZW50VXRpbGl0eTxcIlVJRWxlbWVudHMuRm9ybUV4dGVuc2lvblwiPltcImZpZWxkQW5zd2VyXCJdW0ZbXCJ0eXBlXCJdXVxuICAgICAgICAgIDogdW5rbm93bjtcblxudHlwZSBPID0gRm9ybUZpZWxkW1widHlwZVwiXTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0lBdUNZQSxRQUFRLEdBQUFDLE9BQUEsQ0FBQUQsUUFBQSwwQkFBUkEsUUFBUTtFQUFSQSxRQUFRLENBQVJBLFFBQVE7RUFBUkEsUUFBUSxDQUFSQSxRQUFRO0VBQUEsT0FBUkEsUUFBUTtBQUFBIn0=
|