@pie-lib/config-ui 11.30.3-next.2 → 11.30.4-next.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/CHANGELOG.md +7 -78
- package/lib/__tests__/alert-dialog.test.js +262 -0
- package/lib/__tests__/checkbox.test.js +227 -0
- package/lib/__tests__/choice-utils.test.js +14 -0
- package/lib/__tests__/form-section.test.js +252 -0
- package/lib/__tests__/help.test.js +270 -0
- package/lib/__tests__/input.test.js +268 -0
- package/lib/__tests__/langs.test.js +541 -0
- package/lib/__tests__/number-text-field-custom.test.js +362 -0
- package/lib/__tests__/number-text-field.test.js +421 -0
- package/lib/__tests__/radio-with-label.test.js +233 -0
- package/lib/__tests__/settings-panel.test.js +184 -0
- package/lib/__tests__/settings.test.js +653 -0
- package/lib/__tests__/tabs.test.js +211 -0
- package/lib/__tests__/two-choice.test.js +124 -0
- package/lib/__tests__/with-stateful-model.test.js +221 -0
- package/lib/alert-dialog.js +36 -43
- package/lib/alert-dialog.js.map +1 -1
- package/lib/checkbox.js +57 -72
- package/lib/checkbox.js.map +1 -1
- package/lib/choice-configuration/__tests__/feedback-menu.test.js +287 -0
- package/lib/choice-configuration/__tests__/index.test.js +253 -0
- package/lib/choice-configuration/feedback-menu.js +30 -65
- package/lib/choice-configuration/feedback-menu.js.map +1 -1
- package/lib/choice-configuration/index.js +203 -263
- package/lib/choice-configuration/index.js.map +1 -1
- package/lib/choice-utils.js +7 -19
- package/lib/choice-utils.js.map +1 -1
- package/lib/feedback-config/__tests__/feedback-config.test.js +201 -0
- package/lib/feedback-config/__tests__/feedback-selector.test.js +177 -0
- package/lib/feedback-config/feedback-selector.js +80 -116
- package/lib/feedback-config/feedback-selector.js.map +1 -1
- package/lib/feedback-config/group.js +27 -41
- package/lib/feedback-config/group.js.map +1 -1
- package/lib/feedback-config/index.js +48 -91
- package/lib/feedback-config/index.js.map +1 -1
- package/lib/form-section.js +32 -34
- package/lib/form-section.js.map +1 -1
- package/lib/help.js +40 -81
- package/lib/help.js.map +1 -1
- package/lib/index.js +2 -32
- package/lib/index.js.map +1 -1
- package/lib/input.js +22 -55
- package/lib/input.js.map +1 -1
- package/lib/inputs.js +62 -96
- package/lib/inputs.js.map +1 -1
- package/lib/langs.js +59 -102
- package/lib/langs.js.map +1 -1
- package/lib/layout/__tests__/config.layout.test.js +70 -0
- package/lib/layout/__tests__/layout-content.test.js +6 -0
- package/lib/layout/config-layout.js +41 -71
- package/lib/layout/config-layout.js.map +1 -1
- package/lib/layout/index.js +1 -4
- package/lib/layout/index.js.map +1 -1
- package/lib/layout/layout-contents.js +73 -104
- package/lib/layout/layout-contents.js.map +1 -1
- package/lib/layout/settings-box.js +28 -57
- package/lib/layout/settings-box.js.map +1 -1
- package/lib/mui-box/index.js +42 -58
- package/lib/mui-box/index.js.map +1 -1
- package/lib/number-text-field-custom.js +80 -162
- package/lib/number-text-field-custom.js.map +1 -1
- package/lib/number-text-field.js +81 -115
- package/lib/number-text-field.js.map +1 -1
- package/lib/radio-with-label.js +31 -32
- package/lib/radio-with-label.js.map +1 -1
- package/lib/settings/display-size.js +17 -33
- package/lib/settings/display-size.js.map +1 -1
- package/lib/settings/index.js +15 -48
- package/lib/settings/index.js.map +1 -1
- package/lib/settings/panel.js +160 -230
- package/lib/settings/panel.js.map +1 -1
- package/lib/settings/settings-radio-label.js +29 -31
- package/lib/settings/settings-radio-label.js.map +1 -1
- package/lib/settings/toggle.js +36 -47
- package/lib/settings/toggle.js.map +1 -1
- package/lib/tabs/index.js +23 -58
- package/lib/tabs/index.js.map +1 -1
- package/lib/tags-input/__tests__/index.test.js +183 -0
- package/lib/tags-input/index.js +51 -100
- package/lib/tags-input/index.js.map +1 -1
- package/lib/two-choice.js +47 -91
- package/lib/two-choice.js.map +1 -1
- package/lib/with-stateful-model.js +9 -32
- package/lib/with-stateful-model.js.map +1 -1
- package/package.json +12 -20
- package/src/__tests__/alert-dialog.test.jsx +283 -0
- package/src/__tests__/checkbox.test.jsx +249 -0
- package/src/__tests__/form-section.test.jsx +334 -0
- package/src/__tests__/help.test.jsx +184 -0
- package/src/__tests__/input.test.jsx +192 -0
- package/src/__tests__/langs.test.jsx +435 -15
- package/src/__tests__/number-text-field-custom.test.jsx +438 -0
- package/src/__tests__/number-text-field.test.jsx +295 -102
- package/src/__tests__/radio-with-label.test.jsx +259 -0
- package/src/__tests__/settings-panel.test.js +66 -83
- package/src/__tests__/settings.test.jsx +515 -0
- package/src/__tests__/tabs.test.jsx +193 -0
- package/src/__tests__/two-choice.test.js +104 -18
- package/src/__tests__/with-stateful-model.test.jsx +145 -0
- package/src/alert-dialog.jsx +21 -19
- package/src/checkbox.jsx +42 -46
- package/src/choice-configuration/__tests__/feedback-menu.test.jsx +157 -4
- package/src/choice-configuration/__tests__/index.test.jsx +198 -56
- package/src/choice-configuration/feedback-menu.jsx +6 -6
- package/src/choice-configuration/index.jsx +201 -196
- package/src/feedback-config/__tests__/feedback-config.test.jsx +130 -60
- package/src/feedback-config/__tests__/feedback-selector.test.jsx +87 -40
- package/src/feedback-config/feedback-selector.jsx +52 -53
- package/src/feedback-config/group.jsx +21 -22
- package/src/feedback-config/index.jsx +27 -29
- package/src/form-section.jsx +26 -18
- package/src/help.jsx +20 -28
- package/src/input.jsx +1 -1
- package/src/inputs.jsx +34 -50
- package/src/langs.jsx +41 -46
- package/src/layout/__tests__/config.layout.test.jsx +55 -38
- package/src/layout/config-layout.jsx +38 -32
- package/src/layout/layout-contents.jsx +38 -39
- package/src/layout/settings-box.jsx +16 -19
- package/src/mui-box/index.jsx +35 -43
- package/src/number-text-field-custom.jsx +30 -36
- package/src/number-text-field.jsx +45 -29
- package/src/radio-with-label.jsx +25 -13
- package/src/settings/display-size.jsx +12 -11
- package/src/settings/panel.jsx +97 -91
- package/src/settings/settings-radio-label.jsx +25 -13
- package/src/settings/toggle.jsx +30 -29
- package/src/tabs/index.jsx +8 -8
- package/src/tags-input/__tests__/index.test.jsx +88 -37
- package/src/tags-input/index.jsx +35 -38
- package/src/two-choice.jsx +15 -19
- package/esm/index.css +0 -847
- package/esm/index.js +0 -213950
- package/esm/index.js.map +0 -1
- package/esm/package.json +0 -3
- package/src/__tests__/__snapshots__/langs.test.jsx.snap +0 -32
- package/src/__tests__/__snapshots__/settings-panel.test.js.snap +0 -115
- package/src/__tests__/__snapshots__/two-choice.test.js.snap +0 -171
- package/src/choice-configuration/__tests__/__snapshots__/feedback-menu.test.jsx.snap +0 -51
- package/src/choice-configuration/__tests__/__snapshots__/index.test.jsx.snap +0 -519
- package/src/feedback-config/__tests__/__snapshots__/feedback-config.test.jsx.snap +0 -27
- package/src/feedback-config/__tests__/__snapshots__/feedback-selector.test.jsx.snap +0 -38
- package/src/layout/__tests__/__snapshots__/config.layout.test.jsx.snap +0 -59
- package/src/tags-input/__tests__/__snapshots__/index.test.jsx.snap +0 -170
package/lib/mui-box/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_debug","log","debug","StyledMuiBox","styled","_ref","theme","focused","light","palette","mode","bottomLineColor","primary","paddingTop","spacing","paddingBottom","position","left","right","bottom","height","content","transition","pointerEvents","backgroundColor","transform","MuiBox","_ref2","children","createElement","propTypes","PropTypes","oneOfType","arrayOf","node","isRequired","bool","_default","exports"],"sources":["../../src/mui-box/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport debug from 'debug';\n\nconst log = debug('pie-elements:config-ui:mui-box');\n\nconst StyledMuiBox = styled('div')(({ theme, focused }) => {\n const light = theme.palette.mode === 'light';\n const bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n\n log(theme.palette.primary[theme.palette.mode || 'light']);\n\n return {\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n position: 'relative',\n '&:before': {\n left: 0,\n right: 0,\n bottom: 0,\n height: '1px',\n content: '\"\"',\n position: 'absolute',\n transition: 'background-color 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms',\n pointerEvents: 'none',\n backgroundColor: bottomLineColor,\n },\n '&:hover:before': {\n height: '2px',\n },\n '&:after': {\n left: 0,\n right: 0,\n bottom: 0,\n height: '2px',\n content: '\"\"',\n position: 'absolute',\n transform: focused ? 'scaleX(1)' : 'scaleX(0)',\n transition: 'transform 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms',\n pointerEvents: 'none',\n backgroundColor: theme.palette.primary[theme.palette.mode], //'#304ffe'\n },\n };\n});\n\nconst MuiBox = ({ children, focused }) => {\n return <StyledMuiBox focused={focused}>{children}</StyledMuiBox>;\n};\n\nMuiBox.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n focused: PropTypes.bool.isRequired,\n};\n\nexport default MuiBox;\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAEA,IAAMI,GAAG,GAAG,IAAAC,iBAAK,EAAC,gCAAgC,CAAC;AAEnD,IAAMC,YAAY,GAAG,IAAAC,cAAM,EAAC,KAAK,CAAC,CAAC,UAAAC,IAAA,EAAwB;EAAA,IAArBC,KAAK,GAAAD,IAAA,CAALC,KAAK;IAAEC,OAAO,GAAAF,IAAA,CAAPE,OAAO;EAClD,IAAMC,KAAK,GAAGF,KAAK,CAACG,OAAO,CAACC,IAAI,KAAK,OAAO;EAC5C,IAAMC,eAAe,GAAGH,KAAK,GAAG,qBAAqB,GAAG,0BAA0B;EAElFP,GAAG,CAACK,KAAK,CAACG,OAAO,CAACG,OAAO,CAACN,KAAK,CAACG,OAAO,CAACC,IAAI,IAAI,OAAO,CAAC,CAAC;EAEzD,OAAO;IACLG,UAAU,EAAEP,KAAK,CAACQ,OAAO,CAAC,CAAC,CAAC;IAC5BC,aAAa,EAAET,KAAK,CAACQ,OAAO,CAAC,CAAC,CAAC;IAC/BE,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE;MACVC,IAAI,EAAE,CAAC;MACPC,KAAK,EAAE,CAAC;MACRC,MAAM,EAAE,CAAC;MACTC,MAAM,EAAE,KAAK;MACbC,OAAO,EAAE,IAAI;MACbL,QAAQ,EAAE,UAAU;MACpBM,UAAU,EAAE,yDAAyD;MACrEC,aAAa,EAAE,MAAM;MACrBC,eAAe,EAAEb;IACnB,CAAC;IACD,gBAAgB,EAAE;MAChBS,MAAM,EAAE;IACV,CAAC;IACD,SAAS,EAAE;MACTH,IAAI,EAAE,CAAC;MACPC,KAAK,EAAE,CAAC;MACRC,MAAM,EAAE,CAAC;MACTC,MAAM,EAAE,KAAK;MACbC,OAAO,EAAE,IAAI;MACbL,QAAQ,EAAE,UAAU;MACpBS,SAAS,EAAElB,OAAO,GAAG,WAAW,GAAG,WAAW;MAC9Ce,UAAU,EAAE,kDAAkD;MAC9DC,aAAa,EAAE,MAAM;MACrBC,eAAe,EAAElB,KAAK,CAACG,OAAO,CAACG,OAAO,CAACN,KAAK,CAACG,OAAO,CAACC,IAAI,CAAC,CAAE;IAC9D;EACF,CAAC;AACH,CAAC,CAAC;AAEF,IAAMgB,MAAM,GAAG,SAATA,MAAMA,CAAAC,KAAA,EAA8B;EAAA,IAAxBC,QAAQ,GAAAD,KAAA,CAARC,QAAQ;IAAErB,OAAO,GAAAoB,KAAA,CAAPpB,OAAO;EACjC,oBAAOZ,MAAA,YAAAkC,aAAA,CAAC1B,YAAY;IAACI,OAAO,EAAEA;EAAQ,GAAEqB,QAAuB,CAAC;AAClE,CAAC;AAEDF,MAAM,CAACI,SAAS,GAAG;EACjBF,QAAQ,EAAEG,qBAAS,CAACC,SAAS,CAAC,CAACD,qBAAS,CAACE,OAAO,CAACF,qBAAS,CAACG,IAAI,CAAC,EAAEH,qBAAS,CAACG,IAAI,CAAC,CAAC,CAACC,UAAU;EAC7F5B,OAAO,EAAEwB,qBAAS,CAACK,IAAI,CAACD;AAC1B,CAAC;AAAC,IAAAE,QAAA,GAAAC,OAAA,cAEaZ,MAAM","ignoreList":[]}
|
|
@@ -1,114 +1,73 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports["default"] = exports.NumberTextFieldCustom = void 0;
|
|
11
|
-
|
|
12
9
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
-
|
|
14
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
-
|
|
16
11
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
-
|
|
18
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
19
|
-
|
|
20
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
21
|
-
|
|
22
12
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
23
|
-
|
|
24
13
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
|
-
|
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
26
15
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
27
|
-
|
|
28
16
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
29
|
-
|
|
30
17
|
var _react = _interopRequireDefault(require("react"));
|
|
31
|
-
|
|
32
|
-
var
|
|
33
|
-
|
|
34
|
-
var _classnames = _interopRequireDefault(require("classnames"));
|
|
35
|
-
|
|
36
|
-
var _styles = require("@material-ui/core/styles");
|
|
37
|
-
|
|
18
|
+
var _TextField = _interopRequireDefault(require("@mui/material/TextField"));
|
|
19
|
+
var _styles = require("@mui/material/styles");
|
|
38
20
|
var _isFinite = _interopRequireDefault(require("lodash/isFinite"));
|
|
39
|
-
|
|
40
|
-
var
|
|
41
|
-
|
|
42
|
-
var
|
|
43
|
-
|
|
44
|
-
var _Remove = _interopRequireDefault(require("@material-ui/icons/Remove"));
|
|
45
|
-
|
|
46
|
-
var _Add = _interopRequireDefault(require("@material-ui/icons/Add"));
|
|
47
|
-
|
|
21
|
+
var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
|
|
22
|
+
var _InputAdornment = _interopRequireDefault(require("@mui/material/InputAdornment"));
|
|
23
|
+
var _Remove = _interopRequireDefault(require("@mui/icons-material/Remove"));
|
|
24
|
+
var _Add = _interopRequireDefault(require("@mui/icons-material/Add"));
|
|
48
25
|
var math = _interopRequireWildcard(require("mathjs"));
|
|
49
|
-
|
|
50
|
-
function
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
55
|
-
|
|
56
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
57
|
-
|
|
58
|
-
var styles = function styles() {
|
|
26
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
27
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
28
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
29
|
+
var StyledTextField = (0, _styles.styled)(_TextField["default"])(function () {
|
|
59
30
|
return {
|
|
60
|
-
input: {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
margin: 0
|
|
67
|
-
},
|
|
68
|
-
'& input[type=number]::-webkit-inner-spin-button': {
|
|
69
|
-
'-webkit-appearance': 'none',
|
|
70
|
-
margin: 0
|
|
71
|
-
}
|
|
31
|
+
'& input[type=number]': {
|
|
32
|
+
MozAppearance: 'textfield'
|
|
33
|
+
},
|
|
34
|
+
'& input[type=number]::-webkit-outer-spin-button': {
|
|
35
|
+
WebkitAppearance: 'none',
|
|
36
|
+
margin: 0
|
|
72
37
|
},
|
|
73
|
-
|
|
74
|
-
|
|
38
|
+
'& input[type=number]::-webkit-inner-spin-button': {
|
|
39
|
+
WebkitAppearance: 'none',
|
|
40
|
+
margin: 0
|
|
75
41
|
}
|
|
76
42
|
};
|
|
77
|
-
};
|
|
78
|
-
|
|
43
|
+
});
|
|
44
|
+
var StyledIconButton = (0, _styles.styled)(_IconButton["default"])(function () {
|
|
45
|
+
return {
|
|
46
|
+
padding: '2px'
|
|
47
|
+
};
|
|
48
|
+
});
|
|
79
49
|
var fallbackNumber = function fallbackNumber(min, max) {
|
|
80
50
|
if (!(0, _isFinite["default"])(min) && !(0, _isFinite["default"])(max)) {
|
|
81
51
|
return 0;
|
|
82
52
|
}
|
|
83
|
-
|
|
84
53
|
if (!(0, _isFinite["default"])(min) && (0, _isFinite["default"])(max)) {
|
|
85
54
|
return max;
|
|
86
55
|
}
|
|
87
|
-
|
|
88
56
|
if ((0, _isFinite["default"])(min)) {
|
|
89
57
|
return min;
|
|
90
58
|
}
|
|
91
59
|
};
|
|
92
|
-
|
|
93
|
-
var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
|
|
94
|
-
(0, _inherits2["default"])(NumberTextFieldCustom, _React$Component);
|
|
95
|
-
|
|
96
|
-
var _super = _createSuper(NumberTextFieldCustom);
|
|
97
|
-
|
|
60
|
+
var NumberTextFieldCustom = exports.NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
|
|
98
61
|
function NumberTextFieldCustom(props) {
|
|
99
62
|
var _this;
|
|
100
|
-
|
|
101
63
|
(0, _classCallCheck2["default"])(this, NumberTextFieldCustom);
|
|
102
|
-
_this =
|
|
103
|
-
(0, _defineProperty2["default"])(
|
|
64
|
+
_this = _callSuper(this, NumberTextFieldCustom, [props]);
|
|
65
|
+
(0, _defineProperty2["default"])(_this, "normalizeValueAndIndex", function (customValues, number, min, max) {
|
|
104
66
|
var type = _this.props.type;
|
|
105
|
-
|
|
106
67
|
var value = _this.clamp(number, min, max);
|
|
107
|
-
|
|
108
68
|
var currentIndex = (customValues || []).findIndex(function (val) {
|
|
109
69
|
return val === value;
|
|
110
70
|
});
|
|
111
|
-
|
|
112
71
|
if ((customValues || []).length > 0 && currentIndex === -1) {
|
|
113
72
|
var closestValue = type === 'text' ? _this.getClosestFractionValue(customValues, value) : _this.getClosestValue(customValues, value);
|
|
114
73
|
return {
|
|
@@ -116,13 +75,12 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
|
|
|
116
75
|
currentIndex: closestValue.index
|
|
117
76
|
};
|
|
118
77
|
}
|
|
119
|
-
|
|
120
78
|
return {
|
|
121
79
|
value: value,
|
|
122
80
|
currentIndex: currentIndex
|
|
123
81
|
};
|
|
124
82
|
});
|
|
125
|
-
(0, _defineProperty2["default"])(
|
|
83
|
+
(0, _defineProperty2["default"])(_this, "getClosestValue", function (customValues, number) {
|
|
126
84
|
return customValues.reduce(function (closest, value, index) {
|
|
127
85
|
return Math.abs(value - number) < Math.abs(closest.value - number) ? {
|
|
128
86
|
value: value,
|
|
@@ -133,7 +91,7 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
|
|
|
133
91
|
index: 0
|
|
134
92
|
});
|
|
135
93
|
});
|
|
136
|
-
(0, _defineProperty2["default"])(
|
|
94
|
+
(0, _defineProperty2["default"])(_this, "getClosestFractionValue", function (customValues, number) {
|
|
137
95
|
return customValues.reduce(function (closest, value, index) {
|
|
138
96
|
return Math.abs(math.number(math.fraction(value)) - math.number(math.fraction(number))) < Math.abs(math.number(math.fraction(closest.value)) - math.number(math.fraction(number))) ? {
|
|
139
97
|
value: value,
|
|
@@ -144,67 +102,54 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
|
|
|
144
102
|
index: 0
|
|
145
103
|
});
|
|
146
104
|
});
|
|
147
|
-
(0, _defineProperty2["default"])(
|
|
105
|
+
(0, _defineProperty2["default"])(_this, "getValidFraction", function (value) {
|
|
148
106
|
if (_this.isPositiveInteger(value.trim())) {
|
|
149
107
|
return value.trim();
|
|
150
108
|
}
|
|
151
|
-
|
|
152
109
|
if (value.trim() === '' || value.trim().split('/').length !== 2) {
|
|
153
110
|
return false;
|
|
154
111
|
}
|
|
155
|
-
|
|
156
112
|
var _value$trim$split = value.trim().split('/'),
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
113
|
+
_value$trim$split2 = (0, _slicedToArray2["default"])(_value$trim$split, 2),
|
|
114
|
+
numerator = _value$trim$split2[0],
|
|
115
|
+
denominator = _value$trim$split2[1];
|
|
161
116
|
if (isNaN(numerator) || isNaN(denominator)) {
|
|
162
117
|
return false;
|
|
163
118
|
}
|
|
164
|
-
|
|
165
119
|
numerator = parseFloat(numerator);
|
|
166
120
|
denominator = parseFloat(denominator);
|
|
167
|
-
|
|
168
121
|
if (!Number.isInteger(numerator) || !Number.isInteger(denominator)) {
|
|
169
122
|
return false;
|
|
170
123
|
}
|
|
171
|
-
|
|
172
124
|
if (numerator < 0 || denominator < 1) {
|
|
173
125
|
return false;
|
|
174
126
|
}
|
|
175
|
-
|
|
176
127
|
return numerator + '/' + denominator;
|
|
177
128
|
});
|
|
178
|
-
(0, _defineProperty2["default"])(
|
|
129
|
+
(0, _defineProperty2["default"])(_this, "isPositiveInteger", function (n) {
|
|
179
130
|
return n >>> 0 === parseFloat(n);
|
|
180
131
|
});
|
|
181
|
-
(0, _defineProperty2["default"])(
|
|
132
|
+
(0, _defineProperty2["default"])(_this, "onBlur", function (event) {
|
|
182
133
|
var _this$props = _this.props,
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
134
|
+
customValues = _this$props.customValues,
|
|
135
|
+
onlyIntegersAllowed = _this$props.onlyIntegersAllowed,
|
|
136
|
+
type = _this$props.type;
|
|
186
137
|
var value = event.target.value;
|
|
187
|
-
|
|
188
138
|
if (type === 'text') {
|
|
189
139
|
var tempValue = _this.getValidFraction(value);
|
|
190
|
-
|
|
191
140
|
if (tempValue) {
|
|
192
141
|
value = tempValue;
|
|
193
142
|
} else {
|
|
194
143
|
value = _this.props.value;
|
|
195
144
|
}
|
|
196
145
|
}
|
|
197
|
-
|
|
198
146
|
var rawNumber = onlyIntegersAllowed ? Math.round(parseFloat(value)) : parseFloat(value);
|
|
199
|
-
|
|
200
147
|
if (type === 'text') {
|
|
201
148
|
rawNumber = value.trim();
|
|
202
149
|
}
|
|
203
|
-
|
|
204
150
|
var _this$normalizeValueA = _this.normalizeValueAndIndex(customValues, rawNumber),
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
151
|
+
number = _this$normalizeValueA.value,
|
|
152
|
+
currentIndex = _this$normalizeValueA.currentIndex;
|
|
208
153
|
_this.setState({
|
|
209
154
|
value: number.toString(),
|
|
210
155
|
currentIndex: currentIndex
|
|
@@ -212,31 +157,26 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
|
|
|
212
157
|
return _this.props.onChange(event, number);
|
|
213
158
|
});
|
|
214
159
|
});
|
|
215
|
-
|
|
216
160
|
var _this$normalizeValueA2 = _this.normalizeValueAndIndex(props.customValues, props.value),
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
161
|
+
_value = _this$normalizeValueA2.value,
|
|
162
|
+
_currentIndex = _this$normalizeValueA2.currentIndex;
|
|
220
163
|
_this.state = {
|
|
221
164
|
value: _value,
|
|
222
165
|
currentIndex: _currentIndex
|
|
223
166
|
};
|
|
224
|
-
|
|
225
167
|
if (_value !== props.value) {
|
|
226
168
|
_this.props.onChange({}, _value);
|
|
227
169
|
}
|
|
228
|
-
|
|
229
|
-
_this.onChange = _this.onChange.bind((0, _assertThisInitialized2["default"])(_this));
|
|
170
|
+
_this.onChange = _this.onChange.bind(_this);
|
|
230
171
|
return _this;
|
|
231
172
|
}
|
|
232
|
-
|
|
233
|
-
(0, _createClass2["default"])(NumberTextFieldCustom, [{
|
|
173
|
+
(0, _inherits2["default"])(NumberTextFieldCustom, _React$Component);
|
|
174
|
+
return (0, _createClass2["default"])(NumberTextFieldCustom, [{
|
|
234
175
|
key: "UNSAFE_componentWillReceiveProps",
|
|
235
176
|
value: function UNSAFE_componentWillReceiveProps(props) {
|
|
236
177
|
var _this$normalizeValueA3 = this.normalizeValueAndIndex(props.customValues, props.value, props.min, props.max),
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
178
|
+
value = _this$normalizeValueA3.value,
|
|
179
|
+
currentIndex = _this$normalizeValueA3.currentIndex;
|
|
240
180
|
this.setState({
|
|
241
181
|
value: value,
|
|
242
182
|
currentIndex: currentIndex
|
|
@@ -248,23 +188,18 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
|
|
|
248
188
|
var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.props.min;
|
|
249
189
|
var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.props.max;
|
|
250
190
|
var customValues = this.props.customValues;
|
|
251
|
-
|
|
252
191
|
if ((customValues || []).length > 0) {
|
|
253
192
|
return value;
|
|
254
193
|
}
|
|
255
|
-
|
|
256
194
|
if (!(0, _isFinite["default"])(value)) {
|
|
257
195
|
return fallbackNumber(min, max);
|
|
258
196
|
}
|
|
259
|
-
|
|
260
197
|
if ((0, _isFinite["default"])(max)) {
|
|
261
198
|
value = Math.min(value, max);
|
|
262
199
|
}
|
|
263
|
-
|
|
264
200
|
if ((0, _isFinite["default"])(min)) {
|
|
265
201
|
value = Math.max(value, min);
|
|
266
202
|
}
|
|
267
|
-
|
|
268
203
|
return value;
|
|
269
204
|
}
|
|
270
205
|
}, {
|
|
@@ -272,11 +207,9 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
|
|
|
272
207
|
value: function onChange(event) {
|
|
273
208
|
var type = this.props.type;
|
|
274
209
|
var value = event.target.value;
|
|
275
|
-
|
|
276
210
|
if (type !== 'text' && typeof value === 'string' && value.trim() === '') {
|
|
277
211
|
return;
|
|
278
212
|
}
|
|
279
|
-
|
|
280
213
|
this.setState({
|
|
281
214
|
value: value
|
|
282
215
|
});
|
|
@@ -288,28 +221,25 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
|
|
|
288
221
|
var shouldUpdate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
289
222
|
event.preventDefault();
|
|
290
223
|
var _this$props2 = this.props,
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
224
|
+
customValues = _this$props2.customValues,
|
|
225
|
+
step = _this$props2.step,
|
|
226
|
+
onlyIntegersAllowed = _this$props2.onlyIntegersAllowed,
|
|
227
|
+
onChange = _this$props2.onChange;
|
|
295
228
|
var _this$state = this.state,
|
|
296
|
-
|
|
297
|
-
|
|
229
|
+
currentIndex = _this$state.currentIndex,
|
|
230
|
+
value = _this$state.value;
|
|
298
231
|
var updatedIndex = currentIndex + sign * 1;
|
|
299
232
|
var number;
|
|
300
|
-
|
|
301
233
|
if (customValues.length > 0) {
|
|
302
234
|
if (updatedIndex < 0 || updatedIndex >= customValues.length) {
|
|
303
235
|
return;
|
|
304
236
|
}
|
|
305
|
-
|
|
306
237
|
number = customValues[updatedIndex];
|
|
307
238
|
} else {
|
|
308
239
|
var rawNumber = onlyIntegersAllowed ? parseInt(value) : parseFloat(value);
|
|
309
240
|
var updatedValue = (rawNumber * 10000 + step * sign * 10000) / 10000;
|
|
310
241
|
number = this.clamp(updatedValue);
|
|
311
242
|
}
|
|
312
|
-
|
|
313
243
|
this.setState({
|
|
314
244
|
value: number.toString(),
|
|
315
245
|
currentIndex: updatedIndex
|
|
@@ -323,29 +253,26 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
|
|
|
323
253
|
key: "render",
|
|
324
254
|
value: function render() {
|
|
325
255
|
var _this2 = this;
|
|
326
|
-
|
|
327
256
|
var _this$props3 = this.props,
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
type = _this$props3$type === void 0 ? 'number' : _this$props3$type;
|
|
257
|
+
className = _this$props3.className,
|
|
258
|
+
label = _this$props3.label,
|
|
259
|
+
disabled = _this$props3.disabled,
|
|
260
|
+
error = _this$props3.error,
|
|
261
|
+
min = _this$props3.min,
|
|
262
|
+
max = _this$props3.max,
|
|
263
|
+
customValues = _this$props3.customValues,
|
|
264
|
+
inputClassName = _this$props3.inputClassName,
|
|
265
|
+
disableUnderline = _this$props3.disableUnderline,
|
|
266
|
+
helperText = _this$props3.helperText,
|
|
267
|
+
variant = _this$props3.variant,
|
|
268
|
+
textAlign = _this$props3.textAlign,
|
|
269
|
+
_this$props3$type = _this$props3.type,
|
|
270
|
+
type = _this$props3$type === void 0 ? 'number' : _this$props3$type;
|
|
343
271
|
var value = this.state.value;
|
|
344
|
-
var names =
|
|
345
|
-
|
|
272
|
+
var names = className;
|
|
273
|
+
//Logic to disable the increment and decrement buttons
|
|
346
274
|
var disabledStart = false;
|
|
347
275
|
var disabledEnd = false;
|
|
348
|
-
|
|
349
276
|
if (customValues.length > 0) {
|
|
350
277
|
disabledStart = value === customValues[0];
|
|
351
278
|
disabledEnd = value === customValues[customValues.length - 1];
|
|
@@ -353,8 +280,7 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
|
|
|
353
280
|
disabledStart = value === min;
|
|
354
281
|
disabledEnd = value === max;
|
|
355
282
|
}
|
|
356
|
-
|
|
357
|
-
return /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
|
|
283
|
+
return /*#__PURE__*/_react["default"].createElement(StyledTextField, {
|
|
358
284
|
variant: variant,
|
|
359
285
|
inputRef: function inputRef(ref) {
|
|
360
286
|
return _this2.inputRef = ref;
|
|
@@ -376,7 +302,6 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
|
|
|
376
302
|
if (e.key === 'ArrowUp') {
|
|
377
303
|
_this2.changeValue(e);
|
|
378
304
|
}
|
|
379
|
-
|
|
380
305
|
if (e.key === 'ArrowDown') {
|
|
381
306
|
_this2.changeValue(e, -1);
|
|
382
307
|
}
|
|
@@ -389,23 +314,23 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
|
|
|
389
314
|
disableUnderline: disableUnderline,
|
|
390
315
|
startAdornment: /*#__PURE__*/_react["default"].createElement(_InputAdornment["default"], {
|
|
391
316
|
position: "start"
|
|
392
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
393
|
-
className: classes.iconButton,
|
|
317
|
+
}, /*#__PURE__*/_react["default"].createElement(StyledIconButton, {
|
|
394
318
|
disabled: disabled ? disabled : disabledStart,
|
|
395
319
|
onClick: function onClick(e) {
|
|
396
320
|
return _this2.changeValue(e, -1, true);
|
|
397
|
-
}
|
|
321
|
+
},
|
|
322
|
+
size: "large"
|
|
398
323
|
}, /*#__PURE__*/_react["default"].createElement(_Remove["default"], {
|
|
399
324
|
fontSize: "small"
|
|
400
325
|
}))),
|
|
401
326
|
endAdornment: /*#__PURE__*/_react["default"].createElement(_InputAdornment["default"], {
|
|
402
327
|
position: "end"
|
|
403
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
404
|
-
className: classes.iconButton,
|
|
328
|
+
}, /*#__PURE__*/_react["default"].createElement(StyledIconButton, {
|
|
405
329
|
disabled: disabled ? disabled : disabledEnd,
|
|
406
330
|
onClick: function onClick(e) {
|
|
407
331
|
return _this2.changeValue(e, 1, true);
|
|
408
|
-
}
|
|
332
|
+
},
|
|
333
|
+
size: "large"
|
|
409
334
|
}, /*#__PURE__*/_react["default"].createElement(_Add["default"], {
|
|
410
335
|
fontSize: "small"
|
|
411
336
|
})))
|
|
@@ -420,12 +345,8 @@ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
|
|
|
420
345
|
});
|
|
421
346
|
}
|
|
422
347
|
}]);
|
|
423
|
-
return NumberTextFieldCustom;
|
|
424
348
|
}(_react["default"].Component);
|
|
425
|
-
|
|
426
|
-
exports.NumberTextFieldCustom = NumberTextFieldCustom;
|
|
427
349
|
(0, _defineProperty2["default"])(NumberTextFieldCustom, "propTypes", {
|
|
428
|
-
classes: _propTypes["default"].object.isRequired,
|
|
429
350
|
className: _propTypes["default"].string,
|
|
430
351
|
customValues: _propTypes["default"].array,
|
|
431
352
|
disabled: _propTypes["default"].bool,
|
|
@@ -451,8 +372,5 @@ exports.NumberTextFieldCustom = NumberTextFieldCustom;
|
|
|
451
372
|
variant: 'standard',
|
|
452
373
|
onlyIntegersAllowed: false
|
|
453
374
|
});
|
|
454
|
-
|
|
455
|
-
var _default = (0, _styles.withStyles)(styles)(NumberTextFieldCustom);
|
|
456
|
-
|
|
457
|
-
exports["default"] = _default;
|
|
458
|
-
//# sourceMappingURL=number-text-field-custom.js.map
|
|
375
|
+
var _default = exports["default"] = NumberTextFieldCustom;
|
|
376
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcmVhY3QiLCJfVGV4dEZpZWxkIiwiX3N0eWxlcyIsIl9pc0Zpbml0ZSIsIl9JY29uQnV0dG9uIiwiX0lucHV0QWRvcm5tZW50IiwiX1JlbW92ZSIsIl9BZGQiLCJtYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsImFwcGx5IiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJTdHlsZWRUZXh0RmllbGQiLCJzdHlsZWQiLCJUZXh0RmllbGQiLCJNb3pBcHBlYXJhbmNlIiwiV2Via2l0QXBwZWFyYW5jZSIsIm1hcmdpbiIsIlN0eWxlZEljb25CdXR0b24iLCJJY29uQnV0dG9uIiwicGFkZGluZyIsImZhbGxiYWNrTnVtYmVyIiwibWluIiwibWF4IiwiaXNGaW5pdGUiLCJOdW1iZXJUZXh0RmllbGRDdXN0b20iLCJleHBvcnRzIiwiX1JlYWN0JENvbXBvbmVudCIsInByb3BzIiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2RlZmluZVByb3BlcnR5MiIsImN1c3RvbVZhbHVlcyIsIm51bWJlciIsInR5cGUiLCJ2YWx1ZSIsImNsYW1wIiwiY3VycmVudEluZGV4IiwiZmluZEluZGV4IiwidmFsIiwibGVuZ3RoIiwiY2xvc2VzdFZhbHVlIiwiZ2V0Q2xvc2VzdEZyYWN0aW9uVmFsdWUiLCJnZXRDbG9zZXN0VmFsdWUiLCJpbmRleCIsInJlZHVjZSIsImNsb3Nlc3QiLCJNYXRoIiwiYWJzIiwiZnJhY3Rpb24iLCJpc1Bvc2l0aXZlSW50ZWdlciIsInRyaW0iLCJzcGxpdCIsIl92YWx1ZSR0cmltJHNwbGl0IiwiX3ZhbHVlJHRyaW0kc3BsaXQyIiwiX3NsaWNlZFRvQXJyYXkyIiwibnVtZXJhdG9yIiwiZGVub21pbmF0b3IiLCJpc05hTiIsInBhcnNlRmxvYXQiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJldmVudCIsIl90aGlzJHByb3BzIiwib25seUludGVnZXJzQWxsb3dlZCIsInRhcmdldCIsInRlbXBWYWx1ZSIsImdldFZhbGlkRnJhY3Rpb24iLCJyYXdOdW1iZXIiLCJyb3VuZCIsIl90aGlzJG5vcm1hbGl6ZVZhbHVlQSIsIm5vcm1hbGl6ZVZhbHVlQW5kSW5kZXgiLCJzZXRTdGF0ZSIsInRvU3RyaW5nIiwib25DaGFuZ2UiLCJfdGhpcyRub3JtYWxpemVWYWx1ZUEyIiwic3RhdGUiLCJiaW5kIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsIl90aGlzJG5vcm1hbGl6ZVZhbHVlQTMiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJjaGFuZ2VWYWx1ZSIsInNpZ24iLCJzaG91bGRVcGRhdGUiLCJwcmV2ZW50RGVmYXVsdCIsIl90aGlzJHByb3BzMiIsInN0ZXAiLCJfdGhpcyRzdGF0ZSIsInVwZGF0ZWRJbmRleCIsInBhcnNlSW50IiwidXBkYXRlZFZhbHVlIiwicmVuZGVyIiwiX3RoaXMyIiwiX3RoaXMkcHJvcHMzIiwiY2xhc3NOYW1lIiwibGFiZWwiLCJkaXNhYmxlZCIsImVycm9yIiwiaW5wdXRDbGFzc05hbWUiLCJkaXNhYmxlVW5kZXJsaW5lIiwiaGVscGVyVGV4dCIsInZhcmlhbnQiLCJ0ZXh0QWxpZ24iLCJfdGhpcyRwcm9wczMkdHlwZSIsIm5hbWVzIiwiZGlzYWJsZWRTdGFydCIsImRpc2FibGVkRW5kIiwiY3JlYXRlRWxlbWVudCIsImlucHV0UmVmIiwicmVmIiwib25CbHVyIiwib25LZXlQcmVzcyIsImJsdXIiLCJvbktleURvd24iLCJ0aXRsZSIsIklucHV0UHJvcHMiLCJzdGFydEFkb3JubWVudCIsInBvc2l0aW9uIiwib25DbGljayIsInNpemUiLCJmb250U2l6ZSIsImVuZEFkb3JubWVudCIsImlucHV0UHJvcHMiLCJzdHlsZSIsIlJlYWN0IiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwic3RyaW5nIiwiYXJyYXkiLCJib29sIiwiZnVuYyIsImlzUmVxdWlyZWQiLCJhbnkiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9udW1iZXItdGV4dC1maWVsZC1jdXN0b20uanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFRleHRGaWVsZCBmcm9tICdAbXVpL21hdGVyaWFsL1RleHRGaWVsZCc7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tICdAbXVpL21hdGVyaWFsL3N0eWxlcyc7XG5pbXBvcnQgaXNGaW5pdGUgZnJvbSAnbG9kYXNoL2lzRmluaXRlJztcbmltcG9ydCBJY29uQnV0dG9uIGZyb20gJ0BtdWkvbWF0ZXJpYWwvSWNvbkJ1dHRvbic7XG5pbXBvcnQgSW5wdXRBZG9ybm1lbnQgZnJvbSAnQG11aS9tYXRlcmlhbC9JbnB1dEFkb3JubWVudCc7XG5pbXBvcnQgUmVtb3ZlIGZyb20gJ0BtdWkvaWNvbnMtbWF0ZXJpYWwvUmVtb3ZlJztcbmltcG9ydCBBZGQgZnJvbSAnQG11aS9pY29ucy1tYXRlcmlhbC9BZGQnO1xuaW1wb3J0ICogYXMgbWF0aCBmcm9tICdtYXRoanMnO1xuXG5jb25zdCBTdHlsZWRUZXh0RmllbGQgPSBzdHlsZWQoVGV4dEZpZWxkKSgoKSA9PiAoe1xuICAnJiBpbnB1dFt0eXBlPW51bWJlcl0nOiB7XG4gICAgTW96QXBwZWFyYW5jZTogJ3RleHRmaWVsZCcsXG4gIH0sXG4gICcmIGlucHV0W3R5cGU9bnVtYmVyXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbic6IHtcbiAgICBXZWJraXRBcHBlYXJhbmNlOiAnbm9uZScsXG4gICAgbWFyZ2luOiAwLFxuICB9LFxuICAnJiBpbnB1dFt0eXBlPW51bWJlcl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24nOiB7XG4gICAgV2Via2l0QXBwZWFyYW5jZTogJ25vbmUnLFxuICAgIG1hcmdpbjogMCxcbiAgfSxcbn0pKTtcblxuY29uc3QgU3R5bGVkSWNvbkJ1dHRvbiA9IHN0eWxlZChJY29uQnV0dG9uKSgoKSA9PiAoe1xuICBwYWRkaW5nOiAnMnB4Jyxcbn0pKTtcblxuY29uc3QgZmFsbGJhY2tOdW1iZXIgPSAobWluLCBtYXgpID0+IHtcbiAgaWYgKCFpc0Zpbml0ZShtaW4pICYmICFpc0Zpbml0ZShtYXgpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBpZiAoIWlzRmluaXRlKG1pbikgJiYgaXNGaW5pdGUobWF4KSkge1xuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICBpZiAoaXNGaW5pdGUobWluKSkge1xuICAgIHJldHVybiBtaW47XG4gIH1cbn07XG5cbmV4cG9ydCBjbGFzcyBOdW1iZXJUZXh0RmllbGRDdXN0b20gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjdXN0b21WYWx1ZXM6IFByb3BUeXBlcy5hcnJheSxcbiAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICAgIGlucHV0Q2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgb25seUludGVnZXJzQWxsb3dlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgdmFsdWU6IFByb3BUeXBlcy5hbnksXG4gICAgbWluOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG1heDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGVwOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2FibGVVbmRlcmxpbmU6IFByb3BUeXBlcy5ib29sLFxuICAgIHRleHRBbGlnbjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB2YXJpYW50OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHR5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBzdGVwOiAxLFxuICAgIGN1c3RvbVZhbHVlczogW10sXG4gICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICB2YXJpYW50OiAnc3RhbmRhcmQnLFxuICAgIG9ubHlJbnRlZ2Vyc0FsbG93ZWQ6IGZhbHNlLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgY29uc3QgeyB2YWx1ZSwgY3VycmVudEluZGV4IH0gPSB0aGlzLm5vcm1hbGl6ZVZhbHVlQW5kSW5kZXgocHJvcHMuY3VzdG9tVmFsdWVzLCBwcm9wcy52YWx1ZSk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgdmFsdWUsXG4gICAgICBjdXJyZW50SW5kZXgsXG4gICAgfTtcblxuICAgIGlmICh2YWx1ZSAhPT0gcHJvcHMudmFsdWUpIHtcbiAgICAgIHRoaXMucHJvcHMub25DaGFuZ2Uoe30sIHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMocHJvcHMpIHtcbiAgICBjb25zdCB7IHZhbHVlLCBjdXJyZW50SW5kZXggfSA9IHRoaXMubm9ybWFsaXplVmFsdWVBbmRJbmRleChwcm9wcy5jdXN0b21WYWx1ZXMsIHByb3BzLnZhbHVlLCBwcm9wcy5taW4sIHByb3BzLm1heCk7XG5cbiAgICB0aGlzLnNldFN0YXRlKHsgdmFsdWUsIGN1cnJlbnRJbmRleCB9KTtcbiAgfVxuXG4gIGNsYW1wKHZhbHVlLCBtaW4gPSB0aGlzLnByb3BzLm1pbiwgbWF4ID0gdGhpcy5wcm9wcy5tYXgpIHtcbiAgICBjb25zdCB7IGN1c3RvbVZhbHVlcyB9ID0gdGhpcy5wcm9wcztcblxuICAgIGlmICgoY3VzdG9tVmFsdWVzIHx8IFtdKS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKCFpc0Zpbml0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxsYmFja051bWJlcihtaW4sIG1heCk7XG4gICAgfVxuXG4gICAgaWYgKGlzRmluaXRlKG1heCkpIHtcbiAgICAgIHZhbHVlID0gTWF0aC5taW4odmFsdWUsIG1heCk7XG4gICAgfVxuXG4gICAgaWYgKGlzRmluaXRlKG1pbikpIHtcbiAgICAgIHZhbHVlID0gTWF0aC5tYXgodmFsdWUsIG1pbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgbm9ybWFsaXplVmFsdWVBbmRJbmRleCA9IChjdXN0b21WYWx1ZXMsIG51bWJlciwgbWluLCBtYXgpID0+IHtcbiAgICBjb25zdCB7IHR5cGUgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmNsYW1wKG51bWJlciwgbWluLCBtYXgpO1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IChjdXN0b21WYWx1ZXMgfHwgW10pLmZpbmRJbmRleCgodmFsKSA9PiB2YWwgPT09IHZhbHVlKTtcblxuICAgIGlmICgoY3VzdG9tVmFsdWVzIHx8IFtdKS5sZW5ndGggPiAwICYmIGN1cnJlbnRJbmRleCA9PT0gLTEpIHtcbiAgICAgIGNvbnN0IGNsb3Nlc3RWYWx1ZSA9XG4gICAgICAgIHR5cGUgPT09ICd0ZXh0JyA/IHRoaXMuZ2V0Q2xvc2VzdEZyYWN0aW9uVmFsdWUoY3VzdG9tVmFsdWVzLCB2YWx1ZSkgOiB0aGlzLmdldENsb3Nlc3RWYWx1ZShjdXN0b21WYWx1ZXMsIHZhbHVlKTtcblxuICAgICAgcmV0dXJuIHsgdmFsdWU6IGNsb3Nlc3RWYWx1ZS52YWx1ZSwgY3VycmVudEluZGV4OiBjbG9zZXN0VmFsdWUuaW5kZXggfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyB2YWx1ZSwgY3VycmVudEluZGV4IH07XG4gIH07XG5cbiAgZ2V0Q2xvc2VzdFZhbHVlID0gKGN1c3RvbVZhbHVlcywgbnVtYmVyKSA9PlxuICAgIGN1c3RvbVZhbHVlcy5yZWR1Y2UoXG4gICAgICAoY2xvc2VzdCwgdmFsdWUsIGluZGV4KSA9PlxuICAgICAgICBNYXRoLmFicyh2YWx1ZSAtIG51bWJlcikgPCBNYXRoLmFicyhjbG9zZXN0LnZhbHVlIC0gbnVtYmVyKSA/IHsgdmFsdWUsIGluZGV4IH0gOiBjbG9zZXN0LFxuICAgICAgeyB2YWx1ZTogY3VzdG9tVmFsdWVzWzBdLCBpbmRleDogMCB9LFxuICAgICk7XG5cbiAgZ2V0Q2xvc2VzdEZyYWN0aW9uVmFsdWUgPSAoY3VzdG9tVmFsdWVzLCBudW1iZXIpID0+XG4gICAgY3VzdG9tVmFsdWVzLnJlZHVjZShcbiAgICAgIChjbG9zZXN0LCB2YWx1ZSwgaW5kZXgpID0+XG4gICAgICAgIE1hdGguYWJzKG1hdGgubnVtYmVyKG1hdGguZnJhY3Rpb24odmFsdWUpKSAtIG1hdGgubnVtYmVyKG1hdGguZnJhY3Rpb24obnVtYmVyKSkpIDxcbiAgICAgICAgTWF0aC5hYnMobWF0aC5udW1iZXIobWF0aC5mcmFjdGlvbihjbG9zZXN0LnZhbHVlKSkgLSBtYXRoLm51bWJlcihtYXRoLmZyYWN0aW9uKG51bWJlcikpKVxuICAgICAgICAgID8geyB2YWx1ZSwgaW5kZXggfVxuICAgICAgICAgIDogY2xvc2VzdCxcbiAgICAgIHsgdmFsdWU6IGN1c3RvbVZhbHVlc1swXSwgaW5kZXg6IDAgfSxcbiAgICApO1xuXG4gIGdldFZhbGlkRnJhY3Rpb24gPSAodmFsdWUpID0+IHtcbiAgICBpZiAodGhpcy5pc1Bvc2l0aXZlSW50ZWdlcih2YWx1ZS50cmltKCkpKSB7XG4gICAgICByZXR1cm4gdmFsdWUudHJpbSgpO1xuICAgIH1cbiAgICBpZiAodmFsdWUudHJpbSgpID09PSAnJyB8fCB2YWx1ZS50cmltKCkuc3BsaXQoJy8nKS5sZW5ndGggIT09IDIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbGV0IFtudW1lcmF0b3IsIGRlbm9taW5hdG9yXSA9IHZhbHVlLnRyaW0oKS5zcGxpdCgnLycpO1xuICAgIGlmIChpc05hTihudW1lcmF0b3IpIHx8IGlzTmFOKGRlbm9taW5hdG9yKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBudW1lcmF0b3IgPSBwYXJzZUZsb2F0KG51bWVyYXRvcik7XG4gICAgZGVub21pbmF0b3IgPSBwYXJzZUZsb2F0KGRlbm9taW5hdG9yKTtcbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIobnVtZXJhdG9yKSB8fCAhTnVtYmVyLmlzSW50ZWdlcihkZW5vbWluYXRvcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKG51bWVyYXRvciA8IDAgfHwgZGVub21pbmF0b3IgPCAxKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBudW1lcmF0b3IgKyAnLycgKyBkZW5vbWluYXRvcjtcbiAgfTtcblxuICBpc1Bvc2l0aXZlSW50ZWdlciA9IChuKSA9PiB7XG4gICAgcmV0dXJuIG4gPj4+IDAgPT09IHBhcnNlRmxvYXQobik7XG4gIH07XG5cbiAgb25CbHVyID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyBjdXN0b21WYWx1ZXMsIG9ubHlJbnRlZ2Vyc0FsbG93ZWQsIHR5cGUgfSA9IHRoaXMucHJvcHM7XG4gICAgbGV0IHsgdmFsdWUgfSA9IGV2ZW50LnRhcmdldDtcbiAgICBpZiAodHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICBsZXQgdGVtcFZhbHVlID0gdGhpcy5nZXRWYWxpZEZyYWN0aW9uKHZhbHVlKTtcbiAgICAgIGlmICh0ZW1wVmFsdWUpIHtcbiAgICAgICAgdmFsdWUgPSB0ZW1wVmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IHRoaXMucHJvcHMudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCByYXdOdW1iZXIgPSBvbmx5SW50ZWdlcnNBbGxvd2VkID8gTWF0aC5yb3VuZChwYXJzZUZsb2F0KHZhbHVlKSkgOiBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICBpZiAodHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICByYXdOdW1iZXIgPSB2YWx1ZS50cmltKCk7XG4gICAgfVxuICAgIGNvbnN0IHsgdmFsdWU6IG51bWJlciwgY3VycmVudEluZGV4IH0gPSB0aGlzLm5vcm1hbGl6ZVZhbHVlQW5kSW5kZXgoY3VzdG9tVmFsdWVzLCByYXdOdW1iZXIpO1xuICAgIHRoaXMuc2V0U3RhdGUoXG4gICAgICB7XG4gICAgICAgIHZhbHVlOiBudW1iZXIudG9TdHJpbmcoKSxcbiAgICAgICAgY3VycmVudEluZGV4LFxuICAgICAgfSxcbiAgICAgICgpID0+IHRoaXMucHJvcHMub25DaGFuZ2UoZXZlbnQsIG51bWJlciksXG4gICAgKTtcbiAgfTtcblxuICBvbkNoYW5nZShldmVudCkge1xuICAgIGNvbnN0IHsgdHlwZSB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7IHZhbHVlIH0gPSBldmVudC50YXJnZXQ7XG4gICAgaWYgKHR5cGUgIT09ICd0ZXh0JyAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlIH0pO1xuICB9XG5cbiAgY2hhbmdlVmFsdWUoZXZlbnQsIHNpZ24gPSAxLCBzaG91bGRVcGRhdGUgPSBmYWxzZSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgeyBjdXN0b21WYWx1ZXMsIHN0ZXAsIG9ubHlJbnRlZ2Vyc0FsbG93ZWQsIG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHsgY3VycmVudEluZGV4LCB2YWx1ZSB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCB1cGRhdGVkSW5kZXggPSBjdXJyZW50SW5kZXggKyBzaWduICogMTtcbiAgICBsZXQgbnVtYmVyO1xuICAgIGlmIChjdXN0b21WYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHVwZGF0ZWRJbmRleCA8IDAgfHwgdXBkYXRlZEluZGV4ID49IGN1c3RvbVZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbnVtYmVyID0gY3VzdG9tVmFsdWVzW3VwZGF0ZWRJbmRleF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJhd051bWJlciA9IG9ubHlJbnRlZ2Vyc0FsbG93ZWQgPyBwYXJzZUludCh2YWx1ZSkgOiBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRWYWx1ZSA9IChyYXdOdW1iZXIgKiAxMDAwMCArIHN0ZXAgKiBzaWduICogMTAwMDApIC8gMTAwMDA7XG4gICAgICBudW1iZXIgPSB0aGlzLmNsYW1wKHVwZGF0ZWRWYWx1ZSk7XG4gICAgfVxuICAgIHRoaXMuc2V0U3RhdGUoXG4gICAgICB7XG4gICAgICAgIHZhbHVlOiBudW1iZXIudG9TdHJpbmcoKSxcbiAgICAgICAgY3VycmVudEluZGV4OiB1cGRhdGVkSW5kZXgsXG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAoc2hvdWxkVXBkYXRlKSB7XG4gICAgICAgICAgb25DaGFuZ2UoZXZlbnQsIG51bWJlcik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBjbGFzc05hbWUsXG4gICAgICBsYWJlbCxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgZXJyb3IsXG4gICAgICBtaW4sXG4gICAgICBtYXgsXG4gICAgICBjdXN0b21WYWx1ZXMsXG4gICAgICBpbnB1dENsYXNzTmFtZSxcbiAgICAgIGRpc2FibGVVbmRlcmxpbmUsXG4gICAgICBoZWxwZXJUZXh0LFxuICAgICAgdmFyaWFudCxcbiAgICAgIHRleHRBbGlnbixcbiAgICAgIHR5cGUgPSAnbnVtYmVyJyxcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7IHZhbHVlIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IG5hbWVzID0gY2xhc3NOYW1lO1xuICAgIC8vTG9naWMgdG8gZGlzYWJsZSB0aGUgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnV0dG9uc1xuICAgIGxldCBkaXNhYmxlZFN0YXJ0ID0gZmFsc2U7XG4gICAgbGV0IGRpc2FibGVkRW5kID0gZmFsc2U7XG4gICAgaWYgKGN1c3RvbVZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgICBkaXNhYmxlZFN0YXJ0ID0gdmFsdWUgPT09IGN1c3RvbVZhbHVlc1swXTtcbiAgICAgIGRpc2FibGVkRW5kID0gdmFsdWUgPT09IGN1c3RvbVZhbHVlc1tjdXN0b21WYWx1ZXMubGVuZ3RoIC0gMV07XG4gICAgfSBlbHNlIGlmIChpc0Zpbml0ZShtaW4pICYmIGlzRmluaXRlKG1heCkpIHtcbiAgICAgIGRpc2FibGVkU3RhcnQgPSB2YWx1ZSA9PT0gbWluO1xuICAgICAgZGlzYWJsZWRFbmQgPSB2YWx1ZSA9PT0gbWF4O1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkVGV4dEZpZWxkXG4gICAgICAgIHZhcmlhbnQ9e3ZhcmlhbnR9XG4gICAgICAgIGlucHV0UmVmPXsocmVmKSA9PiAodGhpcy5pbnB1dFJlZiA9IHJlZil9XG4gICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgbGFiZWw9e2xhYmVsfVxuICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgICAgaGVscGVyVGV4dD17aGVscGVyVGV4dH1cbiAgICAgICAgb25DaGFuZ2U9e3RoaXMub25DaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17dGhpcy5vbkJsdXJ9XG4gICAgICAgIG9uS2V5UHJlc3M9eyhlKSA9PiB7XG4gICAgICAgICAgLy8gb25jZSB0aGUgRW50ZXIga2V5IGlzIHByZXNzZWQsIHdlIGZvcmNlIGlucHV0IGJsdXJcbiAgICAgICAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicgJiYgdGhpcy5pbnB1dFJlZikge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5ibHVyKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICBvbktleURvd249eyhlKSA9PiB7XG4gICAgICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlVmFsdWUoZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VWYWx1ZShlLCAtMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICB0aXRsZT17Jyd9XG4gICAgICAgIHR5cGU9e3R5cGV9XG4gICAgICAgIGNsYXNzTmFtZT17bmFtZXN9XG4gICAgICAgIElucHV0UHJvcHM9e3tcbiAgICAgICAgICBjbGFzc05hbWU6IGlucHV0Q2xhc3NOYW1lLFxuICAgICAgICAgIGRpc2FibGVVbmRlcmxpbmU6IGRpc2FibGVVbmRlcmxpbmUsXG4gICAgICAgICAgc3RhcnRBZG9ybm1lbnQ6IChcbiAgICAgICAgICAgIDxJbnB1dEFkb3JubWVudCBwb3NpdGlvbj1cInN0YXJ0XCI+XG4gICAgICAgICAgICAgIDxTdHlsZWRJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkID8gZGlzYWJsZWQgOiBkaXNhYmxlZFN0YXJ0fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB0aGlzLmNoYW5nZVZhbHVlKGUsIC0xLCB0cnVlKX1cbiAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIj5cbiAgICAgICAgICAgICAgICA8UmVtb3ZlIGZvbnRTaXplPVwic21hbGxcIiAvPlxuICAgICAgICAgICAgICA8L1N0eWxlZEljb25CdXR0b24+XG4gICAgICAgICAgICA8L0lucHV0QWRvcm5tZW50PlxuICAgICAgICAgICksXG4gICAgICAgICAgZW5kQWRvcm5tZW50OiAoXG4gICAgICAgICAgICA8SW5wdXRBZG9ybm1lbnQgcG9zaXRpb249XCJlbmRcIj5cbiAgICAgICAgICAgICAgPFN0eWxlZEljb25CdXR0b25cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWQgPyBkaXNhYmxlZCA6IGRpc2FibGVkRW5kfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB0aGlzLmNoYW5nZVZhbHVlKGUsIDEsIHRydWUpfVxuICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgIDxBZGQgZm9udFNpemU9XCJzbWFsbFwiIC8+XG4gICAgICAgICAgICAgIDwvU3R5bGVkSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgIDwvSW5wdXRBZG9ybm1lbnQ+XG4gICAgICAgICAgKSxcbiAgICAgICAgfX1cbiAgICAgICAgaW5wdXRQcm9wcz17e1xuICAgICAgICAgIHN0eWxlOiB7IHRleHRBbGlnbiB9LFxuICAgICAgICAgIG1pbixcbiAgICAgICAgICBtYXgsXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTnVtYmVyVGV4dEZpZWxkQ3VzdG9tO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxVQUFBLEdBQUFDLHNCQUFBLENBQUFD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
|