@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.
Files changed (229) hide show
  1. package/WebpackConfigs/email-templates.js +99 -0
  2. package/dist/components/AdaptiveButton/AdaptiveButton.js +26 -24
  3. package/dist/components/AdaptiveButton/index.js +25 -22
  4. package/dist/components/AdaptiveContainer/AdaptiveContainer.js +140 -139
  5. package/dist/components/AdaptiveContainer/index.js +25 -22
  6. package/dist/components/AdaptiveDialog/AdaptiveDialog.js +76 -42
  7. package/dist/components/AdaptiveDialog/AdaptiveDialog.module.scss +17 -3
  8. package/dist/components/AdaptiveDialog/index.js +25 -22
  9. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.js +70 -54
  10. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.sample.js +10 -9
  11. package/dist/components/AdaptiveSidebar/index.js +25 -22
  12. package/dist/components/AnchoredTooltip/AnchoredTooltip.js +155 -154
  13. package/dist/components/AnchoredTooltip/AnchoredTooltip.module.scss +13 -10
  14. package/dist/components/AnchoredTooltip/index.js +25 -22
  15. package/dist/components/AnimatedEntrance/AnimatedEntrance.js +154 -121
  16. package/dist/components/AnimatedEntrance/index.js +25 -22
  17. package/dist/components/AsyncTriggerContainer/AsyncTriggerContainer.js +80 -40
  18. package/dist/components/AsyncTriggerContainer/index.js +25 -22
  19. package/dist/components/AsyncWrapper/AsyncWrapper.js +34 -16
  20. package/dist/components/AsyncWrapper/index.js +25 -22
  21. package/dist/components/Avatar/Avatar.js +33 -18
  22. package/dist/components/Avatar/index.js +25 -22
  23. package/dist/components/BucketFill/BucketFill.js +49 -36
  24. package/dist/components/BucketFill/index.js +25 -22
  25. package/dist/components/Button/Button.js +30 -22
  26. package/dist/components/Button/index.js +25 -22
  27. package/dist/components/Card/Card.js +17 -10
  28. package/dist/components/Card/index.js +25 -22
  29. package/dist/components/Chart/Chart.js +25 -22
  30. package/dist/components/Chart/Chart.logic.js +10 -9
  31. package/dist/components/Chart/Chart.types.js +5 -2
  32. package/dist/components/Chart/Chart.view.js +174 -98
  33. package/dist/components/Chart/index.js +25 -22
  34. package/dist/components/CheckBox/CheckBox.js +48 -30
  35. package/dist/components/CheckBox/CheckBox.module.scss +5 -0
  36. package/dist/components/CheckBox/index.js +25 -22
  37. package/dist/components/CodeInput/CodeInput.js +75 -93
  38. package/dist/components/CodeInput/index.js +25 -22
  39. package/dist/components/Collapsable/Collapsable.js +164 -134
  40. package/dist/components/Collapsable/index.js +25 -22
  41. package/dist/components/Countdown/Countdown.js +69 -86
  42. package/dist/components/Countdown/index.js +25 -22
  43. package/dist/components/CurrencyInput/CurrencyInput.hook.js +25 -25
  44. package/dist/components/CurrencyInput/CurrencyInput.js +48 -29
  45. package/dist/components/CurrencyInput/index.js +25 -22
  46. package/dist/components/Divider/Divider.js +16 -10
  47. package/dist/components/Divider/index.js +25 -22
  48. package/dist/components/EmailInput/EmailInput.js +37 -23
  49. package/dist/components/EmailInput/index.js +25 -22
  50. package/dist/components/FadeIn/FadeIn.js +57 -51
  51. package/dist/components/FadeIn/index.js +25 -22
  52. package/dist/components/FileInput/FileInput.js +45 -38
  53. package/dist/components/FileInput/View/BigFactory/BigFactory.js +48 -16
  54. package/dist/components/FileInput/View/BigFactory/index.js +25 -22
  55. package/dist/components/FileInput/View/Compact/Compact.js +114 -46
  56. package/dist/components/FileInput/View/Compact/index.js +25 -22
  57. package/dist/components/FileInput/View/View.types.js +5 -2
  58. package/dist/components/FileInput/index.js +25 -22
  59. package/dist/components/FlowController/FlowController.js +56 -25
  60. package/dist/components/FlowController/index.js +25 -22
  61. package/dist/components/Form/Form.hook.js +217 -202
  62. package/dist/components/Form/Form.js +103 -65
  63. package/dist/components/Form/Form.types.js +39 -53
  64. package/dist/components/Form/FormField/Extensions/DateField/DateField.js +68 -53
  65. package/dist/components/Form/FormField/Extensions/DateField/index.js +25 -22
  66. package/dist/components/Form/FormField/Extensions/PhoneField/PhoneField.js +81 -78
  67. package/dist/components/Form/FormField/Extensions/PhoneField/index.js +25 -22
  68. package/dist/components/Form/FormField/FormField.js +307 -148
  69. package/dist/components/Form/FormField/FormField.types.js +10 -7
  70. package/dist/components/Form/FormField/index.js +25 -22
  71. package/dist/components/Form/index.js +25 -22
  72. package/dist/components/Freeze/Freeze.js +13 -9
  73. package/dist/components/Freeze/index.js +25 -22
  74. package/dist/components/HSForms/HSForms.js +48 -69
  75. package/dist/components/HSForms/index.js +25 -22
  76. package/dist/components/HeaderCloseBtn/HeaderCloseBtn.js +19 -10
  77. package/dist/components/HeaderCloseBtn/index.js +25 -22
  78. package/dist/components/InfinityScroll/InfinityScroll.js +114 -94
  79. package/dist/components/InfinityScroll/index.js +25 -22
  80. package/dist/components/Input/Input.js +99 -57
  81. package/dist/components/Input/index.js +25 -22
  82. package/dist/components/InstantCounter/InstantCounter.js +49 -31
  83. package/dist/components/InstantCounter/index.js +25 -22
  84. package/dist/components/LavaLamp/LavaLamp.data.js +83 -86
  85. package/dist/components/LavaLamp/LavaLamp.js +119 -32
  86. package/dist/components/LavaLamp/index.js +25 -22
  87. package/dist/components/LavaLamp/v2/LavaLamp.js +149 -156
  88. package/dist/components/LinkToId/LinkToId.js +39 -27
  89. package/dist/components/LinkToId/index.js +25 -22
  90. package/dist/components/Loader/Loader.js +21 -22
  91. package/dist/components/Loader/index.js +25 -22
  92. package/dist/components/LoaderDotsIndicator/LoaderDotsIndicator.js +27 -15
  93. package/dist/components/LoaderDotsIndicator/index.js +25 -22
  94. package/dist/components/LoopableVideo/LoopableVideo.js +33 -25
  95. package/dist/components/LoopableVideo/index.js +25 -22
  96. package/dist/components/MainGrid/MainGrid.js +46 -23
  97. package/dist/components/MainGrid/index.js +25 -22
  98. package/dist/components/MutableHamburgerButton/MutableHamburgerButton.js +27 -23
  99. package/dist/components/MutableHamburgerButton/index.js +25 -22
  100. package/dist/components/Notification/Notification.js +18 -11
  101. package/dist/components/Notification/index.js +25 -22
  102. package/dist/components/NumberInput/NumberInput.js +43 -42
  103. package/dist/components/NumberInput/index.js +25 -22
  104. package/dist/components/OrderableList/OrderableList.js +416 -404
  105. package/dist/components/OrderableList/index.js +25 -22
  106. package/dist/components/PaginationIndicator/PaginationIndicator.js +243 -198
  107. package/dist/components/PaginationIndicator/index.js +25 -22
  108. package/dist/components/Parallax/Parallax.js +156 -130
  109. package/dist/components/Parallax/index.js +25 -22
  110. package/dist/components/Parallax/math/helpers.js +120 -216
  111. package/dist/components/PasswordInput/PasswordInput.js +88 -71
  112. package/dist/components/PasswordInput/index.js +25 -22
  113. package/dist/components/PingPongText/PingPongText.js +63 -67
  114. package/dist/components/PingPongText/index.js +25 -22
  115. package/dist/components/PixelatedScan/PixelatedScan.js +126 -74
  116. package/dist/components/PixelatedScan/index.js +25 -22
  117. package/dist/components/Portal/Portal.js +46 -43
  118. package/dist/components/Portal/index.js +25 -22
  119. package/dist/components/ProgressBar/ProgressBar.js +105 -47
  120. package/dist/components/ProgressBar/index.js +25 -22
  121. package/dist/components/ProgressTexts/ProgressTexts.js +43 -29
  122. package/dist/components/ProgressTexts/index.js +25 -22
  123. package/dist/components/Radio/Radio.js +51 -28
  124. package/dist/components/Radio/index.js +25 -22
  125. package/dist/components/Radio/variants/Checkmark/Checkmark.js +18 -12
  126. package/dist/components/Radio/variants/Checkmark/index.js +25 -22
  127. package/dist/components/Radio/variants/Generic/Generic.js +20 -12
  128. package/dist/components/Radio/variants/Generic/index.js +25 -22
  129. package/dist/components/ScrollendIndicator/ScrollendIndicator.js +118 -0
  130. package/dist/components/ScrollendIndicator/ScrollendIndicator.module.scss +76 -0
  131. package/dist/components/SectionContainer/SectionContainer.js +38 -16
  132. package/dist/components/SectionContainer/index.js +25 -22
  133. package/dist/components/Select/Select.js +128 -95
  134. package/dist/components/Select/index.js +25 -22
  135. package/dist/components/Skeleton/Skeleton.js +22 -14
  136. package/dist/components/Skeleton/index.js +25 -22
  137. package/dist/components/Slider/Slider.js +63 -59
  138. package/dist/components/Slider/index.js +25 -22
  139. package/dist/components/Spacing/Spacing.js +25 -17
  140. package/dist/components/Spacing/index.js +25 -22
  141. package/dist/components/StaticScroller/StaticScroller.js +65 -61
  142. package/dist/components/StaticScroller/index.js +25 -22
  143. package/dist/components/Switch/Switch.js +40 -26
  144. package/dist/components/Switch/index.js +25 -22
  145. package/dist/components/Table/Table.js +107 -56
  146. package/dist/components/Table/index.js +25 -22
  147. package/dist/components/Tabs/Tabs.js +59 -54
  148. package/dist/components/Tabs/index.js +25 -22
  149. package/dist/components/Text/Text.js +35 -30
  150. package/dist/components/Text/index.js +25 -22
  151. package/dist/components/Transition/MasksFactory/DiagonalReveal.js +46 -12
  152. package/dist/components/Transition/MasksFactory/DiagonalSquareToBalls.js +71 -49
  153. package/dist/components/Transition/MasksFactory/PhysicsSquares.js +89 -79
  154. package/dist/components/Transition/MasksFactory/SquareToBalls.js +60 -41
  155. package/dist/components/Transition/MasksFactory/utils.js +25 -27
  156. package/dist/components/Transition/Transition.js +298 -319
  157. package/dist/components/Transition/index.js +25 -22
  158. package/dist/components/UncontrolledTransition/UncontrolledTransition.js +101 -93
  159. package/dist/components/UncontrolledTransition/UncontrolledTransition.sample.js +27 -19
  160. package/dist/components/UncontrolledTransition/index.js +25 -22
  161. package/dist/components/WalletConnectionWrapper/WalletConnectionWrapper.js +101 -94
  162. package/dist/components/WalletConnectionWrapper/index.js +25 -22
  163. package/dist/components/utilitary/ScrollAndFocusLock/ScrollAndFocusLock.js +53 -43
  164. package/dist/components/utilitary/ScrollAndFocusLock/index.js +25 -22
  165. package/dist/context/AsyncProcess.js +68 -41
  166. package/dist/context/ContextAsyncControl.js +72 -51
  167. package/dist/context/CustomBrowserRouter.js +44 -30
  168. package/dist/context/OneUIProvider.js +102 -108
  169. package/dist/hooks/logs/useDependencyChangeDetection.js +17 -16
  170. package/dist/hooks/logs/useIsMounting.js +10 -7
  171. package/dist/hooks/persistence/useLocalStorage.js +41 -40
  172. package/dist/hooks/shims/ObjectWatchShim.js +47 -46
  173. package/dist/hooks/ui/useAdaptiveImage.js +29 -34
  174. package/dist/hooks/ui/useAlternating.js +18 -18
  175. package/dist/hooks/ui/useBreakpoint.js +19 -18
  176. package/dist/hooks/ui/useCustomScrollbar.js +26 -21
  177. package/dist/hooks/ui/useEffectIf.js +11 -9
  178. package/dist/hooks/ui/useMouseHover.js +22 -19
  179. package/dist/hooks/ui/usePaginationControls.js +129 -136
  180. package/dist/hooks/ui/useSnapToViewport.js +20 -19
  181. package/dist/hooks/ui/useTilt.js +145 -129
  182. package/dist/hooks/ui/useZoomable.js +123 -116
  183. package/dist/hooks/useAsyncControl.js +67 -52
  184. package/dist/hooks/useContainedRepositioning.js +75 -71
  185. package/dist/hooks/useCustomHistory.js +21 -12
  186. package/dist/hooks/useElementFit.js +43 -48
  187. package/dist/hooks/useFirestoreWatch.js +41 -41
  188. package/dist/hooks/useFreeze.js +10 -8
  189. package/dist/hooks/useHero.js +249 -271
  190. package/dist/hooks/useIntersection.js +32 -27
  191. package/dist/hooks/useMergeRefs.js +27 -24
  192. package/dist/hooks/useObserve.js +17 -14
  193. package/dist/hooks/usePagination.js +147 -164
  194. package/dist/hooks/usePooledOperation.js +41 -57
  195. package/dist/hooks/usePooling.js +46 -49
  196. package/dist/hooks/useRebound.js +23 -19
  197. package/dist/hooks/useShortIntl.js +72 -50
  198. package/dist/hooks/utility/useAsyncMemo.js +36 -42
  199. package/dist/hooks/utility/useDepChange.js +14 -12
  200. package/dist/hooks/utility/useEvents.js +26 -21
  201. package/dist/hooks/utility/useImmediate.js +8 -5
  202. package/dist/hooks/utility/useManualInit.js +19 -17
  203. package/dist/hooks/utility/useModule.js +12 -9
  204. package/dist/hooks/utility/useQuery.js +13 -7
  205. package/dist/hooks/utility/useUniqueEffect.js +17 -17
  206. package/dist/index.js +2159 -349
  207. package/dist/index.preprocess.js +35 -72
  208. package/dist/models/DebugLogger.js +8 -5
  209. package/dist/models/GenericContract.js +42 -13
  210. package/dist/models/ImageScales.js +13 -10
  211. package/dist/models/Orbs.js +53 -47
  212. package/dist/storybookUtils/index.js +40 -39
  213. package/dist/type-utils.js +5 -2
  214. package/dist/types.js +5 -2
  215. package/dist/utils/blockchain.js +35 -54
  216. package/dist/utils/e2e.js +21 -11
  217. package/dist/utils/flatten.js +15 -12
  218. package/dist/utils/formatters.js +48 -43
  219. package/dist/utils/html.utils.js +12 -6
  220. package/dist/utils/ownEvent.js +9 -7
  221. package/dist/utils/test.js +13 -11
  222. package/dist-ts/components/ScrollendIndicator/ScrollendIndicator.d.ts +10 -0
  223. package/dist-ts/components/ScrollendIndicator/ScrollendIndicator.js +68 -0
  224. package/dist-ts/components/ScrollendIndicator/ScrollendIndicator.js.map +1 -0
  225. package/dist-ts/components/ScrollendIndicator/ScrollendIndicator.module.scss +76 -0
  226. package/dist-ts/index.d.ts +1 -0
  227. package/dist-ts/index.js +1 -0
  228. package/dist-ts/index.js.map +1 -1
  229. package/package.json +1 -1
