botframework-webchat-component
Version:
React component of botframework-webchat
114 lines (111 loc) • 21.7 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 _useEnterKeyHint = _interopRequireDefault(require("../hooks/internal/useEnterKeyHint"));
var _excluded = ["aria-errormessage", "className", "disabled", "enterKeyHint", "onChange", "onFocus", "onKeyDown", "onKeyDownCapture", "onKeyPress", "onSelect", "placeholder", "readOnly", "tabIndex", "value"];
/* eslint no-magic-numbers: ["error", { "ignore": [-1] }] */
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 _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 _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; }
// Differences between <input type="text"> and <AccessibleInputText>:
// - Disable behavior
// - When the widget is disabled
// - Set "aria-disabled" attribute to "true"
// - Set "readonly" attribute
// - Set "tabIndex" to -1
// - Remove "onChange" handler
// - Why this is needed
// - Browser compatibility: when the widget is disabled, different browser send focus to different places
// - When the widget is disabled, it's reasonable to keep the focus on the same widget for an extended period of time
// - When the user presses TAB after the current widget is disabled, it should jump to the next non-disabled widget
// Developers using this accessible widget will need to:
// - Style the disabled widget themselves, using CSS query `:disabled, [aria-disabled="true"] {}`
// - Modify all the code that checks disabled through the "disabled" attribute to use aria-disabled="true" instead
// - aria-disabled="true" is the source of truth
// - If the widget is contained by a <form>, the developer need to filter out some `onSubmit` event caused by this widget
var AccessibleInputText = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, forwardedRef) {
var ariaErrorMessage = _ref['aria-errormessage'],
className = _ref.className,
disabled = _ref.disabled,
enterKeyHint = _ref.enterKeyHint,
onChange = _ref.onChange,
onFocus = _ref.onFocus,
onKeyDown = _ref.onKeyDown,
onKeyDownCapture = _ref.onKeyDownCapture,
onKeyPress = _ref.onKeyPress,
onSelect = _ref.onSelect,
placeholder = _ref.placeholder,
readOnly = _ref.readOnly,
tabIndex = _ref.tabIndex,
value = _ref.value,
props = _objectWithoutProperties(_ref, _excluded);
var targetRef = (0, _react.useRef)();
var ref = forwardedRef || targetRef;
(0, _useEnterKeyHint.default)(ref, enterKeyHint);
return /*#__PURE__*/_react.default.createElement("input", _extends({
"aria-disabled": disabled || undefined,
"aria-errormessage": ariaErrorMessage,
className: className,
onChange: disabled ? undefined : onChange,
onFocus: disabled ? undefined : onFocus,
onKeyDown: disabled ? undefined : onKeyDown,
onKeyDownCapture: disabled ? undefined : onKeyDownCapture,
onKeyPress: disabled ? undefined : onKeyPress,
onSelect: disabled ? undefined : onSelect,
placeholder: placeholder,
readOnly: readOnly || disabled,
ref: ref,
tabIndex: disabled ? -1 : tabIndex,
value: value
}, props, {
type: "text"
}));
});
AccessibleInputText.defaultProps = {
'aria-errormessage': undefined,
className: undefined,
disabled: undefined,
enterKeyHint: undefined,
inputMode: undefined,
onChange: undefined,
onFocus: undefined,
onKeyDown: undefined,
onKeyDownCapture: undefined,
onKeyPress: undefined,
onSelect: undefined,
placeholder: undefined,
readOnly: undefined,
tabIndex: undefined,
value: undefined
};
AccessibleInputText.displayName = 'AccessibleInputText';
AccessibleInputText.propTypes = {
'aria-errormessage': _propTypes.default.string,
className: _propTypes.default.string,
disabled: _propTypes.default.bool,
enterKeyHint: _propTypes.default.string,
inputMode: _propTypes.default.oneOf(['text', 'none', 'tel', 'url', 'email', 'numeric', 'decimal', 'search']),
onChange: _propTypes.default.func,
onFocus: _propTypes.default.func,
onKeyDown: _propTypes.default.func,
onKeyDownCapture: _propTypes.default.func,
onKeyPress: _propTypes.default.func,
onSelect: _propTypes.default.func,
placeholder: _propTypes.default.string,
readOnly: _propTypes.default.bool,
tabIndex: _propTypes.default.number,
// @ts-ignore PropTypes and TypeScript type do not well understood each other.
type: _propTypes.default.oneOf(['text']).isRequired,
value: _propTypes.default.string
};
var _default = AccessibleInputText;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl91c2VFbnRlcktleUhpbnQiLCJfZXhjbHVkZWQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIl9leHRlbmRzIiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJhcHBseSIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImV4Y2x1ZGVkIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzb3VyY2VTeW1ib2xLZXlzIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwic291cmNlS2V5cyIsImtleXMiLCJBY2Nlc3NpYmxlSW5wdXRUZXh0IiwiZm9yd2FyZFJlZiIsIl9yZWYiLCJmb3J3YXJkZWRSZWYiLCJhcmlhRXJyb3JNZXNzYWdlIiwiY2xhc3NOYW1lIiwiZGlzYWJsZWQiLCJlbnRlcktleUhpbnQiLCJvbkNoYW5nZSIsIm9uRm9jdXMiLCJvbktleURvd24iLCJvbktleURvd25DYXB0dXJlIiwib25LZXlQcmVzcyIsIm9uU2VsZWN0IiwicGxhY2Vob2xkZXIiLCJyZWFkT25seSIsInRhYkluZGV4IiwidmFsdWUiLCJwcm9wcyIsInRhcmdldFJlZiIsInVzZVJlZiIsInJlZiIsInVzZUVudGVyS2V5SGludCIsImNyZWF0ZUVsZW1lbnQiLCJ1bmRlZmluZWQiLCJ0eXBlIiwiZGVmYXVsdFByb3BzIiwiaW5wdXRNb2RlIiwiZGlzcGxheU5hbWUiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJib29sIiwib25lT2YiLCJmdW5jIiwibnVtYmVyIiwiaXNSZXF1aXJlZCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiY29tcG9uZW50Oi8vLyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1V0aWxzL0FjY2Vzc2libGVJbnB1dFRleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludCBuby1tYWdpYy1udW1iZXJzOiBbXCJlcnJvclwiLCB7IFwiaWdub3JlXCI6IFstMV0gfV0gKi9cblxuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCwge1xuICBDaGFuZ2VFdmVudEhhbmRsZXIsXG4gIEZvY3VzRXZlbnRIYW5kbGVyLFxuICBmb3J3YXJkUmVmLFxuICBLZXlib2FyZEV2ZW50SGFuZGxlcixcbiAgUmVhY3RFdmVudEhhbmRsZXIsXG4gIHVzZVJlZlxufSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB1c2VFbnRlcktleUhpbnQgZnJvbSAnLi4vaG9va3MvaW50ZXJuYWwvdXNlRW50ZXJLZXlIaW50JztcblxuLy8gRGlmZmVyZW5jZXMgYmV0d2VlbiA8aW5wdXQgdHlwZT1cInRleHRcIj4gYW5kIDxBY2Nlc3NpYmxlSW5wdXRUZXh0Pjpcbi8vIC0gRGlzYWJsZSBiZWhhdmlvclxuLy8gICAtIFdoZW4gdGhlIHdpZGdldCBpcyBkaXNhYmxlZFxuLy8gICAgIC0gU2V0IFwiYXJpYS1kaXNhYmxlZFwiIGF0dHJpYnV0ZSB0byBcInRydWVcIlxuLy8gICAgIC0gU2V0IFwicmVhZG9ubHlcIiBhdHRyaWJ1dGVcbi8vICAgICAtIFNldCBcInRhYkluZGV4XCIgdG8gLTFcbi8vICAgICAtIFJlbW92ZSBcIm9uQ2hhbmdlXCIgaGFuZGxlclxuLy8gICAtIFdoeSB0aGlzIGlzIG5lZWRlZFxuLy8gICAgIC0gQnJvd3NlciBjb21wYXRpYmlsaXR5OiB3aGVuIHRoZSB3aWRnZXQgaXMgZGlzYWJsZWQsIGRpZmZlcmVudCBicm93c2VyIHNlbmQgZm9jdXMgdG8gZGlmZmVyZW50IHBsYWNlc1xuLy8gICAgIC0gV2hlbiB0aGUgd2lkZ2V0IGlzIGRpc2FibGVkLCBpdCdzIHJlYXNvbmFibGUgdG8ga2VlcCB0aGUgZm9jdXMgb24gdGhlIHNhbWUgd2lkZ2V0IGZvciBhbiBleHRlbmRlZCBwZXJpb2Qgb2YgdGltZVxuLy8gICAgICAgLSBXaGVuIHRoZSB1c2VyIHByZXNzZXMgVEFCIGFmdGVyIHRoZSBjdXJyZW50IHdpZGdldCBpcyBkaXNhYmxlZCwgaXQgc2hvdWxkIGp1bXAgdG8gdGhlIG5leHQgbm9uLWRpc2FibGVkIHdpZGdldFxuXG4vLyBEZXZlbG9wZXJzIHVzaW5nIHRoaXMgYWNjZXNzaWJsZSB3aWRnZXQgd2lsbCBuZWVkIHRvOlxuLy8gLSBTdHlsZSB0aGUgZGlzYWJsZWQgd2lkZ2V0IHRoZW1zZWx2ZXMsIHVzaW5nIENTUyBxdWVyeSBgOmRpc2FibGVkLCBbYXJpYS1kaXNhYmxlZD1cInRydWVcIl0ge31gXG4vLyAtIE1vZGlmeSBhbGwgdGhlIGNvZGUgdGhhdCBjaGVja3MgZGlzYWJsZWQgdGhyb3VnaCB0aGUgXCJkaXNhYmxlZFwiIGF0dHJpYnV0ZSB0byB1c2UgYXJpYS1kaXNhYmxlZD1cInRydWVcIiBpbnN0ZWFkXG4vLyAgIC0gYXJpYS1kaXNhYmxlZD1cInRydWVcIiBpcyB0aGUgc291cmNlIG9mIHRydXRoXG4vLyAtIElmIHRoZSB3aWRnZXQgaXMgY29udGFpbmVkIGJ5IGEgPGZvcm0+LCB0aGUgZGV2ZWxvcGVyIG5lZWQgdG8gZmlsdGVyIG91dCBzb21lIGBvblN1Ym1pdGAgZXZlbnQgY2F1c2VkIGJ5IHRoaXMgd2lkZ2V0XG5cbnR5cGUgQWNjZXNzaWJsZUlucHV0VGV4dFByb3BzID0ge1xuICAnYXJpYS1lcnJvcm1lc3NhZ2UnPzogc3RyaW5nO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgZW50ZXJLZXlIaW50Pzogc3RyaW5nO1xuICBpbnB1dE1vZGU/OiAndGV4dCcgfCAnbm9uZScgfCAndGVsJyB8ICd1cmwnIHwgJ2VtYWlsJyB8ICdudW1lcmljJyB8ICdkZWNpbWFsJyB8ICdzZWFyY2gnO1xuICBvbkNoYW5nZT86IENoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgb25Gb2N1cz86IEZvY3VzRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICBvbktleURvd24/OiBLZXlib2FyZEV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgb25LZXlEb3duQ2FwdHVyZT86IEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICBvbktleVByZXNzPzogS2V5Ym9hcmRFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD47XG4gIG9uU2VsZWN0PzogUmVhY3RFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD47XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICByZWFkT25seT86IGJvb2xlYW47XG4gIHRhYkluZGV4PzogbnVtYmVyO1xuICB0eXBlOiAndGV4dCc7XG4gIHZhbHVlPzogc3RyaW5nO1xufTtcblxuY29uc3QgQWNjZXNzaWJsZUlucHV0VGV4dCA9IGZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCwgQWNjZXNzaWJsZUlucHV0VGV4dFByb3BzPihcbiAgKFxuICAgIHtcbiAgICAgICdhcmlhLWVycm9ybWVzc2FnZSc6IGFyaWFFcnJvck1lc3NhZ2UsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGVudGVyS2V5SGludCxcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgb25Gb2N1cyxcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIG9uS2V5RG93bkNhcHR1cmUsXG4gICAgICBvbktleVByZXNzLFxuICAgICAgb25TZWxlY3QsXG4gICAgICBwbGFjZWhvbGRlcixcbiAgICAgIHJlYWRPbmx5LFxuICAgICAgdGFiSW5kZXgsXG4gICAgICB2YWx1ZSxcbiAgICAgIC4uLnByb3BzXG4gICAgfSxcbiAgICBmb3J3YXJkZWRSZWZcbiAgKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0UmVmID0gdXNlUmVmKCk7XG5cbiAgICBjb25zdCByZWYgPSBmb3J3YXJkZWRSZWYgfHwgdGFyZ2V0UmVmO1xuXG4gICAgdXNlRW50ZXJLZXlIaW50KHJlZiwgZW50ZXJLZXlIaW50KTtcblxuICAgIHJldHVybiAoXG4gICAgICA8aW5wdXRcbiAgICAgICAgYXJpYS1kaXNhYmxlZD17ZGlzYWJsZWQgfHwgdW5kZWZpbmVkfVxuICAgICAgICBhcmlhLWVycm9ybWVzc2FnZT17YXJpYUVycm9yTWVzc2FnZX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgIG9uQ2hhbmdlPXtkaXNhYmxlZCA/IHVuZGVmaW5lZCA6IG9uQ2hhbmdlfVxuICAgICAgICBvbkZvY3VzPXtkaXNhYmxlZCA/IHVuZGVmaW5lZCA6IG9uRm9jdXN9XG4gICAgICAgIG9uS2V5RG93bj17ZGlzYWJsZWQgPyB1bmRlZmluZWQgOiBvbktleURvd259XG4gICAgICAgIG9uS2V5RG93bkNhcHR1cmU9e2Rpc2FibGVkID8gdW5kZWZpbmVkIDogb25LZXlEb3duQ2FwdHVyZX1cbiAgICAgICAgb25LZXlQcmVzcz17ZGlzYWJsZWQgPyB1bmRlZmluZWQgOiBvbktleVByZXNzfVxuICAgICAgICBvblNlbGVjdD17ZGlzYWJsZWQgPyB1bmRlZmluZWQgOiBvblNlbGVjdH1cbiAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICByZWFkT25seT17cmVhZE9ubHkgfHwgZGlzYWJsZWR9XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICB0YWJJbmRleD17ZGlzYWJsZWQgPyAtMSA6IHRhYkluZGV4fVxuICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgLz5cbiAgICApO1xuICB9XG4pO1xuXG5BY2Nlc3NpYmxlSW5wdXRUZXh0LmRlZmF1bHRQcm9wcyA9IHtcbiAgJ2FyaWEtZXJyb3JtZXNzYWdlJzogdW5kZWZpbmVkLFxuICBjbGFzc05hbWU6IHVuZGVmaW5lZCxcbiAgZGlzYWJsZWQ6IHVuZGVmaW5lZCxcbiAgZW50ZXJLZXlIaW50OiB1bmRlZmluZWQsXG4gIGlucHV0TW9kZTogdW5kZWZpbmVkLFxuICBvbkNoYW5nZTogdW5kZWZpbmVkLFxuICBvbkZvY3VzOiB1bmRlZmluZWQsXG4gIG9uS2V5RG93bjogdW5kZWZpbmVkLFxuICBvbktleURvd25DYXB0dXJlOiB1bmRlZmluZWQsXG4gIG9uS2V5UHJlc3M6IHVuZGVmaW5lZCxcbiAgb25TZWxlY3Q6IHVuZGVmaW5lZCxcbiAgcGxhY2Vob2xkZXI6IHVuZGVmaW5lZCxcbiAgcmVhZE9ubHk6IHVuZGVmaW5lZCxcbiAgdGFiSW5kZXg6IHVuZGVmaW5lZCxcbiAgdmFsdWU6IHVuZGVmaW5lZFxufTtcblxuQWNjZXNzaWJsZUlucHV0VGV4dC5kaXNwbGF5TmFtZSA9ICdBY2Nlc3NpYmxlSW5wdXRUZXh0JztcblxuQWNjZXNzaWJsZUlucHV0VGV4dC5wcm9wVHlwZXMgPSB7XG4gICdhcmlhLWVycm9ybWVzc2FnZSc6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBlbnRlcktleUhpbnQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlucHV0TW9kZTogUHJvcFR5cGVzLm9uZU9mKFsndGV4dCcsICdub25lJywgJ3RlbCcsICd1cmwnLCAnZW1haWwnLCAnbnVtZXJpYycsICdkZWNpbWFsJywgJ3NlYXJjaCddKSxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25LZXlEb3duOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25LZXlEb3duQ2FwdHVyZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uS2V5UHJlc3M6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlbGVjdDogUHJvcFR5cGVzLmZ1bmMsXG4gIHBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICByZWFkT25seTogUHJvcFR5cGVzLmJvb2wsXG4gIHRhYkluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuICAvLyBAdHMtaWdub3JlIFByb3BUeXBlcyBhbmQgVHlwZVNjcmlwdCB0eXBlIGRvIG5vdCB3ZWxsIHVuZGVyc3Rvb2QgZWFjaCBvdGhlci5cbiAgdHlwZTogUHJvcFR5cGVzLm9uZU9mKFsndGV4dCddKS5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQWNjZXNzaWJsZUlucHV0VGV4dDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVBLElBQUFBLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQVNBLElBQUFHLGdCQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFBZ0UsSUFBQUksU0FBQTtBQVpoRTtBQUFBLFNBQUFDLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtBQUFGLFdBQUE7QUFBQSxTQUFBSix3QkFBQVEsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLGFBQUFFLE9BQUEsQ0FBQUYsR0FBQSx5QkFBQUEsR0FBQSw0QkFBQUcsT0FBQSxFQUFBSCxHQUFBLFVBQUFJLEtBQUEsR0FBQVQsd0JBQUEsQ0FBQUMsV0FBQSxPQUFBUSxLQUFBLElBQUFBLEtBQUEsQ0FBQUMsR0FBQSxDQUFBTCxHQUFBLFlBQUFJLEtBQUEsQ0FBQUUsR0FBQSxDQUFBTixHQUFBLFNBQUFPLE1BQUEsV0FBQUMscUJBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsR0FBQSxJQUFBWixHQUFBLFFBQUFZLEdBQUEsa0JBQUFILE1BQUEsQ0FBQUksU0FBQSxDQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWYsR0FBQSxFQUFBWSxHQUFBLFNBQUFJLElBQUEsR0FBQVIscUJBQUEsR0FBQUMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBWCxHQUFBLEVBQUFZLEdBQUEsY0FBQUksSUFBQSxLQUFBQSxJQUFBLENBQUFWLEdBQUEsSUFBQVUsSUFBQSxDQUFBQyxHQUFBLEtBQUFSLE1BQUEsQ0FBQUMsY0FBQSxDQUFBSCxNQUFBLEVBQUFLLEdBQUEsRUFBQUksSUFBQSxZQUFBVCxNQUFBLENBQUFLLEdBQUEsSUFBQVosR0FBQSxDQUFBWSxHQUFBLFNBQUFMLE1BQUEsQ0FBQUosT0FBQSxHQUFBSCxHQUFBLE1BQUFJLEtBQUEsSUFBQUEsS0FBQSxDQUFBYSxHQUFBLENBQUFqQixHQUFBLEVBQUFPLE1BQUEsWUFBQUEsTUFBQTtBQUFBLFNBQUFsQix1QkFBQVcsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFHLE9BQUEsRUFBQUgsR0FBQTtBQUFBLFNBQUFrQixTQUFBLElBQUFBLFFBQUEsR0FBQVQsTUFBQSxDQUFBVSxNQUFBLEdBQUFWLE1BQUEsQ0FBQVUsTUFBQSxDQUFBQyxJQUFBLGVBQUFDLE1BQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxFQUFBRixDQUFBLFVBQUFHLE1BQUEsR0FBQUYsU0FBQSxDQUFBRCxDQUFBLFlBQUFWLEdBQUEsSUFBQWEsTUFBQSxRQUFBaEIsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBVSxNQUFBLEVBQUFiLEdBQUEsS0FBQVMsTUFBQSxDQUFBVCxHQUFBLElBQUFhLE1BQUEsQ0FBQWIsR0FBQSxnQkFBQVMsTUFBQSxZQUFBSCxRQUFBLENBQUFRLEtBQUEsT0FBQUgsU0FBQTtBQUFBLFNBQUFJLHlCQUFBRixNQUFBLEVBQUFHLFFBQUEsUUFBQUgsTUFBQSx5QkFBQUosTUFBQSxHQUFBUSw2QkFBQSxDQUFBSixNQUFBLEVBQUFHLFFBQUEsT0FBQWhCLEdBQUEsRUFBQVUsQ0FBQSxNQUFBYixNQUFBLENBQUFxQixxQkFBQSxRQUFBQyxnQkFBQSxHQUFBdEIsTUFBQSxDQUFBcUIscUJBQUEsQ0FBQUwsTUFBQSxRQUFBSCxDQUFBLE1BQUFBLENBQUEsR0FBQVMsZ0JBQUEsQ0FBQVAsTUFBQSxFQUFBRixDQUFBLE1BQUFWLEdBQUEsR0FBQW1CLGdCQUFBLENBQUFULENBQUEsT0FBQU0sUUFBQSxDQUFBSSxPQUFBLENBQUFwQixHQUFBLHVCQUFBSCxNQUFBLENBQUFJLFNBQUEsQ0FBQW9CLG9CQUFBLENBQUFsQixJQUFBLENBQUFVLE1BQUEsRUFBQWIsR0FBQSxhQUFBUyxNQUFBLENBQUFULEdBQUEsSUFBQWEsTUFBQSxDQUFBYixHQUFBLGNBQUFTLE1BQUE7QUFBQSxTQUFBUSw4QkFBQUosTUFBQSxFQUFBRyxRQUFBLFFBQUFILE1BQUEseUJBQUFKLE1BQUEsV0FBQWEsVUFBQSxHQUFBekIsTUFBQSxDQUFBMEIsSUFBQSxDQUFBVixNQUFBLE9BQUFiLEdBQUEsRUFBQVUsQ0FBQSxPQUFBQSxDQUFBLE1BQUFBLENBQUEsR0FBQVksVUFBQSxDQUFBVixNQUFBLEVBQUFGLENBQUEsTUFBQVYsR0FBQSxHQUFBc0IsVUFBQSxDQUFBWixDQUFBLE9BQUFNLFFBQUEsQ0FBQUksT0FBQSxDQUFBcEIsR0FBQSxrQkFBQVMsTUFBQSxDQUFBVCxHQUFBLElBQUFhLE1BQUEsQ0FBQWIsR0FBQSxZQUFBUyxNQUFBO0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQXFCQSxJQUFNZSxtQkFBbUIsZ0JBQUcsSUFBQUMsaUJBQVUsRUFDcEMsVUFBQUMsSUFBQSxFQWtCRUMsWUFBWSxFQUNUO0VBQUEsSUFqQm9CQyxnQkFBZ0IsR0FBQUYsSUFBQSxDQUFyQyxtQkFBbUI7SUFDbkJHLFNBQVMsR0FBQUgsSUFBQSxDQUFURyxTQUFTO0lBQ1RDLFFBQVEsR0FBQUosSUFBQSxDQUFSSSxRQUFRO0lBQ1JDLFlBQVksR0FBQUwsSUFBQSxDQUFaSyxZQUFZO0lBQ1pDLFFBQVEsR0FBQU4sSUFBQSxDQUFSTSxRQUFRO0lBQ1JDLE9BQU8sR0FBQVAsSUFBQSxDQUFQTyxPQUFPO0lBQ1BDLFNBQVMsR0FBQVIsSUFBQSxDQUFUUSxTQUFTO0lBQ1RDLGdCQUFnQixHQUFBVCxJQUFBLENBQWhCUyxnQkFBZ0I7SUFDaEJDLFVBQVUsR0FBQVYsSUFBQSxDQUFWVSxVQUFVO0lBQ1ZDLFFBQVEsR0FBQVgsSUFBQSxDQUFSVyxRQUFRO0lBQ1JDLFdBQVcsR0FBQVosSUFBQSxDQUFYWSxXQUFXO0lBQ1hDLFFBQVEsR0FBQWIsSUFBQSxDQUFSYSxRQUFRO0lBQ1JDLFFBQVEsR0FBQWQsSUFBQSxDQUFSYyxRQUFRO0lBQ1JDLEtBQUssR0FBQWYsSUFBQSxDQUFMZSxLQUFLO0lBQ0ZDLEtBQUssR0FBQTNCLHdCQUFBLENBQUFXLElBQUEsRUFBQTVDLFNBQUE7RUFJVixJQUFNNkQsU0FBUyxHQUFHLElBQUFDLGFBQU0sRUFBQyxDQUFDO0VBRTFCLElBQU1DLEdBQUcsR0FBR2xCLFlBQVksSUFBSWdCLFNBQVM7RUFFckMsSUFBQUcsd0JBQWUsRUFBQ0QsR0FBRyxFQUFFZCxZQUFZLENBQUM7RUFFbEMsb0JBQ0VwRCxNQUFBLENBQUFZLE9BQUEsQ0FBQXdELGFBQUEsVUFBQXpDLFFBQUE7SUFDRSxpQkFBZXdCLFFBQVEsSUFBSWtCLFNBQVU7SUFDckMscUJBQW1CcEIsZ0JBQWlCO0lBQ3BDQyxTQUFTLEVBQUVBLFNBQVU7SUFDckJHLFFBQVEsRUFBRUYsUUFBUSxHQUFHa0IsU0FBUyxHQUFHaEIsUUFBUztJQUMxQ0MsT0FBTyxFQUFFSCxRQUFRLEdBQUdrQixTQUFTLEdBQUdmLE9BQVE7SUFDeENDLFNBQVMsRUFBRUosUUFBUSxHQUFHa0IsU0FBUyxHQUFHZCxTQUFVO0lBQzVDQyxnQkFBZ0IsRUFBRUwsUUFBUSxHQUFHa0IsU0FBUyxHQUFHYixnQkFBaUI7SUFDMURDLFVBQVUsRUFBRU4sUUFBUSxHQUFHa0IsU0FBUyxHQUFHWixVQUFXO0lBQzlDQyxRQUFRLEVBQUVQLFFBQVEsR0FBR2tCLFNBQVMsR0FBR1gsUUFBUztJQUMxQ0MsV0FBVyxFQUFFQSxXQUFZO0lBQ3pCQyxRQUFRLEVBQUVBLFFBQVEsSUFBSVQsUUFBUztJQUMvQmUsR0FBRyxFQUFFQSxHQUFJO0lBQ1RMLFFBQVEsRUFBRVYsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHVSxRQUFTO0lBQ25DQyxLQUFLLEVBQUVBO0VBQU0sR0FDVEMsS0FBSztJQUNUTyxJQUFJLEVBQUM7RUFBTSxFQUNaLENBQUM7QUFFTixDQUNGLENBQUM7QUFFRHpCLG1CQUFtQixDQUFDMEIsWUFBWSxHQUFHO0VBQ2pDLG1CQUFtQixFQUFFRixTQUFTO0VBQzlCbkIsU0FBUyxFQUFFbUIsU0FBUztFQUNwQmxCLFFBQVEsRUFBRWtCLFNBQVM7RUFDbkJqQixZQUFZLEVBQUVpQixTQUFTO0VBQ3ZCRyxTQUFTLEVBQUVILFNBQVM7RUFDcEJoQixRQUFRLEVBQUVnQixTQUFTO0VBQ25CZixPQUFPLEVBQUVlLFNBQVM7RUFDbEJkLFNBQVMsRUFBRWMsU0FBUztFQUNwQmIsZ0JBQWdCLEVBQUVhLFNBQVM7RUFDM0JaLFVBQVUsRUFBRVksU0FBUztFQUNyQlgsUUFBUSxFQUFFVyxTQUFTO0VBQ25CVixXQUFXLEVBQUVVLFNBQVM7RUFDdEJULFFBQVEsRUFBRVMsU0FBUztFQUNuQlIsUUFBUSxFQUFFUSxTQUFTO0VBQ25CUCxLQUFLLEVBQUVPO0FBQ1QsQ0FBQztBQUVEeEIsbUJBQW1CLENBQUM0QixXQUFXLEdBQUcscUJBQXFCO0FBRXZENUIsbUJBQW1CLENBQUM2QixTQUFTLEdBQUc7RUFDOUIsbUJBQW1CLEVBQUVDLGtCQUFTLENBQUNDLE1BQU07RUFDckMxQixTQUFTLEVBQUV5QixrQkFBUyxDQUFDQyxNQUFNO0VBQzNCekIsUUFBUSxFQUFFd0Isa0JBQVMsQ0FBQ0UsSUFBSTtFQUN4QnpCLFlBQVksRUFBRXVCLGtCQUFTLENBQUNDLE1BQU07RUFDOUJKLFNBQVMsRUFBRUcsa0JBQVMsQ0FBQ0csS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0VBQ25HekIsUUFBUSxFQUFFc0Isa0JBQVMsQ0FBQ0ksSUFBSTtFQUN4QnpCLE9BQU8sRUFBRXFCLGtCQUFTLENBQUNJLElBQUk7RUFDdkJ4QixTQUFTLEVBQUVvQixrQkFBUyxDQUFDSSxJQUFJO0VBQ3pCdkIsZ0JBQWdCLEVBQUVtQixrQkFBUyxDQUFDSSxJQUFJO0VBQ2hDdEIsVUFBVSxFQUFFa0Isa0JBQVMsQ0FBQ0ksSUFBSTtFQUMxQnJCLFFBQVEsRUFBRWlCLGtCQUFTLENBQUNJLElBQUk7RUFDeEJwQixXQUFXLEVBQUVnQixrQkFBUyxDQUFDQyxNQUFNO0VBQzdCaEIsUUFBUSxFQUFFZSxrQkFBUyxDQUFDRSxJQUFJO0VBQ3hCaEIsUUFBUSxFQUFFYyxrQkFBUyxDQUFDSyxNQUFNO0VBQzFCO0VBQ0FWLElBQUksRUFBRUssa0JBQVMsQ0FBQ0csS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQ0csVUFBVTtFQUMxQ25CLEtBQUssRUFBRWEsa0JBQVMsQ0FBQ0M7QUFDbkIsQ0FBQztBQUFDLElBQUFNLFFBQUEsR0FFYXJDLG1CQUFtQjtBQUFBc0MsT0FBQSxDQUFBdkUsT0FBQSxHQUFBc0UsUUFBQSJ9
;