UNPKG

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>

152 lines 26.3 kB
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); } var _excluded = ["checked", "children", "className", "disabled", "helper", "helperIcon", "helperProps", "indeterminate", "onChange", "onClick", "onMouseDown", "size", "value"]; 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; } import React, { forwardRef, useContext, useRef, useState } from "react"; import PropTypes from "prop-types"; import classNames from "classnames"; import { GroupContext } from "./Context"; import Group from "./Group"; import Icon from "../icon"; import Popover from "../popover"; import { ConfigContext, getComputedSize } from "../config-provider"; import { useActive } from "../_util/hooks/use-active"; import "./style"; var prefix = "adui-checkbox"; var Checkbox = 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 = useState(!!checkedProp), _useState2 = _slicedToArray(_useState, 2), checked = _useState2[0], setChecked = _useState2[1]; var _useContext = useContext(GroupContext), disabledContext = _useContext.disabled, handleGroupValueChange = _useContext.handleGroupValueChange, sizeContext = _useContext.size, valueContext = _useContext.value; var _useContext2 = useContext(ConfigContext), sizeConfig = _useContext2.size; var labelRef = useRef(null); var ref = refProp || labelRef; var _useActive = useActive({ ref: ref }), handleMouseDown = _useActive.handleMouseDown; if (checkedProp !== null && checked !== !!checkedProp) { setChecked(!!checkedProp); } var size = getComputedSize(sizeProp, sizeContext, sizeConfig); var valueComputed = value !== null ? value : children === null || children === void 0 ? void 0 : children.toString(); var classSet = classNames(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.createElement("span", { role: "none", onClick: function onClick(e) { e.stopPropagation(); } }, React.createElement(Popover, _extends({ alignEdge: false, popup: helper }, helperProps), React.createElement(Icon, { 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.createElement("label", _extends({ "aria-checked": checked, className: classSet, onClick: handleClick, onKeyDown: handleKeyDown, ref: ref, role: "checkbox", onMouseDown: handleLabelMouseDown }, otherProps), React.createElement("span", { className: "".concat(prefix, "-indicator") }, React.createElement("i", { className: "".concat(prefix, "-indicator-inner") })), !!children && React.createElement("span", null, children), popover); }); Checkbox.Group = Group; Checkbox.displayName = "Checkbox"; Checkbox.propTypes = { checked: PropTypes.oneOf([null, true, false]), children: PropTypes.node, className: PropTypes.string, disabled: PropTypes.bool, helper: PropTypes.node, helperIcon: PropTypes.any, helperProps: PropTypes.object, indeterminate: PropTypes.bool, onChange: PropTypes.func, onClick: PropTypes.func, size: PropTypes.oneOf(["mini", "small", "medium", "large"]), value: PropTypes.oneOfType([PropTypes.string, PropTypes.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 }; export default Checkbox; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZvcndhcmRSZWYiLCJ1c2VDb250ZXh0IiwidXNlUmVmIiwidXNlU3RhdGUiLCJQcm9wVHlwZXMiLCJjbGFzc05hbWVzIiwiR3JvdXBDb250ZXh0IiwiR3JvdXAiLCJJY29uIiwiUG9wb3ZlciIsIkNvbmZpZ0NvbnRleHQiLCJnZXRDb21wdXRlZFNpemUiLCJ1c2VBY3RpdmUiLCJwcmVmaXgiLCJDaGVja2JveCIsIl9yZWYiLCJyZWZQcm9wIiwiY2hlY2tlZFByb3AiLCJjaGVja2VkIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJkaXNhYmxlZCIsImhlbHBlciIsImhlbHBlckljb24iLCJoZWxwZXJQcm9wcyIsImluZGV0ZXJtaW5hdGUiLCJvbkNoYW5nZSIsIm9uQ2xpY2siLCJvbk1vdXNlRG93biIsInNpemVQcm9wIiwic2l6ZSIsInZhbHVlIiwib3RoZXJQcm9wcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNldENoZWNrZWQiLCJfdXNlQ29udGV4dCIsImRpc2FibGVkQ29udGV4dCIsImhhbmRsZUdyb3VwVmFsdWVDaGFuZ2UiLCJzaXplQ29udGV4dCIsInZhbHVlQ29udGV4dCIsIl91c2VDb250ZXh0MiIsInNpemVDb25maWciLCJsYWJlbFJlZiIsInJlZiIsIl91c2VBY3RpdmUiLCJoYW5kbGVNb3VzZURvd24iLCJ2YWx1ZUNvbXB1dGVkIiwidG9TdHJpbmciLCJjbGFzc1NldCIsImNvbmNhdCIsIl9kZWZpbmVQcm9wZXJ0eSIsInVuZGVmaW5lZCIsImluY2x1ZGVzIiwicG9wb3ZlciIsImNyZWF0ZUVsZW1lbnQiLCJyb2xlIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsIl9leHRlbmRzIiwiYWxpZ25FZGdlIiwicG9wdXAiLCJpY29uIiwiY29sb3IiLCJpbnRlcmFjdGl2ZSIsImhhbmRsZUNsaWNrIiwiaGFuZGxlS2V5RG93biIsImtleSIsImhhbmRsZUxhYmVsTW91c2VEb3duIiwib25LZXlEb3duIiwiZGlzcGxheU5hbWUiLCJwcm9wVHlwZXMiLCJvbmVPZiIsIm5vZGUiLCJzdHJpbmciLCJib29sIiwiYW55Iiwib2JqZWN0IiwiZnVuYyIsIm9uZU9mVHlwZSIsIm51bWJlciIsImRlZmF1bHRQcm9wcyJdLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvY2hlY2tib3gvQ2hlY2tib3gudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLW5vbmludGVyYWN0aXZlLWVsZW1lbnQtdG8taW50ZXJhY3RpdmUtcm9sZSAqL1xuaW1wb3J0IFJlYWN0LCB7IGZvcndhcmRSZWYsIHVzZUNvbnRleHQsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiXG5pbXBvcnQgeyBHcm91cENvbnRleHQgfSBmcm9tIFwiLi9Db250ZXh0XCJcbmltcG9ydCBHcm91cCBmcm9tIFwiLi9Hcm91cFwiXG5pbXBvcnQgSWNvbiwgeyBJY29uTmFtZXMgfSBmcm9tIFwiLi4vaWNvblwiXG5pbXBvcnQgUG9wb3ZlciwgeyBJUG9wb3ZlclByb3BzIH0gZnJvbSBcIi4uL3BvcG92ZXJcIlxuaW1wb3J0IHsgQ29uZmlnQ29udGV4dCwgZ2V0Q29tcHV0ZWRTaXplIH0gZnJvbSBcIi4uL2NvbmZpZy1wcm92aWRlclwiXG5pbXBvcnQgeyB1c2VBY3RpdmUgfSBmcm9tIFwiLi4vX3V0aWwvaG9va3MvdXNlLWFjdGl2ZVwiXG5pbXBvcnQgXCIuL3N0eWxlXCJcblxuY29uc3QgcHJlZml4ID0gXCJhZHVpLWNoZWNrYm94XCJcbmV4cG9ydCBpbnRlcmZhY2UgSUNoZWNrYm94UHJvcHMge1xuICBba2V5OiBzdHJpbmddOiBhbnlcbiAgLyoqXG4gICAqIOaYr+WQpumAieS4rVxuICAgKi9cbiAgY2hlY2tlZD86IG51bGwgfCBib29sZWFuXG4gIC8qKlxuICAgKiDlrZDoioLngrlcbiAgICovXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlXG4gIC8qKlxuICAgKiDpmYTliqDnsbvlkI1cbiAgICovXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICog5piv5ZCm56aB55SoXG4gICAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOWKoOWFpemXruWPt+awlOazoeaPkOekuuWGheWuuVxuICAgKi9cbiAgaGVscGVyPzogUmVhY3QuUmVhY3ROb2RlXG4gIC8qKlxuICAgKiDoh6rlrprkuYnpl67lj7fmsJTms6HnmoQgSWNvblxuICAgKi9cbiAgaGVscGVySWNvbj86IEljb25OYW1lc1xuICAvKipcbiAgICog6Zeu5Y+35rCU5rOh5o+Q56S655qEIHByb3Bz77yM5Lya5bCG5q2k5a+56LGh6YO95Lyg6YCS57uZIDxQb3BvdmVyIC8+XG4gICAqL1xuICBoZWxwZXJQcm9wcz86IElQb3BvdmVyUHJvcHNcbiAgLyoqXG4gICAqIOiuvue9riBpbmRldGVybWluYXRlIOeKtuaAge+8jOi0n+i0o+S4lOS7heS7hei0n+i0o+agt+W8j+aOp+WItu+8jOivt+WcqOWunueOsOWFqOmAieaViOaenOaXtuS9v+eUqFxuICAgKi9cbiAgaW5kZXRlcm1pbmF0ZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOmAieS4reaAgeWPkeeUn+WPmOWMluaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkNoYW5nZT86ICgoY2hlY2tlZDogYm9vbGVhbikgPT4gdm9pZCkgfCBudWxsXG4gIC8qKlxuICAgKiDngrnlh7vml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25DbGljaz86XG4gICAgfCAoKFxuICAgICAgICBlOlxuICAgICAgICAgIHwgUmVhY3QuTW91c2VFdmVudDxIVE1MTGFiZWxFbGVtZW50PlxuICAgICAgICAgIHwgUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MTGFiZWxFbGVtZW50PlxuICAgICAgKSA9PiB2b2lkKVxuICAgIHwgbnVsbFxuICAvKipcbiAgICogb25Nb3VzZURvd24g5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uTW91c2VEb3duPzogKGU6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTExhYmVsRWxlbWVudD4pID0+IHZvaWRcbiAgLyoqXG4gICAqIOiuvue9ruWwuuWvuFxuICAgKi9cbiAgc2l6ZT86IFwibWluaVwiIHwgXCJzbWFsbFwiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIlxuICAvKipcbiAgICog5YC877yM5Y+q5Zyo5L2/55SoIENoZWNrYm94Lkdyb3VwIOaXtuS8muivu+WPluS9v+eUqFxuICAgKi9cbiAgdmFsdWU/OiBudWxsIHwgUmVhY3QuUmVhY3RUZXh0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNoZWNrYm94XG4gIGV4dGVuZHMgUmVhY3QuRm9yd2FyZFJlZkV4b3RpY0NvbXBvbmVudDxcbiAgICBJQ2hlY2tib3hQcm9wcyAmIFJlYWN0LlJlZkF0dHJpYnV0ZXM8SFRNTExhYmVsRWxlbWVudD5cbiAgPiB7XG4gIEdyb3VwOiB0eXBlb2YgR3JvdXBcbn1cblxuLyoqXG4gKiDli77pgInmj5DkvpvnlKjmiLflnKjlpJrkuKrpgInpobnkuK3vvIzlr7npgInpobnnmoTlhoXlrrnov5vooYzljZXmiJblpJrkuKrpgInmi6njgIJcbiAqL1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgQ2hlY2tib3g6IElDaGVja2JveCA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7XG4gICAgICBjaGVja2VkOiBjaGVja2VkUHJvcCxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBoZWxwZXIsXG4gICAgICBoZWxwZXJJY29uLFxuICAgICAgaGVscGVyUHJvcHMsXG4gICAgICBpbmRldGVybWluYXRlLFxuICAgICAgb25DaGFuZ2UsXG4gICAgICBvbkNsaWNrLFxuICAgICAgb25Nb3VzZURvd24sXG4gICAgICBzaXplOiBzaXplUHJvcCxcbiAgICAgIHZhbHVlLFxuICAgICAgLi4ub3RoZXJQcm9wc1xuICAgIH06IElDaGVja2JveFByb3BzLFxuICAgIHJlZlByb3BcbiAgKSA9PiB7XG4gICAgY29uc3QgW2NoZWNrZWQsIHNldENoZWNrZWRdID0gdXNlU3RhdGUoISFjaGVja2VkUHJvcClcbiAgICBjb25zdCB7XG4gICAgICBkaXNhYmxlZDogZGlzYWJsZWRDb250ZXh0LFxuICAgICAgaGFuZGxlR3JvdXBWYWx1ZUNoYW5nZSxcbiAgICAgIHNpemU6IHNpemVDb250ZXh0LFxuICAgICAgdmFsdWU6IHZhbHVlQ29udGV4dCxcbiAgICB9ID0gdXNlQ29udGV4dChHcm91cENvbnRleHQpXG4gICAgY29uc3QgeyBzaXplOiBzaXplQ29uZmlnIH0gPSB1c2VDb250ZXh0KENvbmZpZ0NvbnRleHQpXG4gICAgY29uc3QgbGFiZWxSZWYgPSB1c2VSZWY8SFRNTExhYmVsRWxlbWVudD4obnVsbClcbiAgICBjb25zdCByZWYgPSByZWZQcm9wIHx8IGxhYmVsUmVmXG4gICAgY29uc3QgeyBoYW5kbGVNb3VzZURvd24gfSA9IHVzZUFjdGl2ZSh7IHJlZiB9KVxuXG4gICAgLy8g55u45b2T5LqO55Sf5ZG95ZGo5pyfIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1xuICAgIGlmIChjaGVja2VkUHJvcCAhPT0gbnVsbCAmJiBjaGVja2VkICE9PSAhIWNoZWNrZWRQcm9wKSB7XG4gICAgICBzZXRDaGVja2VkKCEhY2hlY2tlZFByb3ApXG4gICAgfVxuXG4gICAgY29uc3Qgc2l6ZSA9IGdldENvbXB1dGVkU2l6ZShzaXplUHJvcCwgc2l6ZUNvbnRleHQsIHNpemVDb25maWcpXG5cbiAgICBjb25zdCB2YWx1ZUNvbXB1dGVkID0gdmFsdWUgIT09IG51bGwgPyB2YWx1ZSA6IGNoaWxkcmVuPy50b1N0cmluZygpXG5cbiAgICAvKipcbiAgICAgKiDlvZPmnIkgY29udGV4dCBjb250ZXh0IOaXtu+8jOS9v+eUqCB2YWx1Ze+8mlxuICAgICAqIOWmguaenOWtmOWcqCB2YWx1ZSBwcm9w77yM5YiZ55u05o6l5L2/55SoIHZhbHVl77ybXG4gICAgICog5aaC5p6c5LiN5a2Y5Zyo77yM5bCxIHN0cmluZyDljJYgY2hpbGRyZW4g5L2c5Li6IHZhbHVl44CCXG4gICAgICovXG4gICAgY29uc3QgY2xhc3NTZXQgPSBjbGFzc05hbWVzKFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgYCR7cHJlZml4fS1iYXNlYCxcbiAgICAgIGAke3ByZWZpeH0tJHtzaXplfWAsXG4gICAgICB7XG4gICAgICAgIFtgJHtwcmVmaXh9LWNoZWNrZWRgXTpcbiAgICAgICAgICBpbmRldGVybWluYXRlIHx8XG4gICAgICAgICAgKHZhbHVlQ29udGV4dFxuICAgICAgICAgICAgPyB2YWx1ZUNvbXB1dGVkICE9PSBudWxsICYmXG4gICAgICAgICAgICAgIHZhbHVlQ29tcHV0ZWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICB2YWx1ZUNvbnRleHQuaW5jbHVkZXModmFsdWVDb21wdXRlZClcbiAgICAgICAgICAgIDogY2hlY2tlZCksXG4gICAgICAgIFtgJHtwcmVmaXh9LW5vQ2hpbGRyZW5gXTogIWNoaWxkcmVuLFxuICAgICAgICBbYCR7cHJlZml4fS1kaXNhYmxlZGBdOiBkaXNhYmxlZENvbnRleHQgfHwgZGlzYWJsZWQsXG4gICAgICAgIFtgJHtwcmVmaXh9LWluZGV0ZXJtaW5hdGVgXTogaW5kZXRlcm1pbmF0ZSxcbiAgICAgIH1cbiAgICApXG5cbiAgICBjb25zdCBwb3BvdmVyID0gaGVscGVyID8gKFxuICAgICAgPHNwYW5cbiAgICAgICAgcm9sZT1cIm5vbmVcIlxuICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPFBvcG92ZXIgYWxpZ25FZGdlPXtmYWxzZX0gcG9wdXA9e2hlbHBlcn0gey4uLmhlbHBlclByb3BzfT5cbiAgICAgICAgICA8SWNvblxuICAgICAgICAgICAgaWNvbj17aGVscGVySWNvbiB8fCBcImhlbHAtY2lyY2xlXCJ9XG4gICAgICAgICAgICBjb2xvcj1cInZhcigtLWdyYXktNjAwKVwiXG4gICAgICAgICAgICBpbnRlcmFjdGl2ZVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWhlbHBlcmB9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Qb3BvdmVyPlxuICAgICAgPC9zcGFuPlxuICAgICkgOiBudWxsXG5cbiAgICBjb25zdCBoYW5kbGVDbGljayA9IChcbiAgICAgIGU6XG4gICAgICAgIHwgUmVhY3QuTW91c2VFdmVudDxIVE1MTGFiZWxFbGVtZW50PlxuICAgICAgICB8IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTExhYmVsRWxlbWVudD5cbiAgICApID0+IHtcbiAgICAgIGlmIChvbkNsaWNrKSB7XG4gICAgICAgIG9uQ2xpY2soZSlcbiAgICAgIH1cbiAgICAgIGlmIChkaXNhYmxlZCB8fCBkaXNhYmxlZENvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGhhbmRsZUdyb3VwVmFsdWVDaGFuZ2UgJiZcbiAgICAgICAgdmFsdWVDb21wdXRlZCAhPT0gbnVsbCAmJlxuICAgICAgICB2YWx1ZUNvbXB1dGVkICE9PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICBoYW5kbGVHcm91cFZhbHVlQ2hhbmdlKHZhbHVlQ29tcHV0ZWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoY2hlY2tlZFByb3AgPT09IG51bGwpIHtcbiAgICAgICAgICBzZXRDaGVja2VkKCFjaGVja2VkKVxuICAgICAgICB9XG4gICAgICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgICAgIG9uQ2hhbmdlKCFjaGVja2VkKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9IChlOiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxMYWJlbEVsZW1lbnQ+KSA9PiB7XG4gICAgICBpZiAoZS5rZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgICBoYW5kbGVDbGljayhlKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUxhYmVsTW91c2VEb3duID0gKFxuICAgICAgZTogUmVhY3QuTW91c2VFdmVudDxIVE1MTGFiZWxFbGVtZW50LCBNb3VzZUV2ZW50PlxuICAgICkgPT4ge1xuICAgICAgaWYgKG9uTW91c2VEb3duKSB7XG4gICAgICAgIG9uTW91c2VEb3duKGUpXG4gICAgICB9XG4gICAgICBoYW5kbGVNb3VzZURvd24oKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8bGFiZWxcbiAgICAgICAgYXJpYS1jaGVja2VkPXtjaGVja2VkfVxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzU2V0fVxuICAgICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja31cbiAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgcm9sZT1cImNoZWNrYm94XCJcbiAgICAgICAgb25Nb3VzZURvd249e2hhbmRsZUxhYmVsTW91c2VEb3dufVxuICAgICAgICB7Li4ub3RoZXJQcm9wc31cbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWluZGljYXRvcmB9PlxuICAgICAgICAgIDxpIGNsYXNzTmFtZT17YCR7cHJlZml4fS1pbmRpY2F0b3ItaW5uZXJgfSAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHshIWNoaWxkcmVuICYmIDxzcGFuPntjaGlsZHJlbn08L3NwYW4+fVxuICAgICAgICB7cG9wb3Zlcn1cbiAgICAgIDwvbGFiZWw+XG4gICAgKVxuICB9XG4pXG5cbkNoZWNrYm94Lkdyb3VwID0gR3JvdXBcblxuQ2hlY2tib3guZGlzcGxheU5hbWUgPSBcIkNoZWNrYm94XCJcblxuQ2hlY2tib3gucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICog5piv5ZCm6YCJ5LitXG4gICAqL1xuICBjaGVja2VkOiBQcm9wVHlwZXMub25lT2YoW251bGwsIHRydWUsIGZhbHNlXSksXG4gIC8qKlxuICAgKiDlrZDoioLngrlcbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIOmZhOWKoOexu+WQjVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICog5piv5ZCm56aB55SoXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDliqDlhaXpl67lj7fmsJTms6Hmj5DnpLrlhoXlrrlcbiAgICovXG4gIGhlbHBlcjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiDoh6rlrprkuYnpl67lj7fmsJTms6HnmoQgSWNvblxuICAgKi9cbiAgaGVscGVySWNvbjogUHJvcFR5cGVzLmFueSxcbiAgLyoqXG4gICAqIOmXruWPt+awlOazoeaPkOekuueahCBwcm9wc++8jOS8muWwhuatpOWvueixoemDveS8oOmAkue7mSA8UG9wb3ZlciAvPlxuICAgKi9cbiAgaGVscGVyUHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiDorr7nva4gaW5kZXRlcm1pbmF0ZSDnirbmgIHvvIzotJ/otKPkuJTku4Xku4XotJ/otKPmoLflvI/mjqfliLbvvIzor7flnKjlrp7njrDlhajpgInmlYjmnpzml7bkvb/nlKhcbiAgICovXG4gIGluZGV0ZXJtaW5hdGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICog6YCJ5Lit5oCB5Y+R55Sf5Y+Y5YyW5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIOeCueWHu+aXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIOiuvue9ruWwuuWvuFxuICAgKi9cbiAgc2l6ZTogUHJvcFR5cGVzLm9uZU9mKFtcIm1pbmlcIiwgXCJzbWFsbFwiLCBcIm1lZGl1bVwiLCBcImxhcmdlXCJdKSxcbiAgLyoqXG4gICAqIOWAvO+8jOWPquWcqOS9v+eUqCBDaGVja2JveC5Hcm91cCDml7bkvJror7vlj5bkvb/nlKhcbiAgICovXG4gIHZhbHVlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubnVtYmVyXSksXG59XG5cbkNoZWNrYm94LmRlZmF1bHRQcm9wcyA9IHtcbiAgY2hlY2tlZDogbnVsbCxcbiAgY2hpbGRyZW46IFwiXCIsXG4gIGNsYXNzTmFtZTogdW5kZWZpbmVkLFxuICBkaXNhYmxlZDogZmFsc2UsXG4gIGhlbHBlcjogbnVsbCxcbiAgaGVscGVySWNvbjogXCJoZWxwLWNpcmNsZVwiLFxuICBoZWxwZXJQcm9wczoge30sXG4gIGluZGV0ZXJtaW5hdGU6IGZhbHNlLFxuICBvbkNoYW5nZTogbnVsbCxcbiAgb25DbGljazogbnVsbCxcbiAgc2l6ZTogXCJzbWFsbFwiLFxuICB2YWx1ZTogbnVsbCxcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFFQSxPQUFPQSxLQUFLLElBQUlDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ3ZFLE9BQU9DLFNBQVMsTUFBTSxZQUFZO0FBQ2xDLE9BQU9DLFVBQVUsTUFBTSxZQUFZO0FBQ25DLFNBQVNDLFlBQVksUUFBUSxXQUFXO0FBQ3hDLE9BQU9DLEtBQUssTUFBTSxTQUFTO0FBQzNCLE9BQU9DLElBQUksTUFBcUIsU0FBUztBQUN6QyxPQUFPQyxPQUFPLE1BQXlCLFlBQVk7QUFDbkQsU0FBU0MsYUFBYSxFQUFFQyxlQUFlLFFBQVEsb0JBQW9CO0FBQ25FLFNBQVNDLFNBQVMsUUFBUSwyQkFBMkI7QUFDckQsT0FBTyxTQUFTO0FBRWhCLElBQU1DLE1BQU0sR0FBRyxlQUFlO0FBMEU5QixJQUFNQyxRQUFtQixHQUFHZCxVQUFVLENBQ3BDLFVBQUFlLElBQUEsRUFpQkVDLE9BQU8sRUFDSjtFQUFBLElBaEJRQyxXQUFXLEdBQUFGLElBQUEsQ0FBcEJHLE9BQU87SUFDUEMsUUFBUSxHQUFBSixJQUFBLENBQVJJLFFBQVE7SUFDUkMsU0FBUyxHQUFBTCxJQUFBLENBQVRLLFNBQVM7SUFDVEMsUUFBUSxHQUFBTixJQUFBLENBQVJNLFFBQVE7SUFDUkMsTUFBTSxHQUFBUCxJQUFBLENBQU5PLE1BQU07SUFDTkMsVUFBVSxHQUFBUixJQUFBLENBQVZRLFVBQVU7SUFDVkMsV0FBVyxHQUFBVCxJQUFBLENBQVhTLFdBQVc7SUFDWEMsYUFBYSxHQUFBVixJQUFBLENBQWJVLGFBQWE7SUFDYkMsUUFBUSxHQUFBWCxJQUFBLENBQVJXLFFBQVE7SUFDUkMsT0FBTyxHQUFBWixJQUFBLENBQVBZLE9BQU87SUFDUEMsV0FBVyxHQUFBYixJQUFBLENBQVhhLFdBQVc7SUFDTEMsUUFBUSxHQUFBZCxJQUFBLENBQWRlLElBQUk7SUFDSkMsS0FBSyxHQUFBaEIsSUFBQSxDQUFMZ0IsS0FBSztJQUNGQyxVQUFVLEdBQUFDLHdCQUFBLENBQUFsQixJQUFBLEVBQUFtQixTQUFBO0VBSWYsSUFBQUMsU0FBQSxHQUE4QmhDLFFBQVEsQ0FBQyxDQUFDLENBQUNjLFdBQVcsQ0FBQztJQUFBbUIsVUFBQSxHQUFBQyxjQUFBLENBQUFGLFNBQUE7SUFBOUNqQixPQUFPLEdBQUFrQixVQUFBO0lBQUVFLFVBQVUsR0FBQUYsVUFBQTtFQUMxQixJQUFBRyxXQUFBLEdBS0l0QyxVQUFVLENBQUNLLFlBQVksQ0FBQztJQUpoQmtDLGVBQWUsR0FBQUQsV0FBQSxDQUF6QmxCLFFBQVE7SUFDUm9CLHNCQUFzQixHQUFBRixXQUFBLENBQXRCRSxzQkFBc0I7SUFDaEJDLFdBQVcsR0FBQUgsV0FBQSxDQUFqQlQsSUFBSTtJQUNHYSxZQUFZLEdBQUFKLFdBQUEsQ0FBbkJSLEtBQUs7RUFFUCxJQUFBYSxZQUFBLEdBQTZCM0MsVUFBVSxDQUFDUyxhQUFhLENBQUM7SUFBeENtQyxVQUFVLEdBQUFELFlBQUEsQ0FBaEJkLElBQUk7RUFDWixJQUFNZ0IsUUFBUSxHQUFHNUMsTUFBTSxDQUFtQixJQUFJLENBQUM7RUFDL0MsSUFBTTZDLEdBQUcsR0FBRy9CLE9BQU8sSUFBSThCLFFBQVE7RUFDL0IsSUFBQUUsVUFBQSxHQUE0QnBDLFNBQVMsQ0FBQztNQUFFbUMsR0FBRyxFQUFIQTtJQUFJLENBQUMsQ0FBQztJQUF0Q0UsZUFBZSxHQUFBRCxVQUFBLENBQWZDLGVBQWU7RUFHdkIsSUFBSWhDLFdBQVcsS0FBSyxJQUFJLElBQUlDLE9BQU8sS0FBSyxDQUFDLENBQUNELFdBQVcsRUFBRTtJQUNyRHFCLFVBQVUsQ0FBQyxDQUFDLENBQUNyQixXQUFXLENBQUM7RUFDM0I7RUFFQSxJQUFNYSxJQUFJLEdBQUduQixlQUFlLENBQUNrQixRQUFRLEVBQUVhLFdBQVcsRUFBRUcsVUFBVSxDQUFDO0VBRS9ELElBQU1LLGFBQWEsR0FBR25CLEtBQUssS0FBSyxJQUFJLEdBQUdBLEtBQUssR0FBR1osUUFBUSxhQUFSQSxRQUFRLHVCQUFSQSxRQUFRLENBQUVnQyxRQUFRLENBQUMsQ0FBQztFQU9uRSxJQUFNQyxRQUFRLEdBQUcvQyxVQUFVLENBQ3pCZSxTQUFTLEtBQUFpQyxNQUFBLENBQ054QyxNQUFNLGVBQUF3QyxNQUFBLENBQ054QyxNQUFNLE9BQUF3QyxNQUFBLENBQUl2QixJQUFJLEdBQUF3QixlQUFBLENBQUFBLGVBQUEsQ0FBQUEsZUFBQSxDQUFBQSxlQUFBLFFBQUFELE1BQUEsQ0FFWHhDLE1BQU0sZUFDUlksYUFBYSxLQUNaa0IsWUFBWSxHQUNUTyxhQUFhLEtBQUssSUFBSSxJQUN0QkEsYUFBYSxLQUFLSyxTQUFTLElBQzNCWixZQUFZLENBQUNhLFFBQVEsQ0FBQ04sYUFBYSxDQUFDLEdBQ3BDaEMsT0FBTyxDQUFDLE1BQUFtQyxNQUFBLENBQ1Z4QyxNQUFNLGtCQUFnQixDQUFDTSxRQUFRLE1BQUFrQyxNQUFBLENBQy9CeEMsTUFBTSxnQkFBYzJCLGVBQWUsSUFBSW5CLFFBQVEsTUFBQWdDLE1BQUEsQ0FDL0N4QyxNQUFNLHFCQUFtQlksYUFBYSxDQUU5QyxDQUFDO0VBRUQsSUFBTWdDLE9BQU8sR0FBR25DLE1BQU0sR0FDcEJ2QixLQUFBLENBQUEyRCxhQUFBO0lBQ0VDLElBQUksRUFBQyxNQUFNO0lBQ1hoQyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBR2lDLENBQUMsRUFBSztNQUNkQSxDQUFDLENBQUNDLGVBQWUsQ0FBQyxDQUFDO0lBQ3JCO0VBQUUsR0FFRjlELEtBQUEsQ0FBQTJELGFBQUEsQ0FBQ2pELE9BQU8sRUFBQXFELFFBQUE7SUFBQ0MsU0FBUyxFQUFFLEtBQU07SUFBQ0MsS0FBSyxFQUFFMUM7RUFBTyxHQUFLRSxXQUFXLEdBQ3ZEekIsS0FBQSxDQUFBMkQsYUFBQSxDQUFDbEQsSUFBSTtJQUNIeUQsSUFBSSxFQUFFMUMsVUFBVSxJQUFJLGFBQWM7SUFDbEMyQyxLQUFLLEVBQUMsaUJBQWlCO0lBQ3ZCQyxXQUFXO0lBQ1gvQyxTQUFTLEtBQUFpQyxNQUFBLENBQUt4QyxNQUFNO0VBQVUsQ0FDL0IsQ0FDTSxDQUNMLENBQUMsR0FDTCxJQUFJO0VBRVIsSUFBTXVELFdBQVcsR0FBRyxTQUFkQSxXQUFXQSxDQUNmUixDQUV5QyxFQUN0QztJQUNILElBQUlqQyxPQUFPLEVBQUU7TUFDWEEsT0FBTyxDQUFDaUMsQ0FBQyxDQUFDO0lBQ1o7SUFDQSxJQUFJdkMsUUFBUSxJQUFJbUIsZUFBZSxFQUFFO01BQy9CO0lBQ0Y7SUFDQSxJQUNFQyxzQkFBc0IsSUFDdEJTLGFBQWEsS0FBSyxJQUFJLElBQ3RCQSxhQUFhLEtBQUtLLFNBQVMsRUFDM0I7TUFDQWQsc0JBQXNCLENBQUNTLGFBQWEsQ0FBQztJQUN2QyxDQUFDLE1BQU07TUFDTCxJQUFJakMsV0FBVyxLQUFLLElBQUksRUFBRTtRQUN4QnFCLFVBQVUsQ0FBQyxDQUFDcEIsT0FBTyxDQUFDO01BQ3RCO01BQ0EsSUFBSVEsUUFBUSxFQUFFO1FBQ1pBLFFBQVEsQ0FBQyxDQUFDUixPQUFPLENBQUM7TUFDcEI7SUFDRjtFQUNGLENBQUM7RUFFRCxJQUFNbUQsYUFBYSxHQUFHLFNBQWhCQSxhQUFhQSxDQUFJVCxDQUF3QyxFQUFLO0lBQ2xFLElBQUlBLENBQUMsQ0FBQ1UsR0FBRyxLQUFLLE9BQU8sRUFBRTtNQUNyQkYsV0FBVyxDQUFDUixDQUFDLENBQUM7SUFDaEI7RUFDRixDQUFDO0VBRUQsSUFBTVcsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUFvQkEsQ0FDeEJYLENBQWlELEVBQzlDO0lBQ0gsSUFBSWhDLFdBQVcsRUFBRTtNQUNmQSxXQUFXLENBQUNnQyxDQUFDLENBQUM7SUFDaEI7SUFDQVgsZUFBZSxDQUFDLENBQUM7RUFDbkIsQ0FBQztFQUVELE9BQ0VsRCxLQUFBLENBQUEyRCxhQUFBLFVBQUFJLFFBQUE7SUFDRSxnQkFBYzVDLE9BQVE7SUFDdEJFLFNBQVMsRUFBRWdDLFFBQVM7SUFDcEJ6QixPQUFPLEVBQUV5QyxXQUFZO0lBQ3JCSSxTQUFTLEVBQUVILGFBQWM7SUFDekJ0QixHQUFHLEVBQUVBLEdBQUk7SUFDVFksSUFBSSxFQUFDLFVBQVU7SUFDZi9CLFdBQVcsRUFBRTJDO0VBQXFCLEdBQzlCdkMsVUFBVSxHQUVkakMsS0FBQSxDQUFBMkQsYUFBQTtJQUFNdEMsU0FBUyxLQUFBaUMsTUFBQSxDQUFLeEMsTUFBTTtFQUFhLEdBQ3JDZCxLQUFBLENBQUEyRCxhQUFBO0lBQUd0QyxTQUFTLEtBQUFpQyxNQUFBLENBQUt4QyxNQUFNO0VBQW1CLENBQUUsQ0FDeEMsQ0FBQyxFQUNOLENBQUMsQ0FBQ00sUUFBUSxJQUFJcEIsS0FBQSxDQUFBMkQsYUFBQSxlQUFPdkMsUUFBZSxDQUFDLEVBQ3JDc0MsT0FDSSxDQUFDO0FBRVosQ0FDRixDQUFDO0FBRUQzQyxRQUFRLENBQUNQLEtBQUssR0FBR0EsS0FBSztBQUV0Qk8sUUFBUSxDQUFDMkQsV0FBVyxHQUFHLFVBQVU7QUFFakMzRCxRQUFRLENBQUM0RCxTQUFTLEdBQUc7RUFJbkJ4RCxPQUFPLEVBQUVkLFNBQVMsQ0FBQ3VFLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7RUFJN0N4RCxRQUFRLEVBQUVmLFNBQVMsQ0FBQ3dFLElBQUk7RUFJeEJ4RCxTQUFTLEVBQUVoQixTQUFTLENBQUN5RSxNQUFNO0VBSTNCeEQsUUFBUSxFQUFFakIsU0FBUyxDQUFDMEUsSUFBSTtFQUl4QnhELE1BQU0sRUFBRWxCLFNBQVMsQ0FBQ3dFLElBQUk7RUFJdEJyRCxVQUFVLEVBQUVuQixTQUFTLENBQUMyRSxHQUFHO0VBSXpCdkQsV0FBVyxFQUFFcEIsU0FBUyxDQUFDNEUsTUFBTTtFQUk3QnZELGFBQWEsRUFBRXJCLFNBQVMsQ0FBQzBFLElBQUk7RUFJN0JwRCxRQUFRLEVBQUV0QixTQUFTLENBQUM2RSxJQUFJO0VBSXhCdEQsT0FBTyxFQUFFdkIsU0FBUyxDQUFDNkUsSUFBSTtFQUl2Qm5ELElBQUksRUFBRTFCLFNBQVMsQ0FBQ3VFLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0VBSTNENUMsS0FBSyxFQUFFM0IsU0FBUyxDQUFDOEUsU0FBUyxDQUFDLENBQUM5RSxTQUFTLENBQUN5RSxNQUFNLEVBQUV6RSxTQUFTLENBQUMrRSxNQUFNLENBQUM7QUFDakUsQ0FBQztBQUVEckUsUUFBUSxDQUFDc0UsWUFBWSxHQUFHO0VBQ3RCbEUsT0FBTyxFQUFFLElBQUk7RUFDYkMsUUFBUSxFQUFFLEVBQUU7RUFDWkMsU0FBUyxFQUFFbUMsU0FBUztFQUNwQmxDLFFBQVEsRUFBRSxLQUFLO0VBQ2ZDLE1BQU0sRUFBRSxJQUFJO0VBQ1pDLFVBQVUsRUFBRSxhQUFhO0VBQ3pCQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0VBQ2ZDLGFBQWEsRUFBRSxLQUFLO0VBQ3BCQyxRQUFRLEVBQUUsSUFBSTtFQUNkQyxPQUFPLEVBQUUsSUFBSTtFQUNiRyxJQUFJLEVBQUUsT0FBTztFQUNiQyxLQUFLLEVBQUU7QUFDVCxDQUFDO0FBRUQsZUFBZWpCLFFBQVEiLCJpZ25vcmVMaXN0IjpbXX0=