@@ -1,157 +1,316 @@
1
1
  "use strict";
2
- var __rest = (this && this.__rest) || function (s, e) {
3
- var t = {};
4
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
- t[p] = s[p];
6
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
- t[p[i]] = s[p[i]];
10
- }
11
- return t;
12
- };
13
- var __importDefault = (this && this.__importDefault) || function (mod) {
14
- return (mod && mod.__esModule) ? mod : { "default": mod };
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- const jsx_runtime_1 = require("react/jsx-runtime");
18
- const react_1 = require("react");
19
- const debounce_1 = __importDefault(require("lodash/debounce"));
20
- const FormField_types_1 = require("./FormField.types");
21
- const Select_1 = __importDefault(require("../../Select/Select"));
22
- const Input_1 = __importDefault(require("../../Input"));
23
- const Text_1 = __importDefault(require("../../Text"));
24
- const Button_1 = __importDefault(require("../../Button"));
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(_a) {
38
- var _b, _c, _d;
39
- var { config: c, value } = _a, props = __rest(_a, ["config", "value"]);
40
- const variants = (0, OneUIProvider_1.useOneUIConfig)("component.input.labelVariants", {});
41
- const val = () => value;
42
- const ans = (answer) => answer;
43
- const type = c.type;
44
- const { titleVariant, labelVariant, optionalLabel, extensions } = (0, OneUIProvider_1.useOneUIConfig)("component.form");
45
- if (props.mode === FormField_types_1.FormMode.READ_ONLY) {
46
- switch (type) {
47
- case "check":
48
- const checks = val() || [];
49
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Text_1.default, { type: titleVariant, children: c.title }), checks.includes(true) ? (checks.map((checked, i) => checked ? ((0, jsx_runtime_1.jsx)(Text_1.default, { type: labelVariant, children: c.options[i].value })) : null)) : ((0, jsx_runtime_1.jsx)(Text_1.default, { type: labelVariant, children: "-" })), (0, jsx_runtime_1.jsx)(Spacing_1.default, { size: "small" })] }));
50
- case "file":
51
- const file = val();
52
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(FileInput_1.default, { states: {
53
- fileProvided: {
54
- title: c.title,
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
- case "accept":
73
- const checks = val() || [];
74
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { 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", {}), (0, jsx_runtime_1.jsx)(Button_1.default, { variant: "link", color: "primary", onClick: c.contract.action, children: c.contract.label })] }), error && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(Text_1.default, { type: "caption", color: "error", children: error }), (0, jsx_runtime_1.jsx)("br", {})] })), (0, jsx_runtime_1.jsx)("div", { children: c.accept.map((a, i) => ((0, jsx_runtime_1.jsx)(Text_1.default, { type: labelVariant, children: (0, jsx_runtime_1.jsx)(CheckBox_1.default, { label: (0, jsx_runtime_1.jsx)("span", { children: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [a.label, a.optional ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)(Text_1.default, { type: "caption", children: optionalLabel })] })) : ("")] }) }), checked: checks[i], onToggle: (checked) => {
75
- const clone = [...checks];
76
- clone[i] = checked;
77
- onAnswer(type, c.id, ans(clone));
78
- }, groupId: c.id, value: a.label }) }))) })] }), (0, jsx_runtime_1.jsx)(Spacing_1.default, { size: "small" })] }));
79
- case "file":
80
- const upload = val();
81
- const [progress, setProgress] = (0, react_1.useState)(() => {
82
- if (!upload)
83
- return undefined;
84
- if (upload === true)
85
- return 100;
86
- const s = upload.snapshot;
87
- return (s.bytesTransferred * 100) / s.totalBytes;
88
- });
89
- (0, react_1.useEffect)(() => {
90
- if (!upload)
91
- return setProgress(undefined);
92
- if (upload === true) {
93
- setProgress(100);
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
- throw new Error(`The form field "${type}" is not implemented yet. Please provide it using OneUIProvider config options for form extensions`);
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
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.FormMode = void 0;
4
- var FormMode;
5
- (function (FormMode) {
6
- FormMode[FormMode["READ_ONLY"] = 0] = "READ_ONLY";
7
- FormMode[FormMode["WRITE"] = 1] = "WRITE";
8
- })(FormMode || (exports.FormMode = FormMode = {}));
9
- //# sourceMappingURL=FormField.types.js.map
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=