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>

197 lines (196 loc) 35.5 kB
"use strict"; 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 _raf = require("../_util/raf"); require("./style"); var _core = require("./core"); var _configProvider = require("../config-provider"); var _excluded = ["currentHour", "currentMinute", "disabledHours", "disabledMinutes", "disabledSeconds", "maxTime", "minTime", "onChange", "onlyHour", "size", "selectedValue", "type"]; 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 _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-time"; var noop = function noop() {}; var _scrollTo = function scrollTo(element, to, duration) { var reqAnimFrame = (0, _raf.getRequestAnimationFrame)(); if (duration <= 0) { element.scrollTop = to; return; } var difference = to - element.scrollTop; var perTick = difference / duration * 10; reqAnimFrame(function () { element.scrollTop += perTick; if (element.scrollTop === to) { return; } _scrollTo(element, to, duration - 10); }); }; var TimeSelect = (0, _react.forwardRef)(function (_ref, ref) { var currentHour = _ref.currentHour, currentMinute = _ref.currentMinute, disabledHours = _ref.disabledHours, disabledMinutes = _ref.disabledMinutes, disabledSeconds = _ref.disabledSeconds, maxTime = _ref.maxTime, minTime = _ref.minTime, onChange = _ref.onChange, onlyHour = _ref.onlyHour, size = _ref.size, selectedValue = _ref.selectedValue, type = _ref.type, otherProps = _objectWithoutProperties(_ref, _excluded); var selectRef = (0, _react.useRef)(null); (0, _react.useImperativeHandle)(ref, function () { return { select: selectRef }; }); var handleClick = function handleClick(item) { onChange(item, type); }; var _useContext = (0, _react.useContext)(_configProvider.ConfigContext), sizeContext = _useContext.size; var isDisabled = function isDisabled(value, minHour, minMinute, minSecond, maxHour, maxMinute, maxSecond, isOnlyHour) { if (type === "hour") { return value < minHour || value > (isOnlyHour && !maxTime ? "24:00" : maxHour); } if (type === "minute") { if (minHour === maxHour) { return value < minMinute || value > maxMinute; } if (minHour === currentHour) { return value < minMinute; } if (maxHour === currentHour) { return value > maxMinute; } } if (type === "second") { if (minHour === maxHour) { if (minMinute === maxMinute) { return value < minSecond || value > maxSecond; } if (minMinute === currentMinute) { return value < minSecond; } if (maxMinute === currentMinute) { return value > maxSecond; } } if (minHour === currentHour) { if (minMinute === currentMinute) { return value < minSecond; } } if (maxHour === currentHour) { if (maxMinute === currentMinute) { return value > maxSecond; } } } return false; }; var updateScrollTop = function updateScrollTop(duration) { if (selectRef !== null && selectRef !== void 0 && selectRef.current) { var activeItem = selectRef.current.getElementsByClassName("".concat(prefix, "-active"))[0]; if (activeItem) { var offsetTop = activeItem.offsetTop; if (offsetTop !== undefined) { if (duration) { _scrollTo(selectRef.current, offsetTop, duration); } else { selectRef.current.scrollTop = offsetTop; } } } } }; (0, _react.useEffect)(function () { updateScrollTop(0); }, []); (0, _react.useEffect)(function () { updateScrollTop(120); }, [selectedValue]); var classSet = (0, _classnames["default"])("".concat(prefix, "-timeSelect"), "".concat(prefix, "-").concat((0, _configProvider.getComputedSize)(size, sizeContext)), _defineProperty({}, "".concat(prefix, "-integerTimeSelect"), onlyHour)); var _extractHMSFromTime = (0, _core.extractHMSFromTime)(minTime), minHour = _extractHMSFromTime.hour, minMinute = _extractHMSFromTime.minute, minSecond = _extractHMSFromTime.second; var _extractHMSFromTime2 = (0, _core.extractHMSFromTime)(maxTime), maxHour = _extractHMSFromTime2.hour, maxMinute = _extractHMSFromTime2.minute, maxSecond = _extractHMSFromTime2.second; var items = []; if (type === "second") { items = _core.seconds; } else if (type === "minute") { items = _core.minutes; } else { items = _core.hours; } return _react["default"].createElement("div", _extends({ className: classSet, ref: selectRef }, otherProps), items.map(function (value) { var disabled = isDisabled(parseInt(value, 10), parseInt(minHour || "00", 10), parseInt(minMinute || "00", 10), parseInt(minSecond || "00", 10), parseInt(maxHour || "24", 10), parseInt(maxMinute || "59", 10), parseInt(maxSecond || "59", 10), onlyHour); if ((disabled || disabledHours && disabledHours(value)) && type === "hour" || disabledMinutes && disabledMinutes(value) && type === "minute" || disabledSeconds && disabledSeconds(value) && type === "second") { return null; } var itemClassSet = (0, _classnames["default"])("".concat(prefix, "-item"), _defineProperty(_defineProperty({}, "".concat(prefix, "-active"), selectedValue === value), "".concat(prefix, "-disabled"), disabled)); return _react["default"].createElement("div", { role: "none", className: itemClassSet, key: value, onClick: function onClick() { if (!disabled) { handleClick(value); } } }, onlyHour ? "".concat(value, ":00") : value); })); }); TimeSelect.displayName = "TimeSelect"; TimeSelect.propTypes = { currentHour: _propTypes["default"].number, currentMinute: _propTypes["default"].number, disabledHours: _propTypes["default"].func, disabledMinutes: _propTypes["default"].func, disabledSeconds: _propTypes["default"].func, maxTime: _propTypes["default"].string, minTime: _propTypes["default"].string, onChange: _propTypes["default"].any, onlyHour: _propTypes["default"].bool, selectedValue: _propTypes["default"].string, size: _propTypes["default"].oneOf(["mini", "small", "medium", "large"]), type: _propTypes["default"].any }; TimeSelect.defaultProps = { currentHour: null, currentMinute: null, disabledHours: noop, disabledMinutes: noop, disabledSeconds: noop, maxTime: "24:00", minTime: "00:00", onChange: noop, onlyHour: false, selectedValue: null, size: "small", type: "hour" }; var _default = exports["default"] = (0, _react.memo)(TimeSelect); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jbGFzc25hbWVzIiwiX3JhZiIsIl9jb3JlIiwiX2NvbmZpZ1Byb3ZpZGVyIiwiX2V4Y2x1ZGVkIiwiZSIsIl9fZXNNb2R1bGUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJXZWFrTWFwIiwiciIsInQiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXBwbHkiLCJfZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJvIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzIiwiaW5jbHVkZXMiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInByZWZpeCIsIm5vb3AiLCJzY3JvbGxUbyIsImVsZW1lbnQiLCJ0byIsImR1cmF0aW9uIiwicmVxQW5pbUZyYW1lIiwiZ2V0UmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwic2Nyb2xsVG9wIiwiZGlmZmVyZW5jZSIsInBlclRpY2siLCJUaW1lU2VsZWN0IiwiZm9yd2FyZFJlZiIsIl9yZWYiLCJyZWYiLCJjdXJyZW50SG91ciIsImN1cnJlbnRNaW51dGUiLCJkaXNhYmxlZEhvdXJzIiwiZGlzYWJsZWRNaW51dGVzIiwiZGlzYWJsZWRTZWNvbmRzIiwibWF4VGltZSIsIm1pblRpbWUiLCJvbkNoYW5nZSIsIm9ubHlIb3VyIiwic2l6ZSIsInNlbGVjdGVkVmFsdWUiLCJ0eXBlIiwib3RoZXJQcm9wcyIsInNlbGVjdFJlZiIsInVzZVJlZiIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJzZWxlY3QiLCJoYW5kbGVDbGljayIsIml0ZW0iLCJfdXNlQ29udGV4dCIsInVzZUNvbnRleHQiLCJDb25maWdDb250ZXh0Iiwic2l6ZUNvbnRleHQiLCJpc0Rpc2FibGVkIiwibWluSG91ciIsIm1pbk1pbnV0ZSIsIm1pblNlY29uZCIsIm1heEhvdXIiLCJtYXhNaW51dGUiLCJtYXhTZWNvbmQiLCJpc09ubHlIb3VyIiwidXBkYXRlU2Nyb2xsVG9wIiwiY3VycmVudCIsImFjdGl2ZUl0ZW0iLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiY29uY2F0Iiwib2Zmc2V0VG9wIiwidW5kZWZpbmVkIiwidXNlRWZmZWN0IiwiY2xhc3NTZXQiLCJjbGFzc05hbWVzIiwiZ2V0Q29tcHV0ZWRTaXplIiwiX2V4dHJhY3RITVNGcm9tVGltZSIsImV4dHJhY3RITVNGcm9tVGltZSIsImhvdXIiLCJtaW51dGUiLCJzZWNvbmQiLCJfZXh0cmFjdEhNU0Zyb21UaW1lMiIsIml0ZW1zIiwic2Vjb25kcyIsIm1pbnV0ZXMiLCJob3VycyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJtYXAiLCJkaXNhYmxlZCIsInBhcnNlSW50IiwiaXRlbUNsYXNzU2V0Iiwicm9sZSIsImtleSIsIm9uQ2xpY2siLCJkaXNwbGF5TmFtZSIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm51bWJlciIsImZ1bmMiLCJzdHJpbmciLCJhbnkiLCJib29sIiwib25lT2YiLCJkZWZhdWx0UHJvcHMiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtZW1vIl0sInNvdXJjZXMiOlsiLi4vLi4vY29tcG9uZW50cy90aW1lLXBpY2tlci9UaW1lU2VsZWN0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgZm9yd2FyZFJlZixcbiAgdXNlQ29udGV4dCxcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlUmVmLFxuICB1c2VFZmZlY3QsXG4gIG1lbW8sXG59IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCJcbmltcG9ydCB7IGdldFJlcXVlc3RBbmltYXRpb25GcmFtZSB9IGZyb20gXCIuLi9fdXRpbC9yYWZcIlxuaW1wb3J0IFwiLi9zdHlsZVwiXG5pbXBvcnQgeyBleHRyYWN0SE1TRnJvbVRpbWUsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzIH0gZnJvbSBcIi4vY29yZVwiXG5pbXBvcnQgeyBDb25maWdDb250ZXh0LCBnZXRDb21wdXRlZFNpemUgfSBmcm9tIFwiLi4vY29uZmlnLXByb3ZpZGVyXCJcblxuY29uc3QgcHJlZml4ID0gXCJhZHVpLXRpbWVcIlxuY29uc3Qgbm9vcCA9ICgpID0+IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRpbWVTZWxlY3RQcm9wcyB7XG4gIFtrZXk6IHN0cmluZ106IGFueVxuICBjdXJyZW50SG91cj86IG51bWJlciB8IG51bGxcbiAgY3VycmVudE1pbnV0ZT86IG51bWJlciB8IG51bGxcbiAgZGlzYWJsZWRIb3Vycz86IChob3VyPzogc3RyaW5nIHwgbnVsbCkgPT4gYm9vbGVhbiB8IHZvaWRcbiAgZGlzYWJsZWRNaW51dGVzPzogKG1pbnV0ZT86IHN0cmluZyB8IG51bGwpID0+IGJvb2xlYW4gfCB2b2lkXG4gIGRpc2FibGVkU2Vjb25kcz86IChzZWNvbmQ/OiBzdHJpbmcgfCBudWxsKSA9PiBib29sZWFuIHwgdm9pZFxuICBtYXhUaW1lPzogc3RyaW5nIHwgbnVsbFxuICBtaW5UaW1lPzogc3RyaW5nIHwgbnVsbFxuICBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcsIHR5cGU6IFwiaG91clwiIHwgXCJtaW51dGVcIiB8IFwic2Vjb25kXCIpID0+IHZvaWRcbiAgb25seUhvdXI/OiBib29sZWFuXG4gIHNpemU/OiBcIm1pbmlcIiB8IFwic21hbGxcIiB8IFwibWVkaXVtXCIgfCBcImxhcmdlXCJcbiAgc2VsZWN0ZWRWYWx1ZT86IG51bGwgfCBzdHJpbmdcbiAgdHlwZTogXCJob3VyXCIgfCBcIm1pbnV0ZVwiIHwgXCJzZWNvbmRcIlxufVxuXG5jb25zdCBzY3JvbGxUbyA9IChlbGVtZW50OiBIVE1MRGl2RWxlbWVudCwgdG86IG51bWJlciwgZHVyYXRpb246IG51bWJlcikgPT4ge1xuICBjb25zdCByZXFBbmltRnJhbWUgPSBnZXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKVxuXG4gIGlmIChkdXJhdGlvbiA8PSAwKSB7XG4gICAgZWxlbWVudC5zY3JvbGxUb3AgPSB0b1xuICAgIHJldHVyblxuICB9XG4gIGNvbnN0IGRpZmZlcmVuY2UgPSB0byAtIGVsZW1lbnQuc2Nyb2xsVG9wXG4gIGNvbnN0IHBlclRpY2sgPSAoZGlmZmVyZW5jZSAvIGR1cmF0aW9uKSAqIDEwXG5cbiAgcmVxQW5pbUZyYW1lKCgpID0+IHtcbiAgICBlbGVtZW50LnNjcm9sbFRvcCArPSBwZXJUaWNrXG4gICAgaWYgKGVsZW1lbnQuc2Nyb2xsVG9wID09PSB0bykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNjcm9sbFRvKGVsZW1lbnQsIHRvLCBkdXJhdGlvbiAtIDEwKVxuICB9KVxufVxuXG5jb25zdCBUaW1lU2VsZWN0OiBSZWFjdC5Gb3J3YXJkUmVmRXhvdGljQ29tcG9uZW50PFxuICBJVGltZVNlbGVjdFByb3BzICYgUmVhY3QuUmVmQXR0cmlidXRlczxhbnk+XG4+ID0gZm9yd2FyZFJlZihcbiAgKFxuICAgIHtcbiAgICAgIGN1cnJlbnRIb3VyLFxuICAgICAgY3VycmVudE1pbnV0ZSxcbiAgICAgIGRpc2FibGVkSG91cnMsXG4gICAgICBkaXNhYmxlZE1pbnV0ZXMsXG4gICAgICBkaXNhYmxlZFNlY29uZHMsXG4gICAgICBtYXhUaW1lLFxuICAgICAgbWluVGltZSxcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgb25seUhvdXIsXG4gICAgICBzaXplLFxuICAgICAgc2VsZWN0ZWRWYWx1ZSxcbiAgICAgIHR5cGUsXG4gICAgICAuLi5vdGhlclByb3BzXG4gICAgfTogSVRpbWVTZWxlY3RQcm9wcyxcbiAgICByZWZcbiAgKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0UmVmID0gdXNlUmVmPGFueT4obnVsbClcbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4gKHtcbiAgICAgIHNlbGVjdDogc2VsZWN0UmVmLFxuICAgIH0pKVxuXG4gICAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoaXRlbTogc3RyaW5nKSA9PiB7XG4gICAgICBvbkNoYW5nZShpdGVtLCB0eXBlKVxuICAgIH1cblxuICAgIGNvbnN0IHsgc2l6ZTogc2l6ZUNvbnRleHQgfSA9IHVzZUNvbnRleHQoQ29uZmlnQ29udGV4dClcblxuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSAoXG4gICAgICB2YWx1ZTogbnVtYmVyLFxuICAgICAgbWluSG91cjogbnVtYmVyLFxuICAgICAgbWluTWludXRlOiBudW1iZXIsXG4gICAgICBtaW5TZWNvbmQ6IG51bWJlcixcbiAgICAgIG1heEhvdXI6IG51bWJlcixcbiAgICAgIG1heE1pbnV0ZTogbnVtYmVyLFxuICAgICAgbWF4U2Vjb25kOiBudW1iZXIsXG4gICAgICBpc09ubHlIb3VyPzogYm9vbGVhblxuICAgICkgPT4ge1xuICAgICAgaWYgKHR5cGUgPT09IFwiaG91clwiKSB7XG4gICAgICAgIC8vIOi/memHjOimgeazqOaEj+aKiuaVtOeCuemAieaLqSAyNDowMCDnmoTmg4XlhrXnibnmrorlpITnkIZcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICB2YWx1ZSA8IG1pbkhvdXIgfHxcbiAgICAgICAgICB2YWx1ZSA+IChpc09ubHlIb3VyICYmICFtYXhUaW1lID8gXCIyNDowMFwiIDogbWF4SG91cilcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaWYgKHR5cGUgPT09IFwibWludXRlXCIpIHtcbiAgICAgICAgLy8g5Zyo5ZCM5LiA5Liq5bCP5pe25YaFXG4gICAgICAgIGlmIChtaW5Ib3VyID09PSBtYXhIb3VyKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlIDwgbWluTWludXRlIHx8IHZhbHVlID4gbWF4TWludXRlXG4gICAgICAgIH1cbiAgICAgICAgLy8g5Zyo5pyA5bCP55qE5bCP5pe25YaF5pe277yM6L+Z5pe25YCZ6KaB5oqKIG1pbk1pbnV0ZSDku6XkuIvnmoQgZGlzYWJsZWRcbiAgICAgICAgaWYgKG1pbkhvdXIgPT09IGN1cnJlbnRIb3VyKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlIDwgbWluTWludXRlXG4gICAgICAgIH1cbiAgICAgICAgLy8g5Zyo5pyA5aSn55qE5bCP5pe25YaF5pe277yM6L+Z5pe25YCZ6KaB5oqKIG1heE1pbnV0ZSDku6XkuIrnmoQgZGlzYWJsZWRcbiAgICAgICAgaWYgKG1heEhvdXIgPT09IGN1cnJlbnRIb3VyKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlID4gbWF4TWludXRlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSBcInNlY29uZFwiKSB7XG4gICAgICAgIC8vIOWcqOWQjOS4gOS4quWwj+aXtuWGhVxuICAgICAgICBpZiAobWluSG91ciA9PT0gbWF4SG91cikge1xuICAgICAgICAgIC8vIOWcqOWQjOS4gOS4quWIhumSn+WGhVxuICAgICAgICAgIGlmIChtaW5NaW51dGUgPT09IG1heE1pbnV0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlIDwgbWluU2Vjb25kIHx8IHZhbHVlID4gbWF4U2Vjb25kXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIOWcqOacgOWwj+eahOWIhumSn+WGheaXtu+8jOi/meaXtuWAmeimgeaKiiBtaW5TZWNvbmQg5Lul5LiL55qEIGRpc2FibGVkXG4gICAgICAgICAgaWYgKG1pbk1pbnV0ZSA9PT0gY3VycmVudE1pbnV0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlIDwgbWluU2Vjb25kXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIOWcqOacgOWkp+eahOWIhumSn+WGheaXtu+8jOi/meaXtuWAmeimgeaKiiBtYXhTZWNvbmQg5Lul5LiK55qEIGRpc2FibGVkXG4gICAgICAgICAgaWYgKG1heE1pbnV0ZSA9PT0gY3VycmVudE1pbnV0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlID4gbWF4U2Vjb25kXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIOWcqOacgOWwj+eahOWwj+aXtuWGheaXtu+8jOi/meaXtuWAmeimgeaKiiBtaW5NaW51dGUg5Lul5LiL55qEIGRpc2FibGVkXG4gICAgICAgIGlmIChtaW5Ib3VyID09PSBjdXJyZW50SG91cikge1xuICAgICAgICAgIC8vIOWcqOacgOWwj+eahOWwj+aXtuWGheaXtu+8jOi/meaXtuWAmeimgeaKiiBtaW5NaW51dGUg5Lul5LiL55qEIGRpc2FibGVkXG4gICAgICAgICAgaWYgKG1pbk1pbnV0ZSA9PT0gY3VycmVudE1pbnV0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlIDwgbWluU2Vjb25kXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIOWcqOacgOWkp+eahOWwj+aXtuWGheaXtu+8jOi/meaXtuWAmeimgeaKiiBtYXhNaW51dGUg5Lul5LiK55qEIGRpc2FibGVkXG4gICAgICAgIGlmIChtYXhIb3VyID09PSBjdXJyZW50SG91cikge1xuICAgICAgICAgIC8vIOWcqOacgOWkp+eahOWwj+aXtuWGheaXtu+8jOi/meaXtuWAmeimgeaKiiBtYXhNaW51dGUg5Lul5LiK55qEIGRpc2FibGVkXG4gICAgICAgICAgaWYgKG1heE1pbnV0ZSA9PT0gY3VycmVudE1pbnV0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlID4gbWF4U2Vjb25kXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZVNjcm9sbFRvcCA9IChkdXJhdGlvbjogbnVtYmVyKSA9PiB7XG4gICAgICBpZiAoc2VsZWN0UmVmPy5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUl0ZW06IFBhcnRpYWw8SFRNTERpdkVsZW1lbnQ+ID1cbiAgICAgICAgICBzZWxlY3RSZWYuY3VycmVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGAke3ByZWZpeH0tYWN0aXZlYClbMF1cbiAgICAgICAgaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICBjb25zdCB7IG9mZnNldFRvcCB9ID0gYWN0aXZlSXRlbVxuICAgICAgICAgIGlmIChvZmZzZXRUb3AgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKGR1cmF0aW9uKSB7XG4gICAgICAgICAgICAgIHNjcm9sbFRvKHNlbGVjdFJlZi5jdXJyZW50LCBvZmZzZXRUb3AsIGR1cmF0aW9uKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2VsZWN0UmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gb2Zmc2V0VG9wXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIHVwZGF0ZVNjcm9sbFRvcCgwKVxuICAgIH0sIFtdKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIHVwZGF0ZVNjcm9sbFRvcCgxMjApXG4gICAgfSwgW3NlbGVjdGVkVmFsdWVdKVxuXG4gICAgY29uc3QgY2xhc3NTZXQgPSBjbGFzc05hbWVzKFxuICAgICAgYCR7cHJlZml4fS10aW1lU2VsZWN0YCxcbiAgICAgIGAke3ByZWZpeH0tJHtnZXRDb21wdXRlZFNpemUoc2l6ZSwgc2l6ZUNvbnRleHQpfWAsXG4gICAgICB7XG4gICAgICAgIFtgJHtwcmVmaXh9LWludGVnZXJUaW1lU2VsZWN0YF06IG9ubHlIb3VyLFxuICAgICAgfVxuICAgIClcblxuICAgIGNvbnN0IHtcbiAgICAgIGhvdXI6IG1pbkhvdXIsXG4gICAgICBtaW51dGU6IG1pbk1pbnV0ZSxcbiAgICAgIHNlY29uZDogbWluU2Vjb25kLFxuICAgIH0gPSBleHRyYWN0SE1TRnJvbVRpbWUobWluVGltZSlcbiAgICBjb25zdCB7XG4gICAgICBob3VyOiBtYXhIb3VyLFxuICAgICAgbWludXRlOiBtYXhNaW51dGUsXG4gICAgICBzZWNvbmQ6IG1heFNlY29uZCxcbiAgICB9ID0gZXh0cmFjdEhNU0Zyb21UaW1lKG1heFRpbWUpXG5cbiAgICBsZXQgaXRlbXM6IHN0cmluZ1tdID0gW11cbiAgICBpZiAodHlwZSA9PT0gXCJzZWNvbmRcIikge1xuICAgICAgaXRlbXMgPSBzZWNvbmRzXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSBcIm1pbnV0ZVwiKSB7XG4gICAgICBpdGVtcyA9IG1pbnV0ZXNcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbXMgPSBob3Vyc1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NTZXR9IHJlZj17c2VsZWN0UmVmfSB7Li4ub3RoZXJQcm9wc30+XG4gICAgICAgIHtpdGVtcy5tYXAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZGlzYWJsZWQgPSBpc0Rpc2FibGVkKFxuICAgICAgICAgICAgcGFyc2VJbnQodmFsdWUsIDEwKSxcbiAgICAgICAgICAgIHBhcnNlSW50KG1pbkhvdXIgfHwgXCIwMFwiLCAxMCksXG4gICAgICAgICAgICBwYXJzZUludChtaW5NaW51dGUgfHwgXCIwMFwiLCAxMCksXG4gICAgICAgICAgICBwYXJzZUludChtaW5TZWNvbmQgfHwgXCIwMFwiLCAxMCksXG4gICAgICAgICAgICBwYXJzZUludChtYXhIb3VyIHx8IFwiMjRcIiwgMTApLFxuICAgICAgICAgICAgcGFyc2VJbnQobWF4TWludXRlIHx8IFwiNTlcIiwgMTApLFxuICAgICAgICAgICAgcGFyc2VJbnQobWF4U2Vjb25kIHx8IFwiNTlcIiwgMTApLFxuICAgICAgICAgICAgb25seUhvdXJcbiAgICAgICAgICApXG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAoKGRpc2FibGVkIHx8IChkaXNhYmxlZEhvdXJzICYmIGRpc2FibGVkSG91cnModmFsdWUpKSkgJiZcbiAgICAgICAgICAgICAgdHlwZSA9PT0gXCJob3VyXCIpIHx8XG4gICAgICAgICAgICAoZGlzYWJsZWRNaW51dGVzICYmIGRpc2FibGVkTWludXRlcyh2YWx1ZSkgJiYgdHlwZSA9PT0gXCJtaW51dGVcIikgfHxcbiAgICAgICAgICAgIChkaXNhYmxlZFNlY29uZHMgJiYgZGlzYWJsZWRTZWNvbmRzKHZhbHVlKSAmJiB0eXBlID09PSBcInNlY29uZFwiKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgLy8g5bCP5pe255qEIGRpc2FibGVkIOebtOaOpeS4jeaYvuekuu+8jOiAjOS4jeaYr+WBmiBkaXNhYmxlZCDlpITnkIZcbiAgICAgICAgICAgIC8vIOWIhumSn+eahCBkaXNhYmxlZCDmmL7npLrvvIzlpoLmnpzkvKDlhaXkuoYgZGlzYWJsZWRNaW51dGVzIOWImeS4jeaYvuekulxuICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBpdGVtQ2xhc3NTZXQgPSBjbGFzc05hbWVzKGAke3ByZWZpeH0taXRlbWAsIHtcbiAgICAgICAgICAgIFtgJHtwcmVmaXh9LWFjdGl2ZWBdOiBzZWxlY3RlZFZhbHVlID09PSB2YWx1ZSxcbiAgICAgICAgICAgIFtgJHtwcmVmaXh9LWRpc2FibGVkYF06IGRpc2FibGVkLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgcm9sZT1cIm5vbmVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2l0ZW1DbGFzc1NldH1cbiAgICAgICAgICAgICAga2V5PXt2YWx1ZX1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrKHZhbHVlKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge29ubHlIb3VyID8gYCR7dmFsdWV9OjAwYCA6IHZhbHVlfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKVxuICAgICAgICB9KX1cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxuKVxuXG5UaW1lU2VsZWN0LmRpc3BsYXlOYW1lID0gXCJUaW1lU2VsZWN0XCJcblxuVGltZVNlbGVjdC5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiDlvZPliY3lsI/ml7blgLxcbiAgICovXG4gIGN1cnJlbnRIb3VyOiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICog5b2T5YmN5YiG6ZKf5YC8XG4gICAqL1xuICBjdXJyZW50TWludXRlOiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICog5LiN5Y+v6YCJ55qE5bCP5pe2XG4gICAqL1xuICBkaXNhYmxlZEhvdXJzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIOS4jeWPr+mAieeahOWIhumSn1xuICAgKi9cbiAgZGlzYWJsZWRNaW51dGVzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIOS4jeWPr+mAieeahOenklxuICAgKi9cbiAgZGlzYWJsZWRTZWNvbmRzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIOWPr+mAieaXtumXtOauteeahOacgOWkp+WAvFxuICAgKi9cbiAgbWF4VGltZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIOWPr+mAieaXtumXtOauteeahOacgOWwj+WAvFxuICAgKi9cbiAgbWluVGltZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIOaUueWPmOmAieaLqeeahOWAvFxuICAgKi9cbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5hbnksXG4gIC8qKlxuICAgKiDliKTmlq3mmK/lkKbmmK/mlbTngrlcbiAgICovXG4gIG9ubHlIb3VyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOW3sue7j+mAieaLqeeahOWAvFxuICAgKi9cbiAgc2VsZWN0ZWRWYWx1ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIOiuvue9ruWwuuWvuFxuICAgKi9cbiAgc2l6ZTogUHJvcFR5cGVzLm9uZU9mKFtcIm1pbmlcIiwgXCJzbWFsbFwiLCBcIm1lZGl1bVwiLCBcImxhcmdlXCJdKSxcbiAgLyoqXG4gICAqIOWIpOaWremAieaLqeahhueahOexu+Wei1xuICAgKi9cbiAgdHlwZTogUHJvcFR5cGVzLmFueSxcbn1cblxuVGltZVNlbGVjdC5kZWZhdWx0UHJvcHMgPSB7XG4gIGN1cnJlbnRIb3VyOiBudWxsLFxuICBjdXJyZW50TWludXRlOiBudWxsLFxuICBkaXNhYmxlZEhvdXJzOiBub29wLFxuICBkaXNhYmxlZE1pbnV0ZXM6IG5vb3AsXG4gIGRpc2FibGVkU2Vjb25kczogbm9vcCxcbiAgbWF4VGltZTogXCIyNDowMFwiLFxuICBtaW5UaW1lOiBcIjAwOjAwXCIsXG4gIG9uQ2hhbmdlOiBub29wLFxuICBvbmx5SG91cjogZmFsc2UsXG4gIHNlbGVjdGVkVmFsdWU6IG51bGwsXG4gIHNpemU6IFwic21hbGxcIixcbiAgdHlwZTogXCJob3VyXCIsXG59XG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oVGltZVNlbGVjdClcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQVFBLElBQUFDLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFJLElBQUEsR0FB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