UNPKG

matrix-react-sdk

Version:
108 lines (101 loc) 17.5 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _logger = require("matrix-js-sdk/src/logger"); var _languageHandler = require("../../../languageHandler"); var _AccessibleButton = _interopRequireDefault(require("../elements/AccessibleButton")); var _dispatcher = _interopRequireWildcard(require("../../../dispatcher/dispatcher")); var _actions = require("../../../dispatcher/actions"); var _Call = require("../../../models/Call"); var _useCall = require("../../../hooks/useCall"); var _useEventEmitter = require("../../../hooks/useEventEmitter"); var _OwnBeaconStore = require("../../../stores/OwnBeaconStore"); var _CallDuration = require("../voip/CallDuration"); var _SDKContext = require("../../../contexts/SDKContext"); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } /* Copyright 2024 New Vector Ltd. Copyright 2022 The Matrix.org Foundation C.I.C. SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ const RoomCallBannerInner = ({ roomId, call }) => { const connect = (0, _react.useCallback)(ev => { ev.preventDefault(); _dispatcher.defaultDispatcher.dispatch({ action: _actions.Action.ViewRoom, room_id: roomId, view_call: true, skipLobby: "shiftKey" in ev ? ev.shiftKey : false, metricsTrigger: undefined }); }, [roomId]); // TODO matrix rtc const onClick = (0, _react.useCallback)(() => { _logger.logger.log("clicking on the call banner is not supported anymore - there are no timeline events anymore."); let messageLikeEventId; if (!messageLikeEventId) { // Until we have a timeline event for calls this will always be true. // We will never jump to the non existing timeline event. _logger.logger.error("Couldn't find a group call event to jump to"); return; } _dispatcher.default.dispatch({ action: _actions.Action.ViewRoom, room_id: roomId, metricsTrigger: undefined, event_id: messageLikeEventId, scroll_into_view: true, highlighted: true }); }, [roomId]); return /*#__PURE__*/_react.default.createElement("div", { className: "mx_RoomCallBanner", onClick: onClick }, /*#__PURE__*/_react.default.createElement("div", { className: "mx_RoomCallBanner_text" }, /*#__PURE__*/_react.default.createElement("span", { className: "mx_RoomCallBanner_label" }, (0, _languageHandler._t)("voip|video_call")), /*#__PURE__*/_react.default.createElement(_CallDuration.SessionDuration, { session: call.session })), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { onClick: connect, kind: "primary", element: "button", disabled: false }, (0, _languageHandler._t)("action|join"))); }; const RoomCallBanner = ({ roomId }) => { const call = (0, _useCall.useCall)(roomId); // this section is to check if we have a live location share. If so, we dont show the call banner const isMonitoringLiveLocation = (0, _useEventEmitter.useEventEmitterState)(_OwnBeaconStore.OwnBeaconStore.instance, _OwnBeaconStore.OwnBeaconStoreEvent.MonitoringLivePosition, () => _OwnBeaconStore.OwnBeaconStore.instance.isMonitoringLiveLocation); const liveBeaconIds = (0, _useEventEmitter.useEventEmitterState)(_OwnBeaconStore.OwnBeaconStore.instance, _OwnBeaconStore.OwnBeaconStoreEvent.LivenessChange, () => _OwnBeaconStore.OwnBeaconStore.instance.getLiveBeaconIds(roomId)); if (isMonitoringLiveLocation && liveBeaconIds.length) { return null; } // Check if the call is already showing. No banner is needed in this case. if (_SDKContext.SdkContextClass.instance.roomViewStore.isViewingCall()) { return null; } // Split into outer/inner to avoid watching various parts if there is no call // No banner if the call is connected (or connecting/disconnecting) if (call !== null && call.connectionState === _Call.ConnectionState.Disconnected) { return /*#__PURE__*/_react.default.createElement(RoomCallBannerInner, { call: call, roomId: roomId }); } return null; }; var _default = exports.default = RoomCallBanner; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbG9nZ2VyIiwiX2xhbmd1YWdlSGFuZGxlciIsIl9BY2Nlc3NpYmxlQnV0dG9uIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9kaXNwYXRjaGVyIiwiX2FjdGlvbnMiLCJfQ2FsbCIsIl91c2VDYWxsIiwiX3VzZUV2ZW50RW1pdHRlciIsIl9Pd25CZWFjb25TdG9yZSIsIl9DYWxsRHVyYXRpb24iLCJfU0RLQ29udGV4dCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIlJvb21DYWxsQmFubmVySW5uZXIiLCJyb29tSWQiLCJjb25uZWN0IiwidXNlQ2FsbGJhY2siLCJldiIsInByZXZlbnREZWZhdWx0IiwiZGVmYXVsdERpc3BhdGNoZXIiLCJkaXNwYXRjaCIsImFjdGlvbiIsIkFjdGlvbiIsIlZpZXdSb29tIiwicm9vbV9pZCIsInZpZXdfY2FsbCIsInNraXBMb2JieSIsInNoaWZ0S2V5IiwibWV0cmljc1RyaWdnZXIiLCJ1bmRlZmluZWQiLCJvbkNsaWNrIiwibG9nZ2VyIiwibG9nIiwibWVzc2FnZUxpa2VFdmVudElkIiwiZXJyb3IiLCJkaXNwYXRjaGVyIiwiZXZlbnRfaWQiLCJzY3JvbGxfaW50b192aWV3IiwiaGlnaGxpZ2h0ZWQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiX3QiLCJTZXNzaW9uRHVyYXRpb24iLCJzZXNzaW9uIiwia2luZCIsImVsZW1lbnQiLCJkaXNhYmxlZCIsIlJvb21DYWxsQmFubmVyIiwidXNlQ2FsbCIsImlzTW9uaXRvcmluZ0xpdmVMb2NhdGlvbiIsInVzZUV2ZW50RW1pdHRlclN0YXRlIiwiT3duQmVhY29uU3RvcmUiLCJpbnN0YW5jZSIsIk93bkJlYWNvblN0b3JlRXZlbnQiLCJNb25pdG9yaW5nTGl2ZVBvc2l0aW9uIiwibGl2ZUJlYWNvbklkcyIsIkxpdmVuZXNzQ2hhbmdlIiwiZ2V0TGl2ZUJlYWNvbklkcyIsImxlbmd0aCIsIlNka0NvbnRleHRDbGFzcyIsInJvb21WaWV3U3RvcmUiLCJpc1ZpZXdpbmdDYWxsIiwiY29ubmVjdGlvblN0YXRlIiwiQ29ubmVjdGlvblN0YXRlIiwiRGlzY29ubmVjdGVkIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdmlld3MvYmVhY29uL1Jvb21DYWxsQmFubmVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2sgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFJvb20gfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbWF0cml4XCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbG9nZ2VyXCI7XG5cbmltcG9ydCB7IF90IH0gZnJvbSBcIi4uLy4uLy4uL2xhbmd1YWdlSGFuZGxlclwiO1xuaW1wb3J0IEFjY2Vzc2libGVCdXR0b24sIHsgQnV0dG9uRXZlbnQgfSBmcm9tIFwiLi4vZWxlbWVudHMvQWNjZXNzaWJsZUJ1dHRvblwiO1xuaW1wb3J0IGRpc3BhdGNoZXIsIHsgZGVmYXVsdERpc3BhdGNoZXIgfSBmcm9tIFwiLi4vLi4vLi4vZGlzcGF0Y2hlci9kaXNwYXRjaGVyXCI7XG5pbXBvcnQgeyBWaWV3Um9vbVBheWxvYWQgfSBmcm9tIFwiLi4vLi4vLi4vZGlzcGF0Y2hlci9wYXlsb2Fkcy9WaWV3Um9vbVBheWxvYWRcIjtcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9kaXNwYXRjaGVyL2FjdGlvbnNcIjtcbmltcG9ydCB7IENvbm5lY3Rpb25TdGF0ZSwgRWxlbWVudENhbGwgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL0NhbGxcIjtcbmltcG9ydCB7IHVzZUNhbGwgfSBmcm9tIFwiLi4vLi4vLi4vaG9va3MvdXNlQ2FsbFwiO1xuaW1wb3J0IHsgdXNlRXZlbnRFbWl0dGVyU3RhdGUgfSBmcm9tIFwiLi4vLi4vLi4vaG9va3MvdXNlRXZlbnRFbWl0dGVyXCI7XG5pbXBvcnQgeyBPd25CZWFjb25TdG9yZSwgT3duQmVhY29uU3RvcmVFdmVudCB9IGZyb20gXCIuLi8uLi8uLi9zdG9yZXMvT3duQmVhY29uU3RvcmVcIjtcbmltcG9ydCB7IFNlc3Npb25EdXJhdGlvbiB9IGZyb20gXCIuLi92b2lwL0NhbGxEdXJhdGlvblwiO1xuaW1wb3J0IHsgU2RrQ29udGV4dENsYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2NvbnRleHRzL1NES0NvbnRleHRcIjtcblxuaW50ZXJmYWNlIFJvb21DYWxsQmFubmVyUHJvcHMge1xuICAgIHJvb21JZDogUm9vbVtcInJvb21JZFwiXTtcbiAgICBjYWxsOiBFbGVtZW50Q2FsbDtcbn1cblxuY29uc3QgUm9vbUNhbGxCYW5uZXJJbm5lcjogUmVhY3QuRkM8Um9vbUNhbGxCYW5uZXJQcm9wcz4gPSAoeyByb29tSWQsIGNhbGwgfSkgPT4ge1xuICAgIGNvbnN0IGNvbm5lY3QgPSB1c2VDYWxsYmFjayhcbiAgICAgICAgKGV2OiBCdXR0b25FdmVudCkgPT4ge1xuICAgICAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGRlZmF1bHREaXNwYXRjaGVyLmRpc3BhdGNoPFZpZXdSb29tUGF5bG9hZD4oe1xuICAgICAgICAgICAgICAgIGFjdGlvbjogQWN0aW9uLlZpZXdSb29tLFxuICAgICAgICAgICAgICAgIHJvb21faWQ6IHJvb21JZCxcbiAgICAgICAgICAgICAgICB2aWV3X2NhbGw6IHRydWUsXG4gICAgICAgICAgICAgICAgc2tpcExvYmJ5OiBcInNoaWZ0S2V5XCIgaW4gZXYgPyBldi5zaGlmdEtleSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIG1ldHJpY3NUcmlnZ2VyOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgW3Jvb21JZF0sXG4gICAgKTtcblxuICAgIC8vIFRPRE8gbWF0cml4IHJ0Y1xuICAgIGNvbnN0IG9uQ2xpY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGxvZ2dlci5sb2coXCJjbGlja2luZyBvbiB0aGUgY2FsbCBiYW5uZXIgaXMgbm90IHN1cHBvcnRlZCBhbnltb3JlIC0gdGhlcmUgYXJlIG5vIHRpbWVsaW5lIGV2ZW50cyBhbnltb3JlLlwiKTtcbiAgICAgICAgbGV0IG1lc3NhZ2VMaWtlRXZlbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAoIW1lc3NhZ2VMaWtlRXZlbnRJZCkge1xuICAgICAgICAgICAgLy8gVW50aWwgd2UgaGF2ZSBhIHRpbWVsaW5lIGV2ZW50IGZvciBjYWxscyB0aGlzIHdpbGwgYWx3YXlzIGJlIHRydWUuXG4gICAgICAgICAgICAvLyBXZSB3aWxsIG5ldmVyIGp1bXAgdG8gdGhlIG5vbiBleGlzdGluZyB0aW1lbGluZSBldmVudC5cbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcihcIkNvdWxkbid0IGZpbmQgYSBncm91cCBjYWxsIGV2ZW50IHRvIGp1bXAgdG9cIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBkaXNwYXRjaGVyLmRpc3BhdGNoPFZpZXdSb29tUGF5bG9hZD4oe1xuICAgICAgICAgICAgYWN0aW9uOiBBY3Rpb24uVmlld1Jvb20sXG4gICAgICAgICAgICByb29tX2lkOiByb29tSWQsXG4gICAgICAgICAgICBtZXRyaWNzVHJpZ2dlcjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZXZlbnRfaWQ6IG1lc3NhZ2VMaWtlRXZlbnRJZCxcbiAgICAgICAgICAgIHNjcm9sbF9pbnRvX3ZpZXc6IHRydWUsXG4gICAgICAgICAgICBoaWdobGlnaHRlZDogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgfSwgW3Jvb21JZF0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9Sb29tQ2FsbEJhbm5lclwiIG9uQ2xpY2s9e29uQ2xpY2t9PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9Sb29tQ2FsbEJhbm5lcl90ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXhfUm9vbUNhbGxCYW5uZXJfbGFiZWxcIj57X3QoXCJ2b2lwfHZpZGVvX2NhbGxcIil9PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxTZXNzaW9uRHVyYXRpb24gc2Vzc2lvbj17Y2FsbC5zZXNzaW9ufSAvPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxBY2Nlc3NpYmxlQnV0dG9uIG9uQ2xpY2s9e2Nvbm5lY3R9IGtpbmQ9XCJwcmltYXJ5XCIgZWxlbWVudD1cImJ1dHRvblwiIGRpc2FibGVkPXtmYWxzZX0+XG4gICAgICAgICAgICAgICAge190KFwiYWN0aW9ufGpvaW5cIil9XG4gICAgICAgICAgICA8L0FjY2Vzc2libGVCdXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59O1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICAgIHJvb21JZDogUm9vbVtcInJvb21JZFwiXTtcbn1cblxuY29uc3QgUm9vbUNhbGxCYW5uZXI6IFJlYWN0LkZDPFByb3BzPiA9ICh7IHJvb21JZCB9KSA9PiB7XG4gICAgY29uc3QgY2FsbCA9IHVzZUNhbGwocm9vbUlkKTtcblxuICAgIC8vIHRoaXMgc2VjdGlvbiBpcyB0byBjaGVjayBpZiB3ZSBoYXZlIGEgbGl2ZSBsb2NhdGlvbiBzaGFyZS4gSWYgc28sIHdlIGRvbnQgc2hvdyB0aGUgY2FsbCBiYW5uZXJcbiAgICBjb25zdCBpc01vbml0b3JpbmdMaXZlTG9jYXRpb24gPSB1c2VFdmVudEVtaXR0ZXJTdGF0ZShcbiAgICAgICAgT3duQmVhY29uU3RvcmUuaW5zdGFuY2UsXG4gICAgICAgIE93bkJlYWNvblN0b3JlRXZlbnQuTW9uaXRvcmluZ0xpdmVQb3NpdGlvbixcbiAgICAgICAgKCkgPT4gT3duQmVhY29uU3RvcmUuaW5zdGFuY2UuaXNNb25pdG9yaW5nTGl2ZUxvY2F0aW9uLFxuICAgICk7XG5cbiAgICBjb25zdCBsaXZlQmVhY29uSWRzID0gdXNlRXZlbnRFbWl0dGVyU3RhdGUoT3duQmVhY29uU3RvcmUuaW5zdGFuY2UsIE93bkJlYWNvblN0b3JlRXZlbnQuTGl2ZW5lc3NDaGFuZ2UsICgpID0+XG4gICAgICAgIE93bkJlYWNvblN0b3JlLmluc3RhbmNlLmdldExpdmVCZWFjb25JZHMocm9vbUlkKSxcbiAgICApO1xuXG4gICAgaWYgKGlzTW9uaXRvcmluZ0xpdmVMb2NhdGlvbiAmJiBsaXZlQmVhY29uSWRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgY2FsbCBpcyBhbHJlYWR5IHNob3dpbmcuIE5vIGJhbm5lciBpcyBuZWVkZWQgaW4gdGhpcyBjYXNlLlxuICAgIGlmIChTZGtDb250ZXh0Q2xhc3MuaW5zdGFuY2Uucm9vbVZpZXdTdG9yZS5pc1ZpZXdpbmdDYWxsKCkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gU3BsaXQgaW50byBvdXRlci9pbm5lciB0byBhdm9pZCB3YXRjaGluZyB2YXJpb3VzIHBhcnRzIGlmIHRoZXJlIGlzIG5vIGNhbGxcbiAgICAvLyBObyBiYW5uZXIgaWYgdGhlIGNhbGwgaXMgY29ubmVjdGVkIChvciBjb25uZWN0aW5nL2Rpc2Nvbm5lY3RpbmcpXG4gICAgaWYgKGNhbGwgIT09IG51bGwgJiYgY2FsbC5jb25uZWN0aW9uU3RhdGUgPT09IENvbm5lY3Rpb25TdGF0ZS5EaXNjb25uZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIDxSb29tQ2FsbEJhbm5lcklubmVyIGNhbGw9e2NhbGwgYXMgRWxlbWVudENhbGx9IHJvb21JZD17cm9vbUlkfSAvPjtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJvb21DYWxsQmFubmVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBUUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsZ0JBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFOLHVCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBTSxRQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxLQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxRQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxnQkFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsZUFBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsYUFBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksV0FBQSxHQUFBWixPQUFBO0FBQStELFNBQUFhLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFmLHdCQUFBZSxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FB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QUFBLENBQUFxQixPQUFBLENBQUF3QyxhQUFBLENBQUNoRCxhQUFBLENBQUFtRCxlQUFlO0lBQUNDLE9BQU8sRUFBRWpDLElBQUksQ0FBQ2lDO0VBQVEsQ0FBRSxDQUN4QyxDQUFDLGVBRU5qRSxNQUFBLENBQUFxQixPQUFBLENBQUF3QyxhQUFBLENBQUN4RCxpQkFBQSxDQUFBZ0IsT0FBZ0I7SUFBQytCLE9BQU8sRUFBRWYsT0FBUTtJQUFDNkIsSUFBSSxFQUFDLFNBQVM7SUFBQ0MsT0FBTyxFQUFDLFFBQVE7SUFBQ0MsUUFBUSxFQUFFO0VBQU0sR0FDL0UsSUFBQUwsbUJBQUUsRUFBQyxhQUFhLENBQ0gsQ0FDakIsQ0FBQztBQUVkLENBQUM7QUFNRCxNQUFNTSxjQUErQixHQUFHQSxDQUFDO0VBQUVqQztBQUFPLENBQUMsS0FBSztFQUNwRCxNQUFNSixJQUFJLEdBQUcsSUFBQXNDLGdCQUFPLEVBQUNsQyxNQUFNLENBQUM7O0VBRTVCO0VBQ0EsTUFBTW1DLHdCQUF3QixHQUFHLElBQUFDLHFDQUFvQixFQUNqREMsOEJBQWMsQ0FBQ0MsUUFBUSxFQUN2QkMsbUNBQW1CLENBQUNDLHNCQUFzQixFQUMxQyxNQUFNSCw4QkFBYyxDQUFDQyxRQUFRLENBQUNILHdCQUNsQyxDQUFDO0VBRUQsTUFBTU0sYUFBYSxHQUFHLElBQUFMLHFDQUFvQixFQUFDQyw4QkFBYyxDQUFDQyxRQUFRLEVBQUVDLG1DQUFtQixDQUFDRyxjQUFjLEVBQUUsTUFDcEdMLDhCQUFjLENBQUNDLFFBQVEsQ0FBQ0ssZ0JBQWdCLENBQUMzQyxNQUFNLENBQ25ELENBQUM7RUFFRCxJQUFJbUMsd0JBQXdCLElBQUlNLGFBQWEsQ0FBQ0csTUFBTSxFQUFFO0lBQ2xELE9BQU8sSUFBSTtFQUNmOztFQUVBO0VBQ0EsSUFBSUMsMkJBQWUsQ0FBQ1AsUUFBUSxDQUFDUSxhQUFhLENBQUNDLGFBQWEsQ0FBQyxDQUFDLEVBQUU7SUFDeEQsT0FBTyxJQUFJO0VBQ2Y7O0VBRUE7RUFDQTtFQUNBLElBQUluRCxJQUFJLEtBQUssSUFBSSxJQUFJQSxJQUFJLENBQUNvRCxlQUFlLEtBQUtDLHFCQUFlLENBQUNDLFlBQVksRUFBRTtJQUN4RSxvQkFBT3RGLE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQXdDLGFBQUEsQ0FBQzFCLG1CQUFtQjtNQUFDSCxJQUFJLEVBQUVBLElBQW9CO01BQUNJLE1BQU0sRUFBRUE7SUFBTyxDQUFFLENBQUM7RUFDN0U7RUFFQSxPQUFPLElBQUk7QUFDZixDQUFDO0FBQUMsSUFBQW1ELFFBQUEsR0FBQUMsT0FBQSxDQUFBbkUsT0FBQSxHQUVhZ0QsY0FBYyIsImlnbm9yZUxpc3QiOltdfQ==