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>
106 lines (97 loc) • 15.3 kB
JavaScript
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _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(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
import React, { useState } from "react";
import TestRenderer from "react-test-renderer";
import { mount } from "enzyme";
import Checkbox from "..";
var CheckboxMounter = function CheckboxMounter() {
var _useState = useState(false),
_useState2 = _slicedToArray(_useState, 2),
checked = _useState2[0],
setChecked = _useState2[1];
return React.createElement(Checkbox, {
checked: checked,
onChange: function onChange(bool) {
return setChecked(bool);
}
});
};
describe("Checkbox", function () {
it("Checkbox 是否正确渲染", function () {
var wrapper = TestRenderer.create(React.createElement(Checkbox, null, "children"));
expect(wrapper).toMatchSnapshot();
});
it("Checkbox 是否能内部驱动", function () {
var onChange = jest.fn();
var wrapper = mount(React.createElement(Checkbox, {
onChange: onChange
}));
wrapper.find("label").at(0).simulate("click");
expect(onChange).toHaveBeenCalledWith(true);
});
it("Checkbox 是否能受外部控制", function () {
var onChange = jest.fn();
var wrapper0 = mount(React.createElement(Checkbox, {
checked: false,
onChange: onChange
}));
var wrapper1 = mount(React.createElement(Checkbox, {
checked: true,
onChange: onChange
}));
var wrapper2 = mount(React.createElement(CheckboxMounter, null));
var firstCheckbox = wrapper0.find("label").at(0);
var secondCheckbox = wrapper1.find("label").at(0);
var thirdCheckbox = wrapper2.find("label").at(0);
firstCheckbox.simulate("click");
expect(onChange).toHaveBeenCalledWith(true);
expect(wrapper0.find("label").at(0).props().className.includes("checked")).toEqual(false);
secondCheckbox.simulate("click");
expect(onChange).toHaveBeenCalledWith(false);
expect(wrapper1.find("label").at(0).props().className.includes("checked")).toEqual(true);
thirdCheckbox.simulate("click");
expect(wrapper2.find("label").at(0).props().className.includes("checked")).toEqual(true);
thirdCheckbox.simulate("click");
expect(wrapper2.find("label").at(0).props().className.includes("checked")).toEqual(false);
});
it("Checkbox 禁用状态是否可用", function () {
var onChange = jest.fn();
var wrapper0 = mount(React.createElement(Checkbox, {
disabled: true,
onChange: onChange
}));
var wrapper1 = mount(React.createElement(Checkbox.Group, {
disabled: true,
onChange: onChange
}, React.createElement(Checkbox, null)));
wrapper0.find("label").at(0).simulate("click");
expect(onChange).not.toHaveBeenCalled();
wrapper1.find("label").at(0).simulate("click");
expect(onChange).not.toHaveBeenCalled();
});
it("Checkbox 是否能响应 onClick", function () {
var onClick = jest.fn();
var wrapper = mount(React.createElement(Checkbox, {
onClick: onClick
}));
wrapper.find("label").at(0).simulate("click");
expect(onClick).toHaveBeenCalled();
});
it("Checkbox 是否能响应 enter", function () {
var onChange = jest.fn();
var wrapper = mount(React.createElement(Checkbox, {
onChange: onChange
}));
wrapper.find("label").at(0).simulate("keydown", {
key: "enter",
keyCode: 13
});
expect(wrapper.find("label").at(0).props().className.includes("checked")).toEqual(true);
expect(onChange).toHaveBeenCalledWith(true);
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwiVGVzdFJlbmRlcmVyIiwibW91bnQiLCJDaGVja2JveCIsIkNoZWNrYm94TW91bnRlciIsImNoZWNrZWQiLCJzZXRDaGVja2VkIiwiYm9vbCIsImRlc2NyaWJlIiwiaXQiLCJ3cmFwcGVyIiwiY3JlYXRlIiwiZXhwZWN0IiwidG9NYXRjaFNuYXBzaG90Iiwib25DaGFuZ2UiLCJqZXN0IiwiZm4iLCJmaW5kIiwiYXQiLCJzaW11bGF0ZSIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwid3JhcHBlcjAiLCJ3cmFwcGVyMSIsIndyYXBwZXIyIiwiZmlyc3RDaGVja2JveCIsInNlY29uZENoZWNrYm94IiwidGhpcmRDaGVja2JveCIsInByb3BzIiwiY2xhc3NOYW1lIiwiaW5jbHVkZXMiLCJ0b0VxdWFsIiwibm90IiwidG9IYXZlQmVlbkNhbGxlZCIsIm9uQ2xpY2siLCJrZXkiLCJrZXlDb2RlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vY29tcG9uZW50cy9jaGVja2JveC9fX3Rlc3RzX18vY2hlY2tib3gudGVzdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBUZXN0UmVuZGVyZXIgZnJvbSBcInJlYWN0LXRlc3QtcmVuZGVyZXJcIlxuaW1wb3J0IHsgbW91bnQgfSBmcm9tIFwiZW56eW1lXCJcbmltcG9ydCBDaGVja2JveCBmcm9tIFwiLi5cIlxuXG5jb25zdCBDaGVja2JveE1vdW50ZXIgPSAoKSA9PiB7XG4gIGNvbnN0IFtjaGVja2VkLCBzZXRDaGVja2VkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICByZXR1cm4gPENoZWNrYm94IGNoZWNrZWQ9e2NoZWNrZWR9IG9uQ2hhbmdlPXsoYm9vbCkgPT4gc2V0Q2hlY2tlZChib29sKX0gLz5cbn1cblxuZGVzY3JpYmUoXCJDaGVja2JveFwiLCAoKSA9PiB7XG4gIGl0KFwiQ2hlY2tib3gg5piv5ZCm5q2j56Gu5riy5p+TXCIsICgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyID0gVGVzdFJlbmRlcmVyLmNyZWF0ZSg8Q2hlY2tib3g+Y2hpbGRyZW48L0NoZWNrYm94PilcbiAgICBleHBlY3Qod3JhcHBlcikudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcblxuICBpdChcIkNoZWNrYm94IOaYr+WQpuiDveWGhemDqOmpseWKqFwiLCAoKSA9PiB7XG4gICAgY29uc3Qgb25DaGFuZ2UgPSBqZXN0LmZuKClcbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoPENoZWNrYm94IG9uQ2hhbmdlPXtvbkNoYW5nZX0gLz4pXG4gICAgd3JhcHBlci5maW5kKFwibGFiZWxcIikuYXQoMCkuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgodHJ1ZSlcbiAgfSlcblxuICBpdChcIkNoZWNrYm94IOaYr+WQpuiDveWPl+WklumDqOaOp+WItlwiLCAoKSA9PiB7XG4gICAgY29uc3Qgb25DaGFuZ2UgPSBqZXN0LmZuKClcbiAgICBjb25zdCB3cmFwcGVyMCA9IG1vdW50KDxDaGVja2JveCBjaGVja2VkPXtmYWxzZX0gb25DaGFuZ2U9e29uQ2hhbmdlfSAvPilcbiAgICBjb25zdCB3cmFwcGVyMSA9IG1vdW50KDxDaGVja2JveCBjaGVja2VkIG9uQ2hhbmdlPXtvbkNoYW5nZX0gLz4pXG5cbiAgICBjb25zdCB3cmFwcGVyMiA9IG1vdW50KDxDaGVja2JveE1vdW50ZXIgLz4pXG4gICAgY29uc3QgZmlyc3RDaGVja2JveCA9IHdyYXBwZXIwLmZpbmQoXCJsYWJlbFwiKS5hdCgwKVxuICAgIGNvbnN0IHNlY29uZENoZWNrYm94ID0gd3JhcHBlcjEuZmluZChcImxhYmVsXCIpLmF0KDApXG4gICAgY29uc3QgdGhpcmRDaGVja2JveCA9IHdyYXBwZXIyLmZpbmQoXCJsYWJlbFwiKS5hdCgwKVxuICAgIC8qKlxuICAgICAqIDEuIOehruWumiBvbkNoYW5nZSDov5jmmK/kvJrkvKDlm57lupTor6Xlj5jljJbnmoTlgLzvvJtcbiAgICAgKiAyLiDkvYbmmK/nlLHkuo4gQ2hlY2tib3gg5a6M5YWo5Y+X5aSW6YOo5o6n5Yi277yM5omA5Lul6KaB56Gu5a6a5YaF6YOo54q25oCB5LiN5Lya5pS55Y+Y44CCXG4gICAgICovXG4gICAgZmlyc3RDaGVja2JveC5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgZXhwZWN0KG9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh0cnVlKVxuICAgIGV4cGVjdChcbiAgICAgIHdyYXBwZXIwLmZpbmQoXCJsYWJlbFwiKS5hdCgwKS5wcm9wcygpLmNsYXNzTmFtZS5pbmNsdWRlcyhcImNoZWNrZWRcIilcbiAgICApLnRvRXF1YWwoZmFsc2UpXG5cbiAgICBzZWNvbmRDaGVja2JveC5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgZXhwZWN0KG9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChmYWxzZSlcbiAgICBleHBlY3QoXG4gICAgICB3cmFwcGVyMS5maW5kKFwibGFiZWxcIikuYXQoMCkucHJvcHMoKS5jbGFzc05hbWUuaW5jbHVkZXMoXCJjaGVja2VkXCIpXG4gICAgKS50b0VxdWFsKHRydWUpXG5cbiAgICB0aGlyZENoZWNrYm94LnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICBleHBlY3QoXG4gICAgICB3cmFwcGVyMi5maW5kKFwibGFiZWxcIikuYXQoMCkucHJvcHMoKS5jbGFzc05hbWUuaW5jbHVkZXMoXCJjaGVja2VkXCIpXG4gICAgKS50b0VxdWFsKHRydWUpXG4gICAgdGhpcmRDaGVja2JveC5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgZXhwZWN0KFxuICAgICAgd3JhcHBlcjIuZmluZChcImxhYmVsXCIpLmF0KDApLnByb3BzKCkuY2xhc3NOYW1lLmluY2x1ZGVzKFwiY2hlY2tlZFwiKVxuICAgICkudG9FcXVhbChmYWxzZSlcbiAgfSlcblxuICBpdChcIkNoZWNrYm94IOemgeeUqOeKtuaAgeaYr+WQpuWPr+eUqFwiLCAoKSA9PiB7XG4gICAgY29uc3Qgb25DaGFuZ2UgPSBqZXN0LmZuKClcbiAgICBjb25zdCB3cmFwcGVyMCA9IG1vdW50KDxDaGVja2JveCBkaXNhYmxlZCBvbkNoYW5nZT17b25DaGFuZ2V9IC8+KVxuICAgIC8qKlxuICAgICAqIGdyb3VwLnRlc3QuanMg5Lit5rKh5pyJ5a+5IENoZWNrYm94Lkdyb3VwIGRpc2FibGVkIOeahOa1i+ivle+8jFxuICAgICAqIOWboOS4uiBkaXNhYmxlZCDpgLvovpHpg73mmK/lnKggQ2hlY2tib3guanMg5aSE55CG55qE44CCXG4gICAgICovXG4gICAgY29uc3Qgd3JhcHBlcjEgPSBtb3VudChcbiAgICAgIDxDaGVja2JveC5Hcm91cCBkaXNhYmxlZCBvbkNoYW5nZT17b25DaGFuZ2V9PlxuICAgICAgICA8Q2hlY2tib3ggLz5cbiAgICAgIDwvQ2hlY2tib3guR3JvdXA+XG4gICAgKVxuICAgIHdyYXBwZXIwLmZpbmQoXCJsYWJlbFwiKS5hdCgwKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgZXhwZWN0KG9uQ2hhbmdlKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpXG5cbiAgICB3cmFwcGVyMS5maW5kKFwibGFiZWxcIikuYXQoMCkuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIGV4cGVjdChvbkNoYW5nZSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKVxuICB9KVxuXG4gIGl0KFwiQ2hlY2tib3gg5piv5ZCm6IO95ZON5bqUIG9uQ2xpY2tcIiwgKCkgPT4ge1xuICAgIGNvbnN0IG9uQ2xpY2sgPSBqZXN0LmZuKClcbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoPENoZWNrYm94IG9uQ2xpY2s9e29uQ2xpY2t9IC8+KVxuICAgIHdyYXBwZXIuZmluZChcImxhYmVsXCIpLmF0KDApLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICBleHBlY3Qob25DbGljaykudG9IYXZlQmVlbkNhbGxlZCgpXG4gIH0pXG5cbiAgaXQoXCJDaGVja2JveCDmmK/lkKbog73lk43lupQgZW50ZXJcIiwgKCkgPT4ge1xuICAgIGNvbnN0IG9uQ2hhbmdlID0gamVzdC5mbigpXG4gICAgY29uc3Qgd3JhcHBlciA9IG1vdW50KDxDaGVja2JveCBvbkNoYW5nZT17b25DaGFuZ2V9IC8+KVxuICAgIHdyYXBwZXJcbiAgICAgIC5maW5kKFwibGFiZWxcIilcbiAgICAgIC5hdCgwKVxuICAgICAgLnNpbXVsYXRlKFwia2V5ZG93blwiLCB7IGtleTogXCJlbnRlclwiLCBrZXlDb2RlOiAxMyB9KVxuICAgIGV4cGVjdChcbiAgICAgIHdyYXBwZXIuZmluZChcImxhYmVsXCIpLmF0KDApLnByb3BzKCkuY2xhc3NOYW1lLmluY2x1ZGVzKFwiY2hlY2tlZFwiKVxuICAgICkudG9FcXVhbCh0cnVlKVxuICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgodHJ1ZSlcbiAgfSlcbn0pXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQVAsSUFBZ0JDLFFBQWhCLFFBQWdDLE9BQWhDO0FBQ0EsT0FBT0MsWUFBUCxNQUF5QixxQkFBekI7QUFDQSxTQUFTQyxLQUFULFFBQXNCLFFBQXRCO0FBQ0EsT0FBT0MsUUFBUCxNQUFxQixJQUFyQjs7QUFFQSxJQUFNQyxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLEdBQU07RUFDNUIsZ0JBQThCSixRQUFRLENBQUMsS0FBRCxDQUF0QztFQUFBO0VBQUEsSUFBT0ssT0FBUDtFQUFBLElBQWdCQyxVQUFoQjs7RUFDQSxPQUFPLG9CQUFDLFFBQUQ7SUFBVSxPQUFPLEVBQUVELE9BQW5CO0lBQTRCLFFBQVEsRUFBRSxrQkFBQ0UsSUFBRDtNQUFBLE9BQVVELFVBQVUsQ0FBQ0MsSUFBRCxDQUFwQjtJQUFBO0VBQXRDLEVBQVA7QUFDRCxDQUhEOztBQUtBQyxRQUFRLENBQUMsVUFBRCxFQUFhLFlBQU07RUFDekJDLEVBQUUsQ0FBQyxpQkFBRCxFQUFvQixZQUFNO0lBQzFCLElBQU1DLE9BQU8sR0FBR1QsWUFBWSxDQUFDVSxNQUFiLENBQW9CLG9CQUFDLFFBQUQsbUJBQXBCLENBQWhCO0lBQ0FDLE1BQU0sQ0FBQ0YsT0FBRCxDQUFOLENBQWdCRyxlQUFoQjtFQUNELENBSEMsQ0FBRjtFQUtBSixFQUFFLENBQUMsa0JBQUQsRUFBcUIsWUFBTTtJQUMzQixJQUFNSyxRQUFRLEdBQUdDLElBQUksQ0FBQ0MsRUFBTCxFQUFqQjtJQUNBLElBQU1OLE9BQU8sR0FBR1IsS0FBSyxDQUFDLG9CQUFDLFFBQUQ7TUFBVSxRQUFRLEVBQUVZO0lBQXBCLEVBQUQsQ0FBckI7SUFDQUosT0FBTyxDQUFDTyxJQUFSLENBQWEsT0FBYixFQUFzQkMsRUFBdEIsQ0FBeUIsQ0FBekIsRUFBNEJDLFFBQTVCLENBQXFDLE9BQXJDO0lBQ0FQLE1BQU0sQ0FBQ0UsUUFBRCxDQUFOLENBQWlCTSxvQkFBakIsQ0FBc0MsSUFBdEM7RUFDRCxDQUxDLENBQUY7RUFPQVgsRUFBRSxDQUFDLG1CQUFELEVBQXNCLFlBQU07SUFDNUIsSUFBTUssUUFBUSxHQUFHQyxJQUFJLENBQUNDLEVBQUwsRUFBakI7SUFDQSxJQUFNSyxRQUFRLEdBQUduQixLQUFLLENBQUMsb0JBQUMsUUFBRDtNQUFVLE9BQU8sRUFBRSxLQUFuQjtNQUEwQixRQUFRLEVBQUVZO0lBQXBDLEVBQUQsQ0FBdEI7SUFDQSxJQUFNUSxRQUFRLEdBQUdwQixLQUFLLENBQUMsb0JBQUMsUUFBRDtNQUFVLE9BQU8sTUFBakI7TUFBa0IsUUFBUSxFQUFFWTtJQUE1QixFQUFELENBQXRCO0lBRUEsSUFBTVMsUUFBUSxHQUFHckIsS0FBSyxDQUFDLG9CQUFDLGVBQUQsT0FBRCxDQUF0QjtJQUNBLElBQU1zQixhQUFhLEdBQUdILFFBQVEsQ0FBQ0osSUFBVCxDQUFjLE9BQWQsRUFBdUJDLEVBQXZCLENBQTBCLENBQTFCLENBQXRCO0lBQ0EsSUFBTU8sY0FBYyxHQUFHSCxRQUFRLENBQUNMLElBQVQsQ0FBYyxPQUFkLEVBQXVCQyxFQUF2QixDQUEwQixDQUExQixDQUF2QjtJQUNBLElBQU1RLGFBQWEsR0FBR0gsUUFBUSxDQUFDTixJQUFULENBQWMsT0FBZCxFQUF1QkMsRUFBdkIsQ0FBMEIsQ0FBMUIsQ0FBdEI7SUFLQU0sYUFBYSxDQUFDTCxRQUFkLENBQXVCLE9BQXZCO0lBQ0FQLE1BQU0sQ0FBQ0UsUUFBRCxDQUFOLENBQWlCTSxvQkFBakIsQ0FBc0MsSUFBdEM7SUFDQVIsTUFBTSxDQUNKUyxRQUFRLENBQUNKLElBQVQsQ0FBYyxPQUFkLEVBQXVCQyxFQUF2QixDQUEwQixDQUExQixFQUE2QlMsS0FBN0IsR0FBcUNDLFNBQXJDLENBQStDQyxRQUEvQyxDQUF3RCxTQUF4RCxDQURJLENBQU4sQ0FFRUMsT0FGRixDQUVVLEtBRlY7SUFJQUwsY0FBYyxDQUFDTixRQUFmLENBQXdCLE9BQXhCO0lBQ0FQLE1BQU0sQ0FBQ0UsUUFBRCxDQUFOLENBQWlCTSxvQkFBakIsQ0FBc0MsS0FBdEM7SUFDQVIsTUFBTSxDQUNKVSxRQUFRLENBQUNMLElBQVQsQ0FBYyxPQUFkLEVBQXVCQyxFQUF2QixDQUEwQixDQUExQixFQUE2QlMsS0FBN0IsR0FBcUNDLFNBQXJDLENBQStDQyxRQUEvQyxDQUF3RCxTQUF4RCxDQURJLENBQU4sQ0FFRUMsT0FGRixDQUVVLElBRlY7SUFJQUosYUFBYSxDQUFDUCxRQUFkLENBQXVCLE9BQXZCO0lBQ0FQLE1BQU0sQ0FDSlcsUUFBUSxDQUFDTixJQUFULENBQWMsT0FBZCxFQUF1QkMsRUFBdkIsQ0FBMEIsQ0FBMUIsRUFBNkJTLEtBQTdCLEdBQXFDQyxTQUFyQyxDQUErQ0MsUUFBL0MsQ0FBd0QsU0FBeEQsQ0FESSxDQUFOLENBRUVDLE9BRkYsQ0FFVSxJQUZWO0lBR0FKLGFBQWEsQ0FBQ1AsUUFBZCxDQUF1QixPQUF2QjtJQUNBUCxNQUFNLENBQ0pXLFFBQVEsQ0FBQ04sSUFBVCxDQUFjLE9BQWQsRUFBdUJDLEVBQXZCLENBQTBCLENBQTFCLEVBQTZCUyxLQUE3QixHQUFxQ0MsU0FBckMsQ0FBK0NDLFFBQS9DLENBQXdELFNBQXhELENBREksQ0FBTixDQUVFQyxPQUZGLENBRVUsS0FGVjtFQUdELENBakNDLENBQUY7RUFtQ0FyQixFQUFFLENBQUMsbUJBQUQsRUFBc0IsWUFBTTtJQUM1QixJQUFNSyxRQUFRLEdBQUdDLElBQUksQ0FBQ0MsRUFBTCxFQUFqQjtJQUNBLElBQU1LLFFBQVEsR0FBR25CLEtBQUssQ0FBQyxvQkFBQyxRQUFEO01BQVUsUUFBUSxNQUFsQjtNQUFtQixRQUFRLEVBQUVZO0lBQTdCLEVBQUQsQ0FBdEI7SUFLQSxJQUFNUSxRQUFRLEdBQUdwQixLQUFLLENBQ3BCLG9CQUFDLFFBQUQsQ0FBVSxLQUFWO01BQWdCLFFBQVEsTUFBeEI7TUFBeUIsUUFBUSxFQUFFWTtJQUFuQyxHQUNFLG9CQUFDLFFBQUQsT0FERixDQURvQixDQUF0QjtJQUtBTyxRQUFRLENBQUNKLElBQVQsQ0FBYyxPQUFkLEVBQXVCQyxFQUF2QixDQUEwQixDQUExQixFQUE2QkMsUUFBN0IsQ0FBc0MsT0FBdEM7SUFDQVAsTUFBTSxDQUFDRSxRQUFELENBQU4sQ0FBaUJpQixHQUFqQixDQUFxQkMsZ0JBQXJCO0lBRUFWLFFBQVEsQ0FBQ0wsSUFBVCxDQUFjLE9BQWQsRUFBdUJDLEVBQXZCLENBQTBCLENBQTFCLEVBQTZCQyxRQUE3QixDQUFzQyxPQUF0QztJQUNBUCxNQUFNLENBQUNFLFFBQUQsQ0FBTixDQUFpQmlCLEdBQWpCLENBQXFCQyxnQkFBckI7RUFDRCxDQWpCQyxDQUFGO0VBbUJBdkIsRUFBRSxDQUFDLHdCQUFELEVBQTJCLFlBQU07SUFDakMsSUFBTXdCLE9BQU8sR0FBR2xCLElBQUksQ0FBQ0MsRUFBTCxFQUFoQjtJQUNBLElBQU1OLE9BQU8sR0FBR1IsS0FBSyxDQUFDLG9CQUFDLFFBQUQ7TUFBVSxPQUFPLEVBQUUrQjtJQUFuQixFQUFELENBQXJCO0lBQ0F2QixPQUFPLENBQUNPLElBQVIsQ0FBYSxPQUFiLEVBQXNCQyxFQUF0QixDQUF5QixDQUF6QixFQUE0QkMsUUFBNUIsQ0FBcUMsT0FBckM7SUFDQVAsTUFBTSxDQUFDcUIsT0FBRCxDQUFOLENBQWdCRCxnQkFBaEI7RUFDRCxDQUxDLENBQUY7RUFPQXZCLEVBQUUsQ0FBQyxzQkFBRCxFQUF5QixZQUFNO0lBQy9CLElBQU1LLFFBQVEsR0FBR0MsSUFBSSxDQUFDQyxFQUFMLEVBQWpCO0lBQ0EsSUFBTU4sT0FBTyxHQUFHUixLQUFLLENBQUMsb0JBQUMsUUFBRDtNQUFVLFFBQVEsRUFBRVk7SUFBcEIsRUFBRCxDQUFyQjtJQUNBSixPQUFPLENBQ0pPLElBREgsQ0FDUSxPQURSLEVBRUdDLEVBRkgsQ0FFTSxDQUZOLEVBR0dDLFFBSEgsQ0FHWSxTQUhaLEVBR3VCO01BQUVlLEdBQUcsRUFBRSxPQUFQO01BQWdCQyxPQUFPLEVBQUU7SUFBekIsQ0FIdkI7SUFJQXZCLE1BQU0sQ0FDSkYsT0FBTyxDQUFDTyxJQUFSLENBQWEsT0FBYixFQUFzQkMsRUFBdEIsQ0FBeUIsQ0FBekIsRUFBNEJTLEtBQTVCLEdBQW9DQyxTQUFwQyxDQUE4Q0MsUUFBOUMsQ0FBdUQsU0FBdkQsQ0FESSxDQUFOLENBRUVDLE9BRkYsQ0FFVSxJQUZWO0lBR0FsQixNQUFNLENBQUNFLFFBQUQsQ0FBTixDQUFpQk0sb0JBQWpCLENBQXNDLElBQXRDO0VBQ0QsQ0FYQyxDQUFGO0FBWUQsQ0F0Rk8sQ0FBUiJ9