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>

200 lines (177 loc) 22.6 kB
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); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } import * as React from "react"; import TestRenderer from "react-test-renderer"; import { act } from "react-dom/test-utils"; import { mount } from "enzyme"; import TimePicker from ".."; var TimePickerTest = function (_React$Component) { _inherits(TimePickerTest, _React$Component); var _super = _createSuper(TimePickerTest); function TimePickerTest() { var _this; _classCallCheck(this, TimePickerTest); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _super.call.apply(_super, [this].concat(args)); _this.state = { value: "09:00" }; return _this; } _createClass(TimePickerTest, [{ key: "render", value: function render() { var _this2 = this; var value = this.state.value; return React.createElement("div", null, React.createElement(TimePicker, { closeOnSelect: true, value: value, onChange: function onChange(val) { return _this2.setState({ value: val }); }, minTime: "08:40", maxTime: "09:20", ref: function ref(node) { if (node) { _this2.picker = node; } return null; } })); } }]); return TimePickerTest; }(React.Component); function timeout(ms) { return function (done) { setTimeout(done, ms); }; } describe("TimePicker", function () { beforeAll(function () { jest.useFakeTimers(); }); afterAll(function () { jest.useRealTimers(); }); it("是否正确渲染", function () { var wrapper = TestRenderer.create(React.createElement(TimePicker, null)); expect(wrapper).toMatchSnapshot(); }); it("各种情况快照核对", function () { var wrapper0 = TestRenderer.create(React.createElement(TimePicker, { size: "mini", theme: "light", onlyHour: true, disabled: true })); expect(wrapper0).toMatchSnapshot(); }); it("输入事件", function () { var wrapper = mount(React.createElement(TimePicker, null)); var input = wrapper.find("input"); input.simulate("focus"); expect(wrapper.find("Popover").props().visible).toEqual(true); input.simulate("change", { target: { value: " " } }); input.simulate("change", { target: { value: "16:07" } }); expect(wrapper.find("Input").props().value).toEqual("16:07"); input.simulate("keydown", { keyCode: 13 }); expect(wrapper.find("Popover").props().visible).toEqual(false); }); it("点击事件", function () { var wrapper = mount(React.createElement(TimePickerTest, null)); expect(wrapper.find("Popover").props().visible).toEqual(false); wrapper.find("input").simulate("focus"); expect(wrapper.find("Popover").props().visible).toEqual(true); act(function () { wrapper.find(".adui-time-item").at(0).simulate("click"); jest.advanceTimersByTime(50); wrapper.update(); expect(wrapper.find("Input").props().value).toEqual("08:40"); wrapper.find(".adui-time-item").at(42).simulate("click"); wrapper.update(); jest.advanceTimersByTime(50); expect(wrapper.find("Input").props().value).toEqual("08:40"); wrapper.find("input").simulate("change", { target: { value: "07:40" } }); wrapper.find("input").simulate("change", { target: { value: "08:4" } }); wrapper.update(); expect(wrapper.find("Input").props().value).toEqual("08:40"); }); }); it("内部驱动", function () { var wrapper = mount(React.createElement(TimePicker, { defaultValue: "09:20" })); var input = wrapper.find("input"); input.simulate("focus"); expect(wrapper.find("Popover").props().visible).toEqual(true); wrapper.find(".adui-time-item").at(0).simulate("click"); expect(wrapper.find("Input").props().value).toEqual("00:20"); }); it("外部控制", function () { var wrapper = mount(React.createElement(TimePicker, { value: "09:00", onlyHour: true })); var input = wrapper.find("input"); input.simulate("focus"); expect(wrapper.find("Popover").props().visible).toEqual(true); wrapper.find(".adui-time-item").at(0).simulate("click"); expect(wrapper.find("Input").props().value).toEqual("09:00"); }); it("测试禁用", function () { var wrapper = mount(React.createElement(TimePicker, { disabled: true })); var input = wrapper.find("input"); input.simulate("click"); expect(wrapper.find("Popover").props().visible).toEqual(false); }); it("测试最大时间和最小时间", function () { var wrapper = mount(React.createElement(TimePicker, { minTime: "09:00", maxTime: "09:20", defaultValue: "09:10" })); var input = wrapper.find("input"); input.simulate("change", { target: { value: "09:30" } }); input.simulate("focus"); expect(wrapper.find("Popover").props().visible).toEqual(true); }); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlRlc3RSZW5kZXJlciIsImFjdCIsIm1vdW50IiwiVGltZVBpY2tlciIsIlRpbWVQaWNrZXJUZXN0Iiwic3RhdGUiLCJ2YWx1ZSIsInZhbCIsInNldFN0YXRlIiwibm9kZSIsInBpY2tlciIsIkNvbXBvbmVudCIsInRpbWVvdXQiLCJtcyIsImRvbmUiLCJzZXRUaW1lb3V0IiwiZGVzY3JpYmUiLCJiZWZvcmVBbGwiLCJqZXN0IiwidXNlRmFrZVRpbWVycyIsImFmdGVyQWxsIiwidXNlUmVhbFRpbWVycyIsIml0Iiwid3JhcHBlciIsImNyZWF0ZSIsImV4cGVjdCIsInRvTWF0Y2hTbmFwc2hvdCIsIndyYXBwZXIwIiwiaW5wdXQiLCJmaW5kIiwic2ltdWxhdGUiLCJwcm9wcyIsInZpc2libGUiLCJ0b0VxdWFsIiwidGFyZ2V0Iiwia2V5Q29kZSIsImF0IiwiYWR2YW5jZVRpbWVyc0J5VGltZSIsInVwZGF0ZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvdGltZS1waWNrZXIvX190ZXN0c19fL2luZGV4LnRlc3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1ub2NoZWNrXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFRlc3RSZW5kZXJlciBmcm9tIFwicmVhY3QtdGVzdC1yZW5kZXJlclwiXG5pbXBvcnQgeyBhY3QgfSBmcm9tIFwicmVhY3QtZG9tL3Rlc3QtdXRpbHNcIlxuaW1wb3J0IHsgbW91bnQgfSBmcm9tIFwiZW56eW1lXCJcbmltcG9ydCBhc3luYyBmcm9tIFwiYXN5bmNcIlxuaW1wb3J0IFRpbWVQaWNrZXIgZnJvbSBcIi4uXCJcblxuY2xhc3MgVGltZVBpY2tlclRlc3QgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0ZSA9IHtcbiAgICB2YWx1ZTogXCIwOTowMFwiLFxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgdmFsdWUgfSA9IHRoaXMuc3RhdGVcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdj5cbiAgICAgICAgPFRpbWVQaWNrZXJcbiAgICAgICAgICBjbG9zZU9uU2VsZWN0XG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXsodmFsKSA9PiB0aGlzLnNldFN0YXRlKHsgdmFsdWU6IHZhbCB9KX1cbiAgICAgICAgICBtaW5UaW1lPVwiMDg6NDBcIlxuICAgICAgICAgIG1heFRpbWU9XCIwOToyMFwiXG4gICAgICAgICAgcmVmPXsobm9kZSkgPT4ge1xuICAgICAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgICAgdGhpcy5waWNrZXIgPSBub2RlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cbn1cblxuZnVuY3Rpb24gdGltZW91dChtczogbnVtYmVyKSB7XG4gIHJldHVybiAoZG9uZTogKCkgPT4gdm9pZCkgPT4ge1xuICAgIHNldFRpbWVvdXQoZG9uZSwgbXMpXG4gIH1cbn1cblxuZGVzY3JpYmUoXCJUaW1lUGlja2VyXCIsICgpID0+IHtcbiAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICBqZXN0LnVzZUZha2VUaW1lcnMoKVxuICB9KVxuXG4gIGFmdGVyQWxsKCgpID0+IHtcbiAgICBqZXN0LnVzZVJlYWxUaW1lcnMoKVxuICB9KVxuXG4gIGl0KFwi5piv5ZCm5q2j56Gu5riy5p+TXCIsICgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyID0gVGVzdFJlbmRlcmVyLmNyZWF0ZSg8VGltZVBpY2tlciAvPilcbiAgICBleHBlY3Qod3JhcHBlcikudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcblxuICBpdChcIuWQhOenjeaDheWGteW/q+eFp+aguOWvuVwiLCAoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlcjAgPSBUZXN0UmVuZGVyZXIuY3JlYXRlKFxuICAgICAgPFRpbWVQaWNrZXIgc2l6ZT1cIm1pbmlcIiB0aGVtZT1cImxpZ2h0XCIgb25seUhvdXIgZGlzYWJsZWQgLz5cbiAgICApXG4gICAgZXhwZWN0KHdyYXBwZXIwKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuXG4gIGl0KFwi6L6T5YWl5LqL5Lu2XCIsICgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoPFRpbWVQaWNrZXIgLz4pXG4gICAgY29uc3QgaW5wdXQgPSB3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKVxuICAgIGlucHV0LnNpbXVsYXRlKFwiZm9jdXNcIilcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiUG9wb3ZlclwiKS5wcm9wcygpLnZpc2libGUpLnRvRXF1YWwodHJ1ZSlcbiAgICBpbnB1dC5zaW11bGF0ZShcImNoYW5nZVwiLCB7IHRhcmdldDogeyB2YWx1ZTogXCIgXCIgfSB9KVxuICAgIGlucHV0LnNpbXVsYXRlKFwiY2hhbmdlXCIsIHsgdGFyZ2V0OiB7IHZhbHVlOiBcIjE2OjA3XCIgfSB9KVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJJbnB1dFwiKS5wcm9wcygpLnZhbHVlKS50b0VxdWFsKFwiMTY6MDdcIilcbiAgICBpbnB1dC5zaW11bGF0ZShcImtleWRvd25cIiwgeyBrZXlDb2RlOiAxMyB9KVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJQb3BvdmVyXCIpLnByb3BzKCkudmlzaWJsZSkudG9FcXVhbChmYWxzZSlcbiAgfSlcblxuICBpdChcIueCueWHu+S6i+S7tlwiLCAoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlciA9IG1vdW50KDxUaW1lUGlja2VyVGVzdCAvPilcblxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJQb3BvdmVyXCIpLnByb3BzKCkudmlzaWJsZSkudG9FcXVhbChmYWxzZSlcblxuICAgIHdyYXBwZXIuZmluZChcImlucHV0XCIpLnNpbXVsYXRlKFwiZm9jdXNcIilcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiUG9wb3ZlclwiKS5wcm9wcygpLnZpc2libGUpLnRvRXF1YWwodHJ1ZSlcblxuICAgIGFjdCgoKSA9PiB7XG4gICAgICB3cmFwcGVyLmZpbmQoXCIuYWR1aS10aW1lLWl0ZW1cIikuYXQoMCkuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgICAgamVzdC5hZHZhbmNlVGltZXJzQnlUaW1lKDUwKVxuICAgICAgd3JhcHBlci51cGRhdGUoKVxuICAgICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIklucHV0XCIpLnByb3BzKCkudmFsdWUpLnRvRXF1YWwoXCIwODo0MFwiKVxuXG4gICAgICB3cmFwcGVyLmZpbmQoXCIuYWR1aS10aW1lLWl0ZW1cIikuYXQoNDIpLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICAgIHdyYXBwZXIudXBkYXRlKClcbiAgICAgIGplc3QuYWR2YW5jZVRpbWVyc0J5VGltZSg1MClcbiAgICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJJbnB1dFwiKS5wcm9wcygpLnZhbHVlKS50b0VxdWFsKFwiMDg6NDBcIilcblxuICAgICAgd3JhcHBlci5maW5kKFwiaW5wdXRcIikuc2ltdWxhdGUoXCJjaGFuZ2VcIiwgeyB0YXJnZXQ6IHsgdmFsdWU6IFwiMDc6NDBcIiB9IH0pXG4gICAgICB3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKS5zaW11bGF0ZShcImNoYW5nZVwiLCB7IHRhcmdldDogeyB2YWx1ZTogXCIwODo0XCIgfSB9KVxuICAgICAgd3JhcHBlci51cGRhdGUoKVxuICAgICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIklucHV0XCIpLnByb3BzKCkudmFsdWUpLnRvRXF1YWwoXCIwODo0MFwiKVxuICAgIH0pXG5cbiAgICAvLyBhY3QoKCkgPT4ge1xuICAgIC8vICAgd3JhcHBlclxuICAgIC8vICAgICAuZmluZChcIi5hZHVpLXRpbWUtaXRlbVwiKVxuICAgIC8vICAgICAuYXQoMSlcbiAgICAvLyAgICAgLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICAvLyAgIHdyYXBwZXIudXBkYXRlKClcbiAgICAvLyAgIGplc3QuYWR2YW5jZVRpbWVyc0J5VGltZSgzNTApXG4gICAgLy8gICBleHBlY3Qod3JhcHBlci5maW5kKFwiSW5wdXRcIikucHJvcHMoKS52YWx1ZSkudG9FcXVhbChcIjA5OjIwXCIpXG4gICAgLy8gICBkb25lKClcbiAgICAvLyB9KVxuXG4gICAgLy8gYWN0KCgpID0+IHtcbiAgICAvLyAgIHdyYXBwZXJcbiAgICAvLyAgICAgLmZpbmQoXCIuYWR1aS10aW1lLWl0ZW1cIilcbiAgICAvLyAgICAgLmF0KDEpXG4gICAgLy8gICAgIC5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgLy8gICB3cmFwcGVyLnVwZGF0ZSgpXG4gICAgLy8gICBleHBlY3Qod3JhcHBlci5maW5kKFwiSW5wdXRcIikucHJvcHMoKS52YWx1ZSkudG9FcXVhbChcIjA5OjIwXCIpXG4gICAgLy8gfSlcblxuICAgIC8vIGFjdCgoKSA9PiB7XG4gICAgLy8gICB3cmFwcGVyXG4gICAgLy8gICAgIC5maW5kKFwiLmFkdWktdGltZS1pdGVtXCIpXG4gICAgLy8gICAgIC5hdCgwKVxuICAgIC8vICAgICAuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIC8vICAgd3JhcHBlci51cGRhdGUoKVxuICAgIC8vICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIklucHV0XCIpLnByb3BzKCkudmFsdWUpLnRvRXF1YWwoXCIwODo0MFwiKVxuICAgIC8vIH0pXG4gIH0pXG5cbiAgaXQoXCLlhoXpg6jpqbHliqhcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBtb3VudCg8VGltZVBpY2tlciBkZWZhdWx0VmFsdWU9XCIwOToyMFwiIC8+KVxuICAgIGNvbnN0IGlucHV0ID0gd3JhcHBlci5maW5kKFwiaW5wdXRcIilcbiAgICBpbnB1dC5zaW11bGF0ZShcImZvY3VzXCIpXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIlBvcG92ZXJcIikucHJvcHMoKS52aXNpYmxlKS50b0VxdWFsKHRydWUpXG4gICAgd3JhcHBlci5maW5kKFwiLmFkdWktdGltZS1pdGVtXCIpLmF0KDApLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiSW5wdXRcIikucHJvcHMoKS52YWx1ZSkudG9FcXVhbChcIjAwOjIwXCIpXG4gIH0pXG5cbiAgaXQoXCLlpJbpg6jmjqfliLZcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBtb3VudCg8VGltZVBpY2tlciB2YWx1ZT1cIjA5OjAwXCIgb25seUhvdXIgLz4pXG4gICAgY29uc3QgaW5wdXQgPSB3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKVxuICAgIGlucHV0LnNpbXVsYXRlKFwiZm9jdXNcIilcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiUG9wb3ZlclwiKS5wcm9wcygpLnZpc2libGUpLnRvRXF1YWwodHJ1ZSlcbiAgICB3cmFwcGVyLmZpbmQoXCIuYWR1aS10aW1lLWl0ZW1cIikuYXQoMCkuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJJbnB1dFwiKS5wcm9wcygpLnZhbHVlKS50b0VxdWFsKFwiMDk6MDBcIilcbiAgfSlcblxuICBpdChcIua1i+ivleemgeeUqFwiLCAoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlciA9IG1vdW50KDxUaW1lUGlja2VyIGRpc2FibGVkIC8+KVxuICAgIGNvbnN0IGlucHV0ID0gd3JhcHBlci5maW5kKFwiaW5wdXRcIilcbiAgICBpbnB1dC5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIlBvcG92ZXJcIikucHJvcHMoKS52aXNpYmxlKS50b0VxdWFsKGZhbHNlKVxuICB9KVxuXG4gIGl0KFwi5rWL6K+V5pyA5aSn5pe26Ze05ZKM5pyA5bCP5pe26Ze0XCIsICgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoXG4gICAgICA8VGltZVBpY2tlciBtaW5UaW1lPVwiMDk6MDBcIiBtYXhUaW1lPVwiMDk6MjBcIiBkZWZhdWx0VmFsdWU9XCIwOToxMFwiIC8+XG4gICAgKVxuICAgIGNvbnN0IGlucHV0ID0gd3JhcHBlci5maW5kKFwiaW5wdXRcIilcbiAgICBpbnB1dC5zaW11bGF0ZShcImNoYW5nZVwiLCB7IHRhcmdldDogeyB2YWx1ZTogXCIwOTozMFwiIH0gfSlcbiAgICBpbnB1dC5zaW11bGF0ZShcImZvY3VzXCIpXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIlBvcG92ZXJcIikucHJvcHMoKS52aXNpYmxlKS50b0VxdWFsKHRydWUpXG4gIH0pXG59KVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsT0FBTyxLQUFLQSxLQUFaLE1BQXVCLE9BQXZCO0FBQ0EsT0FBT0MsWUFBUCxNQUF5QixxQkFBekI7QUFDQSxTQUFTQyxHQUFULFFBQW9CLHNCQUFwQjtBQUNBLFNBQVNDLEtBQVQsUUFBc0IsUUFBdEI7QUFFQSxPQUFPQyxVQUFQLE1BQXVCLElBQXZCOztJQUVNQyxjOzs7Ozs7Ozs7Ozs7Ozs7VUFDSkMsSyxHQUFRO01BQ05DLEtBQUssRUFBRTtJQURELEM7Ozs7OztXQUlSLGtCQUFTO01BQUE7O01BQ1AsSUFBUUEsS0FBUixHQUFrQixLQUFLRCxLQUF2QixDQUFRQyxLQUFSO01BQ0EsT0FDRSxpQ0FDRSxvQkFBQyxVQUFEO1FBQ0UsYUFBYSxNQURmO1FBRUUsS0FBSyxFQUFFQSxLQUZUO1FBR0UsUUFBUSxFQUFFLGtCQUFDQyxHQUFEO1VBQUEsT0FBUyxNQUFJLENBQUNDLFFBQUwsQ0FBYztZQUFFRixLQUFLLEVBQUVDO1VBQVQsQ0FBZCxDQUFUO1FBQUEsQ0FIWjtRQUlFLE9BQU8sRUFBQyxPQUpWO1FBS0UsT0FBTyxFQUFDLE9BTFY7UUFNRSxHQUFHLEVBQUUsYUFBQ0UsSUFBRCxFQUFVO1VBQ2IsSUFBSUEsSUFBSixFQUFVO1lBQ1IsTUFBSSxDQUFDQyxNQUFMLEdBQWNELElBQWQ7VUFDRDs7VUFDRCxPQUFPLElBQVA7UUFDRDtNQVhILEVBREYsQ0FERjtJQWlCRDs7OztFQXhCMEJWLEtBQUssQ0FBQ1ksUzs7QUEyQm5DLFNBQVNDLE9BQVQsQ0FBaUJDLEVB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