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>

248 lines (196 loc) 30.8 kB
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 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(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } 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 _classNames2; 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"), (_classNames2 = {}, _defineProperty(_classNames2, "".concat(prefix, "-active"), selectedValue === value), _defineProperty(_classNames2, "".concat(prefix, "-disabled"), disabled), _classNames2)); 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 = (0, _react.memo)(TimeSelect); exports["default"] = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwcmVmaXgiLCJub29wIiwic2Nyb2xsVG8iLCJlbGVtZW50IiwidG8iLCJkdXJhdGlvbiIsInJlcUFuaW1GcmFtZSIsImdldFJlcXVlc3RBbmltYXRpb25GcmFtZSIsInNjcm9sbFRvcCIsImRpZmZlcmVuY2UiLCJwZXJUaWNrIiwiVGltZVNlbGVjdCIsImZvcndhcmRSZWYiLCJyZWYiLCJjdXJyZW50SG91ciIsImN1cnJlbnRNaW51dGUiLCJkaXNhYmxlZEhvdXJzIiwiZGlzYWJsZWRNaW51dGVzIiwiZGlzYWJsZWRTZWNvbmRzIiwibWF4VGltZSIsIm1pblRpbWUiLCJvbkNoYW5nZSIsIm9ubHlIb3VyIiwic2l6ZSIsInNlbGVjdGVkVmFsdWUiLCJ0eXBlIiwib3RoZXJQcm9wcyIsInNlbGVjdFJlZiIsInVzZVJlZiIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJzZWxlY3QiLCJoYW5kbGVDbGljayIsIml0ZW0iLCJ1c2VDb250ZXh0IiwiQ29uZmlnQ29udGV4dCIsInNpemVDb250ZXh0IiwiaXNEaXNhYmxlZCIsInZhbHVlIiwibWluSG91ciIsIm1pbk1pbnV0ZSIsIm1pblNlY29uZCIsIm1heEhvdXIiLCJtYXhNaW51dGUiLCJtYXhTZWNvbmQiLCJpc09ubHlIb3VyIiwidXBkYXRlU2Nyb2xsVG9wIiwiY3VycmVudCIsImFjdGl2ZUl0ZW0iLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwib2Zmc2V0VG9wIiwidW5kZWZpbmVkIiwidXNlRWZmZWN0IiwiY2xhc3NTZXQiLCJjbGFzc05hbWVzIiwiZ2V0Q29tcHV0ZWRTaXplIiwiZXh0cmFjdEhNU0Zyb21UaW1lIiwiaG91ciIsIm1pbnV0ZSIsInNlY29uZCIsIml0ZW1zIiwic2Vjb25kcyIsIm1pbnV0ZXMiLCJob3VycyIsIm1hcCIsImRpc2FibGVkIiwicGFyc2VJbnQiLCJpdGVtQ2xhc3NTZXQiLCJkaXNwbGF5TmFtZSIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm51bWJlciIsImZ1bmMiLCJzdHJpbmciLCJhbnkiLCJib29sIiwib25lT2YiLCJkZWZhdWx0UHJvcHMiLCJtZW1vIl0sInNvdXJjZXMiOlsiLi4vLi4vY29tcG9uZW50cy90aW1lLXBpY2tlci9UaW1lU2VsZWN0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgZm9yd2FyZFJlZixcbiAgdXNlQ29udGV4dCxcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlUmVmLFxuICB1c2VFZmZlY3QsXG4gIG1lbW8sXG59IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCJcbmltcG9ydCB7IGdldFJlcXVlc3RBbmltYXRpb25GcmFtZSB9IGZyb20gXCIuLi9fdXRpbC9yYWZcIlxuaW1wb3J0IFwiLi9zdHlsZVwiXG5pbXBvcnQgeyBleHRyYWN0SE1TRnJvbVRpbWUsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzIH0gZnJvbSBcIi4vY29yZVwiXG5pbXBvcnQgeyBDb25maWdDb250ZXh0LCBnZXRDb21wdXRlZFNpemUgfSBmcm9tIFwiLi4vY29uZmlnLXByb3ZpZGVyXCJcblxuY29uc3QgcHJlZml4ID0gXCJhZHVpLXRpbWVcIlxuY29uc3Qgbm9vcCA9ICgpID0+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+Wei1xuICAgKi9cbiAgdHlwZTogUHJvcFR5cGVzLmFueSxcbn1cblxuVGltZVNlbGVjdC5kZWZhdWx0UHJvcHMgPSB7XG4gIGN1cnJlbnRIb3VyOiBudWxsLFxuICBjdXJyZW50TWludXRlOiBudWxsLFxuICBkaXNhYmxlZEhvdXJzOiBub29wLFxuICBkaXNhYmxlZE1pbnV0ZXM6IG5vb3AsXG4gIGRpc2FibGVkU2Vjb25kczogbm9vcCxcbiAgbWF4VGltZTogXCIyNDowMFwiLFxuICBtaW5UaW1lOiBcIjAwOjAwXCIsXG4gIG9uQ2hhbmdlOiBub29wLFxuICBvbmx5SG91cjogZmFsc2UsXG4gIHNlbGVjdGVkVmFsdWU6IG51bGwsXG4gIHNpemU6IFwic21hbGxcIixcbiAgdHlwZTogXCJob3VyXCIsXG59XG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oVGltZVNlbGVjdClcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBUUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7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