botframework-webchat-component
Version:
React component of botframework-webchat
103 lines (101 loc) • 30.9 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 _react = _interopRequireWildcard(require("react"));
var _Context = _interopRequireDefault(require("./private/Context"));
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 ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
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 _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread 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 _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
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; }
var EMPTY_ARRAY = Object.freeze([]);
var ThemeProvider = function ThemeProvider(_ref) {
var children = _ref.children,
activityMiddleware = _ref.activityMiddleware,
activityStatusMiddleware = _ref.activityStatusMiddleware,
attachmentForScreenReaderMiddleware = _ref.attachmentForScreenReaderMiddleware,
attachmentMiddleware = _ref.attachmentMiddleware,
avatarMiddleware = _ref.avatarMiddleware,
cardActionMiddleware = _ref.cardActionMiddleware,
groupActivitiesMiddleware = _ref.groupActivitiesMiddleware,
scrollToEndButtonMiddleware = _ref.scrollToEndButtonMiddleware,
sendBoxMiddleware = _ref.sendBoxMiddleware,
sendBoxToolbarMiddleware = _ref.sendBoxToolbarMiddleware,
styleOptions = _ref.styleOptions,
toastMiddleware = _ref.toastMiddleware,
typingIndicatorMiddleware = _ref.typingIndicatorMiddleware;
var existingContext = (0, _react.useContext)(_Context.default);
// TODO: [P1] We should reduce boilerplate code.
var mergedActivityMiddleware = (0, _react.useMemo)(function () {
return Object.freeze([].concat(_toConsumableArray(activityMiddleware || []), _toConsumableArray(existingContext.activityMiddleware)));
}, [activityMiddleware, existingContext.activityMiddleware]);
var mergedActivityStatusMiddleware = (0, _react.useMemo)(function () {
return Object.freeze([].concat(_toConsumableArray(activityStatusMiddleware || EMPTY_ARRAY), _toConsumableArray(existingContext.activityStatusMiddleware)));
}, [activityStatusMiddleware, existingContext.activityStatusMiddleware]);
var mergedAttachmentForScreenReaderMiddleware = (0, _react.useMemo)(function () {
return Object.freeze([].concat(_toConsumableArray(attachmentForScreenReaderMiddleware || EMPTY_ARRAY), _toConsumableArray(existingContext.attachmentForScreenReaderMiddleware)));
}, [attachmentForScreenReaderMiddleware, existingContext.attachmentForScreenReaderMiddleware]);
var mergedAttachmentMiddleware = (0, _react.useMemo)(function () {
return Object.freeze([].concat(_toConsumableArray(attachmentMiddleware || EMPTY_ARRAY), _toConsumableArray(existingContext.attachmentMiddleware)));
}, [attachmentMiddleware, existingContext.attachmentMiddleware]);
var mergedAvatarMiddleware = (0, _react.useMemo)(function () {
return Object.freeze([].concat(_toConsumableArray(avatarMiddleware || EMPTY_ARRAY), _toConsumableArray(existingContext.avatarMiddleware)));
}, [avatarMiddleware, existingContext.avatarMiddleware]);
var mergedCardActionMiddleware = (0, _react.useMemo)(function () {
return Object.freeze([].concat(_toConsumableArray(cardActionMiddleware || EMPTY_ARRAY), _toConsumableArray(existingContext.cardActionMiddleware)));
}, [cardActionMiddleware, existingContext.cardActionMiddleware]);
var mergedGroupActivitiesMiddleware = (0, _react.useMemo)(function () {
return Object.freeze([].concat(_toConsumableArray(groupActivitiesMiddleware || EMPTY_ARRAY), _toConsumableArray(existingContext.groupActivitiesMiddleware)));
}, [groupActivitiesMiddleware, existingContext.groupActivitiesMiddleware]);
var mergedScrollToEndButtonMiddleware = (0, _react.useMemo)(function () {
return Object.freeze([].concat(_toConsumableArray(scrollToEndButtonMiddleware || EMPTY_ARRAY), _toConsumableArray(existingContext.scrollToEndButtonMiddleware)));
}, [scrollToEndButtonMiddleware, existingContext.scrollToEndButtonMiddleware]);
var mergedSendBoxMiddleware = (0, _react.useMemo)(function () {
return Object.freeze([].concat(_toConsumableArray(sendBoxMiddleware || EMPTY_ARRAY), _toConsumableArray(existingContext.sendBoxMiddleware)));
}, [sendBoxMiddleware, existingContext.sendBoxMiddleware]);
var mergedSendBoxToolbarMiddleware = (0, _react.useMemo)(function () {
return Object.freeze([].concat(_toConsumableArray(sendBoxToolbarMiddleware || EMPTY_ARRAY), _toConsumableArray(existingContext.sendBoxToolbarMiddleware)));
}, [sendBoxToolbarMiddleware, existingContext.sendBoxToolbarMiddleware]);
var mergedStyleOptions = (0, _react.useMemo)(function () {
return Object.freeze(_objectSpread(_objectSpread({}, styleOptions), existingContext.styleOptions));
}, [styleOptions, existingContext.styleOptions]);
var mergedToastMiddleware = (0, _react.useMemo)(function () {
return Object.freeze([].concat(_toConsumableArray(toastMiddleware || EMPTY_ARRAY), _toConsumableArray(existingContext.toastMiddleware)));
}, [toastMiddleware, existingContext.toastMiddleware]);
var mergedTypingIndicatorMiddleware = (0, _react.useMemo)(function () {
return Object.freeze([].concat(_toConsumableArray(typingIndicatorMiddleware || EMPTY_ARRAY), _toConsumableArray(existingContext.typingIndicatorMiddleware)));
}, [typingIndicatorMiddleware, existingContext.typingIndicatorMiddleware]);
var context = (0, _react.useMemo)(function () {
return {
activityMiddleware: mergedActivityMiddleware,
activityStatusMiddleware: mergedActivityStatusMiddleware,
attachmentForScreenReaderMiddleware: mergedAttachmentForScreenReaderMiddleware,
attachmentMiddleware: mergedAttachmentMiddleware,
avatarMiddleware: mergedAvatarMiddleware,
cardActionMiddleware: mergedCardActionMiddleware,
groupActivitiesMiddleware: mergedGroupActivitiesMiddleware,
scrollToEndButtonMiddleware: mergedScrollToEndButtonMiddleware,
sendBoxMiddleware: mergedSendBoxMiddleware,
sendBoxToolbarMiddleware: mergedSendBoxToolbarMiddleware,
styleOptions: mergedStyleOptions,
toastMiddleware: mergedToastMiddleware,
typingIndicatorMiddleware: mergedTypingIndicatorMiddleware
};
}, [mergedActivityMiddleware, mergedActivityStatusMiddleware, mergedAttachmentForScreenReaderMiddleware, mergedAttachmentMiddleware, mergedAvatarMiddleware, mergedCardActionMiddleware, mergedGroupActivitiesMiddleware, mergedScrollToEndButtonMiddleware, mergedSendBoxMiddleware, mergedSendBoxToolbarMiddleware, mergedStyleOptions, mergedToastMiddleware, mergedTypingIndicatorMiddleware]);
return /*#__PURE__*/_react.default.createElement(_Context.default.Provider, {
value: context
}, children);
};
var _default = /*#__PURE__*/(0, _react.memo)(ThemeProvider);
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfQ29udGV4dCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIl90eXBlb2YiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIm93bktleXMiLCJvYmplY3QiLCJlbnVtZXJhYmxlT25seSIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzeW1ib2xzIiwiZmlsdGVyIiwic3ltIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b0NvbnN1bWFibGVBcnJheSIsImFyciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJUeXBlRXJyb3IiLCJvIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJpdGVyIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJpc0FycmF5IiwibGVuIiwiYXJyMiIsIkVNUFRZX0FSUkFZIiwiZnJlZXplIiwiVGhlbWVQcm92aWRlciIsIl9yZWYiLCJjaGlsZHJlbiIsImFjdGl2aXR5TWlkZGxld2FyZSIsImFjdGl2aXR5U3RhdHVzTWlkZGxld2FyZSIsImF0dGFjaG1lbnRGb3JTY3JlZW5SZWFkZXJNaWRkbGV3YXJlIiwiYXR0YWNobWVudE1pZGRsZXdhcmUiLCJhdmF0YXJNaWRkbGV3YXJlIiwiY2FyZEFjdGlvbk1pZGRsZXdhcmUiLCJncm91cEFjdGl2aXRpZXNNaWRkbGV3YXJlIiwic2Nyb2xsVG9FbmRCdXR0b25NaWRkbGV3YXJlIiwic2VuZEJveE1pZGRsZXdhcmUiLCJzZW5kQm94VG9vbGJhck1pZGRsZXdhcmUiLCJzdHlsZU9wdGlvbnMiLCJ0b2FzdE1pZGRsZXdhcmUiLCJ0eXBpbmdJbmRpY2F0b3JNaWRkbGV3YXJlIiwiZXhpc3RpbmdDb250ZXh0IiwidXNlQ29udGV4dCIsIkNvbnRleHQiLCJtZXJnZWRBY3Rpdml0eU1pZGRsZXdhcmUiLCJ1c2VNZW1vIiwiY29uY2F0IiwibWVyZ2VkQWN0aXZpdHlTdGF0dXNNaWRkbGV3YXJlIiwibWVyZ2VkQXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmUiLCJtZXJnZWRBdHRhY2htZW50TWlkZGxld2FyZSIsIm1lcmdlZEF2YXRhck1pZGRsZXdhcmUiLCJtZXJnZWRDYXJkQWN0aW9uTWlkZGxld2FyZSIsIm1lcmdlZEdyb3VwQWN0aXZpdGllc01pZGRsZXdhcmUiLCJtZXJnZWRTY3JvbGxUb0VuZEJ1dHRvbk1pZGRsZXdhcmUiLCJtZXJnZWRTZW5kQm94TWlkZGxld2FyZSIsIm1lcmdlZFNlbmRCb3hUb29sYmFyTWlkZGxld2FyZSIsIm1lcmdlZFN0eWxlT3B0aW9ucyIsIm1lcmdlZFRvYXN0TWlkZGxld2FyZSIsIm1lcmdlZFR5cGluZ0luZGljYXRvck1pZGRsZXdhcmUiLCJjb250ZXh0IiwiY3JlYXRlRWxlbWVudCIsIlByb3ZpZGVyIiwiX2RlZmF1bHQiLCJtZW1vIiwiZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiY29tcG9uZW50Oi8vLyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy9UaGVtZS9UaGVtZVByb3ZpZGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgbWVtbywgdXNlQ29udGV4dCwgdXNlTWVtbywgdHlwZSBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBDb250ZXh0LCB7IHR5cGUgQ29udGV4dFR5cGUgfSBmcm9tICcuL3ByaXZhdGUvQ29udGV4dCc7XG5cbnR5cGUgUHJvcHMgPSBSZWFkb25seTx7IGNoaWxkcmVuPzogUmVhY3ROb2RlIHwgdW5kZWZpbmVkIH0gJiBQYXJ0aWFsPENvbnRleHRUeXBlPj47XG5cbmNvbnN0IEVNUFRZX0FSUkFZID0gT2JqZWN0LmZyZWV6ZShbXSBhcyBjb25zdCk7XG5cbmNvbnN0IFRoZW1lUHJvdmlkZXIgPSAoe1xuICBjaGlsZHJlbixcbiAgYWN0aXZpdHlNaWRkbGV3YXJlLFxuICBhY3Rpdml0eVN0YXR1c01pZGRsZXdhcmUsXG4gIGF0dGFjaG1lbnRGb3JTY3JlZW5SZWFkZXJNaWRkbGV3YXJlLFxuICBhdHRhY2htZW50TWlkZGxld2FyZSxcbiAgYXZhdGFyTWlkZGxld2FyZSxcbiAgY2FyZEFjdGlvbk1pZGRsZXdhcmUsXG4gIGdyb3VwQWN0aXZpdGllc01pZGRsZXdhcmUsXG4gIHNjcm9sbFRvRW5kQnV0dG9uTWlkZGxld2FyZSxcbiAgc2VuZEJveE1pZGRsZXdhcmUsXG4gIHNlbmRCb3hUb29sYmFyTWlkZGxld2FyZSxcbiAgc3R5bGVPcHRpb25zLFxuICB0b2FzdE1pZGRsZXdhcmUsXG4gIHR5cGluZ0luZGljYXRvck1pZGRsZXdhcmVcbn06IFByb3BzKSA9PiB7XG4gIGNvbnN0IGV4aXN0aW5nQ29udGV4dCA9IHVzZUNvbnRleHQoQ29udGV4dCk7XG5cbiAgLy8gVE9ETzogW1AxXSBXZSBzaG91bGQgcmVkdWNlIGJvaWxlcnBsYXRlIGNvZGUuXG4gIGNvbnN0IG1lcmdlZEFjdGl2aXR5TWlkZGxld2FyZSA9IHVzZU1lbW88Q29udGV4dFR5cGVbJ2FjdGl2aXR5TWlkZGxld2FyZSddPihcbiAgICAoKSA9PiBPYmplY3QuZnJlZXplKFsuLi4oYWN0aXZpdHlNaWRkbGV3YXJlIHx8IFtdKSwgLi4uZXhpc3RpbmdDb250ZXh0LmFjdGl2aXR5TWlkZGxld2FyZV0pLFxuICAgIFthY3Rpdml0eU1pZGRsZXdhcmUsIGV4aXN0aW5nQ29udGV4dC5hY3Rpdml0eU1pZGRsZXdhcmVdXG4gICk7XG5cbiAgY29uc3QgbWVyZ2VkQWN0aXZpdHlTdGF0dXNNaWRkbGV3YXJlID0gdXNlTWVtbzxDb250ZXh0VHlwZVsnYWN0aXZpdHlTdGF0dXNNaWRkbGV3YXJlJ10+KFxuICAgICgpID0+IE9iamVjdC5mcmVlemUoWy4uLihhY3Rpdml0eVN0YXR1c01pZGRsZXdhcmUgfHwgRU1QVFlfQVJSQVkpLCAuLi5leGlzdGluZ0NvbnRleHQuYWN0aXZpdHlTdGF0dXNNaWRkbGV3YXJlXSksXG4gICAgW2FjdGl2aXR5U3RhdHVzTWlkZGxld2FyZSwgZXhpc3RpbmdDb250ZXh0LmFjdGl2aXR5U3RhdHVzTWlkZGxld2FyZV1cbiAgKTtcblxuICBjb25zdCBtZXJnZWRBdHRhY2htZW50Rm9yU2NyZWVuUmVhZGVyTWlkZGxld2FyZSA9IHVzZU1lbW88Q29udGV4dFR5cGVbJ2F0dGFjaG1lbnRGb3JTY3JlZW5SZWFkZXJNaWRkbGV3YXJlJ10+KFxuICAgICgpID0+XG4gICAgICBPYmplY3QuZnJlZXplKFtcbiAgICAgICAgLi4uKGF0dGFjaG1lbnRGb3JTY3JlZW5SZWFkZXJNaWRkbGV3YXJlIHx8IEVNUFRZX0FSUkFZKSxcbiAgICAgICAgLi4uZXhpc3RpbmdDb250ZXh0LmF0dGFjaG1lbnRGb3JTY3JlZW5SZWFkZXJNaWRkbGV3YXJlXG4gICAgICBdKSxcbiAgICBbYXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmUsIGV4aXN0aW5nQ29udGV4dC5hdHRhY2htZW50Rm9yU2NyZWVuUmVhZGVyTWlkZGxld2FyZV1cbiAgKTtcblxuICBjb25zdCBtZXJnZWRBdHRhY2htZW50TWlkZGxld2FyZSA9IHVzZU1lbW88Q29udGV4dFR5cGVbJ2F0dGFjaG1lbnRNaWRkbGV3YXJlJ10+KFxuICAgICgpID0+IE9iamVjdC5mcmVlemUoWy4uLihhdHRhY2htZW50TWlkZGxld2FyZSB8fCBFTVBUWV9BUlJBWSksIC4uLmV4aXN0aW5nQ29udGV4dC5hdHRhY2htZW50TWlkZGxld2FyZV0pLFxuICAgIFthdHRhY2htZW50TWlkZGxld2FyZSwgZXhpc3RpbmdDb250ZXh0LmF0dGFjaG1lbnRNaWRkbGV3YXJlXVxuICApO1xuXG4gIGNvbnN0IG1lcmdlZEF2YXRhck1pZGRsZXdhcmUgPSB1c2VNZW1vPENvbnRleHRUeXBlWydhdmF0YXJNaWRkbGV3YXJlJ10+KFxuICAgICgpID0+IE9iamVjdC5mcmVlemUoWy4uLihhdmF0YXJNaWRkbGV3YXJlIHx8IEVNUFRZX0FSUkFZKSwgLi4uZXhpc3RpbmdDb250ZXh0LmF2YXRhck1pZGRsZXdhcmVdKSxcbiAgICBbYXZhdGFyTWlkZGxld2FyZSwgZXhpc3RpbmdDb250ZXh0LmF2YXRhck1pZGRsZXdhcmVdXG4gICk7XG5cbiAgY29uc3QgbWVyZ2VkQ2FyZEFjdGlvbk1pZGRsZXdhcmUgPSB1c2VNZW1vPENvbnRleHRUeXBlWydjYXJkQWN0aW9uTWlkZGxld2FyZSddPihcbiAgICAoKSA9PiBPYmplY3QuZnJlZXplKFsuLi4oY2FyZEFjdGlvbk1pZGRsZXdhcmUgfHwgRU1QVFlfQVJSQVkpLCAuLi5leGlzdGluZ0NvbnRleHQuY2FyZEFjdGlvbk1pZGRsZXdhcmVdKSxcbiAgICBbY2FyZEFjdGlvbk1pZGRsZXdhcmUsIGV4aXN0aW5nQ29udGV4dC5jYXJkQWN0aW9uTWlkZGxld2FyZV1cbiAgKTtcblxuICBjb25zdCBtZXJnZWRHcm91cEFjdGl2aXRpZXNNaWRkbGV3YXJlID0gdXNlTWVtbzxDb250ZXh0VHlwZVsnZ3JvdXBBY3Rpdml0aWVzTWlkZGxld2FyZSddPihcbiAgICAoKSA9PiBPYmplY3QuZnJlZXplKFsuLi4oZ3JvdXBBY3Rpdml0aWVzTWlkZGxld2FyZSB8fCBFTVBUWV9BUlJBWSksIC4uLmV4aXN0aW5nQ29udGV4dC5ncm91cEFjdGl2aXRpZXNNaWRkbGV3YXJlXSksXG4gICAgW2dyb3VwQWN0aXZpdGllc01pZGRsZXdhcmUsIGV4aXN0aW5nQ29udGV4dC5ncm91cEFjdGl2aXRpZXNNaWRkbGV3YXJlXVxuICApO1xuXG4gIGNvbnN0IG1lcmdlZFNjcm9sbFRvRW5kQnV0dG9uTWlkZGxld2FyZSA9IHVzZU1lbW88Q29udGV4dFR5cGVbJ3Njcm9sbFRvRW5kQnV0dG9uTWlkZGxld2FyZSddPihcbiAgICAoKSA9PlxuICAgICAgT2JqZWN0LmZyZWV6ZShbLi4uKHNjcm9sbFRvRW5kQnV0dG9uTWlkZGxld2FyZSB8fCBFTVBUWV9BUlJBWSksIC4uLmV4aXN0aW5nQ29udGV4dC5zY3JvbGxUb0VuZEJ1dHRvbk1pZGRsZXdhcmVdKSxcbiAgICBbc2Nyb2xsVG9FbmRCdXR0b25NaWRkbGV3YXJlLCBleGlzdGluZ0NvbnRleHQuc2Nyb2xsVG9FbmRCdXR0b25NaWRkbGV3YXJlXVxuICApO1xuXG4gIGNvbnN0IG1lcmdlZFNlbmRCb3hNaWRkbGV3YXJlID0gdXNlTWVtbzxDb250ZXh0VHlwZVsnc2VuZEJveE1pZGRsZXdhcmUnXT4oXG4gICAgKCkgPT4gT2JqZWN0LmZyZWV6ZShbLi4uKHNlbmRCb3hNaWRkbGV3YXJlIHx8IEVNUFRZX0FSUkFZKSwgLi4uZXhpc3RpbmdDb250ZXh0LnNlbmRCb3hNaWRkbGV3YXJlXSksXG4gICAgW3NlbmRCb3hNaWRkbGV3YXJlLCBleGlzdGluZ0NvbnRleHQuc2VuZEJveE1pZGRsZXdhcmVdXG4gICk7XG5cbiAgY29uc3QgbWVyZ2VkU2VuZEJveFRvb2xiYXJNaWRkbGV3YXJlID0gdXNlTWVtbzxDb250ZXh0VHlwZVsnc2VuZEJveFRvb2xiYXJNaWRkbGV3YXJlJ10+KFxuICAgICgpID0+IE9iamVjdC5mcmVlemUoWy4uLihzZW5kQm94VG9vbGJhck1pZGRsZXdhcmUgfHwgRU1QVFlfQVJSQVkpLCAuLi5leGlzdGluZ0NvbnRleHQuc2VuZEJveFRvb2xiYXJNaWRkbGV3YXJlXSksXG4gICAgW3NlbmRCb3hUb29sYmFyTWlkZGxld2FyZSwgZXhpc3RpbmdDb250ZXh0LnNlbmRCb3hUb29sYmFyTWlkZGxld2FyZV1cbiAgKTtcblxuICBjb25zdCBtZXJnZWRTdHlsZU9wdGlvbnMgPSB1c2VNZW1vPENvbnRleHRUeXBlWydzdHlsZU9wdGlvbnMnXT4oXG4gICAgKCkgPT4gT2JqZWN0LmZyZWV6ZSh7IC4uLnN0eWxlT3B0aW9ucywgLi4uZXhpc3RpbmdDb250ZXh0LnN0eWxlT3B0aW9ucyB9KSxcbiAgICBbc3R5bGVPcHRpb25zLCBleGlzdGluZ0NvbnRleHQuc3R5bGVPcHRpb25zXVxuICApO1xuXG4gIGNvbnN0IG1lcmdlZFRvYXN0TWlkZGxld2FyZSA9IHVzZU1lbW88Q29udGV4dFR5cGVbJ3RvYXN0TWlkZGxld2FyZSddPihcbiAgICAoKSA9PiBPYmplY3QuZnJlZXplKFsuLi4odG9hc3RNaWRkbGV3YXJlIHx8IEVNUFRZX0FSUkFZKSwgLi4uZXhpc3RpbmdDb250ZXh0LnRvYXN0TWlkZGxld2FyZV0pLFxuICAgIFt0b2FzdE1pZGRsZXdhcmUsIGV4aXN0aW5nQ29udGV4dC50b2FzdE1pZGRsZXdhcmVdXG4gICk7XG5cbiAgY29uc3QgbWVyZ2VkVHlwaW5nSW5kaWNhdG9yTWlkZGxld2FyZSA9IHVzZU1lbW88Q29udGV4dFR5cGVbJ3R5cGluZ0luZGljYXRvck1pZGRsZXdhcmUnXT4oXG4gICAgKCkgPT4gT2JqZWN0LmZyZWV6ZShbLi4uKHR5cGluZ0luZGljYXRvck1pZGRsZXdhcmUgfHwgRU1QVFlfQVJSQVkpLCAuLi5leGlzdGluZ0NvbnRleHQudHlwaW5nSW5kaWNhdG9yTWlkZGxld2FyZV0pLFxuICAgIFt0eXBpbmdJbmRpY2F0b3JNaWRkbGV3YXJlLCBleGlzdGluZ0NvbnRleHQudHlwaW5nSW5kaWNhdG9yTWlkZGxld2FyZV1cbiAgKTtcblxuICBjb25zdCBjb250ZXh0ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgYWN0aXZpdHlNaWRkbGV3YXJlOiBtZXJnZWRBY3Rpdml0eU1pZGRsZXdhcmUsXG4gICAgICBhY3Rpdml0eVN0YXR1c01pZGRsZXdhcmU6IG1lcmdlZEFjdGl2aXR5U3RhdHVzTWlkZGxld2FyZSxcbiAgICAgIGF0dGFjaG1lbnRGb3JTY3JlZW5SZWFkZXJNaWRkbGV3YXJlOiBtZXJnZWRBdHRhY2htZW50Rm9yU2NyZWVuUmVhZGVyTWlkZGxld2FyZSxcbiAgICAgIGF0dGFjaG1lbnRNaWRkbGV3YXJlOiBtZXJnZWRBdHRhY2htZW50TWlkZGxld2FyZSxcbiAgICAgIGF2YXRhck1pZGRsZXdhcmU6IG1lcmdlZEF2YXRhck1pZGRsZXdhcmUsXG4gICAgICBjYXJkQWN0aW9uTWlkZGxld2FyZTogbWVyZ2VkQ2FyZEFjdGlvbk1pZGRsZXdhcmUsXG4gICAgICBncm91cEFjdGl2aXRpZXNNaWRkbGV3YXJlOiBtZXJnZWRHcm91cEFjdGl2aXRpZXNNaWRkbGV3YXJlLFxuICAgICAgc2Nyb2xsVG9FbmRCdXR0b25NaWRkbGV3YXJlOiBtZXJnZWRTY3JvbGxUb0VuZEJ1dHRvbk1pZGRsZXdhcmUsXG4gICAgICBzZW5kQm94TWlkZGxld2FyZTogbWVyZ2VkU2VuZEJveE1pZGRsZXdhcmUsXG4gICAgICBzZW5kQm94VG9vbGJhck1pZGRsZXdhcmU6IG1lcmdlZFNlbmRCb3hUb29sYmFyTWlkZGxld2FyZSxcbiAgICAgIHN0eWxlT3B0aW9uczogbWVyZ2VkU3R5bGVPcHRpb25zLFxuICAgICAgdG9hc3RNaWRkbGV3YXJlOiBtZXJnZWRUb2FzdE1pZGRsZXdhcmUsXG4gICAgICB0eXBpbmdJbmRpY2F0b3JNaWRkbGV3YXJlOiBtZXJnZWRUeXBpbmdJbmRpY2F0b3JNaWRkbGV3YXJlXG4gICAgfSksXG4gICAgW1xuICAgICAgbWVyZ2VkQWN0aXZpdHlNaWRkbGV3YXJlLFxuICAgICAgbWVyZ2VkQWN0aXZpdHlTdGF0dXNNaWRkbGV3YXJlLFxuICAgICAgbWVyZ2VkQXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmUsXG4gICAgICBtZXJnZWRBdHRhY2htZW50TWlkZGxld2FyZSxcbiAgICAgIG1lcmdlZEF2YXRhck1pZGRsZXdhcmUsXG4gICAgICBtZXJnZWRDYXJkQWN0aW9uTWlkZGxld2FyZSxcbiAgICAgIG1lcmdlZEdyb3VwQWN0aXZpdGllc01pZGRsZXdhcmUsXG4gICAgICBtZXJnZWRTY3JvbGxUb0VuZEJ1dHRvbk1pZGRsZXdhcmUsXG4gICAgICBtZXJnZWRTZW5kQm94TWlkZGxld2FyZSxcbiAgICAgIG1lcmdlZFNlbmRCb3hUb29sYmFyTWlkZGxld2FyZSxcbiAgICAgIG1lcmdlZFN0eWxlT3B0aW9ucyxcbiAgICAgIG1lcmdlZFRvYXN0TWlkZGxld2FyZSxcbiAgICAgIG1lcmdlZFR5cGluZ0luZGljYXRvck1pZGRsZXdhcmVcbiAgICBdXG4gICk7XG5cbiAgcmV0dXJuIDxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb250ZXh0fT57Y2hpbGRyZW59PC9Db250ZXh0LlByb3ZpZGVyPjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oVGhlbWVQcm92aWRlcik7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxRQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFBOEQsU0FBQUUsdUJBQUFDLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFBQSxTQUFBRyx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFD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
;