botframework-webchat-component
Version:
React component of botframework-webchat
76 lines (75 loc) • 17.8 kB
JavaScript
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 _propTypes = _interopRequireDefault(require("prop-types"));
var _react = _interopRequireWildcard(require("react"));
var _FocusRedirector = _interopRequireDefault(require("../Utils/FocusRedirector"));
var _tabbableElements = _interopRequireDefault(require("../Utils/tabbableElements"));
var _useRefFrom = require("use-ref-from");
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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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; }
var FocusTrap = function FocusTrap(_ref) {
var children = _ref.children,
onFocus = _ref.onFocus,
onLeave = _ref.onLeave;
var bodyRef = (0, _react.useRef)();
var onLeaveRef = (0, _useRefFrom.useRefFrom)(onLeave);
var getTabbableElementsInBody = (0, _react.useCallback)(function () {
return (0, _tabbableElements.default)(bodyRef.current).filter(function (element) {
return element.getAttribute('aria-disabled') !== 'true';
});
}, [bodyRef]);
var handleBodyKeyDown = (0, _react.useCallback)(function (event) {
if (event.key === 'Escape') {
var _onLeaveRef$current;
event.preventDefault();
event.stopPropagation();
(_onLeaveRef$current = onLeaveRef.current) === null || _onLeaveRef$current === void 0 ? void 0 : _onLeaveRef$current.call(onLeaveRef);
}
}, [onLeaveRef]);
var handleFirstSentinelFocus = (0, _react.useCallback)(function () {
var _onLeaveRef$current2;
var focusables = getTabbableElementsInBody();
var lastTabbableElement = focusables[focusables.length - 1];
lastTabbableElement ? lastTabbableElement.focus() : (_onLeaveRef$current2 = onLeaveRef.current) === null || _onLeaveRef$current2 === void 0 ? void 0 : _onLeaveRef$current2.call(onLeaveRef);
}, [getTabbableElementsInBody, onLeaveRef]);
var handleLastSentinelFocus = (0, _react.useCallback)(function () {
var _onLeaveRef$current3;
var _getTabbableElementsI = getTabbableElementsInBody(),
_getTabbableElementsI2 = _slicedToArray(_getTabbableElementsI, 1),
firstTabbableElement = _getTabbableElementsI2[0];
firstTabbableElement ? firstTabbableElement.focus() : (_onLeaveRef$current3 = onLeaveRef.current) === null || _onLeaveRef$current3 === void 0 ? void 0 : _onLeaveRef$current3.call(onLeaveRef);
}, [getTabbableElementsInBody, onLeaveRef]);
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_FocusRedirector.default, {
onFocus: handleFirstSentinelFocus
}), /*#__PURE__*/_react.default.createElement("div", {
onFocus: onFocus,
onKeyDown: handleBodyKeyDown,
ref: bodyRef
}, children), /*#__PURE__*/_react.default.createElement(_FocusRedirector.default, {
onFocus: handleLastSentinelFocus
}));
};
FocusTrap.defaultProps = {
children: undefined,
onFocus: undefined
};
FocusTrap.propTypes = {
children: _propTypes.default.any,
onFocus: _propTypes.default.func,
onLeave: _propTypes.default.func.isRequired
};
FocusTrap.displayName = 'FocusTrap';
var _default = /*#__PURE__*/(0, _react.memo)(FocusTrap);
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9Gb2N1c1JlZGlyZWN0b3IiLCJfdGFiYmFibGVFbGVtZW50cyIsIl91c2VSZWZGcm9tIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsImkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwiVHlwZUVycm9yIiwibyIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwibiIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibGVuIiwibGVuZ3RoIiwiYXJyMiIsIl9pIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJfYXJyIiwiX24iLCJfZCIsIl9zIiwiX2UiLCJuZXh0IiwiZG9uZSIsInB1c2giLCJ2YWx1ZSIsImVyciIsImlzQXJyYXkiLCJGb2N1c1RyYXAiLCJfcmVmIiwiY2hpbGRyZW4iLCJvbkZvY3VzIiwib25MZWF2ZSIsImJvZHlSZWYiLCJ1c2VSZWYiLCJvbkxlYXZlUmVmIiwidXNlUmVmRnJvbSIsImdldFRhYmJhYmxlRWxlbWVudHNJbkJvZHkiLCJ1c2VDYWxsYmFjayIsInRhYmJhYmxlRWxlbWVudHMiLCJjdXJyZW50IiwiZmlsdGVyIiwiZWxlbWVudCIsImdldEF0dHJpYnV0ZSIsImhhbmRsZUJvZHlLZXlEb3duIiwiZXZlbnQiLCJfb25MZWF2ZVJlZiRjdXJyZW50IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJoYW5kbGVGaXJzdFNlbnRpbmVsRm9jdXMiLCJfb25MZWF2ZVJlZiRjdXJyZW50MiIsImZvY3VzYWJsZXMiLCJsYXN0VGFiYmFibGVFbGVtZW50IiwiZm9jdXMiLCJoYW5kbGVMYXN0U2VudGluZWxGb2N1cyIsIl9vbkxlYXZlUmVmJGN1cnJlbnQzIiwiX2dldFRhYmJhYmxlRWxlbWVudHNJIiwiX2dldFRhYmJhYmxlRWxlbWVudHNJMiIsImZpcnN0VGFiYmFibGVFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsIkZyYWdtZW50Iiwib25LZXlEb3duIiwicmVmIiwiZGVmYXVsdFByb3BzIiwidW5kZWZpbmVkIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiYW55IiwiZnVuYyIsImlzUmVxdWlyZWQiLCJkaXNwbGF5TmFtZSIsIl9kZWZhdWx0IiwibWVtbyIsImV4cG9ydHMiXSwic291cmNlUm9vdCI6ImNvbXBvbmVudDovLy8iLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9UcmFuc2NyaXB0L0ZvY3VzVHJhcC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCwgeyBGcmFnbWVudCwgbWVtbywgdXNlQ2FsbGJhY2ssIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHR5cGUgeyBGQywgS2V5Ym9hcmRFdmVudEhhbmRsZXIsIFByb3BzV2l0aENoaWxkcmVuIH0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgRm9jdXNSZWRpcmVjdG9yIGZyb20gJy4uL1V0aWxzL0ZvY3VzUmVkaXJlY3Rvcic7XG5pbXBvcnQgdGFiYmFibGVFbGVtZW50cyBmcm9tICcuLi9VdGlscy90YWJiYWJsZUVsZW1lbnRzJztcbmltcG9ydCB7IHVzZVJlZkZyb20gfSBmcm9tICd1c2UtcmVmLWZyb20nO1xuXG50eXBlIEZvY3VzVHJhcFByb3BzID0gUHJvcHNXaXRoQ2hpbGRyZW48e1xuICBvbkZvY3VzOiAoKSA9PiB2b2lkO1xuICBvbkxlYXZlOiAoKSA9PiB2b2lkO1xufT47XG5cbmNvbnN0IEZvY3VzVHJhcDogRkM8Rm9jdXNUcmFwUHJvcHM+ID0gKHsgY2hpbGRyZW4sIG9uRm9jdXMsIG9uTGVhdmUgfSkgPT4ge1xuICBjb25zdCBib2R5UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xuICBjb25zdCBvbkxlYXZlUmVmID0gdXNlUmVmRnJvbTwoKSA9PiB2b2lkPihvbkxlYXZlKTtcblxuICBjb25zdCBnZXRUYWJiYWJsZUVsZW1lbnRzSW5Cb2R5ID0gdXNlQ2FsbGJhY2soXG4gICAgKCkgPT4gdGFiYmFibGVFbGVtZW50cyhib2R5UmVmLmN1cnJlbnQpLmZpbHRlcihlbGVtZW50ID0+IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJykgIT09ICd0cnVlJyksXG4gICAgW2JvZHlSZWZdXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlQm9keUtleURvd246IEtleWJvYXJkRXZlbnRIYW5kbGVyID0gdXNlQ2FsbGJhY2soXG4gICAgZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgb25MZWF2ZVJlZi5jdXJyZW50Py4oKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtvbkxlYXZlUmVmXVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUZpcnN0U2VudGluZWxGb2N1czogKCkgPT4gdm9pZCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBmb2N1c2FibGVzID0gZ2V0VGFiYmFibGVFbGVtZW50c0luQm9keSgpO1xuXG4gICAgY29uc3QgbGFzdFRhYmJhYmxlRWxlbWVudCA9IGZvY3VzYWJsZXNbZm9jdXNhYmxlcy5sZW5ndGggLSAxXTtcblxuICAgIGxhc3RUYWJiYWJsZUVsZW1lbnQgPyBsYXN0VGFiYmFibGVFbGVtZW50LmZvY3VzKCkgOiBvbkxlYXZlUmVmLmN1cnJlbnQ/LigpO1xuICB9LCBbZ2V0VGFiYmFibGVFbGVtZW50c0luQm9keSwgb25MZWF2ZVJlZl0pO1xuXG4gIGNvbnN0IGhhbmRsZUxhc3RTZW50aW5lbEZvY3VzOiAoKSA9PiB2b2lkID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IFtmaXJzdFRhYmJhYmxlRWxlbWVudF0gPSBnZXRUYWJiYWJsZUVsZW1lbnRzSW5Cb2R5KCk7XG5cbiAgICBmaXJzdFRhYmJhYmxlRWxlbWVudCA/IGZpcnN0VGFiYmFibGVFbGVtZW50LmZvY3VzKCkgOiBvbkxlYXZlUmVmLmN1cnJlbnQ/LigpO1xuICB9LCBbZ2V0VGFiYmFibGVFbGVtZW50c0luQm9keSwgb25MZWF2ZVJlZl0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZyYWdtZW50PlxuICAgICAgPEZvY3VzUmVkaXJlY3RvciBvbkZvY3VzPXtoYW5kbGVGaXJzdFNlbnRpbmVsRm9jdXN9IC8+XG4gICAgICA8ZGl2IG9uRm9jdXM9e29uRm9jdXN9IG9uS2V5RG93bj17aGFuZGxlQm9keUtleURvd259IHJlZj17Ym9keVJlZn0+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvZGl2PlxuICAgICAgPEZvY3VzUmVkaXJlY3RvciBvbkZvY3VzPXtoYW5kbGVMYXN0U2VudGluZWxGb2N1c30gLz5cbiAgICA8L0ZyYWdtZW50PlxuICApO1xufTtcblxuRm9jdXNUcmFwLmRlZmF1bHRQcm9wcyA9IHtcbiAgY2hpbGRyZW46IHVuZGVmaW5lZCxcbiAgb25Gb2N1czogdW5kZWZpbmVkXG59O1xuXG5Gb2N1c1RyYXAucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLmFueSxcbiAgb25Gb2N1czogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uTGVhdmU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbkZvY3VzVHJhcC5kaXNwbGF5TmFtZSA9ICdGb2N1c1RyYXAnO1xuXG5leHBvcnQgZGVmYXVsdCBtZW1vKEZvY3VzVHJhcCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxVQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFJQSxJQUFBRyxnQkFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksaUJBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLFdBQUEsR0FBQUwsT0FBQTtBQUEwQyxTQUFBTSx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQUwsd0JBQUFTLEdBQUEsRUFBQUosV0FBQSxTQUFBQSxXQUFBLElBQUFJLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLFdBQUFELEdBQUEsUUFBQUEsR0FBQSxhQUFBRSxPQUFBLENBQUFGLEdBQUEseUJBQUFBLEdBQUEsNEJBQUFHLE9BQUEsRUFBQUgsR0FBQSxVQUFBSSxLQUFBLEdBQUFULHdCQUFBLENBQUFDLFdBQUEsT0FBQVEsS0FBQSxJQUFBQSxLQUFBLENBQUFDLEdBQUEsQ0FBQUwsR0FBQSxZQUFBSSxLQUFBLENBQUFFLEdBQUEsQ0FBQU4sR0FBQSxTQUFBTyxNQUFBLFdBQUFDLHFCQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLEdBQUEsSUFBQVosR0FBQSxRQUFBWSxHQUFBLGtCQUFBSCxNQUFBLENBQUFJLFNBQUEsQ0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFmLEdBQUEsRUFBQVksR0FBQSxTQUFBSSxJQUFBLEdBQUFSLHFCQUFBLEdBQUFDLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQVgsR0FBQSxFQUFBWSxHQUFBLGNBQUFJLElBQUEsS0FBQUEsSUFBQSxDQUFBVixHQUFBLElBQUFVLElBQUEsQ0FBQUMsR0FBQSxLQUFBUixNQUFBLENBQUFDLGNBQUEsQ0FBQUgsTUFBQSxFQUFBSyxHQUFBLEVBQUFJLElBQUEsWUFBQVQsTUFBQSxDQUFBSyxHQUFBLElBQUFaLEdBQUEsQ0FBQVksR0FBQSxTQUFBTCxNQUFBLENBQUFKLE9BQUEsR0FBQUgsR0FBQSxNQUFBSSxLQUFBLElBQUFBLEtBQUEsQ0FBQWEsR0FBQSxDQUFBakIsR0FBQSxFQUFBTyxNQUFBLFlBQUFBLE1BQUE7QUFBQSxTQUFBbkIsdUJBQUFZLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRyxPQUFBLEVBQUFILEdBQUE7QUFBQSxTQUFBa0IsZUFBQUMsR0FBQSxFQUFBQyxDQUFBLFdBQUFDLGVBQUEsQ0FBQUYsR0FBQSxLQUFBRyxxQkFBQSxDQUFBSCxHQUFBLEVBQUFDLENBQUEsS0FBQUcsMkJBQUEsQ0FBQUosR0FBQSxFQUFBQyxDQUFBLEtBQUFJLGdCQUFBO0FBQUEsU0FBQUEsaUJBQUEsY0FBQUMsU0FBQTtBQUFBLFNBQUFGLDRCQUFBRyxDQUFBLEVBQUFDLE1BQUEsU0FBQUQsQ0FBQSxxQkFBQUEsQ0FBQSxzQkFBQUUsaUJBQUEsQ0FBQUYsQ0FBQSxFQUFBQyxNQUFBLE9BQUFFLENBQUEsR0FBQXBCLE1BQUEsQ0FBQUksU0FBQSxDQUFBaUIsUUFBQSxDQUFBZixJQUFBLENBQUFXLENBQUEsRUFBQUssS0FBQSxhQUFBRixDQUFBLGlCQUFBSCxDQUFBLENBQUFNLFdBQUEsRUFBQUgsQ0FBQSxHQUFBSCxDQUFBLENBQUFNLFdBQUEsQ0FBQUMsSUFBQSxNQUFBSixDQUFBLGNBQUFBLENBQUEsbUJBQUFLLEtBQUEsQ0FBQUMsSUFBQSxDQUFBVCxDQUFBLE9BQUFHLENBQUEsK0RBQUFPLElBQUEsQ0FBQVAsQ0FBQSxVQUFBRCxpQkFBQSxDQUFBRixDQUFBLEVBQUFDLE1BQUE7QUFBQSxTQUFBQyxrQkFBQVQsR0FBQSxFQUFBa0IsR0FBQSxRQUFBQSxHQUFBLFlBQUFBLEdBQUEsR0FBQWxCLEdBQUEsQ0FBQW1CLE1BQUEsRUFBQUQsR0FBQSxHQUFBbEIsR0FBQSxDQUFBbUIsTUFBQSxXQUFBbEIsQ0FBQSxNQUFBbUIsSUFBQSxPQUFBTCxLQUFBLENBQUFHLEdBQUEsR0FBQWpCLENBQUEsR0FBQWlCLEdBQUEsRUFBQWpCLENBQUEsTUFBQW1CLElBQUEsQ0FBQW5CLENBQUEsSUFBQUQsR0FBQSxDQUFBQyxDQUFBLFlBQUFtQixJQUFBO0FBQUEsU0FBQWpCLHNCQUFBSCxHQUFBLEVBQUFDLENBQUEsUUFBQW9CLEVBQUEsR0FBQXJCLEdBQUEseUJBQUFzQixNQUFBLG9CQUFBdEIsR0FBQSxDQUFBc0IsTUFBQSxDQUFBQyxRQUFBLEtBQUF2QixHQUFBLG9CQUFBcUIsRUFBQSxzQkFBQUcsSUFBQSxXQUFBQyxFQUFBLGFBQUFDLEVBQUEsY0FBQUMsRUFBQSxFQUFBQyxFQUFBLGFBQUFQLEVBQUEsR0FBQUEsRUFBQSxDQUFBekIsSUFBQSxDQUFBSSxHQUFBLEtBQUF5QixFQUFBLElBQUFFLEVBQUEsR0FBQU4sRUFBQSxDQUFBUSxJQUFBLElBQUFDLElBQUEsR0FBQUwsRUFBQSxXQUFBRCxJQUFBLENBQUFPLElBQUEsQ0FBQUosRUFBQSxDQUFBSyxLQUFBLE9BQUEvQixDQUFBLElBQUF1QixJQUFBLENBQUFMLE1BQUEsS0FBQWxCLENBQUEsb0JBQUFnQyxHQUFBLElBQUFQLEVBQUEsU0FBQUUsRUFBQSxHQUFBSyxHQUFBLHlCQUFBUixFQUFBLElBQUFKLEVBQUEsb0JBQUFBLEVBQUEsOEJBQUFLLEVBQUEsUUFBQUUsRUFBQSxhQUFBSixJQUFBO0FBQUEsU0FBQXRCLGdCQUFBRixHQUFBLFFBQUFlLEtBQUEsQ0FBQW1CLE9BQUEsQ0FBQWxDLEdBQUEsVUFBQUEsR0FBQTtBQU8xQyxJQUFNbUMsU0FBNkIsR0FBRyxTQUFoQ0EsU0FBNkJBLENBQUFDLElBQUEsRUFBdUM7RUFBQSxJQUFqQ0MsUUFBUSxHQUFBRCxJQUFBLENBQVJDLFFBQVE7SUFBRUMsT0FBTyxHQUFBRixJQUFBLENBQVBFLE9BQU87SUFBRUMsT0FBTyxHQUFBSCxJQUFBLENBQVBHLE9BQU87RUFDakUsSUFBTUMsT0FBTyxHQUFHLElBQUFDLGFBQU0sRUFBaUIsQ0FBQztFQUN4QyxJQUFNQyxVQUFVLEdBQUcsSUFBQUMsc0JBQVUsRUFBYUosT0FBTyxDQUFDO0VBRWxELElBQU1LLHlCQUF5QixHQUFHLElBQUFDLGtCQUFXLEVBQzNDO0lBQUEsT0FBTSxJQUFBQyx5QkFBZ0IsRUFBQ04sT0FBTyxDQUFDTyxPQUFPLENBQUMsQ0FBQ0MsTUFBTSxDQUFDLFVBQUFDLE9BQU87TUFBQSxPQUFJQSxPQUFPLENBQUNDLFlBQVksQ0FBQyxlQUFlLENBQUMsS0FBSyxNQUFNO0lBQUEsRUFBQztFQUFBLEdBQzNHLENBQUNWLE9BQU8sQ0FDVixDQUFDO0VBRUQsSUFBTVcsaUJBQXVDLEdBQUcsSUFBQU4sa0JBQVcsRUFDekQsVUFBQU8sS0FBSyxFQUFJO0lBQ1AsSUFBSUEsS0FBSyxDQUFDM0QsR0FBRyxLQUFLLFFBQVEsRUFBRTtNQUFBLElBQUE0RCxtQkFBQTtNQUMxQkQsS0FBSyxDQUFDRSxjQUFjLENBQUMsQ0FBQztNQUN0QkYsS0FBSyxDQUFDRyxlQUFlLENBQUMsQ0FBQztNQUV2QixDQUFBRixtQkFBQSxHQUFBWCxVQUFVLENBQUNLLE9BQU8sY0FBQU0sbUJBQUEsdUJBQWxCQSxtQkFBQSxDQUFBekQsSUFBQSxDQUFBOEMsVUFBcUIsQ0FBQztJQUN4QjtFQUNGLENBQUMsRUFDRCxDQUFDQSxVQUFVLENBQ2IsQ0FBQztFQUVELElBQU1jLHdCQUFvQyxHQUFHLElBQUFYLGtCQUFXLEVBQUMsWUFBTTtJQUFBLElBQUFZLG9CQUFBO0lBQzdELElBQU1DLFVBQVUsR0FBR2QseUJBQXlCLENBQUMsQ0FBQztJQUU5QyxJQUFNZSxtQkFBbUIsR0FBR0QsVUFBVSxDQUFDQSxVQUFVLENBQUN2QyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRTdEd0MsbUJBQW1CLEdBQUdBLG1CQUFtQixDQUFDQyxLQUFLLENBQUMsQ0FBQyxJQUFBSCxvQkFBQSxHQUFHZixVQUFVLENBQUNLLE9BQU8sY0FBQVUsb0JBQUEsdUJBQWxCQSxvQkFBQSxDQUFBN0QsSUFBQSxDQUFBOEMsVUFBcUIsQ0FBQztFQUM1RSxDQUFDLEVBQUUsQ0FBQ0UseUJBQXlCLEVBQUVGLFVBQVUsQ0FBQyxDQUFDO0VBRTNDLElBQU1tQix1QkFBbUMsR0FBRyxJQUFBaEIsa0JBQVcsRUFBQyxZQUFNO0lBQUEsSUFBQWlCLG9CQUFBO0lBQzVELElBQUFDLHFCQUFBLEdBQStCbkIseUJBQXlCLENBQUMsQ0FBQztNQUFBb0Isc0JBQUEsR0FBQWpFLGNBQUEsQ0FBQWdFLHFCQUFBO01BQW5ERSxvQkFBb0IsR0FBQUQsc0JBQUE7SUFFM0JDLG9CQUFvQixHQUFHQSxvQkFBb0IsQ0FBQ0wsS0FBSyxDQUFDLENBQUMsSUFBQUUsb0JBQUEsR0FBR3BCLFVBQVUsQ0FBQ0ssT0FBTyxjQUFBZSxvQkFBQSx1QkFBbEJBLG9CQUFBLENBQUFsRSxJQUFBLENBQUE4QyxVQUFxQixDQUFDO0VBQzlFLENBQUMsRUFBRSxDQUFDRSx5QkFBeUIsRUFBRUYsVUFBVSxDQUFDLENBQUM7RUFFM0Msb0JBQ0V2RSxNQUFBLENBQUFhLE9BQUEsQ0FBQWtGLGFBQUEsQ0FBQy9GLE1BQUEsQ0FBQWdHLFFBQVEscUJBQ1BoRyxNQUFBLENBQUFhLE9BQUEsQ0FBQWtGLGFBQUEsQ0FBQzdGLGdCQUFBLENBQUFXLE9BQWU7SUFBQ3NELE9BQU8sRUFBRWtCO0VBQXlCLENBQUUsQ0FBQyxlQUN0RHJGLE1BQUEsQ0FBQWEsT0FBQSxDQUFBa0YsYUFBQTtJQUFLNUIsT0FBTyxFQUFFQSxPQUFRO0lBQUM4QixTQUFTLEVBQUVqQixpQkFBa0I7SUFBQ2tCLEdBQUcsRUFBRTdCO0VBQVEsR0FDL0RILFFBQ0UsQ0FBQyxlQUNObEUsTUFBQSxDQUFBYSxPQUFBLENBQUFrRixhQUFBLENBQUM3RixnQkFBQSxDQUFBVyxPQUFlO0lBQUNzRCxPQUFPLEVBQUV1QjtFQUF3QixDQUFFLENBQzVDLENBQUM7QUFFZixDQUFDO0FBRUQxQixTQUFTLENBQUNtQyxZQUFZLEdBQUc7RUFDdkJqQyxRQUFRLEVBQUVrQyxTQUFTO0VBQ25CakMsT0FBTyxFQUFFaUM7QUFDWCxDQUFDO0FBRURwQyxTQUFTLENBQUNxQyxTQUFTLEdBQUc7RUFDcEJuQyxRQUFRLEVBQUVvQyxrQkFBUyxDQUFDQyxHQUFHO0VBQ3ZCcEMsT0FBTyxFQUFFbUMsa0JBQVMsQ0FBQ0UsSUFBSTtFQUN2QnBDLE9BQU8sRUFBRWtDLGtCQUFTLENBQUNFLElBQUksQ0FBQ0M7QUFDMUIsQ0FBQztBQUVEekMsU0FBUyxDQUFDMEMsV0FBVyxHQUFHLFdBQVc7QUFBQyxJQUFBQyxRQUFBLGdCQUVyQixJQUFBQyxXQUFJLEVBQUM1QyxTQUFTLENBQUM7QUFBQTZDLE9BQUEsQ0FBQWhHLE9BQUEsR0FBQThGLFFBQUEifQ==
;