adui
Version:
<div> <img src="https://wxa.wxs.qq.com/mpweb/delivery/legacy/wxadtouch/upload/t1/od834zef_52939fc6.png" style="margin:40px 0 0 -8px; background-color: #fcfcfc; box-shadow: none;" /> </div>
161 lines (160 loc) • 34.6 kB
JavaScript
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var _Context = require("./Context");
var _Group = _interopRequireDefault(require("./Group"));
var _icon = _interopRequireDefault(require("../icon"));
var _popover = _interopRequireDefault(require("../popover"));
var _configProvider = require("../config-provider");
var _useActive2 = require("../_util/hooks/use-active");
require("./style");
var _excluded = ["checked", "children", "className", "disabled", "helper", "helperIcon", "helperProps", "indeterminate", "onChange", "onClick", "onMouseDown", "size", "value"];
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
var prefix = "adui-checkbox";
var Checkbox = (0, _react.forwardRef)(function (_ref, refProp) {
var checkedProp = _ref.checked,
children = _ref.children,
className = _ref.className,
disabled = _ref.disabled,
helper = _ref.helper,
helperIcon = _ref.helperIcon,
helperProps = _ref.helperProps,
indeterminate = _ref.indeterminate,
onChange = _ref.onChange,
onClick = _ref.onClick,
onMouseDown = _ref.onMouseDown,
sizeProp = _ref.size,
value = _ref.value,
otherProps = _objectWithoutProperties(_ref, _excluded);
var _useState = (0, _react.useState)(!!checkedProp),
_useState2 = _slicedToArray(_useState, 2),
checked = _useState2[0],
setChecked = _useState2[1];
var _useContext = (0, _react.useContext)(_Context.GroupContext),
disabledContext = _useContext.disabled,
handleGroupValueChange = _useContext.handleGroupValueChange,
sizeContext = _useContext.size,
valueContext = _useContext.value;
var _useContext2 = (0, _react.useContext)(_configProvider.ConfigContext),
sizeConfig = _useContext2.size;
var labelRef = (0, _react.useRef)(null);
var ref = refProp || labelRef;
var _useActive = (0, _useActive2.useActive)({
ref: ref
}),
handleMouseDown = _useActive.handleMouseDown;
if (checkedProp !== null && checked !== !!checkedProp) {
setChecked(!!checkedProp);
}
var size = (0, _configProvider.getComputedSize)(sizeProp, sizeContext, sizeConfig);
var valueComputed = value !== null ? value : children === null || children === void 0 ? void 0 : children.toString();
var classSet = (0, _classnames["default"])(className, "".concat(prefix, "-base"), "".concat(prefix, "-").concat(size), _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(prefix, "-checked"), indeterminate || (valueContext ? valueComputed !== null && valueComputed !== undefined && valueContext.includes(valueComputed) : checked)), "".concat(prefix, "-noChildren"), !children), "".concat(prefix, "-disabled"), disabledContext || disabled), "".concat(prefix, "-indeterminate"), indeterminate));
var popover = helper ? _react["default"].createElement("span", {
role: "none",
onClick: function onClick(e) {
e.stopPropagation();
}
}, _react["default"].createElement(_popover["default"], _extends({
alignEdge: false,
popup: helper
}, helperProps), _react["default"].createElement(_icon["default"], {
icon: helperIcon || "help-circle",
color: "var(--gray-600)",
interactive: true,
className: "".concat(prefix, "-helper")
}))) : null;
var handleClick = function handleClick(e) {
if (onClick) {
onClick(e);
}
if (disabled || disabledContext) {
return;
}
if (handleGroupValueChange && valueComputed !== null && valueComputed !== undefined) {
handleGroupValueChange(valueComputed);
} else {
if (checkedProp === null) {
setChecked(!checked);
}
if (onChange) {
onChange(!checked);
}
}
};
var handleKeyDown = function handleKeyDown(e) {
if (e.key === "Enter") {
handleClick(e);
}
};
var handleLabelMouseDown = function handleLabelMouseDown(e) {
if (onMouseDown) {
onMouseDown(e);
}
handleMouseDown();
};
return _react["default"].createElement("label", _extends({
"aria-checked": checked,
className: classSet,
onClick: handleClick,
onKeyDown: handleKeyDown,
ref: ref,
role: "checkbox",
onMouseDown: handleLabelMouseDown
}, otherProps), _react["default"].createElement("span", {
className: "".concat(prefix, "-indicator")
}, _react["default"].createElement("i", {
className: "".concat(prefix, "-indicator-inner")
})), !!children && _react["default"].createElement("span", null, children), popover);
});
Checkbox.Group = _Group["default"];
Checkbox.displayName = "Checkbox";
Checkbox.propTypes = {
checked: _propTypes["default"].oneOf([null, true, false]),
children: _propTypes["default"].node,
className: _propTypes["default"].string,
disabled: _propTypes["default"].bool,
helper: _propTypes["default"].node,
helperIcon: _propTypes["default"].any,
helperProps: _propTypes["default"].object,
indeterminate: _propTypes["default"].bool,
onChange: _propTypes["default"].func,
onClick: _propTypes["default"].func,
size: _propTypes["default"].oneOf(["mini", "small", "medium", "large"]),
value: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number])
};
Checkbox.defaultProps = {
checked: null,
children: "",
className: undefined,
disabled: false,
helper: null,
helperIcon: "help-circle",
helperProps: {},
indeterminate: false,
onChange: null,
onClick: null,
size: "small",
value: null
};
var _default = exports["default"] = Checkbox;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jbGFzc25hbWVzIiwiX0NvbnRleHQiLCJfR3JvdXAiLCJfaWNvbiIsIl9wb3BvdmVyIiwiX2NvbmZpZ1Byb3ZpZGVyIiwiX3VzZUFjdGl2ZTIiLCJfZXhjbHVkZWQiLCJlIiwiX19lc01vZHVsZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIldlYWtNYXAiLCJyIiwidCIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImJpbmQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcHBseSIsIl9kZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5IiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIl9zbGljZWRUb0FycmF5IiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJsIiwiaXRlcmF0b3IiLCJmIiwibyIsIm5leHQiLCJkb25lIiwicHVzaCIsImlzQXJyYXkiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInMiLCJpbmNsdWRlcyIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwicHJlZml4IiwiQ2hlY2tib3giLCJmb3J3YXJkUmVmIiwiX3JlZiIsInJlZlByb3AiLCJjaGVja2VkUHJvcCIsImNoZWNrZWQiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsImRpc2FibGVkIiwiaGVscGVyIiwiaGVscGVySWNvbiIsImhlbHBlclByb3BzIiwiaW5kZXRlcm1pbmF0ZSIsIm9uQ2hhbmdlIiwib25DbGljayIsIm9uTW91c2VEb3duIiwic2l6ZVByb3AiLCJzaXplIiwib3RoZXJQcm9wcyIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsInNldENoZWNrZWQiLCJfdXNlQ29udGV4dCIsInVzZUNvbnRleHQiLCJHcm91cENvbnRleHQiLCJkaXNhYmxlZENvbnRleHQiLCJoYW5kbGVHcm91cFZhbHVlQ2hhbmdlIiwic2l6ZUNvbnRleHQiLCJ2YWx1ZUNvbnRleHQiLCJfdXNlQ29udGV4dDIiLCJDb25maWdDb250ZXh0Iiwic2l6ZUNvbmZpZyIsImxhYmVsUmVmIiwidXNlUmVmIiwicmVmIiwiX3VzZUFjdGl2ZSIsInVzZUFjdGl2ZSIsImhhbmRsZU1vdXNlRG93biIsImdldENvbXB1dGVkU2l6ZSIsInZhbHVlQ29tcHV0ZWQiLCJjbGFzc1NldCIsImNsYXNzTmFtZXMiLCJjb25jYXQiLCJ1bmRlZmluZWQiLCJwb3BvdmVyIiwiY3JlYXRlRWxlbWVudCIsInJvbGUiLCJzdG9wUHJvcGFnYXRpb24iLCJhbGlnbkVkZ2UiLCJwb3B1cCIsImljb24iLCJjb2xvciIsImludGVyYWN0aXZlIiwiaGFuZGxlQ2xpY2siLCJoYW5kbGVLZXlEb3duIiwia2V5IiwiaGFuZGxlTGFiZWxNb3VzZURvd24iLCJvbktleURvd24iLCJHcm91cCIsImRpc3BsYXlOYW1lIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwib25lT2YiLCJub2RlIiwic3RyaW5nIiwiYm9vbCIsImFueSIsIm9iamVjdCIsImZ1bmMiLCJvbmVPZlR5cGUiLCJudW1iZXIiLCJkZWZhdWx0UHJvcHMiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9jb21wb25lbnRzL2NoZWNrYm94L0NoZWNrYm94LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1ub25pbnRlcmFjdGl2ZS1lbGVtZW50LXRvLWludGVyYWN0aXZlLXJvbGUgKi9cbmltcG9ydCBSZWFjdCwgeyBmb3J3YXJkUmVmLCB1c2VDb250ZXh0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IHsgR3JvdXBDb250ZXh0IH0gZnJvbSBcIi4vQ29udGV4dFwiXG5pbXBvcnQgR3JvdXAgZnJvbSBcIi4vR3JvdXBcIlxuaW1wb3J0IEljb24sIHsgSWNvbk5hbWVzIH0gZnJvbSBcIi4uL2ljb25cIlxuaW1wb3J0IFBvcG92ZXIsIHsgSVBvcG92ZXJQcm9wcyB9IGZyb20gXCIuLi9wb3BvdmVyXCJcbmltcG9ydCB7IENvbmZpZ0NvbnRleHQsIGdldENvbXB1dGVkU2l6ZSB9IGZyb20gXCIuLi9jb25maWctcHJvdmlkZXJcIlxuaW1wb3J0IHsgdXNlQWN0aXZlIH0gZnJvbSBcIi4uL191dGlsL2hvb2tzL3VzZS1hY3RpdmVcIlxuaW1wb3J0IFwiLi9zdHlsZVwiXG5cbmNvbnN0IHByZWZpeCA9IFwiYWR1aS1jaGVja2JveFwiXG5leHBvcnQgaW50ZXJmYWNlIElDaGVja2JveFByb3BzIHtcbiAgW2tleTogc3RyaW5nXTogYW55XG4gIC8qKlxuICAgKiDmmK/lkKbpgInkuK1cbiAgICovXG4gIGNoZWNrZWQ/OiBudWxsIHwgYm9vbGVhblxuICAvKipcbiAgICog5a2Q6IqC54K5XG4gICAqL1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZVxuICAvKipcbiAgICog6ZmE5Yqg57G75ZCNXG4gICAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIOaYr+WQpuemgeeUqFxuICAgKi9cbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIC8qKlxuICAgKiDliqDlhaXpl67lj7fmsJTms6Hmj5DnpLrlhoXlrrlcbiAgICovXG4gIGhlbHBlcj86IFJlYWN0LlJlYWN0Tm9kZVxuICAvKipcbiAgICog6Ieq5a6a5LmJ6Zeu5Y+35rCU5rOh55qEIEljb25cbiAgICovXG4gIGhlbHBlckljb24/OiBJY29uTmFtZXNcbiAgLyoqXG4gICAqIOmXruWPt+awlOazoeaPkOekuueahCBwcm9wc++8jOS8muWwhuatpOWvueixoemDveS8oOmAkue7mSA8UG9wb3ZlciAvPlxuICAgKi9cbiAgaGVscGVyUHJvcHM/OiBJUG9wb3ZlclByb3BzXG4gIC8qKlxuICAgKiDorr7nva4gaW5kZXRlcm1pbmF0ZSDnirbmgIHvvIzotJ/otKPkuJTku4Xku4XotJ/otKPmoLflvI/mjqfliLbvvIzor7flnKjlrp7njrDlhajpgInmlYjmnpzml7bkvb/nlKhcbiAgICovXG4gIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuXG4gIC8qKlxuICAgKiDpgInkuK3mgIHlj5HnlJ/lj5jljJbml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25DaGFuZ2U/OiAoKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHZvaWQpIHwgbnVsbFxuICAvKipcbiAgICog54K55Ye75pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uQ2xpY2s/OlxuICAgIHwgKChcbiAgICAgICAgZTpcbiAgICAgICAgICB8IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTExhYmVsRWxlbWVudD5cbiAgICAgICAgICB8IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTExhYmVsRWxlbWVudD5cbiAgICAgICkgPT4gdm9pZClcbiAgICB8IG51bGxcbiAgLyoqXG4gICAqIG9uTW91c2VEb3duIOaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbk1vdXNlRG93bj86IChlOiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxMYWJlbEVsZW1lbnQ+KSA9PiB2b2lkXG4gIC8qKlxuICAgKiDorr7nva7lsLrlr7hcbiAgICovXG4gIHNpemU/OiBcIm1pbmlcIiB8IFwic21hbGxcIiB8IFwibWVkaXVtXCIgfCBcImxhcmdlXCJcbiAgLyoqXG4gICAqIOWAvO+8jOWPquWcqOS9v+eUqCBDaGVja2JveC5Hcm91cCDml7bkvJror7vlj5bkvb/nlKhcbiAgICovXG4gIHZhbHVlPzogbnVsbCB8IFJlYWN0LlJlYWN0VGV4dFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDaGVja2JveFxuICBleHRlbmRzIFJlYWN0LkZvcndhcmRSZWZFeG90aWNDb21wb25lbnQ8XG4gICAgSUNoZWNrYm94UHJvcHMgJiBSZWFjdC5SZWZBdHRyaWJ1dGVzPEhUTUxMYWJlbEVsZW1lbnQ+XG4gID4ge1xuICBHcm91cDogdHlwZW9mIEdyb3VwXG59XG5cbi8qKlxuICog5Yu+6YCJ5o+Q5L6b55So5oi35Zyo5aSa5Liq6YCJ6aG55Lit77yM5a+56YCJ6aG555qE5YaF5a656L+b6KGM5Y2V5oiW5aSa5Liq6YCJ5oup44CCXG4gKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IENoZWNrYm94OiBJQ2hlY2tib3ggPSBmb3J3YXJkUmVmKFxuICAoXG4gICAge1xuICAgICAgY2hlY2tlZDogY2hlY2tlZFByb3AsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgaGVscGVyLFxuICAgICAgaGVscGVySWNvbixcbiAgICAgIGhlbHBlclByb3BzLFxuICAgICAgaW5kZXRlcm1pbmF0ZSxcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgb25DbGljayxcbiAgICAgIG9uTW91c2VEb3duLFxuICAgICAgc2l6ZTogc2l6ZVByb3AsXG4gICAgICB2YWx1ZSxcbiAgICAgIC4uLm90aGVyUHJvcHNcbiAgICB9OiBJQ2hlY2tib3hQcm9wcyxcbiAgICByZWZQcm9wXG4gICkgPT4ge1xuICAgIGNvbnN0IFtjaGVja2VkLCBzZXRDaGVja2VkXSA9IHVzZVN0YXRlKCEhY2hlY2tlZFByb3ApXG4gICAgY29uc3Qge1xuICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkQ29udGV4dCxcbiAgICAgIGhhbmRsZUdyb3VwVmFsdWVDaGFuZ2UsXG4gICAgICBzaXplOiBzaXplQ29udGV4dCxcbiAgICAgIHZhbHVlOiB2YWx1ZUNvbnRleHQsXG4gICAgfSA9IHVzZUNvbnRleHQoR3JvdXBDb250ZXh0KVxuICAgIGNvbnN0IHsgc2l6ZTogc2l6ZUNvbmZpZyB9ID0gdXNlQ29udGV4dChDb25maWdDb250ZXh0KVxuICAgIGNvbnN0IGxhYmVsUmVmID0gdXNlUmVmPEhUTUxMYWJlbEVsZW1lbnQ+KG51bGwpXG4gICAgY29uc3QgcmVmID0gcmVmUHJvcCB8fCBsYWJlbFJlZlxuICAgIGNvbnN0IHsgaGFuZGxlTW91c2VEb3duIH0gPSB1c2VBY3RpdmUoeyByZWYgfSlcblxuICAgIC8vIOebuOW9k+S6jueUn+WRveWRqOacnyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcbiAgICBpZiAoY2hlY2tlZFByb3AgIT09IG51bGwgJiYgY2hlY2tlZCAhPT0gISFjaGVja2VkUHJvcCkge1xuICAgICAgc2V0Q2hlY2tlZCghIWNoZWNrZWRQcm9wKVxuICAgIH1cblxuICAgIGNvbnN0IHNpemUgPSBnZXRDb21wdXRlZFNpemUoc2l6ZVByb3AsIHNpemVDb250ZXh0LCBzaXplQ29uZmlnKVxuXG4gICAgY29uc3QgdmFsdWVDb21wdXRlZCA9IHZhbHVlICE9PSBudWxsID8gdmFsdWUgOiBjaGlsZHJlbj8udG9TdHJpbmcoKVxuXG4gICAgLyoqXG4gICAgICog5b2T5pyJIGNvbnRleHQgY29udGV4dCDml7bvvIzkvb/nlKggdmFsdWXvvJpcbiAgICAgKiDlpoLmnpzlrZjlnKggdmFsdWUgcHJvcO+8jOWImeebtOaOpeS9v+eUqCB2YWx1Ze+8m1xuICAgICAqIOWmguaenOS4jeWtmOWcqO+8jOWwsSBzdHJpbmcg5YyWIGNoaWxkcmVuIOS9nOS4uiB2YWx1ZeOAglxuICAgICAqL1xuICAgIGNvbnN0IGNsYXNzU2V0ID0gY2xhc3NOYW1lcyhcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGAke3ByZWZpeH0tYmFzZWAsXG4gICAgICBgJHtwcmVmaXh9LSR7c2l6ZX1gLFxuICAgICAge1xuICAgICAgICBbYCR7cHJlZml4fS1jaGVja2VkYF06XG4gICAgICAgICAgaW5kZXRlcm1pbmF0ZSB8fFxuICAgICAgICAgICh2YWx1ZUNvbnRleHRcbiAgICAgICAgICAgID8gdmFsdWVDb21wdXRlZCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICB2YWx1ZUNvbXB1dGVkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgdmFsdWVDb250ZXh0LmluY2x1ZGVzKHZhbHVlQ29tcHV0ZWQpXG4gICAgICAgICAgICA6IGNoZWNrZWQpLFxuICAgICAgICBbYCR7cHJlZml4fS1ub0NoaWxkcmVuYF06ICFjaGlsZHJlbixcbiAgICAgICAgW2Ake3ByZWZpeH0tZGlzYWJsZWRgXTogZGlzYWJsZWRDb250ZXh0IHx8IGRpc2FibGVkLFxuICAgICAgICBbYCR7cHJlZml4fS1pbmRldGVybWluYXRlYF06IGluZGV0ZXJtaW5hdGUsXG4gICAgICB9XG4gICAgKVxuXG4gICAgY29uc3QgcG9wb3ZlciA9IGhlbHBlciA/IChcbiAgICAgIDxzcGFuXG4gICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxQb3BvdmVyIGFsaWduRWRnZT17ZmFsc2V9IHBvcHVwPXtoZWxwZXJ9IHsuLi5oZWxwZXJQcm9wc30+XG4gICAgICAgICAgPEljb25cbiAgICAgICAgICAgIGljb249e2hlbHBlckljb24gfHwgXCJoZWxwLWNpcmNsZVwifVxuICAgICAgICAgICAgY29sb3I9XCJ2YXIoLS1ncmF5LTYwMClcIlxuICAgICAgICAgICAgaW50ZXJhY3RpdmVcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7cHJlZml4fS1oZWxwZXJgfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvUG9wb3Zlcj5cbiAgICAgIDwvc3Bhbj5cbiAgICApIDogbnVsbFxuXG4gICAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoXG4gICAgICBlOlxuICAgICAgICB8IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTExhYmVsRWxlbWVudD5cbiAgICAgICAgfCBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxMYWJlbEVsZW1lbnQ+XG4gICAgKSA9PiB7XG4gICAgICBpZiAob25DbGljaykge1xuICAgICAgICBvbkNsaWNrKGUpXG4gICAgICB9XG4gICAgICBpZiAoZGlzYWJsZWQgfHwgZGlzYWJsZWRDb250ZXh0KSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBoYW5kbGVHcm91cFZhbHVlQ2hhbmdlICYmXG4gICAgICAgIHZhbHVlQ29tcHV0ZWQgIT09IG51bGwgJiZcbiAgICAgICAgdmFsdWVDb21wdXRlZCAhPT0gdW5kZWZpbmVkXG4gICAgICApIHtcbiAgICAgICAgaGFuZGxlR3JvdXBWYWx1ZUNoYW5nZSh2YWx1ZUNvbXB1dGVkKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGNoZWNrZWRQcm9wID09PSBudWxsKSB7XG4gICAgICAgICAgc2V0Q2hlY2tlZCghY2hlY2tlZClcbiAgICAgICAgfVxuICAgICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgICBvbkNoYW5nZSghY2hlY2tlZClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MTGFiZWxFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKGUua2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgICAgaGFuZGxlQ2xpY2soZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVMYWJlbE1vdXNlRG93biA9IChcbiAgICAgIGU6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTExhYmVsRWxlbWVudCwgTW91c2VFdmVudD5cbiAgICApID0+IHtcbiAgICAgIGlmIChvbk1vdXNlRG93bikge1xuICAgICAgICBvbk1vdXNlRG93bihlKVxuICAgICAgfVxuICAgICAgaGFuZGxlTW91c2VEb3duKClcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGxhYmVsXG4gICAgICAgIGFyaWEtY2hlY2tlZD17Y2hlY2tlZH1cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc1NldH1cbiAgICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHJvbGU9XCJjaGVja2JveFwiXG4gICAgICAgIG9uTW91c2VEb3duPXtoYW5kbGVMYWJlbE1vdXNlRG93bn1cbiAgICAgICAgey4uLm90aGVyUHJvcHN9XG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YCR7cHJlZml4fS1pbmRpY2F0b3JgfT5cbiAgICAgICAgICA8aSBjbGFzc05hbWU9e2Ake3ByZWZpeH0taW5kaWNhdG9yLWlubmVyYH0gLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB7ISFjaGlsZHJlbiAmJiA8c3Bhbj57Y2hpbGRyZW59PC9zcGFuPn1cbiAgICAgICAge3BvcG92ZXJ9XG4gICAgICA8L2xhYmVsPlxuICAgIClcbiAgfVxuKVxuXG5DaGVja2JveC5Hcm91cCA9IEdyb3VwXG5cbkNoZWNrYm94LmRpc3BsYXlOYW1lID0gXCJDaGVja2JveFwiXG5cbkNoZWNrYm94LnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIOaYr+WQpumAieS4rVxuICAgKi9cbiAgY2hlY2tlZDogUHJvcFR5cGVzLm9uZU9mKFtudWxsLCB0cnVlLCBmYWxzZV0pLFxuICAvKipcbiAgICog5a2Q6IqC54K5XG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiDpmYTliqDnsbvlkI1cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIOaYr+WQpuemgeeUqFxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICog5Yqg5YWl6Zeu5Y+35rCU5rOh5o+Q56S65YaF5a65XG4gICAqL1xuICBoZWxwZXI6IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICog6Ieq5a6a5LmJ6Zeu5Y+35rCU5rOh55qEIEljb25cbiAgICovXG4gIGhlbHBlckljb246IFByb3BUeXBlcy5hbnksXG4gIC8qKlxuICAgKiDpl67lj7fmsJTms6Hmj5DnpLrnmoQgcHJvcHPvvIzkvJrlsIbmraTlr7nosaHpg73kvKDpgJLnu5kgPFBvcG92ZXIgLz5cbiAgICovXG4gIGhlbHBlclByb3BzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICog6K6+572uIGluZGV0ZXJtaW5hdGUg54q25oCB77yM6LSf6LSj5LiU5LuF5LuF6LSf6LSj5qC35byP5o6n5Yi277yM6K+35Zyo5a6e546w5YWo6YCJ5pWI5p6c5pe25L2/55SoXG4gICAqL1xuICBpbmRldGVybWluYXRlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOmAieS4reaAgeWPkeeUn+WPmOWMluaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiDngrnlh7vml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiDorr7nva7lsLrlr7hcbiAgICovXG4gIHNpemU6IFByb3BUeXBlcy5vbmVPZihbXCJtaW5pXCIsIFwic21hbGxcIiwgXCJtZWRpdW1cIiwgXCJsYXJnZVwiXSksXG4gIC8qKlxuICAgKiDlgLzvvIzlj6rlnKjkvb/nlKggQ2hlY2tib3guR3JvdXAg5pe25Lya6K+75Y+W5L2/55SoXG4gICAqL1xuICB2YWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm51bWJlcl0pLFxufVxuXG5DaGVja2JveC5kZWZhdWx0UHJvcHMgPSB7XG4gIGNoZWNrZWQ6IG51bGwsXG4gIGNoaWxkcmVuOiBcIlwiLFxuICBjbGFzc05hbWU6IHVuZGVmaW5lZCxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBoZWxwZXI6IG51bGwsXG4gIGhlbHBlckljb246IFwiaGVscC1jaXJjbGVcIixcbiAgaGVscGVyUHJvcHM6IHt9LFxuICBpbmRldGVybWluYXRlOiBmYWxzZSxcbiAgb25DaGFuZ2U6IG51bGwsXG4gIG9uQ2xpY2s6IG51bGwsXG4gIHNpemU6IFwic21hbGxcIixcbiAgdmFsdWU6IG51bGwsXG59XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxRQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxNQUFBLEdBQUFILHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTSxLQUFBLEdBQUFKLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTyxRQUFBLEdBQUFMLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBUSxlQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxXQUFBLEdBQUFULE9BQUE7QUFDQUEsT0FBQTtBQUFnQixJQUFBVSxTQUFBO0FBQUEsU0FBQVIsdUJBQUFTLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FB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
;